diff --git a/.browserslistrc b/.browserslistrc
deleted file mode 100644
index 427441dc..00000000
--- a/.browserslistrc
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
-# For additional information regarding the format and rule options, please see:
-# https://github.com/browserslist/browserslist#queries
-
-# For the full list of supported browsers by the Angular framework, please see:
-# https://angular.io/guide/browser-support
-
-# You can see what browsers were selected by your queries by running:
-# npx browserslist
-
-last 1 Chrome version
-last 1 Firefox version
-last 2 Edge major versions
-last 2 Safari major versions
-last 2 iOS major versions
-Firefox ESR
-not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.
diff --git a/.eslintrc.json b/.eslintrc.json
index ccf67cb3..3158a87f 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,10 +1,7 @@
{
"root": true,
"ignorePatterns": [
- "projects/**/*",
- "rtl.js",
- "/backend/**/*.js",
- "/src/prebuild.js"
+ "src/**/*.js"
],
"overrides": [
{
@@ -13,11 +10,12 @@
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
- "ecmaVersion": 2020,
+ "ecmaVersion": 2022,
"sourceType": "module",
"project": "./tsconfig.json",
"createDefaultProgram": true
},
+ "env": { "es2022": true },
"plugins": ["deprecation"],
"extends": [
"plugin:@angular-eslint/all",
@@ -48,7 +46,7 @@
"curly": "error",
"no-unused-expressions": "error",
"strict": "error",
- "max-len": ["error", { "code": 450 }],
+ "max-len": ["error", { "code": 320 }],
"no-multiple-empty-lines": "error",
"no-trailing-spaces": "error",
"quote-props": ["error", "as-needed"],
@@ -186,22 +184,30 @@
"files": [
"*.html"
],
+ "parser": "@angular-eslint/template-parser",
"extends": [
"plugin:@angular-eslint/template/all",
- "plugin:@angular-eslint/template/recommended"
+ "plugin:@angular-eslint/template/recommended",
+ "plugin:@angular-eslint/template/process-inline-templates"
],
"rules": {
+ "@angular-eslint/arrow-body-style": "off",
+ "@angular-eslint/component-selector": ["error", { "prefix": "rtl", "style": "kebab-case", "type": "element" }],
+ "@angular-eslint/directive-selector": ["error", { "style": "camelCase", "type": "attribute" }],
"@angular-eslint/template/accessibility-elements-content": "off",
+ "@angular-eslint/template/accessibility-interactive-supports-focus": "off",
+ "@angular-eslint/template/button-has-type": "off",
"@angular-eslint/template/click-events-have-key-events": "off",
"@angular-eslint/template/conditional-complexity": "off",
"@angular-eslint/template/cyclomatic-complexity": "off",
"@angular-eslint/template/i18n": "off",
"@angular-eslint/template/no-autofocus": "off",
"@angular-eslint/template/no-call-expression": "off",
+ "@angular-eslint/template/no-inline-styles": "off",
+ "@angular-eslint/template/no-interpolation-in-attributes": "off",
"@angular-eslint/template/no-positive-tabindex": "off",
"@angular-eslint/template/use-track-by-function": "off"
}
}
]
}
-// https://eslint.org/docs/rules/
\ No newline at end of file
diff --git a/.github/README.md b/.github/README.md
index 0a1da236..4c4d530b 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -35,6 +35,7 @@ RTL is available on the below platforms/services:
* [BCubium](https://bgeometrics.com)
* [Start9Labs](https://start9labs.com)
* [Umbrel](https://github.com/getumbrel/umbrel)
+* [Sovran Systems](https://sovransystems.com)
Docker Image: https://hub.docker.com/r/shahanafarooqui/rtl
@@ -64,6 +65,10 @@ $ git clean -f -d
$ git pull
$ npm install --omit=dev
```
+
+#### Error on npm install
+If there is an error with `upstream dependency conflict` message then replace `npm install --omit=dev` with `npm install --omit=dev --legacy-peer-deps`.
+
### Prep for Execution
RTL requires its own config file `RTL-Config.json`, to start the server and provide user authentication on the app.
@@ -79,6 +84,7 @@ Example RTL-Config.json:
"multiPass": "password",
"port": "3000",
"defaultNodeIndex": 1,
+ "dbDirectoryPath": "",
"SSO": {
"rtlSSO": 0,
"rtlCookiePath": "",
@@ -104,9 +110,10 @@ Example RTL-Config.json:
"bitcoindConfigPath": "",
"logLevel": "INFO",
"fiatConversion": false,
+ "unannouncedChannels": false,
"lnServerUrl": "",
- "swapServerUrl": "",
- "boltzServerUrl": ""
+ "swapServerUrl": "",
+ "boltzServerUrl": ""
}
}
]
diff --git a/.github/docs/Application_configurations.md b/.github/docs/Application_configurations.md
index 753305bd..2402bdc0 100644
--- a/.github/docs/Application_configurations.md
+++ b/.github/docs/Application_configurations.md
@@ -9,16 +9,17 @@ parameters have `default` values for initial setup and can be updated after RTL
"port": "",
"host": "",
"defaultNodeIndex": ,
+ "dbDirectoryPath": "",
"SSO": {
- "rtlSSO": ,
+ "rtlSSO": ,
"rtlCookiePath": "",
"logoutRedirectLink": ""
},
"nodes": [
{
"index": ,
- "lnNode": "",
- "lnImplementation": "",
+ "lnNode": "",
+ "lnImplementation": "",
"Authentication": {
"macaroonPath": "",
"swapMacaroonPath": "",
@@ -27,17 +28,18 @@ parameters have `default` values for initial setup and can be updated after RTL
"lnApiPassword": ""
},
"Settings": {
- "userPersona": "",
- "themeMode": "",
- "themeColor": "",
+ "userPersona": "",
+ "themeMode": "",
+ "themeColor": "",
"channelBackupPath": "\backup\node-1, Optional>",
"bitcoindConfigPath": "",
"logLevel": ,
- "fiatConversion": ,
- "currencyUnit": "",
- "lnServerUrl": "",
- "boltzServerUrl": ""
+ "fiatConversion": ,
+ "currencyUnit": "",
+ "unannouncedChannels":
+ "lnServerUrl": "
+ "swapServerUrl": "",
+ "boltzServerUrl": ""
}
}
]
@@ -48,13 +50,14 @@ parameters have `default` values for initial setup and can be updated after RTL
The environment variable can also be used for all of the above configurations except the UI settings.
If the environment variables are set, it will take precedence over the parameters in the RTL-Config.json file.
-PORT (port number for the rtl node server, default 3000, Required)
+PORT (port number for the rtl node server, default 3000, Optional)
HOST (host for the rtl node server, default localhost, Optional)
+DB_DIRECTORY_PATH (Path for the folder where rtl database file should be saved, default RTL root directory, Optional)
APP_PASSWORD (Plaintext password to be provided by the parent container, NOT suggested for standalone RTL applications, to be used by Umbrel) (Optional)
-LN_IMPLEMENTATION (LND/CLN/ECL. Default 'LND', Required)
-LN_SERVER_URL (LN server URL for LNP REST APIs, default https://localhost:8080) (Required)
-SWAP_SERVER_URL (Swap server URL for REST APIs, default http://localhost:8081) (Optional)
-BOLTZ_SERVER_URL (Boltz server URL for REST APIs, default http://localhost:9003) (Optional)
+LN_IMPLEMENTATION (LND/CLN/ECL. Default 'LND', Optional)
+LN_SERVER_URL (LN server URL for LNP REST APIs, default https://127.0.0.1:8080) (Optional)
+SWAP_SERVER_URL (Swap server URL for REST APIs, default http://127.0.0.1:8081) (Optional)
+BOLTZ_SERVER_URL (Boltz server URL for REST APIs, default http://127.0.0.1:9003) (Optional)
CONFIG_PATH (Full path of the LNP .conf file including the file name) (Optional for LND & CLN, Mandatory for ECL if LN_API_PASSWORD is undefined)
MACAROON_PATH (Path for the folder containing 'admin.macaroon' (LND)/'access.macaroon' (CLN) file, Required for LND & CLN)
SWAP_MACAROON_PATH (Path for the folder containing Loop's 'loop.macaroon', optional)
diff --git a/.github/docs/Contributing.md b/.github/docs/Contributing.md
index 8082d76e..5f973050 100644
--- a/.github/docs/Contributing.md
+++ b/.github/docs/Contributing.md
@@ -44,6 +44,7 @@ Contributions via code is the most sought after contribution and something we en
##### Install Dependencies
* Assuming that nodejs (v14 & above) and npm are already installed on your local machine. Go into your RTL root folder and run `npm install`.
+* Use `npm install --legacy-peer-deps` if there is any dependency conflict.
* Sometimes after installation, user receives a message from npm to fix dependency vulnerability by running `npm audit fix`. Please do not follow this step as it can break some of the working RTL code on your machine. We audit and fix these vulnerabilities as soon as possible at our end.
##### Node Backend Server for Development
diff --git a/.github/docs/Core_lightning_setup.md b/.github/docs/Core_lightning_setup.md
index 98120d34..7313842d 100644
--- a/.github/docs/Core_lightning_setup.md
+++ b/.github/docs/Core_lightning_setup.md
@@ -43,6 +43,10 @@ $ git clean -f -d
$ git pull
$ npm install --omit=dev
```
+
+#### Error on npm install
+If there is an error with `upstream dependency conflict` message then replace `npm install --omit=dev` with `npm install --omit=dev --legacy-peer-deps`.
+
### Prep for Execution
RTL requires its own config file `RTL-Config.json`, to start the server and provide user authentication on the app.
* Rename the file `Sample-RTL-Config.json` to `RTL-Config.json` located at`./RTL`..
@@ -61,6 +65,7 @@ Ensure that the follow values are correct per your config:
"multiPass": ,
"port": "3000",
"defaultNodeIndex": 1,
+ "dbDirectoryPath": "",
"SSO": {
"rtlSSO": 0,
"rtlCookiePath": "",
@@ -82,6 +87,7 @@ Ensure that the follow values are correct per your config:
"bitcoindConfigPath": "",
"logLevel": "INFO",
"fiatConversion": false,
+ "unannouncedChannels": false,
"lnServerUrl": "https://:3001"
}
}
diff --git a/.github/docs/Eclair_setup.md b/.github/docs/Eclair_setup.md
index 7109359d..a1208436 100644
--- a/.github/docs/Eclair_setup.md
+++ b/.github/docs/Eclair_setup.md
@@ -38,6 +38,10 @@ $ git clean -f -d
$ git pull
$ npm install --omit=dev
```
+
+#### Error on npm install
+If there is an error with `upstream dependency conflict` message then replace `npm install --omit=dev` with `npm install --omit=dev --legacy-peer-deps`.
+
### Prep for Execution
RTL requires its own config file `RTL-Config.json`, to start the server and provide user authentication on the app.
* Rename the file `Sample-RTL-Config.json` to `RTL-Config.json` located at`./RTL`..
@@ -56,6 +60,7 @@ Ensure that the follow values are correct per your config:
"multiPass": ,
"port": "3000",
"defaultNodeIndex": 1,
+ "dbDirectoryPath": "",
"SSO": {
"rtlSSO": 0,
"rtlCookiePath": "",
@@ -77,6 +82,7 @@ Ensure that the follow values are correct per your config:
"bitcoindConfigPath": "",
"logLevel": "INFO",
"fiatConversion": false,
+ "unannouncedChannels": false,
"lnServerUrl": "http://:port"
}
}
diff --git a/.github/docs/Multi_node_setup.md b/.github/docs/Multi_node_setup.md
index 5b8cf574..63f7ca89 100644
--- a/.github/docs/Multi_node_setup.md
+++ b/.github/docs/Multi_node_setup.md
@@ -20,16 +20,17 @@ This step is only required to configure the nodes, which will be remotely connec
2. Set `multiPass` to the preferred password. This password will be used to authenticate the user for RTL. Once authenticated, the user will be able to access all the nodes configured in the json file
3. Set the `port` to the preferred port number over which to run RTL
4. Set the `defaultNodeIndex` to configure the default start up node at server restart
-5. `SSO` section can be used for single-sign-on from applications like BTCPayserver. If using RTL as a stand-alone app to connect with the nodes, keep the `rtlSSO=0` and ignore the rest of `SSO` section.
-6. `nodes` section is a json array, with each element of the array representing the specific parameters for the LND node to connect with. `index` must be a number and start with 1. This number must be unique for each node in the array. For each element, two items need to be configured for each node on the network (`macaroonPath` and `lnServerUrl`).
-7. `macaroonPath` should be set to the local path of the folder containing `admin.macaroon` file for each node. Each node must have a different folder for the `admin.macaroon` on the RTL server.
-8. `swapMacaroonPath` should be set to the local path of the folder containing `loop.macaroon` file for loop.
-9. `boltzMacaroonPath` should be set to the local path of the folder containing `admin.macaroon` file for boltz swaps.
-10. `lnServerUrl` must be set to the service url for LND/Core Lightining REST APIs for each node, with the unique ip address of the node hosting LND/Core Lightning e.g. https://192.168.0.1:8080 OR https://192.168.0.1:3001. In this case the ip address of the node hosting LND/Core Lightning is '192.168.0.1'
-11. `swapServerUrl` must be set to the swap service url. e.g. https://localhost:8081.
-12. `boltzServerUrl` must be set to the boltz service url. e.g. https://localhost:9003.
-13. `configPath` and `bitcoindConfigPath` are optional parameters which can be set only if the RTL is running locally on the same node. Else it can be set to "" or removed from the conf file all together.
-14. `lnApiPassword` is mandatory in the ln implementation is ECL and configPath is missing. It is used to provide password for API authentication. It will be ignored in other ln implementations.
+5. `dbDirectoryPath` should be set to the folder where RTL's database will be saved.
+6. `SSO` section can be used for single-sign-on from applications like BTCPayserver. If using RTL as a stand-alone app to connect with the nodes, keep the `rtlSSO=0` and ignore the rest of `SSO` section.
+7. `nodes` section is a json array, with each element of the array representing the specific parameters for the LND node to connect with. `index` must be a number and start with 1. This number must be unique for each node in the array. For each element, two items need to be configured for each node on the network (`macaroonPath` and `lnServerUrl`).
+8. `macaroonPath` should be set to the local path of the folder containing `admin.macaroon` file for each node. Each node must have a different folder for the `admin.macaroon` on the RTL server.
+9. `swapMacaroonPath` should be set to the local path of the folder containing `loop.macaroon` file for loop.
+10. `boltzMacaroonPath` should be set to the local path of the folder containing `admin.macaroon` file for boltz swaps.
+11. `lnServerUrl` must be set to the service url for LND/Core Lightining REST APIs for each node, with the unique ip address of the node hosting LND/Core Lightning e.g. https://192.168.0.1:8080 OR https://192.168.0.1:3001. In this case the ip address of the node hosting LND/Core Lightning is '192.168.0.1'
+12. `swapServerUrl` must be set to the swap service url. e.g. https://127.0.0.1:8081.
+13. `boltzServerUrl` must be set to the boltz service url. e.g. https://127.0.0.1:9003.
+14. `configPath` and `bitcoindConfigPath` are optional parameters which can be set only if the RTL is running locally on the same node. Else it can be set to "" or removed from the conf file all together.
+15. `lnApiPassword` is mandatory in the ln implementation is ECL and configPath is missing. It is used to provide password for API authentication. It will be ignored in other ln implementations.
#### 3. Restart RTL
diff --git a/.github/docs/RTL_SSL_setup.md b/.github/docs/RTL_SSL_setup.md
index 893c7365..eac428e2 100644
--- a/.github/docs/RTL_SSL_setup.md
+++ b/.github/docs/RTL_SSL_setup.md
@@ -3,20 +3,21 @@
Forward the ports 80 and 3002 on the router to the device running RTL.
Allow the ports through the firewall of the device.
-Install Nginx:
-https://www.nginx.com/resources/wiki/start/topics/tutorials/install/
-On Debian based distros:
- $> sudo apt install nginx
-
-nginx default config file is at /etc/nginx/nginx.conf. You will need it.
-
Install, if needed, openssl
On Debian based distros:
$> sudo apt install openssl
Create a self certificate with openssl
$> openssl req -newkey rsa:4096 -x509 -sha512 -days 365 -nodes -out /path/to/some/folder/rtl-cert.crt -keyout /path/to/some/folder/rtl-cert.key
+
+#### Nginx
+Install Nginx:
+https://www.nginx.com/resources/wiki/start/topics/tutorials/install/
+On Debian based distros:
+ $> sudo apt install nginx
+
+nginx default config file is at /etc/nginx/nginx.conf. You will need it.
Sample configuration to be inserted in the nginx.conf (adjust the path and filename of your certificate and key):
@@ -41,3 +42,41 @@ Sample configuration to be inserted in the nginx.conf (adjust the path and filen
Restart Nginx with the new configuration and connect to RTL over https on the port 3002.
On Debian based distros:
$> sudo systemctl restart nginx
+
+#### Apache2
+
+Skip to step 5 if you already have Apache2 set up with HTTPS configured.
+
+1. Install [Apache2](https://httpd.apache.org/download.cgi)
+ - On Debian-based distros: `sudo apt install apache2`
+ - On Fedora-based distros: `sudo yum install httpd`
+2. Install [Let's Encrypt](https://letsencrypt.org) to get a free TLS certificate. The easiest way to install is to use Snap: `sudo snap install certbot`.
+3. Run `certbot` to get a Let's Encrypt certificate: `sudo certbot`. Follow the instructions given to validate your domain name and install the certificate only. You may choose to redirect HTTP traffic to HTTPS instead (which attempts to secure every connection even when the client device does not request it). Let's Encrypt does not issue certificates for IP addresses. if you don't have a domain name, but you can use a service like NoIP.
+4. Locate the Let's Encrypt Apache2 configuration file. It's usually in `/etc/apache2/sites-enabled` and called "000-default-le-ssl.conf" or similar.
+5. Add the following lines to the Apache2 configuration file between the VIrtualHost 443 tags. This will redirect Apache's document root on your webserver to instead point to RTL. Change "/" to something like "/rtl" if you would instead like to redirect "/rtl" to RTL and do something else at the document root. Change "3002" to whatever port number you are using if it is not 3002.
+
+ ProxyPass "/" "http://127.0.0.1:3002/rtl"
+ ProxyPassReverse "/" "http://127.0.0.1:3002/rtl"
+
+6. Restart Apache2.
+ - Debian-based distros: `sudo systemctl restart apache2`
+ - Fedora-based distros: `sudo systemctl restart httpd`
+7. (Option) Edit ~/.rtl/rtl.js to disable insercure HTTP access to RTL entirely. Find these lines:
+
+ if (common.host) {
+ server.listen(common.port, common.host);
+ } else {
+ server.listen(common.port);
+ }
+
+...and change them to:
+
+ if (common.host) {
+ server.listen(common.port, "127.0.0.1");
+ } else {
+ server.listen(common.port, "127.0.0.1");
+ }
+
+This disables normal HTTP access to your server except if the client is on the same machine as the server. This will allow you to access http://localhost:3002 (or whatever port number you are using) on a browser that is on the same machine as RTL, but otherwise, you will have to access RTL through the Apache2 reverse proxy at https://yourdomain.tld/rtl, which will secure the connection with HTTPS.
+
+Note: Occasionally you will receive "Invalid CSRF token, form tempered" when attempting to log in to RTL. If that happens, refresh the page and try again.
diff --git a/.github/docs/RTL_setups.md b/.github/docs/RTL_setups.md
index 03a22971..fe3de1a1 100644
--- a/.github/docs/RTL_setups.md
+++ b/.github/docs/RTL_setups.md
@@ -15,6 +15,7 @@ If your running RTL and LND on different devices on your local LAN, certain conf
"multiPass": "",
"port": "3000",
"defaultNodeIndex": 1,
+ "dbDirectoryPath": "",
"SSO": {
"rtlSSO": 0,
"rtlCookiePath": "",
@@ -39,6 +40,7 @@ If your running RTL and LND on different devices on your local LAN, certain conf
"bitcoindConfigPath": "",
"logLevel": "INFO",
"fiatConversion": false,
+ "unannouncedChannels": false,
"lnServerUrl": ":8080; e.g. https://192.168.0.1:8080>",
"swapServerUrl": ":8081>",
"boltzServerUrl": ":9003>"
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
index f0aaa1fd..a4ec72b0 100644
--- a/.github/workflows/checks.yml
+++ b/.github/workflows/checks.yml
@@ -33,7 +33,7 @@ jobs:
- name: Install NPM dependencies
if: steps.cache-npm-packages.outputs.cache-hit != 'true'
- run: npm ci
+ run: npm ci --legacy-peer-deps
lint:
name: Lint
@@ -57,7 +57,7 @@ jobs:
- name: Install NPM dependencies
if: steps.cache-npm-packages.outputs.cache-hit != 'true'
- run: npm ci
+ run: npm ci --legacy-peer-deps
- name: Lint Scripts
run: npm run lint
@@ -89,7 +89,7 @@ jobs:
- name: Install NPM dependencies
if: steps.cache-npm-packages.outputs.cache-hit != 'true'
- run: npm ci
+ run: npm ci --legacy-peer-deps
- name: Run tests
run: npm run test
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4eb1de8e..f9727e15 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -34,7 +34,7 @@ jobs:
- name: Install NPM dependencies
if: steps.cache-npm-packages.outputs.cache-hit != 'true'
- run: npm ci
+ run: npm ci --legacy-peer-deps
- name: Cache build frontend
uses: actions/cache@v2
diff --git a/Sample-RTL-Config.json b/Sample-RTL-Config.json
index a633d7b7..e2315653 100644
--- a/Sample-RTL-Config.json
+++ b/Sample-RTL-Config.json
@@ -2,6 +2,7 @@
"multiPass": "password",
"port": "3000",
"defaultNodeIndex": 1,
+ "dbDirectoryPath": "C:\\Users\\xyz\\RTL",
"SSO": {
"rtlSSO": 0,
"rtlCookiePath": "",
@@ -24,10 +25,11 @@
"themeColor": "PURPLE",
"channelBackupPath": "C:\\Users\\xyz\\backup\\node-1",
"logLevel": "ERROR",
- "lnServerUrl": "https://localhost:8080",
- "swapServerUrl": "https://localhost:8081",
- "boltzServerUrl": "https://localhost:9003",
- "fiatConversion": false
+ "lnServerUrl": "https://127.0.0.1:8080",
+ "swapServerUrl": "https://127.0.0.1:8081",
+ "boltzServerUrl": "https://127.0.0.1:9003",
+ "fiatConversion": false,
+ "unannouncedChannels": false
}
}
]
diff --git a/angular.json b/angular.json
index 5321f22f..bda05009 100644
--- a/angular.json
+++ b/angular.json
@@ -8,9 +8,6 @@
"schematics": {
"@schematics/angular:component": {
"style": "scss"
- },
- "@schematics/angular:application": {
- "strict": true
}
},
"root": "",
@@ -24,70 +21,69 @@
"outputPath": "frontend",
"index": "src/index.html",
"main": "src/main.ts",
- "polyfills": "src/polyfills.ts",
- "tsConfig": "src/tsconfig.app.json",
- "allowedCommonJsDependencies": [
- "sha256",
- "qrcode",
- "otplib",
- "pdfmake/build/pdfmake",
- "pdfmake/build/vfs_fonts",
- "clone-deep"
+ "polyfills": [
+ "zone.js",
+ "src/polyfills.ts"
],
+ "tsConfig": "src/tsconfig.app.json",
+ "inlineStyleLanguage": "scss",
"assets": [
"src/assets"
],
"styles": [
- "src/app/shared/theme/styles/styles.scss"
+ "src/app/shared/theme/styles/styles.scss",
+ "node_modules/material-icons/iconfont/material-icons.css",
+ "node_modules/roboto-fontface/css/roboto/roboto-fontface.css"
],
"scripts": [],
- "vendorChunk": true,
- "extractLicenses": false,
- "buildOptimizer": false,
- "sourceMap": true,
- "optimization": false,
- "namedChunks": true
+ "allowedCommonJsDependencies": [
+ "buffer",
+ "rfdc",
+ "sha256",
+ "qrcode",
+ "otplib",
+ "pdfmake/build/pdfmake",
+ "pdfmake/build/vfs_fonts"
+ ]
},
"configurations": {
"production": {
- "fileReplacements": [
- {
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.prod.ts"
- }
- ],
- "optimization": true,
- "outputHashing": "all",
- "sourceMap": false,
- "namedChunks": false,
- "extractLicenses": true,
- "vendorChunk": false,
- "buildOptimizer": true,
"budgets": [
{
"type": "initial",
- "maximumWarning": "12mb",
- "maximumError": "12mb"
+ "maximumWarning": "20mb",
+ "maximumError": "50mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "20mb",
"maximumError": "50mb"
}
- ]
+ ],
+ "outputHashing": "all"
+ },
+ "development": {
+ "buildOptimizer": false,
+ "optimization": false,
+ "vendorChunk": true,
+ "extractLicenses": false,
+ "sourceMap": true,
+ "namedChunks": true
}
- }
+ },
+ "defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
- "options": {
- "browserTarget": "RTLApp:build"
- },
"configurations": {
"production": {
"browserTarget": "RTLApp:build:production"
+ },
+ "development": {
+ "browserTarget": "RTLApp:build:development"
}
- }
+ },
+ "defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
@@ -98,15 +94,20 @@
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
- "main": "src/test.ts",
- "polyfills": "src/polyfills.ts",
+ "polyfills": [
+ "zone.js",
+ "zone.js/testing",
+ "src/polyfills.ts"
+ ],
"tsConfig": "src/tsconfig.spec.json",
- "karmaConfig": "src/karma.conf.cjs",
+ "inlineStyleLanguage": "scss",
"assets": [
"src/assets"
],
"styles": [
- "src/app/shared/theme/styles/styles.scss"
+ "src/app/shared/theme/styles/styles.scss",
+ "node_modules/material-icons/iconfont/material-icons.css",
+ "node_modules/roboto-fontface/css/roboto/roboto-fontface.css"
],
"scripts": []
}
@@ -119,12 +120,11 @@
"src/**/*.html"
]
}
- }
+ }
}
}
},
- "defaultProject": "RTLApp",
"cli": {
- "defaultCollection": "@angular-eslint/schematics"
+ "analytics": false
}
}
diff --git a/backend/controllers/cln/channels.js b/backend/controllers/cln/channels.js
index 087fcbde..d48e4d33 100644
--- a/backend/controllers/cln/channels.js
+++ b/backend/controllers/cln/channels.js
@@ -4,21 +4,48 @@ import { Common } from '../../utils/common.js';
let options = null;
const logger = Logger;
const common = Common;
+export const listPeerChannels = (req, res, next) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Getting Peer Channels..' });
+ options = common.getOptions(req);
+ if (options.error) {
+ return res.status(options.statusCode).json({ message: options.message, error: options.error });
+ }
+ options.url = req.session.selectedNode.ln_server_url + '/v1/channel/listPeerChannels';
+ request(options).then((body) => {
+ body?.map((channel) => {
+ if (!channel.alias || channel.alias === '') {
+ channel.alias = channel.peer_id.substring(0, 20);
+ }
+ const local = channel.to_us_msat || 0;
+ const remote = (channel.total_msat - local) || 0;
+ const total = channel.total_msat || 0;
+ channel.to_them_msat = remote;
+ channel.balancedness = (total === 0) ? 1 : (1 - Math.abs((local - remote) / total)).toFixed(3);
+ return channel;
+ });
+ logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Peer Channels List Received', data: body });
+ res.status(200).json(body);
+ }).catch((errRes) => {
+ const err = common.handleError(errRes, 'Channels', 'List Peer Channels Error', req.session.selectedNode);
+ return res.status(err.statusCode).json({ message: err.message, error: err.error });
+ });
+};
export const listChannels = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Getting Channels..' });
options = common.getOptions(req);
if (options.error) {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
- options.url = req.session.selectedNode.ln_server_url + '/v1/channel/listChannels';
+ options.url = req.session.selectedNode.ln_server_url + '/v1/channel/listPeerChannels';
request(options).then((body) => {
- body === null || body === void 0 ? void 0 : body.map((channel) => {
+ body?.map((channel) => {
if (!channel.alias || channel.alias === '') {
- channel.alias = channel.id.substring(0, 20);
+ channel.alias = channel.channel_id.substring(0, 20);
}
- const local = (channel.msatoshi_to_us) ? channel.msatoshi_to_us : 0;
- const remote = (channel.msatoshi_to_them) ? channel.msatoshi_to_them : 0;
- const total = channel.msatoshi_total ? channel.msatoshi_total : 0;
+ const local = channel.to_us_msat || 0;
+ const remote = (channel.total_msat - local) || 0;
+ const total = channel.total_msat || 0;
+ channel.to_them_msat = remote;
channel.balancedness = (total === 0) ? 1 : (1 - Math.abs((local - remote) / total)).toFixed(3);
return channel;
});
@@ -129,10 +156,9 @@ export const funderUpdatePolicy = (req, res, next) => {
}
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Channels', msg: 'Funder Update Body', data: options.body });
request.post(options).then((body) => {
- var _a, _b;
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Funder Policy Received', data: body });
- body.channel_fee_max_base_msat = (body.channel_fee_max_base_msat && typeof body.channel_fee_max_base_msat === 'string' && body.channel_fee_max_base_msat.includes('msat')) ? +((_a = body.channel_fee_max_base_msat) === null || _a === void 0 ? void 0 : _a.replace('msat', '')) : body.channel_fee_max_base_msat;
- body.lease_fee_base_msat = (body.lease_fee_base_msat && typeof body.lease_fee_base_msat === 'string' && body.lease_fee_base_msat.includes('msat')) ? +((_b = body.lease_fee_base_msat) === null || _b === void 0 ? void 0 : _b.replace('msat', '')) : body.channel_fee_max_base_msat;
+ body.channel_fee_max_base_msat = (body.channel_fee_max_base_msat && typeof body.channel_fee_max_base_msat === 'string' && body.channel_fee_max_base_msat.includes('msat')) ? +body.channel_fee_max_base_msat?.replace('msat', '') : body.channel_fee_max_base_msat;
+ body.lease_fee_base_msat = (body.lease_fee_base_msat && typeof body.lease_fee_base_msat === 'string' && body.lease_fee_base_msat.includes('msat')) ? +body.lease_fee_base_msat?.replace('msat', '') : body.channel_fee_max_base_msat;
res.status(200).json(body);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Channels', 'Funder Policy Error', req.session.selectedNode);
diff --git a/backend/controllers/cln/getInfo.js b/backend/controllers/cln/getInfo.js
index 75891f4d..6263c542 100644
--- a/backend/controllers/cln/getInfo.js
+++ b/backend/controllers/cln/getInfo.js
@@ -62,7 +62,7 @@ export const getInfo = (req, res, next) => {
req.session.selectedNode.ln_version = body.version || '';
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Connecting to the Core Lightning\'s Websocket Server.' });
clWsClient.updateSelectedNode(req.session.selectedNode);
- databaseService.loadDatabase(req.session.selectedNode);
+ databaseService.loadDatabase(req.session);
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Node Information Received', data: body });
return res.status(200).json(body);
}
diff --git a/backend/controllers/cln/invoices.js b/backend/controllers/cln/invoices.js
index 0864a290..770cec12 100644
--- a/backend/controllers/cln/invoices.js
+++ b/backend/controllers/cln/invoices.js
@@ -31,10 +31,6 @@ export const listInvoices = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Invoice', msg: 'Invoices List URL', data: options.url });
request(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Invoice', msg: 'Invoices List Received', data: body });
- if (body.invoices && body.invoices.length > 0) {
- body.invoices = common.sortDescByKey(body.invoices, 'expires_at');
- }
- logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoice', msg: 'Sorted Invoices List Received', data: body });
res.status(200).json(body);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Invoice', 'List Invoices Error', req.session.selectedNode);
diff --git a/backend/controllers/cln/network.js b/backend/controllers/cln/network.js
index db7987f0..b65d0c35 100644
--- a/backend/controllers/cln/network.js
+++ b/backend/controllers/cln/network.js
@@ -76,10 +76,11 @@ export const listNodes = (req, res, next) => {
request(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Network', msg: 'List Nodes Finished', data: body });
body.forEach((node) => {
- var _a, _b;
if (node.option_will_fund) {
- node.option_will_fund.lease_fee_base_msat = (node.option_will_fund.lease_fee_base_msat && typeof node.option_will_fund.lease_fee_base_msat === 'string' && node.option_will_fund.lease_fee_base_msat.includes('msat')) ? (_a = node.option_will_fund.lease_fee_base_msat) === null || _a === void 0 ? void 0 : _a.replace('msat', '') : node.option_will_fund.lease_fee_base_msat;
- node.option_will_fund.channel_fee_max_base_msat = (node.option_will_fund.channel_fee_max_base_msat && typeof node.option_will_fund.channel_fee_max_base_msat === 'string' && node.option_will_fund.channel_fee_max_base_msat.includes('msat')) ? (_b = node.option_will_fund.channel_fee_max_base_msat) === null || _b === void 0 ? void 0 : _b.replace('msat', '') : node.option_will_fund.channel_fee_max_base_msat;
+ node.option_will_fund.lease_fee_base_msat = (node.option_will_fund.lease_fee_base_msat && typeof node.option_will_fund.lease_fee_base_msat === 'string' &&
+ node.option_will_fund.lease_fee_base_msat.includes('msat')) ? node.option_will_fund.lease_fee_base_msat?.replace('msat', '') : node.option_will_fund.lease_fee_base_msat;
+ node.option_will_fund.channel_fee_max_base_msat = (node.option_will_fund.channel_fee_max_base_msat && typeof node.option_will_fund.channel_fee_max_base_msat === 'string' &&
+ node.option_will_fund.channel_fee_max_base_msat.includes('msat')) ? node.option_will_fund.channel_fee_max_base_msat?.replace('msat', '') : node.option_will_fund.channel_fee_max_base_msat;
}
return node;
});
diff --git a/backend/controllers/cln/offers.js b/backend/controllers/cln/offers.js
index 9a735b56..ad158bcb 100644
--- a/backend/controllers/cln/offers.js
+++ b/backend/controllers/cln/offers.js
@@ -11,9 +11,6 @@ export const listOfferBookmarks = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Getting Offer Bookmarks..' });
databaseService.find(req.session.selectedNode, CollectionsEnum.OFFERS).then((offers) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Offer Bookmarks Received', data: offers });
- if (offers && offers.length > 0) {
- offers = common.sortDescByKey(offers, 'lastUpdatedAt');
- }
res.status(200).json(offers);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Offers', 'Offer Bookmarks Error', req.session.selectedNode);
@@ -22,7 +19,7 @@ export const listOfferBookmarks = (req, res, next) => {
};
export const deleteOfferBookmark = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Deleting Offer Bookmark..' });
- databaseService.destroy(req.session.selectedNode, CollectionsEnum.OFFERS, CollectionFieldsEnum.BOLT12, req.params.offerStr).then((deleteRes) => {
+ databaseService.remove(req.session.selectedNode, CollectionsEnum.OFFERS, CollectionFieldsEnum.BOLT12, req.params.offerStr).then((deleteRes) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Offers', msg: 'Offer Bookmark Deleted', data: deleteRes });
res.status(204).json(req.params.offerStr);
}).catch((errRes) => {
diff --git a/backend/controllers/cln/onchain.js b/backend/controllers/cln/onchain.js
index cd97479d..fac8756a 100644
--- a/backend/controllers/cln/onchain.js
+++ b/backend/controllers/cln/onchain.js
@@ -44,9 +44,6 @@ export const getUTXOs = (req, res, next) => {
}
options.url = req.session.selectedNode.ln_server_url + '/v1/listFunds';
request(options).then((body) => {
- if (body.outputs) {
- body.outputs = common.sortDescByStrKey(body.outputs, 'status');
- }
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'OnChain', msg: 'Funds List Received', data: body });
res.status(200).json(body);
}).catch((errRes) => {
diff --git a/backend/controllers/cln/payments.js b/backend/controllers/cln/payments.js
index 19507405..cfe73423 100644
--- a/backend/controllers/cln/payments.js
+++ b/backend/controllers/cln/payments.js
@@ -22,8 +22,8 @@ function paymentReducer(accumulator, currentPayment) {
}
function summaryReducer(accumulator, mpp) {
if (mpp.status === 'complete') {
- accumulator.msatoshi = accumulator.msatoshi + mpp.msatoshi;
- accumulator.msatoshi_sent = accumulator.msatoshi_sent + mpp.msatoshi_sent;
+ accumulator.amount_msat = accumulator.amount_msat + mpp.amount_msat;
+ accumulator.amount_sent_msat = accumulator.amount_sent_msat + mpp.amount_sent_msat;
accumulator.status = mpp.status;
}
if (mpp.bolt11) {
@@ -35,10 +35,9 @@ function summaryReducer(accumulator, mpp) {
return accumulator;
}
function groupBy(payments) {
- var _a;
- const paymentsInGroups = payments === null || payments === void 0 ? void 0 : payments.reduce(paymentReducer, {});
- const paymentsGrpArray = (_a = Object.keys(paymentsInGroups)) === null || _a === void 0 ? void 0 : _a.map((key) => ((paymentsInGroups[key].length && paymentsInGroups[key].length > 1) ? common.sortDescByKey(paymentsInGroups[key], 'partid') : paymentsInGroups[key]));
- return paymentsGrpArray === null || paymentsGrpArray === void 0 ? void 0 : paymentsGrpArray.reduce((acc, curr) => {
+ const paymentsInGroups = payments?.reduce(paymentReducer, {});
+ const paymentsGrpArray = Object.keys(paymentsInGroups)?.map((key) => ((paymentsInGroups[key].length && paymentsInGroups[key].length > 1) ? common.sortDescByKey(paymentsInGroups[key], 'partid') : paymentsInGroups[key]));
+ return paymentsGrpArray?.reduce((acc, curr) => {
let temp = {};
if (curr.length && curr.length === 1) {
temp = JSON.parse(JSON.stringify(curr[0]));
@@ -48,10 +47,10 @@ function groupBy(payments) {
delete temp.partid;
}
else {
- const paySummary = curr === null || curr === void 0 ? void 0 : curr.reduce(summaryReducer, { msatoshi: 0, msatoshi_sent: 0, status: (curr[0] && curr[0].status) ? curr[0].status : 'failed' });
+ const paySummary = curr?.reduce(summaryReducer, { amount_msat: 0, amount_sent_msat: 0, status: (curr[0] && curr[0].status) ? curr[0].status : 'failed' });
temp = {
is_group: true, is_expanded: false, total_parts: (curr.length ? curr.length : 0), status: paySummary.status, payment_hash: curr[0].payment_hash,
- destination: curr[0].destination, msatoshi: paySummary.msatoshi, msatoshi_sent: paySummary.msatoshi_sent, created_at: curr[0].created_at,
+ destination: curr[0].destination, amount_msat: paySummary.amount_msat, amount_sent_msat: paySummary.amount_sent_msat, created_at: curr[0].created_at,
mpps: curr
};
if (paySummary.bolt11) {
@@ -73,10 +72,6 @@ export const listPayments = (req, res, next) => {
options.url = req.session.selectedNode.ln_server_url + '/v1/pay/listPayments';
request(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Payments', msg: 'Payment List Received', data: body.payments });
- if (body && body.payments && body.payments.length > 0) {
- body.payments = common.sortDescByKey(body.payments, 'created_at');
- }
- logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Sorted Payments List Received', data: body.payments });
res.status(200).json(groupBy(body.payments));
}).catch((errRes) => {
const err = common.handleError(errRes, 'Payments', 'List Payments Error', req.session.selectedNode);
@@ -108,19 +103,25 @@ export const postPayment = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Payment Sent', data: body });
if (req.body.paymentType === 'OFFER') {
if (req.body.saveToDB && req.body.bolt12) {
- const offerToUpdate = { bolt12: req.body.bolt12, amountmSat: (req.body.zeroAmtOffer ? 0 : req.body.amount), title: req.body.title, lastUpdatedAt: new Date(Date.now()).getTime() };
- if (req.body.vendor) {
- offerToUpdate['vendor'] = req.body.vendor;
+ const offerToUpdate = { bolt12: req.body.bolt12, amountMSat: (req.body.zeroAmtOffer ? 0 : req.body.amount), title: req.body.title, lastUpdatedAt: new Date(Date.now()).getTime() };
+ if (req.body.issuer) {
+ offerToUpdate['issuer'] = req.body.issuer;
}
if (req.body.description) {
offerToUpdate['description'] = req.body.description;
}
- return databaseService.update(req.session.selectedNode, CollectionsEnum.OFFERS, offerToUpdate, CollectionFieldsEnum.BOLT12, req.body.bolt12).then((updatedOffer) => {
- logger.log({ level: 'DEBUG', fileName: 'Offer', msg: 'Offer Updated', data: updatedOffer });
- return res.status(201).json({ paymentResponse: body, saveToDBResponse: updatedOffer });
- }).catch((errDB) => {
- logger.log({ selectedNode: req.session.selectedNode, level: 'ERROR', fileName: 'Payments', msg: 'Offer DB update error', error: errDB });
- return res.status(201).json({ paymentResponse: body, saveToDBError: errDB });
+ // eslint-disable-next-line arrow-body-style
+ return databaseService.validateDocument(CollectionsEnum.OFFERS, offerToUpdate).then((validated) => {
+ return databaseService.update(req.session.selectedNode, CollectionsEnum.OFFERS, offerToUpdate, CollectionFieldsEnum.BOLT12, req.body.bolt12).then((updatedOffer) => {
+ logger.log({ level: 'DEBUG', fileName: 'Payments', msg: 'Offer Updated', data: updatedOffer });
+ return res.status(201).json({ paymentResponse: body, saveToDBResponse: updatedOffer });
+ }).catch((errDB) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'ERROR', fileName: 'Payments', msg: 'Offer DB update error', error: errDB });
+ return res.status(201).json({ paymentResponse: body, saveToDBError: errDB });
+ });
+ }).catch((errValidation) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'ERROR', fileName: 'Payments', msg: 'Offer DB validation error', error: errValidation });
+ return res.status(201).json({ paymentResponse: body, saveToDBError: errValidation });
});
}
else {
diff --git a/backend/controllers/cln/peers.js b/backend/controllers/cln/peers.js
index fc9bee07..21bac143 100644
--- a/backend/controllers/cln/peers.js
+++ b/backend/controllers/cln/peers.js
@@ -17,9 +17,8 @@ export const getPeers = (req, res, next) => {
peer.alias = peer.id.substring(0, 20);
}
});
- const peers = (body) ? common.sortDescByStrKey(body, 'alias') : [];
- logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peers with Alias Received', data: peers });
- res.status(200).json(peers);
+ logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peers with Alias Received', data: body });
+ res.status(200).json(body || []);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Peers', 'List Peers Error', req.session.selectedNode);
return res.status(err.statusCode).json({ message: err.message, error: err.error });
@@ -33,12 +32,11 @@ export const postPeer = (req, res, next) => {
}
options.url = req.session.selectedNode.ln_server_url + '/v1/peer/connect';
options.body = req.body;
- request.post(options).then((body) => {
- logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Peers', msg: 'Peer Connected', data: body });
+ request.post(options).then((connectRes) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Peers', msg: 'Peer Connected', data: connectRes });
options.url = req.session.selectedNode.ln_server_url + '/v1/peer/listPeers';
- request(options).then((body) => {
- let peers = (body) ? common.sortDescByStrKey(body, 'alias') : [];
- peers = common.newestOnTop(peers, 'id', req.body.id);
+ request(options).then((listPeersRes) => {
+ const peers = listPeersRes ? common.newestOnTop(listPeersRes, 'id', req.body.id) : [];
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peers List after Connect Received', data: peers });
res.status(201).json(peers);
}).catch((errRes) => {
diff --git a/backend/controllers/cln/utility.js b/backend/controllers/cln/utility.js
index a0d0a2a9..f8e866d9 100644
--- a/backend/controllers/cln/utility.js
+++ b/backend/controllers/cln/utility.js
@@ -19,7 +19,7 @@ export const decodePayments = (req, res, next) => {
}
if (req.body.payments) {
const paymentsArr = req.body.payments.split(',');
- return Promise.all(paymentsArr === null || paymentsArr === void 0 ? void 0 : paymentsArr.map((payment) => decodePaymentFromPaymentRequest(req.session.selectedNode, payment))).
+ return Promise.all(paymentsArr?.map((payment) => decodePaymentFromPaymentRequest(req.session.selectedNode, payment))).
then((values) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Payment List Decoded', data: values });
res.status(200).json(values);
diff --git a/backend/controllers/cln/webSocketClient.js b/backend/controllers/cln/webSocketClient.js
index 1a12698d..8513fdde 100644
--- a/backend/controllers/cln/webSocketClient.js
+++ b/backend/controllers/cln/webSocketClient.js
@@ -47,9 +47,8 @@ export class CLWebSocketClient {
}
};
this.connectWithClient = (clWsClt) => {
- var _a;
this.logger.log({ selectedNode: clWsClt.selectedNode, level: 'INFO', fileName: 'CLWebSocket', msg: 'Connecting to the Core Lightning\'s Websocket Server..' });
- const WS_LINK = ((_a = (clWsClt.selectedNode.ln_server_url)) === null || _a === void 0 ? void 0 : _a.replace(/^http/, 'ws')) + '/v1/ws';
+ const WS_LINK = (clWsClt.selectedNode.ln_server_url)?.replace(/^http/, 'ws') + '/v1/ws';
const mcrnHexEncoded = Buffer.from(fs.readFileSync(join(clWsClt.selectedNode.macaroon_path, 'access.macaroon'))).toString('hex');
clWsClt.webSocketClient = new WebSocket(WS_LINK, [mcrnHexEncoded, 'hex'], { rejectUnauthorized: false });
clWsClt.webSocketClient.onopen = () => {
@@ -73,17 +72,12 @@ export class CLWebSocketClient {
this.wsServer.sendEventsToAllLNClients(msgStr, clWsClt.selectedNode);
};
clWsClt.webSocketClient.onerror = (err) => {
- if (clWsClt.selectedNode.api_version === '' || !clWsClt.selectedNode.api_version || this.common.isVersionCompatible(clWsClt.selectedNode.api_version, '0.6.0')) {
- this.logger.log({ selectedNode: clWsClt.selectedNode, level: 'ERROR', fileName: 'CLWebSocket', msg: 'Web socket error', error: err });
- const errStr = ((typeof err === 'object' && err.message) ? JSON.stringify({ error: err.message }) : (typeof err === 'object') ? JSON.stringify({ error: err }) : ('{ "error": ' + err + ' }'));
- this.wsServer.sendErrorToAllLNClients(errStr, clWsClt.selectedNode);
- clWsClt.webSocketClient.close();
- if (clWsClt.reConnect) {
- this.reconnet(clWsClt);
- }
- }
- else {
- clWsClt.reConnect = false;
+ this.logger.log({ selectedNode: clWsClt.selectedNode, level: 'ERROR', fileName: 'CLWebSocket', msg: 'Web socket error', error: err });
+ const errStr = ((typeof err === 'object' && err.message) ? JSON.stringify({ error: err.message }) : (typeof err === 'object') ? JSON.stringify({ error: err }) : ('{ "error": ' + err + ' }'));
+ this.wsServer.sendErrorToAllLNClients(errStr, clWsClt.selectedNode);
+ clWsClt.webSocketClient.close();
+ if (clWsClt.reConnect) {
+ this.reconnet(clWsClt);
}
};
};
diff --git a/backend/controllers/eclair/channels.js b/backend/controllers/eclair/channels.js
index f3e2ad60..522bcd2d 100644
--- a/backend/controllers/eclair/channels.js
+++ b/backend/controllers/eclair/channels.js
@@ -1,6 +1,9 @@
import request from 'request-promise';
import { Logger } from '../../utils/logger.js';
import { Common } from '../../utils/common.js';
+import { createInvoiceRequestCall, listPendingInvoicesRequestCall } from './invoices.js';
+import { findRouteBetweenNodesRequestCall } from './network.js';
+import { getSentInfoFromPaymentRequest, sendPaymentToRouteRequestCall } from './payments.js';
let options = null;
const logger = Logger;
const common = Common;
@@ -13,10 +16,10 @@ export const simplifyAllChannels = (selNode, channels) => {
nodeId: channel.nodeId ? channel.nodeId : '',
channelId: channel.channelId ? channel.channelId : '',
state: channel.state ? channel.state : '',
- channelFlags: channel.data && channel.data.commitments && channel.data.commitments.channelFlags ? channel.data.commitments.channelFlags : 0,
+ announceChannel: channel.data && channel.data.commitments && channel.data.commitments.channelFlags && channel.data.commitments.channelFlags.announceChannel ? channel.data.commitments.channelFlags.announceChannel : false,
toLocal: (channel.data.commitments.localCommit.spec.toLocal) ? Math.round(+channel.data.commitments.localCommit.spec.toLocal / 1000) : 0,
toRemote: (channel.data.commitments.localCommit.spec.toRemote) ? Math.round(+channel.data.commitments.localCommit.spec.toRemote / 1000) : 0,
- shortChannelId: channel.data && channel.data.shortChannelId ? channel.data.shortChannelId : '',
+ shortChannelId: channel.data && channel.data.channelUpdate && channel.data.channelUpdate.shortChannelId ? channel.data.channelUpdate.shortChannelId : '',
isFunder: channel.data && channel.data.commitments && channel.data.commitments.localParams && channel.data.commitments.localParams.isFunder ? channel.data.commitments.localParams.isFunder : false,
buried: channel.data && channel.data.buried ? channel.data.buried : false,
feeBaseMsat: channel.data && channel.data.channelUpdate && channel.data.channelUpdate.feeBaseMsat ? channel.data.channelUpdate.feeBaseMsat : 0,
@@ -32,7 +35,7 @@ export const simplifyAllChannels = (selNode, channels) => {
return request.post(options).then((nodes) => {
logger.log({ selectedNode: selNode, level: 'DEBUG', fileName: 'Channels', msg: 'Filtered Nodes Received', data: nodes });
let foundPeer = null;
- simplifiedChannels === null || simplifiedChannels === void 0 ? void 0 : simplifiedChannels.map((channel) => {
+ simplifiedChannels?.map((channel) => {
foundPeer = nodes.find((channelWithAlias) => channel.nodeId === channelWithAlias.nodeId);
channel.alias = foundPeer ? foundPeer.alias : channel.nodeId.substring(0, 20);
return channel;
@@ -83,7 +86,13 @@ export const getChannelStats = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/channelstats';
- options.form = {};
+ const today = new Date(Date.now());
+ const tillToday = (Math.round(today.getTime() / 1000)).toString();
+ const fromLastMonth = (Math.round(new Date(today.getFullYear(), today.getMonth() - 1, today.getDate() + 1, 0, 0, 0).getTime() / 1000)).toString();
+ options.form = {
+ from: fromLastMonth,
+ to: tillToday
+ };
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Channel States Received', data: body });
res.status(201).json(body);
@@ -150,3 +159,54 @@ export const closeChannel = (req, res, next) => {
return res.status(err.statusCode).json({ message: err.message, error: err.error });
});
};
+// options.form = { sourceNodeId: req.params.source, targetNodeId: req.params.target, amountMsat: req.params.amount, ignoreNodeIds: req.params.ignore };
+export const circularRebalance = (req, res, next) => {
+ const crInvDescription = 'Circular rebalancing invoice for ' + (req.body.amountMsat / 1000) + ' Sats';
+ options = common.getOptions(req);
+ if (options.error) {
+ return res.status(options.statusCode).json({ message: options.message, error: options.error });
+ }
+ options.form = req.body;
+ logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Channels', msg: 'Rebalance Params', data: options.form });
+ const tillToday = (Math.round(new Date(Date.now()).getTime() / 1000)).toString();
+ // Check if unpaid Invoice exists already
+ listPendingInvoicesRequestCall(req.session.selectedNode).then((callRes) => {
+ const foundExistingInvoice = callRes.find((inv) => inv.description.includes(crInvDescription) && inv.amount === req.body.amountMsat && inv.expiry && inv.timestamp && ((inv.expiry + inv.timestamp) >= tillToday));
+ // Create new invoice if doesn't exist already
+ const requestCalls = foundExistingInvoice && foundExistingInvoice.serialized ?
+ [findRouteBetweenNodesRequestCall(req.session.selectedNode, req.body.amountMsat, req.body.sourceNodeId, req.body.targetNodeId, req.body.ignoreNodeIds, req.body.format)] :
+ [findRouteBetweenNodesRequestCall(req.session.selectedNode, req.body.amountMsat, req.body.sourceNodeId, req.body.targetNodeId, req.body.ignoreNodeIds, req.body.format), createInvoiceRequestCall(req.session.selectedNode, crInvDescription, req.body.amountMsat)];
+ Promise.all(requestCalls).then((values) => {
+ // eslint-disable-next-line arrow-body-style
+ const routes = values[0]?.routes?.filter((route) => {
+ return !((route.shortChannelIds[0] === req.body.sourceShortChannelId && route.shortChannelIds[1] === req.body.targetShortChannelId) ||
+ (route.shortChannelIds[1] === req.body.sourceShortChannelId && route.shortChannelIds[0] === req.body.targetShortChannelId));
+ });
+ const firstRoute = routes[0].shortChannelIds.join() || '';
+ const shortChannelIds = req.body.sourceShortChannelId + ',' + firstRoute + ',' + req.body.targetShortChannelId;
+ const invoice = (foundExistingInvoice && foundExistingInvoice.serialized ? foundExistingInvoice.serialized : (values[1] ? values[1].serialized : '')) || '';
+ const paymentHash = (foundExistingInvoice && foundExistingInvoice.paymentHash ? foundExistingInvoice.paymentHash : (values[1] ? values[1].paymentHash : '') || '');
+ return sendPaymentToRouteRequestCall(req.session.selectedNode, shortChannelIds, invoice, req.body.amountMsat).then((payToRouteCallRes) => {
+ // eslint-disable-next-line arrow-body-style
+ setTimeout(() => {
+ return getSentInfoFromPaymentRequest(req.session.selectedNode, paymentHash).then((sentInfoCallRes) => {
+ const payStatus = sentInfoCallRes.length && sentInfoCallRes.length > 0 ? sentInfoCallRes[sentInfoCallRes.length - 1].status : sentInfoCallRes;
+ return res.status(201).json({ flgReusingInvoice: !!foundExistingInvoice, invoice: invoice, paymentRoute: shortChannelIds, paymentHash: paymentHash, paymentDetails: payToRouteCallRes, paymentStatus: payStatus });
+ }).catch((errRes) => {
+ const err = common.handleError(errRes, 'Channels', 'Channel Rebalance From Sent Info Error', req.session.selectedNode);
+ return res.status(err.statusCode).json({ flgReusingInvoice: !!foundExistingInvoice, invoice: invoice, paymentRoute: shortChannelIds, paymentHash: paymentHash, paymentDetails: payToRouteCallRes, paymentStatus: { error: err.error } });
+ });
+ }, 3000);
+ }).catch((errRes) => {
+ const err = common.handleError(errRes, 'Channels', 'Channel Rebalance From Send Payment To Route Error', req.session.selectedNode);
+ return res.status(err.statusCode).json({ flgReusingInvoice: !!foundExistingInvoice, invoice: invoice, paymentRoute: shortChannelIds, paymentHash: paymentHash, paymentDetails: {}, paymentStatus: { error: err.error } });
+ });
+ }).catch((errRes) => {
+ const err = common.handleError(errRes, 'Channels', 'Channel Rebalance From Find Routes Error', req.session.selectedNode);
+ return res.status(err.statusCode).json({ flgReusingInvoice: !!foundExistingInvoice, invoice: (foundExistingInvoice.serialized || ''), paymentRoute: '', paymentHash: '', paymentDetails: {}, paymentStatus: { error: err.error } });
+ });
+ }).catch((errRes) => {
+ const err = common.handleError(errRes, 'Channels', 'Channel Rebalance From List Pending Invoices Error', req.session.selectedNode);
+ return res.status(err.statusCode).json({ flgReusingInvoice: false, invoice: '', paymentRoute: '', paymentHash: '', paymentDetails: {}, paymentStatus: { error: err.error } });
+ });
+};
diff --git a/backend/controllers/eclair/fees.js b/backend/controllers/eclair/fees.js
index 05176e70..7c60516f 100644
--- a/backend/controllers/eclair/fees.js
+++ b/backend/controllers/eclair/fees.js
@@ -88,9 +88,6 @@ export const arrangePayments = (selNode, body) => {
relayedEle.amountOut = Math.round(relayedEle.amountOut / 1000);
}
});
- payments.sent = common.sortDescByKey(payments.sent, 'firstPartTimestamp');
- payments.received = common.sortDescByKey(payments.received, 'firstPartTimestamp');
- payments.relayed = common.sortDescByKey(payments.relayed, 'timestamp');
logger.log({ selectedNode: selNode, level: 'DEBUG', fileName: 'Fees', msg: 'Arranged Payments Received', data: payments });
return payments;
};
@@ -129,7 +126,8 @@ export const getPayments = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/audit';
- options.form = null;
+ const tillToday = (Math.round(new Date(Date.now()).getTime() / 1000)).toString();
+ options.form = { from: 0, to: tillToday };
if (common.read_dummy_data) {
common.getDummyData('Payments', req.session.selectedNode.ln_implementation).then((data) => { res.status(200).json(arrangePayments(req.session.selectedNode, data)); });
}
diff --git a/backend/controllers/eclair/getInfo.js b/backend/controllers/eclair/getInfo.js
index 0f90db68..dbf11cf9 100644
--- a/backend/controllers/eclair/getInfo.js
+++ b/backend/controllers/eclair/getInfo.js
@@ -38,11 +38,11 @@ export const getInfo = (req, res, next) => {
body.lnImplementation = 'Eclair';
req.session.selectedNode.ln_version = body.version.split('-')[0] || '';
eclWsClient.updateSelectedNode(req.session.selectedNode);
- databaseService.loadDatabase(req.session.selectedNode);
+ databaseService.loadDatabase(req.session);
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Node Information Received', data: body });
return res.status(200).json(body);
}).catch((errRes) => {
- const err = common.handleError(errRes, 'GetInfo', 'Get Info Error', req);
+ const err = common.handleError(errRes, 'GetInfo', 'Get Info Error', req.session.selectedNode);
return res.status(err.statusCode).json({ message: err.message, error: err.error });
});
}
diff --git a/backend/controllers/eclair/invoices.js b/backend/controllers/eclair/invoices.js
index 339e670f..45310605 100644
--- a/backend/controllers/eclair/invoices.js
+++ b/backend/controllers/eclair/invoices.js
@@ -19,7 +19,7 @@ export const getReceivedPaymentInfo = (lnServerUrl, invoice) => {
invoice.status = response.status.type;
if (response.status && response.status.type === 'received') {
invoice.amountSettled = response.status.amount ? Math.round(response.status.amount / 1000) : 0;
- invoice.receivedAt = response.status.receivedAt ? Math.round(response.status.receivedAt / 1000) : 0;
+ invoice.receivedAt = response.status.receivedAt.unix ? response.status.receivedAt.unix : 0;
}
return invoice;
}).catch((err) => {
@@ -53,28 +53,40 @@ export const getInvoice = (req, res, next) => {
return res.status(err.statusCode).json({ message: err.message, error: err.error });
});
};
+export const listPendingInvoicesRequestCall = (selectedNode) => {
+ logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'Invoices', msg: 'List Pending Invoices..' });
+ options = selectedNode.options;
+ options.url = selectedNode.ln_server_url + '/listpendinginvoices';
+ options.form = { from: 0, to: (Math.round(new Date(Date.now()).getTime() / 1000)).toString() };
+ return new Promise((resolve, reject) => {
+ request.post(options).then((pendingInvoicesResponse) => {
+ logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'Invoices', msg: 'Pending Invoices List ', data: pendingInvoicesResponse });
+ resolve(pendingInvoicesResponse);
+ }).catch((errRes) => {
+ reject(common.handleError(errRes, 'Invoices', 'List Pending Invoices Error', selectedNode));
+ });
+ });
+};
export const listInvoices = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoices', msg: 'Getting List Invoices..' });
options = common.getOptions(req);
if (options.error) {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
- options.form = {};
+ const tillToday = (Math.round(new Date(Date.now()).getTime() / 1000)).toString();
+ options.form = { from: 0, to: tillToday };
const options1 = JSON.parse(JSON.stringify(options));
options1.url = req.session.selectedNode.ln_server_url + '/listinvoices';
- options1.form = {};
+ options1.form = { from: 0, to: tillToday };
const options2 = JSON.parse(JSON.stringify(options));
options2.url = req.session.selectedNode.ln_server_url + '/listpendinginvoices';
- options2.form = {};
+ options2.form = { from: 0, to: tillToday };
if (common.read_dummy_data) {
return common.getDummyData('Invoices', req.session.selectedNode.ln_implementation).then((body) => {
const invoices = (!body[0] || body[0].length <= 0) ? [] : body[0];
pendingInvoices = (!body[1] || body[1].length <= 0) ? [] : body[1];
- return Promise.all(invoices === null || invoices === void 0 ? void 0 : invoices.map((invoice) => getReceivedPaymentInfo(req.session.selectedNode.ln_server_url, invoice))).
- then((values) => {
- body = common.sortDescByKey(invoices, 'expiresAt');
- return res.status(200).json(invoices);
- });
+ return Promise.all(invoices?.map((invoice) => getReceivedPaymentInfo(req.session.selectedNode.ln_server_url, invoice))).
+ then((values) => res.status(200).json(invoices));
});
}
else {
@@ -84,9 +96,8 @@ export const listInvoices = (req, res, next) => {
const invoices = (!body[0] || body[0].length <= 0) ? [] : body[0];
pendingInvoices = (!body[1] || body[1].length <= 0) ? [] : body[1];
if (invoices && invoices.length > 0) {
- return Promise.all(invoices === null || invoices === void 0 ? void 0 : invoices.map((invoice) => getReceivedPaymentInfo(req.session.selectedNode.ln_server_url, invoice))).
+ return Promise.all(invoices?.map((invoice) => getReceivedPaymentInfo(req.session.selectedNode.ln_server_url, invoice))).
then((values) => {
- body = common.sortDescByKey(invoices, 'expiresAt');
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoices', msg: 'Sorted Invoices List Received', data: invoices });
return res.status(200).json(invoices);
}).
@@ -106,22 +117,30 @@ export const listInvoices = (req, res, next) => {
});
}
};
+export const createInvoiceRequestCall = (selectedNode, description, amount) => {
+ logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'Invoices', msg: 'Creating Invoice..' });
+ options = selectedNode.options;
+ options.url = selectedNode.ln_server_url + '/createinvoice';
+ options.form = { description: description, amountMsat: amount };
+ return new Promise((resolve, reject) => {
+ request.post(options).then((invResponse) => {
+ logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'Invoice', msg: 'Invoice Created', data: invResponse });
+ if (invResponse.amount) {
+ invResponse.amount = Math.round(invResponse.amount / 1000);
+ }
+ resolve(invResponse);
+ }).catch((errRes) => {
+ reject(common.handleError(errRes, 'Invoices', 'Create Invoice Error', selectedNode));
+ });
+ });
+};
export const createInvoice = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoices', msg: 'Creating Invoice..' });
options = common.getOptions(req);
if (options.error) {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
- options.url = req.session.selectedNode.ln_server_url + '/createinvoice';
- options.form = req.body;
- request.post(options).then((body) => {
- logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoice', msg: 'Invoice Created', data: body });
- if (body.amount) {
- body.amount = Math.round(body.amount / 1000);
- }
- res.status(201).json(body);
- }).catch((errRes) => {
- const err = common.handleError(errRes, 'Invoices', 'Create Invoice Error', req.session.selectedNode);
- return res.status(err.statusCode).json({ message: err.message, error: err.error });
- });
+ createInvoiceRequestCall(req.session.selectedNode, req.body.description, req.body.amountMsat).then((invRes) => {
+ res.status(201).json(invRes);
+ }).catch((err) => res.status(err.statusCode).json({ message: err.message, error: err.error }));
};
diff --git a/backend/controllers/eclair/network.js b/backend/controllers/eclair/network.js
index bd5f7001..1cd0aae3 100644
--- a/backend/controllers/eclair/network.js
+++ b/backend/controllers/eclair/network.js
@@ -20,3 +20,26 @@ export const getNodes = (req, res, next) => {
return res.status(err.statusCode).json({ message: err.message, error: err.error });
});
};
+export const findRouteBetweenNodesRequestCall = (selectedNode, amountMsat, sourceNodeId, targetNodeId, ignoreNodeIds = [], format = 'shortChannelId') => {
+ logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'Network', msg: 'Find Route Between Nodes..' });
+ options = selectedNode.options;
+ options.url = selectedNode.ln_server_url + '/findroutebetweennodes';
+ options.form = { amountMsat: amountMsat, sourceNodeId: sourceNodeId, targetNodeId: targetNodeId, ignoreNodeIds: ignoreNodeIds, format: format };
+ return new Promise((resolve, reject) => {
+ request.post(options).then((body) => {
+ logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'Network', msg: 'Route Lookup Between Nodes Finished', data: body });
+ resolve(body);
+ }).catch((errRes) => {
+ reject(common.handleError(errRes, 'Network', 'Route Lookup Between Nodes Error', selectedNode));
+ });
+ });
+};
+export const findRouteBetweenNodes = (req, res, next) => {
+ options = common.getOptions(req);
+ if (options.error) {
+ return res.status(options.statusCode).json({ message: options.message, error: options.error });
+ }
+ findRouteBetweenNodesRequestCall(req.session.selectedNode, req.body.amountMsat, req.body.sourceNodeId, req.body.targetNodeId, req.body.ignoreNodeIds, req.body.format).then((callRes) => {
+ res.status(200).json(callRes);
+ }).catch((err) => res.status(err.statusCode).json({ message: err.message, error: err.error }));
+};
diff --git a/backend/controllers/eclair/onchain.js b/backend/controllers/eclair/onchain.js
index 05e255fa..d69b1de2 100644
--- a/backend/controllers/eclair/onchain.js
+++ b/backend/controllers/eclair/onchain.js
@@ -66,9 +66,6 @@ export const getTransactions = (req, res, next) => {
};
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'OnChain', msg: 'Getting On Chain Transactions Options', data: options.form });
request.post(options).then((body) => {
- if (body && body.length > 0) {
- body = common.sortDescByKey(body, 'timestamp');
- }
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'OnChain', msg: 'On Chain Transactions Received', data: body });
res.status(200).json(body);
}).catch((errRes) => {
diff --git a/backend/controllers/eclair/payments.js b/backend/controllers/eclair/payments.js
index 5e46bf70..38922282 100644
--- a/backend/controllers/eclair/payments.js
+++ b/backend/controllers/eclair/payments.js
@@ -22,7 +22,7 @@ export const getSentInfoFromPaymentRequest = (selNode, payment) => {
};
export const getQueryNodes = (selNode, nodeIds) => {
options.url = selNode.ln_server_url + '/nodes';
- options.form = { nodeIds: nodeIds === null || nodeIds === void 0 ? void 0 : nodeIds.reduce((acc, curr) => acc + ',' + curr) };
+ options.form = { nodeIds: nodeIds?.reduce((acc, curr) => acc + ',' + curr) };
return request.post(options).then((nodes) => {
logger.log({ selectedNode: selNode, level: 'DEBUG', fileName: 'Payments', msg: 'Query Nodes Received', data: nodes });
return nodes;
@@ -77,16 +77,14 @@ export const queryPaymentRoute = (req, res, next) => {
};
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Payments', msg: 'Query Payment Route Options', data: options.form });
request.post(options).then((body) => {
- var _a;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Payments', msg: 'Query Payment Route Received', data: body });
if (body && body.routes && body.routes.length) {
let allRoutesNodeIds = [];
- allRoutesNodeIds = (_a = body.routes) === null || _a === void 0 ? void 0 : _a.reduce((accRoutes, currRoute) => [...new Set([...accRoutes, ...currRoute.nodeIds])], []);
+ allRoutesNodeIds = body.routes?.reduce((accRoutes, currRoute) => [...new Set([...accRoutes, ...currRoute.nodeIds])], []);
return getQueryNodes(req.session.selectedNode, allRoutesNodeIds).then((nodesWithAlias) => {
let foundPeer = null;
body.routes.forEach((route, i) => {
- var _a;
- (_a = route.nodeIds) === null || _a === void 0 ? void 0 : _a.map((node, j) => {
+ route.nodeIds?.map((node, j) => {
foundPeer = nodesWithAlias.find((nodeWithAlias) => node === nodeWithAlias.nodeId);
body.routes[i].nodeIds[j] = { nodeId: node, alias: foundPeer ? foundPeer.alias : '' };
return node;
@@ -113,7 +111,7 @@ export const getSentPaymentsInformation = (req, res, next) => {
}
if (req.body.payments) {
const paymentsArr = req.body.payments.split(',');
- return Promise.all(paymentsArr === null || paymentsArr === void 0 ? void 0 : paymentsArr.map((payment) => getSentInfoFromPaymentRequest(req.session.selectedNode, payment))).
+ return Promise.all(paymentsArr?.map((payment) => getSentInfoFromPaymentRequest(req.session.selectedNode, payment))).
then((values) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Payment Sent Information Received', data: values });
return res.status(200).json(values);
@@ -128,3 +126,28 @@ export const getSentPaymentsInformation = (req, res, next) => {
return res.status(200).json([]);
}
};
+export const sendPaymentToRouteRequestCall = (selectedNode, shortChannelIds, invoice, amountMsat) => {
+ logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'Invoices', msg: 'Creating Invoice..' });
+ options = selectedNode.options;
+ options.url = selectedNode.ln_server_url + '/sendtoroute';
+ options.form = { shortChannelIds: shortChannelIds, amountMsat: amountMsat, invoice: invoice };
+ return new Promise((resolve, reject) => {
+ logger.log({ selectedNode: selectedNode, level: 'DEBUG', fileName: 'Payments', msg: 'Send Payment To Route Options', data: options.form });
+ request.post(options).then((body) => {
+ logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Payment Sent To Route', data: body });
+ resolve(body);
+ }).catch((errRes) => {
+ reject(common.handleError(errRes, 'Payments', 'Send Payment To Route Error', selectedNode));
+ });
+ });
+};
+export const sendPaymentToRoute = (req, res, next) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Send Payment To Route..' });
+ options = common.getOptions(req);
+ if (options.error) {
+ return res.status(options.statusCode).json({ message: options.message, error: options.error });
+ }
+ sendPaymentToRouteRequestCall(req.session.selectedNode, req.body.shortChannelIds, req.body.invoice, req.body.amountMsat).then((callRes) => {
+ res.status(200).json(callRes);
+ }).catch((err) => res.status(err.statusCode).json({ message: err.message, error: err.error }));
+};
diff --git a/backend/controllers/eclair/peers.js b/backend/controllers/eclair/peers.js
index 2fb4de93..0436f2ec 100644
--- a/backend/controllers/eclair/peers.js
+++ b/backend/controllers/eclair/peers.js
@@ -32,12 +32,11 @@ export const getPeers = (req, res, next) => {
peersNodeIds = peersNodeIds.substring(1);
return getFilteredNodes(req.session.selectedNode, peersNodeIds).then((peersWithAlias) => {
let foundPeer = null;
- body === null || body === void 0 ? void 0 : body.map((peer) => {
+ body?.map((peer) => {
foundPeer = peersWithAlias.find((peerWithAlias) => peer.nodeId === peerWithAlias.nodeId);
peer.alias = foundPeer ? foundPeer.alias : peer.nodeId.substring(0, 20);
return peer;
});
- body = common.sortDescByStrKey(body, 'alias');
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Sorted Peers List Received', data: body });
res.status(200).json(body);
});
@@ -85,13 +84,12 @@ export const connectPeer = (req, res, next) => {
peersNodeIds = peersNodeIds.substring(1);
return getFilteredNodes(req.session.selectedNode, peersNodeIds).then((peersWithAlias) => {
let foundPeer = null;
- body === null || body === void 0 ? void 0 : body.map((peer) => {
+ body?.map((peer) => {
foundPeer = peersWithAlias.find((peerWithAlias) => peer.nodeId === peerWithAlias.nodeId);
peer.alias = foundPeer ? foundPeer.alias : peer.nodeId.substring(0, 20);
return peer;
});
- let peers = (body) ? common.sortDescByStrKey(body, 'alias') : [];
- peers = common.newestOnTop(peers, 'nodeId', req.query.nodeId ? req.query.nodeId : req.query.uri ? req.query.uri.substring(0, req.query.uri.indexOf('@')) : '');
+ const peers = common.newestOnTop(body || [], 'nodeId', req.query.nodeId ? req.query.nodeId : req.query.uri ? req.query.uri.substring(0, req.query.uri.indexOf('@')) : '');
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peers List after Connect Received', data: peers });
res.status(201).json(peers);
});
diff --git a/backend/controllers/eclair/webSocketClient.js b/backend/controllers/eclair/webSocketClient.js
index b27df199..20539a65 100644
--- a/backend/controllers/eclair/webSocketClient.js
+++ b/backend/controllers/eclair/webSocketClient.js
@@ -2,6 +2,7 @@ import WebSocket from 'ws';
import { Logger } from '../../utils/logger.js';
import { Common } from '../../utils/common.js';
import { WSServer } from '../../utils/webSocketServer.js';
+import { ECLWSEventsEnum } from '../../models/ecl.model.js';
export class ECLWebSocketClient {
constructor() {
this.logger = Logger;
@@ -45,15 +46,15 @@ export class ECLWebSocketClient {
}
};
this.connectWithClient = (eclWsClt) => {
- var _a;
this.logger.log({ selectedNode: eclWsClt.selectedNode, level: 'INFO', fileName: 'ECLWebSocket', msg: 'Connecting to the Eclair\'s Websocket Server..' });
- const UpdatedLNServerURL = (_a = (eclWsClt.selectedNode.ln_server_url)) === null || _a === void 0 ? void 0 : _a.replace(/^http/, 'ws');
+ const UpdatedLNServerURL = (eclWsClt.selectedNode.ln_server_url)?.replace(/^http/, 'ws');
const firstSubStrIndex = (UpdatedLNServerURL.indexOf('//') + 2);
const WS_LINK = UpdatedLNServerURL.slice(0, firstSubStrIndex) + ':' + eclWsClt.selectedNode.ln_api_password + '@' + UpdatedLNServerURL.slice(firstSubStrIndex) + '/ws';
eclWsClt.webSocketClient = new WebSocket(WS_LINK);
eclWsClt.webSocketClient.onopen = () => {
this.logger.log({ selectedNode: eclWsClt.selectedNode, level: 'INFO', fileName: 'ECLWebSocket', msg: 'Connected to the Eclair\'s Websocket Server..' });
this.waitTime = 0.5;
+ this.heartbeat(eclWsClt);
};
eclWsClt.webSocketClient.onclose = (e) => {
if (eclWsClt && eclWsClt.selectedNode && eclWsClt.selectedNode.ln_implementation === 'ECL') {
@@ -67,9 +68,11 @@ export class ECLWebSocketClient {
eclWsClt.webSocketClient.onmessage = (msg) => {
this.logger.log({ selectedNode: eclWsClt.selectedNode, level: 'DEBUG', fileName: 'ECLWebSocket', msg: 'Received message from the server..', data: msg.data });
msg = (typeof msg.data === 'string') ? JSON.parse(msg.data) : msg.data;
- msg['source'] = 'ECL';
- const msgStr = JSON.stringify(msg);
- this.wsServer.sendEventsToAllLNClients(msgStr, eclWsClt.selectedNode);
+ if (msg.type && msg.type !== ECLWSEventsEnum.PAY_RELAYED && msg.type !== ECLWSEventsEnum.PAY_SETTLING_ONCHAIN && msg.type !== ECLWSEventsEnum.ONION_MESSAGE_RECEIVED) {
+ msg['source'] = 'ECL';
+ const msgStr = JSON.stringify(msg);
+ this.wsServer.sendEventsToAllLNClients(msgStr, eclWsClt.selectedNode);
+ }
};
eclWsClt.webSocketClient.onerror = (err) => {
if (eclWsClt.selectedNode.ln_version === '' || !eclWsClt.selectedNode.ln_version || this.common.isVersionCompatible(eclWsClt.selectedNode.ln, '0.5.0')) {
@@ -105,6 +108,19 @@ export class ECLWebSocketClient {
newClient.selectedNode = JSON.parse(JSON.stringify(newSelectedNode));
this.webSocketClients[clientIdx] = newClient;
};
+ this.heartbeat = (eclWsClt) => {
+ this.logger.log({ selectedNode: eclWsClt.selectedNode, level: 'DEBUG', fileName: 'ECLWebSocket', msg: 'Websocket Server Heartbeat..' });
+ if (!eclWsClt.webSocketClient) {
+ return;
+ }
+ if (eclWsClt.webSocketClient.readyState !== 1) {
+ return;
+ }
+ eclWsClt.webSocketClient.ping();
+ setTimeout(() => {
+ this.heartbeat(eclWsClt);
+ }, 59 * 1000);
+ };
this.wsServer.eventEmitterECL.on('CONNECT', (nodeIndex) => {
this.connect(this.common.findNode(+nodeIndex));
});
diff --git a/backend/controllers/lnd/channels.js b/backend/controllers/lnd/channels.js
index 21936d3f..55bb60d1 100644
--- a/backend/controllers/lnd/channels.js
+++ b/backend/controllers/lnd/channels.js
@@ -9,11 +9,11 @@ export const getAliasForChannel = (selNode, channel) => {
options.url = selNode.ln_server_url + '/v1/graph/node/' + pubkey;
return request(options).then((aliasBody) => {
logger.log({ selectedNode: selNode, level: 'DEBUG', fileName: 'Channels', msg: 'Alias Received', data: aliasBody.node.alias });
- channel.remote_alias = aliasBody.node.alias;
- return aliasBody.node.alias;
+ channel.remote_alias = aliasBody.node.alias && aliasBody.node.alias !== '' ? aliasBody.node.alias : aliasBody.node.pub_key.slice(0, 20);
+ return channel;
}).catch((err) => {
- channel.remote_alias = pubkey.slice(0, 10) + '...' + pubkey.slice(-10);
- return pubkey;
+ channel.remote_alias = pubkey.slice(0, 20);
+ return channel;
});
};
export const getAllChannels = (req, res, next) => {
@@ -28,17 +28,15 @@ export const getAllChannels = (req, res, next) => {
let remote = 0;
let total = 0;
request(options).then((body) => {
- var _a;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Channels', msg: 'Channels List Received', data: body });
if (body.channels) {
- return Promise.all((_a = body.channels) === null || _a === void 0 ? void 0 : _a.map((channel) => {
+ return Promise.all(body.channels?.map((channel) => {
local = (channel.local_balance) ? +channel.local_balance : 0;
remote = (channel.remote_balance) ? +channel.remote_balance : 0;
total = local + remote;
channel.balancedness = (total === 0) ? 1 : (1 - Math.abs((local - remote) / total)).toFixed(3);
return getAliasForChannel(req.session.selectedNode, channel);
})).then((values) => {
- body.channels = common.sortDescByKey(body.channels, 'balancedness');
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Sorted Channels List Received', data: body });
return res.status(200).json(body);
}).catch((errRes) => {
@@ -65,22 +63,21 @@ export const getPendingChannels = (req, res, next) => {
options.url = req.session.selectedNode.ln_server_url + '/v1/channels/pending';
options.qs = req.query;
request(options).then((body) => {
- var _a, _b, _c, _d;
if (!body.total_limbo_balance) {
body.total_limbo_balance = 0;
}
const promises = [];
if (body.pending_open_channels && body.pending_open_channels.length > 0) {
- (_a = body.pending_open_channels) === null || _a === void 0 ? void 0 : _a.map((channel) => promises.push(getAliasForChannel(req.session.selectedNode, channel.channel)));
- }
- if (body.pending_closing_channels && body.pending_closing_channels.length > 0) {
- (_b = body.pending_closing_channels) === null || _b === void 0 ? void 0 : _b.map((channel) => promises.push(getAliasForChannel(req.session.selectedNode, channel.channel)));
+ body.pending_open_channels?.map((channel) => promises.push(getAliasForChannel(req.session.selectedNode, channel.channel)));
}
if (body.pending_force_closing_channels && body.pending_force_closing_channels.length > 0) {
- (_c = body.pending_force_closing_channels) === null || _c === void 0 ? void 0 : _c.map((channel) => promises.push(getAliasForChannel(req.session.selectedNode, channel.channel)));
+ body.pending_force_closing_channels?.map((channel) => promises.push(getAliasForChannel(req.session.selectedNode, channel.channel)));
+ }
+ if (body.pending_closing_channels && body.pending_closing_channels.length > 0) {
+ body.pending_closing_channels?.map((channel) => promises.push(getAliasForChannel(req.session.selectedNode, channel.channel)));
}
if (body.waiting_close_channels && body.waiting_close_channels.length > 0) {
- (_d = body.waiting_close_channels) === null || _d === void 0 ? void 0 : _d.map((channel) => promises.push(getAliasForChannel(req.session.selectedNode, channel.channel)));
+ body.waiting_close_channels?.map((channel) => promises.push(getAliasForChannel(req.session.selectedNode, channel.channel)));
}
return Promise.all(promises).then((values) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Pending Channels List Received', data: body });
@@ -104,13 +101,11 @@ export const getClosedChannels = (req, res, next) => {
options.url = req.session.selectedNode.ln_server_url + '/v1/channels/closed';
options.qs = req.query;
request(options).then((body) => {
- var _a;
if (body.channels && body.channels.length > 0) {
- return Promise.all((_a = body.channels) === null || _a === void 0 ? void 0 : _a.map((channel) => {
+ return Promise.all(body.channels?.map((channel) => {
channel.close_type = (!channel.close_type) ? 'COOPERATIVE_CLOSE' : channel.close_type;
return getAliasForChannel(req.session.selectedNode, channel);
})).then((values) => {
- body.channels = common.sortDescByKey(body.channels, 'close_height');
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Closed Channels List Received', data: body });
return res.status(200).json(body);
}).catch((errRes) => {
@@ -161,7 +156,7 @@ export const postTransactions = (req, res, next) => {
if (options.error) {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
- options.url = req.session.selectedNode.ln_server_url + '/v1/channels/transactions';
+ options.url = req.session.selectedNode.ln_server_url + '/v1/channels/transaction-stream';
options.form = { payment_request: req.body.paymentReq };
if (req.body.paymentAmount) {
options.form.amt = req.body.paymentAmount;
@@ -181,6 +176,7 @@ export const postTransactions = (req, res, next) => {
options.form = JSON.stringify(options.form);
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Channels', msg: 'Send Payment Options', data: options.form });
request.post(options).then((body) => {
+ body = body.result ? body.result : body;
if (body.payment_error) {
const err = common.handleError(body.payment_error, 'Channels', 'Send Payment Error', req.session.selectedNode);
return res.status(err.statusCode).json({ message: err.message, error: err.error });
@@ -195,7 +191,6 @@ export const postTransactions = (req, res, next) => {
});
};
export const closeChannel = (req, res, next) => {
- var _a;
try {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Closing Channel..' });
if (!req.session.selectedNode) {
@@ -206,7 +201,7 @@ export const closeChannel = (req, res, next) => {
if (options.error) {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
- const channelpoint = (_a = req.params.channelPoint) === null || _a === void 0 ? void 0 : _a.replace(':', '/');
+ const channelpoint = req.params.channelPoint?.replace(':', '/');
options.url = req.session.selectedNode.ln_server_url + '/v1/channels/' + channelpoint + '?force=' + req.query.force;
if (req.query.target_conf) {
options.url = options.url + '&target_conf=' + req.query.target_conf;
diff --git a/backend/controllers/lnd/channelsBackup.js b/backend/controllers/lnd/channelsBackup.js
index 62f14d1f..489deb5f 100644
--- a/backend/controllers/lnd/channelsBackup.js
+++ b/backend/controllers/lnd/channelsBackup.js
@@ -16,13 +16,12 @@ function getFilesList(channelBackupPath, callback) {
}
if (files && files.length > 0) {
files.forEach((file) => {
- var _a;
if (!file.includes('.restored')) {
if (file.toLowerCase() === 'channel-all.bak' || file.toLowerCase() === 'backup-channel-all.bak') {
all_restore_exists = true;
}
else {
- files_list.push({ channel_point: (_a = file.substring(8, file.length - 4)) === null || _a === void 0 ? void 0 : _a.replace('-', ':') });
+ files_list.push({ channel_point: file.substring(8, file.length - 4)?.replace('-', ':') });
}
}
});
@@ -32,7 +31,6 @@ function getFilesList(channelBackupPath, callback) {
});
}
export const getBackup = (req, res, next) => {
- var _a, _b;
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'ChannelBackup', msg: 'Getting Channel Backup..' });
options = common.getOptions(req);
if (options.error) {
@@ -46,9 +44,9 @@ export const getBackup = (req, res, next) => {
options.url = req.session.selectedNode.ln_server_url + '/v1/channels/backup';
}
else {
- channel_backup_file = req.session.selectedNode.channel_backup_path + sep + 'channel-' + ((_a = req.params.channelPoint) === null || _a === void 0 ? void 0 : _a.replace(':', '-')) + '.bak';
+ channel_backup_file = req.session.selectedNode.channel_backup_path + sep + 'channel-' + req.params.channelPoint?.replace(':', '-') + '.bak';
message = 'Channel Backup Successful.';
- const channelpoint = (_b = req.params.channelPoint) === null || _b === void 0 ? void 0 : _b.replace(':', '/');
+ const channelpoint = req.params.channelPoint?.replace(':', '/');
options.url = req.session.selectedNode.ln_server_url + '/v1/channels/backup/' + channelpoint;
const exists = fs.existsSync(channel_backup_file);
if (exists) {
@@ -83,7 +81,6 @@ export const getBackup = (req, res, next) => {
});
};
export const postBackupVerify = (req, res, next) => {
- var _a;
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'ChannelBackup', msg: 'Verifying Channel Backup..' });
options = common.getOptions(req);
if (options.error) {
@@ -119,7 +116,7 @@ export const postBackupVerify = (req, res, next) => {
}
else {
message = 'Channel Verify Successful.';
- channel_verify_file = req.session.selectedNode.channel_backup_path + sep + 'channel-' + ((_a = req.params.channelPoint) === null || _a === void 0 ? void 0 : _a.replace(':', '-')) + '.bak';
+ channel_verify_file = req.session.selectedNode.channel_backup_path + sep + 'channel-' + req.params.channelPoint?.replace(':', '-') + '.bak';
const exists = fs.existsSync(channel_verify_file);
if (exists) {
verify_backup = fs.readFileSync(channel_verify_file, 'utf-8');
@@ -144,7 +141,6 @@ export const postBackupVerify = (req, res, next) => {
}
};
export const postRestore = (req, res, next) => {
- var _a;
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'ChannelBackup', msg: 'Restoring Channel Backup..' });
options = common.getOptions(req);
if (options.error) {
@@ -192,7 +188,7 @@ export const postRestore = (req, res, next) => {
}
else {
message = 'Channel Restore Successful.';
- channel_restore_file = req.session.selectedNode.channel_backup_path + sep + 'restore' + sep + 'channel-' + ((_a = req.params.channelPoint) === null || _a === void 0 ? void 0 : _a.replace(':', '-')) + '.bak';
+ channel_restore_file = req.session.selectedNode.channel_backup_path + sep + 'restore' + sep + 'channel-' + req.params.channelPoint?.replace(':', '-') + '.bak';
const exists = fs.existsSync(channel_restore_file);
if (exists) {
restore_backup = fs.readFileSync(channel_restore_file, 'utf-8');
diff --git a/backend/controllers/lnd/fees.js b/backend/controllers/lnd/fees.js
index 9176484d..68766789 100644
--- a/backend/controllers/lnd/fees.js
+++ b/backend/controllers/lnd/fees.js
@@ -21,11 +21,10 @@ export const getFees = (req, res, next) => {
const week_start_time = current_time - 604800;
const day_start_time = current_time - 86400;
return getAllForwardingEvents(req, month_start_time, current_time, 0, 'fees', (history) => {
- var _a, _b, _c;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Fees', msg: 'Forwarding History Received', data: history });
- const daily_sum = (_a = history.forwarding_events) === null || _a === void 0 ? void 0 : _a.reduce((acc, curr) => ((curr.timestamp >= day_start_time) ? [(acc[0] + 1), (acc[1] + +curr.fee_msat)] : acc), [0, 0]);
- const weekly_sum = (_b = history.forwarding_events) === null || _b === void 0 ? void 0 : _b.reduce((acc, curr) => ((curr.timestamp >= week_start_time) ? [(acc[0] + 1), (acc[1] + +curr.fee_msat)] : acc), [0, 0]);
- const monthly_sum = (_c = history.forwarding_events) === null || _c === void 0 ? void 0 : _c.reduce((acc, curr) => [(acc[0] + 1), (acc[1] + +curr.fee_msat)], [0, 0]);
+ const daily_sum = history.forwarding_events?.reduce((acc, curr) => ((curr.timestamp >= day_start_time) ? [(acc[0] + 1), (acc[1] + +curr.fee_msat)] : acc), [0, 0]);
+ const weekly_sum = history.forwarding_events?.reduce((acc, curr) => ((curr.timestamp >= week_start_time) ? [(acc[0] + 1), (acc[1] + +curr.fee_msat)] : acc), [0, 0]);
+ const monthly_sum = history.forwarding_events?.reduce((acc, curr) => [(acc[0] + 1), (acc[1] + +curr.fee_msat)], [0, 0]);
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Fees', msg: 'Daily Sum (Transactions, Fee)', data: daily_sum });
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Fees', msg: 'Weekly Sum (Transactions, Fee)', data: weekly_sum });
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Fees', msg: 'Monthly Sum (Transactions, Fee)', data: monthly_sum });
diff --git a/backend/controllers/lnd/getInfo.js b/backend/controllers/lnd/getInfo.js
index ef899516..b34c1800 100644
--- a/backend/controllers/lnd/getInfo.js
+++ b/backend/controllers/lnd/getInfo.js
@@ -9,7 +9,6 @@ const common = Common;
const lndWsClient = LNDWSClient;
const databaseService = Database;
export const getInfo = (req, res, next) => {
- var _a;
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Getting LND Node Information..' });
common.logEnvVariables(req);
common.setOptions(req);
@@ -26,7 +25,7 @@ export const getInfo = (req, res, next) => {
return res.status(err.statusCode).json({ message: err.message, error: err.error });
}
else {
- (_a = common.nodes) === null || _a === void 0 ? void 0 : _a.map((node) => {
+ common.nodes?.map((node) => {
if (node.ln_implementation === 'LND') {
common.getAllNodeAllChannelBackup(node);
}
@@ -45,7 +44,7 @@ export const getInfo = (req, res, next) => {
else {
req.session.selectedNode.ln_version = body.version.split('-')[0] || '';
lndWsClient.updateSelectedNode(req.session.selectedNode);
- databaseService.loadDatabase(req.session.selectedNode);
+ databaseService.loadDatabase(req.session);
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'GetInfo', msg: 'Node Information Received', data: body });
return res.status(200).json(body);
}
diff --git a/backend/controllers/lnd/graph.js b/backend/controllers/lnd/graph.js
index a0ea466d..37f99221 100644
--- a/backend/controllers/lnd/graph.js
+++ b/backend/controllers/lnd/graph.js
@@ -10,7 +10,7 @@ export const getAliasFromPubkey = (selNode, pubkey) => {
logger.log({ selectedNode: selNode, level: 'DEBUG', fileName: 'Graph', msg: 'Alias Received', data: res.node.alias });
return res.node.alias;
}).
- catch((err) => pubkey.substring(0, 17) + '...');
+ catch((err) => pubkey.substring(0, 20));
};
export const getDescribeGraph = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Graph', msg: 'Getting Network Graph..' });
@@ -84,13 +84,11 @@ export const getQueryRoutes = (req, res, next) => {
}
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Graph', msg: 'Query Routes URL', data: options.url });
request(options).then((body) => {
- var _a;
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Graph', msg: 'Query Routes Received', data: body });
if (body.routes && body.routes.length && body.routes.length > 0 && body.routes[0].hops && body.routes[0].hops.length && body.routes[0].hops.length > 0) {
- return Promise.all((_a = body.routes[0].hops) === null || _a === void 0 ? void 0 : _a.map((hop) => getAliasFromPubkey(req.session.selectedNode, hop.pub_key))).
+ return Promise.all(body.routes[0].hops?.map((hop) => getAliasFromPubkey(req.session.selectedNode, hop.pub_key))).
then((values) => {
- var _a;
- (_a = body.routes[0].hops) === null || _a === void 0 ? void 0 : _a.map((hop, i) => {
+ body.routes[0].hops?.map((hop, i) => {
hop.hop_sequence = i + 1;
hop.pubkey_alias = values[i];
return hop;
@@ -150,7 +148,7 @@ export const getAliasesForPubkeys = (req, res, next) => {
}
if (req.query.pubkeys) {
const pubkeyArr = req.query.pubkeys.split(',');
- return Promise.all(pubkeyArr === null || pubkeyArr === void 0 ? void 0 : pubkeyArr.map((pubkey) => getAliasFromPubkey(req.session.selectedNode, pubkey))).
+ return Promise.all(pubkeyArr?.map((pubkey) => getAliasFromPubkey(req.session.selectedNode, pubkey))).
then((values) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Graph', msg: 'Node Alias', data: values });
res.status(200).json(values);
diff --git a/backend/controllers/lnd/invoices.js b/backend/controllers/lnd/invoices.js
index 2823d053..433f398e 100644
--- a/backend/controllers/lnd/invoices.js
+++ b/backend/controllers/lnd/invoices.js
@@ -46,7 +46,6 @@ export const listInvoices = (req, res, next) => {
invoice.r_hash = invoice.r_hash ? Buffer.from(invoice.r_hash, 'base64').toString('hex') : '';
invoice.description_hash = invoice.description_hash ? Buffer.from(invoice.description_hash, 'base64').toString('hex') : null;
});
- body.invoices = common.sortDescByKey(body.invoices, 'creation_date');
}
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoice', msg: 'Sorted Invoices List Received', data: body });
res.status(200).json(body);
@@ -62,18 +61,7 @@ export const addInvoice = (req, res, next) => {
return res.status(options.statusCode).json({ message: options.message, error: options.error });
}
options.url = req.session.selectedNode.ln_server_url + '/v1/invoices';
- options.form = {
- memo: req.body.memo,
- private: req.body.private,
- expiry: req.body.expiry
- };
- if (req.body.amount > 0 && req.body.amount < 1) {
- options.form.value_msat = req.body.amount * 1000;
- }
- else {
- options.form.value = req.body.amount;
- }
- options.form = JSON.stringify(options.form);
+ options.form = JSON.stringify(req.body);
request.post(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Invoice', msg: 'Invoice Added', data: body });
try {
diff --git a/backend/controllers/lnd/payments.js b/backend/controllers/lnd/payments.js
index 6bfca966..1e34ce95 100644
--- a/backend/controllers/lnd/payments.js
+++ b/backend/controllers/lnd/payments.js
@@ -34,7 +34,7 @@ export const decodePayments = (req, res, next) => {
}
if (req.body.payments) {
const paymentsArr = req.body.payments.split(',');
- return Promise.all(paymentsArr === null || paymentsArr === void 0 ? void 0 : paymentsArr.map((payment) => decodePaymentFromPaymentRequest(req.session.selectedNode, payment))).
+ return Promise.all(paymentsArr?.map((payment) => decodePaymentFromPaymentRequest(req.session.selectedNode, payment))).
then((values) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'PayRequest', msg: 'Payment List Decoded', data: values });
res.status(200).json(values);
@@ -58,10 +58,6 @@ export const getPayments = (req, res, next) => {
options.url = req.session.selectedNode.ln_server_url + '/v1/payments?max_payments=' + req.query.max_payments + '&index_offset=' + req.query.index_offset + '&reversed=' + req.query.reversed;
request(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Payments', msg: 'Payment List Received', data: body });
- if (body.payments && body.payments.length > 0) {
- body.payments = common.sortDescByKey(body.payments, 'creation_date');
- }
- logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Payments', msg: 'Sorted Payments List Received', data: body });
res.status(200).json(body);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Payments', 'List Payments Error', req.session.selectedNode);
diff --git a/backend/controllers/lnd/peers.js b/backend/controllers/lnd/peers.js
index fb905eab..9920860a 100644
--- a/backend/controllers/lnd/peers.js
+++ b/backend/controllers/lnd/peers.js
@@ -11,7 +11,7 @@ export const getAliasForPeers = (selNode, peer) => {
peer.alias = aliasBody.node.alias;
return aliasBody.node.alias;
}).catch((err) => {
- peer.alias = peer.pub_key.slice(0, 10) + '...' + peer.pub_key.slice(-10);
+ peer.alias = peer.pub_key.slice(0, 20);
return peer.pub_key;
});
};
@@ -25,11 +25,7 @@ export const getPeers = (req, res, next) => {
request(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Peers', msg: 'Peers List Received', data: body });
const peers = !body.peers ? [] : body.peers;
- return Promise.all(peers === null || peers === void 0 ? void 0 : peers.map((peer) => getAliasForPeers(req.session.selectedNode, peer))).then((values) => {
- logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Peers', msg: 'Peers with Alias before Sort', data: body });
- if (body.peers) {
- body.peers = common.sortDescByStrKey(body.peers, 'alias');
- }
+ return Promise.all(peers?.map((peer) => getAliasForPeers(req.session.selectedNode, peer))).then((values) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Sorted Peers List Received', data: body.peers });
res.status(200).json(body.peers);
});
@@ -54,9 +50,8 @@ export const postPeer = (req, res, next) => {
options.url = req.session.selectedNode.ln_server_url + '/v1/peers';
request(options).then((body) => {
const peers = (!body.peers) ? [] : body.peers;
- return Promise.all(peers === null || peers === void 0 ? void 0 : peers.map((peer) => getAliasForPeers(req.session.selectedNode, peer))).then((values) => {
+ return Promise.all(peers?.map((peer) => getAliasForPeers(req.session.selectedNode, peer))).then((values) => {
if (body.peers) {
- body.peers = common.sortDescByStrKey(body.peers, 'alias');
body.peers = common.newestOnTop(body.peers, 'pub_key', req.body.pubkey);
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peers List after Connect Received', data: body });
}
diff --git a/backend/controllers/lnd/switch.js b/backend/controllers/lnd/switch.js
index 51827f41..fb16f1d4 100644
--- a/backend/controllers/lnd/switch.js
+++ b/backend/controllers/lnd/switch.js
@@ -46,9 +46,6 @@ export const getAllForwardingEvents = (req, start, end, offset, caller, callback
}
if (!body.last_offset_index || body.last_offset_index < offset + num_max_events) {
responseData[caller].last_offset_index = body.last_offset_index ? body.last_offset_index : 0;
- if (responseData[caller].forwarding_events) {
- responseData[caller].forwarding_events = common.sortDescByKey(responseData[caller].forwarding_events, 'timestamp');
- }
return callback(responseData[caller]);
}
else {
diff --git a/backend/controllers/lnd/transactions.js b/backend/controllers/lnd/transactions.js
index 8c42775b..0b4684d8 100644
--- a/backend/controllers/lnd/transactions.js
+++ b/backend/controllers/lnd/transactions.js
@@ -13,10 +13,6 @@ export const getTransactions = (req, res, next) => {
options.url = req.session.selectedNode.ln_server_url + '/v1/transactions';
request(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Transactions', msg: 'Transactions List Received', data: body });
- if (body.transactions && body.transactions.length > 0) {
- body.transactions = common.sortDescByKey(body.transactions, 'time_stamp');
- }
- logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Transactions', msg: 'Sorted Transactions List Received', data: body.transactions });
res.status(200).json(body.transactions);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Transactions', 'List Transactions Error', req.session.selectedNode);
diff --git a/backend/controllers/lnd/webSocketClient.js b/backend/controllers/lnd/webSocketClient.js
index b307a27a..450eb2b3 100644
--- a/backend/controllers/lnd/webSocketClient.js
+++ b/backend/controllers/lnd/webSocketClient.js
@@ -42,8 +42,7 @@ export class LNDWebSocketClient {
});
};
this.subscribeToInvoice = (options, selectedNode, rHash) => {
- var _a;
- rHash = (_a = rHash === null || rHash === void 0 ? void 0 : rHash.replace(/\+/g, '-')) === null || _a === void 0 ? void 0 : _a.replace(/[/]/g, '_');
+ rHash = rHash?.replace(/\+/g, '-')?.replace(/[/]/g, '_');
this.logger.log({ selectedNode: selectedNode, level: 'INFO', fileName: 'WebSocketClient', msg: 'Subscribing to Invoice ' + rHash + ' ..' });
options.url = selectedNode.ln_server_url + '/v2/invoices/subscribe/' + rHash;
request(options).then((msg) => {
diff --git a/backend/controllers/shared/RTLConf.js b/backend/controllers/shared/RTLConf.js
index c42dd329..973752cd 100644
--- a/backend/controllers/shared/RTLConf.js
+++ b/backend/controllers/shared/RTLConf.js
@@ -19,7 +19,7 @@ export const updateSelectedNode = (req, res, next) => {
if (req.headers && req.headers.authorization && req.headers.authorization !== '') {
wsServer.updateLNWSClientDetails(req.session.id, +req.session.selectedNode.index, +req.params.prevNodeIndex);
if (req.params.prevNodeIndex !== -1) {
- databaseService.unloadDatabase(req.params.prevNodeIndex);
+ databaseService.unloadDatabase(req.params.prevNodeIndex, req.session.id);
}
}
const responseVal = !req.session.selectedNode.ln_node ? '' : req.session.selectedNode.ln_node;
@@ -49,10 +49,11 @@ export const getRTLConfigInitial = (req, res, next) => {
const nodesArr = [];
if (common.nodes && common.nodes.length > 0) {
common.nodes.forEach((node, i) => {
- const settings = {};
+ const settings = { unannouncedChannels: false };
settings.userPersona = node.user_persona ? node.user_persona : 'MERCHANT';
settings.themeMode = (node.theme_mode) ? node.theme_mode : 'DAY';
settings.themeColor = (node.theme_color) ? node.theme_color : 'PURPLE';
+ settings.unannouncedChannels = !!node.unannounced_channels || false;
settings.fiatConversion = (node.fiat_conversion) ? !!node.fiat_conversion : false;
settings.currencyUnit = node.currency_unit;
nodesArr.push({
@@ -97,10 +98,11 @@ export const getRTLConfig = (req, res, next) => {
authentication.configPath = (node.config_path) ? node.config_path : '';
authentication.swapMacaroonPath = (node.swap_macaroon_path) ? node.swap_macaroon_path : '';
authentication.boltzMacaroonPath = (node.boltz_macaroon_path) ? node.boltz_macaroon_path : '';
- const settings = {};
+ const settings = { unannouncedChannels: false };
settings.userPersona = node.user_persona ? node.user_persona : 'MERCHANT';
settings.themeMode = (node.theme_mode) ? node.theme_mode : 'DAY';
settings.themeColor = (node.theme_color) ? node.theme_color : 'PURPLE';
+ settings.unannouncedChannels = !!node.unannounced_channels || false;
settings.fiatConversion = (node.fiat_conversion) ? !!node.fiat_conversion : false;
settings.bitcoindConfigPath = node.bitcoind_config_path;
settings.logLevel = node.log_level ? node.log_level : 'ERROR';
@@ -135,6 +137,7 @@ export const updateUISettings = (req, res, next) => {
node.Settings.userPersona = req.body.updatedSettings.userPersona;
node.Settings.themeMode = req.body.updatedSettings.themeMode;
node.Settings.themeColor = req.body.updatedSettings.themeColor;
+ node.Settings.unannouncedChannels = req.body.updatedSettings.unannouncedChannels;
node.Settings.fiatConversion = req.body.updatedSettings.fiatConversion;
if (req.body.updatedSettings.fiatConversion) {
node.Settings.currencyUnit = req.body.updatedSettings.currencyUnit ? req.body.updatedSettings.currencyUnit : 'USD';
@@ -146,6 +149,7 @@ export const updateUISettings = (req, res, next) => {
selectedNode.user_persona = req.body.updatedSettings.userPersona;
selectedNode.theme_mode = req.body.updatedSettings.themeMode;
selectedNode.theme_color = req.body.updatedSettings.themeColor;
+ selectedNode.unannounced_channels = req.body.updatedSettings.unannouncedChannels;
selectedNode.fiat_conversion = req.body.updatedSettings.fiatConversion;
if (req.body.updatedSettings.fiatConversion) {
selectedNode.currency_unit = req.body.updatedSettings.currencyUnit ? req.body.updatedSettings.currencyUnit : 'USD';
@@ -227,7 +231,6 @@ export const getConfig = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'RTLConf', msg: 'Node Type', data: req.params.nodeType });
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'RTLConf', msg: 'File Path', data: confFile });
fs.readFile(confFile, 'utf8', (errRes, data) => {
- var _a;
if (errRes) {
const errMsg = 'Reading Config Error';
const err = common.handleError({ statusCode: 500, message: errMsg, error: errRes }, 'RTLConf', errMsg, req.session.selectedNode);
@@ -240,27 +243,26 @@ export const getConfig = (req, res, next) => {
}
else {
fileFormat = 'INI';
- data = data === null || data === void 0 ? void 0 : data.replace('color=#', 'color=');
+ data = data?.replace('color=#', 'color=');
jsonConfig = ini.parse(data);
if (jsonConfig['Application Options'] && jsonConfig['Application Options'].color) {
jsonConfig['Application Options'].color = '#' + jsonConfig['Application Options'].color;
}
- if (req.session.selectedNode.ln_implementation === 'ECL' && !jsonConfig['eclair.api.password']) {
+ if (req.params.nodeType === 'ln' && req.session.selectedNode.ln_implementation === 'ECL' && !jsonConfig['eclair.api.password']) {
fileFormat = 'HOCON';
jsonConfig = parseHocon(data);
}
}
jsonConfig = maskPasswords(jsonConfig);
- const responseJSON = (fileFormat === 'JSON') ? jsonConfig : (_a = ini.stringify(jsonConfig)) === null || _a === void 0 ? void 0 : _a.replace('color=\\#', 'color=#');
+ const responseJSON = (fileFormat === 'JSON') ? jsonConfig : ini.stringify(jsonConfig)?.replace('color=\\#', 'color=#');
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'RTLConf', msg: 'Configuration File Data Received', data: responseJSON });
res.status(200).json({ format: fileFormat, data: responseJSON });
}
});
};
export const getFile = (req, res, next) => {
- var _a;
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'RTLConf', msg: 'Getting File..' });
- const file = req.query.path ? req.query.path : (req.session.selectedNode.channel_backup_path + sep + 'channel-' + ((_a = req.query.channel) === null || _a === void 0 ? void 0 : _a.replace(':', '-')) + '.bak');
+ const file = req.query.path ? req.query.path : (req.session.selectedNode.channel_backup_path + sep + 'channel-' + req.query.channel?.replace(':', '-') + '.bak');
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'RTLConf', msg: 'Channel Point', data: req.query.channel });
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'RTLConf', msg: 'File Path', data: file });
fs.readFile(file, 'utf8', (errRes, data) => {
@@ -379,7 +381,8 @@ export const maskPasswords = (obj) => {
}
if (typeof keys[i] === 'string' &&
(keys[i].toLowerCase().includes('password') || keys[i].toLowerCase().includes('multipass') ||
- keys[i].toLowerCase().includes('rpcpass') || keys[i].toLowerCase().includes('rpcpassword'))) {
+ keys[i].toLowerCase().includes('rpcpass') || keys[i].toLowerCase().includes('rpcpassword') ||
+ keys[i].toLowerCase().includes('rpcuser'))) {
obj[keys[i]] = '********************';
}
}
diff --git a/backend/controllers/shared/authenticate.js b/backend/controllers/shared/authenticate.js
index 6be207a9..ff5e71ad 100644
--- a/backend/controllers/shared/authenticate.js
+++ b/backend/controllers/shared/authenticate.js
@@ -124,7 +124,7 @@ export const resetPassword = (req, res, next) => {
export const logoutUser = (req, res, next) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Authenticate', msg: 'Logged out' });
if (req.session.selectedNode && req.session.selectedNode.index) {
- databaseService.unloadDatabase(+req.session.selectedNode.index);
+ databaseService.unloadDatabase(+req.session.selectedNode.index, req.session.id);
}
req.session.destroy((err) => {
res.clearCookie('connect.sid');
diff --git a/backend/controllers/shared/loop.js b/backend/controllers/shared/loop.js
index 2fd33b3d..290817fb 100644
--- a/backend/controllers/shared/loop.js
+++ b/backend/controllers/shared/loop.js
@@ -216,10 +216,6 @@ export const swaps = (req, res, next) => {
options.url = options.url + '/v1/loop/swaps';
request(options).then((body) => {
logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Loop', msg: 'Loop Swaps Received', data: body });
- if (body.swaps && body.swaps.length > 0) {
- body.swaps = common.sortDescByKey(body.swaps, 'initiation_time');
- logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Loop', msg: 'Sorted Loop Swaps List Received', data: body });
- }
res.status(200).json(body.swaps);
}).catch((errRes) => {
const err = common.handleError(errRes, 'Loop', 'List Swaps Error', req.session.selectedNode);
diff --git a/backend/controllers/shared/pageSettings.js b/backend/controllers/shared/pageSettings.js
new file mode 100644
index 00000000..9ded7b70
--- /dev/null
+++ b/backend/controllers/shared/pageSettings.js
@@ -0,0 +1,33 @@
+import { Database } from '../../utils/database.js';
+import { Logger } from '../../utils/logger.js';
+import { Common } from '../../utils/common.js';
+import { CollectionsEnum } from '../../models/database.model.js';
+const logger = Logger;
+const common = Common;
+const databaseService = Database;
+export const getPageSettings = (req, res, next) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Page Settings', msg: 'Getting Page Settings..' });
+ databaseService.find(req.session.selectedNode, CollectionsEnum.PAGE_SETTINGS).then((settings) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Page Settings', msg: 'Page Settings Received', data: settings });
+ res.status(200).json(settings);
+ }).catch((errRes) => {
+ const err = common.handleError(errRes, 'Page Settings', 'Page Settings Error', req.session.selectedNode);
+ return res.status(err.statusCode).json({ message: err.message, error: err.error });
+ });
+};
+export const savePageSettings = (req, res, next) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Page Settings', msg: 'Saving Page Settings..' });
+ // eslint-disable-next-line arrow-body-style
+ return Promise.all(req.body.map((page) => databaseService.validateDocument(CollectionsEnum.PAGE_SETTINGS, page))).then((values) => {
+ return databaseService.insert(req.session.selectedNode, CollectionsEnum.PAGE_SETTINGS, req.body).then((insertRes) => {
+ logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Page Settings', msg: 'Page Settings Updated', data: insertRes });
+ res.status(201).json(insertRes);
+ }).catch((insertErrRes) => {
+ const err = common.handleError(insertErrRes, 'Page Settings', 'Page Settings Update Error', req.session.selectedNode);
+ return res.status(err.statusCode).json({ message: err.message, error: err.error });
+ });
+ }).catch((errRes) => {
+ const err = common.handleError(errRes, 'Page Settings', 'Page Settings Validation Error', req.session.selectedNode);
+ return res.status(err.statusCode).json({ message: err.message, error: err.error });
+ });
+};
diff --git a/backend/models/config.model.js b/backend/models/config.model.js
index f1911ec6..78cb9cfb 100644
--- a/backend/models/config.model.js
+++ b/backend/models/config.model.js
@@ -1,5 +1,5 @@
export class CommonSelectedNode {
- constructor(options, ln_server_url, macaroon_path, ln_api_password, swap_server_url, boltz_server_url, config_path, rtl_conf_file_path, swap_macaroon_path, boltz_macaroon_path, bitcoind_config_path, channel_backup_path, log_level, log_file, index, ln_node, ln_implementation, user_persona, theme_mode, theme_color, fiat_conversion, currency_unit, ln_version, api_version, enable_offers, enable_peerswap) {
+ constructor(options, ln_server_url, macaroon_path, ln_api_password, swap_server_url, boltz_server_url, config_path, rtl_conf_file_path, swap_macaroon_path, boltz_macaroon_path, bitcoind_config_path, channel_backup_path, log_level, log_file, index, ln_node, ln_implementation, user_persona, theme_mode, theme_color, unannounced_channels, fiat_conversion, currency_unit, ln_version, api_version, enable_offers, enable_peerswap) {
this.options = options;
this.ln_server_url = ln_server_url;
this.macaroon_path = macaroon_path;
@@ -20,6 +20,7 @@ export class CommonSelectedNode {
this.user_persona = user_persona;
this.theme_mode = theme_mode;
this.theme_color = theme_color;
+ this.unannounced_channels = unannounced_channels;
this.fiat_conversion = fiat_conversion;
this.currency_unit = currency_unit;
this.ln_version = ln_version;
@@ -36,10 +37,11 @@ export class AuthenticationConfiguration {
}
}
export class NodeSettingsConfiguration {
- constructor(userPersona, themeMode, themeColor, fiatConversion, currencyUnit, bitcoindConfigPath, logLevel, lnServerUrl, swapServerUrl, boltzServerUrl, channelBackupPath, enableOffers, enablePeerswap) {
+ constructor(userPersona, themeMode, themeColor, unannouncedChannels, fiatConversion, currencyUnit, bitcoindConfigPath, logLevel, lnServerUrl, swapServerUrl, boltzServerUrl, channelBackupPath, enableOffers, enablePeerswap) {
this.userPersona = userPersona;
this.themeMode = themeMode;
this.themeColor = themeColor;
+ this.unannouncedChannels = unannouncedChannels;
this.fiatConversion = fiatConversion;
this.currencyUnit = currencyUnit;
this.bitcoindConfigPath = bitcoindConfigPath;
diff --git a/backend/models/database.model.js b/backend/models/database.model.js
index 0ae353ca..6947b973 100644
--- a/backend/models/database.model.js
+++ b/backend/models/database.model.js
@@ -1,38 +1,139 @@
-export var CollectionsEnum;
-(function (CollectionsEnum) {
- CollectionsEnum["OFFERS"] = "Offers";
-})(CollectionsEnum || (CollectionsEnum = {}));
export var OfferFieldsEnum;
(function (OfferFieldsEnum) {
OfferFieldsEnum["BOLT12"] = "bolt12";
- OfferFieldsEnum["AMOUNTMSAT"] = "amountmSat";
+ OfferFieldsEnum["AMOUNTMSAT"] = "amountMSat";
OfferFieldsEnum["TITLE"] = "title";
- OfferFieldsEnum["VENDOR"] = "vendor";
+ OfferFieldsEnum["ISSUER"] = "issuer";
OfferFieldsEnum["DESCRIPTION"] = "description";
})(OfferFieldsEnum || (OfferFieldsEnum = {}));
-export const CollectionFieldsEnum = Object.assign({}, OfferFieldsEnum);
export class Offer {
- constructor(bolt12, amountmSat, title, vendor, description, lastUpdatedAt) {
+ constructor(bolt12, amountMSat, title, issuer, description, lastUpdatedAt) {
this.bolt12 = bolt12;
- this.amountmSat = amountmSat;
+ this.amountMSat = amountMSat;
this.title = title;
- this.vendor = vendor;
+ this.issuer = issuer;
this.description = description;
this.lastUpdatedAt = lastUpdatedAt;
}
}
+export const validateDocument = (collectionName, documentToValidate) => {
+ switch (collectionName) {
+ case CollectionsEnum.OFFERS:
+ return validateOffer(documentToValidate);
+ case CollectionsEnum.PAGE_SETTINGS:
+ return validatePageSettings(documentToValidate);
+ default:
+ return ({ isValid: false, error: 'Collection does not exist' });
+ }
+};
export const validateOffer = (documentToValidate) => {
if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.BOLT12)) {
- return ({ isValid: false, error: CollectionFieldsEnum.BOLT12 + 'is mandatory.' });
+ return ({ isValid: false, error: 'Bolt12 is mandatory.' });
}
if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.AMOUNTMSAT)) {
- return ({ isValid: false, error: CollectionFieldsEnum.AMOUNTMSAT + 'is mandatory.' });
+ return ({ isValid: false, error: 'Amount mSat is mandatory.' });
}
if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.TITLE)) {
- return ({ isValid: false, error: CollectionFieldsEnum.TITLE + 'is mandatory.' });
+ return ({ isValid: false, error: 'Title is mandatory.' });
}
if ((typeof documentToValidate[CollectionFieldsEnum.AMOUNTMSAT] !== 'number')) {
- return ({ isValid: false, error: CollectionFieldsEnum.AMOUNTMSAT + 'should be a number.' });
+ return ({ isValid: false, error: 'Amount mSat should be a number.' });
}
return ({ isValid: true });
};
+export var SortOrderEnum;
+(function (SortOrderEnum) {
+ SortOrderEnum["ASCENDING"] = "asc";
+ SortOrderEnum["DESCENDING"] = "desc";
+})(SortOrderEnum || (SortOrderEnum = {}));
+export var PageSettingsFieldsEnum;
+(function (PageSettingsFieldsEnum) {
+ PageSettingsFieldsEnum["PAGE_ID"] = "pageId";
+ PageSettingsFieldsEnum["TABLES"] = "tables";
+})(PageSettingsFieldsEnum || (PageSettingsFieldsEnum = {}));
+export var TableSettingsFieldsEnum;
+(function (TableSettingsFieldsEnum) {
+ TableSettingsFieldsEnum["TABLE_ID"] = "tableId";
+ TableSettingsFieldsEnum["RECORDS_PER_PAGE"] = "recordsPerPage";
+ TableSettingsFieldsEnum["SORT_BY"] = "sortBy";
+ TableSettingsFieldsEnum["SORT_ORDER"] = "sortOrder";
+ TableSettingsFieldsEnum["COLUMN_SELECTION"] = "columnSelection";
+ TableSettingsFieldsEnum["COLUMN_SELECTION_SM"] = "columnSelectionSM";
+})(TableSettingsFieldsEnum || (TableSettingsFieldsEnum = {}));
+export class TableSetting {
+ constructor(tableId, recordsPerPage, sortBy, sortOrder, columnSelection) {
+ this.tableId = tableId;
+ this.recordsPerPage = recordsPerPage;
+ this.sortBy = sortBy;
+ this.sortOrder = sortOrder;
+ this.columnSelection = columnSelection;
+ }
+}
+export class PageSettings {
+ constructor(pageId, tables) {
+ this.pageId = pageId;
+ this.tables = tables;
+ }
+}
+export const validatePageSettings = (documentToValidate) => {
+ let errorMessages = '';
+ if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.PAGE_ID)) {
+ errorMessages = errorMessages + 'Page ID is mandatory.';
+ }
+ if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.TABLES)) {
+ errorMessages = errorMessages + 'Tables is mandatory.';
+ }
+ const tablesMessages = documentToValidate.tables.reduce((tableAcc, table, tableIdx) => {
+ let errMsg = '';
+ if (!table.hasOwnProperty(CollectionFieldsEnum.TABLE_ID)) {
+ errMsg = errMsg + 'Table ID is mandatory.';
+ }
+ if (!table.hasOwnProperty(CollectionFieldsEnum.SORT_BY)) {
+ errMsg = errMsg + 'Sort By is mandatory.';
+ }
+ if (!table.hasOwnProperty(CollectionFieldsEnum.SORT_ORDER)) {
+ errMsg = errMsg + 'Sort Order is mandatory.';
+ }
+ if (!table.hasOwnProperty(CollectionFieldsEnum.COLUMN_SELECTION_SM)) {
+ errMsg = errMsg + 'Column Selection (Mobile Resolution) is mandatory.';
+ }
+ if (table[CollectionFieldsEnum.COLUMN_SELECTION_SM].length < 1) {
+ errMsg = errMsg + 'Column Selection (Mobile Resolution) should have at least 1 field.';
+ }
+ if (table[CollectionFieldsEnum.COLUMN_SELECTION_SM].length > 3) {
+ errMsg = errMsg + 'Column Selection (Mobile Resolution) should have maximum 3 fields.';
+ }
+ if (!table.hasOwnProperty(CollectionFieldsEnum.COLUMN_SELECTION)) {
+ errMsg = errMsg + 'Column Selection (Desktop Resolution) is mandatory.';
+ }
+ if (table[CollectionFieldsEnum.COLUMN_SELECTION].length < 2) {
+ errMsg = errMsg + 'Column Selection (Desktop Resolution) should have at least 2 fields.';
+ }
+ if (errMsg.trim() !== '') {
+ tableAcc.push({ table: (table.hasOwnProperty(CollectionFieldsEnum.TABLE_ID) ? table[CollectionFieldsEnum.TABLE_ID] : (tableIdx + 1)), message: errMsg });
+ }
+ return tableAcc;
+ }, []);
+ if (errorMessages.trim() === '' && tablesMessages.length === 0) {
+ return ({ isValid: true });
+ }
+ else {
+ const errObj = { page: (documentToValidate.hasOwnProperty(CollectionFieldsEnum.PAGE_ID) ? documentToValidate[CollectionFieldsEnum.PAGE_ID] : 'Unknown') };
+ if (errorMessages.trim() !== '') {
+ errObj['message'] = errorMessages;
+ }
+ if (tablesMessages.length && tablesMessages.length > 0) {
+ errObj['tables'] = tablesMessages;
+ }
+ return ({ isValid: false, error: JSON.stringify(errObj) });
+ }
+};
+export var CollectionsEnum;
+(function (CollectionsEnum) {
+ CollectionsEnum["OFFERS"] = "Offers";
+ CollectionsEnum["PAGE_SETTINGS"] = "PageSettings";
+})(CollectionsEnum || (CollectionsEnum = {}));
+export const CollectionFieldsEnum = { ...OfferFieldsEnum, ...PageSettingsFieldsEnum, ...TableSettingsFieldsEnum };
+export const LNDCollection = [CollectionsEnum.PAGE_SETTINGS];
+export const ECLCollection = [CollectionsEnum.PAGE_SETTINGS];
+export const CLNCollection = [CollectionsEnum.PAGE_SETTINGS, CollectionsEnum.OFFERS];
diff --git a/backend/models/ecl.model.js b/backend/models/ecl.model.js
new file mode 100644
index 00000000..ed7c2931
--- /dev/null
+++ b/backend/models/ecl.model.js
@@ -0,0 +1,12 @@
+export var ECLWSEventsEnum;
+(function (ECLWSEventsEnum) {
+ ECLWSEventsEnum["PAY_RECEIVED"] = "payment-received";
+ ECLWSEventsEnum["PAY_RELAYED"] = "payment-relayed";
+ ECLWSEventsEnum["PAY_SENT"] = "payment-sent";
+ ECLWSEventsEnum["PAY_SETTLING_ONCHAIN"] = "payment-settling-onchain";
+ ECLWSEventsEnum["PAY_FAILED"] = "payment-failed";
+ ECLWSEventsEnum["CHANNEL_OPENED"] = "channel-opened";
+ ECLWSEventsEnum["CHANNEL_STATE_CHANGED"] = "channel-state-changed";
+ ECLWSEventsEnum["CHANNEL_CLOSED"] = "channel-closed";
+ ECLWSEventsEnum["ONION_MESSAGE_RECEIVED"] = "onion-message-received";
+})(ECLWSEventsEnum || (ECLWSEventsEnum = {}));
diff --git a/backend/routes/cln/channels.js b/backend/routes/cln/channels.js
index 8d02c384..0365a3c5 100644
--- a/backend/routes/cln/channels.js
+++ b/backend/routes/cln/channels.js
@@ -1,9 +1,10 @@
import exprs from 'express';
const { Router } = exprs;
import { isAuthenticated } from '../../utils/authCheck.js';
-import { listChannels, openChannel, setChannelFee, closeChannel, getLocalRemoteBalance, listForwards, funderUpdatePolicy, listForwardsPaginated } from '../../controllers/cln/channels.js';
+import { listChannels, listPeerChannels, openChannel, setChannelFee, closeChannel, getLocalRemoteBalance, listForwards, funderUpdatePolicy, listForwardsPaginated } from '../../controllers/cln/channels.js';
const router = Router();
router.get('/listChannels', isAuthenticated, listChannels);
+router.get('/listPeerChannels', isAuthenticated, listPeerChannels);
router.post('/', isAuthenticated, openChannel);
router.post('/setChannelFee', isAuthenticated, setChannelFee);
router.delete('/:channelId', isAuthenticated, closeChannel);
diff --git a/backend/routes/eclair/channels.js b/backend/routes/eclair/channels.js
index 1148b457..f445b72d 100644
--- a/backend/routes/eclair/channels.js
+++ b/backend/routes/eclair/channels.js
@@ -1,11 +1,12 @@
import exprs from 'express';
const { Router } = exprs;
import { isAuthenticated } from '../../utils/authCheck.js';
-import { getChannels, getChannelStats, openChannel, updateChannelRelayFee, closeChannel } from '../../controllers/eclair/channels.js';
+import { getChannels, getChannelStats, openChannel, updateChannelRelayFee, closeChannel, circularRebalance } from '../../controllers/eclair/channels.js';
const router = Router();
router.get('/', isAuthenticated, getChannels);
router.get('/stats', isAuthenticated, getChannelStats);
router.post('/', isAuthenticated, openChannel);
router.post('/updateRelayFee', isAuthenticated, updateChannelRelayFee);
+router.post('/circularRebalance', circularRebalance);
router.delete('/', isAuthenticated, closeChannel);
export default router;
diff --git a/backend/routes/eclair/network.js b/backend/routes/eclair/network.js
index 71179aac..55ec2070 100644
--- a/backend/routes/eclair/network.js
+++ b/backend/routes/eclair/network.js
@@ -1,7 +1,8 @@
import exprs from 'express';
const { Router } = exprs;
import { isAuthenticated } from '../../utils/authCheck.js';
-import { getNodes } from '../../controllers/eclair/network.js';
+import { getNodes, findRouteBetweenNodes } from '../../controllers/eclair/network.js';
const router = Router();
router.get('/nodes/:id', isAuthenticated, getNodes);
+router.get('/routebetweennodes', isAuthenticated, findRouteBetweenNodes);
export default router;
diff --git a/backend/routes/eclair/payments.js b/backend/routes/eclair/payments.js
index b60fda24..6c160a9b 100644
--- a/backend/routes/eclair/payments.js
+++ b/backend/routes/eclair/payments.js
@@ -1,10 +1,11 @@
import exprs from 'express';
const { Router } = exprs;
import { isAuthenticated } from '../../utils/authCheck.js';
-import { queryPaymentRoute, decodePayment, getSentPaymentsInformation, postPayment } from '../../controllers/eclair/payments.js';
+import { queryPaymentRoute, decodePayment, getSentPaymentsInformation, postPayment, sendPaymentToRoute } from '../../controllers/eclair/payments.js';
const router = Router();
router.get('/route/', isAuthenticated, queryPaymentRoute);
router.get('/decode/:invoice', isAuthenticated, decodePayment);
router.post('/getsentinfos', isAuthenticated, getSentPaymentsInformation);
+router.post('/sendtoroute', isAuthenticated, sendPaymentToRoute);
router.post('/', isAuthenticated, postPayment);
export default router;
diff --git a/backend/routes/shared/index.js b/backend/routes/shared/index.js
index 9a4f58f6..2fd7e10e 100644
--- a/backend/routes/shared/index.js
+++ b/backend/routes/shared/index.js
@@ -4,12 +4,14 @@ import authenticateRoutes from './authenticate.js';
import boltzRoutes from './boltz.js';
import loopRoutes from './loop.js';
import RTLConfRoutes from './RTLConf.js';
+import pageSettingsRoutes from './pageSettings.js';
const router = Router();
const sharedRoutes = [
{ path: '/authenticate', route: authenticateRoutes },
{ path: '/boltz', route: boltzRoutes },
{ path: '/loop', route: loopRoutes },
- { path: '/conf', route: RTLConfRoutes }
+ { path: '/conf', route: RTLConfRoutes },
+ { path: '/pagesettings', route: pageSettingsRoutes }
];
sharedRoutes.forEach((route) => {
router.use(route.path, route.route);
diff --git a/backend/routes/shared/pageSettings.js b/backend/routes/shared/pageSettings.js
new file mode 100644
index 00000000..6f3920c6
--- /dev/null
+++ b/backend/routes/shared/pageSettings.js
@@ -0,0 +1,8 @@
+import exprs from 'express';
+const { Router } = exprs;
+import { isAuthenticated } from '../../utils/authCheck.js';
+import { getPageSettings, savePageSettings } from '../../controllers/shared/pageSettings.js';
+const router = Router();
+router.get('/', isAuthenticated, getPageSettings);
+router.post('/', isAuthenticated, savePageSettings);
+export default router;
diff --git a/backend/utils/app.js b/backend/utils/app.js
index f6f32aea..6e6abd04 100644
--- a/backend/utils/app.js
+++ b/backend/utils/app.js
@@ -12,7 +12,6 @@ import clnRoutes from '../routes/cln/index.js';
import eclRoutes from '../routes/eclair/index.js';
import { Common } from './common.js';
import { Logger } from './logger.js';
-import { Config } from './config.js';
import { CLWSClient } from '../controllers/cln/webSocketClient.js';
import { ECLWSClient } from '../controllers/eclair/webSocketClient.js';
import { LNDWSClient } from '../controllers/lnd/webSocketClient.js';
@@ -22,15 +21,11 @@ export class ExpressApplication {
this.app = express();
this.logger = Logger;
this.common = Common;
- this.config = Config;
this.eclWsClient = ECLWSClient;
this.clWsClient = CLWSClient;
this.lndWsClient = LNDWSClient;
this.directoryName = dirname(fileURLToPath(import.meta.url));
this.getApp = () => this.app;
- this.loadConfiguration = () => {
- this.config.setServerConfiguration();
- };
this.setCORS = () => { CORS.mount(this.app); };
this.setCSRF = () => { CSRF.mount(this.app); };
this.setApplicationRoutes = () => {
@@ -41,13 +36,14 @@ export class ExpressApplication {
this.app.use(this.common.baseHref + '/api/ecl', eclRoutes);
this.app.use(this.common.baseHref, express.static(join(this.directoryName, '../..', 'frontend')));
this.app.use((req, res, next) => {
- // For Angular App
- res.cookie('XSRF-TOKEN', req.csrfToken ? req.csrfToken() : '');
- // For JQuery Browser Plugin
- res.setHeader('XSRF-TOKEN', req.csrfToken ? req.csrfToken() : '');
+ res.cookie('XSRF-TOKEN', req.csrfToken ? req.csrfToken() : (req.cookies && req.cookies._csrf) ? req.cookies._csrf : ''); // RTL Angular Frontend
+ res.setHeader('XSRF-TOKEN', req.csrfToken ? req.csrfToken() : (req.cookies && req.cookies._csrf) ? req.cookies._csrf : ''); // RTL Quickpay JQuery
res.sendFile(join(this.directoryName, '../..', 'frontend', 'index.html'));
});
- this.app.use((err, req, res, next) => this.handleApplicationErrors(err, res));
+ this.app.use((err, req, res, next) => {
+ this.handleApplicationErrors(err, res);
+ next();
+ });
this.logger.log({ selectedNode: this.common.initSelectedNode, level: 'INFO', fileName: 'App', msg: 'Application Routes Set' });
};
this.handleApplicationErrors = (err, res) => {
@@ -80,7 +76,6 @@ export class ExpressApplication {
this.app.use(cookieParser(this.common.secret_key));
this.app.use(bodyParser.json({ limit: '25mb' }));
this.app.use(bodyParser.urlencoded({ extended: false, limit: '25mb' }));
- this.loadConfiguration();
this.setCORS();
this.setCSRF();
this.setApplicationRoutes();
diff --git a/backend/utils/authCheck.js b/backend/utils/authCheck.js
index abb40e8d..aa3d4e04 100644
--- a/backend/utils/authCheck.js
+++ b/backend/utils/authCheck.js
@@ -18,16 +18,14 @@ export const isAuthenticated = (req, res, next) => {
}
};
export const verifyWSUser = (info, next) => {
- var _a;
const headers = JSON.parse(JSON.stringify(info.req.headers));
- const protocols = !info.req.headers['sec-websocket-protocol'] ? [] : (_a = info.req.headers['sec-websocket-protocol'].split(',')) === null || _a === void 0 ? void 0 : _a.map((s) => s.trim());
+ const protocols = !info.req.headers['sec-websocket-protocol'] ? [] : info.req.headers['sec-websocket-protocol'].split(',')?.map((s) => s.trim());
const jwToken = (protocols && protocols.length > 0) ? protocols[0] : '';
if (!jwToken || jwToken === '') {
next(false, 401, 'Authentication Failed! Please Login First!');
}
else {
jwt.verify(jwToken, common.secret_key, (verificationErr) => {
- var _a, _b, _c;
if (verificationErr) {
next(false, 401, 'Authentication Failed! Please Login First!');
}
@@ -42,7 +40,7 @@ export const verifyWSUser = (info, next) => {
}
let cookies = null;
try {
- cookies = '{"' + ((_c = (_b = (_a = headers.cookie) === null || _a === void 0 ? void 0 : _a.replace(/ /g, '')) === null || _b === void 0 ? void 0 : _b.replace(/;/g, '","').trim()) === null || _c === void 0 ? void 0 : _c.replace(/[=]/g, '":"')) + '"}';
+ cookies = '{"' + headers.cookie?.replace(/ /g, '')?.replace(/;/g, '","').trim()?.replace(/[=]/g, '":"') + '"}';
updatedReq['cookies'] = JSON.parse(cookies);
}
catch (err) {
diff --git a/backend/utils/common.js b/backend/utils/common.js
index 3927ea2b..7d15a439 100644
--- a/backend/utils/common.js
+++ b/backend/utils/common.js
@@ -11,7 +11,8 @@ export class CommonService {
this.initSelectedNode = null;
this.rtl_conf_file_path = '';
this.port = 3000;
- this.host = null;
+ this.host = '';
+ this.db_directory_path = join(dirname(fileURLToPath(import.meta.url)), '..', '..');
this.rtl_pass = '';
this.flg_allow_password_update = true;
this.rtl_secret2fa = '';
@@ -24,7 +25,10 @@ export class CommonService {
this.read_dummy_data = false;
this.baseHref = '/rtl';
this.dummy_data_array_from_file = [];
- this.MONTHS = [{ name: 'JAN', days: 31 }, { name: 'FEB', days: 28 }, { name: 'MAR', days: 31 }, { name: 'APR', days: 30 }, { name: 'MAY', days: 31 }, { name: 'JUN', days: 30 }, { name: 'JUL', days: 31 }, { name: 'AUG', days: 31 }, { name: 'SEP', days: 30 }, { name: 'OCT', days: 31 }, { name: 'NOV', days: 30 }, { name: 'DEC', days: 31 }];
+ this.MONTHS = [
+ { name: 'JAN', days: 31 }, { name: 'FEB', days: 28 }, { name: 'MAR', days: 31 }, { name: 'APR', days: 30 }, { name: 'MAY', days: 31 }, { name: 'JUN', days: 30 },
+ { name: 'JUL', days: 31 }, { name: 'AUG', days: 31 }, { name: 'SEP', days: 30 }, { name: 'OCT', days: 31 }, { name: 'NOV', days: 30 }, { name: 'DEC', days: 31 }
+ ];
this.getSwapServerOptions = (req) => {
const swapOptions = {
url: req.session.selectedNode.swap_server_url,
@@ -198,18 +202,17 @@ export class CommonService {
};
this.newestOnTop = (array, key, value) => {
const newlyAddedRecord = array.splice(array.findIndex((item) => item[key] === value), 1);
- array === null || array === void 0 ? void 0 : array.unshift(newlyAddedRecord[0]);
+ array?.unshift(newlyAddedRecord[0]);
return array;
};
- this.camelCase = (str) => { var _a, _b; return (_b = (_a = str === null || str === void 0 ? void 0 : str.replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => (word.toUpperCase()))) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, '')) === null || _b === void 0 ? void 0 : _b.replace(/-/g, ' '); };
+ this.camelCase = (str) => str?.replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => (word.toUpperCase()))?.replace(/\s+/g, '')?.replace(/-/g, ' ');
this.titleCase = (str) => {
- var _a, _b;
if (str.indexOf('!\n') > 0 || str.indexOf('.\n') > 0) {
- return (_a = str.split('\n')) === null || _a === void 0 ? void 0 : _a.reduce((accumulator, currentStr) => accumulator + currentStr.charAt(0).toUpperCase() + currentStr.substring(1).toLowerCase() + '\n', '');
+ return str.split('\n')?.reduce((accumulator, currentStr) => accumulator + currentStr.charAt(0).toUpperCase() + currentStr.substring(1).toLowerCase() + '\n', '');
}
else {
if (str.indexOf(' ') > 0) {
- return (_b = str.split(' ')) === null || _b === void 0 ? void 0 : _b.reduce((accumulator, currentStr) => accumulator + currentStr.charAt(0).toUpperCase() + currentStr.substring(1).toLowerCase() + ' ', '');
+ return str.split(' ')?.reduce((accumulator, currentStr) => accumulator + currentStr.charAt(0).toUpperCase() + currentStr.substring(1).toLowerCase() + ' ', '');
}
else {
return str.charAt(0).toUpperCase() + str.substring(1).toLowerCase();
@@ -217,7 +220,11 @@ export class CommonService {
}
};
this.handleError = (errRes, fileName, errMsg, selectedNode) => {
- const err = JSON.parse(JSON.stringify(errRes));
+ let err = JSON.parse(JSON.stringify(errRes));
+ if (err && err.error && Object.keys(err.error).length === 0 && errRes.error && (errRes.error.stack || errRes.error.message)) {
+ errRes.error = errRes.error.stack || errRes.error.message;
+ err = JSON.parse(JSON.stringify(errRes));
+ }
if (!selectedNode) {
selectedNode = this.initSelectedNode;
}
@@ -252,17 +259,30 @@ export class CommonService {
}
break;
}
- this.logger.log({ selectedNode: selectedNode, level: 'ERROR', fileName: fileName, msg: errMsg, error: (typeof err === 'object' ? JSON.stringify(err) : (typeof err === 'string') ? err : 'Unknown Error') });
- const newErrorObj = {
- statusCode: err.statusCode ? err.statusCode : err.status ? err.status : (err.error && err.error.code && err.error.code === 'ECONNREFUSED') ? 503 : 500,
- message: (err.error && err.error.message) ? err.error.message : err.message ? err.message : errMsg,
- error: ((err.error && err.error.error && err.error.error.error && typeof err.error.error.error === 'string') ? err.error.error.error :
- (err.error && err.error.error && typeof err.error.error === 'string') ? err.error.error :
- (err.error && err.error.error && err.error.error.message && typeof err.error.error.message === 'string') ? err.error.error.message :
- (err.error && err.error.message && typeof err.error.message === 'string') ? err.error.message :
- (err.error && typeof err.error === 'string') ? err.error :
- (err.message && typeof err.message === 'string') ? err.message : (typeof err === 'string') ? err : 'Unknown Error')
- };
+ this.logger.log({ selectedNode: selectedNode, level: 'ERROR', fileName: fileName, msg: errMsg, error: (typeof err === 'object' ? JSON.stringify(err) : err) });
+ let newErrorObj = { statusCode: 500, message: '', error: '' };
+ if (err.code && err.code === 'ENOENT') {
+ newErrorObj = {
+ statusCode: 500,
+ message: 'No such file or directory ' + (err.path ? err.path : ''),
+ error: 'No such file or directory ' + (err.path ? err.path : '')
+ };
+ }
+ else {
+ newErrorObj = {
+ statusCode: err.statusCode ? err.statusCode : err.status ? err.status : (err.error && err.error.code && err.error.code === 'ECONNREFUSED') ? 503 : 500,
+ message: (err.error && err.error.message) ? err.error.message : err.message ? err.message : errMsg,
+ error: ((err.error && err.error.error && err.error.error.error && typeof err.error.error.error === 'string') ? err.error.error.error :
+ (err.error && err.error.error && typeof err.error.error === 'string') ? err.error.error :
+ (err.error && err.error.error && err.error.error.message && typeof err.error.error.message === 'string') ? err.error.error.message :
+ (err.error && err.error.message && typeof err.error.message === 'string') ? err.error.message :
+ (err.error && typeof err.error === 'string') ? err.error :
+ (err.message && typeof err.message === 'string') ? err.message : (typeof err === 'string') ? err : 'Unknown Error')
+ };
+ }
+ if (selectedNode.ln_implementation === 'ECL' && err.message && err.message.indexOf('Authentication Error') < 0 && err.name && err.name === 'StatusCodeError') {
+ newErrorObj.statusCode = 500;
+ }
return newErrorObj;
};
this.getRequestIP = (req) => ((typeof req.headers['x-forwarded-for'] === 'string' && req.headers['x-forwarded-for'].split(',').shift()) ||
@@ -301,7 +321,7 @@ export class CommonService {
this.cookie_value = fs.readFileSync(this.rtl_cookie_path, 'utf-8');
}
catch (err) {
- this.logger.log({ selectedNode: this.initSelectedNode, level: 'ERROR', fileName: 'Config', msg: 'Something went wrong while reading cookie: \n' + err });
+ this.logger.log({ selectedNode: this.initSelectedNode, level: 'ERROR', fileName: 'Common', msg: 'Something went wrong while reading cookie: \n' + err });
throw new Error(err);
}
}
@@ -313,7 +333,7 @@ export class CommonService {
this.cookie_value = fs.readFileSync(this.rtl_cookie_path, 'utf-8');
}
catch (err) {
- this.logger.log({ selectedNode: this.initSelectedNode, level: 'ERROR', fileName: 'Config', msg: 'Something went wrong while reading the cookie: \n' + err });
+ this.logger.log({ selectedNode: this.initSelectedNode, level: 'ERROR', fileName: 'Common', msg: 'Something went wrong while reading the cookie: \n' + err });
throw new Error(err);
}
}
@@ -329,9 +349,8 @@ export class CommonService {
}
};
this.createDirectory = (directoryName) => {
- var _a;
const initDir = isAbsolute(directoryName) ? sep : '';
- (_a = directoryName.split(sep)) === null || _a === void 0 ? void 0 : _a.reduce((parentDir, childDir) => {
+ directoryName.split(sep)?.reduce((parentDir, childDir) => {
const curDir = resolve(parentDir, childDir);
try {
if (!fs.existsSync(curDir)) {
@@ -400,9 +419,8 @@ export class CommonService {
});
};
this.isVersionCompatible = (currentVersion, checkVersion) => {
- var _a;
if (currentVersion) {
- const versionsArr = ((_a = currentVersion.trim()) === null || _a === void 0 ? void 0 : _a.replace('v', '').split('-')[0].split('.')) || [];
+ const versionsArr = currentVersion.trim()?.replace('v', '').split('-')[0].split('.') || [];
const checkVersionsArr = checkVersion.split('.');
return (+versionsArr[0] > +checkVersionsArr[0]) ||
(+versionsArr[0] === +checkVersionsArr[0] && +versionsArr[1] > +checkVersionsArr[1]) ||
@@ -416,6 +434,7 @@ export class CommonService {
if (selNode && selNode.index) {
this.logger.log({ selectedNode: selNode, level: 'INFO', fileName: 'Config Setup Variable', msg: 'PORT: ' + this.port });
this.logger.log({ selectedNode: selNode, level: 'INFO', fileName: 'Config Setup Variable', msg: 'HOST: ' + this.host });
+ this.logger.log({ selectedNode: selNode, level: 'INFO', fileName: 'Config Setup Variable', msg: 'DB_DIRECTORY_PATH: ' + this.db_directory_path });
this.logger.log({ selectedNode: selNode, level: 'INFO', fileName: 'Config Setup Variable', msg: 'SSO: ' + this.rtl_sso });
this.logger.log({ selectedNode: selNode, level: 'INFO', fileName: 'Config Setup Variable', msg: 'DEFAULT NODE INDEX: ' + selNode.index });
this.logger.log({ selectedNode: selNode, level: 'INFO', fileName: 'Config Setup Variable', msg: 'INDEX: ' + selNode.index });
diff --git a/backend/utils/config.js b/backend/utils/config.js
index 3bbe8822..aab18e2a 100644
--- a/backend/utils/config.js
+++ b/backend/utils/config.js
@@ -20,31 +20,37 @@ export class ConfigService {
let macaroonPath = '';
let configPath = '';
let channelBackupPath = '';
+ let dbPath = '';
switch (this.platform) {
case 'win32':
macaroonPath = homeDir + '\\AppData\\Local\\Lnd\\data\\chain\\bitcoin\\mainnet';
configPath = homeDir + '\\AppData\\Local\\Lnd\\lnd.conf';
channelBackupPath = homeDir + '\\backup\\node-1';
+ dbPath = homeDir + '\\database\\node-1';
break;
case 'darwin':
macaroonPath = homeDir + '/Library/Application Support/Lnd/data/chain/bitcoin/mainnet';
configPath = homeDir + '/Library/Application Support/Lnd/lnd.conf';
channelBackupPath = homeDir + '/backup/node-1';
+ dbPath = homeDir + '/database/node-1';
break;
case 'linux':
macaroonPath = homeDir + '/.lnd/data/chain/bitcoin/mainnet';
configPath = homeDir + '/.lnd/lnd.conf';
channelBackupPath = homeDir + '/backup/node-1';
+ dbPath = homeDir + '/database/node-1';
break;
default:
macaroonPath = '';
configPath = '';
channelBackupPath = '';
+ dbPath = '';
break;
}
const configData = {
port: '3000',
defaultNodeIndex: 1,
+ dbDirectoryPath: dbPath,
SSO: {
rtlSSO: 0,
rtlCookiePath: '',
@@ -65,13 +71,14 @@ export class ConfigService {
themeColor: 'PURPLE',
channelBackupPath: channelBackupPath,
logLevel: 'ERROR',
- lnServerUrl: 'https://localhost:8080',
- fiatConversion: false
+ lnServerUrl: 'https://127.0.0.1:8080',
+ fiatConversion: false,
+ unannouncedChannels: false
}
}
]
};
- if (+process.env.RTL_SSO === 0) {
+ if ((process?.env?.RTL_SSO && +process?.env?.RTL_SSO === 0) || configData.SSO.rtlSSO === 0) {
configData['multiPass'] = 'password';
}
return configData;
@@ -88,7 +95,7 @@ export class ConfigService {
};
this.updateLogByLevel = () => {
let updateLogFlag = false;
- this.common.rtl_conf_file_path = process.env.RTL_CONFIG_PATH ? process.env.RTL_CONFIG_PATH : join(this.directoryName, '../..');
+ this.common.rtl_conf_file_path = process?.env?.RTL_CONFIG_PATH ? process?.env?.RTL_CONFIG_PATH : join(this.directoryName, '../..');
try {
const RTLConfFile = this.common.rtl_conf_file_path + sep + 'RTL-Config.json';
const config = JSON.parse(fs.readFileSync(RTLConfFile, 'utf-8'));
@@ -108,9 +115,9 @@ export class ConfigService {
}
};
this.validateNodeConfig = (config) => {
- if ((+process.env.RTL_SSO === 0) || (typeof process.env.RTL_SSO === 'undefined' && +config.SSO.rtlSSO === 0)) {
- if (process.env.APP_PASSWORD && process.env.APP_PASSWORD.trim() !== '') {
- this.common.rtl_pass = this.hash.update(process.env.APP_PASSWORD).digest('hex');
+ if ((process?.env?.RTL_SSO && +process?.env?.RTL_SSO === 0) || (typeof process?.env?.RTL_SSO === 'undefined' && +config.SSO.rtlSSO === 0)) {
+ if (process?.env?.APP_PASSWORD && process?.env?.APP_PASSWORD.trim() !== '') {
+ this.common.rtl_pass = this.hash.update(process?.env?.APP_PASSWORD).digest('hex');
this.common.flg_allow_password_update = false;
}
else if (config.multiPassHashed && config.multiPassHashed !== '') {
@@ -125,23 +132,24 @@ export class ConfigService {
this.common.rtl_secret2fa = config.secret2fa;
}
else {
- if (process.env.APP_PASSWORD && process.env.APP_PASSWORD.trim() !== '') {
+ if (process?.env?.APP_PASSWORD && process?.env?.APP_PASSWORD.trim() !== '') {
this.errMsg = this.errMsg + '\nRTL Password cannot be set with SSO. Please set SSO as 0 or remove password.';
}
}
- this.common.port = (process.env.PORT) ? this.normalizePort(process.env.PORT) : (config.port) ? this.normalizePort(config.port) : 3000;
- this.common.host = (process.env.HOST) ? process.env.HOST : (config.host) ? config.host : null;
+ this.common.port = (process?.env?.PORT) ? this.normalizePort(process?.env?.PORT) : (config.port) ? this.normalizePort(config.port) : 3000;
+ this.common.host = (process?.env?.HOST) ? process?.env?.HOST : (config.host) ? config.host : null;
+ this.common.db_directory_path = (process?.env?.DB_DIRECTORY_PATH) ? process?.env?.DB_DIRECTORY_PATH : (config.dbDirectoryPath) ? config.dbDirectoryPath : join(dirname(fileURLToPath(import.meta.url)), '..', '..');
if (config.nodes && config.nodes.length > 0) {
config.nodes.forEach((node, idx) => {
this.common.nodes[idx] = {};
this.common.nodes[idx].index = node.index;
this.common.nodes[idx].ln_node = node.lnNode;
- this.common.nodes[idx].ln_implementation = (process.env.LN_IMPLEMENTATION) ? process.env.LN_IMPLEMENTATION : node.lnImplementation ? node.lnImplementation : 'LND';
+ this.common.nodes[idx].ln_implementation = (process?.env?.LN_IMPLEMENTATION) ? process?.env?.LN_IMPLEMENTATION : node.lnImplementation ? node.lnImplementation : 'LND';
if (this.common.nodes[idx].ln_implementation === 'CLT') {
this.common.nodes[idx].ln_implementation = 'CLN';
}
- if (this.common.nodes[idx].ln_implementation !== 'ECL' && process.env.MACAROON_PATH && process.env.MACAROON_PATH.trim() !== '') {
- this.common.nodes[idx].macaroon_path = process.env.MACAROON_PATH;
+ if (this.common.nodes[idx].ln_implementation !== 'ECL' && process?.env?.MACAROON_PATH && process?.env?.MACAROON_PATH.trim() !== '') {
+ this.common.nodes[idx].macaroon_path = process?.env?.MACAROON_PATH;
}
else if (this.common.nodes[idx].ln_implementation !== 'ECL' && node.Authentication && node.Authentication.macaroonPath && node.Authentication.macaroonPath.trim() !== '') {
this.common.nodes[idx].macaroon_path = node.Authentication.macaroonPath;
@@ -150,8 +158,8 @@ export class ConfigService {
this.errMsg = 'Please set macaroon path for node index ' + node.index + ' in RTL-Config.json!';
}
if (this.common.nodes[idx].ln_implementation === 'ECL') {
- if (process.env.LN_API_PASSWORD) {
- this.common.nodes[idx].ln_api_password = process.env.LN_API_PASSWORD;
+ if (process?.env?.LN_API_PASSWORD) {
+ this.common.nodes[idx].ln_api_password = process?.env?.LN_API_PASSWORD;
}
else if (node.Authentication && node.Authentication.lnApiPassword) {
this.common.nodes[idx].ln_api_password = node.Authentication.lnApiPassword;
@@ -160,8 +168,8 @@ export class ConfigService {
this.common.nodes[idx].ln_api_password = '';
}
}
- if (process.env.CONFIG_PATH) {
- this.common.nodes[idx].config_path = process.env.CONFIG_PATH;
+ if (process?.env?.CONFIG_PATH) {
+ this.common.nodes[idx].config_path = process?.env?.CONFIG_PATH;
}
else if (node.Authentication && node.Authentication.configPath) {
this.common.nodes[idx].config_path = node.Authentication.configPath;
@@ -171,10 +179,10 @@ export class ConfigService {
}
if (this.common.nodes[idx].ln_implementation === 'ECL' && this.common.nodes[idx].ln_api_password === '' && this.common.nodes[idx].config_path !== '') {
try {
- const exists = fs.existsSync(this.common.nodes[idx].config_path);
+ const exists = fs.existsSync(this.common.nodes[idx].config_path || '');
if (exists) {
try {
- const configFile = fs.readFileSync(this.common.nodes[idx].config_path, 'utf-8');
+ const configFile = fs.readFileSync((this.common.nodes[idx].config_path || ''), 'utf-8');
const iniParsed = ini.parse(configFile);
this.common.nodes[idx].ln_api_password = iniParsed['eclair.api.password'] ? iniParsed['eclair.api.password'] : parseHocon(configFile).eclair.api.password;
}
@@ -193,11 +201,11 @@ export class ConfigService {
if (this.common.nodes[idx].ln_implementation === 'ECL' && this.common.nodes[idx].ln_api_password === '') {
this.errMsg = this.errMsg + '\nPlease set config path Or api password for node index ' + node.index + ' in RTL-Config.json! It is mandatory for Eclair authentication!';
}
- if (process.env.LN_SERVER_URL && process.env.LN_SERVER_URL.trim() !== '') {
- this.common.nodes[idx].ln_server_url = process.env.LN_SERVER_URL.endsWith('/v1') ? process.env.LN_SERVER_URL.slice(0, -3) : process.env.LN_SERVER_URL;
+ if (process?.env?.LN_SERVER_URL && process?.env?.LN_SERVER_URL.trim() !== '') {
+ this.common.nodes[idx].ln_server_url = process?.env?.LN_SERVER_URL.endsWith('/v1') ? process?.env?.LN_SERVER_URL.slice(0, -3) : process?.env?.LN_SERVER_URL;
}
- else if (process.env.LND_SERVER_URL && process.env.LND_SERVER_URL.trim() !== '') {
- this.common.nodes[idx].ln_server_url = process.env.LND_SERVER_URL.endsWith('/v1') ? process.env.LND_SERVER_URL.slice(0, -3) : process.env.LND_SERVER_URL;
+ else if (process?.env?.LND_SERVER_URL && process?.env?.LND_SERVER_URL.trim() !== '') {
+ this.common.nodes[idx].ln_server_url = process?.env?.LND_SERVER_URL.endsWith('/v1') ? process?.env?.LND_SERVER_URL.slice(0, -3) : process?.env?.LND_SERVER_URL;
}
else if (node.Settings.lnServerUrl && node.Settings.lnServerUrl.trim() !== '') {
this.common.nodes[idx].ln_server_url = node.Settings.lnServerUrl.endsWith('/v1') ? node.Settings.lnServerUrl.slice(0, -3) : node.Settings.lnServerUrl;
@@ -211,14 +219,15 @@ export class ConfigService {
this.common.nodes[idx].user_persona = node.Settings.userPersona ? node.Settings.userPersona : 'MERCHANT';
this.common.nodes[idx].theme_mode = node.Settings.themeMode ? node.Settings.themeMode : 'DAY';
this.common.nodes[idx].theme_color = node.Settings.themeColor ? node.Settings.themeColor : 'PURPLE';
+ this.common.nodes[idx].unannounced_channels = node.Settings.unannouncedChannels ? !!node.Settings.unannouncedChannels : false;
this.common.nodes[idx].log_level = node.Settings.logLevel ? node.Settings.logLevel : 'ERROR';
this.common.nodes[idx].fiat_conversion = node.Settings.fiatConversion ? !!node.Settings.fiatConversion : false;
if (this.common.nodes[idx].fiat_conversion) {
this.common.nodes[idx].currency_unit = node.Settings.currencyUnit ? node.Settings.currencyUnit : 'USD';
}
- if (process.env.SWAP_SERVER_URL && process.env.SWAP_SERVER_URL.trim() !== '') {
- this.common.nodes[idx].swap_server_url = process.env.SWAP_SERVER_URL.endsWith('/v1') ? process.env.SWAP_SERVER_URL.slice(0, -3) : process.env.SWAP_SERVER_URL;
- this.common.nodes[idx].swap_macaroon_path = process.env.SWAP_MACAROON_PATH;
+ if (process?.env?.SWAP_SERVER_URL && process?.env?.SWAP_SERVER_URL.trim() !== '') {
+ this.common.nodes[idx].swap_server_url = process?.env?.SWAP_SERVER_URL.endsWith('/v1') ? process?.env?.SWAP_SERVER_URL.slice(0, -3) : process?.env?.SWAP_SERVER_URL;
+ this.common.nodes[idx].swap_macaroon_path = process?.env?.SWAP_MACAROON_PATH;
}
else if (node.Settings.swapServerUrl && node.Settings.swapServerUrl.trim() !== '') {
this.common.nodes[idx].swap_server_url = node.Settings.swapServerUrl.endsWith('/v1') ? node.Settings.swapServerUrl.slice(0, -3) : node.Settings.swapServerUrl;
@@ -228,9 +237,9 @@ export class ConfigService {
this.common.nodes[idx].swap_server_url = '';
this.common.nodes[idx].swap_macaroon_path = '';
}
- if (process.env.BOLTZ_SERVER_URL && process.env.BOLTZ_SERVER_URL.trim() !== '') {
- this.common.nodes[idx].boltz_server_url = process.env.BOLTZ_SERVER_URL.endsWith('/v1') ? process.env.BOLTZ_SERVER_URL.slice(0, -3) : process.env.BOLTZ_SERVER_URL;
- this.common.nodes[idx].boltz_macaroon_path = process.env.BOLTZ_MACAROON_PATH;
+ if (process?.env?.BOLTZ_SERVER_URL && process?.env?.BOLTZ_SERVER_URL.trim() !== '') {
+ this.common.nodes[idx].boltz_server_url = process?.env?.BOLTZ_SERVER_URL.endsWith('/v1') ? process?.env?.BOLTZ_SERVER_URL.slice(0, -3) : process?.env?.BOLTZ_SERVER_URL;
+ this.common.nodes[idx].boltz_macaroon_path = process?.env?.BOLTZ_MACAROON_PATH;
}
else if (node.Settings.boltzServerUrl && node.Settings.boltzServerUrl.trim() !== '') {
this.common.nodes[idx].boltz_server_url = node.Settings.boltzServerUrl.endsWith('/v1') ? node.Settings.boltzServerUrl.slice(0, -3) : node.Settings.boltzServerUrl;
@@ -240,10 +249,10 @@ export class ConfigService {
this.common.nodes[idx].boltz_server_url = '';
this.common.nodes[idx].boltz_macaroon_path = '';
}
- this.common.nodes[idx].enable_offers = process.env.ENABLE_OFFERS ? process.env.ENABLE_OFFERS : (node.Settings.enableOffers) ? node.Settings.enableOffers : false;
- this.common.nodes[idx].enable_peerswap = process.env.ENABLE_PEERSWAP ? process.env.ENABLE_PEERSWAP : (node.Settings.enablePeerswap) ? node.Settings.enablePeerswap : false;
- this.common.nodes[idx].bitcoind_config_path = process.env.BITCOIND_CONFIG_PATH ? process.env.BITCOIND_CONFIG_PATH : (node.Settings.bitcoindConfigPath) ? node.Settings.bitcoindConfigPath : '';
- this.common.nodes[idx].channel_backup_path = process.env.CHANNEL_BACKUP_PATH ? process.env.CHANNEL_BACKUP_PATH : (node.Settings.channelBackupPath) ? node.Settings.channelBackupPath : this.common.rtl_conf_file_path + sep + 'channels-backup' + sep + 'node-' + node.index;
+ this.common.nodes[idx].enable_offers = process?.env?.ENABLE_OFFERS ? process?.env?.ENABLE_OFFERS : (node.Settings.enableOffers) ? node.Settings.enableOffers : false;
+ this.common.nodes[idx].enable_peerswap = process?.env?.ENABLE_PEERSWAP ? process?.env?.ENABLE_PEERSWAP : (node.Settings.enablePeerswap) ? node.Settings.enablePeerswap : false;
+ this.common.nodes[idx].bitcoind_config_path = process?.env?.BITCOIND_CONFIG_PATH ? process?.env?.BITCOIND_CONFIG_PATH : (node.Settings.bitcoindConfigPath) ? node.Settings.bitcoindConfigPath : '';
+ this.common.nodes[idx].channel_backup_path = process?.env?.CHANNEL_BACKUP_PATH ? process?.env?.CHANNEL_BACKUP_PATH : (node.Settings.channelBackupPath) ? node.Settings.channelBackupPath : this.common.rtl_conf_file_path + sep + 'channels-backup' + sep + 'node-' + node.index;
try {
this.common.createDirectory(this.common.nodes[idx].channel_backup_path);
const exists = fs.existsSync(this.common.nodes[idx].channel_backup_path + sep + 'channel-all.bak');
@@ -268,14 +277,14 @@ export class ConfigService {
this.common.nodes[idx].log_file = this.common.rtl_conf_file_path + '/logs/RTL-Node-' + node.index + '.log';
this.logger.log({ selectedNode: this.common.initSelectedNode, level: 'INFO', fileName: 'Config', msg: 'Node Config: ' + JSON.stringify(this.common.nodes[idx]) });
const log_file = this.common.nodes[idx].log_file;
- if (fs.existsSync(log_file)) {
- fs.writeFile(log_file, '', () => { });
+ if (fs.existsSync(log_file || '')) {
+ fs.writeFile((log_file || ''), '', () => { });
}
else {
try {
- const directoryName = dirname(log_file);
+ const directoryName = dirname(log_file || '');
this.common.createDirectory(directoryName);
- const createStream = fs.createWriteStream(log_file);
+ const createStream = fs.createWriteStream(log_file || '');
createStream.end();
}
catch (err) {
@@ -290,14 +299,14 @@ export class ConfigService {
}
};
this.setSSOParams = (config) => {
- if (process.env.RTL_SSO) {
- this.common.rtl_sso = +process.env.RTL_SSO;
+ if (process?.env?.RTL_SSO) {
+ this.common.rtl_sso = +process?.env?.RTL_SSO;
}
else if (config.SSO && config.SSO.rtlSSO) {
this.common.rtl_sso = config.SSO.rtlSSO;
}
- if (process.env.RTL_COOKIE_PATH) {
- this.common.rtl_cookie_path = process.env.RTL_COOKIE_PATH;
+ if (process?.env?.RTL_COOKIE_PATH) {
+ this.common.rtl_cookie_path = process?.env?.RTL_COOKIE_PATH;
}
else if (config.SSO && config.SSO.rtlCookiePath) {
this.common.rtl_cookie_path = config.SSO.rtlCookiePath;
@@ -305,8 +314,8 @@ export class ConfigService {
else {
this.common.rtl_cookie_path = '';
}
- if (process.env.LOGOUT_REDIRECT_LINK) {
- this.common.logout_redirect_link = process.env.LOGOUT_REDIRECT_LINK;
+ if (process?.env?.LOGOUT_REDIRECT_LINK) {
+ this.common.logout_redirect_link = process?.env?.LOGOUT_REDIRECT_LINK;
}
else if (config.SSO && config.SSO.logoutRedirectLink) {
this.common.logout_redirect_link = config.SSO.logoutRedirectLink;
@@ -322,15 +331,15 @@ export class ConfigService {
};
this.setSelectedNode = (config) => {
if (config.defaultNodeIndex) {
- this.common.initSelectedNode = this.common.findNode(config.defaultNodeIndex);
+ this.common.initSelectedNode = this.common.findNode(config.defaultNodeIndex) || {};
}
else {
- this.common.initSelectedNode = this.common.findNode(this.common.nodes[0].index);
+ this.common.initSelectedNode = this.common.findNode(this.common.nodes[0].index) || {};
}
};
this.setServerConfiguration = () => {
try {
- this.common.rtl_conf_file_path = (process.env.RTL_CONFIG_PATH) ? process.env.RTL_CONFIG_PATH : join(this.directoryName, '../..');
+ this.common.rtl_conf_file_path = (process?.env?.RTL_CONFIG_PATH) ? process?.env?.RTL_CONFIG_PATH : join(this.directoryName, '../..');
const confFileFullPath = this.common.rtl_conf_file_path + sep + 'RTL-Config.json';
if (!fs.existsSync(confFileFullPath)) {
fs.writeFileSync(confFileFullPath, JSON.stringify(this.setDefaultConfig()));
@@ -345,6 +354,7 @@ export class ConfigService {
throw new Error(err);
}
};
+ this.setServerConfiguration();
}
}
export const Config = new ConfigService();
diff --git a/backend/utils/database.js b/backend/utils/database.js
index f0ac3777..e9c0f8de 100644
--- a/backend/utils/database.js
+++ b/backend/utils/database.js
@@ -1,43 +1,77 @@
import * as fs from 'fs';
-import { join, dirname, sep } from 'path';
-import { fileURLToPath } from 'url';
+import { join, sep } from 'path';
import { Common } from '../utils/common.js';
import { Logger } from '../utils/logger.js';
-import { CollectionsEnum, validateOffer } from '../models/database.model.js';
+import { validateDocument, LNDCollection, ECLCollection, CLNCollection } from '../models/database.model.js';
export class DatabaseService {
constructor() {
this.common = Common;
this.logger = Logger;
- this.dbDirectory = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'database');
+ this.dbDirectory = join(this.common.db_directory_path, 'database');
this.nodeDatabase = {};
}
- loadDatabase(selectedNode) {
+ loadDatabase(session) {
+ const { id, selectedNode } = session;
try {
if (!this.nodeDatabase[selectedNode.index]) {
- this.nodeDatabase[selectedNode.index] = { adapter: null, data: null };
+ this.nodeDatabase[selectedNode.index] = { adapter: null, data: {} };
+ this.nodeDatabase[selectedNode.index].adapter = new DatabaseAdapter(this.dbDirectory, selectedNode, id);
+ this.fetchNodeData(selectedNode);
+ this.logger.log({ selectedNode: selectedNode, level: 'DEBUG', fileName: 'Database', msg: 'Database Loaded', data: this.nodeDatabase[selectedNode.index].data });
+ }
+ else {
+ this.nodeDatabase[selectedNode.index].adapter.insertSession(id);
}
- this.nodeDatabase[selectedNode.index].adapter = new DatabaseAdapter(this.dbDirectory, 'rtldb', selectedNode);
- this.nodeDatabase[selectedNode.index].data = this.nodeDatabase[selectedNode.index].adapter.fetchData();
}
catch (err) {
this.logger.log({ selectedNode: selectedNode, level: 'ERROR', fileName: 'Database', msg: 'Database Load Error', error: err });
}
}
- create(selectedNode, collectionName, newDocument) {
+ fetchNodeData(selectedNode) {
+ switch (selectedNode.ln_implementation) {
+ case 'CLN':
+ for (const collectionName in CLNCollection) {
+ if (CLNCollection.hasOwnProperty(collectionName)) {
+ this.nodeDatabase[selectedNode.index].data[CLNCollection[collectionName]] = this.nodeDatabase[selectedNode.index].adapter.fetchData(CLNCollection[collectionName]);
+ }
+ }
+ break;
+ case 'ECL':
+ for (const collectionName in ECLCollection) {
+ if (ECLCollection.hasOwnProperty(collectionName)) {
+ this.nodeDatabase[selectedNode.index].data[ECLCollection[collectionName]] = this.nodeDatabase[selectedNode.index].adapter.fetchData(ECLCollection[collectionName]);
+ }
+ }
+ break;
+ default:
+ for (const collectionName in LNDCollection) {
+ if (LNDCollection.hasOwnProperty(collectionName)) {
+ this.nodeDatabase[selectedNode.index].data[LNDCollection[collectionName]] = this.nodeDatabase[selectedNode.index].adapter.fetchData(LNDCollection[collectionName]);
+ }
+ }
+ break;
+ }
+ }
+ validateDocument(collectionName, newDocument) {
+ return new Promise((resolve, reject) => {
+ const validationRes = validateDocument(collectionName, newDocument);
+ if (!validationRes.isValid) {
+ reject(validationRes.error);
+ }
+ else {
+ resolve(true);
+ }
+ });
+ }
+ insert(selectedNode, collectionName, newCollection) {
return new Promise((resolve, reject) => {
try {
if (!selectedNode || !selectedNode.index) {
reject(new Error('Selected Node Config Not Found.'));
}
- const validationRes = this.validateDocument(CollectionsEnum.OFFERS, newDocument);
- if (!validationRes.isValid) {
- reject(validationRes.error);
- }
- else {
- this.nodeDatabase[selectedNode.index].data[collectionName].push(newDocument);
- this.saveDatabase(+selectedNode.index);
- resolve(newDocument);
- }
+ this.nodeDatabase[selectedNode.index].data[collectionName] = newCollection;
+ this.saveDatabase(selectedNode, collectionName);
+ resolve(this.nodeDatabase[selectedNode.index].data[collectionName]);
}
catch (errRes) {
reject(errRes);
@@ -64,23 +98,17 @@ export class DatabaseService {
}
updatedDocument = foundDoc;
}
- const validationRes = this.validateDocument(CollectionsEnum.OFFERS, updatedDocument);
- if (!validationRes.isValid) {
- reject(validationRes.error);
+ if (foundDocIdx > -1) {
+ this.nodeDatabase[selectedNode.index].data[collectionName].splice(foundDocIdx, 1, updatedDocument);
}
else {
- if (foundDocIdx > -1) {
- this.nodeDatabase[selectedNode.index].data[collectionName].splice(foundDocIdx, 1, updatedDocument);
+ if (!this.nodeDatabase[selectedNode.index].data[collectionName]) {
+ this.nodeDatabase[selectedNode.index].data[collectionName] = [];
}
- else {
- if (!this.nodeDatabase[selectedNode.index].data[collectionName]) {
- this.nodeDatabase[selectedNode.index].data[collectionName] = [];
- }
- this.nodeDatabase[selectedNode.index].data[collectionName].push(updatedDocument);
- }
- this.saveDatabase(+selectedNode.index);
- resolve(updatedDocument);
+ this.nodeDatabase[selectedNode.index].data[collectionName].push(updatedDocument);
}
+ this.saveDatabase(selectedNode, collectionName);
+ resolve(updatedDocument);
}
catch (errRes) {
reject(errRes);
@@ -105,7 +133,7 @@ export class DatabaseService {
}
});
}
- destroy(selectedNode, collectionName, documentFieldName, documentFieldValue) {
+ remove(selectedNode, collectionName, documentFieldName, documentFieldValue) {
return new Promise((resolve, reject) => {
try {
if (!selectedNode || !selectedNode.index) {
@@ -118,7 +146,7 @@ export class DatabaseService {
else {
reject(new Error('Unable to delete, document not found.'));
}
- this.saveDatabase(+selectedNode.index);
+ this.saveDatabase(selectedNode, collectionName);
resolve(documentFieldValue);
}
catch (errRes) {
@@ -126,17 +154,10 @@ export class DatabaseService {
}
});
}
- validateDocument(collectionName, documentToValidate) {
- switch (collectionName) {
- case CollectionsEnum.OFFERS:
- return validateOffer(documentToValidate);
- default:
- return ({ isValid: false, error: 'Collection does not exist' });
- }
- }
- saveDatabase(nodeIndex) {
+ saveDatabase(selectedNode, collectionName) {
+ const nodeIndex = +selectedNode.index;
try {
- if (+nodeIndex < 1) {
+ if (nodeIndex < 1) {
return true;
}
const selNode = this.nodeDatabase[nodeIndex] && this.nodeDatabase[nodeIndex].adapter && this.nodeDatabase[nodeIndex].adapter.selNode ? this.nodeDatabase[nodeIndex].adapter.selNode : null;
@@ -144,69 +165,131 @@ export class DatabaseService {
this.logger.log({ selectedNode: selNode, level: 'ERROR', fileName: 'Database', msg: 'Database Save Error: Selected Node Setup Not Found.' });
throw new Error('Database Save Error: Selected Node Setup Not Found.');
}
- this.nodeDatabase[nodeIndex].adapter.saveData(this.nodeDatabase[nodeIndex].data);
- this.logger.log({ selectedNode: this.nodeDatabase[nodeIndex].adapter.selNode, level: 'INFO', fileName: 'Database', msg: 'Database Saved' });
+ this.nodeDatabase[nodeIndex].adapter.saveData(collectionName, this.nodeDatabase[selectedNode.index].data[collectionName]);
+ this.logger.log({ selectedNode: this.nodeDatabase[nodeIndex].adapter.selNode, level: 'INFO', fileName: 'Database', msg: 'Database Collection ' + collectionName + ' Saved' });
return true;
}
catch (err) {
const selNode = this.nodeDatabase[nodeIndex] && this.nodeDatabase[nodeIndex].adapter && this.nodeDatabase[nodeIndex].adapter.selNode ? this.nodeDatabase[nodeIndex].adapter.selNode : null;
this.logger.log({ selectedNode: selNode, level: 'ERROR', fileName: 'Database', msg: 'Database Save Error', error: err });
- return new Error(err);
+ throw err;
}
}
- unloadDatabase(nodeIndex) {
- this.saveDatabase(nodeIndex);
- this.nodeDatabase[nodeIndex] = null;
+ unloadDatabase(nodeIndex, sessionID) {
+ if (nodeIndex > 0) {
+ if (this.nodeDatabase[nodeIndex] && this.nodeDatabase[nodeIndex].adapter) {
+ this.nodeDatabase[nodeIndex].adapter.removeSession(sessionID);
+ if (this.nodeDatabase[nodeIndex].adapter.userSessions && this.nodeDatabase[nodeIndex].adapter.userSessions.length <= 0) {
+ delete this.nodeDatabase[nodeIndex];
+ }
+ }
+ }
}
}
export class DatabaseAdapter {
- constructor(dbDirectoryPath, fileName, selNode = null) {
+ constructor(dbDirectoryPath, selNode = null, id = '') {
this.dbDirectoryPath = dbDirectoryPath;
- this.fileName = fileName;
this.selNode = selNode;
- this.dbFile = '';
- this.dbFile = dbDirectoryPath + sep + fileName + '-node-' + selNode.index + '.json';
+ this.id = id;
+ this.logger = Logger;
+ this.common = Common;
+ this.dbFilePath = '';
+ this.userSessions = [];
+ this.dbFilePath = dbDirectoryPath + sep + 'node-' + selNode.index;
+ // For backward compatibility Start
+ const oldFilePath = dbDirectoryPath + sep + 'rtldb-node-' + selNode.index + '.json';
+ if (selNode.ln_implementation === 'CLN' && fs.existsSync(oldFilePath)) {
+ this.renameOldDB(oldFilePath, selNode);
+ }
+ // For backward compatibility End
+ this.insertSession(id);
}
- fetchData() {
+ renameOldDB(oldFilePath, selNode = null) {
+ const newFilePath = this.dbFilePath + sep + 'rtldb-' + selNode.ln_implementation + '-Offers.json';
try {
- if (!fs.existsSync(this.dbDirectoryPath)) {
- fs.mkdirSync(this.dbDirectoryPath);
+ this.common.createDirectory(this.dbFilePath);
+ const oldOffers = JSON.parse(fs.readFileSync(oldFilePath, 'utf-8'));
+ fs.writeFileSync(oldFilePath, JSON.stringify(oldOffers.Offers ? oldOffers.Offers : [], null, 2));
+ fs.renameSync(oldFilePath, newFilePath);
+ }
+ catch (err) {
+ this.logger.log({ selectedNode: selNode, level: 'ERROR', fileName: 'Database', msg: 'Rename Old Database Error', error: err });
+ }
+ }
+ fetchData(collectionName) {
+ try {
+ if (!fs.existsSync(this.dbFilePath)) {
+ this.common.createDirectory(this.dbFilePath);
}
}
catch (err) {
- return new Error('Unable to Create Directory Error ' + JSON.stringify(err));
+ throw new Error(JSON.stringify(err));
}
+ const collectionFilePath = this.dbFilePath + sep + 'rtldb-' + this.selNode.ln_implementation + '-' + collectionName + '.json';
try {
- if (!fs.existsSync(this.dbFile)) {
- fs.writeFileSync(this.dbFile, '{}');
+ if (!fs.existsSync(collectionFilePath)) {
+ fs.writeFileSync(collectionFilePath, '[]');
}
}
catch (err) {
- return new Error('Unable to Create Database File Error ' + JSON.stringify(err));
+ throw new Error(JSON.stringify(err));
}
try {
- const dataFromFile = fs.readFileSync(this.dbFile, 'utf-8');
- return !dataFromFile ? null : JSON.parse(dataFromFile);
+ const otherFiles = fs.readdirSync(this.dbFilePath);
+ otherFiles.forEach((oFileName) => {
+ let collectionValid = false;
+ switch (this.selNode.ln_implementation) {
+ case 'CLN':
+ collectionValid = CLNCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false);
+ break;
+ case 'ECL':
+ collectionValid = ECLCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false);
+ break;
+ default:
+ collectionValid = LNDCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false);
+ break;
+ }
+ if (oFileName.endsWith('.json') && !collectionValid) {
+ fs.renameSync(this.dbFilePath + sep + oFileName, this.dbFilePath + sep + oFileName + '.tmp');
+ }
+ });
}
catch (err) {
- return new Error('Database Read Error ' + JSON.stringify(err));
+ this.logger.log({ selectedNode: this.selNode, level: 'ERROR', fileName: 'Database', msg: 'Rename Other Implementation DB Error', error: err });
+ }
+ try {
+ const dataFromFile = fs.readFileSync(collectionFilePath, 'utf-8');
+ const dataObj = !dataFromFile ? null : JSON.parse(dataFromFile);
+ return dataObj;
+ }
+ catch (err) {
+ throw new Error(JSON.stringify(err));
}
}
getSelNode() {
return this.selNode;
}
- saveData(data) {
+ saveData(collectionName, collectionData) {
try {
- if (data) {
- const tempFile = this.dbFile + '.tmp';
- fs.writeFileSync(tempFile, JSON.stringify(data, null, 2));
- fs.renameSync(tempFile, this.dbFile);
+ if (collectionData) {
+ const collectionFilePath = this.dbFilePath + sep + 'rtldb-' + this.selNode.ln_implementation + '-' + collectionName + '.json';
+ const tempFile = collectionFilePath + '.tmp';
+ fs.writeFileSync(tempFile, JSON.stringify(collectionData, null, 2));
+ fs.renameSync(tempFile, collectionFilePath);
}
return true;
}
catch (err) {
- return new Error('Database Write Error ' + JSON.stringify(err));
+ throw err;
}
}
+ insertSession(id = '') {
+ if (!this.userSessions.includes(id)) {
+ this.userSessions.push(id);
+ }
+ }
+ removeSession(sessionID = '') {
+ this.userSessions.splice(this.userSessions.findIndex((sId) => sId === sessionID), 1);
+ }
}
export const Database = new DatabaseService();
diff --git a/backend/utils/logger.js b/backend/utils/logger.js
index ab2cb4a2..e2fc12c6 100644
--- a/backend/utils/logger.js
+++ b/backend/utils/logger.js
@@ -7,8 +7,10 @@ export class LoggerService {
switch (msgJSON.level) {
case 'ERROR':
if (msgJSON.error) {
- msgStr = msgStr + ': ' + ((msgJSON.error.error && msgJSON.error.error.message && typeof msgJSON.error.error.message === 'string') ? msgJSON.error.error.message : (typeof msgJSON.error === 'object' && msgJSON.error.message && typeof msgJSON.error.message === 'string') ? msgJSON.error.message : (typeof msgJSON.error === 'object' && msgJSON.error.stack && typeof msgJSON.error.stack === 'string') ?
- msgJSON.error.stack : (typeof msgJSON.error === 'object') ? JSON.stringify(msgJSON.error) : (typeof msgJSON.error === 'string') ? msgJSON.error : '') + '\r\n';
+ msgStr = msgStr + ': ' + ((msgJSON.error.error && msgJSON.error.error.message && typeof msgJSON.error.error.message === 'string') ?
+ msgJSON.error.error.message : (typeof msgJSON.error === 'object' && msgJSON.error.message && typeof msgJSON.error.message === 'string') ? msgJSON.error.message : (typeof msgJSON.error === 'object' && msgJSON.error.stack && typeof msgJSON.error.stack === 'string') ?
+ msgJSON.error.stack : (typeof msgJSON.error === 'object') ? JSON.stringify(msgJSON.error) : (typeof msgJSON.error === 'string') ?
+ msgJSON.error : '') + '\r\n';
}
else {
msgStr = msgStr + '.\r\n';
@@ -67,7 +69,9 @@ export class LoggerService {
;
const prepMsgData = (msgJSON, msgStr) => {
if (msgJSON.data) {
- msgStr = msgStr + ': ' + (typeof msgJSON.data === 'object' ? (msgJSON.data.message && typeof msgJSON.data.message === 'string') ? msgJSON.data.message : (msgJSON.data.stack && typeof msgJSON.data.stack === 'string') ? msgJSON.data.stack : JSON.stringify(msgJSON.data) : (typeof msgJSON.data === 'string') ? msgJSON.data : '') + '\r\n';
+ msgStr = msgStr + ': ' + (typeof msgJSON.data === 'object' ? (msgJSON.data.message && typeof msgJSON.data.message === 'string') ?
+ msgJSON.data.message : (msgJSON.data.stack && typeof msgJSON.data.stack === 'string') ?
+ msgJSON.data.stack : JSON.stringify(msgJSON.data) : (typeof msgJSON.data === 'string') ? msgJSON.data : '') + '\r\n';
}
else {
msgStr = msgStr + '.\r\n';
diff --git a/backend/utils/webSocketServer.js b/backend/utils/webSocketServer.js
index d544167a..3fbecab1 100644
--- a/backend/utils/webSocketServer.js
+++ b/backend/utils/webSocketServer.js
@@ -31,7 +31,6 @@ export class RTLWebSocketServer {
this.logger.log({ selectedNode: this.common.initSelectedNode, level: 'INFO', fileName: 'WebSocketServer', msg: 'Connecting Websocket Server..' });
this.webSocketServer = new WebSocketServer({ noServer: true, path: this.common.baseHref + '/api/ws', verifyClient: (process.env.NODE_ENV === 'development') ? null : verifyWSUser });
httpServer.on('upgrade', (request, socket, head) => {
- var _a;
if (request.headers['upgrade'] !== 'websocket') {
socket.end('HTTP/1.1 400 Bad Request');
return;
@@ -39,7 +38,7 @@ export class RTLWebSocketServer {
const acceptKey = request.headers['sec-websocket-key'];
const hash = this.generateAcceptValue(acceptKey);
const responseHeaders = ['HTTP/1.1 101 Web Socket Protocol Handshake', 'Upgrade: WebSocket', 'Connection: Upgrade', 'Sec-WebSocket-Accept: ' + hash];
- const protocols = !request.headers['sec-websocket-protocol'] ? [] : (_a = request.headers['sec-websocket-protocol'].split(',')) === null || _a === void 0 ? void 0 : _a.map((s) => s.trim());
+ const protocols = !request.headers['sec-websocket-protocol'] ? [] : request.headers['sec-websocket-protocol'].split(',')?.map((s) => s.trim());
if (protocols.includes('json')) {
responseHeaders.push('Sec-WebSocket-Protocol: json');
}
@@ -53,12 +52,11 @@ export class RTLWebSocketServer {
this.webSocketServer.emit('connection', websocket, request);
};
this.mountEventsOnConnection = (websocket, request) => {
- var _a;
- const protocols = !request.headers['sec-websocket-protocol'] ? [] : (_a = request.headers['sec-websocket-protocol'].split(',')) === null || _a === void 0 ? void 0 : _a.map((s) => s.trim());
- const cookies = parse(request.headers.cookie);
+ const protocols = !request.headers['sec-websocket-protocol'] ? [] : request.headers['sec-websocket-protocol'].split(',')?.map((s) => s.trim());
+ const cookies = request.headers.cookie ? parse(request.headers.cookie) : null;
websocket.clientId = Date.now();
websocket.isAlive = true;
- websocket.sessionId = cookieParser.signedCookie(cookies['connect.sid'], this.common.secret_key);
+ websocket.sessionId = cookies && cookies['connect.sid'] ? cookieParser.signedCookie(cookies['connect.sid'], this.common.secret_key) : null;
websocket.clientNodeIndex = +protocols[1];
this.logger.log({ selectedNode: this.common.initSelectedNode, level: 'INFO', fileName: 'WebSocketServer', msg: 'Connected: ' + websocket.clientId + ', Total WS clients: ' + this.webSocketServer.clients.size });
websocket.on('error', this.sendErrorToAllLNClients);
diff --git a/dockerfiles/Dockerfile b/dockerfiles/Dockerfile
index 5bfb1f17..f4606e35 100644
--- a/dockerfiles/Dockerfile
+++ b/dockerfiles/Dockerfile
@@ -8,7 +8,7 @@ WORKDIR /RTL
COPY package.json /RTL/package.json
COPY package-lock.json /RTL/package-lock.json
-RUN npm install
+RUN npm install --legacy-peer-deps
# ---------------
# Build App
@@ -22,7 +22,7 @@ RUN npm run buildfrontend
RUN npm run buildbackend
# Remove non production necessary modules
-RUN npm prune --production
+RUN npm prune --production --legacy-peer-deps
# ---------------
# Release App
diff --git a/dockerfiles/Dockerfile.arm32v7 b/dockerfiles/Dockerfile.arm32v7
index 17e5836f..1fb68520 100644
--- a/dockerfiles/Dockerfile.arm32v7
+++ b/dockerfiles/Dockerfile.arm32v7
@@ -12,7 +12,7 @@ WORKDIR /RTL
COPY package.json /RTL/package.json
COPY package-lock.json /RTL/package-lock.json
-RUN npm install
+RUN npm install --legacy-peer-deps
# ---------------
# Build App
@@ -26,7 +26,7 @@ RUN npm run buildfrontend
RUN npm run buildbackend
# Remove non production necessary modules
-RUN npm prune --production
+RUN npm prune --production --legacy-peer-deps
# ---------------
# Release App
diff --git a/dockerfiles/Dockerfile.arm64v8 b/dockerfiles/Dockerfile.arm64v8
index 3f53172d..d55ee34a 100644
--- a/dockerfiles/Dockerfile.arm64v8
+++ b/dockerfiles/Dockerfile.arm64v8
@@ -11,7 +11,7 @@ WORKDIR /RTL
COPY package.json /RTL/package.json
COPY package-lock.json /RTL/package-lock.json
-RUN npm install
+RUN npm install --legacy-peer-deps
# ---------------
# Build App
@@ -25,7 +25,7 @@ RUN npm run buildfrontend
RUN npm run buildbackend
# Remove non production necessary modules
-RUN npm prune --production
+RUN npm prune --production --legacy-peer-deps
# ---------------
# Release App
diff --git a/frontend/258.525782ba4bbc257e.js b/frontend/258.525782ba4bbc257e.js
deleted file mode 100644
index 0945512f..00000000
--- a/frontend/258.525782ba4bbc257e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkRTLApp=self.webpackChunkRTLApp||[]).push([[258],{7258:(Bc,pt,f)=>{f.r(pt),f.d(pt,{ECLModule:()=>Hc});var u=f(9808),x=f(1402),Dt=f(8878),t=f(5e3),p=f(7093),J=f(5899);function Ut(n,a){1&n&&t._UZ(0,"mat-progress-bar",3)}let mt=(()=>{class n{constructor(e){this.router=e,this.loading=!1,this.router.events.subscribe(i=>{switch(!0){case i instanceof x.OD:this.loading=!0;break;case i instanceof x.m2:case i instanceof x.gk:case i instanceof x.Q3:this.loading=!1}})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-root"]],decls:4,vars:1,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch",1,"inner-sidenav-content"],["color","primary","mode","indeterminate",4,"ngIf"],["outlet","outlet"],["color","primary","mode","indeterminate"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Ut,1,0,"mat-progress-bar",1),t._UZ(2,"router-outlet",null,2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",i.loading))},directives:[p.xw,p.yH,p.Wh,u.O5,J.pW,x.lC],styles:[""],data:{animation:[Dt.g]}}),n})();var d=f(7579),_=f(2722),it=f(1365),dt=f(534),L=f(801),l=f(7731),C=f(2501),R=f(5043),w=f(5620),N=f(62),q=f(9444),ht=f(3954),b=f(9224),F=f(7423),at=f(2181),_t=f(5245),E=f(3322);const ft=function(n){return{backgroundColor:n}};function Mt(n,a){if(1&n&&t._UZ(0,"span",6),2&n){const e=t.oxw();t.Q6J("ngStyle",t.VKq(1,ft,null==e.information?null:e.information.color))}}function Jt(n,a){if(1&n&&(t.TgZ(0,"div")(1,"h4",1),t._uU(2,"Color"),t.qZA(),t.TgZ(3,"div",2),t._UZ(4,"span",7),t._uU(5),t.ALo(6,"uppercase"),t.qZA()()),2&n){const e=t.oxw();t.xp6(4),t.Q6J("ngStyle",t.VKq(4,ft,null==e.information?null:e.information.color)),t.xp6(1),t.hij(" ",t.lcZ(6,2,null==e.information?null:e.information.color)," ")}}function Qt(n,a){if(1&n&&(t.TgZ(0,"span",2),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Oqu(e)}}let Yt=(()=>{class n{constructor(e){this.commonService=e,this.chains=[""]}ngOnChanges(){this.chains=[],this.chains.push("Bitcoin "+(this.information.network?this.commonService.titleCase(this.information.network):"Testnet"))}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(N.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-node-info"]],inputs:{information:"information",showColorFieldSeparately:"showColorFieldSeparately"},features:[t.TTD],decls:17,vars:5,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],[1,"dashboard-info-title"],[1,"overflow-wrap","dashboard-info-value"],["class","dashboard-node-dot dot",3,"ngStyle",4,"ngIf"],[4,"ngIf"],["class","overflow-wrap dashboard-info-value",4,"ngFor","ngForOf"],[1,"dashboard-node-dot","dot",3,"ngStyle"],[1,"dashboard-node-square",3,"ngStyle"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div")(2,"h4",1),t._uU(3,"Alias"),t.qZA(),t.TgZ(4,"div",2),t._uU(5),t.YNc(6,Mt,1,3,"span",3),t.qZA()(),t.YNc(7,Jt,7,6,"div",4),t.TgZ(8,"div")(9,"h4",1),t._uU(10,"Implementation"),t.qZA(),t.TgZ(11,"div",2),t._uU(12),t.qZA()(),t.TgZ(13,"div")(14,"h4",1),t._uU(15,"Chain"),t.qZA(),t.YNc(16,Qt,2,1,"span",5),t.qZA()()),2&e&&(t.xp6(5),t.hij(" ",null==i.information?null:i.information.alias," "),t.xp6(1),t.Q6J("ngIf",!i.showColorFieldSeparately),t.xp6(1),t.Q6J("ngIf",i.showColorFieldSeparately),t.xp6(5),t.Oqu(null!=i.information&&i.information.lnImplementation||null!=i.information&&i.information.version?(null==i.information?null:i.information.lnImplementation)+" "+(null==i.information?null:i.information.version):""),t.xp6(4),t.Q6J("ngForOf",i.chains))},directives:[p.xw,p.yH,p.Wh,u.O5,u.PC,E.Zl,u.sg],pipes:[u.gd],styles:[""]}),n})();function Ht(n,a){if(1&n&&(t.TgZ(0,"div",2)(1,"div")(2,"h4",3),t._uU(3,"Lightning"),t.qZA(),t.TgZ(4,"div",4),t._uU(5),t.ALo(6,"number"),t.qZA(),t._UZ(7,"mat-progress-bar",5),t.qZA(),t.TgZ(8,"div")(9,"h4",3),t._uU(10,"On-chain"),t.qZA(),t.TgZ(11,"div",4),t._uU(12),t.ALo(13,"number"),t.qZA(),t._UZ(14,"mat-progress-bar",5),t.qZA(),t.TgZ(15,"div")(16,"h4",3),t._uU(17,"Total"),t.qZA(),t.TgZ(18,"div",4),t._uU(19),t.ALo(20,"number"),t.qZA()()()),2&n){const e=t.oxw();t.xp6(5),t.hij("",t.lcZ(6,5,e.balances.lightning)," Sats"),t.xp6(2),t.s9C("value",e.balances.lightning/e.balances.total*100),t.xp6(5),t.hij("",t.lcZ(13,7,e.balances.onchain)," Sats"),t.xp6(2),t.s9C("value",e.balances.onchain/e.balances.total*100),t.xp6(5),t.hij("",t.lcZ(20,9,e.balances.total)," Sats")}}function Bt(n,a){if(1&n&&(t.TgZ(0,"div",6)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let zt=(()=>{class n{constructor(){this.balances={onchain:0,lightning:0,total:0}}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-balances-info"]],inputs:{balances:"balances",errorMessage:"errorMessage"},decls:3,vars:2,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",4,"ngIf","ngIfElse"],["errorBlock",""],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayoutAlign","start",1,"dashboard-info-title"],[1,"overflow-wrap","dashboard-info-value"],["mode","determinate",1,"dashboard-progress-bar",3,"value"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,i){if(1&e&&(t.YNc(0,Ht,21,11,"div",0),t.YNc(1,Bt,3,1,"ng-template",null,1,t.W1O)),2&e){const o=t.MAs(2);t.Q6J("ngIf",""===(null==i.errorMessage?null:i.errorMessage.trim()))("ngIfElse",o)}},directives:[u.O5,p.xw,p.yH,p.Wh,J.pW],pipes:[u.JJ],styles:[""]}),n})();var y=f(7322),X=f(7238),$=f(4834),H=f(8129);const Vt=function(){return["../connections/channels/open"]},Gt=function(n){return{filter:n}};function Xt(n,a){if(1&n&&(t.TgZ(0,"div",19)(1,"a",20),t._uU(2),t.ALo(3,"slice"),t.qZA(),t.TgZ(4,"div",6)(5,"mat-hint",21)(6,"strong",8),t._uU(7,"Local:"),t.qZA(),t._uU(8),t.ALo(9,"number"),t.qZA(),t.TgZ(10,"mat-hint",22),t._UZ(11,"fa-icon",23),t._uU(12),t.ALo(13,"number"),t.qZA(),t.TgZ(14,"mat-hint",24)(15,"strong",8),t._uU(16,"Remote:"),t.qZA(),t._uU(17),t.ALo(18,"number"),t.qZA()(),t._UZ(19,"mat-progress-bar",25),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(3);t.xp6(1),t.s9C("matTooltip",e.alias||e.shortChannelId),t.s9C("matTooltipDisabled",(e.alias||e.shortChannelId).length<26),t.Q6J("routerLink",t.DdM(23,Vt))("state",t.VKq(24,Gt,e.channelId)),t.xp6(1),t.AsE(" ",t.Dn7(3,11,(null==e?null:e.alias)||(null==e?null:e.shortChannelId),0,24),"",((null==e?null:e.alias)||(null==e?null:e.shortChannelId)).length>25?"...":""," "),t.xp6(6),t.hij("",t.xi3(9,15,(null==e?null:e.toLocal)||0,"1.0-0")," Sats"),t.xp6(3),t.Q6J("icon",i.faBalanceScale),t.xp6(1),t.hij(" (",t.lcZ(13,18,(null==e?null:e.balancedness)||0),") "),t.xp6(5),t.hij("",t.xi3(18,20,(null==e?null:e.toRemote)||0,"1.0-0")," Sats"),t.xp6(2),t.s9C("value",e.toLocal&&e.toLocal>0?+e.toLocal/(+e.toLocal+ +e.toRemote)*100:0)}}function $t(n,a){if(1&n&&(t.TgZ(0,"div",17),t.YNc(1,Xt,20,26,"div",18),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.allChannels)}}function Wt(n,a){if(1&n&&(t.TgZ(0,"div",3)(1,"div",4)(2,"span",5),t._uU(3,"Total Capacity"),t.qZA(),t.TgZ(4,"div",6)(5,"mat-hint",7)(6,"strong",8),t._uU(7,"Local:"),t.qZA(),t._uU(8),t.ALo(9,"number"),t.qZA(),t.TgZ(10,"mat-hint",9),t._UZ(11,"fa-icon",10),t._uU(12),t.ALo(13,"number"),t.qZA(),t.TgZ(14,"mat-hint",11)(15,"strong",8),t._uU(16,"Remote:"),t.qZA(),t._uU(17),t.ALo(18,"number"),t.qZA()(),t._UZ(19,"mat-progress-bar",12),t.qZA(),t.TgZ(20,"div",13),t._UZ(21,"mat-divider",14),t.qZA(),t.TgZ(22,"div",15),t.YNc(23,$t,2,1,"div",16),t.qZA()()),2&n){const e=t.oxw(),i=t.MAs(2);t.xp6(8),t.hij("",t.xi3(9,7,(null==e.channelBalances?null:e.channelBalances.localBalance)||0,"1.0-0")," Sats"),t.xp6(3),t.Q6J("icon",e.faBalanceScale),t.xp6(1),t.hij(" (",t.lcZ(13,10,(null==e.channelBalances?null:e.channelBalances.balancedness)||0),") "),t.xp6(5),t.hij("",t.xi3(18,12,(null==e.channelBalances?null:e.channelBalances.remoteBalance)||0,"1.0-0")," Sats"),t.xp6(2),t.s9C("value",null!=e.channelBalances&&e.channelBalances.localBalance&&(null==e.channelBalances?null:e.channelBalances.localBalance)>0?+(null==e.channelBalances?null:e.channelBalances.localBalance)/(+(null==e.channelBalances?null:e.channelBalances.localBalance)+ +(null==e.channelBalances?null:e.channelBalances.remoteBalance))*100:0),t.xp6(4),t.Q6J("ngIf",e.allChannels&&(null==e.allChannels?null:e.allChannels.length)>0)("ngIfElse",i)}}function Kt(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",26),t._uU(1," No channels available. "),t.TgZ(2,"button",27),t.NdJ("click",function(){return t.CHM(e),t.oxw().goToChannels()}),t._uU(3,"Open Channel"),t.qZA()()}}function jt(n,a){if(1&n&&(t.TgZ(0,"div",28)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let te=(()=>{class n{constructor(e){this.router=e,this.faBalanceScale=L.DL8,this.faDumbbell=L.FlN,this.sortBy="Balance Score"}goToChannels(){this.router.navigateByUrl("/ecl/connections")}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-channel-capacity-info"]],inputs:{channelBalances:"channelBalances",allChannels:"allChannels",sortBy:"sortBy",errorMessage:"errorMessage"},decls:5,vars:2,consts:[["fxLayout","column","fxLayoutAlign","space-between stretch","fxFlex","100",4,"ngIf","ngIfElse"],["noChannelBlock",""],["errorBlock",""],["fxLayout","column","fxLayoutAlign","space-between stretch","fxFlex","100"],["fxLayout","column","fxFlex","9","fxLayoutAlign","end start"],[1,"dashboard-capacity-header","this-channel-capacity"],["fxLayout","row","fxLayoutAlign","space-between start",1,"w-100"],["fxFlex","40","fxLayoutAlign","start center",1,"font-size-90"],[1,"font-weight-900","mr-5px"],["fxFlex","20","fxLayoutAlign","center center",1,"font-size-90"],["matTooltip","Balance Score",1,"mr-3px",3,"icon"],["fxFlex","40","fxLayoutAlign","end center",1,"font-size-90"],["mode","determinate","color","accent",1,"dashboard-progress-bar","this-channel-bar",3,"value"],["fxLayout","column","fxFlex","3","fxLayoutAlign","end stretch"],[1,"dashboard-divider"],[1,"channels-capacity-scroll",3,"perfectScrollbar"],["fxLayout","column","fxFlex","100",4,"ngIf","ngIfElse"],["fxLayout","column","fxFlex","100"],["class","mt-2",4,"ngFor","ngForOf"],[1,"mt-2"],[1,"dashboard-capacity-header",3,"routerLink","state","matTooltip","matTooltipDisabled"],["fxFlex","40","fxLayoutAlign","start center",1,"font-size-90","color-primary"],["fxFlex","20","fxLayoutAlign","center center",1,"font-size-90","color-primary"],["matTooltip","Balance Score",1,"color-primary","mr-3px",3,"icon"],["fxFlex","40","fxLayoutAlign","end center",1,"font-size-90","color-primary"],["mode","determinate",1,"dashboard-progress-bar",3,"value"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between start",1,"mt-1","w-100"],["mat-stroked-button","","color","primary","tabindex","1",3,"click"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,i){if(1&e&&(t.YNc(0,Wt,24,15,"div",0),t.YNc(1,Kt,4,0,"ng-template",null,1,t.W1O),t.YNc(3,jt,3,1,"ng-template",null,2,t.W1O)),2&e){const o=t.MAs(4);t.Q6J("ngIf",""===(null==i.errorMessage?null:i.errorMessage.trim()))("ngIfElse",o)}},directives:[u.O5,p.xw,p.Wh,p.yH,y.bx,q.BN,X.gM,J.pW,$.d,H.$V,u.sg,x.yS,F.lW],pipes:[u.JJ,u.OU],styles:[".channels-capacity-scroll[_ngcontent-%COMP%]{width:100%;height:100%;overflow-y:hidden}"]}),n})();function ee(n,a){if(1&n&&(t.TgZ(0,"div",2)(1,"div",3)(2,"div")(3,"h4",4),t._uU(4,"Daily"),t.qZA(),t.TgZ(5,"div",5),t._uU(6),t.ALo(7,"number"),t.qZA()(),t.TgZ(8,"div")(9,"h4",4),t._uU(10,"Weekly"),t.qZA(),t.TgZ(11,"div",5),t._uU(12),t.ALo(13,"number"),t.qZA()(),t.TgZ(14,"div")(15,"h4",4),t._uU(16,"Monthly"),t.qZA(),t.TgZ(17,"div",5),t._uU(18),t.ALo(19,"number"),t.qZA()()(),t.TgZ(20,"div",3)(21,"div")(22,"h4",4),t._uU(23,"Transactions"),t.qZA(),t.TgZ(24,"div",5),t._uU(25),t.ALo(26,"number"),t.qZA()(),t.TgZ(27,"div")(28,"h4",4),t._uU(29,"Transactions"),t.qZA(),t.TgZ(30,"div",5),t._uU(31),t.ALo(32,"number"),t.qZA()(),t.TgZ(33,"div")(34,"h4",4),t._uU(35,"Transactions"),t.qZA(),t.TgZ(36,"div",5),t._uU(37),t.ALo(38,"number"),t.qZA()()()()),2&n){const e=t.oxw();t.xp6(6),t.hij("",t.lcZ(7,6,null==e.fees?null:e.fees.daily_fee)," Sats"),t.xp6(6),t.hij("",t.lcZ(13,8,null==e.fees?null:e.fees.weekly_fee)," Sats"),t.xp6(6),t.hij("",t.lcZ(19,10,null==e.fees?null:e.fees.monthly_fee)," Sats"),t.xp6(7),t.Oqu(t.lcZ(26,12,null==e.fees?null:e.fees.daily_txs)),t.xp6(6),t.Oqu(t.lcZ(32,14,null==e.fees?null:e.fees.weekly_txs)),t.xp6(6),t.Oqu(t.lcZ(38,16,null==e.fees?null:e.fees.monthly_txs))}}function ne(n,a){if(1&n&&(t.TgZ(0,"div",6)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let ie=(()=>{class n{constructor(){this.totalFees=[{name:"Monthly",value:0},{name:"Weekly",value:0},{name:"Daily",value:0}],this.maxFeeValue=100}ngOnChanges(){var e;if(null===(e=this.fees)||void 0===e?void 0:e.monthly_fee){this.totalFees=[{name:"Monthly",value:this.fees.monthly_fee},{name:"Weekly",value:this.fees.weekly_fee||0},{name:"Daily ",value:this.fees.daily_fee||0}];const i=Math.ceil(Math.log(this.fees.monthly_fee+1)/Math.LN10),o=Math.pow(10,i-1);this.maxFeeValue=Math.ceil(this.fees.monthly_fee/o)*o/5||100,Object.assign(this,this.totalFees)}else this.totalFees=[{name:"Monthly",value:0},{name:"Weekly",value:0},{name:"Daily",value:0}],this.maxFeeValue=100,Object.assign(this,this.totalFees)}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-fee-info"]],inputs:{fees:"fees",errorMessage:"errorMessage"},features:[t.TTD],decls:3,vars:2,consts:[["fxLayout","row","fxFlex","100","fxLayoutAlign","start stretch",4,"ngIf","ngIfElse"],["errorBlock",""],["fxLayout","row","fxFlex","100","fxLayoutAlign","start stretch"],["fxLayout","column","fxFlex","50","fxLayoutAlign","space-between stretch"],["fxLayoutAlign","start",1,"dashboard-info-title"],[1,"overflow-wrap","dashboard-info-value"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,i){if(1&e&&(t.YNc(0,ee,39,18,"div",0),t.YNc(1,ne,3,1,"ng-template",null,1,t.W1O)),2&e){const o=t.MAs(2);t.Q6J("ngIf",""===(null==i.errorMessage?null:i.errorMessage.trim()))("ngIfElse",o)}},directives:[u.O5,p.xw,p.yH,p.Wh],pipes:[u.JJ],styles:[""]}),n})();function ae(n,a){if(1&n&&(t.TgZ(0,"div",2)(1,"div",3)(2,"div")(3,"h4",4),t._uU(4,"Active"),t.qZA(),t.TgZ(5,"div",5),t._UZ(6,"span",6),t._uU(7),t.ALo(8,"number"),t.qZA()(),t.TgZ(9,"div")(10,"h4",4),t._uU(11,"Pending"),t.qZA(),t.TgZ(12,"div",5),t._UZ(13,"span",7),t._uU(14),t.ALo(15,"number"),t.qZA()(),t.TgZ(16,"div")(17,"h4",4),t._uU(18,"Inactive"),t.qZA(),t.TgZ(19,"div",5),t._UZ(20,"span",8),t._uU(21),t.ALo(22,"number"),t.qZA()()(),t.TgZ(23,"div",3)(24,"div")(25,"h4",4),t._uU(26,"Capacity"),t.qZA(),t.TgZ(27,"div",5),t._uU(28),t.ALo(29,"number"),t.qZA()(),t.TgZ(30,"div")(31,"h4",4),t._uU(32,"Capacity"),t.qZA(),t.TgZ(33,"div",5),t._uU(34),t.ALo(35,"number"),t.qZA()(),t.TgZ(36,"div")(37,"h4",4),t._uU(38,"Capacity"),t.qZA(),t.TgZ(39,"div",5),t._uU(40),t.ALo(41,"number"),t.qZA()()()()),2&n){const e=t.oxw();t.xp6(7),t.Oqu(t.lcZ(8,6,(null==e.channelsStatus.active?null:e.channelsStatus.active.channels)||0)),t.xp6(7),t.Oqu(t.lcZ(15,8,(null==e.channelsStatus.pending?null:e.channelsStatus.pending.channels)||0)),t.xp6(7),t.Oqu(t.lcZ(22,10,(null==e.channelsStatus.inactive?null:e.channelsStatus.inactive.channels)||0)),t.xp6(7),t.hij("",t.lcZ(29,12,(null==e.channelsStatus.active?null:e.channelsStatus.active.capacity)||0)," Sats"),t.xp6(6),t.hij("",t.lcZ(35,14,(null==e.channelsStatus.pending?null:e.channelsStatus.pending.capacity)||0)," Sats"),t.xp6(6),t.hij("",t.lcZ(41,16,(null==e.channelsStatus.inactive?null:e.channelsStatus.inactive.capacity)||0)," Sats")}}function oe(n,a){if(1&n&&(t.TgZ(0,"div",9)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let se=(()=>{class n{constructor(){this.channelsStatus={}}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-channel-status-info"]],inputs:{channelsStatus:"channelsStatus",errorMessage:"errorMessage"},decls:3,vars:2,consts:[["fxLayout","row","fxFlex","100","fxLayoutAlign","start stretch",4,"ngIf","ngIfElse"],["errorBlock",""],["fxLayout","row","fxFlex","100","fxLayoutAlign","start stretch"],["fxLayout","column","fxFlex","50","fxLayoutAlign","space-between stretch"],["fxLayoutAlign","start",1,"dashboard-info-title"],[1,"overflow-wrap","dashboard-info-value"],[1,"dot","tiny-dot","green"],[1,"dot","tiny-dot","yellow"],[1,"dot","tiny-dot","grey"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,i){if(1&e&&(t.YNc(0,ae,42,18,"div",0),t.YNc(1,oe,3,1,"ng-template",null,1,t.W1O)),2&e){const o=t.MAs(2);t.Q6J("ngIf",""===(null==i.errorMessage?null:i.errorMessage.trim()))("ngIfElse",o)}},directives:[u.O5,p.xw,p.yH,p.Wh],pipes:[u.JJ],styles:[""]}),n})();function le(n,a){if(1&n&&(t.TgZ(0,"mat-hint",19)(1,"strong",20),t._uU(2,"Capacity: "),t.qZA(),t._uU(3),t.ALo(4,"number"),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(3),t.hij("",t.xi3(4,1,e.toRemote||0,"1.0-0")," Sats")}}function re(n,a){if(1&n&&(t.TgZ(0,"mat-hint",19)(1,"strong",20),t._uU(2,"Capacity: "),t.qZA(),t._uU(3),t.ALo(4,"number"),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(3),t.hij("",t.xi3(4,1,e.toLocal||0,"1.0-0")," Sats")}}function ce(n,a){if(1&n&&t._UZ(0,"mat-progress-bar",21),2&n){const e=t.oxw().$implicit,i=t.oxw(3);t.s9C("value",i.totalLiquidity>0?(+e.toRemote||0)/i.totalLiquidity*100:0)}}function ue(n,a){if(1&n&&t._UZ(0,"mat-progress-bar",21),2&n){const e=t.oxw().$implicit,i=t.oxw(3);t.s9C("value",i.totalLiquidity>0?(+e.toLocal||0)/i.totalLiquidity*100:0)}}const pe=function(){return["../connections/channels/open"]},me=function(n){return{filter:n}};function de(n,a){if(1&n&&(t.TgZ(0,"div",14)(1,"a",15),t._uU(2),t.ALo(3,"slice"),t.qZA(),t.TgZ(4,"div",16),t.YNc(5,le,5,4,"mat-hint",17),t.YNc(6,re,5,4,"mat-hint",17),t.qZA(),t.YNc(7,ce,1,1,"mat-progress-bar",18),t.YNc(8,ue,1,1,"mat-progress-bar",18),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(3);t.xp6(1),t.s9C("matTooltip",e.alias||e.shortChannelId),t.s9C("matTooltipDisabled",(e.alias||e.shortChannelId).length<26),t.Q6J("routerLink",t.DdM(14,pe))("state",t.VKq(15,me,e.channelId)),t.xp6(1),t.AsE(" ",t.Dn7(3,10,e.alias||e.shortChannelId,0,24),"",(e.alias||e.shortChannelId).length>25?"...":""," "),t.xp6(3),t.Q6J("ngIf","In"===i.direction),t.xp6(1),t.Q6J("ngIf","Out"===i.direction),t.xp6(1),t.Q6J("ngIf","In"===i.direction),t.xp6(1),t.Q6J("ngIf","Out"===i.direction)}}function he(n,a){if(1&n&&(t.TgZ(0,"div",12),t.YNc(1,de,9,17,"div",13),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.allChannels)}}const _e=function(n,a,e){return{"mb-4":n,"mb-2":a,"mb-1":e}};function fe(n,a){if(1&n&&(t.TgZ(0,"div",3)(1,"div",4)(2,"span",5),t._uU(3,"Total Capacity"),t.qZA(),t.TgZ(4,"mat-hint",6),t._uU(5),t.ALo(6,"number"),t.qZA(),t._UZ(7,"mat-progress-bar",7),t.qZA(),t.TgZ(8,"div",8),t._UZ(9,"mat-divider",9),t.qZA(),t.TgZ(10,"div",10),t.YNc(11,he,2,1,"div",11),t.qZA()()),2&n){const e=t.oxw(),i=t.MAs(2);t.Q6J("ngClass",t.kEZ(7,_e,e.screenSize===e.screenSizeEnum.XS||e.screenSize===e.screenSizeEnum.SM,e.screenSize===e.screenSizeEnum.MD,e.screenSize===e.screenSizeEnum.LG||e.screenSize===e.screenSizeEnum.XL)),t.xp6(5),t.hij("",t.xi3(6,4,e.totalLiquidity,"1.0-0")," Sats"),t.xp6(6),t.Q6J("ngIf",e.allChannels&&e.allChannels.length>0)("ngIfElse",i)}}function ge(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"button",24),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).goToChannels()}),t._uU(1,"Open Channel"),t.qZA()}}function Ce(n,a){if(1&n&&(t.TgZ(0,"div",22),t._uU(1," No channels available. "),t.YNc(2,ge,2,0,"button",23),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngIf","Out"===e.direction)}}function xe(n,a){if(1&n&&(t.TgZ(0,"div",25)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let ye=(()=>{class n{constructor(e,i){this.router=e,this.commonService=i,this.screenSize="",this.screenSizeEnum=l.cu}ngOnInit(){this.screenSize=this.commonService.getScreenSize()}goToChannels(){this.router.navigateByUrl("/ecl/connections")}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(x.F0),t.Y36(N.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-channel-liquidity-info"]],inputs:{direction:"direction",totalLiquidity:"totalLiquidity",allChannels:"allChannels",errorMessage:"errorMessage"},decls:5,vars:2,consts:[["fxLayout","column","fxLayoutAlign","space-between stretch","fxFlex","100",3,"ngClass",4,"ngIf","ngIfElse"],["noChannelBlock",""],["errorBlock",""],["fxLayout","column","fxLayoutAlign","space-between stretch","fxFlex","100",3,"ngClass"],["fxLayout","column","fxFlex","9","fxLayoutAlign","end start"],[1,"dashboard-capacity-header","this-channel-capacity"],[1,"font-size-90"],["mode","determinate","color","accent","value","100",1,"dashboard-progress-bar","this-channel-bar"],["fxLayout","column","fxFlex","3","fxLayoutAlign","end stretch"],[1,"dashboard-divider"],["fxLayout","column","fxFlex.gt-sm","88","fxFlex","84","fxLayoutAlign","start start",3,"perfectScrollbar"],["fxLayout","column","fxFlex","100","class","w-100",4,"ngIf","ngIfElse"],["fxLayout","column","fxFlex","100",1,"w-100"],["class","mt-2",4,"ngFor","ngForOf"],[1,"mt-2"],[1,"dashboard-capacity-header",3,"routerLink","state","matTooltip","matTooltipDisabled"],["fxLayout","row","fxLayoutAlign","space-between start",1,"w-100"],["fxFlex","100","fxLayoutAlign","start center","class","font-size-90 color-primary",4,"ngIf"],["class","dashboard-progress-bar","mode","determinate",3,"value",4,"ngIf"],["fxFlex","100","fxLayoutAlign","start center",1,"font-size-90","color-primary"],[1,"font-weight-900","mr-5px"],["mode","determinate",1,"dashboard-progress-bar",3,"value"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between start",1,"mt-1"],["mat-stroked-button","","color","primary","tabindex","1",3,"click",4,"ngIf"],["mat-stroked-button","","color","primary","tabindex","1",3,"click"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,i){if(1&e&&(t.YNc(0,fe,12,11,"div",0),t.YNc(1,Ce,3,1,"ng-template",null,1,t.W1O),t.YNc(3,xe,3,1,"ng-template",null,2,t.W1O)),2&e){const o=t.MAs(4);t.Q6J("ngIf",""===(null==i.errorMessage?null:i.errorMessage.trim()))("ngIfElse",o)}},directives:[u.O5,p.xw,p.Wh,p.yH,u.mk,E.oO,y.bx,J.pW,$.d,H.$V,u.sg,x.yS,X.gM,F.lW],pipes:[u.JJ,u.OU],styles:[""]}),n})();var P=f(3251),Q=f(9300),S=f(6087),A=f(4847),r=f(2075),U=f(8966),k=f(2994),G=f(6642),m=f(3075),M=f(7531),W=f(3390),K=f(6534),D=f(4107),B=f(508);function ve(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Description is required."),t.qZA())}function Le(n,a){if(1&n&&(t.TgZ(0,"mat-option",25),t._uU(1),t.ALo(2,"titlecase"),t.qZA()),2&n){const e=a.$implicit;t.Q6J("value",e),t.xp6(1),t.Oqu(t.lcZ(2,2,e))}}function Te(n,a){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.invoiceError)}}function be(n,a){if(1&n&&(t.TgZ(0,"div",26),t._UZ(1,"fa-icon",27),t.YNc(2,Te,2,1,"span",11),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faExclamationTriangle),t.xp6(1),t.Q6J("ngIf",""!==e.invoiceError)}}let Ae=(()=>{class n{constructor(e,i,o,s,c,h){this.dialogRef=e,this.data=i,this.store=o,this.decimalPipe=s,this.commonService=c,this.actions=h,this.faExclamationTriangle=L.eHv,this.selNode={},this.description="",this.invoiceValue=null,this.invoiceValueHint="",this.invoicePaymentReq="",this.information={},this.private=!1,this.expiryStep=100,this.pageSize=l.IV,this.timeUnitEnum=l.Qk,this.timeUnits=l.LO,this.selTimeUnit=l.Qk.SECS,this.invoiceError="",this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x]}ngOnInit(){this.pageSize=this.data.pageSize,this.store.select(C.pg).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.selNode=e}),this.store.select(C.yD).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.actions.pipe((0,_.R)(this.unSubs[2]),(0,Q.h)(e=>e.type===l.lr.UPDATE_API_CALL_STATUS_ECL)).subscribe(e=>{e.type===l.lr.UPDATE_API_CALL_STATUS_ECL&&"CreateInvoice"===e.payload.action&&(e.payload.status===l.Bn.ERROR&&(this.invoiceError=e.payload.message),e.payload.status===l.Bn.COMPLETED&&this.dialogRef.close())})}onAddInvoice(e){if(this.invoiceError="",!this.description)return!0;let i=this.expiry?this.expiry:3600;this.expiry&&this.selTimeUnit!==l.Qk.SECS&&(i=this.commonService.convertTime(this.expiry,this.selTimeUnit,l.Qk.SECS));let o=null;o=this.invoiceValue?{description:this.description,expireIn:i,amountMsat:1e3*this.invoiceValue}:{description:this.description,expireIn:i},this.store.dispatch((0,k.Z$)({payload:o}))}resetData(){this.description="",this.invoiceValue=null,this.private=!1,this.expiry=null,this.invoiceValueHint="",this.selTimeUnit=l.Qk.SECS,this.invoiceError=""}onInvoiceValueChange(){this.selNode&&this.selNode.fiatConversion&&this.invoiceValue&&this.invoiceValue>99&&(this.invoiceValueHint="",this.commonService.convertCurrency(this.invoiceValue,l.NT.SATS,l.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[3])).subscribe({next:e=>{this.invoiceValueHint="= "+this.decimalPipe.transform(e.OTHER,l.Xz.OTHER)+" "+e.symbol},error:e=>{this.invoiceValueHint="Conversion Error: "+e}}))}onTimeUnitChange(e){this.expiry&&this.selTimeUnit!==e.value&&(this.expiry=this.commonService.convertTime(this.expiry,this.selTimeUnit,e.value)),this.selTimeUnit=e.value}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(U.so),t.Y36(U.WI),t.Y36(w.yh),t.Y36(u.JJ),t.Y36(N.v),t.Y36(G.eX))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-create-invoices"]],decls:35,vars:16,consts:[["fxLayout","row"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title"],["tabindex","8","fxFlex","5","fxLayoutAlign","center","default","","mat-button","",1,"btn-close-x","p-0",3,"mat-dialog-close"],[1,"padding-gap-x-large"],["fxLayout","row wrap","fxLayoutAlign","start space-between","fxFlex","100"],["addInvoiceForm","ngForm"],["fxFlex","100","fxLayoutAlign","start end"],["matInput","","autoFocus","","placeholder","Description","tabindex","2","name","description","required","",3,"ngModel","ngModelChange"],[4,"ngIf"],["fxLayout","row","fxLayoutAlign","space-between start","fxFlex","100"],["fxFlex","40"],["matInput","","placeholder","Amount","type","number","tabindex","3","name","invValue",3,"ngModel","step","min","ngModelChange","keyup"],["matSuffix",""],["fxFlex","30"],["matInput","","placeholder","Expiry","type","number","name","exp","tabindex","4",3,"ngModel","step","min","ngModelChange"],["fxFlex","26"],["tabindex","5","name","timeUnit",3,"value","selectionChange"],[3,"value",4,"ngFor","ngForOf"],["fxFlex","100","class","alert alert-danger mt-1",4,"ngIf"],["fxLayout","row","fxFlex","100","fxLayoutAlign","end center",1,"mt-2"],["mat-button","","color","primary","tabindex","7","type","reset",1,"mr-1",3,"click"],["mat-button","","color","primary","tabindex","8",3,"click"],[3,"value"],["fxFlex","100",1,"alert","alert-danger","mt-1"],[1,"mr-1","alert-icon",3,"icon"]],template:function(e,i){if(1&e){const o=t.EpF();t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3)(4,"span",4),t._uU(5,"Create Invoice"),t.qZA()(),t.TgZ(6,"button",5),t._uU(7,"X"),t.qZA()(),t.TgZ(8,"mat-card-content",6)(9,"form",7,8)(11,"mat-form-field",9)(12,"input",10),t.NdJ("ngModelChange",function(c){return i.description=c}),t.qZA(),t.YNc(13,ve,2,0,"mat-error",11),t.qZA(),t.TgZ(14,"div",12)(15,"mat-form-field",13)(16,"input",14),t.NdJ("ngModelChange",function(c){return i.invoiceValue=c})("keyup",function(){return i.onInvoiceValueChange()}),t.qZA(),t.TgZ(17,"span",15),t._uU(18," Sats "),t.qZA(),t.TgZ(19,"mat-hint"),t._uU(20),t.qZA()(),t.TgZ(21,"mat-form-field",16)(22,"input",17),t.NdJ("ngModelChange",function(c){return i.expiry=c}),t.qZA(),t.TgZ(23,"span",15),t._uU(24),t.ALo(25,"titlecase"),t.qZA()(),t.TgZ(26,"mat-form-field",18)(27,"mat-select",19),t.NdJ("selectionChange",function(c){return i.onTimeUnitChange(c)}),t.YNc(28,Le,3,4,"mat-option",20),t.qZA()()(),t.YNc(29,be,3,2,"div",21),t.TgZ(30,"div",22)(31,"button",23),t.NdJ("click",function(){return i.resetData()}),t._uU(32,"Clear Field"),t.qZA(),t.TgZ(33,"button",24),t.NdJ("click",function(){t.CHM(o);const c=t.MAs(10);return i.onAddInvoice(c)}),t._uU(34,"Create Invoice"),t.qZA()()()()()()}2&e&&(t.xp6(6),t.Q6J("mat-dialog-close",!1),t.xp6(6),t.Q6J("ngModel",i.description),t.xp6(1),t.Q6J("ngIf",!i.description),t.xp6(3),t.Q6J("ngModel",i.invoiceValue)("step",100)("min",1),t.xp6(4),t.Oqu(i.invoiceValueHint),t.xp6(2),t.Q6J("ngModel",i.expiry)("step",i.selTimeUnit===i.timeUnitEnum.SECS?300:i.selTimeUnit===i.timeUnitEnum.MINS?10:i.selTimeUnit===i.timeUnitEnum.HOURS?2:1)("min",1),t.xp6(2),t.hij(" ",t.lcZ(25,14,i.selTimeUnit)," "),t.xp6(3),t.Q6J("value",i.selTimeUnit),t.xp6(1),t.Q6J("ngForOf",i.timeUnits),t.xp6(1),t.Q6J("ngIf",""!==i.invoiceError))},directives:[p.xw,p.yH,b.dk,p.Wh,F.lW,U.ZT,b.dn,m._Y,m.JL,m.F,y.KE,M.Nt,m.Fj,W.h,m.Q7,m.JJ,m.On,u.O5,y.TO,m.wV,m.qQ,K.q,y.R9,y.bx,D.gD,u.sg,B.ey,q.BN],pipes:[u.rS],styles:[".mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})();var Se=f(7766),Z=f(7861);function Ze(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Description is required."),t.qZA())}function we(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"form",4,5)(2,"mat-form-field",6)(3,"input",7),t.NdJ("ngModelChange",function(o){return t.CHM(e),t.oxw().description=o}),t.qZA(),t.YNc(4,Ze,2,0,"mat-error",8),t.qZA(),t.TgZ(5,"mat-form-field",9)(6,"input",10,11),t.NdJ("ngModelChange",function(o){return t.CHM(e),t.oxw().invoiceValue=o})("keyup",function(){return t.CHM(e),t.oxw().onInvoiceValueChange()}),t.qZA(),t.TgZ(8,"span",12),t._uU(9," Sats "),t.qZA(),t.TgZ(10,"mat-hint"),t._uU(11),t.qZA()(),t.TgZ(12,"div",13)(13,"button",14),t.NdJ("click",function(){return t.CHM(e),t.oxw().resetData()}),t._uU(14,"Clear Field"),t.qZA(),t.TgZ(15,"button",15),t.NdJ("click",function(){t.CHM(e);const o=t.MAs(1);return t.oxw().onAddInvoice(o)}),t._uU(16,"Create Invoice"),t.qZA()()()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngModel",e.description),t.xp6(1),t.Q6J("ngIf",!e.description),t.xp6(2),t.Q6J("ngModel",e.invoiceValue)("step",100)("min",1),t.xp6(5),t.Oqu(e.invoiceValueHint)}}function Ee(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",16)(1,"button",17),t.NdJ("click",function(){return t.CHM(e),t.oxw().openCreateInvoiceModal()}),t._uU(2,"Create Invoice"),t.qZA()()}}function Ie(n,a){1&n&&t._UZ(0,"mat-progress-bar",47)}function Oe(n,a){1&n&&(t.TgZ(0,"th",48),t._uU(1," Date Created "),t.qZA())}const ot=function(n){return{"mr-0":n}};function Fe(n,a){if(1&n&&t._UZ(0,"span",53),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,ot,e.screenSize===e.screenSizeEnum.XS))}}function qe(n,a){if(1&n&&t._UZ(0,"span",54),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,ot,e.screenSize===e.screenSizeEnum.XS))}}function Re(n,a){if(1&n&&t._UZ(0,"span",55),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,ot,e.screenSize===e.screenSizeEnum.XS))}}function Ne(n,a){if(1&n&&(t.TgZ(0,"td",49),t.YNc(1,Fe,1,3,"span",50),t.YNc(2,qe,1,3,"span",51),t.YNc(3,Re,1,3,"span",52),t._uU(4),t.ALo(5,"date"),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Q6J("ngIf","received"===e.status),t.xp6(1),t.Q6J("ngIf","unpaid"===e.status),t.xp6(1),t.Q6J("ngIf",!e.status||"expired"===e.status||"unknown"===e.status),t.xp6(1),t.hij(" ",t.xi3(5,4,1e3*e.timestamp,"dd/MMM/y HH:mm")," ")}}function ke(n,a){1&n&&(t.TgZ(0,"th",48),t._uU(1," Date Settled "),t.qZA())}function Pe(n,a){if(1&n&&(t.TgZ(0,"td",49),t._uU(1),t.ALo(2,"date"),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Oqu(t.xi3(2,1,1e3*e.receivedAt,"dd/MMM/y HH:mm")||"-")}}function De(n,a){1&n&&(t.TgZ(0,"th",48),t._uU(1," Description "),t.qZA())}const Ue=function(n){return{"max-width":n}};function Me(n,a){if(1&n&&(t.TgZ(0,"td",49)(1,"div",56)(2,"span",57),t._uU(3),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw(2);t.xp6(1),t.Q6J("ngStyle",t.VKq(2,Ue,i.screenSize===i.screenSizeEnum.XS?"10rem":"32rem")),t.xp6(2),t.Oqu(e.description)}}function Je(n,a){1&n&&(t.TgZ(0,"th",58),t._uU(1," Amount (Sats) "),t.qZA())}function Qe(n,a){if(1&n&&(t.TgZ(0,"td",59)(1,"span",60),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",e.amount?t.xi3(3,1,e.amount,"1.0-0"):"-","")}}function Ye(n,a){1&n&&(t.TgZ(0,"th",58),t._uU(1," Amount Settled (Sats) "),t.qZA())}function He(n,a){if(1&n&&(t.TgZ(0,"td",59)(1,"span",60),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",e.amountSettled?t.xi3(3,1,e.amountSettled,"1.0-0"):"-","")}}function Be(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"th",61)(1,"div",62)(2,"mat-select",63),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",64),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}const ze=function(n){return{"px-3":n}};function Ve(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",65)(1,"div",66)(2,"mat-select",67),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",64),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw(2).onInvoiceClick(s)}),t._uU(5,"View Info"),t.qZA(),t.TgZ(6,"mat-option",64),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw(2).onRefreshInvoice(s)}),t._uU(7,"Refresh"),t.qZA()()()()}if(2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,ze,e.screenSize!==e.screenSizeEnum.XS))}}function Ge(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No invoice available."),t.qZA())}function Xe(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting invoices..."),t.qZA())}function $e(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.errorMessage)}}function We(n,a){if(1&n&&(t.TgZ(0,"td",68),t.YNc(1,Ge,2,0,"p",8),t.YNc(2,Xe,2,0,"p",8),t.YNc(3,$e,2,1,"p",8),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",(!(null!=e.invoices&&e.invoices.data)||(null==e.invoices||null==e.invoices.data?null:e.invoices.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.invoices&&e.invoices.data)||(null==e.invoices||null==e.invoices.data?null:e.invoices.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.invoices&&e.invoices.data)||(null==e.invoices||null==e.invoices.data?null:e.invoices.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const Ke=function(n){return{"display-none":n}};function je(n,a){if(1&n&&t._UZ(0,"tr",69),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,Ke,(null==e.invoices?null:e.invoices.data)&&(null==e.invoices||null==e.invoices.data?null:e.invoices.data.length)>0))}}function tn(n,a){1&n&&t._UZ(0,"tr",70)}function en(n,a){1&n&&t._UZ(0,"tr",71)}const nn=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},an=function(){return["no_invoice"]};function on(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",18)(1,"div",19)(2,"div",20),t._UZ(3,"fa-icon",21),t.TgZ(4,"span",22),t._uU(5,"Invoices History"),t.qZA()(),t.TgZ(6,"mat-form-field",23)(7,"input",24),t.NdJ("keyup",function(){return t.CHM(e),t.oxw().applyFilter()})("ngModelChange",function(o){return t.CHM(e),t.oxw().selFilter=o}),t.qZA()()(),t.TgZ(8,"div",25),t.YNc(9,Ie,1,0,"mat-progress-bar",26),t.TgZ(10,"table",27,28),t.ynx(12,29),t.YNc(13,Oe,2,0,"th",30),t.YNc(14,Ne,6,7,"td",31),t.BQk(),t.ynx(15,32),t.YNc(16,ke,2,0,"th",30),t.YNc(17,Pe,3,4,"td",31),t.BQk(),t.ynx(18,33),t.YNc(19,De,2,0,"th",30),t.YNc(20,Me,4,4,"td",31),t.BQk(),t.ynx(21,34),t.YNc(22,Je,2,0,"th",35),t.YNc(23,Qe,4,4,"td",36),t.BQk(),t.ynx(24,37),t.YNc(25,Ye,2,0,"th",35),t.YNc(26,He,4,4,"td",36),t.BQk(),t.ynx(27,38),t.YNc(28,Be,6,0,"th",39),t.YNc(29,Ve,8,3,"td",40),t.BQk(),t.ynx(30,41),t.YNc(31,We,4,3,"td",42),t.BQk(),t.YNc(32,je,1,3,"tr",43),t.YNc(33,tn,1,0,"tr",44),t.YNc(34,en,1,0,"tr",45),t.qZA()(),t._UZ(35,"mat-paginator",46),t.qZA()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("icon",e.faHistory),t.xp6(4),t.Q6J("ngModel",e.selFilter),t.xp6(2),t.Q6J("ngIf",e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",e.invoices)("ngClass",t.VKq(12,nn,""!==e.errorMessage)),t.xp6(22),t.Q6J("matFooterRowDef",t.DdM(14,an)),t.xp6(1),t.Q6J("matHeaderRowDef",e.displayedColumns)("matHeaderRowDefSticky",e.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",e.displayedColumns),t.xp6(1),t.Q6J("pageSize",e.pageSize)("pageSizeOptions",e.pageSizeOptions)("showFirstLastButtons",e.screenSize!==e.screenSizeEnum.XS)}}let gt=(()=>{class n{constructor(e,i,o,s,c,h){this.logger=e,this.store=i,this.decimalPipe=o,this.commonService=s,this.datePipe=c,this.actions=h,this.calledFrom="transactions",this.faHistory=L.qO$,this.selNode={},this.newlyAddedInvoiceMemo="",this.newlyAddedInvoiceValue=0,this.description="",this.invoiceValue=null,this.invoiceValueHint="",this.displayedColumns=[],this.invoicePaymentReq="",this.invoiceJSONArr=[],this.information={},this.flgSticky=!1,this.selFilter="",this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["timestamp","amount","actions"]):this.screenSize===l.cu.SM||this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["timestamp","amount","amountSettled","actions"]):(this.flgSticky=!0,this.displayedColumns=["timestamp","receivedAt","description","amount","amountSettled","actions"])}ngOnInit(){this.store.select(C.pg).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.selNode=e}),this.store.select(C.yD).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.store.select(C.Ef).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.invoiceJSONArr=e.invoices&&e.invoices.length>0?e.invoices:[],this.invoiceJSONArr&&this.invoiceJSONArr.length>0&&this.sort&&this.paginator&&this.loadInvoicesTable(this.invoiceJSONArr),this.logger.info(e)}),this.actions.pipe((0,_.R)(this.unSubs[3]),(0,Q.h)(e=>e.type===l.lr.SET_LOOKUP_ECL||e.type===l.lr.UPDATE_API_CALL_STATUS_ECL)).subscribe(e=>{e.type===l.lr.SET_LOOKUP_ECL&&this.invoiceJSONArr.length>0&&this.sort&&this.paginator&&e.payload&&(this.updateInvoicesData(JSON.parse(JSON.stringify(e.payload))),this.loadInvoicesTable(this.invoiceJSONArr))})}ngAfterViewInit(){this.invoiceJSONArr&&this.invoiceJSONArr.length>0&&this.sort&&this.paginator&&this.loadInvoicesTable(this.invoiceJSONArr)}openCreateInvoiceModal(){this.store.dispatch((0,Z.qR)({payload:{data:{pageSize:this.pageSize,component:Ae}}}))}onAddInvoice(e){if(!this.description)return!0;const i=this.expiry?this.expiry:3600;this.newlyAddedInvoiceMemo="ulbl"+Math.random().toString(36).slice(2)+Date.now(),this.newlyAddedInvoiceValue=this.invoiceValue;let o=null;o=this.invoiceValue?{description:this.description,expireIn:i,amountMsat:1e3*this.invoiceValue}:{description:this.description,expireIn:i},this.store.dispatch((0,k.Z$)({payload:o})),this.resetData()}onInvoiceClick(e){this.store.dispatch((0,Z.qR)({payload:{data:{invoice:e,newlyAdded:!1,component:Se.R}}}))}onRefreshInvoice(e){this.store.dispatch((0,k.n7)({payload:e.paymentHash}))}updateInvoicesData(e){var i;this.invoiceJSONArr=null===(i=this.invoiceJSONArr)||void 0===i?void 0:i.map(o=>o.paymentHash===e.paymentHash?e:o)}loadInvoicesTable(e){this.invoices=new r.by(e?[...e]:[]),this.invoices.sortingDataAccessor=(i,o)=>i[o]&&isNaN(i[o])?i[o].toLocaleLowerCase():i[o]?+i[o]:null,this.invoices.sort=this.sort,this.invoices.filterPredicate=(i,o)=>{var s;return((i.timestamp?null===(s=this.datePipe.transform(new Date(1e3*i.timestamp),"dd/MMM/YYYY HH:mm"))||void 0===s?void 0:s.toLowerCase():"")+JSON.stringify(i).toLowerCase()).includes(o)},this.invoices.paginator=this.paginator,this.applyFilter()}resetData(){this.description="",this.invoiceValue=null,this.expiry=null,this.invoiceValueHint=""}applyFilter(){this.invoices.filter=this.selFilter.trim().toLowerCase()}onInvoiceValueChange(){this.selNode&&this.selNode.fiatConversion&&this.invoiceValue&&this.invoiceValue>99&&(this.invoiceValueHint="",this.commonService.convertCurrency(this.invoiceValue,l.NT.SATS,l.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[4])).subscribe({next:e=>{this.invoiceValueHint="= "+this.decimalPipe.transform(e.OTHER,l.Xz.OTHER)+" "+e.symbol},error:e=>{this.invoiceValueHint="Conversion Error: "+e}}))}onDownloadCSV(){this.invoices.data&&this.invoices.data.length>0&&this.commonService.downloadFile(this.invoices.data,"Invoices")}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(w.yh),t.Y36(u.JJ),t.Y36(N.v),t.Y36(u.uU),t.Y36(G.eX))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-lightning-invoices"]],viewQuery:function(e,i){if(1&e&&(t.Gf(A.YE,5),t.Gf(S.NW,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.sort=o.first),t.iGM(o=t.CRH())&&(i.paginator=o.first)}},inputs:{calledFrom:"calledFrom"},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Invoices")}])],decls:4,vars:3,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch"],["fxLayout","row wrap","fxLayoutAlign","stretch start","fxFlex","100",4,"ngIf"],["fxLayout","row",4,"ngIf"],["fxLayout","column","fxLayoutAlign","start stretch",4,"ngIf"],["fxLayout","row wrap","fxLayoutAlign","stretch start","fxFlex","100"],["addInvoiceForm","ngForm"],["fxFlex","100","fxLayoutAlign","space-between stretch"],["matInput","","placeholder","Description","tabindex","2","name","description","required","true",3,"ngModel","ngModelChange"],[4,"ngIf"],["fxFlex","100","fxLayoutAlign","start end"],["matInput","","placeholder","Amount","type","number","tabindex","3","name","invValue",3,"ngModel","step","min","ngModelChange","keyup"],["invcVal","ngModel"],["matSuffix",""],["fxLayout","row",1,"mt-1"],["mat-stroked-button","","color","primary","tabindex","9","type","reset",1,"mr-1",3,"click"],["mat-flat-button","","color","primary","tabindex","10",3,"click"],["fxLayout","row"],["mat-flat-button","","color","primary","tabindex","8",3,"click"],["fxLayout","column","fxLayoutAlign","start stretch"],["fxLayout","column","fxLayoutAlign","start stretch","fxLayout.gt-sm","row wrap",1,"page-sub-title-container","mt-1"],["fxFlex","70","fxLayoutAlign","start start","fxLayoutAlign.gt-sm","start center"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxFlex","30","fxLayoutAlign","start end"],["matInput","","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","column","fxLayoutAlign","start center","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",3,"dataSource","ngClass"],["table",""],["matColumnDef","timestamp"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","receivedAt"],["matColumnDef","description"],["matColumnDef","amount"],["mat-header-cell","","mat-sort-header","","arrowPosition","before","class","pr-3",4,"matHeaderCellDef"],["mat-cell","","class","pr-3",4,"matCellDef"],["matColumnDef","amountSettled"],["matColumnDef","actions"],["mat-header-cell","","class","px-3",4,"matHeaderCellDef"],["mat-cell","","fxLayoutAlign","end center",3,"ngClass",4,"matCellDef"],["matColumnDef","no_invoice"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["class","dot green","matTooltip","Received","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["class","dot yellow","matTooltip","Unpaid","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["class","dot red","matTooltip","Expired/Unknown","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["matTooltip","Received","matTooltipPosition","right",1,"dot","green",3,"ngClass"],["matTooltip","Unpaid","matTooltipPosition","right",1,"dot","yellow",3,"ngClass"],["matTooltip","Expired/Unknown","matTooltipPosition","right",1,"dot","red",3,"ngClass"],[1,"ellipsis-parent",3,"ngStyle"],[1,"ellipsis-child"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",1,"pr-3"],["mat-cell","",1,"pr-3"],["fxLayoutAlign","end center"],["mat-header-cell","",1,"px-3"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",3,"ngClass"],["fxLayoutAlign","center center",1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","4",1,"mr-0"],["mat-footer-cell","","colspan","4"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t.YNc(1,we,17,6,"form",1),t.YNc(2,Ee,3,0,"div",2),t.YNc(3,on,36,15,"div",3),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf","home"===i.calledFrom),t.xp6(1),t.Q6J("ngIf","transactions"===i.calledFrom),t.xp6(1),t.Q6J("ngIf","transactions"===i.calledFrom))},directives:[p.xw,p.yH,p.Wh,u.O5,m._Y,m.JL,m.F,y.KE,M.Nt,m.Fj,m.Q7,m.JJ,m.On,y.TO,m.wV,m.qQ,K.q,y.R9,y.bx,F.lW,q.BN,H.$V,J.pW,r.BZ,A.YE,u.mk,E.oO,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,X.gM,u.PC,E.Zl,D.gD,D.$L,B.ey,r.mD,r.yh,r.Ke,r.Q2,r.as,r.XQ,r.nj,r.Gk,S.NW],pipes:[u.uU,u.JJ],styles:[".mat-column-description[_ngcontent-%COMP%]{flex:0 0 15%;width:15%}.mat-column-description[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%]{display:flex}.mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})();var V=f(5698),st=f(3289),Ct=f(8104);const sn=["paymentReq"];function ln(n,a){if(1&n&&(t.TgZ(0,"mat-hint"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.paymentDecodedHint)}}function rn(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Payment request is required."),t.qZA())}function cn(n,a){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.paymentDecodedHint)}}function un(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Payment amount is required."),t.qZA())}function pn(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"mat-form-field",1)(1,"input",17,18),t.NdJ("ngModelChange",function(o){return t.CHM(e),t.oxw().paymentAmount=o})("change",function(o){return t.CHM(e),t.oxw().onAmountChange(o)}),t.qZA(),t.TgZ(3,"mat-hint"),t._uU(4,"It is a zero amount invoice, enter amount to be paid."),t.qZA(),t.YNc(5,un,2,0,"mat-error",11),t.qZA()}if(2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngModel",e.paymentAmount),t.xp6(4),t.Q6J("ngIf",!e.paymentAmount)}}function mn(n,a){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.paymentError)}}function dn(n,a){if(1&n&&(t.TgZ(0,"div",19),t._UZ(1,"fa-icon",20),t.YNc(2,mn,2,1,"span",11),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faExclamationTriangle),t.xp6(1),t.Q6J("ngIf",""!==e.paymentError)}}let hn=(()=>{class n{constructor(e,i,o,s,c,h,g,T){this.dialogRef=e,this.store=i,this.eclEffects=o,this.logger=s,this.commonService=c,this.decimalPipe=h,this.actions=g,this.dataService=T,this.faExclamationTriangle=L.eHv,this.selNode={},this.paymentDecoded={},this.zeroAmtInvoice=!1,this.paymentAmount=null,this.paymentRequest="",this.paymentDecodedHint="",this.selActiveChannel={},this.activeChannels={},this.feeLimit=null,this.selFeeLimitType=l.Vc[0],this.feeLimitTypes=l.Vc,this.paymentError="",this.unSubs=[new d.x,new d.x,new d.x,new d.x]}ngOnInit(){this.store.select(C.pg).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.selNode=e}),this.store.select(C.Xz).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.activeChannels=e.activeChannels,this.logger.info(e)}),this.actions.pipe((0,_.R)(this.unSubs[1]),(0,Q.h)(e=>e.type===l.lr.UPDATE_API_CALL_STATUS_ECL||e.type===l.lr.SEND_PAYMENT_STATUS_ECL)).subscribe(e=>{e.type===l.lr.SEND_PAYMENT_STATUS_ECL&&this.dialogRef.close(),e.type===l.lr.UPDATE_API_CALL_STATUS_ECL&&e.payload.status===l.Bn.ERROR&&"SendPayment"===e.payload.action&&(delete this.paymentDecoded.amount,this.paymentError=e.payload.message)})}onSendPayment(){if(!this.paymentRequest)return!0;this.paymentDecoded.timestamp?this.sendPayment():(this.paymentAmount=null,this.paymentError="",this.paymentDecodedHint="",this.paymentReq.control.setErrors(null),this.dataService.decodePayment(this.paymentRequest,!0).pipe((0,V.q)(1)).subscribe({next:e=>{this.paymentDecoded=e,this.paymentDecoded.timestamp&&!this.paymentDecoded.amount?(this.paymentDecoded.amount=0,this.zeroAmtInvoice=!0,this.paymentDecodedHint="Zero Amount Invoice | Memo: "+this.paymentDecoded.description):(this.zeroAmtInvoice=!1,this.selNode&&this.selNode.fiatConversion&&this.paymentDecoded.amount?this.commonService.convertCurrency(+this.paymentDecoded.amount,l.NT.SATS,l.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[2])).subscribe({next:i=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount:0)+" Sats ("+i.symbol+this.decimalPipe.transform(i.OTHER?i.OTHER:0,l.Xz.OTHER)+") | Memo: "+this.paymentDecoded.description},error:i=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount/1e3:0)+" Sats | Memo: "+this.paymentDecoded.description+". Unable to convert currency."}}):this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount:0)+" Sats | Memo: "+this.paymentDecoded.description)},error:e=>{this.logger.error(e),this.paymentDecodedHint="ERROR: "+(e.message?e.message:"string"==typeof e?e:JSON.stringify(e)),this.paymentReq.control.setErrors({decodeError:!0})}}))}sendPayment(){this.store.dispatch((0,k.oV)(this.zeroAmtInvoice&&this.paymentAmount?{payload:{invoice:this.paymentRequest,amountMsat:1e3*this.paymentAmount,fromDialog:!0}}:{payload:{invoice:this.paymentRequest,fromDialog:!0}}))}onPaymentRequestEntry(e){this.paymentRequest=e&&"string"==typeof e?e.trim():e,this.paymentError="",this.paymentDecodedHint="",this.zeroAmtInvoice=!1,this.paymentRequest&&this.paymentRequest.length>100&&(this.paymentReq.control.setErrors(null),this.zeroAmtInvoice=!1,this.dataService.decodePayment(this.paymentRequest,!0).pipe((0,V.q)(1)).subscribe({next:i=>{this.paymentDecoded=i,this.paymentDecoded.timestamp&&!this.paymentDecoded.amount?(this.paymentDecoded.amount=0,this.zeroAmtInvoice=!0,this.paymentDecodedHint="Zero Amount Invoice | Memo: "+this.paymentDecoded.description):(this.zeroAmtInvoice=!1,this.selNode&&this.selNode.fiatConversion&&this.paymentDecoded.amount?this.commonService.convertCurrency(+this.paymentDecoded.amount,l.NT.SATS,l.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[3])).subscribe({next:o=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount:0)+" Sats ("+o.symbol+this.decimalPipe.transform(o.OTHER?o.OTHER:0,l.Xz.OTHER)+") | Memo: "+this.paymentDecoded.description},error:o=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount:0)+" Sats | Memo: "+this.paymentDecoded.description+". Unable to convert currency."}}):this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount:0)+" Sats | Memo: "+this.paymentDecoded.description)},error:i=>{this.logger.error(i),this.paymentDecodedHint="ERROR: "+(i.message?i.message:"string"==typeof i?i:JSON.stringify(i)),this.paymentReq.control.setErrors({decodeError:!0})}}))}onAmountChange(e){delete this.paymentDecoded.amount,this.paymentDecoded.amount=e}resetData(){this.paymentDecoded={},this.paymentRequest="",this.selActiveChannel=null,this.feeLimit=null,this.selFeeLimitType=l.Vc[0],this.paymentReq.control.setErrors(null),this.paymentError="",this.paymentDecodedHint="",this.zeroAmtInvoice=!1}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(U.so),t.Y36(w.yh),t.Y36(st.o),t.Y36(R.mQ),t.Y36(N.v),t.Y36(u.JJ),t.Y36(G.eX),t.Y36(Ct.D))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-lightning-send-payments"]],viewQuery:function(e,i){if(1&e&&t.Gf(sn,5),2&e){let o;t.iGM(o=t.CRH())&&(i.paymentReq=o.first)}},decls:24,vars:7,consts:[["fxLayout","row"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title"],["tabindex","8","fxFlex","5","fxLayoutAlign","center","default","","mat-button","",1,"btn-close-x","p-0",3,"mat-dialog-close"],[1,"padding-gap-x-large"],["fxLayoutAlign","space-between stretch","fxLayout","column"],["sendPaymentForm","ngForm"],["autoFocus","","matInput","","placeholder","Payment Request","name","paymentRequest","rows","4","tabindex","1","required","",3,"ngModel","ngModelChange","matTextareaAutosize"],["paymentReq","ngModel"],[4,"ngIf"],["fxFlex","100",4,"ngIf"],["fxFlex","100","class","alert alert-danger mt-1",4,"ngIf"],["fxLayout","row","fxLayoutAlign","end center",1,"mt-2"],["mat-button","","color","primary","tabindex","2","type","reset",1,"mr-1",3,"click"],["mat-button","","color","primary","tabindex","3",3,"click"],["matInput","","placeholder","Amount (Sats)","name","amount","tabindex","2","required","",3,"ngModel","ngModelChange","change"],["paymentAmt","ngModel"],["fxFlex","100",1,"alert","alert-danger","mt-1"],[1,"mr-1","alert-icon",3,"icon"]],template:function(e,i){if(1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3)(4,"span",4),t._uU(5,"Send Payment"),t.qZA()(),t.TgZ(6,"button",5),t._uU(7,"X"),t.qZA()(),t.TgZ(8,"mat-card-content",6)(9,"form",7,8)(11,"mat-form-field",1)(12,"textarea",9,10),t.NdJ("ngModelChange",function(s){return i.onPaymentRequestEntry(s)})("matTextareaAutosize",function(){return!0}),t.qZA(),t.YNc(14,ln,2,1,"mat-hint",11),t.YNc(15,rn,2,0,"mat-error",11),t.YNc(16,cn,2,1,"mat-error",11),t.qZA(),t.YNc(17,pn,6,2,"mat-form-field",12),t.YNc(18,dn,3,2,"div",13),t.TgZ(19,"div",14)(20,"button",15),t.NdJ("click",function(){return i.resetData()}),t._uU(21,"Clear Fields"),t.qZA(),t.TgZ(22,"button",16),t.NdJ("click",function(){return i.onSendPayment()}),t._uU(23,"Send Payment"),t.qZA()()()()()()),2&e){const o=t.MAs(13);t.xp6(6),t.Q6J("mat-dialog-close",!1),t.xp6(6),t.Q6J("ngModel",i.paymentRequest),t.xp6(2),t.Q6J("ngIf",i.paymentRequest&&""!==i.paymentDecodedHint),t.xp6(1),t.Q6J("ngIf",!i.paymentRequest),t.xp6(1),t.Q6J("ngIf",null==o.errors?null:o.errors.decodeError),t.xp6(1),t.Q6J("ngIf",i.zeroAmtInvoice),t.xp6(1),t.Q6J("ngIf",""!==i.paymentError)}},directives:[p.xw,p.yH,b.dk,p.Wh,F.lW,U.ZT,b.dn,m._Y,m.JL,m.F,y.KE,M.Nt,m.Fj,W.h,m.Q7,m.JJ,m.On,u.O5,y.bx,y.TO,q.BN],styles:[".mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}.mat-column-payment_hash[_ngcontent-%COMP%]{flex:1 1 20%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"]}),n})();var z=f(1125);const _n=["scrollContainer"];function fn(n,a){if(1&n&&(t.TgZ(0,"div",9)(1,"div",1)(2,"h4",11),t._uU(3,"Description"),t.qZA(),t.TgZ(4,"span",12),t._uU(5),t.qZA()()()),2&n){const e=t.oxw();t.xp6(5),t.Oqu(e.description)}}function gn(n,a){1&n&&t._UZ(0,"mat-divider",14)}function Cn(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"mat-expansion-panel",23),t.NdJ("opened",function(){return t.CHM(e),t.oxw().onExpansionOpen(!0)})("closed",function(){return t.CHM(e),t.oxw().onExpansionOpen(!1)}),t.TgZ(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"h4",24),t._uU(4),t.qZA(),t.TgZ(5,"h4",25),t._uU(6),t.ALo(7,"number"),t.qZA()()(),t.TgZ(8,"div",8)(9,"div",9)(10,"div",26)(11,"h4",11),t._uU(12,"Fees (mSats)"),t.qZA(),t.TgZ(13,"span",12),t._uU(14),t.ALo(15,"number"),t.qZA()(),t.TgZ(16,"div",26)(17,"h4",11),t._uU(18,"Date/Time"),t.qZA(),t.TgZ(19,"span",12),t._uU(20),t.ALo(21,"date"),t.qZA()()(),t._UZ(22,"mat-divider",14),t.TgZ(23,"div",9)(24,"div",1)(25,"h4",11),t._uU(26,"ID"),t.qZA(),t.TgZ(27,"span",27),t._uU(28),t.qZA()()(),t._UZ(29,"mat-divider",14),t.TgZ(30,"div",9)(31,"div",1)(32,"h4",11),t._uU(33,"To Channel"),t.qZA(),t.TgZ(34,"span",27),t._uU(35),t.qZA()()()()()}if(2&n){const e=a.$implicit,i=a.index,o=t.oxw();t.Q6J("expanded",o.expansionOpen),t.xp6(4),t.hij("Part ",i+1,""),t.xp6(2),t.hij("",t.lcZ(7,7,e.amount)," (Sats)"),t.xp6(8),t.Oqu(t.lcZ(15,9,e.feesPaid)),t.xp6(6),t.Oqu(t.xi3(21,11,e.timestamp,"dd/MMM/y HH:mm")),t.xp6(8),t.Oqu(e.id),t.xp6(7),t.Oqu(e.toChannelAlias)}}let xn=(()=>{class n{constructor(e,i){this.dialogRef=e,this.data=i,this.description=null,this.shouldScroll=!0,this.expansionOpen=!0}ngOnInit(){this.payment=this.data.payment,this.data.sentPaymentInfo.length>0&&this.data.sentPaymentInfo[0].paymentRequest&&this.data.sentPaymentInfo[0].paymentRequest.description&&""!==this.data.sentPaymentInfo[0].paymentRequest.description&&(this.description=this.data.sentPaymentInfo[0].paymentRequest.description)}ngAfterViewChecked(){this.shouldScroll=this.scrollContainer.nativeElement.classList.value.includes("ps--active-y")}onScrollDown(){this.scrollContainer.nativeElement.scrollTop=this.scrollContainer.nativeElement.scrollTop+62.6}onExpansionOpen(e){this.expansionOpen=e}onClose(){this.dialogRef.close(!1)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(U.so),t.Y36(U.WI))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-payment-information"]],viewQuery:function(e,i){if(1&e&&t.Gf(_n,5),2&e){let o;t.iGM(o=t.CRH())&&(i.scrollContainer=o.first)}},decls:66,vars:15,consts:[["fxLayout","column","fxLayout.gt-sm","row","fxLayoutAlign","space-between stretch"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title"],["tabindex","3","fxFlex","5","fxLayoutAlign","center","mat-button","",1,"btn-close-x","p-0",3,"click"],[1,"h-40","padding-gap-x-large",3,"perfectScrollbar"],["scrollContainer",""],["fxLayout","column"],["fxLayout","row"],["fxFlex","30"],["fxLayoutAlign","start",1,"font-bold-500"],[1,"foreground-secondary-text"],["fxFlex","70"],[1,"w-100","my-1"],["fxLayout","row",4,"ngIf"],["class","w-100 my-1",4,"ngIf"],["class","flat-expansion-panel my-1",3,"expanded","opened","closed",4,"ngFor","ngForOf"],["fxLayout","row","fxLayoutAlign","start end",1,"btn-sticky-container","padding-gap-x-large"],["mat-mini-fab","","aria-label","Scroll Down","fxLayoutAlign","center center",3,"click"],["fxLayoutAlign","center center"],["fxLayout","row","fxLayoutAlign","end center",1,"padding-gap-x-large","padding-gap-bottom-large"],["fxLayoutAlign","center center","tabindex","1","mat-button","","color","primary","type","button","default","",1,"mr-1",3,"mat-dialog-close"],[1,"flat-expansion-panel","my-1",3,"expanded","opened","closed"],["fxFlex","30","fxLayoutAlign","start",1,"font-bold-500"],["fxFlex","70","fxLayoutAlign","start",1,"font-bold-500"],["fxFlex","50"],[1,"overflow-wrap","foreground-secondary-text"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3)(4,"span",4),t._uU(5,"Payment Information"),t.qZA()(),t.TgZ(6,"button",5),t.NdJ("click",function(){return i.onClose()}),t._uU(7,"X"),t.qZA()(),t.TgZ(8,"mat-card-content",6,7)(10,"div",8)(11,"div",9)(12,"div",10)(13,"h4",11),t._uU(14,"Amount (Sats)"),t.qZA(),t.TgZ(15,"span",12),t._uU(16),t.ALo(17,"number"),t.qZA()(),t.TgZ(18,"div",13)(19,"h4",11),t._uU(20,"Date/Time"),t.qZA(),t.TgZ(21,"span",12),t._uU(22),t.ALo(23,"date"),t.qZA()()(),t._UZ(24,"mat-divider",14),t.TgZ(25,"div",9)(26,"div",1)(27,"h4",11),t._uU(28,"ID"),t.qZA(),t.TgZ(29,"span",12),t._uU(30),t.qZA()()(),t._UZ(31,"mat-divider",14),t.TgZ(32,"div",9)(33,"div",1)(34,"h4",11),t._uU(35,"Payment Hash"),t.qZA(),t.TgZ(36,"span",12),t._uU(37),t.qZA()()(),t._UZ(38,"mat-divider",14),t.TgZ(39,"div",9)(40,"div",1)(41,"h4",11),t._uU(42,"Payment Preimage"),t.qZA(),t.TgZ(43,"span",12),t._uU(44),t.qZA()()(),t._UZ(45,"mat-divider",14),t.TgZ(46,"div",9)(47,"div",1)(48,"h4",11),t._uU(49,"Recipient Node"),t.qZA(),t.TgZ(50,"span",12),t._uU(51),t.qZA()()(),t._UZ(52,"mat-divider",14),t.YNc(53,fn,6,1,"div",15),t.YNc(54,gn,1,0,"mat-divider",16),t.TgZ(55,"div",9)(56,"div",1)(57,"mat-accordion"),t.YNc(58,Cn,36,14,"mat-expansion-panel",17),t.qZA()()()()(),t.TgZ(59,"div",18)(60,"button",19),t.NdJ("click",function(){return i.onScrollDown()}),t.TgZ(61,"mat-icon",20),t._uU(62,"arrow_downward"),t.qZA()()(),t.TgZ(63,"div",21)(64,"button",22),t._uU(65,"OK"),t.qZA()()()()),2&e&&(t.xp6(16),t.Oqu(t.lcZ(17,10,i.payment.recipientAmount)),t.xp6(6),t.Oqu(t.xi3(23,12,i.payment.firstPartTimestamp,"dd/MMM/y HH:mm")),t.xp6(8),t.Oqu(i.payment.id),t.xp6(7),t.Oqu(i.payment.paymentHash),t.xp6(7),t.Oqu(i.payment.paymentPreimage),t.xp6(7),t.Oqu(i.payment.recipientNodeAlias),t.xp6(2),t.Q6J("ngIf",i.description),t.xp6(1),t.Q6J("ngIf",i.description),t.xp6(4),t.Q6J("ngForOf",i.payment.parts),t.xp6(6),t.Q6J("mat-dialog-close",!1))},directives:[p.xw,p.Wh,p.yH,b.dk,F.lW,b.dn,H.$V,$.d,u.O5,z.pp,u.sg,z.ib,z.yz,z.yK,_t.Hw,U.ZT],pipes:[u.JJ,u.uU],styles:[""]}),n})();var tt=f(3093);const yn=["sendPaymentForm"];function vn(n,a){if(1&n&&(t.TgZ(0,"mat-hint"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.paymentDecodedHint)}}function Ln(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Payment request is required."),t.qZA())}function Tn(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"form",4,5)(2,"mat-form-field",6)(3,"textarea",7,8),t.NdJ("ngModelChange",function(o){return t.CHM(e),t.oxw().onPaymentRequestEntry(o)})("matTextareaAutosize",function(){return!0}),t.qZA(),t.YNc(5,vn,2,1,"mat-hint",9),t.YNc(6,Ln,2,0,"mat-error",9),t.qZA(),t.TgZ(7,"div",10)(8,"button",11),t.NdJ("click",function(){return t.CHM(e),t.oxw().resetData()}),t._uU(9,"Clear Field"),t.qZA(),t.TgZ(10,"button",12),t.NdJ("click",function(){return t.CHM(e),t.oxw().onSendPayment()}),t._uU(11,"Send Payment"),t.qZA()()()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngModel",e.paymentRequest),t.xp6(2),t.Q6J("ngIf",e.paymentRequest&&""!==e.paymentDecodedHint),t.xp6(1),t.Q6J("ngIf",!e.paymentRequest)}}function bn(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",13)(1,"button",12),t.NdJ("click",function(){return t.CHM(e),t.oxw().openSendPaymentModal()}),t._uU(2,"Send Payment"),t.qZA()()}}function An(n,a){1&n&&t._UZ(0,"mat-progress-bar",49)}function Sn(n,a){1&n&&(t.TgZ(0,"th",50),t._uU(1,"Date/Time"),t.qZA())}function Zn(n,a){if(1&n&&(t.TgZ(0,"td",51),t._uU(1),t.ALo(2,"date"),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Oqu(t.xi3(2,1,null==e?null:e.firstPartTimestamp,"dd/MMM/y HH:mm"))}}function wn(n,a){1&n&&(t.TgZ(0,"th",50),t._uU(1,"ID"),t.qZA())}const j=function(n){return{"max-width":n}};function En(n,a){if(1&n&&(t.TgZ(0,"td",51)(1,"div",52)(2,"span",53),t._uU(3),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw(2);t.xp6(1),t.Q6J("ngStyle",t.VKq(2,j,i.screenSize===i.screenSizeEnum.XS?"10rem":"22rem")),t.xp6(2),t.Oqu(e.id)}}function In(n,a){1&n&&(t.TgZ(0,"th",50),t._uU(1,"Destination"),t.qZA())}function On(n,a){if(1&n&&(t.TgZ(0,"td",51)(1,"div",52)(2,"span",53),t._uU(3),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw(2);t.xp6(1),t.Q6J("ngStyle",t.VKq(2,j,i.screenSize===i.screenSizeEnum.XS?"10rem":"22rem")),t.xp6(2),t.Oqu(e.recipientNodeAlias)}}function Fn(n,a){1&n&&(t.TgZ(0,"th",54),t._uU(1,"Amount (Sats)"),t.qZA())}function qn(n,a){if(1&n&&(t.TgZ(0,"td",51)(1,"span",55),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,null==e?null:e.recipientAmount))}}function Rn(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"th",56)(1,"div",57)(2,"mat-select",58),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",59),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}function Nn(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",60)(1,"button",61),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw(2).onPaymentClick(s)}),t._uU(2,"View Info"),t.qZA()()}}function kn(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No payment available."),t.qZA())}function Pn(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting payments..."),t.qZA())}function Dn(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.errorMessage)}}function Un(n,a){if(1&n&&(t.TgZ(0,"td",62),t.YNc(1,kn,2,0,"p",9),t.YNc(2,Pn,2,0,"p",9),t.YNc(3,Dn,2,1,"p",9),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",(!(null!=e.payments&&e.payments.data)||(null==e.payments||null==e.payments.data?null:e.payments.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.payments&&e.payments.data)||(null==e.payments||null==e.payments.data?null:e.payments.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.payments&&e.payments.data)||(null==e.payments||null==e.payments.data?null:e.payments.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}function Mn(n,a){if(1&n&&(t.TgZ(0,"span",65),t._uU(1),t.ALo(2,"date"),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.hij(" ",t.xi3(2,1,e.timestamp,"dd/MMM/y HH:mm")," ")}}function Jn(n,a){if(1&n&&(t.ynx(0),t.YNc(1,Mn,3,4,"span",64),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.parts)}}function Qn(n,a){if(1&n&&(t.TgZ(0,"td",51)(1,"span",63),t._uU(2),t.qZA(),t.YNc(3,Jn,2,1,"ng-container",9),t.qZA()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" Total Attempts: ",null==e||null==e.parts?null:e.parts.length," "),t.xp6(1),t.Q6J("ngIf",e.is_expanded)}}function Yn(n,a){if(1&n&&(t.TgZ(0,"span",63)(1,"span",66)(2,"span",53),t._uU(3),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw(4);t.xp6(1),t.Q6J("ngStyle",t.VKq(2,j,i.screenSize===i.screenSizeEnum.XS?"10rem":"22rem")),t.xp6(2),t.Oqu(e.id)}}function Hn(n,a){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Yn,4,4,"span",67),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.parts)}}function Bn(n,a){if(1&n&&(t.TgZ(0,"td",51)(1,"div",66)(2,"span",53),t._uU(3),t.qZA()(),t.YNc(4,Hn,2,1,"span",9),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(2);t.xp6(1),t.Q6J("ngStyle",t.VKq(3,j,i.screenSize===i.screenSizeEnum.XS?"10rem":"22rem")),t.xp6(2),t.Oqu(e.id),t.xp6(1),t.Q6J("ngIf",e.is_expanded)}}function zn(n,a){if(1&n&&(t.TgZ(0,"span",63)(1,"span",66)(2,"span",53),t._uU(3),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw(4);t.xp6(1),t.Q6J("ngStyle",t.VKq(2,j,i.screenSize===i.screenSizeEnum.XS?"10rem":"22rem")),t.xp6(2),t.Oqu(e.toChannelAlias)}}function Vn(n,a){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,zn,4,4,"span",67),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.parts)}}function Gn(n,a){if(1&n&&(t.TgZ(0,"td",51)(1,"div",66)(2,"span",53),t._uU(3),t.qZA()(),t.YNc(4,Vn,2,1,"span",9),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(2);t.xp6(1),t.Q6J("ngStyle",t.VKq(3,j,i.screenSize===i.screenSizeEnum.XS?"10rem":"22rem")),t.xp6(2),t.Oqu(null==e?null:e.recipientNodeAlias),t.xp6(1),t.Q6J("ngIf",e.is_expanded)}}function Xn(n,a){if(1&n&&(t.TgZ(0,"span",68),t._uU(1),t.ALo(2,"number"),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.hij(" ",t.xi3(2,1,e.amount,"1.0-0")," ")}}function $n(n,a){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Xn,3,4,"span",69),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.parts)}}function Wn(n,a){if(1&n&&(t.TgZ(0,"td",51)(1,"span",68),t._uU(2),t.ALo(3,"number"),t.qZA(),t.YNc(4,$n,2,1,"span",9),t.qZA()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.xi3(3,2,null==e?null:e.recipientAmount,"1.0-0")),t.xp6(2),t.Q6J("ngIf",e.is_expanded)}}function Kn(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",71)(1,"button",74),t.NdJ("click",function(){const s=t.CHM(e).$implicit,c=t.oxw(2).$implicit;return t.oxw(2).onPartClick(s,c)}),t._uU(2),t.qZA()()}if(2&n){const e=a.index;t.xp6(2),t.hij("View ",e+1,"")}}function jn(n,a){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Kn,3,1,"div",73),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.parts)}}function ti(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",70)(1,"span",71)(2,"button",72),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return s.is_expanded=!s.is_expanded}),t._uU(3),t.qZA()(),t.YNc(4,jn,2,1,"div",9),t.qZA()}if(2&n){const e=a.$implicit;t.xp6(3),t.Oqu(e.is_expanded?"Hide":"Show"),t.xp6(1),t.Q6J("ngIf",e.is_expanded)}}function ei(n,a){1&n&&t._UZ(0,"tr",75)}const ni=function(n){return{"display-none":n}};function ii(n,a){if(1&n&&t._UZ(0,"tr",76),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,ni,(null==e.payments?null:e.payments.data)&&(null==e.payments||null==e.payments.data?null:e.payments.data.length)>0))}}function ai(n,a){1&n&&t._UZ(0,"tr",77)}function oi(n,a){1&n&&t._UZ(0,"tr",75)}const si=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},li=function(){return["no_payment"]};function ri(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",14)(1,"div",15)(2,"div",16),t._UZ(3,"fa-icon",17),t.TgZ(4,"span",18),t._uU(5,"Payments History"),t.qZA()(),t.TgZ(6,"mat-form-field",19)(7,"input",20),t.NdJ("keyup",function(){return t.CHM(e),t.oxw().applyFilter()})("ngModelChange",function(o){return t.CHM(e),t.oxw().selFilter=o}),t.qZA()()(),t.TgZ(8,"div",21)(9,"div",22),t.YNc(10,An,1,0,"mat-progress-bar",23),t.TgZ(11,"table",24,25),t.ynx(13,26),t.YNc(14,Sn,2,0,"th",27),t.YNc(15,Zn,3,4,"td",28),t.BQk(),t.ynx(16,29),t.YNc(17,wn,2,0,"th",27),t.YNc(18,En,4,4,"td",28),t.BQk(),t.ynx(19,30),t.YNc(20,In,2,0,"th",27),t.YNc(21,On,4,4,"td",28),t.BQk(),t.ynx(22,31),t.YNc(23,Fn,2,0,"th",32),t.YNc(24,qn,4,3,"td",28),t.BQk(),t.ynx(25,33),t.YNc(26,Rn,6,0,"th",34),t.YNc(27,Nn,3,0,"td",35),t.BQk(),t.ynx(28,36),t.YNc(29,Un,4,3,"td",37),t.BQk(),t.ynx(30,38),t.YNc(31,Qn,4,2,"td",28),t.BQk(),t.ynx(32,39),t.YNc(33,Bn,5,5,"td",28),t.BQk(),t.ynx(34,40),t.YNc(35,Gn,5,5,"td",28),t.BQk(),t.ynx(36,41),t.YNc(37,Wn,5,5,"td",28),t.BQk(),t.ynx(38,42),t.YNc(39,ti,5,2,"td",43),t.BQk(),t.YNc(40,ei,1,0,"tr",44),t.YNc(41,ii,1,3,"tr",45),t.YNc(42,ai,1,0,"tr",46),t.YNc(43,oi,1,0,"tr",47),t.qZA()()(),t._UZ(44,"mat-paginator",48),t.qZA()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("icon",e.faHistory),t.xp6(4),t.Q6J("ngModel",e.selFilter),t.xp6(3),t.Q6J("ngIf",e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",e.payments)("ngClass",t.VKq(14,si,""!==e.errorMessage)),t.xp6(29),t.Q6J("matRowDefColumns",e.partColumns)("matRowDefWhen",e.is_group),t.xp6(1),t.Q6J("matFooterRowDef",t.DdM(16,li)),t.xp6(1),t.Q6J("matHeaderRowDef",e.displayedColumns)("matHeaderRowDefSticky",e.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",e.displayedColumns),t.xp6(1),t.Q6J("pageSize",e.pageSize)("pageSizeOptions",e.pageSizeOptions)("showFirstLastButtons",e.screenSize!==e.screenSizeEnum.XS)}}let xt=(()=>{class n{constructor(e,i,o,s,c,h,g){this.logger=e,this.commonService=i,this.store=o,this.rtlEffects=s,this.decimalPipe=c,this.dataService=h,this.datePipe=g,this.calledFrom="transactions",this.faHistory=L.qO$,this.newlyAddedPayment="",this.selNode={},this.information={},this.paymentJSONArr=[],this.paymentDecoded={},this.displayedColumns=[],this.partColumns=[],this.paymentRequest="",this.paymentDecodedHint="",this.flgSticky=!1,this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.selFilter="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["firstPartTimestamp","actions"],this.partColumns=["groupTotal","groupAction"]):this.screenSize===l.cu.SM?(this.flgSticky=!1,this.displayedColumns=["firstPartTimestamp","recipientAmount","actions"],this.partColumns=["groupTotal","groupAmount","groupAction"]):this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["firstPartTimestamp","id","recipientAmount","actions"],this.partColumns=["groupTotal","groupId","groupAmount","groupAction"]):(this.flgSticky=!0,this.displayedColumns=["firstPartTimestamp","id","recipientNodeAlias","recipientAmount","actions"],this.partColumns=["groupTotal","groupId","groupChannelAlias","groupAmount","groupAction"])}ngOnInit(){this.store.select(C.pg).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.selNode=e}),this.store.select(C.yD).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.store.select(C.PP).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.paymentJSONArr=e.payments&&e.payments.sent&&e.payments.sent.length>0?e.payments.sent:[],this.paymentJSONArr.length>0&&this.sort&&this.paginator&&this.loadPaymentsTable(this.paymentJSONArr),this.logger.info(e)})}ngAfterViewInit(){this.paymentJSONArr.length>0&&this.loadPaymentsTable(this.paymentJSONArr)}loadPaymentsTable(e){this.payments=new r.by(e?[...e]:[]),this.payments.sort=this.sort,this.payments.sortingDataAccessor=(i,o)=>{var s,c,h,g;switch(o){case"firstPartTimestamp":return this.commonService.sortByKey(i.parts,"timestamp","number",null===(s=this.sort)||void 0===s?void 0:s.direction),i.firstPartTimestamp;case"id":return this.commonService.sortByKey(i.parts,"id","string",null===(c=this.sort)||void 0===c?void 0:c.direction),i.id;case"recipientNodeAlias":return this.commonService.sortByKey(i.parts,"toChannelAlias","string",null===(h=this.sort)||void 0===h?void 0:h.direction),i.recipientNodeAlias;case"recipientAmount":return this.commonService.sortByKey(i.parts,"amount","number",null===(g=this.sort)||void 0===g?void 0:g.direction),i.recipientAmount;default:return i[o]&&isNaN(i[o])?i[o].toLocaleLowerCase():i[o]?+i[o]:null}},this.payments.filterPredicate=(i,o)=>{var s;return((i.firstPartTimestamp?null===(s=this.datePipe.transform(new Date(i.firstPartTimestamp),"dd/MMM/YYYY HH:mm"))||void 0===s?void 0:s.toLowerCase():"")+JSON.stringify(i).toLowerCase()).includes(o)},this.payments.paginator=this.paginator,this.applyFilter()}onSendPayment(){if(!this.paymentRequest)return!0;this.paymentDecoded.timestamp?this.sendPayment():this.dataService.decodePayment(this.paymentRequest,!1).pipe((0,V.q)(1)).subscribe(e=>{this.paymentDecoded=e,this.paymentDecoded.timestamp?(this.paymentDecoded.amount||(this.paymentDecoded.amount=0),this.sendPayment()):this.resetData()})}sendPayment(){this.newlyAddedPayment=this.paymentDecoded.paymentHash||"",this.paymentDecoded.amount&&0!==this.paymentDecoded.amount?(this.store.dispatch((0,Z.c1)({payload:{data:{type:l.n_.CONFIRM,alertTitle:"Confirm Send Payment",noBtnText:"Cancel",yesBtnText:"Send Payment",message:[[{key:"paymentHash",value:this.paymentDecoded.paymentHash,title:"Payment Hash",width:100}],[{key:"nodeId",value:this.paymentDecoded.nodeId,title:"Payee",width:100}],[{key:"description",value:this.paymentDecoded.description,title:"Description",width:100}],[{key:"timestamp",value:this.paymentDecoded.timestamp,title:"Creation Date",width:50,type:l.Gi.DATE_TIME},{key:"amount",value:this.paymentDecoded.amount,title:"Amount (Sats)",width:50,type:l.Gi.NUMBER}],[{key:"expiry",value:this.paymentDecoded.expiry,title:"Expiry",width:50,type:l.Gi.NUMBER},{key:"minFinalCltvExpiry",value:this.paymentDecoded.minFinalCltvExpiry,title:"CLTV Expiry",width:50}]]}}})),this.rtlEffects.closeConfirm.pipe((0,V.q)(1)).subscribe(i=>{i&&(this.store.dispatch((0,k.oV)({payload:{invoice:this.paymentRequest,fromDialog:!1}})),this.resetData())})):(this.store.dispatch((0,Z.c1)({payload:{data:{type:l.n_.CONFIRM,alertTitle:"Enter Amount and Confirm Send Payment",message:[[{key:"paymentHash",value:this.paymentDecoded.paymentHash,title:"Payment Hash",width:100}],[{key:"nodeId",value:this.paymentDecoded.nodeId,title:"Payee",width:100}],[{key:"description",value:this.paymentDecoded.description,title:"Description",width:100}],[{key:"timestamp",value:this.paymentDecoded.timestamp,title:"Creation Date",width:40,type:l.Gi.DATE_TIME},{key:"expiry",value:this.paymentDecoded.expiry,title:"Expiry",width:30,type:l.Gi.NUMBER},{key:"minFinalCltvExpiry",value:this.paymentDecoded.minFinalCltvExpiry,title:"CLTV Expiry",width:30}]],noBtnText:"Cancel",yesBtnText:"Send Payment",flgShowInput:!0,titleMessage:"It is a zero amount invoice. Enter the amount (Sats) to pay.",getInputs:[{placeholder:"Amount (Sats)",inputType:l.Gi.NUMBER,inputValue:"",width:30}]}}})),this.rtlEffects.closeConfirm.pipe((0,V.q)(1)).subscribe(o=>{o&&(this.paymentDecoded.amount=o[0].inputValue,this.store.dispatch((0,k.oV)({payload:{invoice:this.paymentRequest,amountMsat:1e3*o[0].inputValue,fromDialog:!1}})),this.resetData())}))}onPaymentRequestEntry(e){this.paymentRequest=e,this.paymentDecodedHint="",this.paymentRequest&&this.paymentRequest.length>100&&this.dataService.decodePayment(this.paymentRequest,!1).pipe((0,V.q)(1)).subscribe(i=>{this.paymentDecoded=i,this.paymentDecoded.amount?this.selNode&&this.selNode.fiatConversion?this.commonService.convertCurrency(+this.paymentDecoded.amount,l.NT.SATS,l.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[3])).subscribe({next:o=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount:0)+" Sats ("+o.symbol+this.decimalPipe.transform(o.OTHER?o.OTHER:0,l.Xz.OTHER)+") | Memo: "+this.paymentDecoded.description},error:o=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount:0)+" Sats | Memo: "+this.paymentDecoded.description+". Unable to convert currency."}}):this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.amount?this.paymentDecoded.amount:0)+" Sats | Memo: "+this.paymentDecoded.description:this.paymentDecodedHint="Zero Amount Invoice | Memo: "+this.paymentDecoded.description})}openSendPaymentModal(){this.store.dispatch((0,Z.qR)({payload:{data:{component:hn}}}))}resetData(){this.paymentDecoded={},this.paymentRequest="",this.form.resetForm()}is_group(e,i){return i.parts&&i.parts.length>1}onPaymentClick(e){e.paymentHash&&""!==e.paymentHash.trim()?this.dataService.decodePayments(e.paymentHash).pipe((0,V.q)(1)).subscribe({next:i=>{setTimeout(()=>{this.showPaymentView(e,i.length&&i.length>0?i[0]:[])},0)},error:i=>{this.showPaymentView(e,[])}}):this.showPaymentView(e,[])}showPaymentView(e,i){this.store.dispatch((0,Z.qR)({payload:{data:{sentPaymentInfo:i,payment:e,component:xn}}}))}onPartClick(e,i){i.paymentHash&&""!==i.paymentHash.trim()?this.dataService.decodePayments(i.paymentHash).pipe((0,V.q)(1)).subscribe({next:o=>{setTimeout(()=>{this.showPartView(e,i,o.length&&o.length>0?o[0]:[])},0)},error:o=>{this.showPartView(e,i,[])}}):this.showPartView(e,i,[])}showPartView(e,i,o){const s=[[{key:"paymentHash",value:i.paymentHash,title:"Payment Hash",width:100,type:l.Gi.STRING}],[{key:"paymentPreimage",value:i.paymentPreimage,title:"Payment Preimage",width:100,type:l.Gi.STRING}],[{key:"toChannelId",value:e.toChannelId,title:"Channel",width:100,type:l.Gi.STRING}],[{key:"id",value:e.id,title:"Part ID",width:50,type:l.Gi.STRING},{key:"timestamp",value:e.timestamp,title:"Time",width:50,type:l.Gi.DATE_TIME}],[{key:"amount",value:e.amount,title:"Amount (Sats)",width:50,type:l.Gi.NUMBER},{key:"feesPaid",value:e.feesPaid,title:"Fee (Sats)",width:50,type:l.Gi.NUMBER}]];o&&o.length>0&&o[0].paymentRequest&&o[0].paymentRequest.description&&""!==o[0].paymentRequest.description&&s.splice(3,0,[{key:"description",value:o[0].paymentRequest.description,title:"Description",width:100,type:l.Gi.STRING}]),this.store.dispatch((0,Z.qR)({payload:{data:{type:l.n_.INFORMATION,alertTitle:"Payment Part Information",message:s}}}))}applyFilter(){this.payments.filter=this.selFilter.trim().toLowerCase()}onDownloadCSV(){if(this.payments.data&&this.payments.data.length>0){const e=JSON.parse(JSON.stringify(this.payments.data)),i=null==e?void 0:e.reduce((o,s)=>(s.paymentHash&&""!==s.paymentHash.trim()&&(o=""===o?s.paymentHash:o+","+s.paymentHash),o),"");this.dataService.decodePayments(i).pipe((0,_.R)(this.unSubs[4])).subscribe(o=>{o.forEach((c,h)=>{c.length>0&&c[0].paymentRequest&&c[0].paymentRequest.description&&""!==c[0].paymentRequest.description&&(e[h].description=c[0].paymentRequest.description)});const s=null==e?void 0:e.reduce((c,h)=>c.concat(h),[]);this.commonService.downloadFile(s,"Payments")})}}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(N.v),t.Y36(w.yh),t.Y36(tt.V),t.Y36(u.JJ),t.Y36(Ct.D),t.Y36(u.uU))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-lightning-payments"]],viewQuery:function(e,i){if(1&e&&(t.Gf(yn,5),t.Gf(A.YE,5),t.Gf(S.NW,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.form=o.first),t.iGM(o=t.CRH())&&(i.sort=o.first),t.iGM(o=t.CRH())&&(i.paginator=o.first)}},inputs:{calledFrom:"calledFrom"},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Payments")}])],decls:4,vars:3,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayout","column","fxLayoutAlign","space-between stretch","fxLayout.gt-sm","row wrap",4,"ngIf"],["fxLayout","row",4,"ngIf"],["fxLayout","column","fxLayoutAlign","start stretch",4,"ngIf"],["fxLayout","column","fxLayoutAlign","space-between stretch","fxLayout.gt-sm","row wrap"],["sendPaymentForm","ngForm"],["fxFlex","100"],["matInput","","placeholder","Payment Request","name","paymentRequest","tabindex","1","required","",3,"perfectScrollbar","ngModel","ngModelChange","matTextareaAutosize"],["paymentReq","ngModel"],[4,"ngIf"],["fxLayout","row",1,"mt-1"],["mat-stroked-button","","color","primary","tabindex","2","type","reset",1,"mr-1",3,"click"],["mat-flat-button","","color","primary","tabindex","3",3,"click"],["fxLayout","row"],["fxLayout","column","fxLayoutAlign","start stretch"],["fxLayout","column","fxLayoutAlign","start stretch","fxLayout.gt-sm","row wrap",1,"page-sub-title-container","mt-1"],["fxFlex","70","fxLayoutAlign","start start","fxLayoutAlign.gt-sm","start center"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxFlex","30","fxLayoutAlign","start end"],["matInput","","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","row","fxLayoutAlign","start start"],["fxLayout","column","fxLayoutAlign","start center","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",3,"dataSource","ngClass"],["table",""],["matColumnDef","firstPartTimestamp"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","id"],["matColumnDef","recipientNodeAlias"],["matColumnDef","recipientAmount"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["matColumnDef","actions"],["mat-header-cell","","class","px-3",4,"matHeaderCellDef"],["mat-cell","","class","px-3","fxLayoutAlign","end center",4,"matCellDef"],["matColumnDef","no_payment"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["matColumnDef","groupTotal"],["matColumnDef","groupId"],["matColumnDef","groupChannelAlias"],["matColumnDef","groupAmount"],["matColumnDef","groupAction"],["mat-cell","","class","px-3",4,"matCellDef"],["mat-row","",4,"matRowDef","matRowDefColumns","matRowDefWhen"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],[1,"ellipsis-parent",3,"ngStyle"],[1,"ellipsis-child"],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["fxLayoutAlign","end center"],["mat-header-cell","",1,"px-3"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",1,"px-3"],["mat-stroked-button","","color","primary","type","button","tabindex","4",3,"click"],["mat-footer-cell","","colspan","4"],["fxLayoutAlign","start center",1,"part-row-span"],["fxLayoutAlign","start center","class","part-row-span pl-3",4,"ngFor","ngForOf"],["fxLayoutAlign","start center",1,"part-row-span","pl-3"],["fxLayoutAlign","start center",1,"ellipsis-parent","part-row-span",3,"ngStyle"],["fxLayoutAlign","start center","class","part-row-span",4,"ngFor","ngForOf"],["fxLayoutAlign","end center",1,"part-row-span"],["fxLayoutAlign","end center","class","part-row-span",4,"ngFor","ngForOf"],["mat-cell","",1,"px-3"],["fxLayoutAlign","end start"],["mat-flat-button","","color","primary","type","button","tabindex","5",1,"btn-part-expand",3,"click"],["fxLayoutAlign","end start",4,"ngFor","ngForOf"],["mat-stroked-button","","color","primary","type","button","tabindex","6",1,"btn-part-info",3,"click"],["mat-row",""],["mat-footer-row","",3,"ngClass"],["mat-header-row",""]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Tn,12,3,"form",1),t.YNc(2,bn,3,0,"div",2),t.YNc(3,ri,45,17,"div",3),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf","home"===i.calledFrom),t.xp6(1),t.Q6J("ngIf","transactions"===i.calledFrom),t.xp6(1),t.Q6J("ngIf","transactions"===i.calledFrom))},directives:[p.xw,p.yH,p.Wh,u.O5,m._Y,m.JL,m.F,y.KE,M.Nt,m.Fj,m.Q7,H.$V,m.JJ,m.On,y.bx,y.TO,F.lW,q.BN,J.pW,r.BZ,A.YE,u.mk,E.oO,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,u.PC,E.Zl,D.gD,D.$L,B.ey,r.mD,r.yh,u.sg,r.nj,r.Gk,r.Ke,r.Q2,r.as,r.XQ,S.NW],pipes:[u.uU,u.JJ],styles:[".mat-column-id[_ngcontent-%COMP%], .mat-column-recipientNodeAlias[_ngcontent-%COMP%], .mat-column-groupId[_ngcontent-%COMP%], .mat-column-groupChannelAlias[_ngcontent-%COMP%]{padding:0 1rem;flex:0 0 25%;width:25%}.mat-column-id[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%], .mat-column-recipientNodeAlias[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%], .mat-column-groupId[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%], .mat-column-groupChannelAlias[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%]{display:flex}.mat-column-actions[_ngcontent-%COMP%], .mat-column-groupAction[_ngcontent-%COMP%]{min-height:4.8rem}.mat-column-groupAction[_ngcontent-%COMP%] .btn-part-expand[_ngcontent-%COMP%]{width:9rem}.mat-column-groupAction[_ngcontent-%COMP%] .btn-part-info[_ngcontent-%COMP%]{margin-top:.5rem;width:9rem}.part-row-span[_ngcontent-%COMP%]{min-height:4.2rem;place-content:center flex-start;align-items:center}.mat-column-groupTotal[_ngcontent-%COMP%]{min-width:15rem}"]}),n})();function ci(n,a){if(1&n&&(t.TgZ(0,"button",26)(1,"mat-icon"),t._uU(2,"more_vert"),t.qZA()()),2&n){t.oxw();const e=t.MAs(11);t.Q6J("matMenuTriggerFor",e)}}function ui(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"button",27),t.NdJ("click",function(){const s=t.CHM(e).index,c=t.oxw().$implicit;return t.oxw(2).onNavigateTo(c.links[s])}),t._uU(1),t.qZA()}if(2&n){const e=a.$implicit;t.xp6(1),t.Oqu(e)}}function pi(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"button",27),t.NdJ("click",function(){return t.CHM(e),t.oxw(3).onsortChannelsBy()}),t._uU(1),t.qZA()}if(2&n){const e=t.oxw(3);t.xp6(1),t.hij("Sort By ","Balance Score"===e.sortField?"Capacity":"Balance Score","")}}function mi(n,a){1&n&&t._UZ(0,"mat-progress-bar",28)}function di(n,a){if(1&n&&t._UZ(0,"rtl-ecl-node-info",29),2&n){const e=t.oxw(3);t.Q6J("information",e.information)("showColorFieldSeparately",!1)}}function hi(n,a){if(1&n&&t._UZ(0,"rtl-ecl-balances-info",30),2&n){const e=t.oxw(3);t.Q6J("balances",e.balances)("errorMessage",e.errorMessages[2]+" "+e.errorMessages[3])}}function _i(n,a){if(1&n&&t._UZ(0,"rtl-ecl-channel-capacity-info",31),2&n){const e=t.oxw(3);t.Q6J("sortBy",e.sortField)("channelBalances",e.channelBalances)("allChannels",e.allChannelsCapacity)("errorMessage",e.errorMessages[2])}}function fi(n,a){if(1&n&&t._UZ(0,"rtl-ecl-fee-info",32),2&n){const e=t.oxw(3);t.Q6J("fees",e.fees)("errorMessage",e.errorMessages[1])}}function gi(n,a){if(1&n&&t._UZ(0,"rtl-ecl-channel-status-info",33),2&n){const e=t.oxw(3);t.Q6J("channelsStatus",e.channelsStatus)("errorMessage",e.errorMessages[2])}}function Ci(n,a){1&n&&(t.TgZ(0,"h3"),t._uU(1,"Error! Unable to find information!"),t.qZA())}const yt=function(n){return{"dashboard-card-content":!0,"error-border":n}};function xi(n,a){if(1&n&&(t.TgZ(0,"mat-grid-tile",8)(1,"mat-card",9)(2,"mat-card-header")(3,"mat-card-title",10)(4,"div"),t._UZ(5,"fa-icon",11),t.TgZ(6,"span"),t._uU(7),t.qZA()(),t.TgZ(8,"div"),t.YNc(9,ci,3,1,"button",12),t.TgZ(10,"mat-menu",13,14),t.YNc(12,ui,2,1,"button",15),t.YNc(13,pi,2,1,"button",16),t.qZA()()()(),t.TgZ(14,"mat-card-content",17),t.YNc(15,mi,1,0,"mat-progress-bar",18),t.TgZ(16,"div",19),t.YNc(17,di,1,2,"rtl-ecl-node-info",20),t.YNc(18,hi,1,2,"rtl-ecl-balances-info",21),t.YNc(19,_i,1,4,"rtl-ecl-channel-capacity-info",22),t.YNc(20,fi,1,2,"rtl-ecl-fee-info",23),t.YNc(21,gi,1,2,"rtl-ecl-channel-status-info",24),t.YNc(22,Ci,2,0,"h3",25),t.qZA()()()()),2&n){const e=a.$implicit,i=t.oxw(2);t.Q6J("colspan",e.cols)("rowspan",e.rows),t.xp6(5),t.Q6J("icon",e.icon),t.xp6(2),t.Oqu(e.title),t.xp6(2),t.Q6J("ngIf",e.links[0]),t.xp6(3),t.Q6J("ngForOf",e.goToOptions),t.xp6(1),t.Q6J("ngIf","capacity"===e.id),t.xp6(1),t.s9C("fxFlex","capacity"===e.id?90:70),t.Q6J("ngClass",t.VKq(16,yt,"node"===e.id&&i.apiCallStatusNodeInfo.status===i.apiCallStatusEnum.ERROR||"balance"===e.id&&(i.apiCallStatusAllChannels.status===i.apiCallStatusEnum.ERROR||i.apiCallStatusOCBal.status===i.apiCallStatusEnum.ERROR)||("capacity"===e.id||"status"===e.id)&&i.apiCallStatusAllChannels.status===i.apiCallStatusEnum.ERROR||"fee"===e.id&&i.apiCallStatusFees.status===i.apiCallStatusEnum.ERROR)),t.xp6(1),t.Q6J("ngIf","node"===e.id&&i.apiCallStatusNodeInfo.status===i.apiCallStatusEnum.INITIATED||"balance"===e.id&&(i.apiCallStatusAllChannels.status===i.apiCallStatusEnum.INITIATED||i.apiCallStatusOCBal.status===i.apiCallStatusEnum.INITIATED)||("capacity"===e.id||"status"===e.id)&&i.apiCallStatusAllChannels.status===i.apiCallStatusEnum.INITIATED||"fee"===e.id&&i.apiCallStatusFees.status===i.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngSwitch",e.id),t.xp6(1),t.Q6J("ngSwitchCase","node"),t.xp6(1),t.Q6J("ngSwitchCase","balance"),t.xp6(1),t.Q6J("ngSwitchCase","capacity"),t.xp6(1),t.Q6J("ngSwitchCase","fee"),t.xp6(1),t.Q6J("ngSwitchCase","status")}}function yi(n,a){if(1&n&&(t.TgZ(0,"div",2)(1,"div",3),t._UZ(2,"fa-icon",4),t.TgZ(3,"span",5),t._uU(4),t.qZA()(),t.TgZ(5,"mat-grid-list",6),t.YNc(6,xi,23,18,"mat-grid-tile",7),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("icon",e.apiCallStatusNodeInfo.status===e.apiCallStatusEnum.ERROR?e.faFrown:e.faSmile),t.xp6(2),t.Oqu(e.apiCallStatusNodeInfo.status===e.apiCallStatusEnum.COMPLETED?"Welcome "+e.information.alias+"! Your node is up and running.":e.apiCallStatusNodeInfo.status===e.apiCallStatusEnum.INITIATED?"Wait! Getting your node information...":"Error! Please check the server connection."),t.xp6(1),t.Q6J("rowHeight",e.operatorCardHeight),t.xp6(1),t.Q6J("ngForOf",e.operatorCards)}}function vi(n,a){if(1&n&&(t.TgZ(0,"button",26)(1,"mat-icon"),t._uU(2,"more_vert"),t.qZA()()),2&n){t.oxw();const e=t.MAs(9);t.Q6J("matMenuTriggerFor",e)}}function Li(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"button",27),t.NdJ("click",function(){const s=t.CHM(e).index,c=t.oxw(2).$implicit;return t.oxw(2).onNavigateTo(c.links[s])}),t._uU(1),t.qZA()}if(2&n){const e=a.$implicit;t.xp6(1),t.Oqu(e)}}function Ti(n,a){if(1&n&&(t.TgZ(0,"mat-card-header")(1,"mat-card-title",10)(2,"div"),t._UZ(3,"fa-icon",11),t.TgZ(4,"span"),t._uU(5),t.qZA()(),t.TgZ(6,"div"),t.YNc(7,vi,3,1,"button",12),t.TgZ(8,"mat-menu",13,42),t.YNc(10,Li,2,1,"button",15),t.qZA()()()()),2&n){const e=t.oxw().$implicit;t.xp6(3),t.Q6J("icon",e.icon),t.xp6(2),t.Oqu(e.title),t.xp6(2),t.Q6J("ngIf",e.links[0]),t.xp6(3),t.Q6J("ngForOf",e.goToOptions)}}function bi(n,a){1&n&&t._UZ(0,"mat-progress-bar",28)}function Ai(n,a){if(1&n&&t._UZ(0,"rtl-ecl-node-info",43),2&n){const e=t.oxw(3);t.Q6J("information",e.information)}}function Si(n,a){if(1&n&&t._UZ(0,"rtl-ecl-balances-info",30),2&n){const e=t.oxw(3);t.Q6J("balances",e.balances)("errorMessage",e.errorMessages[2]+" "+e.errorMessages[3])}}function Zi(n,a){if(1&n&&t._UZ(0,"rtl-ecl-channel-liquidity-info",44),2&n){const e=t.oxw(3);t.Q6J("direction","In")("totalLiquidity",e.totalInboundLiquidity)("allChannels",e.allInboundChannels)("errorMessage",e.errorMessages[2])}}function wi(n,a){if(1&n&&t._UZ(0,"rtl-ecl-channel-liquidity-info",44),2&n){const e=t.oxw(3);t.Q6J("direction","Out")("totalLiquidity",e.totalOutboundLiquidity)("allChannels",e.allOutboundChannels)("errorMessage",e.errorMessages[2])}}function Ei(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"button",27),t.NdJ("click",function(){const s=t.CHM(e).index,c=t.oxw(3).$implicit;return t.oxw(2).onNavigateTo(c.links[s])}),t._uU(1),t.qZA()}if(2&n){const e=a.$implicit;t.xp6(1),t.Oqu(e)}}function Ii(n,a){if(1&n&&(t.TgZ(0,"button",26)(1,"mat-icon"),t._uU(2,"more_vert"),t.qZA()(),t.TgZ(3,"mat-menu",13,53),t.YNc(5,Ei,2,1,"button",15),t.qZA()),2&n){const e=t.MAs(4),i=t.oxw(2).$implicit;t.Q6J("matMenuTriggerFor",e),t.xp6(5),t.Q6J("ngForOf",i.goToOptions)}}function Oi(n,a){1&n&&(t.TgZ(0,"span",45)(1,"mat-tab-group",46)(2,"mat-tab",47),t._UZ(3,"rtl-ecl-lightning-invoices",48),t.qZA(),t.TgZ(4,"mat-tab",49),t._UZ(5,"rtl-ecl-lightning-payments",50),t.qZA(),t.TgZ(6,"mat-tab",51),t.YNc(7,Ii,6,2,"ng-template",52),t.qZA()()()),2&n&&(t.xp6(3),t.Q6J("calledFrom","home"),t.xp6(2),t.Q6J("calledFrom","home"),t.xp6(1),t.Q6J("disabled",!0))}function Fi(n,a){1&n&&(t.TgZ(0,"h3"),t._uU(1,"Error! Unable to find information!"),t.qZA())}const qi=function(n){return{"p-0":n}};function Ri(n,a){if(1&n&&(t.TgZ(0,"mat-grid-tile",8)(1,"mat-card",36),t.YNc(2,Ti,11,4,"mat-card-header",37),t.TgZ(3,"mat-card-content",38),t.YNc(4,bi,1,0,"mat-progress-bar",18),t.TgZ(5,"div",19),t.YNc(6,Ai,1,1,"rtl-ecl-node-info",39),t.YNc(7,Si,1,2,"rtl-ecl-balances-info",21),t.YNc(8,Zi,1,4,"rtl-ecl-channel-liquidity-info",40),t.YNc(9,wi,1,4,"rtl-ecl-channel-liquidity-info",40),t.YNc(10,Oi,8,3,"span",41),t.YNc(11,Fi,2,0,"h3",25),t.qZA()()()()),2&n){const e=a.$implicit,i=t.oxw(2);t.Q6J("colspan",e.cols)("rowspan",e.rows),t.xp6(1),t.Q6J("ngClass",t.VKq(13,qi,"transactions"===e.id)),t.xp6(1),t.Q6J("ngIf","transactions"!==e.id),t.xp6(1),t.s9C("fxFlex","transactions"===e.id?100:"balance"===e.id?70:90),t.Q6J("ngClass",t.VKq(15,yt,"node"===e.id&&i.apiCallStatusNodeInfo.status===i.apiCallStatusEnum.ERROR||"balance"===e.id&&(i.apiCallStatusAllChannels.status===i.apiCallStatusEnum.ERROR||i.apiCallStatusOCBal.status===i.apiCallStatusEnum.ERROR)||("inboundLiq"===e.id||"outboundLiq"===e.id)&&i.apiCallStatusAllChannels.status===i.apiCallStatusEnum.ERROR)),t.xp6(1),t.Q6J("ngIf","node"===e.id&&i.apiCallStatusNodeInfo.status===i.apiCallStatusEnum.INITIATED||"balance"===e.id&&(i.apiCallStatusAllChannels.status===i.apiCallStatusEnum.INITIATED||i.apiCallStatusOCBal.status===i.apiCallStatusEnum.INITIATED)||("inboundLiq"===e.id||"outboundLiq"===e.id)&&i.apiCallStatusAllChannels.status===i.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngSwitch",e.id),t.xp6(1),t.Q6J("ngSwitchCase","node"),t.xp6(1),t.Q6J("ngSwitchCase","balance"),t.xp6(1),t.Q6J("ngSwitchCase","inboundLiq"),t.xp6(1),t.Q6J("ngSwitchCase","outboundLiq"),t.xp6(1),t.Q6J("ngSwitchCase","transactions")}}function Ni(n,a){if(1&n&&(t.TgZ(0,"div",34),t._UZ(1,"fa-icon",4),t.TgZ(2,"span",5),t._uU(3),t.qZA()(),t.TgZ(4,"mat-grid-list",35),t.YNc(5,Ri,12,17,"mat-grid-tile",7),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faSmile),t.xp6(2),t.hij("Welcome ",e.information.alias,"! Your node is up and running."),t.xp6(1),t.Q6J("rowHeight",e.merchantCardHeight),t.xp6(1),t.Q6J("ngForOf",e.merchantCards)}}let ki=(()=>{class n{constructor(e,i,o,s){this.logger=e,this.store=i,this.commonService=o,this.router=s,this.faSmile=dt.ctA,this.faFrown=dt.KfU,this.faAngleDoubleDown=L.Sbq,this.faAngleDoubleUp=L.Vfw,this.faChartPie=L.OS1,this.faBolt=L.BDt,this.faServer=L.xf3,this.faNetworkWired=L.kXW,this.userPersonaEnum=l.ol,this.channelBalances={localBalance:0,remoteBalance:0,balancedness:0},this.selNode={},this.information={},this.channels=[],this.onchainBalance={},this.balances={onchain:-1,lightning:-1,total:0},this.channelsStatus={},this.allChannelsCapacity=[],this.allInboundChannels=[],this.allOutboundChannels=[],this.totalInboundLiquidity=0,this.totalOutboundLiquidity=0,this.operatorCards=[],this.merchantCards=[],this.screenSize="",this.operatorCardHeight="405px",this.merchantCardHeight="65px",this.sortField="Balance Score",this.errorMessages=["","","",""],this.apiCallStatusNodeInfo={status:l.Bn.COMPLETED},this.apiCallStatusFees={status:l.Bn.COMPLETED},this.apiCallStatusOCBal={status:l.Bn.COMPLETED},this.apiCallStatusAllChannels={status:l.Bn.COMPLETED},this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.operatorCards=[{id:"node",goToOptions:[],links:[],icon:this.faServer,title:"Node Information",cols:10,rows:1},{id:"balance",goToOptions:["On-Chain"],links:["onchain"],icon:this.faChartPie,title:"Balances",cols:10,rows:1},{id:"fee",goToOptions:["Routing","Fees Summary"],links:["routing","reports"],icon:this.faBolt,title:"Routing Fee",cols:10,rows:1},{id:"status",goToOptions:["Channels","Inactive Channels"],links:["connections","connections/channels/inactive"],icon:this.faNetworkWired,title:"Channels",cols:10,rows:1},{id:"capacity",goToOptions:["Channels"],links:["connections"],icon:this.faNetworkWired,title:"Channels Capacity",cols:10,rows:2}],this.merchantCards=[{id:"balance",goToOptions:["On-Chain"],links:["onchain"],icon:this.faChartPie,title:"Balances",cols:6,rows:4},{id:"transactions",goToOptions:["Transactions","Transactions Summary"],links:["transactions","reports/transactions"],title:"",cols:6,rows:4},{id:"inboundLiq",goToOptions:["Channels"],links:["connections"],icon:this.faAngleDoubleDown,title:"In-Bound Liquidity",cols:6,rows:8},{id:"outboundLiq",goToOptions:["Channels"],links:["connections"],icon:this.faAngleDoubleUp,title:"Out-Bound Liquidity",cols:6,rows:8}]):this.screenSize===l.cu.SM||this.screenSize===l.cu.MD?(this.operatorCards=[{id:"node",goToOptions:[],links:[],icon:this.faServer,title:"Node Information",cols:5,rows:1},{id:"balance",goToOptions:["On-Chain"],links:["onchain"],icon:this.faChartPie,title:"Balances",cols:5,rows:1},{id:"fee",goToOptions:["Routing","Fees Summary"],links:["routing","reports"],icon:this.faBolt,title:"Routing Fee",cols:5,rows:1},{id:"status",goToOptions:["Channels","Inactive Channels"],links:["connections","connections/channels/inactive"],icon:this.faNetworkWired,title:"Channels",cols:5,rows:1},{id:"capacity",goToOptions:["Channels"],links:["connections"],icon:this.faNetworkWired,title:"Channels Capacity",cols:10,rows:2}],this.merchantCards=[{id:"balance",goToOptions:["On-Chain"],links:["onchain"],icon:this.faChartPie,title:"Balances",cols:3,rows:4},{id:"transactions",goToOptions:["Transactions","Transactions Summary"],links:["transactions","reports/transactions"],title:"",cols:3,rows:4},{id:"inboundLiq",goToOptions:["Channels"],links:["connections"],icon:this.faAngleDoubleDown,title:"In-Bound Liquidity",cols:3,rows:8},{id:"outboundLiq",goToOptions:["Channels"],links:["connections"],icon:this.faAngleDoubleUp,title:"Out-Bound Liquidity",cols:3,rows:8}]):(this.operatorCards=[{id:"node",goToOptions:[],links:[],icon:this.faServer,title:"Node Information",cols:3,rows:1},{id:"balance",goToOptions:["On-Chain"],links:["onchain"],icon:this.faChartPie,title:"Balances",cols:3,rows:1},{id:"capacity",goToOptions:["Channels"],links:["connections"],icon:this.faNetworkWired,title:"Channels Capacity",cols:4,rows:2},{id:"fee",goToOptions:["Routing","Fees Summary"],links:["routing","reports"],icon:this.faBolt,title:"Routing Fee",cols:3,rows:1},{id:"status",goToOptions:["Channels","Inactive Channels"],links:["connections","connections/channels/inactive"],icon:this.faNetworkWired,title:"Channels",cols:3,rows:1}],this.merchantCards=[{id:"balance",goToOptions:["On-Chain"],links:["onchain"],icon:this.faChartPie,title:"Balances",cols:2,rows:5},{id:"inboundLiq",goToOptions:["Channels"],links:["connections"],icon:this.faAngleDoubleDown,title:"In-Bound Liquidity",cols:2,rows:10},{id:"outboundLiq",goToOptions:["Channels"],links:["connections"],icon:this.faAngleDoubleUp,title:"Out-Bound Liquidity",cols:2,rows:10},{id:"transactions",goToOptions:["Transactions","Transactions Summary"],links:["transactions","reports/transactions"],title:"",cols:2,rows:5}])}ngOnInit(){this.store.select(C.pg).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.selNode=e}),this.store.select(C.T$).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.errorMessages[0]="",this.apiCallStatusNodeInfo=e.apiCallStatus,this.apiCallStatusNodeInfo.status===l.Bn.ERROR&&(this.errorMessages[0]="object"==typeof this.apiCallStatusNodeInfo.message?JSON.stringify(this.apiCallStatusNodeInfo.message):this.apiCallStatusNodeInfo.message?this.apiCallStatusNodeInfo.message:""),this.information=e.information}),this.store.select(C.JG).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.errorMessages[1]="",this.apiCallStatusFees=e.apiCallStatus,this.apiCallStatusFees.status===l.Bn.ERROR&&(this.errorMessages[1]="object"==typeof this.apiCallStatusFees.message?JSON.stringify(this.apiCallStatusFees.message):this.apiCallStatusFees.message?this.apiCallStatusFees.message:""),this.fees=e.fees}),this.store.select(C.Xz).pipe((0,_.R)(this.unSubs[3]),(0,it.M)(this.store.select(C.kY))).subscribe(([e,i])=>{var o,s;this.errorMessages[2]="",this.errorMessages[3]="",this.apiCallStatusAllChannels=e.apiCallStatus,this.apiCallStatusOCBal=i.apiCallStatus,this.apiCallStatusAllChannels.status===l.Bn.ERROR&&(this.errorMessages[2]="object"==typeof this.apiCallStatusAllChannels.message?JSON.stringify(this.apiCallStatusAllChannels.message):this.apiCallStatusAllChannels.message?this.apiCallStatusAllChannels.message:""),this.apiCallStatusOCBal.status===l.Bn.ERROR&&(this.errorMessages[3]="object"==typeof this.apiCallStatusOCBal.message?JSON.stringify(this.apiCallStatusOCBal.message):this.apiCallStatusOCBal.message?this.apiCallStatusOCBal.message:""),this.channels=e.activeChannels,this.onchainBalance=i.onchainBalance,this.balances.onchain=this.onchainBalance.total||0,this.balances.lightning=e.lightningBalance.localBalance,this.balances.total=this.balances.lightning+this.balances.onchain,this.balances=Object.assign({},this.balances);const c=e.lightningBalance.localBalance?+e.lightningBalance.localBalance:0,h=e.lightningBalance.remoteBalance?+e.lightningBalance.remoteBalance:0;this.channelBalances={localBalance:c,remoteBalance:h,balancedness:+(1-Math.abs((c-h)/(c+h))).toFixed(3)},this.channelsStatus=e.channelsStatus,this.totalInboundLiquidity=0,this.totalOutboundLiquidity=0,this.allChannelsCapacity=JSON.parse(JSON.stringify(this.commonService.sortDescByKey(this.channels,"balancedness"))),this.allInboundChannels=JSON.parse(JSON.stringify(this.commonService.sortDescByKey(null===(o=this.channels)||void 0===o?void 0:o.filter(T=>(T.toRemote||0)>0),"toRemote"))),this.allOutboundChannels=JSON.parse(JSON.stringify(this.commonService.sortDescByKey(null===(s=this.channels)||void 0===s?void 0:s.filter(T=>(T.toLocal||0)>0),"toLocal"))),this.channels.forEach(T=>{this.totalInboundLiquidity=this.totalInboundLiquidity+Math.ceil(T.toRemote||0),this.totalOutboundLiquidity=this.totalOutboundLiquidity+Math.floor(T.toLocal||0)}),this.logger.info(e)})}onNavigateTo(e){this.router.navigateByUrl("/ecl/"+e)}onsortChannelsBy(){"Balance Score"===this.sortField?(this.sortField="Capacity",this.allChannelsCapacity=this.channels.sort((e,i)=>{const o=+(e.toLocal||0)+ +(e.toRemote||0),s=+(i.toLocal||0)+ +(i.toRemote||0);return o>s?-1:o{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(w.yh),t.Y36(N.v),t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-home"]],decls:3,vars:2,consts:[["fxLayout","column",4,"ngIf","ngIfElse"],["merchantDashboard",""],["fxLayout","column"],["fxLayout","row","fxLayoutAlign","start start",1,"page-title-container","mb-2"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["cols","10","gutterSize","20px",3,"rowHeight"],["fxFlex","100","fxLayout","column","fxLayoutAlign","start stretch",3,"colspan","rowspan",4,"ngFor","ngForOf"],["fxFlex","100","fxLayout","column","fxLayoutAlign","start stretch",3,"colspan","rowspan"],["fxFlex","100","fxLayout","column","fxLayoutAlign","start stretch",1,"h-100","dashboard-card"],["fxLayoutAlign","space-between center"],[1,"mr-1",3,"icon"],["mat-icon-button","","class","more-button","aria-label","Toggle menu",3,"matMenuTriggerFor",4,"ngIf"],["xPosition","before",1,"dashboard-vert-menu"],["menuOperator","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["mat-menu-item","",3,"click",4,"ngIf"],["fxLayout","column",3,"fxFlex","ngClass"],["mode","indeterminate",4,"ngIf"],["fxLayout","column","fxFlex","100",3,"ngSwitch"],["fxFlex","100",3,"information","showColorFieldSeparately",4,"ngSwitchCase"],["fxFlex","100",3,"balances","errorMessage",4,"ngSwitchCase"],["fxFlex","100",3,"sortBy","channelBalances","allChannels","errorMessage",4,"ngSwitchCase"],["fxFlex","100",3,"fees","errorMessage",4,"ngSwitchCase"],["fxFlex","100",3,"channelsStatus","errorMessage",4,"ngSwitchCase"],[4,"ngSwitchDefault"],["mat-icon-button","","aria-label","Toggle menu",1,"more-button",3,"matMenuTriggerFor"],["mat-menu-item","",3,"click"],["mode","indeterminate"],["fxFlex","100",3,"information","showColorFieldSeparately"],["fxFlex","100",3,"balances","errorMessage"],["fxFlex","100",3,"sortBy","channelBalances","allChannels","errorMessage"],["fxFlex","100",3,"fees","errorMessage"],["fxFlex","100",3,"channelsStatus","errorMessage"],["fxLayout","row","fxLayoutAlign","start end",1,"page-title-container","mb-2"],["cols","6","gutterSize","20px",3,"rowHeight"],["fxFlex","100","fxLayout","column","fxLayoutAlign","start stretch",1,"h-100","dashboard-card",3,"ngClass"],[4,"ngIf"],["fxLayout","column","fxLayoutAlign","start stretch",3,"fxFlex","ngClass"],["fxFlex","100",3,"information",4,"ngSwitchCase"],["fxFlex","100",3,"direction","totalLiquidity","allChannels","errorMessage",4,"ngSwitchCase"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between start",4,"ngSwitchCase"],["menuMerchant","matMenu"],["fxFlex","100",3,"information"],["fxFlex","100",3,"direction","totalLiquidity","allChannels","errorMessage"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between start"],["fxLayout","column",1,"w-100","dashboard-tabs-group"],["label","Receive"],[1,"h-100",3,"calledFrom"],["label","Pay"],[3,"calledFrom"],[3,"disabled"],["mat-tab-label",""],["menuTransactions","matMenu"]],template:function(e,i){if(1&e&&(t.YNc(0,yi,7,4,"div",0),t.YNc(1,Ni,6,4,"ng-template",null,1,t.W1O)),2&e){const o=t.MAs(2);t.Q6J("ngIf",(null==i.selNode?null:i.selNode.userPersona)===i.userPersonaEnum.OPERATOR)("ngIfElse",o)}},directives:[u.O5,p.xw,p.Wh,q.BN,ht.Il,u.sg,ht.DX,p.yH,b.a8,b.dk,b.n5,F.lW,at.p6,_t.Hw,at.VK,at.OP,b.dn,u.mk,E.oO,J.pW,u.RF,u.n9,Yt,zt,te,ie,se,u.ED,ye,P.SP,P.uX,gt,xt,P.uD],styles:[""]}),n})();var Pi=f(8377);const Di=["form"];function Ui(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Bitcoin address is required."),t.qZA())}function Mi(n,a){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.amountError)}}function Ji(n,a){if(1&n&&(t.TgZ(0,"mat-option",29),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.Q6J("value",e),t.xp6(1),t.Oqu(e)}}function Qi(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Target Confirmation Blocks is required."),t.qZA())}function Yi(n,a){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.sendFundError)}}function Hi(n,a){if(1&n&&(t.TgZ(0,"div",30),t._UZ(1,"fa-icon",31),t.YNc(2,Yi,2,1,"span",12),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faExclamationTriangle),t.xp6(1),t.Q6J("ngIf",""!==e.sendFundError)}}let vt=(()=>{class n{constructor(e,i,o,s,c,h){this.dialogRef=e,this.logger=i,this.store=o,this.commonService=s,this.decimalPipe=c,this.actions=h,this.faExclamationTriangle=L.eHv,this.selNode={},this.addressTypes=[],this.selectedAddress=l._t[1],this.blockchainBalance={},this.information={},this.newAddress="",this.transaction={},this.sendFundError="",this.fiatConversion=!1,this.amountUnits=l.uA,this.selAmountUnit=l.uA[0],this.currConvertorRate={},this.unitConversionValue=0,this.currencyUnitFormats=l.Xz,this.amountError="Amount is Required.",this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x]}ngOnInit(){this.store.select(Pi.dT).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.fiatConversion=e.settings.fiatConversion,this.amountUnits=e.settings.currencyUnits,this.logger.info(e)}),this.actions.pipe((0,_.R)(this.unSubs[1]),(0,Q.h)(e=>e.type===l.lr.UPDATE_API_CALL_STATUS_ECL||e.type===l.lr.SEND_ONCHAIN_FUNDS_RES_ECL)).subscribe(e=>{e.type===l.lr.SEND_ONCHAIN_FUNDS_RES_ECL&&(this.store.dispatch((0,Z.jW)({payload:"Fund Sent Successfully!"})),this.dialogRef.close()),e.type===l.lr.UPDATE_API_CALL_STATUS_ECL&&e.payload.status===l.Bn.ERROR&&"SendOnchainFunds"===e.payload.action&&(this.sendFundError=e.payload.message)})}onSendFunds(){if(this.invalidValues)return!0;this.sendFundError="",this.transaction.amount&&this.selAmountUnit!==l.NT.SATS?this.commonService.convertCurrency(this.transaction.amount,this.selAmountUnit===this.amountUnits[2]?l.NT.OTHER:this.selAmountUnit,l.NT.SATS,this.amountUnits[2],this.fiatConversion).pipe((0,_.R)(this.unSubs[2])).subscribe({next:e=>{this.transaction.amount=parseInt(e[l.NT.SATS]),this.selAmountUnit=l.NT.SATS,this.store.dispatch((0,k.Iy)({payload:this.transaction}))},error:e=>{this.selAmountUnit=l.NT.SATS,this.amountError="Conversion Error: "+e}}):this.store.dispatch((0,k.Iy)({payload:this.transaction}))}get invalidValues(){return!this.transaction.address||""===this.transaction.address||!this.transaction.amount||this.transaction.amount<=0||!this.transaction.blocks||this.transaction.blocks<=0}resetData(){this.sendFundError="",this.transaction={}}onAmountUnitChange(e){const i=this,o=this.selAmountUnit===this.amountUnits[2]?l.NT.OTHER:this.selAmountUnit;let s=e.value===this.amountUnits[2]?l.NT.OTHER:e.value;this.transaction.amount&&this.selAmountUnit!==e.value&&this.commonService.convertCurrency(this.transaction.amount,o,s,this.amountUnits[2],this.fiatConversion).pipe((0,_.R)(this.unSubs[3])).subscribe({next:c=>{this.selAmountUnit=e.value,i.transaction.amount=+i.decimalPipe.transform(c[s],i.currencyUnitFormats[s]).replace(/,/g,"")},error:c=>{this.amountError="Conversion Error: "+c,this.selAmountUnit=o,s=o}})}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(U.so),t.Y36(R.mQ),t.Y36(w.yh),t.Y36(N.v),t.Y36(u.JJ),t.Y36(G.eX))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-on-chain-send-modal"]],viewQuery:function(e,i){if(1&e&&t.Gf(Di,7),2&e){let o;t.iGM(o=t.CRH())&&(i.form=o.first)}},decls:36,vars:15,consts:[["fxLayout","row"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title"],["tabindex","8","fxFlex","5","fxLayoutAlign","center","default","","mat-button","",1,"btn-close-x","p-0",3,"mat-dialog-close"],[1,"padding-gap-x-large"],["fxLayout","row wrap","fxFlex","100","fxLayoutAlign","space-between start",1,"overflow-x-hidden",3,"submit","reset"],["form","ngForm"],["fxFlex","55"],["matInput","","autoFocus","","placeholder","Bitcoin Address","tabindex","1","name","addr","required","",3,"ngModel","ngModelChange"],["addrs","ngModel"],[4,"ngIf"],["fxFlex","30"],["matInput","","placeholder","Amount","name","amt","type","number","tabindex","2","required","",3,"ngModel","step","min","ngModelChange"],["amnt","ngModel"],["matSuffix",""],["fxFlex","10","fxLayoutAlign","start end"],["tabindex","3","required","","name","amountUnit",3,"value","selectionChange"],[3,"value",4,"ngFor","ngForOf"],["fxFlex","60","fxLayoutAlign","space-between stretch","fxLayout","row wrap"],["fxFlex","48","fxLayout","row","fxLayoutAlign","start center"],["matInput","","placeholder","Target Confirmation Blocks","type","number","name","blocks","tabindex","8","required","true",3,"ngModel","step","min","ngModelChange"],["blocks","ngModel"],["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch"],["fxFlex","100","class","alert alert-danger mt-1",4,"ngIf"],["fxLayout","row","fxFlex","100","fxLayoutAlign","end center"],["mat-button","","color","primary","tabindex","7","type","reset",1,"mr-1"],["mat-button","","color","primary","type","submit","tabindex","8"],[3,"value"],["fxFlex","100",1,"alert","alert-danger","mt-1"],[1,"mr-1","alert-icon",3,"icon"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3)(4,"span",4),t._uU(5,"Send Payment"),t.qZA()(),t.TgZ(6,"button",5),t._uU(7,"X"),t.qZA()(),t.TgZ(8,"mat-card-content",6)(9,"form",7,8),t.NdJ("submit",function(){return i.onSendFunds()})("reset",function(){return i.resetData()}),t.TgZ(11,"mat-form-field",9)(12,"input",10,11),t.NdJ("ngModelChange",function(s){return i.transaction.address=s}),t.qZA(),t.YNc(14,Ui,2,0,"mat-error",12),t.qZA(),t.TgZ(15,"mat-form-field",13)(16,"input",14,15),t.NdJ("ngModelChange",function(s){return i.transaction.amount=s}),t.qZA(),t.TgZ(18,"span",16),t._uU(19),t.qZA(),t.YNc(20,Mi,2,1,"mat-error",12),t.qZA(),t.TgZ(21,"mat-form-field",17)(22,"mat-select",18),t.NdJ("selectionChange",function(s){return i.onAmountUnitChange(s)}),t.YNc(23,Ji,2,2,"mat-option",19),t.qZA()(),t.TgZ(24,"div",20)(25,"mat-form-field",21)(26,"input",22,23),t.NdJ("ngModelChange",function(s){return i.transaction.blocks=s}),t.qZA(),t.YNc(28,Qi,2,0,"mat-error",12),t.qZA()(),t._UZ(29,"div",24),t.YNc(30,Hi,3,2,"div",25),t.TgZ(31,"div",26)(32,"button",27),t._uU(33,"Clear Fields"),t.qZA(),t.TgZ(34,"button",28),t._uU(35,"Send Funds"),t.qZA()()()()()()),2&e&&(t.xp6(6),t.Q6J("mat-dialog-close",!1),t.xp6(6),t.Q6J("ngModel",i.transaction.address),t.xp6(2),t.Q6J("ngIf",!i.transaction.address),t.xp6(2),t.Q6J("ngModel",i.transaction.amount)("step",100)("min",0),t.xp6(3),t.hij(" ",i.selAmountUnit," "),t.xp6(1),t.Q6J("ngIf",!i.transaction.amount),t.xp6(2),t.Q6J("value",i.selAmountUnit),t.xp6(1),t.Q6J("ngForOf",i.amountUnits),t.xp6(3),t.Q6J("ngModel",i.transaction.blocks)("step",1)("min",0),t.xp6(2),t.Q6J("ngIf",!i.transaction.blocks),t.xp6(2),t.Q6J("ngIf",""!==i.sendFundError))},directives:[p.xw,p.yH,b.dk,p.Wh,F.lW,U.ZT,b.dn,m._Y,m.JL,m.F,y.KE,M.Nt,m.Fj,W.h,m.Q7,m.JJ,m.On,u.O5,y.TO,m.wV,m.qQ,K.q,y.R9,D.gD,u.sg,B.ey,q.BN],styles:[""]}),n})();var lt=f(1203);function Bi(n,a){1&n&&t._UZ(0,"mat-progress-bar",31)}function zi(n,a){1&n&&(t.TgZ(0,"th",32),t._uU(1," Date/Time "),t.qZA())}function Vi(n,a){if(1&n&&(t.TgZ(0,"td",33),t._uU(1),t.ALo(2,"date"),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Oqu(t.xi3(2,1,1e3*e.timestamp,"dd/MMM/y HH:mm"))}}function Gi(n,a){1&n&&(t.TgZ(0,"th",34),t._uU(1," Amount (Sats) "),t.qZA())}function Xi(n,a){if(1&n&&(t.TgZ(0,"span",37),t._uU(1),t.ALo(2,"number"),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Oqu(t.lcZ(2,1,e.amount))}}function $i(n,a){if(1&n&&(t.TgZ(0,"span",38),t._uU(1),t.ALo(2,"number"),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.hij("(",t.lcZ(2,1,-1*e.amount),")")}}function Wi(n,a){if(1&n&&(t.TgZ(0,"td",33),t.YNc(1,Xi,3,3,"span",35),t.YNc(2,$i,3,3,"span",36),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Q6J("ngIf",e.amount>0||0===e.amount),t.xp6(1),t.Q6J("ngIf",e.amount<0)}}function Ki(n,a){1&n&&(t.TgZ(0,"th",34),t._uU(1," Fees (Sats) "),t.qZA())}function ji(n,a){if(1&n&&(t.TgZ(0,"td",33)(1,"span",37),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,e.fees))}}function ta(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1," Confirmations "),t.qZA())}function ea(n,a){if(1&n&&(t.TgZ(0,"td",40)(1,"span",37),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.lcZ(3,1,null==e?null:e.confirmations)," ")}}function na(n,a){1&n&&(t.TgZ(0,"th",32),t._uU(1," Address "),t.qZA())}function ia(n,a){if(1&n&&(t.TgZ(0,"td",33),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Oqu(e.address)}}function aa(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"th",41)(1,"div",42)(2,"mat-select",43),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",44),t.NdJ("click",function(){return t.CHM(e),t.oxw().onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}function oa(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",45)(1,"button",46),t.NdJ("click",function(o){const c=t.CHM(e).$implicit;return t.oxw().onTransactionClick(c,o)}),t._uU(2,"View Info"),t.qZA()()}}function sa(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No transaction available."),t.qZA())}function la(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting transactions..."),t.qZA())}function ra(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.errorMessage)}}function ca(n,a){if(1&n&&(t.TgZ(0,"td",47),t.YNc(1,sa,2,0,"p",48),t.YNc(2,la,2,0,"p",48),t.YNc(3,ra,2,1,"p",48),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",(!(null!=e.listTransactions&&e.listTransactions.data)||(null==e.listTransactions||null==e.listTransactions.data?null:e.listTransactions.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.listTransactions&&e.listTransactions.data)||(null==e.listTransactions||null==e.listTransactions.data?null:e.listTransactions.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.listTransactions&&e.listTransactions.data)||(null==e.listTransactions||null==e.listTransactions.data?null:e.listTransactions.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const ua=function(n){return{"display-none":n}};function pa(n,a){if(1&n&&t._UZ(0,"tr",49),2&n){const e=t.oxw();t.Q6J("ngClass",t.VKq(1,ua,(null==e.listTransactions?null:e.listTransactions.data)&&(null==e.listTransactions||null==e.listTransactions.data?null:e.listTransactions.data.length)>0))}}function ma(n,a){1&n&&t._UZ(0,"tr",50)}function da(n,a){1&n&&t._UZ(0,"tr",51)}const ha=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},_a=function(){return["no_transaction"]};let fa=(()=>{class n{constructor(e,i,o,s){this.logger=e,this.commonService=i,this.store=o,this.datePipe=s,this.faHistory=L.qO$,this.displayedColumns=[],this.flgSticky=!1,this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.selFilter="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unsub=[new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["timestamp","amount","actions"]):this.screenSize===l.cu.SM?(this.flgSticky=!1,this.displayedColumns=["timestamp","amount","confirmations","fees","actions"]):this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["timestamp","amount","fees","confirmations","address","actions"]):(this.flgSticky=!0,this.displayedColumns=["timestamp","amount","fees","confirmations","address","actions"])}ngOnInit(){this.store.dispatch((0,k.mC)()),this.store.select(C.dx).pipe((0,_.R)(this.unsub[0])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),e.transactions&&this.loadTransactionsTable(e.transactions),this.logger.info(e)})}applyFilter(){this.listTransactions.filter=this.selFilter.trim().toLowerCase()}onTransactionClick(e,i){this.store.dispatch((0,Z.qR)({payload:{data:{type:l.n_.INFORMATION,alertTitle:"Transaction Information",message:[[{key:"blockHash",value:e.blockHash,title:"Block Hash",width:100}],[{key:"txid",value:e.txid,title:"Transaction ID",width:100}],[{key:"timestamp",value:e.timestamp,title:"Date/Time",width:50,type:l.Gi.DATE_TIME},{key:"confirmations",value:e.confirmations,title:"Number of Confirmations",width:50,type:l.Gi.NUMBER}],[{key:"fees",value:e.fees,title:"Fees (Sats)",width:50,type:l.Gi.NUMBER},{key:"amount",value:e.amount,title:"Amount (Sats)",width:50,type:l.Gi.NUMBER}],[{key:"address",value:e.address,title:"Address",width:100,type:l.Gi.STRING}]]}}}))}loadTransactionsTable(e){this.listTransactions=new r.by([...e]),this.listTransactions.sort=this.sort,this.listTransactions.sortingDataAccessor=(i,o)=>i[o]&&isNaN(i[o])?i[o].toLocaleLowerCase():i[o]?+i[o]:null,this.listTransactions.filterPredicate=(i,o)=>{var s;return((i.timestamp?null===(s=this.datePipe.transform(new Date(1e3*i.timestamp),"dd/MMM/YYYY HH:mm"))||void 0===s?void 0:s.toLowerCase():"")+JSON.stringify(i).toLowerCase()).includes(o)},this.listTransactions.paginator=this.paginator,this.applyFilter(),this.logger.info(this.listTransactions)}onDownloadCSV(){this.listTransactions.data&&this.listTransactions.data.length>0&&this.commonService.downloadFile(this.listTransactions.data,"Transactions")}ngOnDestroy(){this.unsub.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(N.v),t.Y36(w.yh),t.Y36(u.uU))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-on-chain-transaction-history"]],viewQuery:function(e,i){if(1&e&&(t.Gf(A.YE,5),t.Gf(S.NW,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.sort=o.first),t.iGM(o=t.CRH())&&(i.paginator=o.first)}},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Transactions")}])],decls:37,vars:15,consts:[["fxLayout","row wrap","fxLayoutAlign","start start","fxLayout.gt-sm","column","fxFlex","100","fxLayoutAlign.gt-sm","start stretch"],["fxLayout","column","fxLayout.gt-xs","row wrap","fxLayoutAlign.gt-xs","start center","fxLayoutAlign","start stretch",1,"page-sub-title-container"],["fxFlex","70"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxFlex","30"],["matInput","","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","row","fxLayoutAlign","start start"],["fxLayout","column","fxLayoutAlign","start end","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",3,"dataSource","ngClass"],["table",""],["matColumnDef","timestamp"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","amount"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["matColumnDef","fees"],["matColumnDef","confirmations"],["mat-header-cell","","mat-sort-header","","arrowPosition","before","class","pr-2",4,"matHeaderCellDef"],["mat-cell","","class","pr-2",4,"matCellDef"],["matColumnDef","address"],["matColumnDef","actions"],["mat-header-cell","","class","px-3",4,"matHeaderCellDef"],["mat-cell","","class","pl-3","fxLayoutAlign","end center",4,"matCellDef"],["matColumnDef","no_transaction"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["fxLayoutAlign","end center",4,"ngIf"],["fxLayoutAlign","end center","class","red",4,"ngIf"],["fxLayoutAlign","end center"],["fxLayoutAlign","end center",1,"red"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",1,"pr-2"],["mat-cell","",1,"pr-2"],["mat-header-cell","",1,"px-3"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",1,"pl-3"],["mat-stroked-button","","color","primary","type","button","tabindex","4",3,"click"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"div",2),t._UZ(3,"fa-icon",3),t.TgZ(4,"span",4),t._uU(5,"Transaction History"),t.qZA()(),t.TgZ(6,"mat-form-field",5)(7,"input",6),t.NdJ("keyup",function(){return i.applyFilter()})("ngModelChange",function(s){return i.selFilter=s}),t.qZA()()(),t.TgZ(8,"div",7)(9,"div",8),t.YNc(10,Bi,1,0,"mat-progress-bar",9),t.TgZ(11,"table",10,11),t.ynx(13,12),t.YNc(14,zi,2,0,"th",13),t.YNc(15,Vi,3,4,"td",14),t.BQk(),t.ynx(16,15),t.YNc(17,Gi,2,0,"th",16),t.YNc(18,Wi,3,2,"td",14),t.BQk(),t.ynx(19,17),t.YNc(20,Ki,2,0,"th",16),t.YNc(21,ji,4,3,"td",14),t.BQk(),t.ynx(22,18),t.YNc(23,ta,2,0,"th",19),t.YNc(24,ea,4,3,"td",20),t.BQk(),t.ynx(25,21),t.YNc(26,na,2,0,"th",13),t.YNc(27,ia,2,1,"td",14),t.BQk(),t.ynx(28,22),t.YNc(29,aa,6,0,"th",23),t.YNc(30,oa,3,0,"td",24),t.BQk(),t.ynx(31,25),t.YNc(32,ca,4,3,"td",26),t.BQk(),t.YNc(33,pa,1,3,"tr",27),t.YNc(34,ma,1,0,"tr",28),t.YNc(35,da,1,0,"tr",29),t.qZA(),t._UZ(36,"mat-paginator",30),t.qZA()()()),2&e&&(t.xp6(3),t.Q6J("icon",i.faHistory),t.xp6(4),t.Q6J("ngModel",i.selFilter),t.xp6(3),t.Q6J("ngIf",i.apiCallStatus.status===i.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",i.listTransactions)("ngClass",t.VKq(12,ha,""!==i.errorMessage)),t.xp6(22),t.Q6J("matFooterRowDef",t.DdM(14,_a)),t.xp6(1),t.Q6J("matHeaderRowDef",i.displayedColumns)("matHeaderRowDefSticky",i.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",i.displayedColumns),t.xp6(1),t.Q6J("pageSize",i.pageSize)("pageSizeOptions",i.pageSizeOptions)("showFirstLastButtons",i.screenSize!==i.screenSizeEnum.XS))},directives:[p.xw,p.Wh,p.yH,q.BN,y.KE,M.Nt,m.Fj,m.JJ,m.On,H.$V,u.O5,J.pW,r.BZ,A.YE,u.mk,E.oO,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,D.gD,D.$L,B.ey,F.lW,r.mD,r.yh,r.Ke,r.Q2,r.as,r.XQ,r.nj,r.Gk,S.NW],pipes:[u.uU,u.JJ],styles:[".mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})();function ga(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",12),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().activeLink=s.link}),t._uU(1),t.qZA()}if(2&n){const e=a.$implicit,i=t.oxw();t.s9C("routerLink",e.link),t.Q6J("active",i.activeLink===e.link),t.xp6(1),t.Oqu(e.name)}}let Ca=(()=>{class n{constructor(e,i){this.store=e,this.router=i,this.selNode={},this.faExchangeAlt=L.Ssp,this.faChartPie=L.OS1,this.balances=[{title:"Total Balance",dataValue:0},{title:"Confirmed",dataValue:0},{title:"Unconfirmed",dataValue:0}],this.links=[{link:"receive",name:"Receive"},{link:"send",name:"Send"}],this.activeLink=this.links[0].link,this.unSubs=[new d.x,new d.x,new d.x,new d.x]}ngOnInit(){const e=this.links.find(i=>this.router.url.includes(i.link));this.activeLink=e?e.link:this.links[0].link,this.router.events.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(i=>i instanceof x.Av)).subscribe({next:i=>{const o=this.links.find(s=>i.urlAfterRedirects.includes(s.link));this.activeLink=o?o.link:this.links[0].link}}),this.store.select(C.pg).pipe((0,_.R)(this.unSubs[1])).subscribe(i=>{this.selNode=i}),this.store.select(C.kY).pipe((0,_.R)(this.unSubs[2])).subscribe(i=>{this.balances=[{title:"Total Balance",dataValue:i.onchainBalance.total||0},{title:"Confirmed",dataValue:i.onchainBalance.confirmed||0},{title:"Unconfirmed",dataValue:i.onchainBalance.unconfirmed||0}]})}openSendFundsModal(){this.store.dispatch((0,Z.qR)({payload:{data:{component:vt}}}))}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w.yh),t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-on-chain"]],decls:21,vars:4,consts:[["fxLayout","row","fxLayoutAlign","start center",1,"page-title-container"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxLayout","column",1,"padding-gap-x","mb-4"],["fxLayout","column"],[3,"values"],["fxLayout","column",1,"padding-gap-x"],["mat-tab-nav-bar",""],["role","tab","mat-tab-link","","class","mat-tab-label",3,"active","routerLink","click",4,"ngFor","ngForOf"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",1,"padding-gap-x-large","mt-2"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",1,"padding-gap-x-large"],["fxLayout","row","fxFlex","100"],["role","tab","mat-tab-link","",1,"mat-tab-label",3,"active","routerLink","click"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"fa-icon",1),t.TgZ(2,"span",2),t._uU(3,"On-chain Balance"),t.qZA()(),t.TgZ(4,"div",3)(5,"mat-card")(6,"mat-card-content",4),t._UZ(7,"rtl-currency-unit-converter",5),t.qZA()()(),t.TgZ(8,"div",0),t._UZ(9,"fa-icon",1),t.TgZ(10,"span",2),t._uU(11,"On-chain Transactions"),t.qZA()(),t.TgZ(12,"div",6)(13,"mat-card")(14,"mat-card-content",4)(15,"nav",7),t.YNc(16,ga,2,3,"div",8),t.qZA(),t.TgZ(17,"div",9),t._UZ(18,"router-outlet"),t.qZA(),t.TgZ(19,"div",10),t._UZ(20,"rtl-ecl-on-chain-transaction-history",11),t.qZA()()()()),2&e&&(t.xp6(1),t.Q6J("icon",i.faChartPie),t.xp6(6),t.Q6J("values",i.balances),t.xp6(2),t.Q6J("icon",i.faExchangeAlt),t.xp6(7),t.Q6J("ngForOf",i.links))},directives:[p.xw,p.Wh,q.BN,b.a8,b.dn,lt.D,P.BU,u.sg,P.Nj,x.rH,p.yH,x.lC,fa],styles:[""]}),n})();var Lt=f(7544);function xa(n,a){if(1&n&&(t.TgZ(0,"span",10),t._uU(1,"Channels"),t.qZA()),2&n){const e=t.oxw();t.s9C("matBadge",e.activeChannels)}}function ya(n,a){if(1&n&&(t.TgZ(0,"span",10),t._uU(1,"Peers"),t.qZA()),2&n){const e=t.oxw();t.s9C("matBadge",e.activePeers)}}let va=(()=>{class n{constructor(e,i){this.store=e,this.router=i,this.activePeers=0,this.activeChannels=0,this.faUsers=L.FVb,this.faChartPie=L.OS1,this.balances=[{title:"Total Balance",dataValue:0},{title:"Confirmed",dataValue:0},{title:"Unconfirmed",dataValue:0}],this.links=[{link:"channels",name:"Channels"},{link:"peers",name:"Peers"}],this.activeLink=0,this.unSubs=[new d.x,new d.x,new d.x,new d.x]}ngOnInit(){this.activeLink=this.links.findIndex(e=>e.link===this.router.url.substring(this.router.url.lastIndexOf("/")+1)),this.router.events.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(e=>e instanceof x.Av)).subscribe({next:e=>{this.activeLink=this.links.findIndex(i=>i.link===e.urlAfterRedirects.substring(e.urlAfterRedirects.lastIndexOf("/")+1))}}),this.store.select(C.Bo).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.activePeers=e.peers&&e.peers.length?e.peers.length:0}),this.store.select(C.Xz).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.activeChannels=e.channelsStatus&&e.channelsStatus.active&&e.channelsStatus.active.channels?e.channelsStatus.active.channels:0}),this.store.select(C.kY).pipe((0,_.R)(this.unSubs[3])).subscribe(e=>{this.balances=[{title:"Total Balance",dataValue:e.onchainBalance.total||0},{title:"Confirmed",dataValue:e.onchainBalance.confirmed||0},{title:"Unconfirmed",dataValue:e.onchainBalance.unconfirmed||0}]})}onSelectedTabChange(e){this.router.navigateByUrl("/ecl/connections/"+this.links[e.index].link)}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w.yh),t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-connections"]],decls:22,vars:4,consts:[["fxLayout","row","fxLayoutAlign","start center",1,"page-title-container"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxLayout","column",1,"padding-gap-x","mb-4"],["fxLayout","column"],[3,"values"],["fxLayout","column",1,"padding-gap-x"],[3,"selectedIndex","selectedIndexChange","selectedTabChange"],["mat-tab-label",""],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",1,"padding-gap-x-large"],["matBadgeOverlap","false",1,"tab-badge",3,"matBadge"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"fa-icon",1),t.TgZ(2,"span",2),t._uU(3,"On-chain Balance"),t.qZA()(),t.TgZ(4,"div",3)(5,"mat-card")(6,"mat-card-content",4),t._UZ(7,"rtl-currency-unit-converter",5),t.qZA()()(),t.TgZ(8,"div",0),t._UZ(9,"fa-icon",1),t.TgZ(10,"span",2),t._uU(11,"Connections"),t.qZA()(),t.TgZ(12,"div",6)(13,"mat-card")(14,"mat-card-content",4)(15,"mat-tab-group",7),t.NdJ("selectedIndexChange",function(s){return i.activeLink=s})("selectedTabChange",function(s){return i.onSelectedTabChange(s)}),t.TgZ(16,"mat-tab"),t.YNc(17,xa,2,1,"ng-template",8),t.qZA(),t.TgZ(18,"mat-tab"),t.YNc(19,ya,2,1,"ng-template",8),t.qZA()(),t.TgZ(20,"div",9),t._UZ(21,"router-outlet"),t.qZA()()()()),2&e&&(t.xp6(1),t.Q6J("icon",i.faChartPie),t.xp6(6),t.Q6J("values",i.balances),t.xp6(2),t.Q6J("icon",i.faUsers),t.xp6(6),t.Q6J("selectedIndex",i.activeLink))},directives:[p.xw,p.Wh,q.BN,b.a8,b.dn,lt.D,P.SP,P.uX,P.uD,Lt.k,p.yH,x.lC],styles:[""]}),n})();function La(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",11),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().activeLink=s.link}),t._uU(1),t.qZA()}if(2&n){const e=a.$implicit,i=t.oxw();t.s9C("routerLink",e.link),t.Q6J("active",i.activeLink===e.link),t.xp6(1),t.Oqu(e.name)}}let Ta=(()=>{class n{constructor(e,i,o){this.logger=e,this.store=i,this.router=o,this.faExchangeAlt=L.Ssp,this.faChartPie=L.OS1,this.currencyUnits=[],this.balances=[{title:"Local Capacity",dataValue:0,tooltip:"Amount you can send"},{title:"Remote Capacity",dataValue:0,tooltip:"Amount you can receive"}],this.links=[{link:"payments",name:"Payments"},{link:"invoices",name:"Invoices"}],this.activeLink=this.links[0].link,this.unSubs=[new d.x,new d.x,new d.x,new d.x]}ngOnInit(){const e=this.links.find(i=>this.router.url.includes(i.link));this.activeLink=e?e.link:this.links[0].link,this.router.events.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(i=>i instanceof x.Av)).subscribe({next:i=>{const o=this.links.find(s=>i.urlAfterRedirects.includes(s.link));this.activeLink=o?o.link:this.links[0].link}}),this.store.select(C.Xz).pipe((0,_.R)(this.unSubs[1]),(0,it.M)(this.store.select(C.pg))).subscribe(([i,o])=>{this.currencyUnits=(null==o?void 0:o.currencyUnits)||[],this.balances=o&&o.userPersona===l.ol.OPERATOR?[{title:"Local Capacity",dataValue:i.lightningBalance.localBalance,tooltip:"Amount you can send"},{title:"Remote Capacity",dataValue:i.lightningBalance.remoteBalance,tooltip:"Amount you can receive"}]:[{title:"Outbound Capacity",dataValue:i.lightningBalance.localBalance,tooltip:"Amount you can send"},{title:"Inbound Capacity",dataValue:i.lightningBalance.remoteBalance,tooltip:"Amount you can receive"}],this.logger.info(i)})}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(w.yh),t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-transactions"]],decls:19,vars:4,consts:[["fxLayout","row wrap","fxLayoutAlign","start center",1,"page-title-container"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxLayout","column",1,"padding-gap-x","mb-4"],["fxLayout","column"],[3,"values"],["fxLayout","row","fxLayoutAlign","start center",1,"page-title-container"],["fxLayout","column",1,"padding-gap-x"],["mat-tab-nav-bar",""],["role","tab","mat-tab-link","","class","mat-tab-label",3,"active","routerLink","click",4,"ngFor","ngForOf"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",1,"mat-tab-body-wrapper"],["role","tab","mat-tab-link","",1,"mat-tab-label",3,"active","routerLink","click"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"fa-icon",1),t.TgZ(2,"span",2),t._uU(3,"Lightning Balance"),t.qZA()(),t.TgZ(4,"div",3)(5,"mat-card")(6,"mat-card-content",4),t._UZ(7,"rtl-currency-unit-converter",5),t.qZA()()(),t.TgZ(8,"div",6),t._UZ(9,"fa-icon",1),t.TgZ(10,"span",2),t._uU(11,"Lightning Transactions"),t.qZA()(),t.TgZ(12,"div",7)(13,"mat-card")(14,"mat-card-content",4)(15,"nav",8),t.YNc(16,La,2,3,"div",9),t.qZA(),t.TgZ(17,"div",10),t._UZ(18,"router-outlet"),t.qZA()()()()),2&e&&(t.xp6(1),t.Q6J("icon",i.faChartPie),t.xp6(6),t.Q6J("values",i.balances),t.xp6(2),t.Q6J("icon",i.faExchangeAlt),t.xp6(7),t.Q6J("ngForOf",i.links))},directives:[p.xw,p.Wh,q.BN,b.a8,b.dn,lt.D,P.BU,u.sg,P.Nj,x.rH,p.yH,x.lC],styles:[""]}),n})();function ba(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",11),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().activeLink=s.link}),t._uU(1),t.qZA()}if(2&n){const e=a.$implicit,i=t.oxw();t.s9C("routerLink",e.link),t.Q6J("active",i.activeLink===e.link),t.xp6(1),t.Oqu(e.name)}}let Aa=(()=>{class n{constructor(e){this.router=e,this.faMapSigns=L.SuH,this.events=[],this.flgLoading=[!0],this.errorMessage="",this.links=[{link:"forwardinghistory",name:"Forwarding History"},{link:"peers",name:"Routing Peers"}],this.activeLink=this.links[0].link,this.unSubs=[new d.x,new d.x,new d.x]}ngOnInit(){const e=this.links.find(i=>this.router.url.includes(i.link));this.activeLink=e?e.link:this.links[0].link,this.router.events.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(i=>i instanceof x.Av)).subscribe({next:i=>{const o=this.links.find(s=>i.urlAfterRedirects.includes(s.link));this.activeLink=o?o.link:this.links[0].link}})}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-routing"]],decls:13,vars:2,consts:[["fxLayout","column"],["fxLayout","row","fxLayoutAlign","start center",1,"page-title-container"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start start",1,"padding-gap-x"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start start"],["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch"],["fxLayout","row","fxFlex","100"],["mat-tab-nav-bar","","fxFlex","100"],["role","tab","mat-tab-link","","class","mat-tab-label",3,"active","routerLink","click",4,"ngFor","ngForOf"],["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch",1,"padding-gap-x-large"],["role","tab","mat-tab-link","",1,"mat-tab-label",3,"active","routerLink","click"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1),t._UZ(2,"fa-icon",2),t.TgZ(3,"span",3),t._uU(4,"Routing"),t.qZA()(),t.TgZ(5,"div",4)(6,"mat-card",5)(7,"mat-card-content",6)(8,"div",7)(9,"nav",8),t.YNc(10,ba,2,3,"div",9),t.qZA()(),t.TgZ(11,"div",10),t._UZ(12,"router-outlet"),t.qZA()()()()()),2&e&&(t.xp6(2),t.Q6J("icon",i.faMapSigns),t.xp6(8),t.Q6J("ngForOf",i.links))},directives:[p.xw,p.Wh,q.BN,p.yH,b.a8,b.dn,P.BU,u.sg,P.Nj,x.rH,x.lC],styles:[""]}),n})();var et=f(9814),Tt=f(7261),bt=f(6895);function Sa(n,a){if(1&n&&(t.TgZ(0,"span",9)(1,"div"),t._uU(2),t.ALo(3,"titlecase"),t.qZA()()),2&n){const e=a.$implicit,i=t.oxw(2);t.xp6(2),t.AsE("",i.nodeFeaturesEnum[e.key]||e.key,": ",t.lcZ(3,2,e.value),"")}}function Za(n,a){1&n&&(t.TgZ(0,"th",24),t._uU(1,"Address"),t.qZA())}function wa(n,a){if(1&n&&(t.TgZ(0,"td",25),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.hij(" ",e," ")}}function Ea(n,a){1&n&&(t.TgZ(0,"th",26)(1,"span",27),t._uU(2,"Actions"),t.qZA()())}function Ia(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",28)(1,"span",27)(2,"button",29),t.NdJ("copied",function(o){return t.CHM(e),t.oxw(2).onCopyNodeURI(o)}),t._uU(3,"Copy Node URI"),t.qZA()()()}if(2&n){const e=a.$implicit,i=t.oxw(2);t.xp6(2),t.Q6J("payload",(null==i.lookupResult?null:i.lookupResult.nodeId)+"@"+e)}}function Oa(n,a){1&n&&t._UZ(0,"tr",30)}function Fa(n,a){1&n&&t._UZ(0,"tr",31)}const qa=function(n){return{"background-color":n}};function Ra(n,a){if(1&n&&(t.TgZ(0,"div",1),t._UZ(1,"mat-divider",2),t.TgZ(2,"div",3)(3,"div",4)(4,"h4",5),t._uU(5,"Alias"),t.qZA(),t.TgZ(6,"span",6),t._uU(7),t.TgZ(8,"span",7),t._uU(9),t.qZA()()(),t.TgZ(10,"div",8)(11,"h4",5),t._uU(12,"Pub Key"),t.qZA(),t.TgZ(13,"span",9),t._uU(14),t.qZA()()(),t._UZ(15,"mat-divider",2),t.TgZ(16,"div",3)(17,"div",4)(18,"h4",5),t._uU(19,"Date/Time"),t.qZA(),t.TgZ(20,"span",6),t._uU(21),t.ALo(22,"date"),t.qZA()(),t.TgZ(23,"div",8)(24,"h4",5),t._uU(25,"Features"),t.qZA(),t.YNc(26,Sa,4,4,"span",10),t.ALo(27,"keyvalue"),t.qZA()(),t._UZ(28,"mat-divider",2),t.TgZ(29,"div",3)(30,"div",11)(31,"h4",5),t._uU(32,"Signature"),t.qZA(),t.TgZ(33,"span",6),t._uU(34),t.qZA()()(),t._UZ(35,"mat-divider",2),t.TgZ(36,"div",1)(37,"h4",12),t._uU(38,"Addresses"),t.qZA(),t.TgZ(39,"div",13)(40,"table",14,15),t.ynx(42,16),t.YNc(43,Za,2,0,"th",17),t.YNc(44,wa,2,1,"td",18),t.BQk(),t.ynx(45,19),t.YNc(46,Ea,3,0,"th",20),t.YNc(47,Ia,4,1,"td",21),t.BQk(),t.YNc(48,Oa,1,0,"tr",22),t.YNc(49,Fa,1,0,"tr",23),t.qZA()()()()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("inset",!0),t.xp6(6),t.Oqu(null==e.lookupResult?null:e.lookupResult.alias),t.xp6(1),t.Q6J("ngStyle",t.VKq(19,qa,null==e.lookupResult?null:e.lookupResult.rgbColor)),t.xp6(1),t.Oqu(null!=e.lookupResult&&e.lookupResult.rgbColor?null==e.lookupResult?null:e.lookupResult.rgbColor:""),t.xp6(5),t.Oqu(null==e.lookupResult?null:e.lookupResult.nodeId),t.xp6(1),t.Q6J("inset",!0),t.xp6(6),t.Oqu(t.xi3(22,14,1e3*(null==e.lookupResult?null:e.lookupResult.timestamp),"dd/MMM/y HH:mm")),t.xp6(5),t.Q6J("ngForOf",t.lcZ(27,17,null==e.lookupResult?null:e.lookupResult.features.activated)),t.xp6(2),t.Q6J("inset",!0),t.xp6(6),t.Oqu(null==e.lookupResult?null:e.lookupResult.signature),t.xp6(1),t.Q6J("inset",!0),t.xp6(5),t.Q6J("dataSource",e.addresses),t.xp6(8),t.Q6J("matHeaderRowDef",e.displayedColumns),t.xp6(1),t.Q6J("matRowDefColumns",e.displayedColumns)}}let Na=(()=>{class n{constructor(e,i){this.logger=e,this.snackBar=i,this.lookupResult={},this.displayedColumns=["address","actions"],this.nodeFeaturesEnum=l.H_}ngOnInit(){this.addresses=new r.by(this.lookupResult.addresses?[...this.lookupResult.addresses]:[]),this.addresses.data=this.lookupResult.addresses||[],this.addresses.sort=this.sort,this.addresses.sortingDataAccessor=(e,i)=>e[i]&&isNaN(e[i])?e[i].toLocaleLowerCase():e[i]?+e[i]:null}onCopyNodeURI(e){this.snackBar.open("Node URI copied."),this.logger.info("Copied Text: "+e)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(Tt.ux))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-node-lookup"]],viewQuery:function(e,i){if(1&e&&t.Gf(A.YE,5),2&e){let o;t.iGM(o=t.CRH())&&(i.sort=o.first)}},inputs:{lookupResult:"lookupResult"},decls:1,vars:1,consts:[["fxLayout","column",4,"ngIf"],["fxLayout","column"],[1,"my-1",3,"inset"],["fxLayout","row"],["fxFlex","30"],["fxLayoutAlign","start",1,"font-bold-500"],[1,"foreground-secondary-text"],[1,"ml-2",3,"ngStyle"],["fxFlex","70"],[1,"foreground-secondary-text","w-100"],["class","foreground-secondary-text w-100",4,"ngFor","ngForOf"],["fxFlex","100"],["fxFlex","100","fxLayoutAlign","start",1,"font-bold-500","mb-1"],["fxLayout","row","fxLayoutAlign","start center","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mat-table","","matSort","",1,"overflow-auto",3,"dataSource"],["table",""],["matColumnDef","address"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","actions"],["mat-header-cell","","class","pl-1",4,"matHeaderCellDef"],["mat-cell","","class","pl-1",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["mat-header-cell","",1,"pl-1"],["fxLayoutAlign","end center"],["mat-cell","",1,"pl-1"],["mat-stroked-button","","color","primary","type","button","tabindex","1","rtlClipboard","",3,"payload","copied"],["mat-header-row",""],["mat-row",""]],template:function(e,i){1&e&&t.YNc(0,Ra,50,21,"div",0),2&e&&t.Q6J("ngIf",i.lookupResult)},directives:[u.O5,p.xw,$.d,p.yH,p.Wh,u.PC,E.Zl,u.sg,H.$V,r.BZ,A.YE,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,F.lW,bt.y,r.as,r.XQ,r.nj,r.Gk],pipes:[u.uU,u.Nd,u.rS],styles:[""]}),n})();const ka=["form"];function Pa(n,a){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("",null==e.lookupFields[e.selectedFieldId]?null:e.lookupFields[e.selectedFieldId].placeholder," is required.")}}function Da(n,a){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("Invalid ",null==e.lookupFields[e.selectedFieldId]?null:e.lookupFields[e.selectedFieldId].placeholder,".")}}function Ua(n,a){if(1&n&&(t.TgZ(0,"div"),t._UZ(1,"rtl-ecl-node-lookup",25),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("lookupResult",e.nodeLookupValue)}}function Ma(n,a){if(1&n&&(t.TgZ(0,"span",23),t.YNc(1,Ua,2,1,"div",24),t.qZA()),2&n){const e=t.oxw(2),i=t.MAs(21);t.xp6(1),t.Q6J("ngIf",e.nodeLookupValue.nodeId)("ngIfElse",i)}}function Ja(n,a){1&n&&(t.TgZ(0,"span",23)(1,"h3"),t._uU(2,"Error! Unable to find details!"),t.qZA()())}function Qa(n,a){if(1&n&&(t.TgZ(0,"div",17)(1,"div",18)(2,"span",19),t._uU(3),t.qZA()(),t.TgZ(4,"div",20),t.YNc(5,Ma,2,2,"span",21),t.YNc(6,Ja,3,0,"span",22),t.qZA()()),2&n){const e=t.oxw();t.xp6(3),t.hij("",e.lookupFields[e.selectedFieldId].name," Details"),t.xp6(1),t.Q6J("ngSwitch",e.selectedFieldId),t.xp6(1),t.Q6J("ngSwitchCase",0)}}function Ya(n,a){1&n&&(t.TgZ(0,"h3"),t._uU(1,"Error! Unable to find details!"),t.qZA())}const Ha=function(n){return{"mt-1":!0,"mt-2":n}};let Ba=(()=>{class n{constructor(e,i,o,s){this.logger=e,this.commonService=i,this.store=o,this.actions=s,this.lookupKeyCtrl=new m.NI,this.nodeLookupValue={},this.channelLookupValue=[],this.flgSetLookupValue=!1,this.messageObj=[],this.selectedFieldId=0,this.lookupFields=[{id:0,name:"Node",placeholder:"Node ID"},{id:1,name:"Channel",placeholder:"Short Channel ID"}],this.flgLoading=[!0],this.faSearch=L.wn1,this.screenSize="",this.screenSizeEnum=l.cu,this.unSubs=[new d.x,new d.x],this.screenSize=this.commonService.getScreenSize()}ngOnInit(){this.actions.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(e=>e.type===l.lr.SET_LOOKUP_ECL||e.type===l.lr.UPDATE_API_CALL_STATUS_ECL)).subscribe(e=>{if(e.type===l.lr.SET_LOOKUP_ECL){switch(this.flgLoading[0]=!0,this.selectedFieldId){case 0:this.nodeLookupValue=e.payload[0]?JSON.parse(JSON.stringify(e.payload[0])):{nodeid:""};break;case 1:this.channelLookupValue=JSON.parse(JSON.stringify(e.payload))||[]}this.flgSetLookupValue=!0,this.logger.info(this.nodeLookupValue),this.logger.info(this.channelLookupValue)}e.type===l.lr.UPDATE_API_CALL_STATUS_ECL&&e.payload.status===l.Bn.ERROR&&"Lookup"===e.payload.action&&(this.flgLoading[0]="error")}),this.lookupKeyCtrl.valueChanges.pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.nodeLookupValue={},this.channelLookupValue=[],this.flgSetLookupValue=!1})}onLookup(){return this.lookupKeyCtrl.value?this.lookupKeyCtrl.value&&(this.lookupKeyCtrl.value.includes("@")||this.lookupKeyCtrl.value.includes(","))?(this.lookupKeyCtrl.setErrors({invalid:!0}),!0):void(0===(this.selectedFieldId||(this.selectedFieldId=0),this.flgSetLookupValue=!1,this.nodeLookupValue={},this.channelLookupValue=[],this.selectedFieldId)&&this.store.dispatch((0,k.Sf)({payload:this.lookupKeyCtrl.value.trim()}))):(this.lookupKeyCtrl.setErrors({required:!0}),!0)}onSelectChange(e){this.resetData(),this.selectedFieldId=e.value}resetData(){this.flgSetLookupValue=!1,this.nodeLookupValue={},this.channelLookupValue=[],this.lookupKeyCtrl.setValue(""),this.lookupKeyCtrl.setErrors(null),this.form.resetForm()}clearLookupValue(){this.nodeLookupValue={},this.channelLookupValue=[],this.flgSetLookupValue=!1}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(N.v),t.Y36(w.yh),t.Y36(G.eX))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-lookups"]],viewQuery:function(e,i){if(1&e&&t.Gf(ka,7),2&e){let o;t.iGM(o=t.CRH())&&(i.form=o.first)}},decls:22,vars:9,consts:[["fxLayout","column"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start start",1,"padding-gap"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxFlex","100","fxLayout","column","fxLayout.gt-sm","row wrap","fxLayoutAlign.gt-sm","space-between center","fxLayoutAlign","start space-between",1,"w-100"],["form","ngForm"],["fxFlex","100","fxLayoutAlign","start end"],["color","primary","tabindex","1","name","lookupField"],["checked","",1,"mr-4",3,"value"],["fxFlex","100","fxLayoutAlign","start end",3,"ngClass"],["matInput","","name","lookupKey","tabindex","2","required","",3,"formControl","placeholder"],["key",""],[4,"ngIf"],["fxLayout","row","fxFlex","100",1,"mt-1"],["mat-stroked-button","","color","primary","tabindex","3","type","button",1,"mr-1",3,"click"],["mat-flat-button","","color","primary","tabindex","4","type","submit",3,"click"],["fxFlex","100","fxLayout","column","fxLayout.gt-sm","row wrap","fxLayoutAlign.gt-sm","space-between center","fxLayoutAlign","start stretch","class","w-100 mt-2",4,"ngIf"],["errorBlock",""],["fxFlex","100","fxLayout","column","fxLayout.gt-sm","row wrap","fxLayoutAlign.gt-sm","space-between center","fxLayoutAlign","start stretch",1,"w-100","mt-2"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start center"],[1,"page-title","font-bold-500"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start center",3,"ngSwitch"],["fxFlex","100",4,"ngSwitchCase"],["fxFlex","100",4,"ngSwitchDefault"],["fxFlex","100"],[4,"ngIf","ngIfElse"],[3,"lookupResult"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-content",2)(3,"form",3,4)(5,"div",5)(6,"mat-radio-group",6)(7,"mat-radio-button",7),t._uU(8,"Node"),t.qZA()()(),t.TgZ(9,"mat-form-field",8),t._UZ(10,"input",9,10),t.YNc(12,Pa,2,1,"mat-error",11),t.YNc(13,Da,2,1,"mat-error",11),t.qZA(),t.TgZ(14,"div",12)(15,"button",13),t.NdJ("click",function(){return i.resetData()}),t._uU(16,"Clear"),t.qZA(),t.TgZ(17,"button",14),t.NdJ("click",function(){return i.onLookup()}),t._uU(18,"Lookup"),t.qZA()()(),t.YNc(19,Qa,7,3,"div",15),t.qZA()()(),t.YNc(20,Ya,2,0,"ng-template",null,16,t.W1O)),2&e&&(t.xp6(7),t.Q6J("value",0),t.xp6(2),t.Q6J("ngClass",t.VKq(7,Ha,i.screenSize===i.screenSizeEnum.XS||i.screenSize===i.screenSizeEnum.SM)),t.xp6(1),t.Q6J("formControl",i.lookupKeyCtrl)("placeholder",(null==i.lookupFields[i.selectedFieldId]?null:i.lookupFields[i.selectedFieldId].placeholder)||"Lookup Key"),t.xp6(2),t.Q6J("ngIf",null==i.lookupKeyCtrl.errors?null:i.lookupKeyCtrl.errors.required),t.xp6(1),t.Q6J("ngIf",null==i.lookupKeyCtrl.errors?null:i.lookupKeyCtrl.errors.invalid),t.xp6(6),t.Q6J("ngIf",i.flgSetLookupValue))},directives:[p.xw,p.yH,p.Wh,b.dn,m._Y,m.JL,m.F,et.VQ,et.U0,y.KE,u.mk,E.oO,M.Nt,m.Fj,m.Q7,m.JJ,m.oH,u.O5,y.TO,F.lW,u.RF,u.n9,Na,u.ED],styles:[".tree-invisible[_ngcontent-%COMP%]{display:none}.lookup-tree[_ngcontent-%COMP%] ul[_ngcontent-%COMP%], .lookup-tree[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-top:0;margin-bottom:0;list-style-type:none}.pl-3[_ngcontent-%COMP%]{padding-left:3rem}"]}),n})();var za=f(9122);let Va=(()=>{class n{constructor(e,i){this.store=e,this.eclEffects=i,this.newAddress=""}onGenerateAddress(){this.store.dispatch((0,k._E)()),this.eclEffects.setNewAddress.pipe((0,V.q)(1)).subscribe(e=>{this.newAddress=e,setTimeout(()=>{this.store.dispatch((0,Z.qR)({payload:{data:{address:this.newAddress,addressType:"",component:za.n}}}))},0)})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w.yh),t.Y36(st.o))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-on-chain-receive"]],decls:4,vars:0,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayout","row"],["mat-flat-button","","color","primary","tabindex","1",3,"click"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"button",2),t.NdJ("click",function(){return i.onGenerateAddress()}),t._uU(3,"Generate Address"),t.qZA()()())},directives:[p.xw,p.yH,p.Wh,F.lW],styles:[""]}),n})(),Ga=(()=>{class n{constructor(e,i){this.store=e,this.activatedRoute=i,this.sweepAll=!1,this.unSubs=[new d.x,new d.x]}ngOnInit(){this.activatedRoute.data.pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.sweepAll=e.sweepAll})}openSendFundsModal(){this.store.dispatch((0,Z.qR)({payload:{data:{sweepAll:this.sweepAll,component:vt}}}))}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w.yh),t.Y36(x.gz))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-on-chain-send"]],decls:4,vars:1,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayout","row"],["mat-flat-button","","color","primary","type","button","tabindex","1",3,"click"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"button",2),t.NdJ("click",function(){return i.openSendFundsModal()}),t._uU(3),t.qZA()()()),2&e&&(t.xp6(3),t.Oqu(i.sweepAll?"Sweep All":"Send Funds"))},directives:[p.xw,p.yH,p.Wh,F.lW],styles:[""]}),n})();var Xa=f(8675),At=f(4004),St=f(1079),$a=f(9843),Zt=f(2368);const Wa=["form"];function Ka(n,a){if(1&n&&(t.TgZ(0,"mat-option",34),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.Q6J("value",e),t.xp6(1),t.Oqu(e.alias?e.alias:e.nodeId?e.nodeId:"")}}function ja(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Peer alias is required."),t.qZA())}function to(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Peer not found in the list."),t.qZA())}function eo(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"mat-form-field",1)(1,"input",30),t.NdJ("change",function(){return t.CHM(e),t.oxw().onSelectedPeerChanged()}),t.qZA(),t.TgZ(2,"mat-autocomplete",31,32),t.NdJ("optionSelected",function(){return t.CHM(e),t.oxw().onSelectedPeerChanged()}),t.YNc(4,Ka,2,2,"mat-option",33),t.ALo(5,"async"),t.qZA(),t.YNc(6,ja,2,0,"mat-error",17),t.YNc(7,to,2,0,"mat-error",17),t.qZA()}if(2&n){const e=t.MAs(3),i=t.oxw();t.xp6(1),t.Q6J("formControl",i.selectedPeer)("matAutocomplete",e),t.xp6(1),t.Q6J("displayWith",i.displayFn),t.xp6(2),t.Q6J("ngForOf",t.lcZ(5,6,i.filteredPeers)),t.xp6(2),t.Q6J("ngIf",null==i.selectedPeer.errors?null:i.selectedPeer.errors.required),t.xp6(1),t.Q6J("ngIf",null==i.selectedPeer.errors?null:i.selectedPeer.errors.notfound)}}function no(n,a){1&n&&t.GkF(0)}function io(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Amount is required."),t.qZA())}function ao(n,a){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("Amount must be less than or equal to ",e.totalBalance,".")}}function oo(n,a){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.channelConnectionError)}}function so(n,a){if(1&n&&(t.TgZ(0,"div",35),t._UZ(1,"fa-icon",36),t.YNc(2,oo,2,1,"span",17),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faExclamationTriangle),t.xp6(1),t.Q6J("ngIf",""!==e.channelConnectionError)}}function lo(n,a){if(1&n&&(t.TgZ(0,"mat-expansion-panel",38)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span"),t._uU(4,"Peer: \xa0"),t.qZA(),t.TgZ(5,"strong",39),t._uU(6),t.qZA()()(),t.TgZ(7,"div",9)(8,"div",0)(9,"div",1)(10,"h4",40),t._uU(11,"Pubkey"),t.qZA(),t.TgZ(12,"span",41),t._uU(13),t.qZA()()(),t._UZ(14,"mat-divider",42),t.TgZ(15,"div",0)(16,"div",43)(17,"h4",40),t._uU(18,"Address"),t.qZA(),t.TgZ(19,"span",44),t._uU(20),t.qZA()(),t.TgZ(21,"div",43)(22,"h4",40),t._uU(23,"State"),t.qZA(),t.TgZ(24,"span",44),t._uU(25),t.ALo(26,"titlecase"),t.qZA()()()()()),2&n){const e=t.oxw(2);t.xp6(6),t.Oqu((null==e.peer?null:e.peer.alias)||(null==e.peer?null:e.peer.nodeId)),t.xp6(7),t.Oqu(e.peer.nodeId),t.xp6(7),t.Oqu(null==e.peer?null:e.peer.address),t.xp6(5),t.Oqu(t.lcZ(26,4,null==e.peer?null:e.peer.state))}}function ro(n,a){if(1&n&&t.YNc(0,lo,27,6,"mat-expansion-panel",37),2&n){const e=t.oxw();t.Q6J("ngIf",e.peer)}}let wt=(()=>{class n{constructor(e,i,o,s){this.dialogRef=e,this.data=i,this.store=o,this.actions=s,this.selectedPeer=new m.NI,this.faExclamationTriangle=L.eHv,this.channelConnectionError="",this.advancedTitle="Advanced Options",this.totalBalance=0,this.selectedPubkey="",this.isPrivate=!1,this.feeRate=null,this.unSubs=[new d.x,new d.x]}ngOnInit(){this.data.message?(this.information=this.data.message.information,this.totalBalance=this.data.message.balance,this.peer=this.data.message.peer||null,this.peers=this.data.message.peers||[]):(this.information={},this.totalBalance=0,this.peer=null,this.peers=[]),this.alertTitle=this.data.alertTitle||"Alert",this.actions.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(o=>o.type===l.lr.UPDATE_API_CALL_STATUS_ECL||o.type===l.lr.FETCH_CHANNELS_ECL)).subscribe(o=>{o.type===l.lr.UPDATE_API_CALL_STATUS_ECL&&o.payload.status===l.Bn.ERROR&&"SaveNewChannel"===o.payload.action&&(this.channelConnectionError=o.payload.message),o.type===l.lr.FETCH_CHANNELS_ECL&&this.dialogRef.close()});let e="",i="";this.sortedPeers=this.peers.sort((o,s)=>(e=o.alias?o.alias.toLowerCase():o.nodeId?o.nodeId.toLowerCase():"",i=s.alias?s.alias.toLowerCase():o.nodeId?o.nodeId.toLowerCase():"",ei?1:0)),this.filteredPeers=this.selectedPeer.valueChanges.pipe((0,_.R)(this.unSubs[1]),(0,Xa.O)(""),(0,At.U)(o=>"string"==typeof o?o:o.alias?o.alias:o.nodeId),(0,At.U)(o=>o?this.filterPeers(o):this.sortedPeers.slice()))}filterPeers(e){var i;return null===(i=this.sortedPeers)||void 0===i?void 0:i.filter(o=>{var s;return 0===(null===(s=o.alias)||void 0===s?void 0:s.toLowerCase().indexOf(e?e.toLowerCase():""))})}displayFn(e){return e&&e.alias?e.alias:e&&e.nodeId?e.nodeId:""}onSelectedPeerChanged(){var e;if(this.channelConnectionError="",this.selectedPubkey=this.selectedPeer.value&&this.selectedPeer.value.nodeId?this.selectedPeer.value.nodeId:null,"string"==typeof this.selectedPeer.value){const i=null===(e=this.peers)||void 0===e?void 0:e.filter(o=>{var s,c;return(null===(s=o.alias)||void 0===s?void 0:s.length)===this.selectedPeer.value.length&&0===(null===(c=o.alias)||void 0===c?void 0:c.toLowerCase().indexOf(this.selectedPeer.value?this.selectedPeer.value.toLowerCase():""))});1===i.length&&i[0].nodeId&&(this.selectedPubkey=i[0].nodeId)}this.selectedPeer.setErrors(this.selectedPeer.value&&!this.selectedPubkey?{notfound:!0}:null)}onClose(){this.dialogRef.close(!1)}resetData(){this.feeRate=null,this.selectedPeer.setValue(""),this.fundingAmount=null,this.isPrivate=!1,this.channelConnectionError="",this.advancedTitle="Advanced Options",this.form.resetForm()}onAdvancedPanelToggle(e){this.advancedTitle=e&&this.feeRate&&this.feeRate>0?"Advanced Options | Fee (Sats/vByte): "+this.feeRate:"Advanced Options"}onOpenChannel(){if(!this.peer&&!this.selectedPubkey||!this.fundingAmount||this.totalBalance-this.fundingAmount<0)return!0;const e={nodeId:this.peer&&this.peer.nodeId?this.peer.nodeId:this.selectedPubkey,amount:this.fundingAmount,private:this.isPrivate};this.feeRate&&(e.feeRate=this.feeRate),this.store.dispatch((0,k.YX)({payload:e}))}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(U.so),t.Y36(U.WI),t.Y36(w.yh),t.Y36(G.eX))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-open-channel"]],viewQuery:function(e,i){if(1&e&&t.Gf(Wa,7),2&e){let o;t.iGM(o=t.CRH())&&(i.form=o.first)}},decls:48,vars:18,consts:[["fxLayout","row"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title"],["tabindex","8","fxFlex","5","fxLayoutAlign","center","mat-button","",1,"btn-close-x","p-0",3,"click"],[1,"padding-gap-x-large"],["fxLayout","column",3,"submit","reset"],["form","ngForm"],["fxLayout","column"],["fxFlex","100",4,"ngIf"],[4,"ngTemplateOutlet"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between center"],["fxFlex","70","fxLayoutAlign","start end"],["matInput","","placeholder","Amount","type","number","tabindex","1","required","","name","amount",3,"ngModel","step","min","max","ngModelChange"],["amount","ngModel"],["matSuffix",""],[4,"ngIf"],["fxFlex","25","fxLayoutAlign","start center"],["tabindex","2","color","primary","name","isPrivate",3,"ngModel","ngModelChange"],["expanded","false",1,"flat-expansion-panel","mt-2",3,"closed","opened"],["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch"],["fxFlex","48","fxLayout","row","fxLayoutAlign","start center"],["matInput","","placeholder","Fee (Sats/vByte)","type","number","name","fee","tabindex","7",3,"ngModel","step","min","ngModelChange"],["fee","ngModel"],["fxFlex","100","class","alert alert-danger mt-1",4,"ngIf"],["fxLayout","row","fxLayoutAlign","end center",1,"mt-2"],["mat-button","","color","primary","tabindex","7","type","reset",1,"mr-1"],["autoFocus","","mat-button","","color","primary","type","submit","tabindex","9"],["peerDetailsExpansionBlock",""],["type","text","placeholder","Peer Alias","aria-label","Peers","matInput","","tabindex","1","required","",3,"formControl","matAutocomplete","change"],[3,"displayWith","optionSelected"],["auto","matAutocomplete"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],["fxFlex","100",1,"alert","alert-danger","mt-1"],[1,"mr-1","alert-icon",3,"icon"],["class","flat-expansion-panel my-1","expanded","false",4,"ngIf"],["expanded","false",1,"flat-expansion-panel","my-1"],[1,"font-weight-900"],["fxLayoutAlign","start",1,"font-bold-500"],[1,"foreground-secondary-text"],[1,"w-100","my-1"],["fxFlex","50"],[1,"overflow-wrap","foreground-secondary-text"]],template:function(e,i){if(1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3)(4,"span",4),t._uU(5),t.qZA()(),t.TgZ(6,"button",5),t.NdJ("click",function(){return i.onClose()}),t._uU(7,"X"),t.qZA()(),t.TgZ(8,"mat-card-content",6)(9,"form",7,8),t.NdJ("submit",function(){return i.onOpenChannel()})("reset",function(){return i.resetData()}),t.TgZ(11,"div",9),t.YNc(12,eo,8,8,"mat-form-field",10),t.qZA(),t.YNc(13,no,1,0,"ng-container",11),t.TgZ(14,"div",9)(15,"div",12)(16,"mat-form-field",13)(17,"input",14,15),t.NdJ("ngModelChange",function(s){return i.fundingAmount=s}),t.qZA(),t.TgZ(19,"mat-hint"),t._uU(20),t.ALo(21,"number"),t.qZA(),t.TgZ(22,"span",16),t._uU(23," Sats "),t.qZA(),t.YNc(24,io,2,0,"mat-error",17),t.YNc(25,ao,2,1,"mat-error",17),t.qZA(),t.TgZ(26,"div",18)(27,"mat-slide-toggle",19),t.NdJ("ngModelChange",function(s){return i.isPrivate=s}),t._uU(28,"Private Channel"),t.qZA()()(),t.TgZ(29,"mat-expansion-panel",20),t.NdJ("closed",function(){return i.onAdvancedPanelToggle(!0)})("opened",function(){return i.onAdvancedPanelToggle(!1)}),t.TgZ(30,"mat-expansion-panel-header")(31,"mat-panel-title")(32,"span"),t._uU(33),t.qZA()()(),t.TgZ(34,"div",21)(35,"div",12)(36,"div",22)(37,"mat-form-field",1)(38,"input",23,24),t.NdJ("ngModelChange",function(s){return i.feeRate=s}),t.qZA()()()()()()(),t.YNc(40,so,3,2,"div",25),t.TgZ(41,"div",26)(42,"button",27),t._uU(43,"Clear Fields"),t.qZA(),t.TgZ(44,"button",28),t._uU(45,"Open Channel"),t.qZA()()()()()(),t.YNc(46,ro,1,1,"ng-template",null,29,t.W1O)),2&e){const o=t.MAs(18),s=t.MAs(47);t.xp6(5),t.Oqu(i.alertTitle),t.xp6(7),t.Q6J("ngIf",!i.peer&&i.peers&&i.peers.length>0),t.xp6(1),t.Q6J("ngTemplateOutlet",s),t.xp6(4),t.Q6J("ngModel",i.fundingAmount)("step",1e3)("min",1)("max",i.totalBalance),t.xp6(3),t.hij("Remaining Bal: ",t.lcZ(21,16,i.totalBalance-(i.fundingAmount?i.fundingAmount:0)),""),t.xp6(4),t.Q6J("ngIf",null==o.errors?null:o.errors.required),t.xp6(1),t.Q6J("ngIf",null==o.errors?null:o.errors.max),t.xp6(2),t.Q6J("ngModel",i.isPrivate),t.xp6(6),t.Oqu(i.advancedTitle),t.xp6(5),t.Q6J("ngModel",i.feeRate)("step",1)("min",0),t.xp6(2),t.Q6J("ngIf",""!==i.channelConnectionError)}},directives:[p.xw,p.yH,b.dk,p.Wh,F.lW,b.dn,m._Y,m.JL,m.F,u.O5,y.KE,M.Nt,m.Fj,St.ZL,m.Q7,m.JJ,m.oH,St.XC,u.sg,B.ey,y.TO,u.tP,m.wV,m.qQ,m.Fd,K.q,$a.F,m.On,y.bx,y.R9,Zt.Rr,z.ib,z.yz,z.yK,q.BN,W.h,$.d],pipes:[u.Ov,u.JJ,u.rS],styles:[".open-inputs-box[_ngcontent-%COMP%]{padding:1.2rem 2.4rem .8rem!important}"]}),n})();function co(n,a){if(1&n&&(t.TgZ(0,"span",7),t._uU(1,"Open"),t.qZA()),2&n){const e=t.oxw();t.s9C("matBadge",e.numOfOpenChannels)}}function uo(n,a){if(1&n&&(t.TgZ(0,"span",7),t._uU(1,"Pending"),t.qZA()),2&n){const e=t.oxw();t.s9C("matBadge",e.numOfPendingChannels)}}function po(n,a){if(1&n&&(t.TgZ(0,"span",7),t._uU(1,"Inactive"),t.qZA()),2&n){const e=t.oxw();t.s9C("matBadge",e.numOfInactiveChannels)}}let mo=(()=>{class n{constructor(e,i,o){this.logger=e,this.store=i,this.router=o,this.numOfOpenChannels=0,this.numOfPendingChannels=0,this.numOfInactiveChannels=0,this.selNode={},this.information={},this.peers=[],this.totalBalance=0,this.links=[{link:"open",name:"Open"},{link:"pending",name:"Pending"},{link:"inactive",name:"Inactive"}],this.activeLink=0,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x]}ngOnInit(){this.activeLink=this.links.findIndex(e=>e.link===this.router.url.substring(this.router.url.lastIndexOf("/")+1)),this.router.events.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(e=>e instanceof x.Av)).subscribe({next:e=>{this.activeLink=this.links.findIndex(i=>i.link===e.urlAfterRedirects.substring(e.urlAfterRedirects.lastIndexOf("/")+1))}}),this.store.select(C.Xz).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.numOfOpenChannels=e.channelsStatus&&e.channelsStatus.active&&e.channelsStatus.active.channels?e.channelsStatus.active.channels:0,this.numOfPendingChannels=e.channelsStatus&&e.channelsStatus.pending&&e.channelsStatus.pending.channels?e.channelsStatus.pending.channels:0,this.numOfInactiveChannels=e.channelsStatus&&e.channelsStatus.inactive&&e.channelsStatus.inactive.channels?e.channelsStatus.inactive.channels:0,this.logger.info(e)}),this.store.select(C.pg).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.selNode=e}),this.store.select(C.yD).pipe((0,_.R)(this.unSubs[3])).subscribe(e=>{this.information=e}),this.store.select(C.Bo).pipe((0,_.R)(this.unSubs[4])).subscribe(e=>{this.peers=e.peers}),this.store.select(C.kY).pipe((0,_.R)(this.unSubs[5])).subscribe(e=>{this.totalBalance=e.onchainBalance.total||0})}onOpenChannel(){this.store.dispatch((0,Z.qR)({payload:{data:{alertTitle:"Open Channel",message:{peers:this.peers,information:this.information,balance:this.totalBalance},component:wt}}}))}onSelectedTabChange(e){this.router.navigateByUrl("/ecl/connections/channels/"+this.links[e.index].link)}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(w.yh),t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-channels-tables"]],decls:14,vars:1,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayout","row"],["mat-flat-button","","color","primary","type","submit","tabindex","1",3,"click"],["fxLayout","column","fxFlex","100",1,"my-2","bordered-box"],[3,"selectedIndex","selectedIndexChange","selectedTabChange"],["mat-tab-label",""],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",1,"padding-gap-x-large"],["matBadgeOverlap","false",1,"tab-badge",3,"matBadge"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"button",2),t.NdJ("click",function(){return i.onOpenChannel()}),t._uU(3,"Open Channel"),t.qZA()(),t.TgZ(4,"div",3)(5,"mat-tab-group",4),t.NdJ("selectedIndexChange",function(s){return i.activeLink=s})("selectedTabChange",function(s){return i.onSelectedTabChange(s)}),t.TgZ(6,"mat-tab"),t.YNc(7,co,2,1,"ng-template",5),t.qZA(),t.TgZ(8,"mat-tab"),t.YNc(9,uo,2,1,"ng-template",5),t.qZA(),t.TgZ(10,"mat-tab"),t.YNc(11,po,2,1,"ng-template",5),t.qZA()(),t.TgZ(12,"div",6),t._UZ(13,"router-outlet"),t.qZA()()()),2&e&&(t.xp6(5),t.Q6J("selectedIndex",i.activeLink))},directives:[p.xw,p.yH,p.Wh,F.lW,P.SP,P.uX,P.uD,Lt.k,x.lC],styles:[""]}),n})();function ho(n,a){if(1&n&&(t.TgZ(0,"div",11)(1,"h4",12),t._uU(2,"Short Channel ID"),t.qZA(),t.TgZ(3,"span",13),t._uU(4),t.qZA()()),2&n){const e=t.oxw();t.xp6(4),t.Oqu(e.channel.shortChannelId)}}function _o(n,a){if(1&n&&(t.TgZ(0,"div",11)(1,"h4",12),t._uU(2,"State"),t.qZA(),t.TgZ(3,"span",15),t._uU(4),t.ALo(5,"titlecase"),t.qZA()()),2&n){const e=t.oxw();t.xp6(4),t.Oqu(t.lcZ(5,1,e.channel.state))}}function fo(n,a){if(1&n&&(t.TgZ(0,"div")(1,"div",9)(2,"div",11)(3,"h4",12),t._uU(4,"Local Balance (Sats)"),t.qZA(),t.TgZ(5,"span",15),t._uU(6),t.ALo(7,"number"),t.qZA()(),t.TgZ(8,"div",11)(9,"h4",12),t._uU(10,"Remote Balance (Sats)"),t.qZA(),t.TgZ(11,"span",15),t._uU(12),t.ALo(13,"number"),t.qZA()()(),t._UZ(14,"mat-divider",14),t.TgZ(15,"div",9)(16,"div",11)(17,"h4",12),t._uU(18,"Base Fee (mSats)"),t.qZA(),t.TgZ(19,"span",15),t._uU(20),t.ALo(21,"number"),t.qZA()(),t.TgZ(22,"div",11)(23,"h4",12),t._uU(24,"Fee Rate (mili mSats)"),t.qZA(),t.TgZ(25,"span",15),t._uU(26),t.ALo(27,"number"),t.qZA()()(),t._UZ(28,"mat-divider",14),t.qZA()),2&n){const e=t.oxw();t.xp6(6),t.Oqu(t.lcZ(7,6,e.channel.toLocal)),t.xp6(6),t.Oqu(t.lcZ(13,8,e.channel.toRemote)),t.xp6(2),t.Q6J("inset",!0),t.xp6(6),t.Oqu(t.lcZ(21,10,e.channel.feeBaseMsat)),t.xp6(6),t.Oqu(t.lcZ(27,12,e.channel.feeProportionalMillionths)),t.xp6(2),t.Q6J("inset",!0)}}function go(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Show Advanced"),t.qZA())}function Co(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Hide Advanced"),t.qZA())}function xo(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"button",21),t.NdJ("click",function(){return t.CHM(e),t.oxw().onShowAdvanced()}),t.YNc(1,go,2,0,"p",22),t.YNc(2,Co,2,0,"ng-template",null,23,t.W1O),t.qZA()}if(2&n){const e=t.MAs(3),i=t.oxw();t.xp6(1),t.Q6J("ngIf",!i.showAdvanced)("ngIfElse",e)}}function yo(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"button",24),t.NdJ("copied",function(o){return t.CHM(e),t.oxw().onCopyChanID(o)}),t._uU(1,"Copy Short Channel ID"),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("payload",e.channel.shortChannelId)}}function vo(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"button",25),t.NdJ("copied",function(o){return t.CHM(e),t.oxw().onCopyChanID(o)}),t._uU(1,"Copy Channel ID"),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("payload",e.channel.channelId)}}const Lo=function(n){return{"xs-scroll-y":n}},To=function(n,a){return{"mt-2":n,"mt-1":a}};let rt=(()=>{class n{constructor(e,i,o,s,c){this.dialogRef=e,this.data=i,this.logger=o,this.commonService=s,this.snackBar=c,this.faReceipt=L.dLy,this.showAdvanced=!1,this.channelsType="open",this.screenSize="",this.screenSizeEnum=l.cu}ngOnInit(){this.channel=this.data.channel,this.channelsType=this.data.channelsType||"",this.screenSize=this.commonService.getScreenSize()}onClose(){this.dialogRef.close(!1)}onShowAdvanced(){this.showAdvanced=!this.showAdvanced}onCopyChanID(e){this.snackBar.open("open"===this.channelsType?"Short channel ID "+e+" copied.":"Channel ID copied."),this.logger.info("Copied Text: "+e)}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(U.so),t.Y36(U.WI),t.Y36(R.mQ),t.Y36(N.v),t.Y36(Tt.ux))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-channel-information"]],decls:64,vars:28,consts:[["fxLayout","column","fxLayout.gt-sm","row","fxLayoutAlign","space-between stretch"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["tabindex","3","fxFlex","5","fxLayoutAlign","center","mat-button","",1,"btn-close-x","p-0",3,"click"],[1,"padding-gap-x-large",3,"ngClass"],["fxLayout","column"],["fxLayout","row"],["fxFlex","50",4,"ngIf"],["fxFlex","50"],["fxLayoutAlign","start",1,"font-bold-500"],[1,"foreground-secondary-text"],[1,"my-1",3,"inset"],[1,"overflow-wrap","foreground-secondary-text"],[4,"ngIf"],["fxLayout","row","fxLayoutAlign","end center","fxFlex","100",3,"ngClass"],["mat-button","","color","primary","type","reset","tabindex","1","class","mr-1",3,"click",4,"ngIf"],["autoFocus","","mat-button","","color","primary","tabindex","2","type","submit","rtlClipboard","",3,"payload","copied",4,"ngIf"],["autoFocus","","mat-button","","color","primary","tabindex","3","type","submit","rtlClipboard","",3,"payload","copied",4,"ngIf"],["mat-button","","color","primary","type","reset","tabindex","1",1,"mr-1",3,"click"],[4,"ngIf","ngIfElse"],["hideAdvancedText",""],["autoFocus","","mat-button","","color","primary","tabindex","2","type","submit","rtlClipboard","",3,"payload","copied"],["autoFocus","","mat-button","","color","primary","tabindex","3","type","submit","rtlClipboard","",3,"payload","copied"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3),t._UZ(4,"fa-icon",4),t.TgZ(5,"span",5),t._uU(6,"Channel Information"),t.qZA()(),t.TgZ(7,"button",6),t.NdJ("click",function(){return i.onClose()}),t._uU(8,"X"),t.qZA()(),t.TgZ(9,"mat-card-content",7)(10,"div",8)(11,"div",9),t.YNc(12,ho,5,1,"div",10),t.TgZ(13,"div",11)(14,"h4",12),t._uU(15,"Peer Alias"),t.qZA(),t.TgZ(16,"span",13),t._uU(17),t.qZA()(),t.YNc(18,_o,6,3,"div",10),t.qZA(),t._UZ(19,"mat-divider",14),t.TgZ(20,"div",9)(21,"div",1)(22,"h4",12),t._uU(23,"Channel ID"),t.qZA(),t.TgZ(24,"span",13),t._uU(25),t.qZA()()(),t._UZ(26,"mat-divider",14),t.TgZ(27,"div",9)(28,"div",1)(29,"h4",12),t._uU(30,"Peer Public Key"),t.qZA(),t.TgZ(31,"span",13),t._uU(32),t.qZA()()(),t._UZ(33,"mat-divider",14),t.TgZ(34,"div",9)(35,"div",11)(36,"h4",12),t._uU(37,"Private"),t.qZA(),t.TgZ(38,"span",15),t._uU(39),t.qZA()(),t.TgZ(40,"div",11)(41,"h4",12),t._uU(42,"Funder"),t.qZA(),t.TgZ(43,"span",15),t._uU(44),t.qZA()()(),t._UZ(45,"mat-divider",14),t.TgZ(46,"div",9)(47,"div",11)(48,"h4",12),t._uU(49,"State"),t.qZA(),t.TgZ(50,"span",15),t._uU(51),t.ALo(52,"titlecase"),t.qZA()(),t.TgZ(53,"div",11)(54,"h4",12),t._uU(55,"Buried"),t.qZA(),t.TgZ(56,"span",15),t._uU(57),t.qZA()()(),t._UZ(58,"mat-divider",14),t.YNc(59,fo,29,14,"div",16),t.TgZ(60,"div",17),t.YNc(61,xo,4,2,"button",18),t.YNc(62,yo,2,1,"button",19),t.YNc(63,vo,2,1,"button",20),t.qZA()()()()()),2&e&&(t.xp6(4),t.Q6J("icon",i.faReceipt),t.xp6(5),t.Q6J("ngClass",t.VKq(23,Lo,i.screenSize===i.screenSizeEnum.XS)),t.xp6(3),t.Q6J("ngIf","open"===i.channelsType),t.xp6(5),t.Oqu(i.channel.alias),t.xp6(1),t.Q6J("ngIf","open"!==i.channelsType),t.xp6(1),t.Q6J("inset",!0),t.xp6(6),t.Oqu(i.channel.channelId),t.xp6(1),t.Q6J("inset",!0),t.xp6(6),t.Oqu(i.channel.nodeId),t.xp6(1),t.Q6J("inset",!0),t.xp6(6),t.Oqu(0===i.channel.channelFlags?"Yes":"No"),t.xp6(5),t.Oqu(i.channel.isFunder?"Yes":"No"),t.xp6(1),t.Q6J("inset",!0),t.xp6(6),t.Oqu(t.lcZ(52,21,i.channel.state)),t.xp6(6),t.Oqu(i.channel.buried?"Yes":"No"),t.xp6(1),t.Q6J("inset",!0),t.xp6(1),t.Q6J("ngIf",i.showAdvanced&&"open"===i.channelsType),t.xp6(1),t.Q6J("ngClass",t.WLB(25,To,!i.showAdvanced,i.showAdvanced)),t.xp6(1),t.Q6J("ngIf","open"===i.channelsType),t.xp6(1),t.Q6J("ngIf","open"===i.channelsType),t.xp6(1),t.Q6J("ngIf","open"!==i.channelsType))},directives:[p.xw,p.Wh,p.yH,b.dk,q.BN,F.lW,b.dn,u.mk,E.oO,u.O5,$.d,W.h,bt.y],pipes:[u.rS,u.JJ],styles:[""]}),n})();function bo(n,a){1&n&&t._UZ(0,"mat-progress-bar",30)}function Ao(n,a){1&n&&(t.TgZ(0,"th",31),t._uU(1," Short Channel ID "),t.qZA())}function So(n,a){if(1&n&&(t.TgZ(0,"span",37),t._UZ(1,"fa-icon",38),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("icon",e.faEyeSlash)}}function Zo(n,a){if(1&n&&(t.TgZ(0,"span",39),t._UZ(1,"fa-icon",38),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("icon",e.faEye)}}const Et=function(n){return{"max-width":n}};function wo(n,a){if(1&n&&(t.TgZ(0,"td",32)(1,"div",33),t.YNc(2,So,2,1,"span",34),t.YNc(3,Zo,2,1,"span",35),t.TgZ(4,"span",36),t._uU(5),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw();t.xp6(1),t.Q6J("ngStyle",t.VKq(4,Et,i.screenSize===i.screenSizeEnum.XS?"12rem":"22rem")),t.xp6(1),t.Q6J("ngIf",0===e.channelFlags),t.xp6(1),t.Q6J("ngIf",0!==e.channelFlags),t.xp6(2),t.Oqu(null==e?null:e.shortChannelId)}}function Eo(n,a){1&n&&(t.TgZ(0,"th",31),t._uU(1," Alias "),t.qZA())}function Io(n,a){if(1&n&&(t.TgZ(0,"td",32)(1,"div",33)(2,"span",36),t._uU(3),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw();t.xp6(1),t.Q6J("ngStyle",t.VKq(2,Et,i.screenSize===i.screenSizeEnum.XS?"12rem":"22rem")),t.xp6(2),t.Oqu(e.alias)}}function Oo(n,a){1&n&&(t.TgZ(0,"th",40),t._uU(1," Base Fee (mSats) "),t.qZA())}function Fo(n,a){if(1&n&&(t.TgZ(0,"td",32)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.xi3(3,1,null==e?null:e.feeBaseMsat,"1.0-0")," ")}}function qo(n,a){1&n&&(t.TgZ(0,"th",40),t._uU(1," Fee Rate (mili mSats) "),t.qZA())}function Ro(n,a){if(1&n&&(t.TgZ(0,"td",32)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.xi3(3,1,null==e?null:e.feeProportionalMillionths,"1.0-0")," ")}}function No(n,a){1&n&&(t.TgZ(0,"th",40),t._uU(1," Local Balance (Sats) "),t.qZA())}function ko(n,a){if(1&n&&(t.TgZ(0,"td",32)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.xi3(3,1,null==e?null:e.toLocal,"1.0-0")," ")}}function Po(n,a){1&n&&(t.TgZ(0,"th",40),t._uU(1," Remote Balance (Sats) "),t.qZA())}function Do(n,a){if(1&n&&(t.TgZ(0,"td",32)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.xi3(3,1,null==e?null:e.toRemote,"1.0-0")," ")}}function Uo(n,a){1&n&&(t.TgZ(0,"th",42),t._uU(1,"Balance Score "),t.qZA())}function Mo(n,a){if(1&n&&(t.TgZ(0,"td",43)(1,"div",44)(2,"mat-hint",45),t._uU(3),t.ALo(4,"number"),t.qZA()(),t._UZ(5,"mat-progress-bar",46),t.qZA()),2&n){const e=a.$implicit;t.xp6(3),t.Oqu(t.lcZ(4,2,(null==e?null:e.balancedness)||0)),t.xp6(2),t.s9C("value",e.toLocal&&e.toLocal>0?+e.toLocal/(+e.toLocal+ +e.toRemote)*100:0)}}function Jo(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"th",47)(1,"div",48)(2,"mat-select",49),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",50),t.NdJ("click",function(){return t.CHM(e),t.oxw().onChannelUpdate("all")}),t._uU(5,"Update Fee Policy"),t.qZA(),t.TgZ(6,"mat-option",50),t.NdJ("click",function(){return t.CHM(e),t.oxw().onDownloadCSV()}),t._uU(7,"Download CSV"),t.qZA()()()()}}function Qo(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",51)(1,"div",52)(2,"mat-select",53),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",50),t.NdJ("click",function(o){const c=t.CHM(e).$implicit;return t.oxw().onChannelClick(c,o)}),t._uU(5,"View Info"),t.qZA(),t.TgZ(6,"mat-option",50),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().onChannelUpdate(s)}),t._uU(7,"Update Fee Policy"),t.qZA(),t.TgZ(8,"mat-option",50),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().onChannelClose(s,!1)}),t._uU(9,"Close Channel"),t.qZA(),t.TgZ(10,"mat-option",50),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().onChannelClose(s,!0)}),t._uU(11,"Force Close"),t.qZA()()()()}}function Yo(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No peers connected. Add a peer in order to open a channel."),t.qZA())}function Ho(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No channel available."),t.qZA())}function Bo(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting channels..."),t.qZA())}function zo(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.errorMessage)}}function Vo(n,a){if(1&n&&(t.TgZ(0,"td",54),t.YNc(1,Yo,2,0,"p",55),t.YNc(2,Ho,2,0,"p",55),t.YNc(3,Bo,2,0,"p",55),t.YNc(4,zo,2,1,"p",55),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.numPeers<1&&(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",e.numPeers>0&&(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const Go=function(n){return{"display-none":n}};function Xo(n,a){if(1&n&&t._UZ(0,"tr",56),2&n){const e=t.oxw();t.Q6J("ngClass",t.VKq(1,Go,e.numPeers>0&&(null==e.channels?null:e.channels.data)&&(null==e.channels||null==e.channels.data?null:e.channels.data.length)>0))}}function $o(n,a){1&n&&t._UZ(0,"tr",57)}function Wo(n,a){1&n&&t._UZ(0,"tr",58)}const Ko=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},jo=function(){return["no_peer"]};let ts=(()=>{class n{constructor(e,i,o,s,c){var h,g,T,Y,v,O;this.logger=e,this.store=i,this.rtlEffects=o,this.commonService=s,this.router=c,this.faEye=L.Mdf,this.faEyeSlash=L.Aq,this.totalBalance=0,this.displayedColumns=[],this.myChanPolicy={},this.information={},this.numPeers=-1,this.feeRateTypes=l.vn,this.selFilter="",this.flgSticky=!1,this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["alias","toLocal","toRemote","actions"]):this.screenSize===l.cu.SM?(this.flgSticky=!1,this.displayedColumns=["shortChannelId","alias","toLocal","toRemote","actions"]):this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["shortChannelId","alias","feeBaseMsat","feeProportionalMillionths","toLocal","toRemote","actions"]):(this.flgSticky=!0,this.displayedColumns=["shortChannelId","alias","feeBaseMsat","feeProportionalMillionths","toLocal","toRemote","balancedness","actions"]),this.selFilter=(null===(T=null===(g=null===(h=this.router.getCurrentNavigation())||void 0===h?void 0:h.extras)||void 0===g?void 0:g.state)||void 0===T?void 0:T.filter)?null===(O=null===(v=null===(Y=this.router.getCurrentNavigation())||void 0===Y?void 0:Y.extras)||void 0===v?void 0:v.state)||void 0===O?void 0:O.filter:""}ngOnInit(){this.store.select(C.Xz).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.activeChannels=e.activeChannels,this.activeChannels.length>0&&this.sort&&this.paginator&&this.loadChannelsTable(),this.logger.info(e)}),this.store.select(C.yD).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.store.select(C.Bo).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.numPeers=e.peers&&e.peers.length?e.peers.length:0}),this.store.select(C.kY).pipe((0,_.R)(this.unSubs[3])).subscribe(e=>{this.totalBalance=e.onchainBalance.total||0})}ngAfterViewInit(){this.activeChannels.length>0&&this.sort&&this.paginator&&this.loadChannelsTable()}onChannelUpdate(e){"all"!==e&&"NORMAL"!==e.state||(this.store.dispatch((0,Z.c1)({payload:{data:{type:l.n_.CONFIRM,alertTitle:"Update Fee Policy",noBtnText:"Cancel",yesBtnText:"Update",message:[],titleMessage:"all"===e?"Update fee policy for all channels":"Update fee policy for Channel: "+(e.alias||e.shortChannelId?e.alias&&e.shortChannelId?e.alias+" ("+e.shortChannelId+")":e.alias?e.alias:e.shortChannelId:e.channelId),flgShowInput:!0,getInputs:[{placeholder:"Base Fee (mSats)",inputType:"number",inputValue:e&&void 0!==e.feeBaseMsat?e.feeBaseMsat:1e3,width:48},{placeholder:"Fee Rate (mili mSats)",inputType:"number",inputValue:e&&void 0!==e.feeProportionalMillionths?e.feeProportionalMillionths:100,min:1,width:48,hintFunction:this.percentHintFunction}]}}})),this.rtlEffects.closeConfirm.pipe((0,_.R)(this.unSubs[4])).subscribe(s=>{if(s){const c=s[0].inputValue,h=s[1].inputValue;let g=null;if(this.commonService.isVersionCompatible(this.information.version,"0.6.2")){let T="";"all"===e?(this.activeChannels.forEach(Y=>{T=T+","+Y.nodeId}),T=T.substring(1),g={baseFeeMsat:c,feeRate:h,nodeIds:T}):g={baseFeeMsat:c,feeRate:h,nodeId:e.nodeId}}else{let T="";"all"===e?(this.activeChannels.forEach(Y=>{T=T+","+Y.channelId}),T=T.substring(1),g={baseFeeMsat:c,feeRate:h,channelIds:T}):g={baseFeeMsat:c,feeRate:h,channelId:e.channelId}}this.store.dispatch((0,k.pW)({payload:g}))}}),this.applyFilter())}percentHintFunction(e){return(e/1e4).toString()+"%"}onChannelClose(e,i){this.store.dispatch((0,Z.c1)({payload:{data:{type:l.n_.CONFIRM,alertTitle:i?"Force Close Channel":"Close Channel",titleMessage:i?"Force closing channel: "+(e.alias||e.shortChannelId?e.alias&&e.shortChannelId?e.alias+" ("+e.shortChannelId+")":e.alias?e.alias:e.shortChannelId:e.channelId):"Closing channel: "+(e.alias||e.shortChannelId?e.alias&&e.shortChannelId?e.alias+" ("+e.shortChannelId+")":e.alias?e.alias:e.shortChannelId:e.channelId),noBtnText:"Cancel",yesBtnText:i?"Force Close":"Close Channel"}}})),this.rtlEffects.closeConfirm.pipe((0,_.R)(this.unSubs[5])).subscribe(h=>{h&&this.store.dispatch((0,k.BL)({payload:{channelId:e.channelId,force:i}}))})}applyFilter(){this.channels.filter=this.selFilter.trim().toLowerCase()}onChannelClick(e,i){this.store.dispatch((0,Z.qR)({payload:{data:{channel:e,channelsType:"open",component:rt}}}))}loadChannelsTable(){this.activeChannels.sort((e,i)=>e.alias===i.alias?0:i.alias?1:-1),this.channels=new r.by([...this.activeChannels]),this.channels.sort=this.sort,this.channels.sortingDataAccessor=(e,i)=>e[i]&&isNaN(e[i])?e[i].toLocaleLowerCase():e[i]?+e[i]:null,this.channels.filterPredicate=(e,i)=>JSON.stringify(e).toLowerCase().includes(i),this.channels.paginator=this.paginator,this.applyFilter(),this.logger.info(this.channels)}onDownloadCSV(){this.channels.data&&this.channels.data.length>0&&this.commonService.downloadFile(this.channels.data,"ActiveChannels")}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(w.yh),t.Y36(tt.V),t.Y36(N.v),t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-channel-open-table"]],viewQuery:function(e,i){if(1&e&&(t.Gf(A.YE,5),t.Gf(S.NW,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.sort=o.first),t.iGM(o=t.CRH())&&(i.paginator=o.first)}},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Channels")}])],decls:39,vars:14,consts:[["fxLayout","column",1,"padding-gap"],["fxLayout","column","fxLayout.gt-xs","row","fxLayoutAlign.gt-xs","start center","fxLayoutAlign","start stretch",1,"page-sub-title-container"],["fxFlex","70"],["fxFlex","30"],["matInput","","name","filter","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","column","fxLayoutAlign","start center","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",3,"dataSource","ngClass"],["table",""],["matColumnDef","shortChannelId"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","alias"],["matColumnDef","feeBaseMsat"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["matColumnDef","feeProportionalMillionths"],["matColumnDef","toLocal"],["matColumnDef","toRemote"],["matColumnDef","balancedness"],["mat-header-cell","","mat-sort-header","","class","pl-3",4,"matHeaderCellDef"],["mat-cell","","class","pl-3",4,"matCellDef"],["matColumnDef","actions"],["mat-header-cell","","class","pl-1",4,"matHeaderCellDef"],["mat-cell","","fxLayoutAlign","end center","class","pl-1",4,"matCellDef"],["matColumnDef","no_peer"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],[1,"ellipsis-parent",3,"ngStyle"],["class","mr-1","matTooltip","Private","matTooltipPosition","right",4,"ngIf"],["class","mr-1","matTooltip","Public","matTooltipPosition","right",4,"ngIf"],[1,"ellipsis-child"],["matTooltip","Private","matTooltipPosition","right",1,"mr-1"],[3,"icon"],["matTooltip","Public","matTooltipPosition","right",1,"mr-1"],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["fxLayoutAlign","end center"],["mat-header-cell","","mat-sort-header","",1,"pl-3"],["mat-cell","",1,"pl-3"],["fxLayout","row"],["fxFlex","100","fxLayoutAlign","center center",1,"font-size-80"],["mode","determinate",3,"value"],["mat-header-cell","",1,"pl-1"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",1,"pl-1"],["fxLayoutAlign","center center",1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","2",1,"mr-0"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1),t._UZ(2,"div",2),t.TgZ(3,"mat-form-field",3)(4,"input",4),t.NdJ("keyup",function(){return i.applyFilter()})("ngModelChange",function(s){return i.selFilter=s}),t.qZA()()(),t.TgZ(5,"div",5),t.YNc(6,bo,1,0,"mat-progress-bar",6),t.TgZ(7,"table",7,8),t.ynx(9,9),t.YNc(10,Ao,2,0,"th",10),t.YNc(11,wo,6,6,"td",11),t.BQk(),t.ynx(12,12),t.YNc(13,Eo,2,0,"th",10),t.YNc(14,Io,4,4,"td",11),t.BQk(),t.ynx(15,13),t.YNc(16,Oo,2,0,"th",14),t.YNc(17,Fo,4,4,"td",11),t.BQk(),t.ynx(18,15),t.YNc(19,qo,2,0,"th",14),t.YNc(20,Ro,4,4,"td",11),t.BQk(),t.ynx(21,16),t.YNc(22,No,2,0,"th",14),t.YNc(23,ko,4,4,"td",11),t.BQk(),t.ynx(24,17),t.YNc(25,Po,2,0,"th",14),t.YNc(26,Do,4,4,"td",11),t.BQk(),t.ynx(27,18),t.YNc(28,Uo,2,0,"th",19),t.YNc(29,Mo,6,4,"td",20),t.BQk(),t.ynx(30,21),t.YNc(31,Jo,8,0,"th",22),t.YNc(32,Qo,12,0,"td",23),t.BQk(),t.ynx(33,24),t.YNc(34,Vo,5,4,"td",25),t.BQk(),t.YNc(35,Xo,1,3,"tr",26),t.YNc(36,$o,1,0,"tr",27),t.YNc(37,Wo,1,0,"tr",28),t.qZA()(),t._UZ(38,"mat-paginator",29),t.qZA()),2&e&&(t.xp6(4),t.Q6J("ngModel",i.selFilter),t.xp6(2),t.Q6J("ngIf",i.apiCallStatus.status===i.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",i.channels)("ngClass",t.VKq(11,Ko,""!==i.errorMessage)),t.xp6(28),t.Q6J("matFooterRowDef",t.DdM(13,jo)),t.xp6(1),t.Q6J("matHeaderRowDef",i.displayedColumns)("matHeaderRowDefSticky",i.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",i.displayedColumns),t.xp6(1),t.Q6J("pageSize",i.pageSize)("pageSizeOptions",i.pageSizeOptions)("showFirstLastButtons",i.screenSize!==i.screenSizeEnum.XS))},directives:[p.xw,p.Wh,p.yH,y.KE,M.Nt,m.Fj,m.JJ,m.On,H.$V,u.O5,J.pW,r.BZ,A.YE,u.mk,E.oO,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,u.PC,E.Zl,X.gM,q.BN,y.bx,D.gD,D.$L,B.ey,r.mD,r.yh,r.Ke,r.Q2,r.as,r.XQ,r.nj,r.Gk,S.NW],pipes:[u.JJ],styles:[".mat-column-shortChannelId[_ngcontent-%COMP%]{flex:0 0 15%;width:15%}.mat-column-shortChannelId[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%]{display:flex}.mat-column-alias[_ngcontent-%COMP%]{padding-left:1rem;flex:0 0 15%;width:15%}.mat-column-alias[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%]{display:flex}.mat-column-balancedness[_ngcontent-%COMP%]{padding-left:2rem;flex:0 0 17%;width:17%}.mat-column-state[_ngcontent-%COMP%], .mat-column-feeBaseMsat[_ngcontent-%COMP%], .mat-column-feeProportionalMillionths[_ngcontent-%COMP%], .mat-column-toLocal[_ngcontent-%COMP%], .mat-column-toRemote[_ngcontent-%COMP%]{flex:1 1 10%;width:10%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media only screen and (max-width: 56.25em){.mat-column-state[_ngcontent-%COMP%], .mat-column-feeBaseMsat[_ngcontent-%COMP%], .mat-column-feeProportionalMillionths[_ngcontent-%COMP%], .mat-column-toLocal[_ngcontent-%COMP%], .mat-column-toRemote[_ngcontent-%COMP%]{white-space:unset;flex:1 1 20%;width:20%}}@media only screen and (max-width: 37.5em){.mat-column-state[_ngcontent-%COMP%], .mat-column-feeBaseMsat[_ngcontent-%COMP%], .mat-column-feeProportionalMillionths[_ngcontent-%COMP%], .mat-column-toLocal[_ngcontent-%COMP%], .mat-column-toRemote[_ngcontent-%COMP%]{white-space:unset}}.mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}.mat-column-actions[_ngcontent-%COMP%] .bordered-box.table-actions-select[_ngcontent-%COMP%]{flex:0 0 100%}@media only screen and (max-width: 56.25em){.mat-column-actions[_ngcontent-%COMP%] .bordered-box.table-actions-select[_ngcontent-%COMP%]{flex:0 0 90%}}@media only screen and (max-width: 37.5em){.mat-column-actions[_ngcontent-%COMP%] .bordered-box.table-actions-select[_ngcontent-%COMP%]{flex:0 0 80%}}"]}),n})();function es(n,a){1&n&&t._UZ(0,"mat-progress-bar",25)}function ns(n,a){1&n&&(t.TgZ(0,"th",26),t._uU(1," State "),t.qZA())}function is(n,a){if(1&n&&(t.TgZ(0,"td",27),t._uU(1),t.ALo(2,"titlecase"),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.hij(" ",t.lcZ(2,1,null==e?null:e.state),"")}}function as(n,a){1&n&&(t.TgZ(0,"th",26),t._uU(1," Alias "),t.qZA())}function os(n,a){if(1&n&&(t.TgZ(0,"td",27),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Oqu(null==e?null:e.alias)}}function ss(n,a){1&n&&(t.TgZ(0,"th",28),t._uU(1," Local Balance (Sats) "),t.qZA())}function ls(n,a){if(1&n&&(t.TgZ(0,"td",27)(1,"span",29),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.xi3(3,1,null==e?null:e.toLocal,"1.0-0")," ")}}function rs(n,a){1&n&&(t.TgZ(0,"th",28),t._uU(1," Remote Balance (Sats) "),t.qZA())}function cs(n,a){if(1&n&&(t.TgZ(0,"td",27)(1,"span",29),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.xi3(3,1,null==e?null:e.toRemote,"1.0-0")," ")}}function us(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"th",30)(1,"div",31)(2,"mat-select",32),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",33),t.NdJ("click",function(){return t.CHM(e),t.oxw().onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}function ps(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",34)(1,"button",35),t.NdJ("click",function(o){const c=t.CHM(e).$implicit;return t.oxw().onChannelClick(c,o)}),t._uU(2,"View Info"),t.qZA()()}}function ms(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No pending channel available."),t.qZA())}function ds(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting pending channels..."),t.qZA())}function hs(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.errorMessage)}}function _s(n,a){if(1&n&&(t.TgZ(0,"td",36),t.YNc(1,ms,2,0,"p",37),t.YNc(2,ds,2,0,"p",37),t.YNc(3,hs,2,1,"p",37),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const fs=function(n){return{"display-none":n}};function gs(n,a){if(1&n&&t._UZ(0,"tr",38),2&n){const e=t.oxw();t.Q6J("ngClass",t.VKq(1,fs,(null==e.channels?null:e.channels.data)&&(null==e.channels||null==e.channels.data?null:e.channels.data.length)>0))}}function Cs(n,a){1&n&&t._UZ(0,"tr",39)}function xs(n,a){1&n&&t._UZ(0,"tr",40)}const ys=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},vs=function(){return["no_channel"]};let Ls=(()=>{class n{constructor(e,i,o){this.logger=e,this.store=i,this.commonService=o,this.totalBalance=0,this.displayedColumns=[],this.myChanPolicy={},this.information={},this.numPeers=-1,this.feeRateTypes=l.vn,this.selFilter="",this.flgSticky=!1,this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["state","alias","actions"]):this.screenSize===l.cu.SM||this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["state","alias","toLocal","toRemote","actions"]):(this.flgSticky=!0,this.displayedColumns=["state","alias","toLocal","toRemote","actions"])}ngOnInit(){this.store.select(C.Xz).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.pendingChannels=e.pendingChannels,this.loadChannelsTable(),this.logger.info(e)}),this.store.select(C.yD).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.store.select(C.Bo).pipe((0,_.R)(this.unSubs[4])).subscribe(e=>{this.numPeers=e.peers&&e.peers.length?e.peers.length:0}),this.store.select(C.kY).pipe((0,_.R)(this.unSubs[5])).subscribe(e=>{this.totalBalance=e.onchainBalance.total||0})}ngAfterViewInit(){this.pendingChannels.length>0&&this.loadChannelsTable()}applyFilter(){this.channels.filter=this.selFilter.trim().toLowerCase()}onChannelClick(e,i){this.store.dispatch((0,Z.qR)({payload:{data:{channel:e,channelsType:"pending",component:rt}}}))}loadChannelsTable(){this.pendingChannels.sort((e,i)=>e.alias===i.alias?0:i.alias?1:-1),this.channels=new r.by([...this.pendingChannels]),this.channels.sort=this.sort,this.channels.sortingDataAccessor=(e,i)=>e[i]&&isNaN(e[i])?e[i].toLocaleLowerCase():e[i]?+e[i]:null,this.channels.filterPredicate=(e,i)=>JSON.stringify(e).toLowerCase().includes(i),this.channels.paginator=this.paginator,this.applyFilter(),this.logger.info(this.channels)}onDownloadCSV(){this.channels.data&&this.channels.data.length>0&&this.commonService.downloadFile(this.channels.data,"PendingChannels")}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(w.yh),t.Y36(N.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-channel-pending-table"]],viewQuery:function(e,i){if(1&e&&(t.Gf(A.YE,5),t.Gf(S.NW,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.sort=o.first),t.iGM(o=t.CRH())&&(i.paginator=o.first)}},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Channels")}])],decls:30,vars:14,consts:[["fxLayout","column",1,"padding-gap"],["fxLayout","column","fxLayout.gt-xs","row","fxLayoutAlign.gt-xs","start center","fxLayoutAlign","start stretch",1,"page-sub-title-container"],["fxFlex","70"],["fxFlex","30"],["matInput","","name","filter","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","column","fxLayoutAlign","start center","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",3,"dataSource","ngClass"],["table",""],["matColumnDef","state"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","alias"],["matColumnDef","toLocal"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["matColumnDef","toRemote"],["matColumnDef","actions"],["mat-header-cell","","class","pl-1",4,"matHeaderCellDef"],["mat-cell","","class","pl-1","fxLayoutAlign","end center",4,"matCellDef"],["matColumnDef","no_channel"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["fxLayoutAlign","end center"],["mat-header-cell","",1,"pl-1"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",1,"pl-1"],["mat-stroked-button","","color","primary","type","button","tabindex","4",3,"click"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1),t._UZ(2,"div",2),t.TgZ(3,"mat-form-field",3)(4,"input",4),t.NdJ("keyup",function(){return i.applyFilter()})("ngModelChange",function(s){return i.selFilter=s}),t.qZA()()(),t.TgZ(5,"div",5),t.YNc(6,es,1,0,"mat-progress-bar",6),t.TgZ(7,"table",7,8),t.ynx(9,9),t.YNc(10,ns,2,0,"th",10),t.YNc(11,is,3,3,"td",11),t.BQk(),t.ynx(12,12),t.YNc(13,as,2,0,"th",10),t.YNc(14,os,2,1,"td",11),t.BQk(),t.ynx(15,13),t.YNc(16,ss,2,0,"th",14),t.YNc(17,ls,4,4,"td",11),t.BQk(),t.ynx(18,15),t.YNc(19,rs,2,0,"th",14),t.YNc(20,cs,4,4,"td",11),t.BQk(),t.ynx(21,16),t.YNc(22,us,6,0,"th",17),t.YNc(23,ps,3,0,"td",18),t.BQk(),t.ynx(24,19),t.YNc(25,_s,4,3,"td",20),t.BQk(),t.YNc(26,gs,1,3,"tr",21),t.YNc(27,Cs,1,0,"tr",22),t.YNc(28,xs,1,0,"tr",23),t.qZA()(),t._UZ(29,"mat-paginator",24),t.qZA()),2&e&&(t.xp6(4),t.Q6J("ngModel",i.selFilter),t.xp6(2),t.Q6J("ngIf",i.apiCallStatus.status===i.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",i.channels)("ngClass",t.VKq(11,ys,""!==i.errorMessage)),t.xp6(19),t.Q6J("matFooterRowDef",t.DdM(13,vs)),t.xp6(1),t.Q6J("matHeaderRowDef",i.displayedColumns)("matHeaderRowDefSticky",i.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",i.displayedColumns),t.xp6(1),t.Q6J("pageSize",i.pageSize)("pageSizeOptions",i.pageSizeOptions)("showFirstLastButtons",i.screenSize!==i.screenSizeEnum.XS))},directives:[p.xw,p.Wh,p.yH,y.KE,M.Nt,m.Fj,m.JJ,m.On,H.$V,u.O5,J.pW,r.BZ,A.YE,u.mk,E.oO,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,D.gD,D.$L,B.ey,F.lW,r.mD,r.yh,r.Ke,r.Q2,r.as,r.XQ,r.nj,r.Gk,S.NW],pipes:[u.rS,u.JJ],styles:[".mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})();var ct=f(5615);const Ts=["peersForm"],bs=["stepper"];function As(n,a){if(1&n&&t._uU(0),2&n){const e=t.oxw();t.Oqu(e.peerFormLabel)}}function Ss(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Address is required."),t.qZA())}function Zs(n,a){if(1&n&&(t.TgZ(0,"div",33),t._UZ(1,"fa-icon",34),t.TgZ(2,"span"),t._uU(3),t.qZA()()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faExclamationTriangle),t.xp6(2),t.Oqu(e.peerConnectionError)}}function ws(n,a){if(1&n&&t._uU(0),2&n){const e=t.oxw();t.Oqu(e.channelFormLabel)}}function Es(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Amount is required."),t.qZA())}function Is(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Amount must be a positive number."),t.qZA())}function Os(n,a){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("Amount must be less than or equal to ",e.totalBalance,".")}}function Fs(n,a){if(1&n&&(t.TgZ(0,"div",33),t._UZ(1,"fa-icon",34),t.TgZ(2,"span"),t._uU(3),t.qZA()()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faExclamationTriangle),t.xp6(2),t.Oqu(e.channelConnectionError)}}let qs=(()=>{class n{constructor(e,i,o,s,c,h){this.dialogRef=e,this.data=i,this.store=o,this.formBuilder=s,this.actions=c,this.logger=h,this.faExclamationTriangle=L.eHv,this.peerAddress="",this.totalBalance=0,this.flgChannelOpened=!1,this.channelOpenStatus=null,this.newlyAddedPeer=null,this.flgEditable=!0,this.peerConnectionError="",this.channelConnectionError="",this.peerFormLabel="Peer Details",this.channelFormLabel="Open Channel (Optional)",this.unSubs=[new d.x,new d.x]}ngOnInit(){this.data.message?(this.totalBalance=this.data.message.balance,this.peerAddress=this.data.message.peer&&this.data.message.peer.nodeId&&this.data.message.peer.address?this.data.message.peer.nodeId+"@"+this.data.message.peer.address:this.data.message.peer&&this.data.message.peer.nodeId&&!this.data.message.peer.address?this.data.message.peer.nodeId:""):(this.totalBalance=0,this.peerAddress=""),this.peerFormGroup=this.formBuilder.group({hiddenAddress:["",[m.kI.required]],peerAddress:[this.peerAddress,[m.kI.required]]}),this.channelFormGroup=this.formBuilder.group({fundingAmount:["",[m.kI.required,m.kI.min(1),m.kI.max(this.totalBalance)]],isPrivate:[!1],feeRate:[null],hiddenAmount:["",[m.kI.required]]}),this.statusFormGroup=this.formBuilder.group({}),this.actions.pipe((0,_.R)(this.unSubs[1]),(0,Q.h)(e=>e.type===l.lr.NEWLY_ADDED_PEER_ECL||e.type===l.lr.FETCH_CHANNELS_ECL||e.type===l.lr.UPDATE_API_CALL_STATUS_ECL)).subscribe(e=>{e.type===l.lr.NEWLY_ADDED_PEER_ECL&&(this.logger.info(e.payload),this.flgEditable=!1,this.newlyAddedPeer=e.payload.peer,this.peerFormGroup.controls.hiddenAddress.setValue(this.peerFormGroup.controls.peerAddress.value),this.stepper.next()),e.type===l.lr.FETCH_CHANNELS_ECL&&this.dialogRef.close(),e.type===l.lr.UPDATE_API_CALL_STATUS_ECL&&e.payload.status===l.Bn.ERROR&&("SaveNewPeer"===e.payload.action?this.peerConnectionError=e.payload.message:"SaveNewChannel"===e.payload.action&&(this.channelConnectionError=e.payload.message))})}onConnectPeer(){if(!this.peerFormGroup.controls.peerAddress.value)return!0;this.peerConnectionError="",this.store.dispatch((0,k.El)({payload:{id:this.peerFormGroup.controls.peerAddress.value}}))}onOpenChannel(){var e;if(!this.channelFormGroup.controls.fundingAmount.value||this.totalBalance-this.channelFormGroup.controls.fundingAmount.value<0)return!0;this.channelConnectionError="",this.store.dispatch((0,k.YX)({payload:{nodeId:null===(e=this.newlyAddedPeer)||void 0===e?void 0:e.nodeId,amount:this.channelFormGroup.controls.fundingAmount.value,private:this.channelFormGroup.controls.isPrivate.value,feeRate:this.channelFormGroup.controls.feeRate.value}}))}onClose(){this.dialogRef.close(!1)}stepSelectionChanged(e){var i,o,s,c;switch(e.selectedIndex){case 0:default:this.peerFormLabel="Peer Details",this.channelFormLabel="Open Channel (Optional)";break;case 1:this.peerFormLabel=this.peerFormGroup.controls.peerAddress.value?"Peer Added: "+((null===(i=this.newlyAddedPeer)||void 0===i?void 0:i.alias)?this.newlyAddedPeer.alias:null===(o=this.newlyAddedPeer)||void 0===o?void 0:o.nodeId):"Peer Details",this.channelFormLabel="Open Channel (Optional)";break;case 2:this.peerFormLabel=this.peerFormGroup.controls.peerAddress.value?"Peer Added: "+((null===(s=this.newlyAddedPeer)||void 0===s?void 0:s.alias)?this.newlyAddedPeer.alias:null===(c=this.newlyAddedPeer)||void 0===c?void 0:c.nodeId):"Peer Details",this.channelFormLabel=this.channelFormGroup.controls.fundingAmount.value?"Opening Channel for "+this.channelFormGroup.controls.fundingAmount.value+" Sats":"Open Channel (Optional)"}e.selectedIndex{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(U.so),t.Y36(U.WI),t.Y36(w.yh),t.Y36(m.qu),t.Y36(G.eX),t.Y36(R.mQ))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-connect-peer"]],viewQuery:function(e,i){if(1&e&&(t.Gf(Ts,5),t.Gf(bs,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.form=o.first),t.iGM(o=t.CRH())&&(i.stepper=o.first)}},decls:50,vars:20,consts:[["fxLayout","row"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title"],["tabindex","8","fxFlex","5","fxLayoutAlign","center","mat-button","",1,"btn-close-x","p-0",3,"click"],[1,"padding-gap-x-large"],["fxLayout","column"],[3,"linear","selectionChange"],["stepper",""],[3,"stepControl","editable"],["fxLayout","column","fxLayout.gt-sm","row wrap","fxLayoutAlign","start","fxLayoutAlign.gt-sm","space-between",1,"my-1",3,"formGroup"],["matStepLabel",""],["autoFocus","","matInput","","placeholder","Lightning Address (pubkey OR pubkey@ip:port)","formControlName","peerAddress","tabindex","1","required",""],[4,"ngIf"],["fxFlex","100","class","alert alert-danger mt-1",4,"ngIf"],["fxLayout","row","fxLayoutAlign","start center","fxFlex","100",1,"mt-2"],["mat-button","","color","primary","tabindex","3","type","button",3,"click"],["fxLayout","column","fxLayout.gt-sm","row wrap","fxLayoutAlign","start","fxLayoutAlign.gt-sm","space-between",1,"mb-1",3,"formGroup"],["matStepLabel","","disabled","true"],["fxLayout","column","fxLayout.gt-sm","row wrap","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between center"],["fxFlex","60","fxLayoutAlign","start end"],["matInput","","autoFocus","","formControlName","fundingAmount","placeholder","Amount","type","number","tabindex","1","required","",3,"step"],["matSuffix","",1,"ml-1"],["fxFlex","35","fxLayoutAlign","start center"],["tabindex","2","color","primary","formControlName","isPrivate","name","isPrivate"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between center",1,"mt-1"],["fxFlex","48","fxLayout","row","fxLayoutAlign","start center"],["matInput","","formControlName","feeRate","placeholder","Fee (Sats/vByte)","type","number","name","feeRate","tabindex","7",3,"step","min"],["mat-button","","color","primary","tabindex","8","type","button",3,"click"],["fxLayout","row","fxFlex","100","fxLayoutAlign","end center"],["mat-button","","color","primary","tabindex","12","type","button","default","",3,"click"],["fxFlex","100",1,"alert","alert-danger","mt-1"],[1,"mr-1","alert-icon",3,"icon"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3)(4,"span",4),t._uU(5,"Connect to a new peer"),t.qZA()(),t.TgZ(6,"button",5),t.NdJ("click",function(){return i.onClose()}),t._uU(7,"X"),t.qZA()(),t.TgZ(8,"mat-card-content",6)(9,"div",7)(10,"mat-vertical-stepper",8,9),t.NdJ("selectionChange",function(s){return i.stepSelectionChanged(s)}),t.TgZ(12,"mat-step",10)(13,"form",11),t.YNc(14,As,1,1,"ng-template",12),t.TgZ(15,"mat-form-field",1),t._UZ(16,"input",13),t.YNc(17,Ss,2,0,"mat-error",14),t.qZA(),t.YNc(18,Zs,4,2,"div",15),t.TgZ(19,"div",16)(20,"button",17),t.NdJ("click",function(){return i.onConnectPeer()}),t._uU(21),t.qZA()()()(),t.TgZ(22,"mat-step",10)(23,"form",18),t.YNc(24,ws,1,1,"ng-template",19),t.TgZ(25,"div",20)(26,"div",21)(27,"mat-form-field",22),t._UZ(28,"input",23),t.TgZ(29,"mat-hint"),t._uU(30),t.qZA(),t.TgZ(31,"span",24),t._uU(32," Sats "),t.qZA(),t.YNc(33,Es,2,0,"mat-error",14),t.YNc(34,Is,2,0,"mat-error",14),t.YNc(35,Os,2,1,"mat-error",14),t.qZA(),t.TgZ(36,"div",25)(37,"mat-slide-toggle",26),t._uU(38,"Private Channel"),t.qZA()()(),t.TgZ(39,"div",27)(40,"div",28)(41,"mat-form-field",1),t._UZ(42,"input",29),t.qZA()()()(),t.YNc(43,Fs,4,2,"div",15),t.TgZ(44,"div",16)(45,"button",30),t.NdJ("click",function(){return i.onOpenChannel()}),t._uU(46),t.qZA()()()()(),t.TgZ(47,"div",31)(48,"button",32),t.NdJ("click",function(){return i.onClose()}),t._uU(49),t.qZA()()()()()()),2&e&&(t.xp6(10),t.Q6J("linear",!0),t.xp6(2),t.Q6J("stepControl",i.peerFormGroup)("editable",i.flgEditable),t.xp6(1),t.Q6J("formGroup",i.peerFormGroup),t.xp6(4),t.Q6J("ngIf",null==i.peerFormGroup.controls.peerAddress.errors?null:i.peerFormGroup.controls.peerAddress.errors.required),t.xp6(1),t.Q6J("ngIf",""!==i.peerConnectionError),t.xp6(3),t.Oqu(""!==i.peerConnectionError?"Retry":"Add Peer"),t.xp6(1),t.Q6J("stepControl",i.channelFormGroup)("editable",i.flgEditable),t.xp6(1),t.Q6J("formGroup",i.channelFormGroup),t.xp6(5),t.Q6J("step",1e3),t.xp6(2),t.hij("Remaining Bal: ",i.totalBalance-(i.channelFormGroup.controls.fundingAmount.value?i.channelFormGroup.controls.fundingAmount.value:0),""),t.xp6(3),t.Q6J("ngIf",null==i.channelFormGroup.controls.fundingAmount.errors?null:i.channelFormGroup.controls.fundingAmount.errors.required),t.xp6(1),t.Q6J("ngIf",null==i.channelFormGroup.controls.fundingAmount.errors?null:i.channelFormGroup.controls.fundingAmount.errors.min),t.xp6(1),t.Q6J("ngIf",null==i.channelFormGroup.controls.fundingAmount.errors?null:i.channelFormGroup.controls.fundingAmount.errors.max),t.xp6(7),t.Q6J("step",1)("min",0),t.xp6(1),t.Q6J("ngIf",""!==i.channelConnectionError),t.xp6(3),t.Oqu(""!==i.channelConnectionError?"Retry":"Open Channel"),t.xp6(3),t.Oqu(null!=i.newlyAddedPeer&&i.newlyAddedPeer.nodeId?"Do It Later":"Close"))},directives:[p.xw,p.yH,b.dk,p.Wh,F.lW,b.dn,ct.Vq,ct.C0,m._Y,m.JL,m.sg,ct.VY,y.KE,M.Nt,m.Fj,W.h,m.JJ,m.u,m.Q7,u.O5,y.TO,q.BN,m.wV,y.bx,y.R9,Zt.Rr,m.qQ,K.q],styles:[""]}),n})();function Rs(n,a){1&n&&t._UZ(0,"mat-progress-bar",37)}function Ns(n,a){1&n&&(t.TgZ(0,"th",38),t._uU(1," ID "),t.qZA())}const ut=function(n){return{"max-width":n}};function ks(n,a){if(1&n&&(t.TgZ(0,"td",39),t._uU(1),t.qZA()),2&n){const e=a.$implicit,i=t.oxw();t.Q6J("ngStyle",t.VKq(2,ut,i.screenSize===i.screenSizeEnum.XS?"10rem":"30rem")),t.xp6(1),t.hij(" ",null==e?null:e.nodeId," ")}}function Ps(n,a){1&n&&(t.TgZ(0,"th",40),t._uU(1," Alias "),t.qZA())}const It=function(n){return{"mr-0":n}};function Ds(n,a){if(1&n&&t._UZ(0,"span",44),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,It,e.screenSize===e.screenSizeEnum.XS))}}function Us(n,a){if(1&n&&t._UZ(0,"span",45),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,It,e.screenSize===e.screenSizeEnum.XS))}}function Ms(n,a){if(1&n&&(t.TgZ(0,"td",41),t.YNc(1,Ds,1,3,"span",42),t.YNc(2,Us,1,3,"span",43),t._uU(3),t.qZA()),2&n){const e=a.$implicit,i=t.oxw();t.Q6J("ngStyle",t.VKq(4,ut,i.screenSize===i.screenSizeEnum.XS?"10rem":"25rem")),t.xp6(1),t.Q6J("ngIf","CONNECTED"===e.state),t.xp6(1),t.Q6J("ngIf","DISCONNECTED"===e.state),t.xp6(1),t.hij(" ",null==e?null:e.alias," ")}}function Js(n,a){1&n&&(t.TgZ(0,"th",38),t._uU(1," State "),t.qZA())}function Qs(n,a){if(1&n&&(t.TgZ(0,"td",46),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.hij(" ",null==e?null:e.state," ")}}function Ys(n,a){1&n&&(t.TgZ(0,"th",38),t._uU(1," Network Address "),t.qZA())}function Hs(n,a){if(1&n&&(t.TgZ(0,"td",39),t._uU(1),t.qZA()),2&n){const e=a.$implicit,i=t.oxw();t.Q6J("ngStyle",t.VKq(2,ut,i.screenSize===i.screenSizeEnum.XS?"10rem":"20rem")),t.xp6(1),t.hij(" ",null==e?null:e.address," ")}}function Bs(n,a){1&n&&(t.TgZ(0,"th",47),t._uU(1," Channels "),t.qZA())}function zs(n,a){if(1&n&&(t.TgZ(0,"td",48),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.hij(" ",null==e?null:e.channels," ")}}function Vs(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"th",49)(1,"div",50)(2,"mat-select",51),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",52),t.NdJ("click",function(){return t.CHM(e),t.oxw().onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}function Gs(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"mat-option",52),t.NdJ("click",function(){t.CHM(e);const o=t.oxw().$implicit;return t.oxw().onPeerDetach(o)}),t._uU(1,"Disconnect"),t.qZA()}}function Xs(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"mat-option",52),t.NdJ("click",function(){t.CHM(e);const o=t.oxw().$implicit;return t.oxw().onConnectPeer(o)}),t._uU(1,"Reconnect"),t.qZA()}}function $s(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",53)(1,"div",50)(2,"mat-select",51),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",52),t.NdJ("click",function(o){const c=t.CHM(e).$implicit;return t.oxw().onPeerClick(c,o)}),t._uU(5,"View Info"),t.qZA(),t.TgZ(6,"mat-option",52),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().onOpenChannel(s)}),t._uU(7,"Open Channel"),t.qZA(),t.YNc(8,Gs,2,0,"mat-option",54),t.YNc(9,Xs,2,0,"mat-option",54),t.qZA()()()}if(2&n){const e=a.$implicit;t.xp6(8),t.Q6J("ngIf","CONNECTED"===e.state),t.xp6(1),t.Q6J("ngIf","DISCONNECTED"===e.state)}}function Ws(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No connected peer."),t.qZA())}function Ks(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting peers..."),t.qZA())}function js(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.errorMessage)}}function tl(n,a){if(1&n&&(t.TgZ(0,"td",55),t.YNc(1,Ws,2,0,"p",56),t.YNc(2,Ks,2,0,"p",56),t.YNc(3,js,2,1,"p",56),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",(!(null!=e.peers&&e.peers.data)||(null==e.peers||null==e.peers.data?null:e.peers.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.peers&&e.peers.data)||(null==e.peers||null==e.peers.data?null:e.peers.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.peers&&e.peers.data)||(null==e.peers||null==e.peers.data?null:e.peers.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const el=function(n){return{"display-none":n}};function nl(n,a){if(1&n&&t._UZ(0,"tr",57),2&n){const e=t.oxw();t.Q6J("ngClass",t.VKq(1,el,(null==e.peers?null:e.peers.data)&&(null==e.peers||null==e.peers.data?null:e.peers.data.length)>0))}}function il(n,a){1&n&&t._UZ(0,"tr",58)}function al(n,a){1&n&&t._UZ(0,"tr",59)}const ol=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},sl=function(){return["no_peer"]};let ll=(()=>{class n{constructor(e,i,o,s,c){this.logger=e,this.store=i,this.rtlEffects=o,this.actions=s,this.commonService=c,this.faUsers=L.FVb,this.newlyAddedPeer="",this.displayedColumns=[],this.peerAddress="",this.peersData=[],this.information={},this.availableBalance=0,this.flgSticky=!1,this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.selFilter="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["alias","actions"]):this.screenSize===l.cu.SM?(this.flgSticky=!1,this.displayedColumns=["alias","nodeId","address","actions"]):this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["alias","nodeId","address","channels","actions"]):(this.flgSticky=!0,this.displayedColumns=["alias","nodeId","address","channels","actions"])}ngOnInit(){this.store.select(C.yD).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.information=e}),this.store.select(C.Bo).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.peersData=e.peers,this.loadPeersTable(this.peersData),this.logger.info(e)}),this.store.select(C.kY).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.availableBalance=e.onchainBalance.total||0}),this.actions.pipe((0,_.R)(this.unSubs[3]),(0,Q.h)(e=>e.type===l.lr.SET_PEERS_ECL)).subscribe(e=>{this.peerAddress=null})}ngAfterViewInit(){this.peersData.length>0&&this.loadPeersTable(this.peersData)}onPeerClick(e,i){const o=[[{key:"nodeId",value:e.nodeId,title:"Public Key",width:100}],[{key:"address",value:e.address,title:"Address",width:50},{key:"alias",value:e.alias,title:"Alias",width:50}],[{key:"state",value:this.commonService.titleCase(e.state||""),title:"State",width:50},{key:"channels",value:e.channels,title:"Channels",width:50}]];this.store.dispatch((0,Z.qR)({payload:{data:{type:l.n_.INFORMATION,alertTitle:"Peer Information",showQRName:"Public Key",showQRField:e.nodeId,message:o}}}))}onConnectPeer(e){this.store.dispatch((0,Z.qR)({payload:{data:{message:{peer:e.nodeId?e:null,information:this.information,balance:this.availableBalance},component:qs}}}))}onOpenChannel(e){this.store.dispatch((0,Z.qR)({payload:{data:{alertTitle:"Open Channel",message:{peer:e,information:this.information,balance:this.availableBalance},newlyAdded:!1,component:wt}}}))}onPeerDetach(e){this.store.dispatch(e&&e.channels&&e.channels>0?(0,Z.qR)({payload:{data:{type:l.n_.ERROR,alertTitle:"Disconnect Not Allowed",titleMessage:"Channel active with this peer."}}}):(0,Z.c1)({payload:{data:{type:l.n_.CONFIRM,alertTitle:"Disconnect Peer",titleMessage:"Disconnect peer: "+(e.alias?e.alias:e.nodeId),noBtnText:"Cancel",yesBtnText:"Disconnect"}}})),this.rtlEffects.closeConfirm.pipe((0,_.R)(this.unSubs[4])).subscribe(i=>{i&&this.store.dispatch((0,k.GD)({payload:{nodeId:e.nodeId||""}}))})}applyFilter(){this.peers.filter=this.selFilter.trim().toLowerCase()}loadPeersTable(e){this.peers=new r.by(e?[...e]:[]),this.peers.sort=this.sort,this.peers.sortingDataAccessor=(i,o)=>i[o]&&isNaN(i[o])?i[o].toLocaleLowerCase():i[o]?+i[o]:null,this.peers.filterPredicate=(i,o)=>JSON.stringify(i).toLowerCase().includes(o),this.peers.paginator=this.paginator,this.applyFilter()}onDownloadCSV(){this.peers.data&&this.peers.data.length>0&&this.commonService.downloadFile(this.peers.data,"Peers")}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(w.yh),t.Y36(tt.V),t.Y36(G.eX),t.Y36(N.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-peers"]],viewQuery:function(e,i){if(1&e&&(t.Gf(A.YE,5),t.Gf(S.NW,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.sort=o.first),t.iGM(o=t.CRH())&&(i.paginator=o.first)}},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Peers")}])],decls:42,vars:15,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayout","column","fxLayoutAlign","space-between stretch","fxLayout.gt-sm","row wrap"],["peersForm","ngForm"],["mat-flat-button","","color","primary","type","submit","tabindex","1",3,"click"],["fxLayout","column"],["fxLayout","column","fxLayout.gt-xs","row","fxLayoutAlign.gt-xs","start center","fxLayoutAlign","start stretch",1,"page-sub-title-container"],["fxFlex","70"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxFlex","30"],["fxLayout","row","fxLayoutAlign","start start"],["matInput","","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","column","fxLayoutAlign","start center","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",3,"dataSource","ngClass"],["table",""],["matColumnDef","nodeId"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",3,"ngStyle",4,"matCellDef"],["matColumnDef","alias"],["mat-header-cell","","mat-sort-header","","class","px-3",4,"matHeaderCellDef"],["mat-cell","","class","px-3",3,"ngStyle",4,"matCellDef"],["matColumnDef","state"],["mat-cell","",4,"matCellDef"],["matColumnDef","address"],["matColumnDef","channels"],["mat-header-cell","","class","px-2","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","","class","px-2",4,"matCellDef"],["matColumnDef","actions"],["mat-header-cell","","class","px-3",4,"matHeaderCellDef"],["mat-cell","","fxLayoutAlign","end center","class","px-3",4,"matCellDef"],["matColumnDef","no_peer"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell","",3,"ngStyle"],["mat-header-cell","","mat-sort-header","",1,"px-3"],["mat-cell","",1,"px-3",3,"ngStyle"],["class","dot green","matTooltip","Connected","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["class","dot red","matTooltip","Disconnected","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["matTooltip","Connected","matTooltipPosition","right",1,"dot","green",3,"ngClass"],["matTooltip","Disconnected","matTooltipPosition","right",1,"dot","red",3,"ngClass"],["mat-cell",""],["mat-header-cell","","mat-sort-header","",1,"px-2"],["mat-cell","",1,"px-2"],["mat-header-cell","",1,"px-3"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",1,"px-3"],[3,"click",4,"ngIf"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"form",1,2)(3,"button",3),t.NdJ("click",function(){return i.onConnectPeer({})}),t._uU(4,"Add Peer"),t.qZA()(),t.TgZ(5,"div",4)(6,"div",5)(7,"div",6),t._UZ(8,"fa-icon",7),t.TgZ(9,"span",8),t._uU(10,"Peers"),t.qZA()(),t.TgZ(11,"mat-form-field",9)(12,"div",10)(13,"input",11),t.NdJ("keyup",function(){return i.applyFilter()})("ngModelChange",function(s){return i.selFilter=s}),t.qZA()()()(),t.TgZ(14,"div",12),t.YNc(15,Rs,1,0,"mat-progress-bar",13),t.TgZ(16,"table",14,15),t.ynx(18,16),t.YNc(19,Ns,2,0,"th",17),t.YNc(20,ks,2,4,"td",18),t.BQk(),t.ynx(21,19),t.YNc(22,Ps,2,0,"th",20),t.YNc(23,Ms,4,6,"td",21),t.BQk(),t.ynx(24,22),t.YNc(25,Js,2,0,"th",17),t.YNc(26,Qs,2,1,"td",23),t.BQk(),t.ynx(27,24),t.YNc(28,Ys,2,0,"th",17),t.YNc(29,Hs,2,4,"td",18),t.BQk(),t.ynx(30,25),t.YNc(31,Bs,2,0,"th",26),t.YNc(32,zs,2,1,"td",27),t.BQk(),t.ynx(33,28),t.YNc(34,Vs,6,0,"th",29),t.YNc(35,$s,10,2,"td",30),t.BQk(),t.ynx(36,31),t.YNc(37,tl,4,3,"td",32),t.BQk(),t.YNc(38,nl,1,3,"tr",33),t.YNc(39,il,1,0,"tr",34),t.YNc(40,al,1,0,"tr",35),t.qZA()(),t._UZ(41,"mat-paginator",36),t.qZA()()),2&e&&(t.xp6(8),t.Q6J("icon",i.faUsers),t.xp6(5),t.Q6J("ngModel",i.selFilter),t.xp6(2),t.Q6J("ngIf",i.apiCallStatus.status===i.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",i.peers)("ngClass",t.VKq(12,ol,""!==i.errorMessage)),t.xp6(22),t.Q6J("matFooterRowDef",t.DdM(14,sl)),t.xp6(1),t.Q6J("matHeaderRowDef",i.displayedColumns)("matHeaderRowDefSticky",i.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",i.displayedColumns),t.xp6(1),t.Q6J("pageSize",i.pageSize)("pageSizeOptions",i.pageSizeOptions)("showFirstLastButtons",i.screenSize!==i.screenSizeEnum.XS))},directives:[p.xw,p.yH,p.Wh,m._Y,m.JL,m.F,F.lW,q.BN,y.KE,M.Nt,m.Fj,m.JJ,m.On,H.$V,u.O5,J.pW,r.BZ,A.YE,u.mk,E.oO,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,u.PC,E.Zl,X.gM,D.gD,D.$L,B.ey,r.mD,r.yh,r.Ke,r.Q2,r.as,r.XQ,r.nj,r.Gk,S.NW],styles:[".mat-column-alias[_ngcontent-%COMP%]{flex:1 1 10%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-column-nodeId[_ngcontent-%COMP%]{flex:1 1 10%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:2rem}.mat-column-address[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})();const rl=["queryRoutesForm"];function cl(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Destination Node ID is required."),t.qZA())}function ul(n,a){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Amount is required."),t.qZA())}function pl(n,a){1&n&&t._UZ(0,"mat-progress-bar",21)}function ml(n,a){1&n&&(t.TgZ(0,"th",40),t._uU(1," Alias "),t.qZA())}function dl(n,a){if(1&n&&(t.TgZ(0,"td",41),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.hij(" ",null==e?null:e.alias," ")}}function hl(n,a){1&n&&(t.TgZ(0,"th",40),t._uU(1," ID "),t.qZA())}function _l(n,a){if(1&n&&(t.TgZ(0,"td",41),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.hij(" ",null==e?null:e.nodeId," ")}}function fl(n,a){1&n&&(t.TgZ(0,"th",42)(1,"span",43),t._uU(2,"Actions"),t.qZA()())}function gl(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",44)(1,"button",45),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw(2).onHopClick(s)}),t._uU(2,"View Info"),t.qZA()()}}function Cl(n,a){1&n&&t._UZ(0,"tr",46)}function xl(n,a){1&n&&t._UZ(0,"tr",47)}const yl=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}};function vl(n,a){if(1&n&&(t.TgZ(0,"div",22)(1,"mat-expansion-panel",23)(2,"mat-expansion-panel-header")(3,"mat-panel-title",24)(4,"span",25),t._uU(5),t.qZA(),t.TgZ(6,"span",26),t._uU(7),t.ALo(8,"number"),t.qZA()()(),t.TgZ(9,"mat-panel-description",27)(10,"div",28)(11,"table",29,30),t.ynx(13,31),t.YNc(14,ml,2,0,"th",32),t.YNc(15,dl,2,1,"td",33),t.BQk(),t.ynx(16,34),t.YNc(17,hl,2,0,"th",32),t.YNc(18,_l,2,1,"td",33),t.BQk(),t.ynx(19,35),t.YNc(20,fl,3,0,"th",36),t.YNc(21,gl,3,0,"td",37),t.BQk(),t.YNc(22,Cl,1,0,"tr",38),t.YNc(23,xl,1,0,"tr",39),t.qZA()()()()()),2&n){const e=a.$implicit,i=a.index,o=t.oxw();t.xp6(5),t.hij("Route ",i+1,""),t.xp6(2),t.Oqu(t.lcZ(8,7,e.amount/1e3)),t.xp6(4),t.Q6J("dataSource",o.qrHops[i])("ngClass",t.VKq(9,yl,"error"===o.flgLoading[0])),t.xp6(11),t.Q6J("matHeaderRowDef",o.displayedColumns)("matHeaderRowDefSticky",o.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",o.displayedColumns)}}let Ll=(()=>{class n{constructor(e,i,o){this.store=e,this.eclEffects=i,this.commonService=o,this.allQRoutes=[],this.nodeId="",this.amount=0,this.qrHops=[],this.flgSticky=!1,this.flgLoading=[!1],this.faRoute=L.FpQ,this.faExclamationTriangle=L.eHv,this.screenSize="",this.screenSizeEnum=l.cu,this.unSubs=[new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["alias","actions"]):this.screenSize===l.cu.SM||this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["alias","nodeId","actions"]):(this.flgSticky=!0,this.displayedColumns=["alias","nodeId","actions"])}ngOnInit(){this.qrHops[0]=new r.by([]),this.qrHops[0].data=[],this.eclEffects.setQueryRoutes.pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{e&&e.routes&&e.routes.length?(this.flgLoading[0]=!1,this.allQRoutes=e.routes,this.allQRoutes.forEach((i,o)=>{this.qrHops[o]=new r.by([...i.nodeIds])})):(this.flgLoading[0]="error",this.allQRoutes=[],this.qrHops=[])})}onQueryRoutes(){if(!this.nodeId||!this.amount)return!0;this.qrHops=[],this.flgLoading[0]=!0,this.store.dispatch((0,k.WO)({payload:{nodeId:this.nodeId,amount:1e3*this.amount}}))}resetData(){this.allQRoutes=[],this.nodeId="",this.amount=0,this.flgLoading[0]=!1,this.qrHops=[],this.form.resetForm()}onHopClick(e){this.store.dispatch((0,Z.qR)({payload:{data:{type:l.n_.INFORMATION,alertTitle:"Route Information",message:[[{key:"alias",value:e.alias,title:"Alias",width:100,type:l.Gi.STRING}],[{key:"nodeId",value:e.nodeId,title:"Node ID",width:100,type:l.Gi.STRING}]]}}}))}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(w.yh),t.Y36(st.o),t.Y36(N.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-query-routes"]],viewQuery:function(e,i){if(1&e&&t.Gf(rl,7),2&e){let o;t.iGM(o=t.CRH())&&(i.form=o.first)}},decls:28,vars:10,consts:[["fxLayout","column","fxFlex","100"],["fxLayout","column","fxLayoutAlign","space-between stretch","fxLayout.gt-sm","row wrap",3,"ngSubmit"],["queryRoutesForm","ngForm"],["fxFlex","100",1,"alert","alert-warn"],[1,"mr-1","alert-icon",3,"icon"],["fxFlex","69","fxLayoutAlign","start end"],["matInput","","placeholder","Destination Node ID","name","nodeId","tabindex","1","required","",3,"ngModel","ngModelChange"],["destPubkey","ngModel"],[4,"ngIf"],["fxFlex","29","fxLayoutAlign","start end"],["matInput","","placeholder","Amount (Sats)","name","amount","tabindex","2","type","number","required","",3,"ngModel","step","min","ngModelChange"],["fxLayout","row",1,"mt-1"],["mat-stroked-button","","color","primary","tabindex","3","type","reset",1,"mr-1",3,"click"],["mat-flat-button","","color","primary","type","submit","tabindex","4"],["fxLayout","row","fxLayoutAlign","start center",1,"page-sub-title-container","mt-2","mb-1"],["fxFlex","70"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["mode","indeterminate",4,"ngIf"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start start",1,"padding-gap-x"],["fxFlex","100",4,"ngFor","ngForOf"],["mode","indeterminate"],["fxFlex","100"],[1,"flat-expansion-panel","help-expansion","mb-2px"],["fxLayout","row","fxLayoutAlign","space-between start"],["fxFlex","50","fxLayoutAlign","start start"],["fxFlex","50","fxLayoutAlign","end end"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between stretch",1,"table-container","mb-2",3,"perfectScrollbar"],["mat-table","",3,"dataSource","ngClass"],["table[i]",""],["matColumnDef","alias"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","nodeId"],["matColumnDef","actions"],["mat-header-cell","","class","pl-4 pr-3",4,"matHeaderCellDef"],["mat-cell","","class","pl-4",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],["mat-header-cell","",1,"pl-4","pr-3"],["fxLayoutAlign","end center"],["mat-cell","",1,"pl-4"],["mat-stroked-button","","color","primary","type","button","tabindex","4",3,"click"],["mat-header-row",""],["mat-row",""]],template:function(e,i){if(1&e){const o=t.EpF();t.TgZ(0,"div",0)(1,"form",1,2),t.NdJ("ngSubmit",function(){return t.CHM(o),t.MAs(2).form.valid&&i.onQueryRoutes()}),t.TgZ(3,"div",3),t._UZ(4,"fa-icon",4),t.TgZ(5,"span"),t._uU(6,"The actual routing fee on a payment can be different from the fee shown on query routes."),t.qZA()(),t.TgZ(7,"mat-form-field",5)(8,"input",6,7),t.NdJ("ngModelChange",function(c){return i.nodeId=c}),t.qZA(),t.YNc(10,cl,2,0,"mat-error",8),t.qZA(),t.TgZ(11,"mat-form-field",9)(12,"input",10),t.NdJ("ngModelChange",function(c){return i.amount=c}),t.qZA(),t.YNc(13,ul,2,0,"mat-error",8),t.qZA(),t.TgZ(14,"div",11)(15,"button",12),t.NdJ("click",function(){return i.resetData()}),t._uU(16,"Clear"),t.qZA(),t.TgZ(17,"button",13),t._uU(18,"Query Route"),t.qZA()()(),t.TgZ(19,"div",14)(20,"div",15),t._UZ(21,"fa-icon",16),t.TgZ(22,"span",17),t._uU(23,"Transaction Route"),t.qZA()()(),t.YNc(24,pl,1,0,"mat-progress-bar",18),t.TgZ(25,"div",19)(26,"div",0),t.YNc(27,vl,24,11,"div",20),t.qZA()()()}2&e&&(t.xp6(4),t.Q6J("icon",i.faExclamationTriangle),t.xp6(4),t.Q6J("ngModel",i.nodeId),t.xp6(2),t.Q6J("ngIf",!i.nodeId),t.xp6(2),t.Q6J("ngModel",i.amount)("step",1e3)("min",0),t.xp6(1),t.Q6J("ngIf",!i.amount),t.xp6(8),t.Q6J("icon",i.faRoute),t.xp6(3),t.Q6J("ngIf",!0===i.flgLoading[0]),t.xp6(3),t.Q6J("ngForOf",i.allQRoutes))},directives:[p.xw,p.yH,m._Y,m.JL,m.F,p.Wh,q.BN,y.KE,M.Nt,m.Fj,m.Q7,m.JJ,m.On,u.O5,y.TO,m.wV,m.qQ,K.q,F.lW,J.pW,u.sg,z.ib,z.yz,z.yK,z.u4,H.$V,r.BZ,u.mk,E.oO,r.w1,r.fO,r.ge,r.Dz,r.ev,r.as,r.XQ,r.nj,r.Gk],pipes:[u.JJ],styles:[".mat-column-actions[_ngcontent-%COMP%]{flex:0 0 5%;width:5%}.mat-column-pubkey_alias[_ngcontent-%COMP%]{flex:1 1 25%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"]}),n})();function Tl(n,a){1&n&&t._UZ(0,"mat-progress-bar",29)}function bl(n,a){1&n&&(t.TgZ(0,"th",30),t._uU(1," State "),t.qZA())}function Al(n,a){if(1&n&&(t.TgZ(0,"span",36),t._UZ(1,"fa-icon",37),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("icon",e.faEyeSlash)}}function Sl(n,a){if(1&n&&(t.TgZ(0,"span",38),t._UZ(1,"fa-icon",37),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("icon",e.faEye)}}const Ot=function(n){return{"max-width":n}};function Zl(n,a){if(1&n&&(t.TgZ(0,"td",31)(1,"div",32),t.YNc(2,Al,2,1,"span",33),t.YNc(3,Sl,2,1,"span",34),t.TgZ(4,"span",35),t._uU(5),t.ALo(6,"titlecase"),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw();t.xp6(1),t.Q6J("ngStyle",t.VKq(6,Ot,i.screenSize===i.screenSizeEnum.XS?"10rem":"20rem")),t.xp6(1),t.Q6J("ngIf",0===e.channelFlags),t.xp6(1),t.Q6J("ngIf",0!==e.channelFlags),t.xp6(2),t.Oqu(t.lcZ(6,4,null==e?null:e.state))}}function wl(n,a){1&n&&(t.TgZ(0,"th",30),t._uU(1," Short Channel ID "),t.qZA())}function El(n,a){if(1&n&&(t.TgZ(0,"td",31),t._uU(1),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Oqu(null==e?null:e.shortChannelId)}}function Il(n,a){1&n&&(t.TgZ(0,"th",30),t._uU(1," Alias "),t.qZA())}function Ol(n,a){if(1&n&&(t.TgZ(0,"td",31)(1,"div",32)(2,"span",35),t._uU(3),t.qZA()()()),2&n){const e=a.$implicit,i=t.oxw();t.xp6(1),t.Q6J("ngStyle",t.VKq(2,Ot,i.screenSize===i.screenSizeEnum.XS?"10rem":"20rem")),t.xp6(2),t.Oqu(e.alias)}}function Fl(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1," Local Balance (Sats) "),t.qZA())}function ql(n,a){if(1&n&&(t.TgZ(0,"td",31)(1,"span",40),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.xi3(3,1,null==e?null:e.toLocal,"1.0-0")," ")}}function Rl(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1," Remote Balance (Sats) "),t.qZA())}function Nl(n,a){if(1&n&&(t.TgZ(0,"td",31)(1,"span",40),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.hij(" ",t.xi3(3,1,null==e?null:e.toRemote,"1.0-0")," ")}}function kl(n,a){1&n&&(t.TgZ(0,"th",41),t._uU(1,"Balance Score "),t.qZA())}function Pl(n,a){if(1&n&&(t.TgZ(0,"td",42)(1,"div",43)(2,"mat-hint",44),t._uU(3),t.ALo(4,"number"),t.qZA()(),t._UZ(5,"mat-progress-bar",45),t.qZA()),2&n){const e=a.$implicit;t.xp6(3),t.Oqu(t.lcZ(4,2,(null==e?null:e.balancedness)||0)),t.xp6(2),t.s9C("value",e.toLocal&&e.toLocal>0?+e.toLocal/(+e.toLocal+ +e.toRemote)*100:0)}}function Dl(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"th",46)(1,"div",47)(2,"mat-select",48),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",49),t.NdJ("click",function(){return t.CHM(e),t.oxw().onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}function Ul(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",50)(1,"div",51)(2,"mat-select",52),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",49),t.NdJ("click",function(o){const c=t.CHM(e).$implicit;return t.oxw().onChannelClick(c,o)}),t._uU(5,"View Info"),t.qZA(),t.TgZ(6,"mat-option",49),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().onChannelClose(s,!0)}),t._uU(7,"Force Close"),t.qZA()()()()}}function Ml(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No inactive channel available."),t.qZA())}function Jl(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting inactive channels..."),t.qZA())}function Ql(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.errorMessage)}}function Yl(n,a){if(1&n&&(t.TgZ(0,"td",53),t.YNc(1,Ml,2,0,"p",54),t.YNc(2,Jl,2,0,"p",54),t.YNc(3,Ql,2,1,"p",54),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.channels&&e.channels.data)||(null==e.channels||null==e.channels.data?null:e.channels.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const Hl=function(n){return{"display-none":n}};function Bl(n,a){if(1&n&&t._UZ(0,"tr",55),2&n){const e=t.oxw();t.Q6J("ngClass",t.VKq(1,Hl,(null==e.channels?null:e.channels.data)&&(null==e.channels||null==e.channels.data?null:e.channels.data.length)>0))}}function zl(n,a){1&n&&t._UZ(0,"tr",56)}function Vl(n,a){1&n&&t._UZ(0,"tr",57)}const Gl=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},Xl=function(){return["no_channel"]};let $l=(()=>{class n{constructor(e,i,o,s){this.logger=e,this.store=i,this.rtlEffects=o,this.commonService=s,this.faEye=L.Mdf,this.faEyeSlash=L.Aq,this.totalBalance=0,this.displayedColumns=[],this.myChanPolicy={},this.information={},this.numPeers=-1,this.feeRateTypes=l.vn,this.selFilter="",this.flgSticky=!1,this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS||this.screenSize===l.cu.SM?(this.flgSticky=!1,this.displayedColumns=["state","alias","toLocal","toRemote","actions"]):this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["state","shortChannelId","alias","toLocal","toRemote","actions"]):(this.flgSticky=!0,this.displayedColumns=["state","shortChannelId","alias","toLocal","toRemote","balancedness","actions"])}ngOnInit(){this.store.select(C.Xz).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.inactiveChannels=e.inactiveChannels,this.loadChannelsTable(),this.logger.info(e)}),this.store.select(C.yD).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.store.select(C.Bo).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.numPeers=e.peers&&e.peers.length?e.peers.length:0}),this.store.select(C.kY).pipe((0,_.R)(this.unSubs[3])).subscribe(e=>{this.totalBalance=e.onchainBalance.total||0})}ngAfterViewInit(){this.inactiveChannels.length>0&&this.loadChannelsTable()}onChannelClose(e,i){this.store.dispatch((0,Z.c1)({payload:{data:{type:l.n_.CONFIRM,alertTitle:i?"Force Close Channel":"Close Channel",titleMessage:i?"Force closing channel: "+(e.alias||e.shortChannelId?e.alias&&e.shortChannelId?e.alias+" ("+e.shortChannelId+")":e.alias?e.alias:e.shortChannelId:e.channelId):"Closing channel: "+(e.alias||e.shortChannelId?e.alias&&e.shortChannelId?e.alias+" ("+e.shortChannelId+")":e.alias?e.alias:e.shortChannelId:e.channelId),noBtnText:"Cancel",yesBtnText:i?"Force Close":"Close Channel"}}})),this.rtlEffects.closeConfirm.pipe((0,_.R)(this.unSubs[4])).subscribe(h=>{h&&this.store.dispatch((0,k.BL)({payload:{channelId:e.channelId||"",force:i}}))})}applyFilter(){this.channels.filter=this.selFilter.trim().toLocaleLowerCase()}onChannelClick(e,i){this.store.dispatch((0,Z.qR)({payload:{data:{channel:e,channelsType:"inactive",component:rt}}}))}loadChannelsTable(){this.inactiveChannels.sort((e,i)=>e.alias===i.alias?0:i.alias?1:-1),this.channels=new r.by([...this.inactiveChannels]),this.channels.sort=this.sort,this.channels.sortingDataAccessor=(e,i)=>e[i]&&isNaN(e[i])?e[i].toLocaleLowerCase():e[i]?+e[i]:null,this.channels.filterPredicate=(e,i)=>JSON.stringify(e).toLowerCase().includes(i),this.channels.paginator=this.paginator,this.applyFilter(),this.logger.info(this.channels)}onDownloadCSV(){this.channels.data&&this.channels.data.length>0&&this.commonService.downloadFile(this.channels.data,"InactiveChannels")}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(w.yh),t.Y36(tt.V),t.Y36(N.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-channel-inactive-table"]],viewQuery:function(e,i){if(1&e&&(t.Gf(A.YE,5),t.Gf(S.NW,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.sort=o.first),t.iGM(o=t.CRH())&&(i.paginator=o.first)}},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Channels")}])],decls:36,vars:14,consts:[["fxLayout","column",1,"padding-gap"],["fxLayout","column","fxLayout.gt-xs","row","fxLayoutAlign.gt-xs","start center","fxLayoutAlign","start stretch",1,"page-sub-title-container"],["fxFlex","70"],["fxFlex","30"],["matInput","","name","filter","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","column","fxLayoutAlign","start center","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",3,"dataSource","ngClass"],["table",""],["matColumnDef","state"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","shortChannelId"],["matColumnDef","alias"],["matColumnDef","toLocal"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["matColumnDef","toRemote"],["matColumnDef","balancedness"],["mat-header-cell","","mat-sort-header","","class","pl-3",4,"matHeaderCellDef"],["mat-cell","","class","pl-3",4,"matCellDef"],["matColumnDef","actions"],["mat-header-cell","","class","pl-1",4,"matHeaderCellDef"],["mat-cell","","class","pl-1","fxLayoutAlign","end center",4,"matCellDef"],["matColumnDef","no_channel"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],[1,"ellipsis-parent",3,"ngStyle"],["class","mr-1","matTooltip","Private","matTooltipPosition","right",4,"ngIf"],["class","mr-1","matTooltip","Public","matTooltipPosition","right",4,"ngIf"],[1,"ellipsis-child"],["matTooltip","Private","matTooltipPosition","right",1,"mr-1"],[3,"icon"],["matTooltip","Public","matTooltipPosition","right",1,"mr-1"],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["fxLayoutAlign","end center"],["mat-header-cell","","mat-sort-header","",1,"pl-3"],["mat-cell","",1,"pl-3"],["fxLayout","row"],["fxFlex","100","fxLayoutAlign","center center",1,"font-size-80"],["mode","determinate",3,"value"],["mat-header-cell","",1,"pl-1"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",1,"pl-1"],["fxLayoutAlign","center center",1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","2",1,"mr-0"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"div",1),t._UZ(2,"div",2),t.TgZ(3,"mat-form-field",3)(4,"input",4),t.NdJ("keyup",function(){return i.applyFilter()})("ngModelChange",function(s){return i.selFilter=s}),t.qZA()()(),t.TgZ(5,"div",5),t.YNc(6,Tl,1,0,"mat-progress-bar",6),t.TgZ(7,"table",7,8),t.ynx(9,9),t.YNc(10,bl,2,0,"th",10),t.YNc(11,Zl,7,8,"td",11),t.BQk(),t.ynx(12,12),t.YNc(13,wl,2,0,"th",10),t.YNc(14,El,2,1,"td",11),t.BQk(),t.ynx(15,13),t.YNc(16,Il,2,0,"th",10),t.YNc(17,Ol,4,4,"td",11),t.BQk(),t.ynx(18,14),t.YNc(19,Fl,2,0,"th",15),t.YNc(20,ql,4,4,"td",11),t.BQk(),t.ynx(21,16),t.YNc(22,Rl,2,0,"th",15),t.YNc(23,Nl,4,4,"td",11),t.BQk(),t.ynx(24,17),t.YNc(25,kl,2,0,"th",18),t.YNc(26,Pl,6,4,"td",19),t.BQk(),t.ynx(27,20),t.YNc(28,Dl,6,0,"th",21),t.YNc(29,Ul,8,0,"td",22),t.BQk(),t.ynx(30,23),t.YNc(31,Yl,4,3,"td",24),t.BQk(),t.YNc(32,Bl,1,3,"tr",25),t.YNc(33,zl,1,0,"tr",26),t.YNc(34,Vl,1,0,"tr",27),t.qZA()(),t._UZ(35,"mat-paginator",28),t.qZA()),2&e&&(t.xp6(4),t.Q6J("ngModel",i.selFilter),t.xp6(2),t.Q6J("ngIf",i.apiCallStatus.status===i.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",i.channels)("ngClass",t.VKq(11,Gl,""!==i.errorMessage)),t.xp6(25),t.Q6J("matFooterRowDef",t.DdM(13,Xl)),t.xp6(1),t.Q6J("matHeaderRowDef",i.displayedColumns)("matHeaderRowDefSticky",i.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",i.displayedColumns),t.xp6(1),t.Q6J("pageSize",i.pageSize)("pageSizeOptions",i.pageSizeOptions)("showFirstLastButtons",i.screenSize!==i.screenSizeEnum.XS))},directives:[p.xw,p.Wh,p.yH,y.KE,M.Nt,m.Fj,m.JJ,m.On,H.$V,u.O5,J.pW,r.BZ,A.YE,u.mk,E.oO,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,u.PC,E.Zl,X.gM,q.BN,y.bx,D.gD,D.$L,B.ey,r.mD,r.yh,r.Ke,r.Q2,r.as,r.XQ,r.nj,r.Gk,S.NW],pipes:[u.rS,u.JJ],styles:[".mat-column-state[_ngcontent-%COMP%]{flex:0 0 15%;width:15%}.mat-column-state[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%]{display:flex}.mat-column-alias[_ngcontent-%COMP%]{flex:0 0 15%;width:15%}.mat-column-alias[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%]{display:flex}.mat-column-balancedness[_ngcontent-%COMP%]{padding-left:3rem;flex:0 0 20%;width:20%}.mat-column-shortChannelId[_ngcontent-%COMP%], .mat-column-toLocal[_ngcontent-%COMP%], .mat-column-toRemote[_ngcontent-%COMP%]{flex:1 1 15%;width:15%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media only screen and (max-width: 37.5em){.mat-column-shortChannelId[_ngcontent-%COMP%], .mat-column-toLocal[_ngcontent-%COMP%], .mat-column-toRemote[_ngcontent-%COMP%]{white-space:unset}}.mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}.mat-column-actions[_ngcontent-%COMP%] .bordered-box.table-actions-select[_ngcontent-%COMP%]{flex:0 0 100%}@media only screen and (max-width: 37.5em){.mat-column-actions[_ngcontent-%COMP%] .bordered-box.table-actions-select[_ngcontent-%COMP%]{flex:0 0 80%}}"]}),n})();var Wl=f(9445);function Kl(n,a){if(1&n&&(t.TgZ(0,"div",5),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.errorMessage)}}function jl(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t._UZ(1,"div",7),t.TgZ(2,"mat-form-field",8)(3,"input",9),t.NdJ("ngModelChange",function(o){return t.CHM(e),t.oxw().filterValue=o})("input",function(){return t.CHM(e),t.oxw().applyFilter()})("keyup",function(){return t.CHM(e),t.oxw().applyFilter()}),t.qZA()()()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngModel",e.filterValue)}}function tr(n,a){1&n&&t._UZ(0,"mat-progress-bar",32)}function er(n,a){1&n&&(t.TgZ(0,"th",33),t._uU(1,"Date/Time"),t.qZA())}const nr=function(n){return{"ml-0":n}};function ir(n,a){if(1&n&&(t._UZ(0,"span",36),t.ALo(1,"camelcase")),2&n){const e=t.oxw().$implicit,i=t.oxw(2);t.s9C("matTooltip",t.lcZ(1,2,null==e?null:e.type)),t.Q6J("ngClass",t.VKq(4,nr,i.screenSize===i.screenSizeEnum.XS))}}function ar(n,a){if(1&n&&(t.TgZ(0,"td",34),t.YNc(1,ir,2,6,"span",35),t._uU(2),t.ALo(3,"date"),t.qZA()),2&n){const e=a.$implicit;t.xp6(1),t.Q6J("ngIf","payment-relayed"!==(null==e?null:e.type)),t.xp6(1),t.hij(" ",t.xi3(3,2,null==e?null:e.timestamp,"dd/MMM/y HH:mm")," ")}}function or(n,a){1&n&&(t.TgZ(0,"th",33),t._uU(1,"In Channel"),t.qZA())}const Ft=function(n){return{"max-width":n}};function sr(n,a){if(1&n&&(t.TgZ(0,"td",37),t._uU(1),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(2);t.Q6J("ngStyle",t.VKq(2,Ft,i.screenSize===i.screenSizeEnum.XS?"10rem":"20rem")),t.xp6(1),t.Oqu(null==e?null:e.fromChannelAlias)}}function lr(n,a){1&n&&(t.TgZ(0,"th",33),t._uU(1,"Out Channel"),t.qZA())}function rr(n,a){if(1&n&&(t.TgZ(0,"td",37),t._uU(1),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(2);t.Q6J("ngStyle",t.VKq(2,Ft,i.screenSize===i.screenSizeEnum.XS?"10rem":"20rem")),t.xp6(1),t.Oqu(null==e?null:e.toChannelAlias)}}function cr(n,a){1&n&&(t.TgZ(0,"th",38),t._uU(1,"Amount In (Sats)"),t.qZA())}function ur(n,a){if(1&n&&(t.TgZ(0,"td",34)(1,"span",39),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,null==e?null:e.amountIn))}}function pr(n,a){1&n&&(t.TgZ(0,"th",38),t._uU(1,"Amount Out (Sats)"),t.qZA())}function mr(n,a){if(1&n&&(t.TgZ(0,"td",34)(1,"span",39),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,null==e?null:e.amountOut))}}function dr(n,a){1&n&&(t.TgZ(0,"th",38),t._uU(1,"Fee Earned (Sats)"),t.qZA())}function hr(n,a){if(1&n&&(t.TgZ(0,"td",34)(1,"span",39),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,(null==e?null:e.amountIn)-(null==e?null:e.amountOut)))}}function _r(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"th",40)(1,"div",41)(2,"mat-select",42),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",43),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}function fr(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"td",44)(1,"button",45),t.NdJ("click",function(o){const c=t.CHM(e).$implicit;return t.oxw(2).onForwardingEventClick(c,o)}),t._uU(2,"View Info"),t.qZA()()}}function gr(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No forwarding history available."),t.qZA())}function Cr(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting forwarding history..."),t.qZA())}function xr(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.errorMessage)}}function yr(n,a){if(1&n&&(t.TgZ(0,"td",46),t.YNc(1,gr,2,0,"p",47),t.YNc(2,Cr,2,0,"p",47),t.YNc(3,xr,2,1,"p",47),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",(!(null!=e.forwardingHistoryEvents&&e.forwardingHistoryEvents.data)||(null==e.forwardingHistoryEvents||null==e.forwardingHistoryEvents.data?null:e.forwardingHistoryEvents.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.forwardingHistoryEvents&&e.forwardingHistoryEvents.data)||(null==e.forwardingHistoryEvents||null==e.forwardingHistoryEvents.data?null:e.forwardingHistoryEvents.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.forwardingHistoryEvents&&e.forwardingHistoryEvents.data)||(null==e.forwardingHistoryEvents||null==e.forwardingHistoryEvents.data?null:e.forwardingHistoryEvents.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const vr=function(n){return{"display-none":n}};function Lr(n,a){if(1&n&&t._UZ(0,"tr",48),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,vr,(null==e.forwardingHistoryEvents?null:e.forwardingHistoryEvents.data)&&(null==e.forwardingHistoryEvents||null==e.forwardingHistoryEvents.data?null:e.forwardingHistoryEvents.data.length)>0))}}function Tr(n,a){1&n&&t._UZ(0,"tr",49)}function br(n,a){1&n&&t._UZ(0,"tr",50)}const Ar=function(){return["no_event"]};function Sr(n,a){if(1&n&&(t.TgZ(0,"div",10),t.YNc(1,tr,1,0,"mat-progress-bar",11),t.TgZ(2,"table",12,13),t.ynx(4,14),t.YNc(5,er,2,0,"th",15),t.YNc(6,ar,4,5,"td",16),t.BQk(),t.ynx(7,17),t.YNc(8,or,2,0,"th",15),t.YNc(9,sr,2,4,"td",18),t.BQk(),t.ynx(10,19),t.YNc(11,lr,2,0,"th",15),t.YNc(12,rr,2,4,"td",18),t.BQk(),t.ynx(13,20),t.YNc(14,cr,2,0,"th",21),t.YNc(15,ur,4,3,"td",16),t.BQk(),t.ynx(16,22),t.YNc(17,pr,2,0,"th",21),t.YNc(18,mr,4,3,"td",16),t.BQk(),t.ynx(19,23),t.YNc(20,dr,2,0,"th",21),t.YNc(21,hr,4,3,"td",16),t.BQk(),t.ynx(22,24),t.YNc(23,_r,6,0,"th",25),t.YNc(24,fr,3,0,"td",26),t.BQk(),t.ynx(25,27),t.YNc(26,yr,4,3,"td",28),t.BQk(),t.YNc(27,Lr,1,3,"tr",29),t.YNc(28,Tr,1,0,"tr",30),t.YNc(29,br,1,0,"tr",31),t.qZA()()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",e.forwardingHistoryEvents),t.xp6(25),t.Q6J("matFooterRowDef",t.DdM(6,Ar)),t.xp6(1),t.Q6J("matHeaderRowDef",e.displayedColumns)("matHeaderRowDefSticky",e.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",e.displayedColumns)}}function Zr(n,a){if(1&n&&t._UZ(0,"mat-paginator",51),2&n){const e=t.oxw();t.Q6J("pageSize",e.pageSize)("pageSizeOptions",e.pageSizeOptions)("showFirstLastButtons",e.screenSize!==e.screenSizeEnum.XS)}}let qt=(()=>{class n{constructor(e,i,o,s){this.logger=e,this.commonService=i,this.store=o,this.datePipe=s,this.eventsData=[],this.filterValue="",this.displayedColumns=[],this.flgSticky=!1,this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["timestamp","amountIn","actions"]):this.screenSize===l.cu.SM?(this.flgSticky=!1,this.displayedColumns=["timestamp","amountIn","fee","actions"]):this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["timestamp","amountIn","amountOut","fee","actions"]):(this.flgSticky=!0,this.displayedColumns=["timestamp","fromChannelAlias","toChannelAlias","amountIn","amountOut","fee","actions"])}ngOnInit(){this.store.select(C.PP).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{0===this.eventsData.length&&(this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.eventsData=e.payments&&e.payments.relayed?e.payments.relayed:[],this.eventsData.length>0&&this.sort&&this.paginator&&this.loadForwardingEventsTable(this.eventsData),this.logger.info(this.eventsData))})}ngAfterViewInit(){this.eventsData.length>0&&this.loadForwardingEventsTable(this.eventsData)}ngOnChanges(e){e.eventsData&&(this.apiCallStatus={status:l.Bn.COMPLETED,action:"FetchPayments"},this.eventsData=e.eventsData.currentValue,e.eventsData.firstChange||this.loadForwardingEventsTable(this.eventsData)),e.filterValue&&!e.filterValue.firstChange&&this.applyFilter()}onForwardingEventClick(e,i){const o=[[{key:"paymentHash",value:e.paymentHash,title:"Payment Hash",width:100,type:l.Gi.STRING}],[{key:"timestamp",value:Math.round((e.timestamp||0)/1e3),title:"Date/Time",width:50,type:l.Gi.DATE_TIME},{key:"fee",value:(e.amountIn||0)-(e.amountOut||0),title:"Fee Earned (Sats)",width:50,type:l.Gi.NUMBER}],[{key:"amountIn",value:e.amountIn,title:"Amount In (Sats)",width:50,type:l.Gi.NUMBER},{key:"amountOut",value:e.amountOut,title:"Amount Out (Sats)",width:50,type:l.Gi.NUMBER}],[{key:"fromChannelAlias",value:e.fromChannelAlias,title:"From Channel Alias",width:50,type:l.Gi.STRING},{key:"fromShortChannelId",value:e.fromShortChannelId,title:"From Short Channel ID",width:50,type:l.Gi.STRING}],[{key:"fromChannelId",value:e.fromChannelId,title:"From Channel Id",width:100,type:l.Gi.STRING}],[{key:"toChannelAlias",value:e.toChannelAlias,title:"To Channel Alias",width:50,type:l.Gi.STRING},{key:"toShortChannelId",value:e.toShortChannelId,title:"To Short Channel ID",width:50,type:l.Gi.STRING}],[{key:"toChannelId",value:e.toChannelId,title:"To Channel Id",width:100,type:l.Gi.STRING}]];"payment-relayed"!==e.type&&(null==o||o.unshift([{key:"type",value:this.commonService.camelCase(e.type),title:"Relay Type",width:100,type:l.Gi.STRING}])),this.store.dispatch((0,Z.qR)({payload:{data:{type:l.n_.INFORMATION,alertTitle:"Event Information",message:o}}}))}loadForwardingEventsTable(e){this.forwardingHistoryEvents=new r.by([...e]),this.forwardingHistoryEvents.sort=this.sort,this.forwardingHistoryEvents.sortingDataAccessor=(i,o)=>"fee"===o?i.amountIn-i.amountOut:i[o]&&isNaN(i[o])?i[o].toLocaleLowerCase():i[o]?+i[o]:null,this.forwardingHistoryEvents.filterPredicate=(i,o)=>{var s;return((i.timestamp?null===(s=this.datePipe.transform(new Date(i.timestamp),"dd/MMM/YYYY HH:mm"))||void 0===s?void 0:s.toLowerCase():"")+JSON.stringify(i).toLowerCase()).includes(o)},this.forwardingHistoryEvents.paginator=this.paginator,this.applyFilter(),this.logger.info(this.forwardingHistoryEvents)}onDownloadCSV(){this.forwardingHistoryEvents&&this.forwardingHistoryEvents.data&&this.forwardingHistoryEvents.data.length>0&&this.commonService.downloadFile(this.forwardingHistoryEvents.data,"Forwarding-history")}applyFilter(){this.forwardingHistoryEvents&&(this.forwardingHistoryEvents.filter=this.filterValue.trim().toLowerCase())}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(N.v),t.Y36(w.yh),t.Y36(u.uU))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-forwarding-history"]],viewQuery:function(e,i){if(1&e&&(t.Gf(A.YE,5),t.Gf(S.NW,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.sort=o.first),t.iGM(o=t.CRH())&&(i.paginator=o.first)}},inputs:{eventsData:"eventsData",filterValue:"filterValue"},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Events")}]),t.TTD],decls:5,vars:4,consts:[["fxLayout","column","fxLayoutAlign","start stretch",1,"padding-gap-x"],["class","p-2 error-border my-2",4,"ngIf"],["fxLayout","column","fxLayout.gt-xs","row","fxLayoutAlign.gt-xs","start center","fxLayoutAlign","start stretch","class","page-sub-title-container",4,"ngIf"],["fxLayout","column","fxLayoutAlign","start center","fxFlex","100","class","table-container",3,"perfectScrollbar",4,"ngIf"],["class","mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons",4,"ngIf"],[1,"p-2","error-border","my-2"],["fxLayout","column","fxLayout.gt-xs","row","fxLayoutAlign.gt-xs","start center","fxLayoutAlign","start stretch",1,"page-sub-title-container"],["fxFlex","70"],["fxFlex","30"],["matInput","","name","filter","placeholder","Filter",3,"ngModel","ngModelChange","input","keyup"],["fxLayout","column","fxLayoutAlign","start center","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",1,"overflow-auto",3,"dataSource"],["table",""],["matColumnDef","timestamp"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","fromChannelAlias"],["mat-cell","",3,"ngStyle",4,"matCellDef"],["matColumnDef","toChannelAlias"],["matColumnDef","amountIn"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["matColumnDef","amountOut"],["matColumnDef","fee"],["matColumnDef","actions"],["mat-header-cell","","class","px-3",4,"matHeaderCellDef"],["mat-cell","","class","px-3","fxLayoutAlign","end center",4,"matCellDef"],["matColumnDef","no_event"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["class","dot yellow","matTooltipPosition","right",3,"matTooltip","ngClass",4,"ngIf"],["matTooltipPosition","right",1,"dot","yellow",3,"matTooltip","ngClass"],["mat-cell","",3,"ngStyle"],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["fxLayoutAlign","end center"],["mat-header-cell","",1,"px-3"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",1,"px-3"],["mat-stroked-button","","color","primary","type","button","tabindex","4",3,"click"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Kl,2,1,"div",1),t.YNc(2,jl,4,1,"div",2),t.YNc(3,Sr,30,7,"div",3),t.YNc(4,Zr,1,3,"mat-paginator",4),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",""!==i.errorMessage),t.xp6(1),t.Q6J("ngIf",""===i.errorMessage),t.xp6(1),t.Q6J("ngIf",""===i.errorMessage),t.xp6(1),t.Q6J("ngIf",""===i.errorMessage))},directives:[p.xw,p.Wh,u.O5,p.yH,y.KE,M.Nt,m.Fj,m.JJ,m.On,H.$V,J.pW,r.BZ,A.YE,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,X.gM,u.mk,E.oO,u.PC,E.Zl,D.gD,D.$L,B.ey,F.lW,r.mD,r.yh,r.Ke,r.Q2,r.as,r.XQ,r.nj,r.Gk,S.NW],pipes:[Wl.h9,u.uU,u.JJ],styles:[".mat-column-fromAlias[_ngcontent-%COMP%]{padding-left:2rem;flex:1 1 20%;width:20%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-column-toAlias[_ngcontent-%COMP%]{padding-left:1rem;flex:1 1 20%;width:20%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})();const wr=["tableIn"],Er=["tableOut"],Ir=["paginatorIn"],Or=["paginatorOut"];function Fr(n,a){if(1&n&&(t.TgZ(0,"div",3),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.errorMessage)}}function qr(n,a){1&n&&t._UZ(0,"mat-progress-bar",36)}function Rr(n,a){1&n&&(t.TgZ(0,"th",37),t._uU(1,"Channel ID"),t.qZA())}const nt=function(n){return{"max-width":n}};function Nr(n,a){if(1&n&&(t.TgZ(0,"td",38),t._uU(1),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(2);t.Q6J("ngStyle",t.VKq(2,nt,i.screenSize===i.screenSizeEnum.XS?"5rem":"10rem")),t.xp6(1),t.Oqu(e.channelId)}}function kr(n,a){1&n&&(t.TgZ(0,"th",37),t._uU(1,"Peer Alias"),t.qZA())}function Pr(n,a){if(1&n&&(t.TgZ(0,"td",38),t._uU(1),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(2);t.Q6J("ngStyle",t.VKq(2,nt,i.screenSize===i.screenSizeEnum.XS?"5rem":"10rem")),t.xp6(1),t.Oqu(e.alias)}}function Dr(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1,"Events"),t.qZA())}function Ur(n,a){if(1&n&&(t.TgZ(0,"td",40)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,e.events))}}function Mr(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1,"Amount (Sats)"),t.qZA())}function Jr(n,a){if(1&n&&(t.TgZ(0,"td",40)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,e.totalAmount))}}function Qr(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1,"Fee (Sats)"),t.qZA())}function Yr(n,a){if(1&n&&(t.TgZ(0,"td",40)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,e.totalFee))}}function Hr(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No incoming routing peer available."),t.qZA())}function Br(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting incoming routing peers..."),t.qZA())}function zr(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.errorMessage)}}function Vr(n,a){if(1&n&&(t.TgZ(0,"td",42),t.YNc(1,Hr,2,0,"p",43),t.YNc(2,Br,2,0,"p",43),t.YNc(3,zr,2,1,"p",43),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",(!(null!=e.RoutingPeersIncoming&&e.RoutingPeersIncoming.data)||(null==e.RoutingPeersIncoming||null==e.RoutingPeersIncoming.data?null:e.RoutingPeersIncoming.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.RoutingPeersIncoming&&e.RoutingPeersIncoming.data)||(null==e.RoutingPeersIncoming||null==e.RoutingPeersIncoming.data?null:e.RoutingPeersIncoming.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.RoutingPeersIncoming&&e.RoutingPeersIncoming.data)||(null==e.RoutingPeersIncoming||null==e.RoutingPeersIncoming.data?null:e.RoutingPeersIncoming.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const Rt=function(n){return{"display-none":n}};function Gr(n,a){if(1&n&&t._UZ(0,"tr",44),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,Rt,(null==e.RoutingPeersIncoming?null:e.RoutingPeersIncoming.data)&&(null==e.RoutingPeersIncoming||null==e.RoutingPeersIncoming.data?null:e.RoutingPeersIncoming.data.length)>0))}}function Xr(n,a){1&n&&t._UZ(0,"tr",45)}function $r(n,a){1&n&&t._UZ(0,"tr",46)}function Wr(n,a){1&n&&t._UZ(0,"mat-progress-bar",36)}function Kr(n,a){1&n&&(t.TgZ(0,"th",37),t._uU(1,"Channel ID"),t.qZA())}function jr(n,a){if(1&n&&(t.TgZ(0,"td",38),t._uU(1),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(2);t.Q6J("ngStyle",t.VKq(2,nt,i.screenSize===i.screenSizeEnum.XS?"5rem":"10rem")),t.xp6(1),t.Oqu(e.channelId)}}function tc(n,a){1&n&&(t.TgZ(0,"th",37),t._uU(1,"Peer Alias"),t.qZA())}function ec(n,a){if(1&n&&(t.TgZ(0,"td",38),t._uU(1),t.qZA()),2&n){const e=a.$implicit,i=t.oxw(2);t.Q6J("ngStyle",t.VKq(2,nt,i.screenSize===i.screenSizeEnum.XS?"5rem":"10rem")),t.xp6(1),t.Oqu(e.alias)}}function nc(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1,"Events"),t.qZA())}function ic(n,a){if(1&n&&(t.TgZ(0,"td",40)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,e.events))}}function ac(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1,"Amount (Sats)"),t.qZA())}function oc(n,a){if(1&n&&(t.TgZ(0,"td",40)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,e.totalAmount))}}function sc(n,a){1&n&&(t.TgZ(0,"th",39),t._uU(1,"Fee (Sats)"),t.qZA())}function lc(n,a){if(1&n&&(t.TgZ(0,"td",40)(1,"span",41),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=a.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,e.totalFee))}}function rc(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"No outgoing routing peer available."),t.qZA())}function cc(n,a){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting outgoing routing peers..."),t.qZA())}function uc(n,a){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.errorMessage)}}function pc(n,a){if(1&n&&(t.TgZ(0,"td",42),t.YNc(1,rc,2,0,"p",43),t.YNc(2,cc,2,0,"p",43),t.YNc(3,uc,2,1,"p",43),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",(!(null!=e.RoutingPeersOutgoing&&e.RoutingPeersOutgoing.data)||(null==e.RoutingPeersOutgoing||null==e.RoutingPeersOutgoing.data?null:e.RoutingPeersOutgoing.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.RoutingPeersOutgoing&&e.RoutingPeersOutgoing.data)||(null==e.RoutingPeersOutgoing||null==e.RoutingPeersOutgoing.data?null:e.RoutingPeersOutgoing.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.RoutingPeersOutgoing&&e.RoutingPeersOutgoing.data)||(null==e.RoutingPeersOutgoing||null==e.RoutingPeersOutgoing.data?null:e.RoutingPeersOutgoing.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}function mc(n,a){if(1&n&&t._UZ(0,"tr",44),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,Rt,(null==e.RoutingPeersOutgoing?null:e.RoutingPeersOutgoing.data)&&(null==e.RoutingPeersOutgoing||null==e.RoutingPeersOutgoing.data?null:e.RoutingPeersOutgoing.data.length)>0))}}function dc(n,a){1&n&&t._UZ(0,"tr",45)}function hc(n,a){1&n&&t._UZ(0,"tr",46)}const _c=function(n,a){return{"mt-2":n,"mt-1":a}},fc=function(){return["no_incoming_event"]},gc=function(n){return{"mt-2":n}},Cc=function(){return["no_outgoing_event"]};function xc(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",4)(1,"div",5)(2,"div",6)(3,"div",7),t._uU(4,"Incoming"),t.qZA(),t.TgZ(5,"mat-form-field",8)(6,"input",9),t.NdJ("keyup",function(){return t.CHM(e),t.oxw().applyIncomingFilter()})("ngModelChange",function(o){return t.CHM(e),t.oxw().filterIn=o}),t.qZA()()(),t.TgZ(7,"div",10),t.YNc(8,qr,1,0,"mat-progress-bar",11),t.TgZ(9,"table",12,13),t.ynx(11,14),t.YNc(12,Rr,2,0,"th",15),t.YNc(13,Nr,2,4,"td",16),t.BQk(),t.ynx(14,17),t.YNc(15,kr,2,0,"th",15),t.YNc(16,Pr,2,4,"td",16),t.BQk(),t.ynx(17,18),t.YNc(18,Dr,2,0,"th",19),t.YNc(19,Ur,4,3,"td",20),t.BQk(),t.ynx(20,21),t.YNc(21,Mr,2,0,"th",19),t.YNc(22,Jr,4,3,"td",20),t.BQk(),t.ynx(23,22),t.YNc(24,Qr,2,0,"th",19),t.YNc(25,Yr,4,3,"td",20),t.BQk(),t.ynx(26,23),t.YNc(27,Vr,4,3,"td",24),t.BQk(),t.YNc(28,Gr,1,3,"tr",25),t.YNc(29,Xr,1,0,"tr",26),t.YNc(30,$r,1,0,"tr",27),t.qZA()(),t._UZ(31,"mat-paginator",28,29),t.qZA(),t.TgZ(33,"div",30)(34,"div",6)(35,"div",7),t._uU(36,"Outgoing"),t.qZA(),t.TgZ(37,"mat-form-field",8)(38,"input",9),t.NdJ("keyup",function(){return t.CHM(e),t.oxw().applyOutgoingFilter()})("ngModelChange",function(o){return t.CHM(e),t.oxw().filterOut=o}),t.qZA()()(),t.TgZ(39,"div",31),t.YNc(40,Wr,1,0,"mat-progress-bar",11),t.TgZ(41,"table",32,33),t.ynx(43,14),t.YNc(44,Kr,2,0,"th",15),t.YNc(45,jr,2,4,"td",16),t.BQk(),t.ynx(46,17),t.YNc(47,tc,2,0,"th",15),t.YNc(48,ec,2,4,"td",16),t.BQk(),t.ynx(49,18),t.YNc(50,nc,2,0,"th",19),t.YNc(51,ic,4,3,"td",20),t.BQk(),t.ynx(52,21),t.YNc(53,ac,2,0,"th",19),t.YNc(54,oc,4,3,"td",20),t.BQk(),t.ynx(55,22),t.YNc(56,sc,2,0,"th",19),t.YNc(57,lc,4,3,"td",20),t.BQk(),t.ynx(58,34),t.YNc(59,pc,4,3,"td",24),t.BQk(),t.YNc(60,mc,1,3,"tr",25),t.YNc(61,dc,1,0,"tr",26),t.YNc(62,hc,1,0,"tr",27),t.qZA(),t._UZ(63,"mat-paginator",28,35),t.qZA()()()}if(2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngClass",t.WLB(22,_c,e.screenSize===e.screenSizeEnum.XS,e.screenSize===e.screenSizeEnum.SM)),t.xp6(4),t.Q6J("ngModel",e.filterIn),t.xp6(2),t.Q6J("ngIf",e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",e.RoutingPeersIncoming),t.xp6(19),t.Q6J("matFooterRowDef",t.DdM(25,fc)),t.xp6(1),t.Q6J("matHeaderRowDef",e.displayedColumns)("matHeaderRowDefSticky",e.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",e.displayedColumns),t.xp6(1),t.Q6J("pageSize",e.pageSize)("pageSizeOptions",e.pageSizeOptions)("showFirstLastButtons",e.screenSize!==e.screenSizeEnum.XS),t.xp6(3),t.Q6J("ngClass",t.VKq(26,gc,e.screenSize!==e.screenSizeEnum.LG)),t.xp6(4),t.Q6J("ngModel",e.filterOut),t.xp6(2),t.Q6J("ngIf",e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",e.RoutingPeersOutgoing),t.xp6(19),t.Q6J("matFooterRowDef",t.DdM(28,Cc)),t.xp6(1),t.Q6J("matHeaderRowDef",e.displayedColumns)("matHeaderRowDefSticky",e.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",e.displayedColumns),t.xp6(1),t.Q6J("pageSize",e.pageSize)("pageSizeOptions",e.pageSizeOptions)("showFirstLastButtons",e.screenSize!==e.screenSizeEnum.XS)}}let yc=(()=>{class n{constructor(e,i,o){this.logger=e,this.commonService=i,this.store=o,this.routingPeersData=[],this.displayedColumns=[],this.flgSticky=!1,this.pageSize=l.IV,this.pageSizeOptions=l.TJ,this.screenSize="",this.screenSizeEnum=l.cu,this.errorMessage="",this.filterIn="",this.filterOut="",this.apiCallStatus=null,this.apiCallStatusEnum=l.Bn,this.unSubs=[new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===l.cu.XS?(this.flgSticky=!1,this.displayedColumns=["alias","totalFee"]):this.screenSize===l.cu.SM?(this.flgSticky=!1,this.displayedColumns=["alias","events","totalFee"]):this.screenSize===l.cu.MD?(this.flgSticky=!1,this.displayedColumns=["alias","events","totalAmount","totalFee"]):(this.flgSticky=!0,this.displayedColumns=["channelId","alias","events","totalAmount","totalFee"])}ngOnInit(){this.store.select(C.PP).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===l.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.routingPeersData=e.payments&&e.payments.relayed?e.payments.relayed:[],this.routingPeersData.length>0&&this.sortIn&&this.paginatorIn&&this.sortOut&&this.paginatorOut&&this.loadRoutingPeersTable(this.routingPeersData),this.logger.info(e)})}ngAfterViewInit(){this.routingPeersData.length>0&&this.sortIn&&this.paginatorIn&&this.sortOut&&this.paginatorOut&&this.loadRoutingPeersTable(this.routingPeersData)}loadRoutingPeersTable(e){if(e.length>0){const i=this.groupRoutingPeers(e);this.RoutingPeersIncoming=new r.by(i[0]),this.RoutingPeersIncoming.sort=this.sortIn,this.RoutingPeersIncoming.filterPredicate=(o,s)=>JSON.stringify(o).toLowerCase().includes(s),this.RoutingPeersIncoming.paginator=this.paginatorIn,this.logger.info(this.RoutingPeersIncoming),this.RoutingPeersOutgoing=new r.by(i[1]),this.RoutingPeersOutgoing.sort=this.sortOut,this.RoutingPeersOutgoing.filterPredicate=(o,s)=>JSON.stringify(o).toLowerCase().includes(s),this.RoutingPeersOutgoing.paginator=this.paginatorOut,this.logger.info(this.RoutingPeersOutgoing)}else this.RoutingPeersIncoming=new r.by([]),this.RoutingPeersOutgoing=new r.by([]);this.applyIncomingFilter(),this.applyOutgoingFilter()}groupRoutingPeers(e){const i=[],o=[];return e.forEach(s=>{const c=i.find(g=>g.channelId===s.fromChannelId),h=o.find(g=>g.channelId===s.toChannelId);c?(c.events++,c.totalAmount=+c.totalAmount+ +s.amountIn,c.totalFee=s.amountIn-s.amountOut+ +c.totalFee):i.push({channelId:s.fromChannelId,alias:s.fromChannelAlias,events:1,totalAmount:+s.amountIn,totalFee:s.amountIn-s.amountOut}),h?(h.events++,h.totalAmount=+h.totalAmount+ +s.amountOut,h.totalFee=s.amountIn-s.amountOut+ +h.totalFee):o.push({channelId:s.toChannelId,alias:s.toChannelAlias,events:1,totalAmount:+s.amountOut,totalFee:s.amountIn-s.amountOut})}),[this.commonService.sortDescByKey(i,"totalFee"),this.commonService.sortDescByKey(o,"totalFee")]}applyIncomingFilter(){this.RoutingPeersIncoming.filter=this.filterIn.toLowerCase()}applyOutgoingFilter(){this.RoutingPeersOutgoing.filter=this.filterOut.toLowerCase()}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(N.v),t.Y36(w.yh))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-routing-peers"]],viewQuery:function(e,i){if(1&e&&(t.Gf(wr,5,A.YE),t.Gf(Er,5,A.YE),t.Gf(Ir,5),t.Gf(Or,5)),2&e){let o;t.iGM(o=t.CRH())&&(i.sortIn=o.first),t.iGM(o=t.CRH())&&(i.sortOut=o.first),t.iGM(o=t.CRH())&&(i.paginatorIn=o.first),t.iGM(o=t.CRH())&&(i.paginatorOut=o.first)}},features:[t._Bn([{provide:S.ye,useValue:(0,l.pt)("Peers")}])],decls:3,vars:2,consts:[["fxLayout","column","fxLayoutAlign","start stretch",1,"padding-gap"],["class","p-2 error-border my-2",4,"ngIf"],["fxLayout","column","fxLayout.gt-md","row","fxFlex","100","fxLayoutAlign","space-between stretch","class","page-sub-title-container",4,"ngIf"],[1,"p-2","error-border","my-2"],["fxLayout","column","fxLayout.gt-md","row","fxFlex","100","fxLayoutAlign","space-between stretch",1,"page-sub-title-container"],["fxLayout","column","fxFlex","49","fxLayoutAlign","start stretch",1,"mb-4"],["fxLayout","column","fxLayout.gt-sm","row","fxLayoutAlign.gt-sm","space-between center","fxLayoutAlign","start stretch",1,"page-sub-title-container","w-100",3,"ngClass"],["fxFlex","70"],["fxFlex","30"],["matInput","","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","column","fxLayoutAlign","start start","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","matSort","",1,"overflow-auto","incoming-table",3,"dataSource"],["tableIn",""],["matColumnDef","channelId"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",3,"ngStyle",4,"matCellDef"],["matColumnDef","alias"],["matColumnDef","events"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","totalAmount"],["matColumnDef","totalFee"],["matColumnDef","no_incoming_event"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["paginatorIn",""],["fxLayout","column","fxFlex","49","fxLayoutAlign","end stretch",1,"mb-4"],["fxLayout","column","fxLayoutAlign","start end","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mat-table","","matSort","",1,"overflow-auto","outgoing-table",3,"dataSource"],["tableOut",""],["matColumnDef","no_outgoing_event"],["paginatorOut",""],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell","",3,"ngStyle"],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["mat-cell",""],["fxLayoutAlign","end center"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Fr,2,1,"div",1),t.YNc(2,xc,65,29,"div",2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",""!==i.errorMessage),t.xp6(1),t.Q6J("ngIf",""===i.errorMessage))},directives:[p.xw,p.Wh,u.O5,p.yH,u.mk,E.oO,y.KE,M.Nt,m.Fj,m.JJ,m.On,H.$V,J.pW,r.BZ,A.YE,r.w1,r.fO,r.ge,A.nU,r.Dz,r.ev,u.PC,E.Zl,r.mD,r.yh,r.Ke,r.Q2,r.as,r.XQ,r.nj,r.Gk,S.NW],pipes:[u.JJ],styles:[".mat-column-channelId[_ngcontent-%COMP%], .mat-column-alias[_ngcontent-%COMP%]{flex:1 1 10%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"]}),n})();function vc(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",7),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().activeLink=s.link}),t._uU(1),t.qZA()}if(2&n){const e=a.$implicit,i=t.oxw();t.s9C("routerLink",e.link),t.Q6J("active",i.activeLink===e.link),t.xp6(1),t.Oqu(e.name)}}let Lc=(()=>{class n{constructor(e){this.router=e,this.faChartBar=L.koM,this.links=[{link:"routingreport",name:"Routing"},{link:"transactions",name:"Transactions"}],this.activeLink=this.links[0].link,this.unSubs=[new d.x,new d.x,new d.x,new d.x]}ngOnInit(){const e=this.links.find(i=>this.router.url.includes(i.link));this.activeLink=e?e.link:this.links[0].link,this.router.events.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(i=>i instanceof x.Av)).subscribe({next:i=>{const o=this.links.find(s=>i.urlAfterRedirects.includes(s.link));this.activeLink=o?o.link:this.links[0].link}})}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-reports"]],decls:10,vars:2,consts:[["fxLayout","row","fxLayoutAlign","start center",1,"page-title-container"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxLayout","column",1,"padding-gap-x"],["fxLayout","column"],["mat-tab-nav-bar",""],["role","tab","mat-tab-link","","class","mat-tab-label",3,"active","routerLink","click",4,"ngFor","ngForOf"],["role","tab","mat-tab-link","",1,"mat-tab-label",3,"active","routerLink","click"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"fa-icon",1),t.TgZ(2,"span",2),t._uU(3,"Reports"),t.qZA()(),t.TgZ(4,"div",3)(5,"mat-card")(6,"mat-card-content",4)(7,"nav",5),t.YNc(8,vc,2,3,"div",6),t.qZA(),t._UZ(9,"router-outlet"),t.qZA()()()),2&e&&(t.xp6(1),t.Q6J("icon",i.faChartBar),t.xp6(7),t.Q6J("ngForOf",i.links))},directives:[p.xw,p.Wh,q.BN,b.a8,b.dn,P.BU,u.sg,P.Nj,x.rH,x.lC],styles:[""]}),n})();var Nt=f(7772),kt=f(7671),Pt=f(1210);function Tc(n,a){if(1&n&&(t.TgZ(0,"div",13),t._uU(1),t.ALo(2,"number"),t.ALo(3,"number"),t.qZA()),2&n){const e=t.oxw();t.Q6J("@fadeIn",e.totalFeeSat),t.xp6(1),t.AsE("",t.xi3(2,3,e.totalFeeSat||0,"1.0-2")," Sats/",t.lcZ(3,6,e.filteredEventsBySelectedPeriod.length||0)," Events")}}function bc(n,a){1&n&&(t.TgZ(0,"div",14),t._uU(1,"No routing report for the selected period"),t.qZA())}function Ac(n,a){if(1&n&&(t.TgZ(0,"span")(1,"span",17),t._uU(2),t.ALo(3,"number"),t.qZA(),t.TgZ(4,"span",17),t._uU(5),t.ALo(6,"number"),t.qZA()()),2&n){const e=a.model,i=t.oxw(2);t.xp6(2),t.hij("Events: ",t.lcZ(3,2,(i.selReportBy===i.reportBy.EVENTS?e.value:e.extra.totalEvents)||0),""),t.xp6(3),t.hij("Fee: ",t.xi3(6,4,(i.selReportBy===i.reportBy.EVENTS?e.extra.totalFees:e.value)||0,"1.0-2"),"")}}function Sc(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"ngx-charts-bar-vertical",15),t.NdJ("select",function(o){return t.CHM(e),t.oxw().onChartBarSelected(o)})("mouseup",function(o){return t.CHM(e),t.oxw().onChartMouseUp(o)}),t.YNc(1,Ac,7,7,"ng-template",null,16,t.W1O),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("view",e.view)("results",e.routingReportData)("gradient",!1)("xAxis",!0)("yAxis",!0)("showXAxisLabel",!0)("showYAxisLabel",e.showYAxisLabel)("xAxisLabel",e.xAxisLabel)("yAxisLabel",e.yAxisLabel)("showGridLines",!1)("showDataLabel",!1)}}function Zc(n,a){if(1&n&&t._UZ(0,"rtl-ecl-forwarding-history",18),2&n){const e=t.oxw();t.Q6J("eventsData",e.filteredEventsBySelectedPeriod)("filterValue",e.eventFilterValue)}}let wc=(()=>{class n{constructor(e,i,o){this.logger=e,this.commonService=i,this.store=o,this.reportPeriod=l.op[0],this.secondsInADay=86400,this.events=[],this.filteredEventsBySelectedPeriod=[],this.eventFilterValue="",this.reportBy=l.Xr,this.selReportBy=l.Xr.FEES,this.totalFeeSat=null,this.today=new Date(Date.now()),this.startDate=new Date(this.today.getFullYear(),this.today.getMonth(),1,0,0,0),this.endDate=new Date(this.today.getFullYear(),this.today.getMonth(),this.getMonthDays(this.today.getMonth(),this.today.getFullYear()),23,59,59),this.routingReportData=[],this.view=[350,350],this.screenPaddingX=100,this.gradient=!0,this.xAxisLabel="Date",this.yAxisLabel="Fee (Sats)",this.showYAxisLabel=!0,this.screenSize="",this.screenSizeEnum=l.cu,this.unSubs=[new d.x,new d.x]}ngOnInit(){this.screenSize=this.commonService.getScreenSize(),this.showYAxisLabel=!(this.screenSize===l.cu.XS||this.screenSize===l.cu.SM),this.store.select(C.PP).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.events=e.payments&&e.payments.relayed?e.payments.relayed:[],this.filterForwardingEvents(this.startDate,this.endDate),this.logger.info(e)}),this.commonService.containerSizeUpdated.pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{switch(this.screenSize){case l.cu.MD:this.screenPaddingX=e.width/10;break;case l.cu.LG:this.screenPaddingX=e.width/16;break;default:this.screenPaddingX=e.width/20}this.view=[e.width-this.screenPaddingX,e.height/2.2],this.logger.info("Container Size: "+JSON.stringify(e)),this.logger.info("View: "+JSON.stringify(this.view))})}filterForwardingEvents(e,i){const o=Math.round(e.getTime()/1e3),s=Math.round(i.getTime()/1e3);this.logger.info("Filtering Forwarding Events Starting at "+new Date(Date.now()).toLocaleString()+" From "+e.toLocaleString()+" To "+i.toLocaleString()),this.filteredEventsBySelectedPeriod=[],this.routingReportData=[],this.totalFeeSat=null,this.events&&this.events.length>0&&(this.events.forEach(c=>{Math.floor((c.timestamp||0)/1e3)>=o&&Math.floor((c.timestamp||0)/1e3)0&&"ngx-charts"===e.srcElement.classList[0]&&(this.eventFilterValue="")}onChartBarSelected(e){this.eventFilterValue=this.reportPeriod===l.op[1]?e.name+"/"+this.startDate.getFullYear():e.name.toString().padStart(2,"0")+"/"+l.gg[this.startDate.getMonth()].name+"/"+this.startDate.getFullYear()}prepareFeeReport(e){var i,o;const s=Math.round(e.getTime()/1e3),c=[];if(this.totalFeeSat=0,this.logger.info("Fee Report Prepare Starting at "+new Date(Date.now()).toLocaleString()+" From "+e.toLocaleString()),this.reportPeriod===l.op[1]){for(let h=0;h<12;h++)c.push({name:l.gg[h].name,value:0,extra:{totalEvents:0}});null===(i=this.filteredEventsBySelectedPeriod)||void 0===i||i.map(h=>{const g=new Date(h.timestamp||0).getMonth();return c[g].value=c[g].value+((h.amountIn||0)-(h.amountOut||0)),c[g].extra.totalEvents=c[g].extra.totalEvents+1,this.totalFeeSat=(this.totalFeeSat?this.totalFeeSat:0)+((h.amountIn||0)-(h.amountOut||0)),this.filteredEventsBySelectedPeriod})}else{for(let h=0;h{const g=Math.floor((Math.floor((h.timestamp||0)/1e3)-s)/this.secondsInADay);return c[g].value=c[g].value+((h.amountIn||0)-(h.amountOut||0)),c[g].extra.totalEvents=c[g].extra.totalEvents+1,this.totalFeeSat=(this.totalFeeSat?this.totalFeeSat:0)+((h.amountIn||0)-(h.amountOut||0)),this.filteredEventsBySelectedPeriod})}return this.logger.info("Fee Report Prepare Finished at "+new Date(Date.now()).toLocaleString()),c}prepareEventsReport(e){var i,o;const s=Math.round(e.getTime()/1e3),c=[];if(this.totalFeeSat=0,this.logger.info("Events Report Prepare Starting at "+new Date(Date.now()).toLocaleString()+" From "+e.toLocaleString()),this.reportPeriod===l.op[1]){for(let h=0;h<12;h++)c.push({name:l.gg[h].name,value:0,extra:{totalFees:0}});null===(i=this.filteredEventsBySelectedPeriod)||void 0===i||i.map(h=>{const g=new Date(h.timestamp||0).getMonth();return c[g].value=c[g].value+1,c[g].extra.totalFees=c[g].extra.totalFees+((h.amountIn||0)-(h.amountOut||0)),this.totalFeeSat=(this.totalFeeSat?this.totalFeeSat:0)+((h.amountIn||0)-(h.amountOut||0)),this.filteredEventsBySelectedPeriod})}else{for(let h=0;h{const g=Math.floor((Math.floor((h.timestamp||0)/1e3)-s)/this.secondsInADay);return c[g].value=c[g].value+1,c[g].extra.totalFees=c[g].extra.totalFees+((h.amountIn||0)-(h.amountOut||0)),this.totalFeeSat=(this.totalFeeSat?this.totalFeeSat:0)+((h.amountIn||0)-(h.amountOut||0)),this.filteredEventsBySelectedPeriod})}return this.logger.info("Events Report Prepare Finished at "+new Date(Date.now()).toLocaleString()),c}onSelectionChange(e){const i=e.selDate.getMonth(),o=e.selDate.getFullYear();this.reportPeriod=e.selScrollRange,this.reportPeriod===l.op[1]?(this.startDate=new Date(o,0,1,0,0,0),this.endDate=new Date(o,11,31,23,59,59)):(this.startDate=new Date(o,i,1,0,0,0),this.endDate=new Date(o,i,this.getMonthDays(i,o),23,59,59)),this.filterForwardingEvents(this.startDate,this.endDate),this.eventFilterValue=""}getMonthDays(e,i){return 1===e&&i%4==0?l.gg[e].days+1:l.gg[e].days}onSelReportByChange(){this.yAxisLabel=this.selReportBy===this.reportBy.EVENTS?"Events":"Fee (Sats)",this.routingReportData=this.selReportBy===this.reportBy.EVENTS?this.prepareEventsReport(this.startDate):this.prepareFeeReport(this.startDate)}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(N.v),t.Y36(w.yh))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-routing-report"]],hostBindings:function(e,i){1&e&&t.NdJ("mouseup",function(s){return i.onChartMouseUp(s)})},decls:17,vars:7,consts:[["fxLayout","column","fxLayoutAlign","start stretch","fxFlex","100",1,"padding-gap-x-large"],[3,"stepChanged"],["fxLayout","column","fxLayoutAlign","center center",1,"padding-gap-x"],["color","primary","name","selReportBy","fxFlex","100","fxLayoutAlign","start start",1,"my-1",3,"ngModel","ngModelChange","change"],[1,"mr-2"],["tabindex","1",1,"mr-2",3,"value"],["tabindex","2",3,"value"],["fxLayout","column","fxLayoutAlign","start stretch","fxFlex","100",1,"padding-gap-x"],["fxLayout","column","fxLayoutAlign","center center","fxFlex","100","class","font-size-120 font-bold-700 mt-1",4,"ngIf"],["fxLayout","column","fxLayoutAlign","center center","fxFlex","100","class","font-size-120 mt-1",4,"ngIf"],[1,"mt-1"],["class","one-color",3,"view","results","gradient","xAxis","yAxis","showXAxisLabel","showYAxisLabel","xAxisLabel","yAxisLabel","showGridLines","showDataLabel","select","mouseup",4,"ngIf"],[3,"eventsData","filterValue",4,"ngIf"],["fxLayout","column","fxLayoutAlign","center center","fxFlex","100",1,"font-size-120","font-bold-700","mt-1"],["fxLayout","column","fxLayoutAlign","center center","fxFlex","100",1,"font-size-120","mt-1"],[1,"one-color",3,"view","results","gradient","xAxis","yAxis","showXAxisLabel","showYAxisLabel","xAxisLabel","yAxisLabel","showGridLines","showDataLabel","select","mouseup"],["tooltipTemplate",""],[1,"tooltip-label"],[3,"eventsData","filterValue"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"rtl-horizontal-scroller",1),t.NdJ("stepChanged",function(s){return i.onSelectionChange(s)}),t.qZA(),t.TgZ(2,"div",2)(3,"mat-radio-group",3),t.NdJ("ngModelChange",function(s){return i.selReportBy=s})("change",function(){return i.onSelReportByChange()}),t.TgZ(4,"span",4),t._uU(5,"Report By: "),t.qZA(),t.TgZ(6,"mat-radio-button",5),t._uU(7,"Fees"),t.qZA(),t.TgZ(8,"mat-radio-button",6),t._uU(9,"Events"),t.qZA()()(),t.TgZ(10,"div",7),t.YNc(11,Tc,4,8,"div",8),t.YNc(12,bc,2,0,"div",9),t.TgZ(13,"div",10),t.YNc(14,Sc,3,11,"ngx-charts-bar-vertical",11),t.qZA(),t.TgZ(15,"div",10),t.YNc(16,Zc,1,2,"rtl-ecl-forwarding-history",12),t.qZA()()()),2&e&&(t.xp6(3),t.Q6J("ngModel",i.selReportBy),t.xp6(3),t.s9C("value",i.reportBy.FEES),t.xp6(2),t.s9C("value",i.reportBy.EVENTS),t.xp6(3),t.Q6J("ngIf",i.routingReportData.length>0&&i.filteredEventsBySelectedPeriod.length>0),t.xp6(1),t.Q6J("ngIf",i.routingReportData.length<=0||i.filteredEventsBySelectedPeriod.length<=0),t.xp6(2),t.Q6J("ngIf",i.routingReportData.length>0&&i.filteredEventsBySelectedPeriod.length>0),t.xp6(2),t.Q6J("ngIf",i.filteredEventsBySelectedPeriod.length>0))},directives:[p.xw,p.Wh,p.yH,kt.D,et.VQ,m.JJ,m.On,et.U0,u.O5,Pt.K$,qt],pipes:[u.JJ],styles:[""],data:{animation:[Nt.J]}}),n})();var Ec=f(165);function Ic(n,a){if(1&n&&(t.TgZ(0,"div",10),t._uU(1),t.ALo(2,"number"),t.ALo(3,"number"),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.AsE(" Paid ",t.xi3(2,2,e.transactionsReportSummary.amountPaidSelectedPeriod||0,"1.0-2")," Sats/",t.lcZ(3,5,e.transactionsReportSummary.paymentsSelectedPeriod)," Payments ")}}function Oc(n,a){if(1&n&&(t.TgZ(0,"div",10),t._uU(1),t.ALo(2,"number"),t.ALo(3,"number"),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.AsE(" Received ",t.xi3(2,2,e.transactionsReportSummary.amountReceivedSelectedPeriod||0,"1.0-2")," Sats/",t.lcZ(3,5,e.transactionsReportSummary.invoicesSelectedPeriod)," Invoices ")}}function Fc(n,a){if(1&n&&(t.TgZ(0,"div",8),t.YNc(1,Ic,4,7,"div",9),t.YNc(2,Oc,4,7,"div",9),t.qZA()),2&n){const e=t.oxw();t.Q6J("@fadeIn",e.transactionsReportSummary),t.xp6(1),t.Q6J("ngIf",e.transactionsReportSummary.paymentsSelectedPeriod),t.xp6(1),t.Q6J("ngIf",e.transactionsReportSummary.invoicesSelectedPeriod)}}function qc(n,a){1&n&&(t.TgZ(0,"div",11),t._uU(1,"No transactions report for the selected period"),t.qZA())}function Rc(n,a){if(1&n&&(t.TgZ(0,"span",14),t._uU(1),t.ALo(2,"number"),t.ALo(3,"number"),t.qZA()),2&n){const e=a.model;t.xp6(1),t.HOy("",e.name,": ",t.xi3(2,4,e.value||0,"1.0-2"),"/# ","Paid"===e.name?"Payments":"Invoices",": ",t.lcZ(3,7,(null==e.extra?null:e.extra.total)||0),"")}}function Nc(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"ngx-charts-bar-vertical-2d",12),t.NdJ("select",function(o){return t.CHM(e),t.oxw().onChartBarSelected(o)})("mouseup",function(o){return t.CHM(e),t.oxw().onChartMouseUp(o)}),t.YNc(1,Rc,4,9,"ng-template",null,13,t.W1O),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("view",e.view)("results",e.transactionsReportData)("noBarWhenZero",!1)("gradient",!1)("xAxis",!0)("yAxis",!0)("showXAxisLabel",!0)("showYAxisLabel",e.showYAxisLabel)("xAxisLabel",e.xAxisLabel)("yAxisLabel",e.yAxisLabel)("showGridLines",!1)("showDataLabel",!1)("groupPadding",e.reportPeriod===e.scrollRanges[0]?2:8)}}function kc(n,a){if(1&n&&t._UZ(0,"rtl-transactions-report-table",15),2&n){const e=t.oxw();t.Q6J("dataList",e.transactionsNonZeroReportData)("dataRange",e.reportPeriod)("filterValue",e.transactionFilterValue)}}let Pc=(()=>{class n{constructor(e,i,o){this.logger=e,this.commonService=i,this.store=o,this.scrollRanges=l.op,this.reportPeriod=l.op[0],this.secondsInADay=86400,this.payments=[],this.invoices=[],this.transactionsReportSummary={paymentsSelectedPeriod:0,invoicesSelectedPeriod:0,amountPaidSelectedPeriod:0,amountReceivedSelectedPeriod:0},this.transactionFilterValue="",this.today=new Date(Date.now()),this.startDate=new Date(this.today.getFullYear(),this.today.getMonth(),1,0,0,0),this.endDate=new Date(this.today.getFullYear(),this.today.getMonth(),this.getMonthDays(this.today.getMonth(),this.today.getFullYear()),23,59,59),this.transactionsReportData=[],this.transactionsNonZeroReportData=[],this.view=[350,350],this.screenPaddingX=100,this.gradient=!0,this.xAxisLabel="Date",this.yAxisLabel="Amount (Sats)",this.showYAxisLabel=!0,this.screenSize="",this.screenSizeEnum=l.cu,this.unSubs=[new d.x,new d.x]}ngOnInit(){this.screenSize=this.commonService.getScreenSize(),this.showYAxisLabel=!(this.screenSize===l.cu.XS||this.screenSize===l.cu.SM),this.store.select(C.PP).pipe((0,_.R)(this.unSubs[0]),(0,it.M)(this.store.select(C.Ef))).subscribe(([e,i])=>{this.payments=e.payments.sent?e.payments.sent:[],this.invoices=i.invoices?i.invoices:[],(this.payments.length>0||this.invoices.length>0)&&(this.transactionsReportData=this.filterTransactionsForSelectedPeriod(this.startDate,this.endDate),this.transactionsNonZeroReportData=this.prepareTableData())}),this.commonService.containerSizeUpdated.pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{switch(this.screenSize){case l.cu.MD:this.screenPaddingX=e.width/10;break;case l.cu.LG:this.screenPaddingX=e.width/16;break;default:this.screenPaddingX=e.width/20}this.view=[e.width-this.screenPaddingX,e.height/2.2],this.logger.info("Container Size: "+JSON.stringify(e)),this.logger.info("View: "+JSON.stringify(this.view))})}onChartMouseUp(e){"svg"===e.srcElement.tagName&&e.srcElement.classList.length>0&&"ngx-charts"===e.srcElement.classList[0]&&(this.transactionFilterValue="")}onChartBarSelected(e){this.transactionFilterValue=this.reportPeriod===l.op[1]?e.series.toString()+"/"+this.startDate.getFullYear():e.series.toString().padStart(2,"0")+"/"+l.gg[this.startDate.getMonth()].name+"/"+this.startDate.getFullYear()}filterTransactionsForSelectedPeriod(e,i){var o,s;const c=Math.round(e.getTime()/1e3),h=Math.round(i.getTime()/1e3),g=[];this.transactionsReportSummary={paymentsSelectedPeriod:0,invoicesSelectedPeriod:0,amountPaidSelectedPeriod:0,amountReceivedSelectedPeriod:0};const T=null===(o=this.payments)||void 0===o?void 0:o.filter(v=>v.firstPartTimestamp&&Math.floor(v.firstPartTimestamp/1e3)>=c&&Math.floor(v.firstPartTimestamp/1e3)"received"===v.status&&v.timestamp&&v.timestamp>=c&&v.timestamp{const O=new Date(v.firstPartTimestamp||0).getMonth();return this.transactionsReportSummary.amountPaidSelectedPeriod=this.transactionsReportSummary.amountPaidSelectedPeriod+(v.recipientAmount||0),g[O].series[0].value=g[O].series[0].value+v.recipientAmount,g[O].series[0].extra.total=g[O].series[0].extra.total+1,this.transactionsReportSummary}),null==Y||Y.map(v=>{const O=new Date(1e3*(v.timestamp||0)).getMonth();return this.transactionsReportSummary.amountReceivedSelectedPeriod=this.transactionsReportSummary.amountReceivedSelectedPeriod+(v.amountSettled||0),g[O].series[1].value=g[O].series[1].value+v.amountSettled,g[O].series[1].extra.total=g[O].series[1].extra.total+1,this.transactionsReportSummary})}else{for(let v=0;v{const O=Math.floor((Math.floor((v.firstPartTimestamp||0)/1e3)-c)/this.secondsInADay);return this.transactionsReportSummary.amountPaidSelectedPeriod=this.transactionsReportSummary.amountPaidSelectedPeriod+(v.recipientAmount||0),g[O].series[0].value=g[O].series[0].value+v.recipientAmount,g[O].series[0].extra.total=g[O].series[0].extra.total+1,this.transactionsReportSummary}),null==Y||Y.map(v=>{const O=Math.floor(((v.timestamp||0)-c)/this.secondsInADay);return this.transactionsReportSummary.amountReceivedSelectedPeriod=this.transactionsReportSummary.amountReceivedSelectedPeriod+(v.amountSettled||0),g[O].series[1].value=g[O].series[1].value+v.amountSettled,g[O].series[1].extra.total=g[O].series[1].extra.total+1,this.transactionsReportSummary})}return g}prepareTableData(){var e;return null===(e=this.transactionsReportData)||void 0===e?void 0:e.reduce((i,o)=>o.series[0].extra.total>0||o.series[1].extra.total>0?i.concat({date:o.date,amount_paid:o.series[0].value,num_payments:o.series[0].extra.total,amount_received:o.series[1].value,num_invoices:o.series[1].extra.total}):i,[])}onSelectionChange(e){const i=e.selDate.getMonth(),o=e.selDate.getFullYear();this.reportPeriod=e.selScrollRange,this.reportPeriod===l.op[1]?(this.startDate=new Date(o,0,1,0,0,0),this.endDate=new Date(o,11,31,23,59,59)):(this.startDate=new Date(o,i,1,0,0,0),this.endDate=new Date(o,i,this.getMonthDays(i,o),23,59,59)),this.transactionsReportData=this.filterTransactionsForSelectedPeriod(this.startDate,this.endDate),this.transactionsNonZeroReportData=this.prepareTableData(),this.transactionFilterValue=""}getMonthDays(e,i){return 1===e&&i%4==0?l.gg[e].days+1:l.gg[e].days}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(R.mQ),t.Y36(N.v),t.Y36(w.yh))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-transactions-report"]],hostBindings:function(e,i){1&e&&t.NdJ("mouseup",function(s){return i.onChartMouseUp(s)})},decls:9,vars:4,consts:[["fxLayout","column","fxLayoutAlign","start stretch","fxFlex","100",1,"padding-gap-x-large"],[3,"stepChanged"],["fxLayout","column","fxLayoutAlign","start stretch","fxFlex","100",1,"padding-gap-x"],["fxLayout","column","fxLayoutAlign","center center","fxFlex","100","class","font-size-120 font-bold-700 mt-1",4,"ngIf"],["fxLayout","column","fxLayoutAlign","center center","fxFlex","100","class","font-size-120 mt-1",4,"ngIf"],[1,"mt-1"],["class","two-color",3,"view","results","noBarWhenZero","gradient","xAxis","yAxis","showXAxisLabel","showYAxisLabel","xAxisLabel","yAxisLabel","showGridLines","showDataLabel","groupPadding","select","mouseup",4,"ngIf"],[3,"dataList","dataRange","filterValue",4,"ngIf"],["fxLayout","column","fxLayoutAlign","center center","fxFlex","100",1,"font-size-120","font-bold-700","mt-1"],["fxLayout","row","fxLayoutAlign","start stretch","fxFlex","100",4,"ngIf"],["fxLayout","row","fxLayoutAlign","start stretch","fxFlex","100"],["fxLayout","column","fxLayoutAlign","center center","fxFlex","100",1,"font-size-120","mt-1"],[1,"two-color",3,"view","results","noBarWhenZero","gradient","xAxis","yAxis","showXAxisLabel","showYAxisLabel","xAxisLabel","yAxisLabel","showGridLines","showDataLabel","groupPadding","select","mouseup"],["tooltipTemplate",""],[1,"tooltip-label"],[3,"dataList","dataRange","filterValue"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0)(1,"rtl-horizontal-scroller",1),t.NdJ("stepChanged",function(s){return i.onSelectionChange(s)}),t.qZA(),t.TgZ(2,"div",2),t.YNc(3,Fc,3,3,"div",3),t.YNc(4,qc,2,0,"div",4),t.TgZ(5,"div",5),t.YNc(6,Nc,3,13,"ngx-charts-bar-vertical-2d",6),t.qZA(),t.TgZ(7,"div",5),t.YNc(8,kc,1,3,"rtl-transactions-report-table",7),t.qZA()()()),2&e&&(t.xp6(3),t.Q6J("ngIf",i.transactionsNonZeroReportData.length>0),t.xp6(1),t.Q6J("ngIf",i.transactionsNonZeroReportData.length<=0),t.xp6(2),t.Q6J("ngIf",i.transactionsNonZeroReportData.length>0),t.xp6(2),t.Q6J("ngIf",i.transactionsNonZeroReportData.length>0))},directives:[p.xw,p.Wh,p.yH,kt.D,u.O5,Pt.H5,Ec.g],pipes:[u.JJ],styles:[""],data:{animation:[Nt.J]}}),n})();var I=f(1643),Dc=f(9442);function Uc(n,a){if(1&n){const e=t.EpF();t.TgZ(0,"div",8),t.NdJ("click",function(){const s=t.CHM(e).$implicit;return t.oxw().activeLink=s.link}),t._uU(1),t.qZA()}if(2&n){const e=a.$implicit,i=t.oxw();t.s9C("routerLink",e.link),t.Q6J("active",i.activeLink===e.link),t.xp6(1),t.Oqu(e.name)}}const Qc=x.Bz.forChild([{path:"",component:mt,children:[{path:"",pathMatch:"full",redirectTo:"home"},{path:"home",component:ki,canActivate:[I.fY]},{path:"onchain",component:Ca,canActivate:[I.fY],children:[{path:"",pathMatch:"full",redirectTo:"receive"},{path:"receive",component:Va,canActivate:[I.fY]},{path:"send",component:Ga,canActivate:[I.fY]}]},{path:"connections",component:va,canActivate:[I.fY],children:[{path:"",pathMatch:"full",redirectTo:"channels"},{path:"channels",component:mo,canActivate:[I.fY],children:[{path:"",pathMatch:"full",redirectTo:"open"},{path:"open",component:ts,canActivate:[I.fY]},{path:"pending",component:Ls,canActivate:[I.fY]},{path:"inactive",component:$l,canActivate:[I.fY]}]},{path:"peers",component:ll,canActivate:[I.fY]}]},{path:"transactions",component:Ta,canActivate:[I.fY],children:[{path:"",pathMatch:"full",redirectTo:"payments"},{path:"payments",component:xt,canActivate:[I.fY]},{path:"invoices",component:gt,canActivate:[I.fY]}]},{path:"routing",component:Aa,canActivate:[I.fY],children:[{path:"",pathMatch:"full",redirectTo:"forwardinghistory"},{path:"forwardinghistory",component:qt,canActivate:[I.fY]},{path:"peers",component:yc,canActivate:[I.fY]}]},{path:"reports",component:Lc,canActivate:[I.fY],children:[{path:"",pathMatch:"full",redirectTo:"routingreport"},{path:"routingreport",component:wc,canActivate:[I.fY]},{path:"transactions",component:Pc,canActivate:[I.fY]}]},{path:"graph",component:(()=>{class n{constructor(e){this.router=e,this.faSearch=L.wn1,this.links=[{link:"lookups",name:"Lookup"},{link:"queryroutes",name:"Query Routes"}],this.activeLink=this.links[0].link,this.unSubs=[new d.x,new d.x,new d.x,new d.x]}ngOnInit(){const e=this.links.find(i=>this.router.url.includes(i.link));this.activeLink=e?e.link:this.links[0].link,this.router.events.pipe((0,_.R)(this.unSubs[0]),(0,Q.h)(i=>i instanceof x.Av)).subscribe({next:i=>{const o=this.links.find(s=>i.urlAfterRedirects.includes(s.link));this.activeLink=o?o.link:this.links[0].link}})}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(x.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-ecl-graph"]],decls:11,vars:2,consts:[["fxLayout","row wrap","fxLayoutAlign","start center",1,"page-title-container"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxLayout","column",1,"padding-gap-x"],["fxLayout","column"],["mat-tab-nav-bar",""],["role","tab","mat-tab-link","","class","mat-tab-label",3,"active","routerLink","click",4,"ngFor","ngForOf"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",1,"mat-tab-body-wrapper"],["role","tab","mat-tab-link","",1,"mat-tab-label",3,"active","routerLink","click"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t._UZ(1,"fa-icon",1),t.TgZ(2,"span",2),t._uU(3,"Graph Lookups"),t.qZA()(),t.TgZ(4,"div",3)(5,"mat-card")(6,"mat-card-content",4)(7,"nav",5),t.YNc(8,Uc,2,3,"div",6),t.qZA(),t.TgZ(9,"div",7),t._UZ(10,"router-outlet"),t.qZA()()()()),2&e&&(t.xp6(1),t.Q6J("icon",i.faSearch),t.xp6(7),t.Q6J("ngForOf",i.links))},directives:[p.xw,p.Wh,q.BN,b.a8,b.dn,P.BU,u.sg,P.Nj,x.rH,p.yH,x.lC],styles:[""]}),n})(),canActivate:[I.fY],children:[{path:"",pathMatch:"full",redirectTo:"lookups"},{path:"lookups",component:Ba,canActivate:[I.fY]},{path:"queryroutes",component:Ll,canActivate:[I.fY]}]},{path:"**",component:Dc.w}]}]);var Yc=f(8750);let Hc=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n,bootstrap:[mt]}),n.\u0275inj=t.cJS({providers:[I.fY],imports:[[u.ez,Yc.m,Qc]]}),n})()}}]);
\ No newline at end of file
diff --git a/frontend/3rdpartylicenses.txt b/frontend/3rdpartylicenses.txt
deleted file mode 100644
index 80617c98..00000000
--- a/frontend/3rdpartylicenses.txt
+++ /dev/null
@@ -1,2780 +0,0 @@
-@angular/animations
-MIT
-
-@angular/cdk
-MIT
-The MIT License
-
-Copyright (c) 2022 Google LLC.
-
-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.
-
-
-@angular/common
-MIT
-
-@angular/core
-MIT
-
-@angular/flex-layout
-MIT
-
-@angular/forms
-MIT
-
-@angular/material
-MIT
-The MIT License
-
-Copyright (c) 2022 Google LLC.
-
-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.
-
-
-@angular/platform-browser
-MIT
-
-@angular/router
-MIT
-
-@babel/runtime
-MIT
-MIT License
-
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-@fortawesome/angular-fontawesome
-MIT
-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.
-
-
-@fortawesome/fontawesome-svg-core
-MIT
-Fonticons, Inc. (https://fontawesome.com)
-
---------------------------------------------------------------------------------
-
-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/)
-
-The Font Awesome Free download is licensed under a Creative Commons
-Attribution 4.0 International License and applies to all icons packaged
-as SVG and JS file types.
-
---------------------------------------------------------------------------------
-
-# Fonts: SIL OFL 1.1 License
-
-In the Font Awesome Free download, the SIL OFL license applies to all icons
-packaged as web and desktop font files.
-
-Copyright (c) 2022 Fonticons, Inc. (https://fontawesome.com)
-with Reserved Font Name: "Font Awesome".
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-SIL OPEN FONT LICENSE
-Version 1.1 - 26 February 2007
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting — in part or in whole — any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
-
---------------------------------------------------------------------------------
-
-# 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.
-
-Copyright 2022 Fonticons, 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.
-
---------------------------------------------------------------------------------
-
-# 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.**
-
-
-@fortawesome/free-regular-svg-icons
-(CC-BY-4.0 AND MIT)
-Fonticons, Inc. (https://fontawesome.com)
-
---------------------------------------------------------------------------------
-
-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/)
-
-The Font Awesome Free download is licensed under a Creative Commons
-Attribution 4.0 International License and applies to all icons packaged
-as SVG and JS file types.
-
---------------------------------------------------------------------------------
-
-# Fonts: SIL OFL 1.1 License
-
-In the Font Awesome Free download, the SIL OFL license applies to all icons
-packaged as web and desktop font files.
-
-Copyright (c) 2022 Fonticons, Inc. (https://fontawesome.com)
-with Reserved Font Name: "Font Awesome".
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-SIL OPEN FONT LICENSE
-Version 1.1 - 26 February 2007
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting — in part or in whole — any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
-
---------------------------------------------------------------------------------
-
-# 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.
-
-Copyright 2022 Fonticons, 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.
-
---------------------------------------------------------------------------------
-
-# 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.**
-
-
-@fortawesome/free-solid-svg-icons
-(CC-BY-4.0 AND MIT)
-Fonticons, Inc. (https://fontawesome.com)
-
---------------------------------------------------------------------------------
-
-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/)
-
-The Font Awesome Free download is licensed under a Creative Commons
-Attribution 4.0 International License and applies to all icons packaged
-as SVG and JS file types.
-
---------------------------------------------------------------------------------
-
-# Fonts: SIL OFL 1.1 License
-
-In the Font Awesome Free download, the SIL OFL license applies to all icons
-packaged as web and desktop font files.
-
-Copyright (c) 2022 Fonticons, Inc. (https://fontawesome.com)
-with Reserved Font Name: "Font Awesome".
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-SIL OPEN FONT LICENSE
-Version 1.1 - 26 February 2007
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting — in part or in whole — any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
-
---------------------------------------------------------------------------------
-
-# 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.
-
-Copyright 2022 Fonticons, 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.
-
---------------------------------------------------------------------------------
-
-# 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.**
-
-
-@ngrx/effects
-MIT
-
-@ngrx/store
-MIT
-
-@ngrx/store-devtools
-MIT
-
-@otplib/core
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014 Gerald Yeo
-
-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.
-
-
-@otplib/plugin-crypto
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014 Gerald Yeo
-
-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.
-
-
-@otplib/plugin-thirty-two
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014 Gerald Yeo
-
-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.
-
-
-@otplib/preset-default
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014 Gerald Yeo
-
-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.
-
-
-@swimlane/ngx-charts
-MIT
-MIT License
-
-Copyright (c) 2017 Swimlane
-
-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.
-
-
-angular-user-idle
-MIT
-
-asn1.js
-MIT
-MIT License
-
-Copyright (c) 2017 Fedor Indutny
-
-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.
-
-
-base64-js
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014 Jameson Little
-
-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.
-
-
-bn.js
-MIT
-Copyright Fedor Indutny, 2015.
-
-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.
-
-
-brorand
-MIT
-
-browserify-aes
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2017 browserify-aes 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.
-
-
-browserify-cipher
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2017 Calvin Metcalf & 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.
-
-
-browserify-des
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2017 Calvin Metcalf, Fedor Indutny & 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.
-
-
-browserify-rsa
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2016 Calvin Metcalf & 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.
-
-
-browserify-sign
-ISC
-Copyright (c) 2014-2015 Calvin Metcalf and browserify-sign contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-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.
-
-
-buffer
-MIT
-The MIT License (MIT)
-
-Copyright (c) Feross Aboukhadijeh, and other contributors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-buffer-xor
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2015 Daniel Cousens
-
-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.
-
-
-cipher-base
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2017 crypto-browserify 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.
-
-
-clone-deep
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2018, Jon Schlinkert.
-
-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.
-
-
-convert-hex
-
-convert-string
-
-create-ecdh
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2017 createECDH 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.
-
-
-create-hash
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2017 crypto-browserify 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.
-
-
-create-hmac
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2017 crypto-browserify 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.
-
-
-crypto-browserify
-MIT
-The MIT License
-
-Copyright (c) 2013 Dominic Tarr
-
-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.
-
-d3-array
-BSD-3-Clause
-Copyright 2010-2020 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-brush
-BSD-3-Clause
-Copyright 2010-2016 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-color
-BSD-3-Clause
-Copyright 2010-2016 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-dispatch
-BSD-3-Clause
-Copyright 2010-2016 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-drag
-BSD-3-Clause
-Copyright 2010-2016 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-ease
-BSD-3-Clause
-Copyright 2010-2016 Mike Bostock
-Copyright 2001 Robert Penner
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-format
-BSD-3-Clause
-Copyright 2010-2015 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-interpolate
-BSD-3-Clause
-Copyright 2010-2016 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-scale
-BSD-3-Clause
-Copyright 2010-2015 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-selection
-BSD-3-Clause
-Copyright (c) 2010-2018, Michael Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* The name Michael Bostock may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-time
-BSD-3-Clause
-Copyright 2010-2016 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-time-format
-BSD-3-Clause
-Copyright 2010-2017 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-timer
-BSD-3-Clause
-Copyright 2010-2016 Mike Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-d3-transition
-BSD-3-Clause
-Copyright (c) 2010-2015, Michael Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* The name Michael Bostock may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-TERMS OF USE - EASING EQUATIONS
-
-Open source under the BSD License.
-
-Copyright 2001 Robert Penner
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-- Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-- Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-- Neither the name of the author nor the names of contributors may be used to
- endorse or promote products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-des.js
-MIT
-
-diffie-hellman
-MIT
-Copyright (c) 2017 Calvin Metcalf
-
-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.
-
-
-dijkstrajs
-MIT
-```
-Dijkstra path-finding functions. Adapted from the Dijkstar Python project.
-
-Copyright (C) 2008
- Wyatt Baldwin
- All rights reserved
-
-Licensed under the MIT license.
-
- http://www.opensource.org/licenses/mit-license.php
-
-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.
-```
-
-
-elliptic
-MIT
-
-encode-utf8
-MIT
-
-events
-MIT
-MIT
-
-Copyright Joyent, Inc. and other Node 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.
-
-
-evp_bytestokey
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2017 crypto-browserify 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.
-
-
-hash-base
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2016 Kirill Fomichev
-
-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.
-
-
-hash.js
-MIT
-
-hmac-drbg
-MIT
-
-ieee754
-BSD-3-Clause
-Copyright 2008 Fair Oaks Labs, Inc.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-inherits
-ISC
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-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.
-
-
-
-is-plain-object
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-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.
-
-
-isobject
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-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.
-
-kind-of
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2017, Jon Schlinkert.
-
-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.
-
-
-md5.js
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2016 Kirill Fomichev
-
-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.
-
-
-miller-rabin
-MIT
-
-minimalistic-assert
-ISC
-Copyright 2015 Calvin Metcalf
-
-Permission to use, copy, modify, and/or distribute this software for any purpose
-with or without fee is hereby granted, provided that the above copyright notice
-and this permission notice appear in all copies.
-
-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.
-
-minimalistic-crypto-utils
-MIT
-
-ng-qrcode
-MIT
-MIT License
-
-Copyright (c) 2019 Michael Nahkies
-
-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.
-
-
-ngx-perfect-scrollbar-next
-MIT
-
-otplib
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014 Gerald Yeo
-
-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.
-
-
-parse-asn1
-ISC
-Copyright (c) 2017, crypto-browserify contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-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.
-
-
-pbkdf2
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014 Daniel Cousens
-
-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.
-
-
-pdfmake
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2014-2015 bpampuch
- 2016-2021 liborm85
-
-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.
-
-
-perfect-scrollbar
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2012-2019 Hyunje Jun, MDBootstrap.com and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-public-encrypt
-MIT
-Copyright (c) 2017 Calvin Metcalf
-
-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.
-
-
-qrcode
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2012 Ryan Day
-
-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.
-
-
-
-randombytes
-MIT
-MIT License
-
-Copyright (c) 2017 crypto-browserify
-
-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.
-
-
-randomfill
-MIT
-MIT License
-
-Copyright (c) 2017 crypto-browserify
-
-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.
-
-
-readable-stream
-MIT
-Node.js is licensed for use as follows:
-
-"""
-Copyright Node.js contributors. All rights reserved.
-
-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.
-"""
-
-This license applies to parts of Node.js originating from the
-https://github.com/joyent/node repository:
-
-"""
-Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-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.
-"""
-
-
-regenerator-runtime
-MIT
-MIT License
-
-Copyright (c) 2014-present, Facebook, 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.
-
-
-resize-observer-polyfill
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2016 Denis Rul
-
-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.
-
-
-ripemd160
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2016 crypto-browserify
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-rxjs
-Apache-2.0
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-
-safe-buffer
-MIT
-The MIT License (MIT)
-
-Copyright (c) Feross Aboukhadijeh
-
-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.
-
-
-safer-buffer
-MIT
-MIT License
-
-Copyright (c) 2018 Nikita Skovoroda
-
-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.
-
-
-sha.js
-(MIT AND BSD-3-Clause)
-Copyright (c) 2013-2018 sha.js 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.
-
-
-Copyright (c) 1998 - 2009, Paul Johnston & Contributors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-
-Redistributions in binary form must reproduce the above copyright notice, this
-list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
-
-Neither the name of the author nor the names of its contributors may be used to
-endorse or promote products derived from this software without specific prior
-written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-sha256
-
-shallow-clone
-MIT
-The MIT License (MIT)
-
-Copyright (c) 2015-present, Jon Schlinkert.
-
-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.
-
-
-stream-browserify
-MIT
-MIT License
-
-Copyright (c) James Halliday
-
-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.
-
-
-string_decoder
-MIT
-Node.js is licensed for use as follows:
-
-"""
-Copyright Node.js contributors. All rights reserved.
-
-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.
-"""
-
-This license applies to parts of Node.js originating from the
-https://github.com/joyent/node repository:
-
-"""
-Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-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.
-"""
-
-
-
-thirty-two
-Copyright (c) 2011, Chris Umbel
-
-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.
-
-tslib
-0BSD
-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.
-
-util-deprecate
-MIT
-(The MIT License)
-
-Copyright (c) 2014 Nathan Rajlich
-
-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.
-
-
-zone.js
-MIT
-The MIT License
-
-Copyright (c) 2010-2022 Google LLC. https://angular.io/license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/frontend/508.06f7dec065381b97.js b/frontend/508.06f7dec065381b97.js
deleted file mode 100644
index ff513d31..00000000
--- a/frontend/508.06f7dec065381b97.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkRTLApp=self.webpackChunkRTLApp||[]).push([[508],{534:(B,y,t)=>{t.d(y,{KfU:()=>l2,ctA:()=>k2});var l2={prefix:"far",iconName:"face-frown",icon:[512,512,[9785,"frown"],"f119","M143.9 398.6C131.4 394.1 124.9 380.3 129.4 367.9C146.9 319.4 198.9 288 256 288C313.1 288 365.1 319.4 382.6 367.9C387.1 380.3 380.6 394.1 368.1 398.6C355.7 403.1 341.9 396.6 337.4 384.1C328.2 358.5 297.2 336 256 336C214.8 336 183.8 358.5 174.6 384.1C170.1 396.6 156.3 403.1 143.9 398.6V398.6zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"]},k2={prefix:"far",iconName:"face-smile",icon:[512,512,[128578,"smile"],"f118","M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"]}},7772:(B,y,t)=>{t.d(y,{J:()=>m,_:()=>v});var a=t(1777);const v=[(0,a.X$)("opacityAnimation",[(0,a.eR)(":enter",[(0,a.oB)({opacity:0}),(0,a.jt)("1000ms ease-in",(0,a.oB)({opacity:1}))]),(0,a.eR)(":leave",[(0,a.jt)("0ms",(0,a.oB)({opacity:0}))])])],m=[(0,a.X$)("fadeIn",[(0,a.eR)("void => *",[]),(0,a.eR)("* => void",[]),(0,a.eR)("* => *",[(0,a.jt)(800,(0,a.F4)([(0,a.oB)({opacity:0,transform:"translateY(100%)"}),(0,a.oB)({opacity:1,transform:"translateY(0%)"})]))])])]},113:(B,y,t)=>{t.d(y,{l:()=>v});var a=t(1777);const v=[(0,a.X$)("sliderAnimation",[(0,a.SB)("*",(0,a.oB)({transform:"translateX(0)"})),(0,a.eR)("void => backward",[(0,a.oB)({transform:"translateX(-100%"}),(0,a.jt)("800ms")]),(0,a.eR)("backward => void",[(0,a.jt)("0ms",(0,a.oB)({transform:"translateX(100%)"}))]),(0,a.eR)("void => forward",[(0,a.oB)({transform:"translateX(100%"}),(0,a.jt)("800ms")]),(0,a.eR)("forward => void",[(0,a.jt)("0ms",(0,a.oB)({transform:"translateX(-100%)"}))])])]},1203:(B,y,t)=>{t.d(y,{D:()=>k});var a=t(7579),v=t(2722),m=t(7731),C=t(8377),c=t(5e3),e=t(62),b=t(5620),V=t(3251),g=t(9808),H=t(7093),x=t(5245),N=t(7238);function T(u,z){if(1&u&&(c.TgZ(0,"mat-icon",9),c._uU(1,"info_outline"),c.qZA()),2&u){const M=c.oxw().$implicit;c.Q6J("matTooltip",M.tooltip)}}function w(u,z){if(1&u&&(c.TgZ(0,"span",10),c._uU(1),c.ALo(2,"number"),c.qZA()),2&u){const M=c.oxw().$implicit;c.xp6(1),c.hij(" ",c.lcZ(2,1,M.dataValue)," ")}}function D(u,z){if(1&u&&(c.TgZ(0,"span",10),c._uU(1),c.ALo(2,"number"),c.qZA()),2&u){const M=c.oxw().$implicit,o=c.oxw(2);c.xp6(1),c.hij(" ",c.xi3(2,1,M[o.currencyUnitEnum.BTC],o.currencyUnitFormats.BTC)," ")}}function O(u,z){if(1&u&&(c.TgZ(0,"span",10),c._uU(1),c.ALo(2,"number"),c.qZA()),2&u){const M=c.oxw().$implicit,o=c.oxw(2);c.xp6(1),c.hij(" ",c.xi3(2,1,M[o.currencyUnitEnum.OTHER],o.currencyUnitFormats.OTHER)," ")}}function F(u,z){if(1&u&&(c.TgZ(0,"div",5)(1,"div",6),c._uU(2),c.YNc(3,T,2,1,"mat-icon",7),c.qZA(),c.YNc(4,w,3,3,"span",8),c.YNc(5,D,3,4,"span",8),c.YNc(6,O,3,4,"span",8),c.qZA()),2&u){const M=z.$implicit,o=c.oxw().$implicit,h=c.oxw();c.xp6(2),c.hij(" ",M.title," "),c.xp6(1),c.Q6J("ngIf",M.tooltip),c.xp6(1),c.Q6J("ngIf",o===h.currencyUnitEnum.SATS),c.xp6(1),c.Q6J("ngIf",o===h.currencyUnitEnum.BTC),c.xp6(1),c.Q6J("ngIf",h.fiatConversion&&o!==h.currencyUnitEnum.SATS&&o!==h.currencyUnitEnum.BTC&&""===h.conversionErrorMsg)}}function E(u,z){if(1&u&&(c.TgZ(0,"div",11)(1,"div",12),c._uU(2),c.qZA()()),2&u){const M=c.oxw(2);c.xp6(2),c.Oqu(M.conversionErrorMsg)}}function A(u,z){if(1&u&&(c.TgZ(0,"mat-tab",1)(1,"div",2),c.YNc(2,F,7,5,"div",3),c.qZA(),c.YNc(3,E,3,1,"div",4),c.qZA()),2&u){const M=z.$implicit,o=c.oxw();c.s9C("label",M),c.xp6(2),c.Q6J("ngForOf",o.values),c.xp6(1),c.Q6J("ngIf",o.fiatConversion&&M!==o.currencyUnitEnum.SATS&&M!==o.currencyUnitEnum.BTC&&""!==o.conversionErrorMsg)}}let k=(()=>{class u{constructor(M,o){this.commonService=M,this.store=o,this.values=[],this.currencyUnitEnum=m.NT,this.currencyUnitFormats=m.Xz,this.currencyUnits=[],this.fiatConversion=!1,this.conversionErrorMsg="",this.unSubs=[new a.x,new a.x,new a.x]}ngOnInit(){this.store.select(C.dT).pipe((0,v.R)(this.unSubs[0])).subscribe(M=>{this.fiatConversion=M.settings.fiatConversion,this.currencyUnits=M.settings.currencyUnits,this.fiatConversion||this.currencyUnits.splice(2,1),this.currencyUnits.length>1&&this.values[0]&&this.values[0].dataValue>=0&&this.getCurrencyValues(this.values)})}ngOnChanges(){this.currencyUnits.length>1&&this.values[0]&&this.values[0].dataValue>=0&&this.getCurrencyValues(this.values)}getCurrencyValues(M){M.forEach(o=>{o.dataValue>0?(this.commonService.convertCurrency(o.dataValue,m.NT.SATS,m.NT.BTC,"",!0).pipe((0,v.R)(this.unSubs[1])).subscribe(h=>{o[m.NT.BTC]=h.BTC}),this.commonService.convertCurrency(o.dataValue,m.NT.SATS,m.NT.OTHER,this.currencyUnits[2],this.fiatConversion).pipe((0,v.R)(this.unSubs[2])).subscribe({next:h=>{o[m.NT.OTHER]=h.OTHER},error:h=>{this.conversionErrorMsg="Conversion Error: "+h}})):(o[m.NT.BTC]=o.dataValue,""===this.conversionErrorMsg&&(o[m.NT.OTHER]=o.dataValue))})}ngOnDestroy(){this.unSubs.forEach(M=>{M.next(null),M.complete()})}}return u.\u0275fac=function(M){return new(M||u)(c.Y36(e.v),c.Y36(b.yh))},u.\u0275cmp=c.Xpm({type:u,selectors:[["rtl-currency-unit-converter"]],inputs:{values:"values"},features:[c.TTD],decls:2,vars:1,consts:[[3,"label",4,"ngFor","ngForOf"],[3,"label"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start start"],["fxLayout","column","fxLayoutAlign","center start","class","cc-data-block",4,"ngFor","ngForOf"],["fxLayout","row","fxFlex","100","class","p-1 error-border mt-1",4,"ngIf"],["fxLayout","column","fxLayoutAlign","center start",1,"cc-data-block"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start center",1,"cc-data-title"],["matTooltipPosition","below","class","info-icon",3,"matTooltip",4,"ngIf"],["class","cc-data-value",4,"ngIf"],["matTooltipPosition","below",1,"info-icon",3,"matTooltip"],[1,"cc-data-value"],["fxLayout","row","fxFlex","100",1,"p-1","error-border","mt-1"],[1,"cc-data-block"]],template:function(M,o){1&M&&(c.TgZ(0,"mat-tab-group"),c.YNc(1,A,4,3,"mat-tab",0),c.qZA()),2&M&&(c.xp6(1),c.Q6J("ngForOf",o.currencyUnits))},directives:[V.SP,g.sg,V.uX,H.xw,H.yH,H.Wh,g.O5,x.Hw,N.gM],pipes:[g.JJ],styles:[""]}),u})()},9122:(B,y,t)=>{t.d(y,{n:()=>M});var a=t(8966),v=t(801),m=t(7731),C=t(5e3),c=t(5043),e=t(62),b=t(7261),V=t(7093),g=t(9808),H=t(3322),x=t(159),N=t(9224),T=t(9444),w=t(7423),D=t(4834),O=t(3390),F=t(6895);const E=function(o){return{"display-none":o}};function A(o,h){if(1&o&&(C.TgZ(0,"div",20),C._UZ(1,"qr-code",21),C.qZA()),2&o){const p=C.oxw();C.Q6J("ngClass",C.VKq(4,E,p.screenSize===p.screenSizeEnum.XS||p.screenSize===p.screenSizeEnum.SM)),C.xp6(1),C.Q6J("value",p.address)("size",p.qrWidth)("errorCorrectionLevel","L")}}function k(o,h){if(1&o&&(C.TgZ(0,"div",22),C._UZ(1,"qr-code",21),C.qZA()),2&o){const p=C.oxw();C.Q6J("ngClass",C.VKq(4,E,p.screenSize!==p.screenSizeEnum.XS&&p.screenSize!==p.screenSizeEnum.SM)),C.xp6(1),C.Q6J("value",p.address)("size",p.qrWidth)("errorCorrectionLevel","L")}}function u(o,h){if(1&o&&(C.TgZ(0,"div",13)(1,"div",14)(2,"h4",15),C._uU(3,"Address Type"),C.qZA(),C.TgZ(4,"span",23),C._uU(5),C.qZA()()()),2&o){const p=C.oxw();C.xp6(5),C.Oqu(p.addressType)}}function z(o,h){1&o&&C._UZ(0,"mat-divider",17)}let M=(()=>{class o{constructor(p,_,R,P,U){this.dialogRef=p,this.data=_,this.logger=R,this.commonService=P,this.snackBar=U,this.faReceipt=v.dLy,this.address="",this.addressType="",this.qrWidth=230,this.screenSize="",this.screenSizeEnum=m.cu}ngOnInit(){this.address=this.data.address,this.addressType=this.data.addressType,this.screenSize=this.commonService.getScreenSize()}onClose(){this.dialogRef.close(!1)}onCopyAddress(p){this.snackBar.open("Generated address copied."),this.logger.info("Copied Text: "+p)}}return o.\u0275fac=function(p){return new(p||o)(C.Y36(a.so),C.Y36(a.WI),C.Y36(c.mQ),C.Y36(e.v),C.Y36(b.ux))},o.\u0275cmp=C.Xpm({type:o,selectors:[["rtl-on-chain-generated-address"]],decls:25,vars:8,consts:[["fxLayout","column","fxLayout.gt-sm","row","fxLayoutAlign","space-between stretch"],["fxFlex","35","fxLayoutAlign","center start","class","modal-qr-code-container padding-gap-large",3,"ngClass",4,"ngIf"],["fxFlex","65"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["tabindex","2","fxFlex","5","fxLayoutAlign","center","mat-button","",1,"btn-close-x","p-0",3,"click"],[1,"padding-gap-x-large"],["fxLayout","column"],["fxFlex","50","fxLayoutAlign","center start","class","modal-qr-code-container padding-gap-large",3,"ngClass",4,"ngIf"],["fxLayout","row",4,"ngIf"],["class","w-100 my-1",4,"ngIf"],["fxLayout","row"],["fxFlex","100"],["fxLayoutAlign","start",1,"font-bold-500"],[1,"overflow-wrap","foreground-secondary-text"],[1,"w-100","my-1"],["fxLayout","row","fxLayoutAlign","end center",1,"mt-1"],["autoFocus","","mat-button","","color","primary","tabindex","1","type","submit","rtlClipboard","",3,"payload","copied"],["fxFlex","35","fxLayoutAlign","center start",1,"modal-qr-code-container","padding-gap-large",3,"ngClass"],[3,"value","size","errorCorrectionLevel"],["fxFlex","50","fxLayoutAlign","center start",1,"modal-qr-code-container","padding-gap-large",3,"ngClass"],[1,"foreground-secondary-text"]],template:function(p,_){1&p&&(C.TgZ(0,"div",0),C.YNc(1,A,2,6,"div",1),C.TgZ(2,"div",2)(3,"mat-card-header",3)(4,"div",4),C._UZ(5,"fa-icon",5),C.TgZ(6,"span",6),C._uU(7),C.qZA()(),C.TgZ(8,"button",7),C.NdJ("click",function(){return _.onClose()}),C._uU(9,"X"),C.qZA()(),C.TgZ(10,"mat-card-content",8)(11,"div",9),C.YNc(12,k,2,6,"div",10),C.YNc(13,u,6,1,"div",11),C.YNc(14,z,1,0,"mat-divider",12),C.TgZ(15,"div",13)(16,"div",14)(17,"h4",15),C._uU(18,"Address"),C.qZA(),C.TgZ(19,"span",16),C._uU(20),C.qZA()()(),C._UZ(21,"mat-divider",17),C.TgZ(22,"div",18)(23,"button",19),C.NdJ("copied",function(P){return _.onCopyAddress(P)}),C._uU(24,"Copy Address"),C.qZA()()()()()()),2&p&&(C.xp6(1),C.Q6J("ngIf",_.address),C.xp6(4),C.Q6J("icon",_.faReceipt),C.xp6(2),C.Oqu(_.screenSize===_.screenSizeEnum.XS?"Address":"Generated Address"),C.xp6(5),C.Q6J("ngIf",_.address),C.xp6(1),C.Q6J("ngIf",""!==_.addressType),C.xp6(1),C.Q6J("ngIf",""!==_.addressType),C.xp6(6),C.Oqu(_.address),C.xp6(3),C.Q6J("payload",_.address))},directives:[V.xw,V.Wh,g.O5,V.yH,g.mk,H.oO,x.uU,N.dk,T.BN,w.lW,N.dn,D.d,O.h,F.y],styles:[""]}),o})()},7671:(B,y,t)=>{t.d(y,{D:()=>Y});var a=t(5e3),v=t(113),m=t(7731),C=t(5043),c=t(7093),e=t(7423),b=t(5245),V=t(9808),g=t(4107),H=t(3075),x=t(508),N=t(7322);let T=(()=>{class l extends x.LF{format(r,s){return"MMM YYYY"===s?m.gg[r.getMonth()].name+", "+r.getFullYear():"YYYY"===s?r.getFullYear().toString():r.getDate()+"/"+m.gg[r.getMonth()].name+"/"+r.getFullYear()}}return l.\u0275fac=function(){let L;return function(s){return(L||(L=a.n5z(l)))(s||l)}}(),l.\u0275prov=a.Yz7({token:l,factory:l.\u0275fac}),l})();const w={parse:{dateInput:"LL"},display:{dateInput:"MMM YYYY",monthYearLabel:"YYYY",dateA11yLabel:"LL",monthYearA11yLabel:"YYYY"}},D={parse:{dateInput:"LL"},display:{dateInput:"YYYY",monthYearLabel:"YYYY",dateA11yLabel:"LL",monthYearA11yLabel:"YYYY"}};let O=(()=>{class l{}return l.\u0275fac=function(r){return new(r||l)},l.\u0275dir=a.lG2({type:l,selectors:[["","monthlyDate",""]],features:[a._Bn([{provide:x._A,useClass:T},{provide:x.sG,useValue:w}])]}),l})(),F=(()=>{class l{}return l.\u0275fac=function(r){return new(r||l)},l.\u0275dir=a.lG2({type:l,selectors:[["","yearlyDate",""]],features:[a._Bn([{provide:x._A,useClass:T},{provide:x.sG,useValue:D}])]}),l})();var E=t(7531),A=t(6856),k=t(6534),u=t(9843);const z=["monthlyDatepicker"],M=["yearlyDatepicker"],o=function(){return{animationDirection:"forward"}};function h(l,L){if(1&l&&a.GkF(0,9),2&l){a.oxw();const r=a.MAs(19);a.Q6J("ngTemplateOutlet",r)("ngTemplateOutletContext",a.DdM(2,o))}}const p=function(){return{animationDirection:"backward"}};function _(l,L){if(1&l&&a.GkF(0,9),2&l){a.oxw();const r=a.MAs(19);a.Q6J("ngTemplateOutlet",r)("ngTemplateOutletContext",a.DdM(2,p))}}const R=function(){return{animationDirection:""}};function P(l,L){if(1&l&&a.GkF(0,9),2&l){a.oxw();const r=a.MAs(19);a.Q6J("ngTemplateOutlet",r)("ngTemplateOutletContext",a.DdM(2,R))}}function U(l,L){if(1&l&&(a.TgZ(0,"mat-option",17),a._uU(1),a.ALo(2,"titlecase"),a.qZA()),2&l){const r=L.$implicit;a.Q6J("value",r),a.xp6(1),a.hij(" ",a.lcZ(2,2,r)," ")}}function W(l,L){if(1&l){const r=a.EpF();a.TgZ(0,"mat-form-field",18)(1,"input",19,20),a.NdJ("ngModelChange",function(n){return a.CHM(r),a.oxw(2).selectedValue=n}),a.qZA(),a._UZ(3,"mat-datepicker-toggle",21),a.TgZ(4,"mat-datepicker",22,23),a.NdJ("monthSelected",function(n){return a.CHM(r),a.oxw(2).onMonthSelected(n)})("dateSelected",function(n){return a.CHM(r),a.oxw(2).onMonthSelected(n)}),a.qZA()()}if(2&l){const r=a.MAs(5),s=a.oxw(2);a.xp6(1),a.Q6J("matDatepicker",r)("min",s.first)("max",s.last)("ngModel",s.selectedValue),a.xp6(2),a.Q6J("for",r),a.xp6(1),a.Q6J("startAt",s.selectedValue)}}function Z(l,L){if(1&l){const r=a.EpF();a.TgZ(0,"mat-form-field",24)(1,"input",25,26),a.NdJ("ngModelChange",function(n){return a.CHM(r),a.oxw(2).selectedValue=n}),a.qZA(),a._UZ(3,"mat-datepicker-toggle",21),a.TgZ(4,"mat-datepicker",27,28),a.NdJ("yearSelected",function(n){return a.CHM(r),a.oxw(2).onYearSelected(n)})("monthSelected",function(n){return a.CHM(r),a.oxw(2).onYearSelected(n)})("dateSelected",function(n){return a.CHM(r),a.oxw(2).onYearSelected(n)}),a.qZA()()}if(2&l){const r=a.MAs(5),s=a.oxw(2);a.xp6(1),a.Q6J("matDatepicker",r)("min",s.first)("max",s.last)("ngModel",s.selectedValue),a.xp6(2),a.Q6J("for",r),a.xp6(1),a.Q6J("startAt",s.selectedValue)}}function G(l,L){if(1&l){const r=a.EpF();a.TgZ(0,"div",10)(1,"div",11)(2,"mat-select",12),a.NdJ("ngModelChange",function(n){return a.CHM(r),a.oxw().selScrollRange=n})("selectionChange",function(n){return a.CHM(r),a.oxw().onRangeChanged(n)}),a.YNc(3,U,3,4,"mat-option",13),a.qZA()(),a.TgZ(4,"div",14),a.YNc(5,W,6,6,"mat-form-field",15),a.YNc(6,Z,6,6,"mat-form-field",16),a.qZA()()}if(2&l){const r=a.oxw();a.Q6J("@sliderAnimation",r.animationDirection),a.xp6(2),a.Q6J("ngModel",r.selScrollRange),a.xp6(1),a.Q6J("ngForOf",r.scrollRanges),a.xp6(2),a.Q6J("ngIf",r.selScrollRange===r.scrollRanges[0]),a.xp6(1),a.Q6J("ngIf",r.selScrollRange===r.scrollRanges[1])}}let Y=(()=>{class l{constructor(r){this.logger=r,this.scrollRanges=m.op,this.selScrollRange=this.scrollRanges[0],this.today=new Date(Date.now()),this.first=new Date(2018,0,1,0,0,0),this.last=new Date(this.today.getFullYear(),this.today.getMonth(),this.today.getDate(),0,0,0),this.disablePrev=!1,this.disableNext=!0,this.animationDirection="",this.selectedValue=this.last,this.stepChanged=new a.vpe}onRangeChanged(r){this.selScrollRange=r.value,this.onStepChange("LAST")}onMonthSelected(r){this.selectedValue=r,this.onStepChange("SELECTED"),this.monthlyDatepicker.close()}onYearSelected(r){this.selectedValue=r,this.onStepChange("SELECTED"),this.yearlyDatepicker.close()}onStepChange(r){switch(this.logger.info(r),r){case"FIRST":this.animationDirection="backward",this.selectedValue!==this.first&&(this.selectedValue=this.first,this.stepChanged.emit({selDate:this.selectedValue,selScrollRange:this.selScrollRange}));break;case"PREVIOUS":this.selectedValue=this.selScrollRange===m.op[1]?new Date(this.selectedValue.getFullYear()-1,0,1,0,0,0):new Date(this.selectedValue.getFullYear(),this.selectedValue.getMonth()-1,1,0,0,0),this.animationDirection="backward",this.stepChanged.emit({selDate:this.selectedValue,selScrollRange:this.selScrollRange});break;case"NEXT":this.selectedValue=this.selScrollRange===m.op[1]?new Date(this.selectedValue.getFullYear()+1,0,1,0,0,0):new Date(this.selectedValue.getFullYear(),this.selectedValue.getMonth()+1,1,0,0,0),this.animationDirection="forward",this.stepChanged.emit({selDate:this.selectedValue,selScrollRange:this.selScrollRange});break;case"LAST":this.animationDirection="forward",this.selectedValue=this.last,this.stepChanged.emit({selDate:this.selectedValue,selScrollRange:this.selScrollRange});break;default:this.animationDirection="",this.stepChanged.emit({selDate:this.selectedValue,selScrollRange:this.selScrollRange})}this.disablePrev=this.selScrollRange===m.op[1]?this.selectedValue.getFullYear()<=this.first.getFullYear():this.selectedValue.getFullYear()<=this.first.getFullYear()&&this.selectedValue.getMonth()<=this.first.getMonth(),this.disableNext=this.selScrollRange===m.op[1]?this.selectedValue.getFullYear()>=this.last.getFullYear():this.selectedValue.getFullYear()>=this.last.getFullYear()&&this.selectedValue.getMonth()>=this.last.getMonth(),this.logger.info(this.disablePrev),this.logger.info(this.disableNext),setTimeout(()=>{this.animationDirection=""},800)}onChartMouseUp(r){"monthlyDate"===r.srcElement.name?this.monthlyDatepicker.open():"yearlyDate"===r.srcElement.name&&this.yearlyDatepicker.open()}}return l.\u0275fac=function(r){return new(r||l)(a.Y36(C.mQ))},l.\u0275cmp=a.Xpm({type:l,selectors:[["rtl-horizontal-scroller"]],viewQuery:function(r,s){if(1&r&&(a.Gf(z,5),a.Gf(M,5)),2&r){let n;a.iGM(n=a.CRH())&&(s.monthlyDatepicker=n.first),a.iGM(n=a.CRH())&&(s.yearlyDatepicker=n.first)}},hostBindings:function(r,s){1&r&&a.NdJ("click",function(f){return s.onChartMouseUp(f)})},outputs:{stepChanged:"stepChanged"},decls:20,vars:5,consts:[["fxLayout","row","fxLayoutAlign","space-between stretch","fxFlex","100",1,"padding-gap-x"],["fxLayout","row","fxLayoutAlign","start center","fxFlex","22"],["mat-icon-button","","color","primary","type","button","tabindex","1",1,"pr-4",3,"click"],["mat-icon-button","","color","primary","type","button","tabindex","2",3,"disabled","click"],[3,"ngTemplateOutlet","ngTemplateOutletContext",4,"ngIf"],["fxLayout","row","fxLayoutAlign","end center","fxFlex","22"],["mat-icon-button","","color","primary","type","button","tabindex","5",1,"pr-4",3,"disabled","click"],["mat-icon-button","","color","primary","type","button","tabindex","6",3,"click"],["controlsPanel",""],[3,"ngTemplateOutlet","ngTemplateOutletContext"],["fxLayout","row","fxLayoutAlign","center center","fxFlex","56"],["fxFlex","50","fxLayoutAlign","center center","fxLayoutAlign.gt-xs","end center",1,"font-bold-700"],["fxFlex","80","fxFlex.gt-md","30","name","selScrlRange","placeholder","Range","tabindex","3",1,"font-bold-700",3,"ngModel","ngModelChange","selectionChange"],[3,"value",4,"ngFor","ngForOf"],["fxFlex","50","fxLayout","row","fxLayoutAlign","center center","fxLayoutAlign.gt-xs","start center"],["monthlyDate","","fxFlex","80","fxFlex.gt-md","30","fxLayoutAlign","center center",4,"ngIf"],["yearlyDate","","fxFlex","80","fxFlex.gt-md","30","fxLayoutAlign","center center",4,"ngIf"],[3,"value"],["monthlyDate","","fxFlex","80","fxFlex.gt-md","30","fxLayoutAlign","center center"],["matInput","","name","monthlyDate","tabindex","4","readonly","",3,"matDatepicker","min","max","ngModel","ngModelChange"],["monthlyDt","ngModel"],["matSuffix","",3,"for"],["startView","year",3,"startAt","monthSelected","dateSelected"],["monthlyDatepicker",""],["yearlyDate","","fxFlex","80","fxFlex.gt-md","30","fxLayoutAlign","center center"],["matInput","","name","yearlyDate","tabindex","4","readonly","",3,"matDatepicker","min","max","ngModel","ngModelChange"],["yearlyDt","ngModel"],["startView","multi-year",3,"startAt","yearSelected","monthSelected","dateSelected"],["yearlyDatepicker",""]],template:function(r,s){1&r&&(a.TgZ(0,"div",0)(1,"div",1)(2,"button",2),a.NdJ("click",function(){return s.onStepChange("FIRST")}),a.TgZ(3,"mat-icon"),a._uU(4,"skip_previous"),a.qZA()(),a.TgZ(5,"button",3),a.NdJ("click",function(){return s.onStepChange("PREVIOUS")}),a.TgZ(6,"mat-icon"),a._uU(7,"navigate_before"),a.qZA()()(),a.YNc(8,h,1,3,"ng-container",4),a.YNc(9,_,1,3,"ng-container",4),a.YNc(10,P,1,3,"ng-container",4),a.TgZ(11,"div",5)(12,"button",6),a.NdJ("click",function(){return s.onStepChange("NEXT")}),a.TgZ(13,"mat-icon"),a._uU(14,"navigate_next"),a.qZA()(),a.TgZ(15,"button",7),a.NdJ("click",function(){return s.onStepChange("LAST")}),a.TgZ(16,"mat-icon"),a._uU(17,"skip_next"),a.qZA()()()(),a.YNc(18,G,7,5,"ng-template",null,8,a.W1O)),2&r&&(a.xp6(5),a.Q6J("disabled",s.disablePrev),a.xp6(3),a.Q6J("ngIf","forward"===s.animationDirection),a.xp6(1),a.Q6J("ngIf","backward"===s.animationDirection),a.xp6(1),a.Q6J("ngIf",""===s.animationDirection),a.xp6(2),a.Q6J("disabled",s.disableNext))},directives:[c.xw,c.Wh,c.yH,e.lW,b.Hw,V.O5,V.tP,g.gD,H.JJ,H.On,V.sg,x.ey,N.KE,O,E.Nt,A.hl,k.q,u.F,H.Fj,A.nW,N.R9,A.Mq,F],pipes:[V.rS],styles:[""],data:{animation:[v.l]}}),l})()},165:(B,y,t)=>{t.d(y,{g:()=>s});var a=t(6087),v=t(4847),m=t(2075),C=t(7731),c=t(7861),e=t(5e3),b=t(62),V=t(5620),g=t(9808),H=t(7093),x=t(7322),N=t(7531),T=t(3075),w=t(8129),D=t(4107),O=t(508),F=t(7423),E=t(3322);function A(n,f){1&n&&(e.TgZ(0,"th",27),e._uU(1,"Date"),e.qZA())}function k(n,f){if(1&n&&(e.TgZ(0,"td",28),e._uU(1),e.ALo(2,"date"),e.qZA()),2&n){const i=f.$implicit,d=e.oxw();e.xp6(1),e.Oqu(e.xi3(2,1,null==i?null:i.date,d.dataRange===d.scrollRanges[1]?"MMM/yyyy":"dd/MMM/yyyy"))}}function u(n,f){1&n&&(e.TgZ(0,"th",29),e._uU(1,"Amount Paid (Sats)"),e.qZA())}function z(n,f){if(1&n&&(e.TgZ(0,"td",28)(1,"span",30),e._uU(2),e.ALo(3,"number"),e.qZA()()),2&n){const i=f.$implicit;e.xp6(2),e.Oqu(e.xi3(3,1,null==i?null:i.amount_paid,"1.0-2"))}}function M(n,f){1&n&&(e.TgZ(0,"th",29),e._uU(1,"# Payments"),e.qZA())}function o(n,f){if(1&n&&(e.TgZ(0,"td",28)(1,"span",30),e._uU(2),e.ALo(3,"number"),e.qZA()()),2&n){const i=f.$implicit;e.xp6(2),e.Oqu(e.lcZ(3,1,null==i?null:i.num_payments))}}function h(n,f){1&n&&(e.TgZ(0,"th",29),e._uU(1,"Amount Received (Sats)"),e.qZA())}function p(n,f){if(1&n&&(e.TgZ(0,"td",28)(1,"span",30),e._uU(2),e.ALo(3,"number"),e.qZA()()),2&n){const i=f.$implicit;e.xp6(2),e.Oqu(e.xi3(3,1,null==i?null:i.amount_received,"1.0-2"))}}function _(n,f){1&n&&(e.TgZ(0,"th",29),e._uU(1,"# Invoices"),e.qZA())}function R(n,f){if(1&n&&(e.TgZ(0,"td",28)(1,"span",30),e._uU(2),e.ALo(3,"number"),e.qZA()()),2&n){const i=f.$implicit;e.xp6(2),e.Oqu(e.lcZ(3,1,null==i?null:i.num_invoices))}}function P(n,f){if(1&n){const i=e.EpF();e.TgZ(0,"th",31)(1,"div",32)(2,"mat-select",33),e._UZ(3,"mat-select-trigger"),e.TgZ(4,"mat-option",34),e.NdJ("click",function(){return e.CHM(i),e.oxw().onDownloadCSV()}),e._uU(5,"Download CSV"),e.qZA()()()()}}function U(n,f){if(1&n){const i=e.EpF();e.TgZ(0,"td",35)(1,"button",36),e.NdJ("click",function(){const I=e.CHM(i).$implicit;return e.oxw().onTransactionClick(I)}),e._uU(2,"View Info"),e.qZA()()}}function W(n,f){1&n&&(e.TgZ(0,"p"),e._uU(1,"No transaction available."),e.qZA())}function Z(n,f){if(1&n&&(e.TgZ(0,"td",37),e.YNc(1,W,2,0,"p",38),e.qZA()),2&n){const i=e.oxw();e.xp6(1),e.Q6J("ngIf",!(null!=i.transactions&&i.transactions.data)||(null==i.transactions||null==i.transactions.data?null:i.transactions.data.length)<1)}}const G=function(n){return{"display-none":n}};function Y(n,f){if(1&n&&e._UZ(0,"tr",39),2&n){const i=e.oxw();e.Q6J("ngClass",e.VKq(1,G,(null==i.transactions?null:i.transactions.data)&&(null==i.transactions||null==i.transactions.data?null:i.transactions.data.length)>0))}}function l(n,f){1&n&&e._UZ(0,"tr",40)}function L(n,f){1&n&&e._UZ(0,"tr",41)}const r=function(){return["no_transaction"]};let s=(()=>{class n{constructor(i,d,S){this.commonService=i,this.store=d,this.datePipe=S,this.dataRange=C.op[0],this.dataList=[],this.filterValue="",this.timezoneOffset=60*new Date(Date.now()).getTimezoneOffset(),this.scrollRanges=C.op,this.displayedColumns=[],this.flgSticky=!1,this.pageSize=C.IV,this.pageSizeOptions=C.TJ,this.screenSize="",this.screenSizeEnum=C.cu,this.screenSize=this.commonService.getScreenSize(),this.screenSize===C.cu.XS||this.screenSize===C.cu.SM?(this.flgSticky=!1,this.displayedColumns=["date","amount_paid","amount_received","actions"]):this.screenSize===C.cu.MD?(this.flgSticky=!1,this.displayedColumns=["date","amount_paid","num_payments","amount_received","num_invoices","actions"]):(this.flgSticky=!0,this.displayedColumns=["date","amount_paid","num_payments","amount_received","num_invoices","actions"])}ngOnInit(){this.dataList&&this.dataList.length>0&&this.loadTransactionsTable(this.dataList)}ngAfterViewInit(){this.setTableWidgets()}ngOnChanges(i){i.dataList&&!i.dataList.firstChange&&this.loadTransactionsTable(this.dataList),i.filterValue&&!i.filterValue.firstChange&&this.applyFilter()}onTransactionClick(i){const d=[[{key:"date",value:this.datePipe.transform(i.date,this.dataRange===C.op[1]?"MMM/yyyy":"dd/MMM/yyyy"),title:"Date",width:100,type:C.Gi.DATE}],[{key:"amount_paid",value:Math.round(i.amount_paid),title:"Amount Paid (Sats)",width:50,type:C.Gi.NUMBER},{key:"num_payments",value:i.num_payments,title:"# Payments",width:50,type:C.Gi.NUMBER}],[{key:"amount_received",value:Math.round(i.amount_received),title:"Amount Received (Sats)",width:50,type:C.Gi.NUMBER},{key:"num_invoices",value:i.num_invoices,title:"# Invoices",width:50,type:C.Gi.NUMBER}]];this.store.dispatch((0,c.qR)({payload:{data:{type:C.n_.INFORMATION,alertTitle:"Transaction Summary",message:d}}}))}applyFilter(){this.transactions&&(this.transactions.filter=this.filterValue.trim().toLowerCase())}loadTransactionsTable(i){this.transactions=new m.by(i?[...i]:[]),this.setTableWidgets()}setTableWidgets(){this.transactions&&this.transactions.data&&this.transactions.data.length>0&&(this.transactions.sortingDataAccessor=(i,d)=>i[d]&&isNaN(i[d])?i[d].toLocaleLowerCase():i[d]?+i[d]:null,this.transactions.sort=this.sort,this.transactions.filterPredicate=(i,d)=>((i.date?(this.datePipe.transform(i.date,"dd/MMM")+"/"+i.date.getFullYear()).toLowerCase():"")+JSON.stringify(i).toLowerCase()).includes(d),this.transactions.paginator=this.paginator)}onDownloadCSV(){this.transactions.data&&this.transactions.data.length>0&&this.commonService.downloadFile(this.dataList,"Transactions-report-"+this.dataRange.toLowerCase())}}return n.\u0275fac=function(i){return new(i||n)(e.Y36(b.v),e.Y36(V.yh),e.Y36(g.uU))},n.\u0275cmp=e.Xpm({type:n,selectors:[["rtl-transactions-report-table"]],viewQuery:function(i,d){if(1&i&&(e.Gf(v.YE,5),e.Gf(a.NW,5)),2&i){let S;e.iGM(S=e.CRH())&&(d.sort=S.first),e.iGM(S=e.CRH())&&(d.paginator=S.first)}},inputs:{dataRange:"dataRange",dataList:"dataList",filterValue:"filterValue"},features:[e._Bn([{provide:a.ye,useValue:(0,C.pt)("Transactions")}]),e.TTD],decls:34,vars:10,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",1,"padding-gap-x"],["fxLayout","column","fxLayoutAlign","start stretch"],["fxLayout","column","fxLayoutAlign","start stretch","fxLayout.gt-sm","row wrap",1,"page-sub-title-container","mt-1"],["fxFlex","70"],["fxFlex","30","fxLayoutAlign","start end"],["matInput","","name","filter","placeholder","Filter",3,"ngModel","ngModelChange","input","keyup"],["fxLayout","row","fxLayoutAlign","start start"],["fxLayout","column","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mat-table","","fxFlex","100","matSort","",1,"overflow-auto",3,"dataSource"],["table",""],["matColumnDef","date"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","amount_paid"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["matColumnDef","num_payments"],["matColumnDef","amount_received"],["matColumnDef","num_invoices"],["matColumnDef","actions"],["mat-header-cell","","class","px-3",4,"matHeaderCellDef"],["mat-cell","","class","px-3","fxLayoutAlign","end center",4,"matCellDef"],["matColumnDef","no_transaction"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"pageSize","pageSizeOptions","showFirstLastButtons"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["fxLayoutAlign","end center"],["mat-header-cell","",1,"px-3"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",1,"px-3"],["mat-stroked-button","","color","primary","type","button","tabindex","4",3,"click"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(i,d){1&i&&(e.TgZ(0,"div",0)(1,"div",1)(2,"div",2),e._UZ(3,"div",3),e.TgZ(4,"mat-form-field",4)(5,"input",5),e.NdJ("ngModelChange",function(I){return d.filterValue=I})("input",function(){return d.applyFilter()})("keyup",function(){return d.applyFilter()}),e.qZA()()(),e.TgZ(6,"div",6)(7,"div",7)(8,"table",8,9),e.ynx(10,10),e.YNc(11,A,2,0,"th",11),e.YNc(12,k,3,4,"td",12),e.BQk(),e.ynx(13,13),e.YNc(14,u,2,0,"th",14),e.YNc(15,z,4,4,"td",12),e.BQk(),e.ynx(16,15),e.YNc(17,M,2,0,"th",14),e.YNc(18,o,4,3,"td",12),e.BQk(),e.ynx(19,16),e.YNc(20,h,2,0,"th",14),e.YNc(21,p,4,4,"td",12),e.BQk(),e.ynx(22,17),e.YNc(23,_,2,0,"th",14),e.YNc(24,R,4,3,"td",12),e.BQk(),e.ynx(25,18),e.YNc(26,P,6,0,"th",19),e.YNc(27,U,3,0,"td",20),e.BQk(),e.ynx(28,21),e.YNc(29,Z,2,1,"td",22),e.BQk(),e.YNc(30,Y,1,3,"tr",23),e.YNc(31,l,1,0,"tr",24),e.YNc(32,L,1,0,"tr",25),e.qZA(),e._UZ(33,"mat-paginator",26),e.qZA()()()()),2&i&&(e.xp6(5),e.Q6J("ngModel",d.filterValue),e.xp6(3),e.Q6J("dataSource",d.transactions),e.xp6(22),e.Q6J("matFooterRowDef",e.DdM(9,r)),e.xp6(1),e.Q6J("matHeaderRowDef",d.displayedColumns)("matHeaderRowDefSticky",d.flgSticky),e.xp6(1),e.Q6J("matRowDefColumns",d.displayedColumns),e.xp6(1),e.Q6J("pageSize",d.pageSize)("pageSizeOptions",d.pageSizeOptions)("showFirstLastButtons",d.screenSize!==d.screenSizeEnum.XS))},directives:[H.xw,H.yH,H.Wh,x.KE,N.Nt,T.Fj,T.JJ,T.On,w.$V,m.BZ,v.YE,m.w1,m.fO,m.ge,v.nU,m.Dz,m.ev,D.gD,D.$L,O.ey,F.lW,m.mD,m.yh,g.O5,m.Ke,m.Q2,g.mk,E.oO,m.as,m.XQ,m.nj,m.Gk,a.NW],pipes:[g.uU,g.JJ],styles:[".mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})()}}]);
\ No newline at end of file
diff --git a/frontend/515.73bff63b24de0558.js b/frontend/515.73bff63b24de0558.js
deleted file mode 100644
index 8a1108e1..00000000
--- a/frontend/515.73bff63b24de0558.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkRTLApp=self.webpackChunkRTLApp||[]).push([[515],{1515:($d,It,g)=>{g.r(It),g.d(It,{LNDModule:()=>Kd});var u=g(9808),v=g(1402),ce=g(8878),t=g(5e3),m=g(7093),J=g(5899);function pe(n,i){1&n&&t._UZ(0,"mat-progress-bar",3)}let Rt=(()=>{class n{constructor(e){this.router=e,this.loading=!1,this.router.events.subscribe(o=>{switch(!0){case o instanceof v.OD:this.loading=!0;break;case o instanceof v.m2:case o instanceof v.gk:case o instanceof v.Q3:this.loading=!1}})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(v.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-lnd-root"]],decls:4,vars:1,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch",1,"inner-sidenav-content"],["color","primary","mode","indeterminate",4,"ngIf"],["outlet","outlet"],["color","primary","mode","indeterminate"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,pe,1,0,"mat-progress-bar",1),t._UZ(2,"router-outlet",null,2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",o.loading))},directives:[m.xw,m.yH,m.Wh,u.O5,J.pW,v.lC],styles:[""],data:{animation:[ce.g]}}),n})();var d=g(7579),_=g(2722),H=g(9300),Dt=g(534),b=g(801),s=g(7731),T=g(6529),N=g(5043),S=g(5620),j=g(6642),O=g(62),D=g(9444),Ct=g(3954),y=g(9224),q=g(7423),wt=g(2181),$=g(5245),L=g(3322);const Qt=function(n){return{backgroundColor:n}};function ue(n,i){if(1&n&&t._UZ(0,"span",6),2&n){const e=t.oxw();t.Q6J("ngStyle",t.VKq(1,Qt,null==e.information?null:e.information.color))}}function me(n,i){if(1&n&&(t.TgZ(0,"div")(1,"h4",1),t._uU(2,"Color"),t.qZA(),t.TgZ(3,"div",2),t._UZ(4,"span",7),t._uU(5),t.ALo(6,"uppercase"),t.qZA()()),2&n){const e=t.oxw();t.xp6(4),t.Q6J("ngStyle",t.VKq(4,Qt,null==e.information?null:e.information.color)),t.xp6(1),t.hij(" ",t.lcZ(6,2,null==e.information?null:e.information.color)," ")}}function de(n,i){if(1&n&&(t.TgZ(0,"span",2),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Oqu(e)}}let Jt=(()=>{class n{constructor(e){this.commonService=e,this.chains=[""]}ngOnChanges(){this.information&&this.information.chains&&this.information.chains.length>0&&(this.chains=[""],this.information.chains.forEach(e=>{this.chains.push(this.commonService.titleCase(e.chain)+" "+this.commonService.titleCase(e.network))}))}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(O.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-node-info"]],inputs:{information:"information",showColorFieldSeparately:"showColorFieldSeparately"},features:[t.TTD],decls:17,vars:5,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],[1,"dashboard-info-title"],[1,"overflow-wrap","dashboard-info-value"],["class","dashboard-node-dot dot",3,"ngStyle",4,"ngIf"],[4,"ngIf"],["class","overflow-wrap dashboard-info-value",4,"ngFor","ngForOf"],[1,"dashboard-node-dot","dot",3,"ngStyle"],[1,"dashboard-node-square",3,"ngStyle"]],template:function(e,o){1&e&&(t.TgZ(0,"div",0)(1,"div")(2,"h4",1),t._uU(3,"Alias"),t.qZA(),t.TgZ(4,"div",2),t._uU(5),t.YNc(6,ue,1,3,"span",3),t.qZA()(),t.YNc(7,me,7,6,"div",4),t.TgZ(8,"div")(9,"h4",1),t._uU(10,"Implementation"),t.qZA(),t.TgZ(11,"div",2),t._uU(12),t.qZA()(),t.TgZ(13,"div")(14,"h4",1),t._uU(15,"Chain"),t.qZA(),t.YNc(16,de,2,1,"span",5),t.qZA()()),2&e&&(t.xp6(5),t.hij(" ",null==o.information?null:o.information.alias," "),t.xp6(1),t.Q6J("ngIf",!o.showColorFieldSeparately),t.xp6(1),t.Q6J("ngIf",o.showColorFieldSeparately),t.xp6(5),t.Oqu(null!=o.information&&o.information.lnImplementation||null!=o.information&&o.information.version?(null==o.information?null:o.information.lnImplementation)+" "+(null==o.information?null:o.information.version):""),t.xp6(4),t.Q6J("ngForOf",o.chains))},directives:[m.xw,m.yH,m.Wh,u.O5,u.PC,L.Zl,u.sg],pipes:[u.gd],styles:[""]}),n})();function he(n,i){if(1&n&&(t.TgZ(0,"div",2)(1,"div")(2,"h4",3),t._uU(3,"Lightning"),t.qZA(),t.TgZ(4,"div",4),t._uU(5),t.ALo(6,"number"),t.qZA(),t._UZ(7,"mat-progress-bar",5),t.qZA(),t.TgZ(8,"div")(9,"h4",3),t._uU(10,"On-chain"),t.qZA(),t.TgZ(11,"div",4),t._uU(12),t.ALo(13,"number"),t.qZA(),t._UZ(14,"mat-progress-bar",5),t.qZA(),t.TgZ(15,"div")(16,"h4",3),t._uU(17,"Total"),t.qZA(),t.TgZ(18,"div",4),t._uU(19),t.ALo(20,"number"),t.qZA()()()),2&n){const e=t.oxw();t.xp6(5),t.hij("",t.lcZ(6,5,null==e.balances?null:e.balances.lightning)," Sats"),t.xp6(2),t.s9C("value",(null==e.balances?null:e.balances.lightning)/(null==e.balances?null:e.balances.total)*100),t.xp6(5),t.hij("",t.lcZ(13,7,null==e.balances?null:e.balances.onchain)," Sats"),t.xp6(2),t.s9C("value",(null==e.balances?null:e.balances.onchain)/(null==e.balances?null:e.balances.total)*100),t.xp6(5),t.hij("",t.lcZ(20,9,null==e.balances?null:e.balances.total)," Sats")}}function _e(n,i){if(1&n&&(t.TgZ(0,"div",6)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let fe=(()=>{class n{constructor(){this.balances={onchain:0,lightning:0,total:0}}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-balances-info"]],inputs:{balances:"balances",errorMessage:"errorMessage"},decls:3,vars:2,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",4,"ngIf","ngIfElse"],["errorBlock",""],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayoutAlign","start",1,"dashboard-info-title"],[1,"overflow-wrap","dashboard-info-value"],["mode","determinate",1,"dashboard-progress-bar",3,"value"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,o){if(1&e&&(t.YNc(0,he,21,11,"div",0),t.YNc(1,_e,3,1,"ng-template",null,1,t.W1O)),2&e){const a=t.MAs(2);t.Q6J("ngIf"," "===o.errorMessage)("ngIfElse",a)}},directives:[u.O5,m.xw,m.yH,m.Wh,J.pW],pipes:[u.JJ],styles:[""]}),n})();var C=g(7322),K=g(7238),V=g(4834),z=g(8129);const ge=function(){return["../connections/channels/open"]},Ce=function(n){return{filter:n}};function xe(n,i){if(1&n&&(t.TgZ(0,"div",19)(1,"a",20),t._uU(2),t.ALo(3,"slice"),t.qZA(),t.TgZ(4,"div",6)(5,"mat-hint",21)(6,"strong",8),t._uU(7,"Local:"),t.qZA(),t._uU(8),t.ALo(9,"number"),t.qZA(),t.TgZ(10,"mat-hint",22),t._UZ(11,"fa-icon",23),t._uU(12),t.ALo(13,"number"),t.qZA(),t.TgZ(14,"mat-hint",24)(15,"strong",8),t._uU(16,"Remote:"),t.qZA(),t._uU(17),t.ALo(18,"number"),t.qZA()(),t._UZ(19,"mat-progress-bar",25),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(3);t.xp6(1),t.s9C("matTooltip",e.remote_alias||e.remote_pubkey),t.s9C("matTooltipDisabled",(e.remote_alias||e.remote_pubkey).length<26),t.Q6J("routerLink",t.DdM(21,ge))("state",t.VKq(22,Ce,e.chan_id)),t.xp6(1),t.AsE(" ",t.Dn7(3,11,e.remote_alias||e.remote_pubkey,0,24),"",(e.remote_alias||e.remote_pubkey).length>25?"...":""," "),t.xp6(6),t.hij("",t.lcZ(9,15,e.local_balance||0)," Sats"),t.xp6(3),t.Q6J("icon",o.faBalanceScale),t.xp6(1),t.hij(" (",t.lcZ(13,17,e.balancedness||0),") "),t.xp6(5),t.hij("",t.lcZ(18,19,e.remote_balance||0)," Sats"),t.xp6(2),t.s9C("value",e.local_balance&&e.local_balance>0?+e.local_balance/(+e.local_balance+ +e.remote_balance)*100:0)}}function ye(n,i){if(1&n&&(t.TgZ(0,"div",17),t.YNc(1,xe,20,24,"div",18),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.allChannels)}}function Te(n,i){if(1&n&&(t.TgZ(0,"div",3)(1,"div",4)(2,"span",5),t._uU(3,"Total Capacity"),t.qZA(),t.TgZ(4,"div",6)(5,"mat-hint",7)(6,"strong",8),t._uU(7,"Local:"),t.qZA(),t._uU(8),t.ALo(9,"number"),t.qZA(),t.TgZ(10,"mat-hint",9),t._UZ(11,"fa-icon",10),t._uU(12),t.ALo(13,"number"),t.qZA(),t.TgZ(14,"mat-hint",11)(15,"strong",8),t._uU(16,"Remote:"),t.qZA(),t._uU(17),t.ALo(18,"number"),t.qZA()(),t._UZ(19,"mat-progress-bar",12),t.qZA(),t.TgZ(20,"div",13),t._UZ(21,"mat-divider",14),t.qZA(),t.TgZ(22,"div",15),t.YNc(23,ye,2,1,"div",16),t.qZA()()),2&n){const e=t.oxw(),o=t.MAs(2);t.xp6(8),t.hij("",t.lcZ(9,7,(null==e.channelBalances?null:e.channelBalances.localBalance)||0)," Sats"),t.xp6(3),t.Q6J("icon",e.faBalanceScale),t.xp6(1),t.hij(" (",t.lcZ(13,9,(null==e.channelBalances?null:e.channelBalances.balancedness)||0),") "),t.xp6(5),t.hij("",t.lcZ(18,11,(null==e.channelBalances?null:e.channelBalances.remoteBalance)||0)," Sats"),t.xp6(2),t.s9C("value",null!=e.channelBalances&&e.channelBalances.localBalance&&(null==e.channelBalances?null:e.channelBalances.localBalance)>0?+(null==e.channelBalances?null:e.channelBalances.localBalance)/(+(null==e.channelBalances?null:e.channelBalances.localBalance)+ +(null==e.channelBalances?null:e.channelBalances.remoteBalance))*100:0),t.xp6(4),t.Q6J("ngIf",e.allChannels&&e.allChannels.length>0)("ngIfElse",o)}}function ve(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",26),t._uU(1," No channels available. "),t.TgZ(2,"button",27),t.NdJ("click",function(){return t.CHM(e),t.oxw().goToChannels()}),t._uU(3,"Open Channel"),t.qZA()()}}function be(n,i){if(1&n&&(t.TgZ(0,"div",28)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let we=(()=>{class n{constructor(e){this.router=e,this.faBalanceScale=b.DL8,this.faDumbbell=b.FlN,this.sortBy="Balance Score"}goToChannels(){this.router.navigateByUrl("/lnd/connections")}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(v.F0))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-channel-capacity-info"]],inputs:{channelBalances:"channelBalances",allChannels:"allChannels",sortBy:"sortBy",errorMessage:"errorMessage"},decls:5,vars:2,consts:[["fxLayout","column","fxLayoutAlign","space-between stretch","fxFlex","100",4,"ngIf","ngIfElse"],["noChannelBlock",""],["errorBlock",""],["fxLayout","column","fxLayoutAlign","space-between stretch","fxFlex","100"],["fxLayout","column","fxFlex","9","fxLayoutAlign","end start"],[1,"dashboard-capacity-header","this-channel-capacity"],["fxLayout","row","fxLayoutAlign","space-between start",1,"w-100"],["fxFlex","40","fxLayoutAlign","start center",1,"font-size-90"],[1,"font-weight-900","mr-5px"],["fxFlex","20","fxLayoutAlign","center center",1,"font-size-90"],["matTooltip","Balance Score",1,"mr-3px",3,"icon"],["fxFlex","40","fxLayoutAlign","end center",1,"font-size-90"],["mode","determinate","color","accent",1,"dashboard-progress-bar","this-channel-bar",3,"value"],["fxLayout","column","fxFlex","3","fxLayoutAlign","end stretch"],[1,"dashboard-divider"],[1,"channels-capacity-scroll",3,"perfectScrollbar"],["fxLayout","column","fxFlex","100",4,"ngIf","ngIfElse"],["fxLayout","column","fxFlex","100"],["class","mt-2",4,"ngFor","ngForOf"],[1,"mt-2"],[1,"dashboard-capacity-header",3,"routerLink","state","matTooltip","matTooltipDisabled"],["fxFlex","40","fxLayoutAlign","start center",1,"font-size-90","color-primary"],["fxFlex","20","fxLayoutAlign","center center",1,"font-size-90","color-primary"],["matTooltip","Balance Score",1,"color-primary","mr-3px",3,"icon"],["fxFlex","40","fxLayoutAlign","end center",1,"font-size-90","color-primary"],["mode","determinate",1,"dashboard-progress-bar",3,"value"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between start",1,"mt-1","w-100"],["mat-stroked-button","","color","primary","tabindex","1",3,"click"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,o){if(1&e&&(t.YNc(0,Te,24,13,"div",0),t.YNc(1,ve,4,0,"ng-template",null,1,t.W1O),t.YNc(3,be,3,1,"ng-template",null,2,t.W1O)),2&e){const a=t.MAs(4);t.Q6J("ngIf",""===(null==o.errorMessage?null:o.errorMessage.trim()))("ngIfElse",a)}},directives:[u.O5,m.xw,m.Wh,m.yH,C.bx,D.BN,K.gM,J.pW,V.d,z.$V,u.sg,v.yS,q.lW],pipes:[u.JJ,u.OU],styles:[".channels-capacity-scroll[_ngcontent-%COMP%]{width:100%;height:100%;overflow-y:hidden}"]}),n})();function Ze(n,i){if(1&n&&(t.TgZ(0,"div",2)(1,"div",3)(2,"div")(3,"h4",4),t._uU(4,"Daily"),t.qZA(),t.TgZ(5,"div",5),t._uU(6),t.ALo(7,"number"),t.qZA()(),t.TgZ(8,"div")(9,"h4",4),t._uU(10,"Weekly"),t.qZA(),t.TgZ(11,"div",5),t._uU(12),t.ALo(13,"number"),t.qZA()(),t.TgZ(14,"div")(15,"h4",4),t._uU(16,"Monthly"),t.qZA(),t.TgZ(17,"div",5),t._uU(18),t.ALo(19,"number"),t.qZA()(),t.TgZ(20,"div",6),t._UZ(21,"h4",7)(22,"span",5),t.qZA()(),t.TgZ(23,"div",3)(24,"div")(25,"h4",4),t._uU(26,"Transactions"),t.qZA(),t.TgZ(27,"div",5),t._uU(28),t.ALo(29,"number"),t.qZA()(),t.TgZ(30,"div")(31,"h4",4),t._uU(32,"Transactions"),t.qZA(),t.TgZ(33,"div",5),t._uU(34),t.ALo(35,"number"),t.qZA()(),t.TgZ(36,"div")(37,"h4",4),t._uU(38,"Transactions"),t.qZA(),t.TgZ(39,"div",5),t._uU(40),t.ALo(41,"number"),t.qZA()(),t.TgZ(42,"div",6),t._UZ(43,"h4",7)(44,"span",5),t.qZA()()()),2&n){const e=t.oxw();t.xp6(6),t.hij("",t.lcZ(7,6,null==e.fees?null:e.fees.day_fee_sum)," Sats"),t.xp6(6),t.hij("",t.lcZ(13,8,null==e.fees?null:e.fees.week_fee_sum)," Sats"),t.xp6(6),t.hij("",t.lcZ(19,10,null==e.fees?null:e.fees.month_fee_sum)," Sats"),t.xp6(10),t.Oqu(t.lcZ(29,12,null==e.fees?null:e.fees.daily_tx_count)),t.xp6(6),t.Oqu(t.lcZ(35,14,null==e.fees?null:e.fees.weekly_tx_count)),t.xp6(6),t.Oqu(t.lcZ(41,16,null==e.fees?null:e.fees.monthly_tx_count))}}function Ae(n,i){if(1&n&&(t.TgZ(0,"div",8)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let Et=(()=>{class n{constructor(){this.totalFees=[{name:"Monthly",value:0},{name:"Weekly",value:0},{name:"Daily",value:0}],this.maxFeeValue=100}ngOnChanges(){if(this.fees.month_fee_sum){this.totalFees=[{name:"Monthly",value:this.fees.month_fee_sum},{name:"Weekly",value:this.fees.week_fee_sum||0},{name:"Daily ",value:this.fees.day_fee_sum||0}];const e=Math.ceil(Math.log(this.fees.month_fee_sum+1)/Math.LN10),o=Math.pow(10,e-1);this.maxFeeValue=Math.ceil(this.fees.month_fee_sum/o)*o/5||100,Object.assign(this,this.totalFees)}else this.totalFees=[{name:"Monthly",value:0},{name:"Weekly",value:0},{name:"Daily",value:0}],this.maxFeeValue=100,Object.assign(this,this.totalFees)}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-fee-info"]],inputs:{fees:"fees",errorMessage:"errorMessage"},features:[t.TTD],decls:3,vars:2,consts:[["fxLayout","row","fxFlex","100","fxLayoutAlign","start stretch",4,"ngIf","ngIfElse"],["errorBlock",""],["fxLayout","row","fxFlex","100","fxLayoutAlign","start stretch"],["fxLayout","column","fxFlex","50","fxLayoutAlign","space-between stretch"],["fxLayoutAlign","start",1,"dashboard-info-title"],[1,"overflow-wrap","dashboard-info-value"],["fxFlex","20"],[1,"dashboard-info-title"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,o){if(1&e&&(t.YNc(0,Ze,45,18,"div",0),t.YNc(1,Ae,3,1,"ng-template",null,1,t.W1O)),2&e){const a=t.MAs(2);t.Q6J("ngIf",""===(null==o.errorMessage?null:o.errorMessage.trim()))("ngIfElse",a)}},directives:[u.O5,m.xw,m.yH,m.Wh],pipes:[u.JJ],styles:[""]}),n})();function Le(n,i){if(1&n&&(t.TgZ(0,"div",2)(1,"div",3)(2,"div")(3,"h4",4),t._uU(4,"Active"),t.qZA(),t.TgZ(5,"div",5),t._UZ(6,"span",6),t._uU(7),t.ALo(8,"number"),t.qZA()(),t.TgZ(9,"div")(10,"h4",4),t._uU(11,"Pending"),t.qZA(),t.TgZ(12,"div",5),t._UZ(13,"span",7),t._uU(14),t.ALo(15,"number"),t.qZA()(),t.TgZ(16,"div")(17,"h4",4),t._uU(18,"Inactive"),t.qZA(),t.TgZ(19,"div",5),t._UZ(20,"span",8),t._uU(21),t.ALo(22,"number"),t.qZA()(),t.TgZ(23,"div")(24,"h4",4),t._uU(25,"Closing"),t.qZA(),t.TgZ(26,"div",5),t._UZ(27,"span",9),t._uU(28),t.ALo(29,"number"),t.qZA()()(),t.TgZ(30,"div",3)(31,"div")(32,"h4",4),t._uU(33,"Capacity"),t.qZA(),t.TgZ(34,"div",5),t._uU(35),t.ALo(36,"number"),t.qZA()(),t.TgZ(37,"div")(38,"h4",4),t._uU(39,"Capacity"),t.qZA(),t.TgZ(40,"div",5),t._uU(41),t.ALo(42,"number"),t.qZA()(),t.TgZ(43,"div")(44,"h4",4),t._uU(45,"Capacity"),t.qZA(),t.TgZ(46,"div",5),t._uU(47),t.ALo(48,"number"),t.qZA()(),t.TgZ(49,"div")(50,"h4",4),t._uU(51,"Capacity"),t.qZA(),t.TgZ(52,"div",5),t._uU(53),t.ALo(54,"number"),t.qZA()()()()),2&n){const e=t.oxw();t.xp6(7),t.Oqu(t.lcZ(8,8,(null==e.channelsStatus||null==e.channelsStatus.active?null:e.channelsStatus.active.num_channels)||0)),t.xp6(7),t.Oqu(t.lcZ(15,10,(null==e.channelsStatus||null==e.channelsStatus.pending?null:e.channelsStatus.pending.num_channels)||0)),t.xp6(7),t.Oqu(t.lcZ(22,12,(null==e.channelsStatus||null==e.channelsStatus.inactive?null:e.channelsStatus.inactive.num_channels)||0)),t.xp6(7),t.Oqu(t.lcZ(29,14,(null==e.channelsStatus||null==e.channelsStatus.closing?null:e.channelsStatus.closing.num_channels)||0)),t.xp6(7),t.hij("",t.lcZ(36,16,(null==e.channelsStatus||null==e.channelsStatus.active?null:e.channelsStatus.active.capacity)||0)," Sats"),t.xp6(6),t.hij("",t.lcZ(42,18,(null==e.channelsStatus||null==e.channelsStatus.pending?null:e.channelsStatus.pending.capacity)||0)," Sats"),t.xp6(6),t.hij("",t.lcZ(48,20,(null==e.channelsStatus||null==e.channelsStatus.inactive?null:e.channelsStatus.inactive.capacity)||0)," Sats"),t.xp6(6),t.hij("",t.lcZ(54,22,(null==e.channelsStatus||null==e.channelsStatus.closing?null:e.channelsStatus.closing.capacity)||0)," Sats")}}function Se(n,i){if(1&n&&(t.TgZ(0,"div",10)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let Ht=(()=>{class n{constructor(){this.channelsStatus={}}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-channel-status-info"]],inputs:{channelsStatus:"channelsStatus",errorMessage:"errorMessage"},decls:3,vars:2,consts:[["fxLayout","row","fxFlex","100","fxLayoutAlign","start stretch",4,"ngIf","ngIfElse"],["errorBlock",""],["fxLayout","row","fxFlex","100","fxLayoutAlign","start stretch"],["fxLayout","column","fxFlex","50","fxLayoutAlign","space-between stretch"],["fxLayoutAlign","start",1,"dashboard-info-title"],[1,"overflow-wrap","dashboard-info-value"],[1,"dot","tiny-dot","green"],[1,"dot","tiny-dot","yellow"],[1,"dot","tiny-dot","grey"],[1,"dot","tiny-dot","red"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,o){if(1&e&&(t.YNc(0,Le,55,24,"div",0),t.YNc(1,Se,3,1,"ng-template",null,1,t.W1O)),2&e){const a=t.MAs(2);t.Q6J("ngIf"," "===o.errorMessage)("ngIfElse",a)}},directives:[u.O5,m.xw,m.yH,m.Wh],pipes:[u.JJ],styles:[""]}),n})();var p=g(3075),Q=g(8966),st=g(7772),rt=g(9107),Y=g(5615),E=g(1125);function Fe(n,i){1&n&&t.GkF(0)}function ke(n,i){1&n&&t.GkF(0)}const qe=function(n){return{"h-5":n}};function Ne(n,i){if(1&n&&(t.TgZ(0,"mat-expansion-panel",3)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span",4),t._uU(4),t.ALo(5,"number"),t.qZA()()(),t.YNc(6,ke,1,0,"ng-container",0),t.qZA()),2&n){const e=t.oxw(),o=t.MAs(4);t.Q6J("expanded",e.panelExpanded)("ngClass",t.VKq(7,qe,!e.flgShowPanel)),t.xp6(4),t.AsE("Quote for ",e.termCaption," amount (",t.lcZ(5,5,e.quote.amount)," Sats)"),t.xp6(2),t.Q6J("ngTemplateOutlet",o)}}function Oe(n,i){if(1&n&&(t.TgZ(0,"div",19)(1,"h4",8),t._uU(2," Prepay Amount (Sats) "),t.TgZ(3,"mat-icon",20),t._uU(4,"info_outline"),t.qZA()(),t.TgZ(5,"span",10),t._uU(6),t.ALo(7,"number"),t.qZA()()),2&n){const e=t.oxw(2);t.xp6(6),t.Oqu(t.lcZ(7,1,null==e.quote?null:e.quote.prepay_amt_sat))}}function Ue(n,i){1&n&&t._UZ(0,"mat-divider",13)}function Me(n,i){if(1&n&&(t.TgZ(0,"div",6)(1,"div",21)(2,"h4",8),t._uU(3," Swap Server Node Pubkey "),t.TgZ(4,"mat-icon",22),t._uU(5,"info_outline"),t.qZA()(),t.TgZ(6,"span",10),t._uU(7),t.qZA()()()),2&n){const e=t.oxw(2);t.xp6(7),t.Oqu(null==e.quote?null:e.quote.swap_payment_dest)}}function Pe(n,i){if(1&n&&(t.TgZ(0,"div",5)(1,"div",6)(2,"div",7)(3,"h4",8),t._uU(4," Swap Fee (Sats) "),t.TgZ(5,"mat-icon",9),t._uU(6,"info_outline"),t.qZA()(),t.TgZ(7,"span",10),t._uU(8),t.ALo(9,"number"),t.qZA()(),t.TgZ(10,"div",7)(11,"h4",8),t._uU(12),t.TgZ(13,"mat-icon",11),t._uU(14,"info_outline"),t.qZA()(),t.TgZ(15,"span",10),t._uU(16),t.ALo(17,"number"),t.qZA()(),t.YNc(18,Oe,8,3,"div",12),t.qZA(),t._UZ(19,"mat-divider",13),t.TgZ(20,"div",6)(21,"div",14)(22,"h4",8),t._uU(23," Max Off-chain Swap Routing Fee (Sats) "),t.TgZ(24,"mat-icon",15),t._uU(25,"info_outline"),t.qZA()(),t.TgZ(26,"span",10),t._uU(27),t.ALo(28,"number"),t.qZA()(),t.TgZ(29,"div",14)(30,"h4",8),t._uU(31," Max Off-chain Prepay Routing Fee (Sats) "),t.TgZ(32,"mat-icon",16),t._uU(33,"info_outline"),t.qZA()(),t.TgZ(34,"span",10),t._uU(35,"36"),t.qZA()()(),t.YNc(36,Ue,1,0,"mat-divider",17),t.YNc(37,Me,8,1,"div",18),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("fxFlex",null!=e.quote&&e.quote.prepay_amt_sat?"30":"50"),t.xp6(6),t.Oqu(t.lcZ(9,9,null==e.quote?null:e.quote.swap_fee_sat)),t.xp6(2),t.Q6J("fxFlex",null!=e.quote&&e.quote.prepay_amt_sat?"35":"50"),t.xp6(2),t.hij(" ",null!=e.quote&&e.quote.htlc_sweep_fee_sat?"HTLC Sweep Fee (Sats)":null!=e.quote&&e.quote.htlc_publish_fee_sat?"HTLC Publish Fee (Sats)":""," "),t.xp6(4),t.Oqu(t.lcZ(17,11,null!=e.quote&&e.quote.htlc_sweep_fee_sat?e.quote.htlc_sweep_fee_sat:null!=e.quote&&e.quote.htlc_publish_fee_sat?e.quote.htlc_publish_fee_sat:0)),t.xp6(2),t.Q6J("ngIf",null==e.quote?null:e.quote.prepay_amt_sat),t.xp6(9),t.Oqu(t.lcZ(28,13,(null==e.quote?null:e.quote.amount)*((null!=e.quote&&e.quote.off_chain_swap_routing_fee_percentage?null==e.quote?null:e.quote.off_chain_swap_routing_fee_percentage:2)/100))),t.xp6(9),t.Q6J("ngIf",""!==(null==e.quote?null:e.quote.swap_payment_dest)),t.xp6(1),t.Q6J("ngIf",""!==(null==e.quote?null:e.quote.swap_payment_dest))}}let Ie=(()=>{class n{constructor(){this.quote={},this.termCaption="",this.showPanel=!0,this.panelExpanded=!1,this.flgShowPanel=!1}ngOnInit(){setTimeout(()=>{this.flgShowPanel=!0},1200)}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-loop-quote"]],inputs:{quote:"quote",termCaption:"termCaption",showPanel:"showPanel",panelExpanded:"panelExpanded"},decls:5,vars:1,consts:[[4,"ngTemplateOutlet"],["informationBlock",""],["quoteDetailsBlock",""],["fxFlex","100",1,"flat-expansion-panel","mb-1",3,"expanded","ngClass"],["fxLayoutAlign","start center","fxFlex","100"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxLayout","row"],[3,"fxFlex"],["fxLayoutAlign","start center",1,"font-bold-500"],["matTooltip","Estimated fee charged by the loop server for the swap",1,"info-icon","info-icon-text"],[1,"foreground-secondary-text"],["matTooltip","An estimate of the on-chain fee that needs to be paid to sweep the HTLC",1,"info-icon","info-icon-text"],["fxFlex","35",4,"ngIf"],[1,"w-100","my-1"],["fxFlex","50"],["matTooltip","Maximum off-chain fee that may be paid for routing the payment amount to the server",1,"info-icon","info-icon-text"],["matTooltip","Maximum off-chain fee that may be paid for routing the pre-payment amount to the server","matTooltipPosition","before",1,"info-icon","info-icon-text"],["class","w-100 my-1",4,"ngIf"],["fxLayout","row",4,"ngIf"],["fxFlex","35"],["matTooltip","The part of the swap fee that is requested as a prepayment","matTooltipPosition","before",1,"info-icon","info-icon-text"],["fxFlex","100"],["matTooltip","The node pubkey, where the swap payments will be sent",1,"info-icon","info-icon-text"]],template:function(e,o){if(1&e&&(t.YNc(0,Fe,1,0,"ng-container",0),t.YNc(1,Ne,7,9,"ng-template",null,1,t.W1O),t.YNc(3,Pe,38,15,"ng-template",null,2,t.W1O)),2&e){const a=t.MAs(2),l=t.MAs(4);t.Q6J("ngTemplateOutlet",o.showPanel?a:l)}},directives:[u.tP,E.ib,m.yH,u.mk,L.oO,E.yz,E.yK,m.Wh,m.xw,$.Hw,K.gM,u.O5,V.d],pipes:[u.JJ],styles:[""]}),n})();var P=g(7531),W=g(3390),ct=g(2368),tt=g(9814);function Re(n,i){1&n&&t.GkF(0)}function De(n,i){if(1&n&&(t.TgZ(0,"div",3)(1,"span",4),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(null!=e.loopStatus&&e.loopStatus.error?null==e.loopStatus?null:e.loopStatus.error:"Unknown Error.")}}function Qe(n,i){if(1&n&&(t.TgZ(0,"div",3)(1,"div",5)(2,"div",6)(3,"h4",7),t._uU(4,"ID"),t.qZA(),t.TgZ(5,"span",4),t._uU(6),t.qZA()()(),t._UZ(7,"mat-divider",8),t.TgZ(8,"div",5)(9,"div",6)(10,"h4",7),t._uU(11,"HTLC Address"),t.qZA(),t.TgZ(12,"span",4),t._uU(13),t.qZA()()()()),2&n){const e=t.oxw();t.xp6(6),t.Oqu(null==e.loopStatus?null:e.loopStatus.id_bytes),t.xp6(7),t.Oqu(null==e.loopStatus?null:e.loopStatus.htlc_address)}}let Je=(()=>{class n{constructor(){}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-loop-status"]],inputs:{loopStatus:"loopStatus"},decls:5,vars:1,consts:[[4,"ngTemplateOutlet"],["loopFailedBlock",""],["loopSuccessfulBlock",""],["fxLayout","column"],[1,"foreground-secondary-text"],["fxLayout","row"],["fxFlex","100"],["fxLayoutAlign","start",1,"font-bold-500"],[1,"w-100","my-1"]],template:function(e,o){if(1&e&&(t.YNc(0,Re,1,0,"ng-container",0),t.YNc(1,De,3,1,"ng-template",null,1,t.W1O),t.YNc(3,Qe,14,2,"ng-template",null,2,t.W1O)),2&e){const a=t.MAs(2),l=t.MAs(4);t.Q6J("ngTemplateOutlet",null!=o.loopStatus&&o.loopStatus.error?a:l)}},directives:[u.tP,m.xw,m.yH,m.Wh,V.d],styles:[""]}),n})();var pt=g(113);function Ee(n,i){1&n&&t.GkF(0)}const ut=function(n,i){return{"small-svg":n,"large-svg":i}};function He(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",7)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"g",8)(5,"g",9)(6,"g",10)(7,"g",11),t._UZ(8,"circle",12)(9,"path",13),t.qZA(),t.TgZ(10,"g",14),t._UZ(11,"ellipse",15)(12,"ellipse",16)(13,"rect",17)(14,"rect",18)(15,"rect",19)(16,"rect",20)(17,"rect",21)(18,"rect",22)(19,"rect",23)(20,"rect",24)(21,"rect",25)(22,"rect",26)(23,"rect",27)(24,"rect",28)(25,"rect",29),t.qZA()()()()(),t.kcU(),t.TgZ(26,"div",30)(27,"mat-card-title"),t._uU(28,"Loop Out explained."),t.qZA()(),t.TgZ(29,"div",31)(30,"mat-card-subtitle",32),t._uU(31," Lightning Loop is a non custodial service offered by Lightning Labs to bridge on-chain and off-chain Bitcoin using Submarine swaps. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,ut,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}function Ye(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",33)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"defs")(5,"linearGradient",34),t._UZ(6,"stop",35)(7,"stop",36)(8,"stop",37),t.qZA()(),t.TgZ(9,"g",8)(10,"g",38)(11,"g",39)(12,"g",40)(13,"g",41)(14,"g",42),t._UZ(15,"rect",43)(16,"rect",44)(17,"rect",45)(18,"circle",46)(19,"rect",47)(20,"rect",48)(21,"circle",49)(22,"rect",50)(23,"rect",51)(24,"rect",52)(25,"rect",53)(26,"circle",54)(27,"circle",55),t.qZA(),t.TgZ(28,"g",56),t._UZ(29,"path",57)(30,"rect",58)(31,"polygon",59)(32,"circle",60)(33,"path",61)(34,"rect",62)(35,"rect",63)(36,"rect",64)(37,"rect",65)(38,"rect",66)(39,"rect",67)(40,"rect",68)(41,"path",69)(42,"path",70),t.qZA(),t._UZ(43,"path",71),t.qZA()(),t._UZ(44,"circle",72),t.qZA()()()(),t.kcU(),t.TgZ(45,"div",30)(46,"mat-card-title"),t._uU(47,"Step 1: Deciding to Loop Out"),t.qZA()(),t.TgZ(48,"div",31)(49,"mat-card-subtitle",32),t._uU(50," You have a channel with a local balance amount and you want to gain inbound liquidity. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,ut,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}function Be(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",73)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"defs")(5,"linearGradient",74),t._UZ(6,"stop",35)(7,"stop",36)(8,"stop",37),t.qZA()(),t.TgZ(9,"g",8)(10,"g",75)(11,"g",76),t._UZ(12,"circle",77)(13,"path",78),t.TgZ(14,"g",79),t._UZ(15,"polygon",80)(16,"polygon",81)(17,"path",82),t.qZA(),t.TgZ(18,"g",83),t._UZ(19,"polygon",84)(20,"path",85)(21,"rect",86)(22,"path",87)(23,"rect",88)(24,"rect",89)(25,"rect",90)(26,"rect",91)(27,"circle",92)(28,"path",93),t.TgZ(29,"g",94)(30,"g",95),t._UZ(31,"g",96),t.qZA(),t._UZ(32,"g",97),t.qZA(),t._UZ(33,"path",98),t.qZA(),t.TgZ(34,"g",99)(35,"g",41)(36,"g",42),t._UZ(37,"rect",43)(38,"rect",44)(39,"rect",45)(40,"circle",46)(41,"rect",47)(42,"rect",48)(43,"circle",49)(44,"rect",50)(45,"rect",51)(46,"rect",52)(47,"rect",53)(48,"circle",100)(49,"circle",54)(50,"circle",55)(51,"circle",101),t.qZA(),t.TgZ(52,"g",56),t._UZ(53,"path",57)(54,"rect",102)(55,"polygon",103)(56,"circle",104)(57,"path",61)(58,"rect",105)(59,"rect",106)(60,"rect",107)(61,"rect",108)(62,"rect",109)(63,"rect",110)(64,"rect",68)(65,"path",69)(66,"path",70),t.qZA(),t._UZ(67,"path",111),t.qZA()()()()()(),t.kcU(),t.TgZ(68,"div",30)(69,"mat-card-title"),t._uU(70,"Step 2: Send lightning payment"),t.qZA()(),t.TgZ(71,"div",31)(72,"mat-card-subtitle",32),t._uU(73," Your node pays a lightning invoice for the amount requested via the loop service. This moves the local balance, for the amount paid, to the remote side of the channel. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,ut,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}function ze(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",112)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"g",8)(5,"g",113)(6,"g",114)(7,"g",115)(8,"g",116),t._UZ(9,"circle",12)(10,"path",117),t.qZA(),t.TgZ(11,"g",14),t._UZ(12,"ellipse",118)(13,"ellipse",16)(14,"rect",17)(15,"rect",18)(16,"rect",19)(17,"rect",20)(18,"rect",21)(19,"rect",22)(20,"rect",23)(21,"rect",24)(22,"rect",25)(23,"rect",26)(24,"rect",27)(25,"rect",28)(26,"rect",29),t.qZA()(),t.TgZ(27,"g",119),t._UZ(28,"polygon",80)(29,"polygon",120)(30,"path",82),t.qZA(),t.TgZ(31,"g",121),t._UZ(32,"polygon",84)(33,"path",85)(34,"rect",86)(35,"path",87)(36,"rect",88)(37,"rect",89)(38,"rect",90)(39,"rect",91)(40,"circle",122)(41,"path",93),t.TgZ(42,"g",94)(43,"g",95),t._UZ(44,"g",96),t.qZA(),t._UZ(45,"g",97),t.qZA(),t._UZ(46,"path",123),t.qZA()()()()(),t.kcU(),t.TgZ(47,"div",30)(48,"mat-card-title"),t._uU(49,"Step 3: Receive funds back"),t.qZA()(),t.TgZ(50,"div",31)(51,"mat-card-subtitle",32),t._uU(52," Loop service then sends you a payment on-chain for the amount same as the lightning payment minus the fee. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,ut,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}function Ge(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",124)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"defs")(5,"linearGradient",34),t._UZ(6,"stop",35)(7,"stop",36)(8,"stop",37),t.qZA()(),t.TgZ(9,"g",8)(10,"g",125)(11,"g",126)(12,"g",42),t._UZ(13,"rect",127)(14,"rect",128)(15,"rect",129)(16,"circle",130)(17,"rect",131)(18,"rect",132)(19,"circle",133)(20,"rect",134)(21,"rect",135)(22,"rect",136)(23,"rect",137)(24,"rect",138)(25,"circle",139)(26,"circle",140)(27,"circle",141),t.qZA(),t.TgZ(28,"g",142)(29,"g",143)(30,"g",144),t._UZ(31,"path",145)(32,"rect",146)(33,"polygon",147),t.TgZ(34,"g",148),t._UZ(35,"path",149),t.qZA(),t._UZ(36,"rect",150)(37,"rect",151)(38,"rect",152)(39,"rect",153)(40,"rect",154)(41,"rect",155)(42,"rect",156)(43,"path",157)(44,"path",158),t.qZA(),t.TgZ(45,"g",159),t._UZ(46,"path",160)(47,"path",161)(48,"path",162)(49,"path",163)(50,"path",164)(51,"path",165)(52,"path",166)(53,"path",167)(54,"path",168)(55,"path",169)(56,"path",170)(57,"circle",171)(58,"circle",172),t.qZA(),t._UZ(59,"path",173),t.qZA()()()()()(),t.kcU(),t.TgZ(60,"div",30)(61,"mat-card-title"),t._uU(62,"Done!"),t.qZA()(),t.TgZ(63,"div",31)(64,"mat-card-subtitle",32),t._uU(65," Final settlement occurs when your node sweeps the on-chain payment and the loop server settles the lightning invoice. You receive the payment on-chain in your wallet and also move local balance to the remote side of the channel, gaining inbound capacity. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,ut,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}let Ve=(()=>{class n{constructor(e){this.commonService=e,this.animationDirection="forward",this.stepNumber=1,this.stepNumberChange=new t.vpe,this.screenSize="",this.screenSizeEnum=s.cu}ngOnInit(){this.screenSize=this.commonService.getScreenSize()}onSwipe(e){2===e.direction&&this.stepNumber<5?(this.stepNumber++,this.animationDirection="forward",this.stepNumberChange.emit(this.stepNumber)):4===e.direction&&this.stepNumber>1&&(this.stepNumber--,this.animationDirection="backward",this.stepNumberChange.emit(this.stepNumber))}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(O.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-loop-out-info-graphics"]],inputs:{animationDirection:"animationDirection",stepNumber:"stepNumber"},outputs:{stepNumberChange:"stepNumberChange"},decls:11,vars:1,consts:[[4,"ngTemplateOutlet"],["loopStepBlock1",""],["loopStepBlock2",""],["loopStepBlock3",""],["loopStepBlock4",""],["loopStepBlock5",""],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",3,"swipe"],["fxFlex","30","viewBox","0 0 108 118","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["id","Loopv0.2","stroke","none","stroke-width","1","fill","none","fill-rule","evenodd"],["id","LoopOut_Step01","transform","translate(-594.000000, -215.000000)","fill-rule","nonzero"],["id","Loop_Step01","transform","translate(594.000000, 215.000000)"],["id","Group-16","transform","translate(23.000000, 0.000000)"],["id","Oval","cx","42.4877419","cy","42.4877419","r","42.4877419",1,"fill-color-2"],["d","M56.0827415,28.5000036 C60.4468211,28.5000036 63.9999285,25.1343958 63.9999285,21.0000215 C63.9999285,16.8656472 60.4468211,13.5000393 56.0827415,13.5000393 C52.9843297,13.5000393 50.5608889,15.4359631 48.9999642,17.1843872 C47.4390396,15.4359631 45.0155987,13.5000393 41.9171869,13.5000393 C37.5531074,13.5000393 34,16.8656472 34,21.0000215 C34,25.1343958 37.5531074,28.5000036 41.9171869,28.5000036 C45.0155987,28.5000036 47.4390396,26.5640798 48.9999642,24.8156557 C50.5608889,26.5640798 52.9843297,28.5000036 56.0827415,28.5000036 Z M41.9171869,24.0000143 C40.0328073,24.0000143 38.4999893,22.6546959 38.4999893,21.0000286 C38.4999893,19.3453471 40.0328073,18.0000286 41.9171869,18.0000286 C43.707771,18.0000286 45.3577763,19.6921938 46.3234264,21.0000286 C45.3671604,22.2937501 43.7031019,24.0000143 41.9171869,24.0000143 Z M56.0827415,24.0000143 C54.2921574,24.0000143 52.6421522,22.3078492 51.676502,21.0000286 C52.6327681,19.7062929 54.2968266,18.0000286 56.0827415,18.0000286 C57.9671212,18.0000286 59.4999392,19.3453471 59.4999392,21.0000286 C59.4999392,22.6546959 57.9671212,24.0000143 56.0827415,24.0000143 Z","id","i",1,"fill-color-primary"],["id","Group-21","transform","translate(0.000000, 36.000000)"],["id","Oval","cx","48.644129","cy","75.1589677","rx","48.644129","ry","6.61766437",1,"fill-color-7"],["id","Oval","opacity","0.1","cx","48.644129","cy","75.1589677","rx","40.8402581","ry","5.55600756",1,"fill-color-27"],["id","Rectangle","x","25.2325161","y","6.09470968","width","54.1068387","height","62.9512258",1,"fill-color-26"],["id","Rectangle","x","20","y","1.24344979e-14","width","65.0322581","height","22.3710968",1,"fill-color-19"],["id","Rectangle","x","20","y","26","width","65.0322581","height","22.3710968",1,"fill-color-19"],["id","Rectangle","x","19.7698065","y","52.9179355","width","65.0322581","height","22.3710968",1,"fill-color-19"],["id","Rectangle","x","67.6335484","y","3.75354839","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","73.6165161","y","3.75354839","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","79.5994839","y","3.75354839","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","67.6335484","y","30.0265806","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","73.6165161","y","30.0265806","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","79.5994839","y","30.0265806","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","67.6335484","y","56.2996129","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","73.6165161","y","56.2996129","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","79.5994839","y","56.2996129","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["fxFlex","20","fxLayoutAlign","center end"],["fxFlex","40"],[1,"font-size-120"],["fxFlex","30","viewBox","0 0 205 121","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["x1","50%","y1","100%","x2","50%","y2","0%","id","linearGradient-1"],["stop-color","#808080","stop-opacity","0.25","offset","0%"],["stop-color","#808080","stop-opacity","0.12","offset","54%"],["stop-color","#808080","stop-opacity","0.1","offset","100%"],["id","LoopOut_Step02","transform","translate(-540.000000, -210.000000)","fill-rule","nonzero"],["id","Loop_Step02","transform","translate(540.000000, 210.000000)"],["id","Illustration_Step02"],["id","Group-31"],["id","Group-2"],["id","Rectangle","x","0","y","0","width","90.1490688","height","100.616012",1,"fill-color-10"],["id","Rectangle","x","1.48932403","y","67.1775068","width","87.1682273","height","31.2472904",1,"fill-color-1"],["id","Rectangle","x","8.64422093","y","74.5890324","width","51.2","height","16.0118784",1,"fill-color-primary-lighter"],["id","Oval","cx","76.317438","cy","82.4918815","r","8.15070413",1,"fill-color-primary-darker"],["id","Rectangle","x","1.48932403","y","34.712875","width","87.1682273","height","31.2472904",1,"fill-color-1"],["id","Rectangle","x","8.64422093","y","42.1244006","width","51.2","height","16.0118784",1,"fill-color-primary-lighter"],["id","Oval","cx","76.317438","cy","50.0294431","r","8.15070413",1,"fill-color-primary-darker"],["id","Rectangle","x","1.48932403","y","2.2482432","width","87.1682273","height","31.2472904",1,"fill-color-1"],["id","Rectangle","x","8.64422093","y","74.5890324","width","24","height","16.0118784",1,"fill-color-primary"],["id","Rectangle","x","8.64422093","y","42.1244006","width","36.8","height","16.0118784",1,"fill-color-primary"],["id","Rectangle","x","8.64422093","y","9.66196224","width","51.2","height","16.0118784",1,"fill-color-primary"],["id","Oval","fill","url(#linearGradient-1)","cx","76.317438","cy","50.2465905","r","8.78679245"],["id","Oval","fill","url(#linearGradient-1)","cx","76.317438","cy","82.7090289","r","8.78679245"],["id","Group","transform","translate(60.115627, 35.744427)"],["d","M133.318807,1.04548939 L82.5936439,1.04548939 L82.5936439,0 L59.5928852,0 L59.5928852,1.04548939 L8.65861943,1.04548939 C7.74861523,1.04548887 6.87588228,1.4069864 6.23241214,2.05045654 C5.58894199,2.69392669 5.22744498,3.56665964 5.22744498,4.47666384 L5.22744498,73.9350108 C5.22744498,74.8450173 5.5889387,75.7177532 6.23240879,76.3612266 C6.87587888,77.0047 7.74861298,77.3662028 8.65861943,77.3662028 L133.318807,77.3662028 C135.213795,77.3662028 136.749981,75.8300048 136.749981,73.9350167 L136.749981,4.47666384 C136.749981,3.56665964 136.388484,2.69392669 135.745014,2.05045654 C135.101544,1.4069864 134.228811,1.04548887 133.318807,1.04548939 Z","id","Path",1,"fill-color-20"],["id","Rectangle","x","9.82759671","y","7.10932665","width","122.322231","height","69.0022838",1,"fill-color-25"],["id","Path","opacity","0.257273065","points","97.1677755 76.1116475 9.82763376 76.1116475 9.82763376 7.10937149",1,"fill-color-24"],["id","Oval","cx","28.9673627","cy","59.1901502","r","11.7579927",1,"fill-color-25"],["d","M31.5848237,68.0274261 C25.669241,68.0274261 20.3361447,64.4639649 18.0723494,58.9986791 C15.808554,53.5333932 17.0598755,47.2425772 21.2428244,43.0596288 C25.4257733,38.8766804 31.7165895,37.6253598 37.1818751,39.8891559 C42.6471607,42.1529519 46.2106203,47.4860487 46.2106203,53.4016314 C46.2014756,61.4754447 39.6586369,68.0182825 31.5848237,68.0274261 L31.5848237,68.0274261 Z M31.5848237,38.967022 C23.612809,38.967022 17.1502143,45.4296168 17.1502143,53.4016314 C17.1502143,61.3736461 23.612809,67.8362409 31.5848237,67.8362409 C39.5568383,67.8362409 46.0194331,61.3736461 46.0194331,53.4016314 C46.010427,45.4333502 39.5531049,38.9760281 31.5848237,38.967022 L31.5848237,38.967022 Z","id","Shape",1,"fill-color-primary"],["id","Rectangle","x","99.4252759","y","44.3228077","width","11.4262324","height","2.38757043",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","25.733862","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","28.9741379","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","32.2144137","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","35.4546875","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","38.6949634","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","119.89017","y","8.50924347","width","4.7751428","height","4.7751428",1,"fill-color-6"],["d","M126.882344,15.5014148 L121.083948,15.5014148 L121.083948,9.70301894 L126.882344,9.70301894 L126.882344,15.5014148 Z M121.336061,15.2493191 L126.63024,15.2493191 L126.63024,9.95513218 L121.336061,9.95513218 L121.336061,15.2493191 Z","id","Shape",1,"fill-color-19"],["d","M140.184525,74.8570201 L128.246669,74.8570201 L128.246669,73.9969059 C128.246671,73.9516751 128.228704,73.9082962 128.196721,73.876313 C128.164738,73.8443298 128.12136,73.826364 128.076129,73.826364 L123.98315,73.826364 C123.937919,73.826364 123.89454,73.8443305 123.862558,73.8763135 C123.830575,73.9082966 123.812608,73.9516752 123.81261,73.9969059 L123.81261,74.8570201 L121.254497,74.8570201 L121.254497,73.9969059 C121.254499,73.9516752 121.236532,73.9082966 121.204549,73.8763135 C121.172566,73.8443305 121.129188,73.826364 121.083957,73.826364 L116.990978,73.826364 C116.945747,73.826364 116.902368,73.8443297 116.870385,73.8763129 C116.838402,73.908296 116.820435,73.9516749 116.820436,73.9969059 L116.820436,74.8570201 L114.262326,74.8570201 L114.262326,73.9969059 C114.262328,73.9516749 114.24436,73.908296 114.212377,73.8763129 C114.180394,73.8443297 114.137015,73.826364 114.091784,73.826364 L109.998805,73.826364 C109.953574,73.826364 109.910196,73.8443305 109.878213,73.8763135 C109.84623,73.9082966 109.828263,73.9516752 109.828265,73.9969059 L109.828265,74.8570201 L107.270153,74.8570201 L107.270153,73.9969059 C107.270154,73.9516752 107.252187,73.9082966 107.220204,73.8763135 C107.188222,73.8443305 107.144843,73.826364 107.099613,73.826364 L103.00663,73.826364 C102.961399,73.826364 102.91802,73.8443298 102.886037,73.876313 C102.854054,73.9082962 102.836088,73.9516751 102.83609,73.9969059 L102.83609,74.8570201 L100.277981,74.8570201 L100.277981,73.9969059 C100.277983,73.9516749 100.260016,73.908296 100.228032,73.8763129 C100.196049,73.8443297 100.15267,73.826364 100.107439,73.826364 L96.0144621,73.826364 C95.9692311,73.826364 95.9258522,73.8443297 95.8938691,73.8763129 C95.861886,73.908296 95.8439187,73.9516749 95.8439202,73.9969059 L95.8439202,74.8570201 L93.285808,74.8570201 L93.285808,73.9969059 C93.2858095,73.9516752 93.2678425,73.9082966 93.2358598,73.8763135 C93.2038771,73.8443305 93.1604987,73.826364 93.1152681,73.826364 L89.0222888,73.826364 C88.9770581,73.826364 88.9336797,73.8443305 88.901697,73.8763135 C88.8697143,73.9082966 88.8517473,73.9516752 88.8517489,73.9969059 L88.8517489,74.8570201 L86.2936405,74.8570201 L86.2936405,73.9969059 C86.293642,73.9516752 86.2756751,73.9082966 86.2436923,73.8763135 C86.2117096,73.8443305 86.1683312,73.826364 86.1231006,73.826364 L54.061428,73.826364 C54.0161974,73.826364 53.972819,73.8443305 53.9408363,73.8763135 C53.9088536,73.9082966 53.8908866,73.9516752 53.8908881,73.9969059 L53.8908881,74.8570201 L51.3327759,74.8570201 L51.3327759,73.9969059 C51.3327774,73.9516749 51.3148102,73.908296 51.282827,73.8763129 C51.2508439,73.8443297 51.207465,73.826364 51.162234,73.826364 L47.0692664,73.826364 C47.0240354,73.826364 46.9806565,73.8443297 46.9486734,73.8763129 C46.9166903,73.908296 46.898723,73.9516749 46.8987246,73.9969059 L46.8987246,74.8570201 L44.3406025,74.8570201 L44.3406025,73.9969059 C44.3406046,73.9516751 44.3226378,73.9082962 44.290655,73.876313 C44.2586721,73.8443298 44.2152934,73.826364 44.1700626,73.826364 L40.0770834,73.826364 C40.0318527,73.826364 39.9884743,73.8443305 39.9564916,73.8763135 C39.9245089,73.9082966 39.9065419,73.9516752 39.9065435,73.9969059 L39.9065435,74.8570201 L37.3484312,74.8570201 L37.3484312,73.9969059 C37.3484327,73.9516752 37.3304657,73.9082966 37.298483,73.8763135 C37.2665003,73.8443305 37.2231219,73.826364 37.1778913,73.826364 L33.084912,73.826364 C33.039681,73.826364 32.9963021,73.8443297 32.964319,73.8763129 C32.9323358,73.908296 32.9143686,73.9516749 32.9143701,73.9969059 L32.9143701,74.8570201 L30.3562598,74.8570201 L30.3562598,73.9969059 C30.3562614,73.9516749 30.3382941,73.908296 30.306311,73.8763129 C30.2743278,73.8443297 30.2309489,73.826364 30.1857179,73.826364 L26.0927387,73.826364 C26.047508,73.826364 26.0041296,73.8443305 25.9721469,73.8763135 C25.9401642,73.9082966 25.9221972,73.9516752 25.9221988,73.9969059 L25.9221988,74.8570201 L23.3640826,74.8570201 L23.3640826,73.9969059 C23.3640841,73.9516752 23.3461171,73.9082966 23.3141344,73.8763135 C23.2821517,73.8443305 23.2387733,73.826364 23.1935427,73.826364 L19.1005673,73.826364 C19.0553365,73.826364 19.0119578,73.8443298 18.979975,73.876313 C18.9479921,73.9082962 18.9300253,73.9516751 18.9300274,73.9969059 L18.9300274,74.8570201 L16.3719151,74.8570201 L16.3719151,73.9969059 C16.3719167,73.9516749 16.3539494,73.908296 16.3219663,73.8763129 C16.2899831,73.8443297 16.2466042,73.826364 16.2013733,73.826364 L12.1083959,73.826364 C12.0631649,73.826364 12.0197861,73.8443297 11.9878029,73.8763129 C11.9558198,73.908296 11.9378525,73.9516749 11.9378541,73.9969059 L11.9378541,74.8570201 L4.09297732,74.8570201 C1.83248849,74.8570223 0,76.6895106 0,78.9499994 L0,80.8007483 C0,83.061233 1.83249262,84.8937159 4.09297732,84.8937159 L140.184525,84.8937159 C142.44501,84.8937159 144.277504,83.0612333 144.277504,80.8007483 L144.277504,78.9499994 C144.277504,76.6895102 142.445014,74.8570223 140.184525,74.8570201 Z","id","Path",1,"fill-color-20"],["d","M88.0406297,103.870828 C88.3071704,103.870828 88.5610365,103.731189 88.7006752,103.490029 L94.2857286,93.8431185 C94.5808417,93.3385473 94.2159092,92.7007212 93.6288439,92.7007212 L89.9668136,92.7007212 L91.318669,88.5817505 C91.445602,88.0993988 91.0806695,87.6234 90.5824512,87.6234 L86.0128621,87.6234 C85.632063,87.6234 85.3083776,87.9058383 85.2576168,88.2834455 L84.2421525,95.8994274 C84.1818469,96.3563987 84.5372656,96.7625782 84.9973979,96.7625782 L88.7641417,96.7625782 L87.30122,102.934697 C87.1869926,103.417048 87.555086,103.870828 88.0406297,103.870828 Z","id","b","transform","translate(89.312846, 95.747114) rotate(14.000000) translate(-89.312846, -95.747114) ",1,"fill-color-21"],["id","Oval","cx","74.1507041","cy","17.5648113","r","8.15070413",1,"fill-color-primary"],["fxFlex","30","viewBox","0 0 373 121","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["x1","50%","y1","100%","x2","50%","y2","8.86848147e-15%","id","linearGradient-1"],["id","LoopOut_Step03","transform","translate(-460.000000, -210.000000)"],["id","Loop_Step03","transform","translate(460.000000, 210.000000)"],["id","Oval","fill-rule","nonzero","cx","330.487742","cy","57.4877419","r","42.4877419",1,"fill-color-2"],["d","M345.082742,43.5000036 C349.446821,43.5000036 352.999928,40.1343958 352.999928,36.0000215 C352.999928,31.8656472 349.446821,28.5000393 345.082742,28.5000393 C341.98433,28.5000393 339.560889,30.4359631 337.999964,32.1843872 C336.43904,30.4359631 334.015599,28.5000393 330.917187,28.5000393 C326.553107,28.5000393 323,31.8656472 323,36.0000215 C323,40.1343958 326.553107,43.5000036 330.917187,43.5000036 C334.015599,43.5000036 336.43904,41.5640798 337.999964,39.8156557 C339.560889,41.5640798 341.98433,43.5000036 345.082742,43.5000036 Z M330.917187,39.0000143 C329.032807,39.0000143 327.499989,37.6546959 327.499989,36.0000286 C327.499989,34.3453471 329.032807,33.0000286 330.917187,33.0000286 C332.707771,33.0000286 334.357776,34.6921938 335.323426,36.0000286 C334.36716,37.2937501 332.703102,39.0000143 330.917187,39.0000143 Z M345.082742,39.0000143 C343.292157,39.0000143 341.642152,37.3078492 340.676502,36.0000286 C341.632768,34.7062929 343.296827,33.0000286 345.082742,33.0000286 C346.967121,33.0000286 348.499939,34.3453471 348.499939,36.0000286 C348.499939,37.6546959 346.967121,39.0000143 345.082742,39.0000143 Z","id","i","fill-rule","nonzero",1,"fill-color-primary"],["id","Group-44","transform","translate(113.000000, 79.000000)","fill-rule","nonzero"],["id","Path","transform","translate(118.400000, 7.089946) scale(-1, 1) translate(-118.400000, -7.089946) ","points","234.731878 6.60770626 8.52651283e-14 6.60770626 8.52651283e-14 7.57218541 236.8 7.57218541",1,"fill-color-19"],["id","Path","transform","translate(118.400000, 8.960000) scale(-1, 1) translate(-118.400000, -8.960000) ","points","113.024 5.376 123.776 5.376 123.776 12.544 113.024 12.544",1,"fill-color-22"],["d","M120.192,8.96 L105.856,8.96 L105.856,1.86517468e-14 L120.192,1.86517468e-14 L120.192,8.96 Z M106.479304,8.57043501 L119.568696,8.57043501 L119.568696,0.389564988 L106.479304,0.389564988 L106.479304,8.57043501 Z","id","Shape","transform","translate(113.024000, 4.480000) scale(-1, 1) translate(-113.024000, -4.480000) ",1,"fill-color-19"],["id","Group-43","transform","translate(265.000000, 50.000000)"],["id","Path","fill-rule","nonzero","points","-9.84073267e-14 7.36243469 92.3919279 7.36243469 92.3919279 70.3073253 -1.13686838e-13 70.3073253",1,"fill-color-23"],["d","M97.5448374,1.70530257e-13 L6.62592538,1.70530257e-13 C6.01615907,0.000922175294 5.52114394,0.495001701 5.52114394,1.104768 L5.52114394,62.57664 C5.52114394,62.8696481 5.63752746,63.150658 5.84471672,63.3578447 C6.05190598,63.5650315 6.3329173,63.681408 6.62592538,63.681408 L97.5448374,63.681408 C97.8378436,63.681408 98.1188523,63.5650282 98.3260389,63.3578415 C98.5332256,63.1506549 98.6496054,62.8696462 98.6496054,62.57664 L98.6496054,1.104768 C98.6496054,0.495005713 98.1545997,0.000926622272 97.5448374,1.70530257e-13 L97.5448374,1.70530257e-13 Z M97.9130952,62.57664 C97.9130952,62.6744022 97.8747043,62.7682496 97.8055756,62.8373783 C97.736447,62.9065069 97.6425996,62.9448978 97.5448374,62.9448978 L6.62592538,62.9448978 C6.52816341,62.9448978 6.4343164,62.906506 6.3651879,62.8373775 C6.29605941,62.768249 6.25766754,62.674402 6.25766754,62.57664 L6.25766754,1.104768 C6.25766754,0.901512883 6.42267026,0.736512 6.62592538,0.736512 L97.5448374,0.736512 C97.7480931,0.736512 97.9130952,0.901512271 97.9130952,1.104768 L97.9130952,62.57664 Z","id","Shape","fill-rule","nonzero",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","10.3066764","y","43.4358624","width","41.5947948","height","4.78524211","rx","0.5376",1,"fill-color-19"],["d","M89.8141359,39.3872559 L76.5649839,39.3872559 C76.2719769,39.3872559 75.9909677,39.5036372 75.7837792,39.7108232 C75.5765907,39.9180091 75.4602025,40.1990169 75.4602025,40.4920239 L75.4602025,50.7978159 C75.4602025,51.090824 75.576586,51.3718339 75.7837753,51.5790207 C75.9909645,51.7862074 76.2719759,51.9025839 76.5649839,51.9025839 L89.8141359,51.9025839 C90.107143,51.9025839 90.3881533,51.7862079 90.5953406,51.5790206 C90.8025279,51.3718333 90.9189039,51.090823 90.9189039,50.7978159 L90.9189039,40.4920239 C90.9189039,40.199018 90.8025232,39.9180097 90.5953367,39.7108232 C90.3881502,39.5036367 90.1071419,39.3872559 89.8141359,39.3872559 Z M90.1823938,50.7978159 C90.182087,51.0010717 90.0173917,51.165767 89.8141359,51.1660719 L76.5649839,51.1660719 C76.3617256,51.165767 76.1970256,51.0010743 76.19671,50.7978159 L76.19671,40.4920239 C76.1964064,40.3942603 76.2351088,40.3004129 76.30424,40.2312847 C76.3733712,40.1621565 76.4672203,40.1234582 76.5649839,40.1237661 L89.8141359,40.1237661 C89.9118981,40.1234582 90.0057456,40.162157 90.0748742,40.2312857 C90.1440029,40.3004143 90.1827017,40.3942617 90.1823938,40.4920239 L90.1823938,50.7978159 Z","id","Shape","fill-rule","nonzero",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","78.6733409","y","41.7652758","width","9.03249715","height","1.86879168","rx","0.5376",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","78.6733409","y","44.7100416","width","9.03249715","height","1.86879168","rx","0.5376",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","78.6733409","y","47.6548047","width","9.03249715","height","1.86879168","rx","0.5376",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","11.4109632","y","4.41773875","width","19.1409684","height","8.09810266","rx","0.5376",1,"fill-color-19"],["id","Oval","fill-rule","nonzero","cx","47.2929593","cy","42.2294561","r","12.9683743",1,"fill-color-3"],["d","M50.1798649,51.9764517 C43.6553251,51.9764517 37.7732336,48.0461636 35.2764005,42.0182748 C32.7795674,35.990386 34.1597014,29.0519859 38.773248,24.4384399 C43.3867946,19.824894 50.3251948,18.4447609 56.3530833,20.9415948 C62.3809718,23.4384287 66.3112582,29.3205207 66.3112582,35.8450605 C66.3011721,44.7500015 59.0848059,51.9663668 50.1798649,51.9764517 L50.1798649,51.9764517 Z M50.1798649,19.9245354 C41.3872016,19.9245354 34.2593397,27.0523972 34.2593397,35.8450605 C34.2593397,44.6377237 41.3872016,51.7655856 50.1798649,51.7655856 C58.9725281,51.7655856 66.10039,44.6377237 66.10039,35.8450605 C66.0904567,27.056515 58.9684103,19.9344686 50.1798649,19.9245354 L50.1798649,19.9245354 Z","id","Shape","fill-rule","nonzero",1,"fill-color-primary"],["id","Group-23","transform","translate(5.000000, 0.001193)"],["id","Group-22"],["id","Group","transform","translate(0.378134, 0.000000)"],["id","Group-24","transform","translate(29.048000, 19.712000)"],["d","M46.60483,51.432122 C46.8713708,51.432122 47.1252368,51.2924832 47.2648756,51.0513229 L52.8499289,41.4044125 C53.145042,40.8998413 52.7801095,40.2620153 52.1930443,40.2620153 L48.5310139,40.2620153 L49.8828693,36.1430446 C50.0098023,35.6606929 49.6448699,35.184694 49.1466515,35.184694 L44.5770624,35.184694 C44.1962633,35.184694 43.8725779,35.4671324 43.8218171,35.8447396 L42.8063528,43.4607214 C42.7460473,43.9176927 43.1014659,44.3238722 43.5615982,44.3238722 L47.3283421,44.3238722 L45.8654203,50.4959909 C45.751193,50.9783426 46.1192864,51.432122 46.60483,51.432122 Z","id","b","fill-rule","nonzero","transform","translate(47.877046, 43.308408) rotate(14.000000) translate(-47.877046, -43.308408) ",1,"fill-color-12"],["id","Group-34","fill-rule","nonzero"],["id","Oval","fill","url(#linearGradient-1)","cx","76.317438","cy","17.5648113","r","8.78679245"],["id","Oval","cx","76.317438","cy","17.5648113","r","8.15070413",1,"fill-color-primary"],["id","Rectangle","x","9.82759671","y","7.10932665","width","122.322231","height","69.0022838",1,"fill-color-8"],["id","Path","opacity","0.222721354","points","97.1677755 76.1116475 9.82763376 76.1116475 9.82763376 7.10937149",1,"fill-color-18"],["id","Oval","cx","28.9673627","cy","59.1901502","r","11.7579927",1,"fill-color-8"],["id","Rectangle","x","99.4252759","y","44.3228077","width","11.4262324","height","2.38757043",1,"fill-color-14"],["id","Rectangle","x","85.6114731","y","25.733862","width","39.05384","height","1.0232453",1,"fill-color-14"],["id","Rectangle","x","85.6114731","y","28.9741379","width","39.05384","height","1.0232453",1,"fill-color-14"],["id","Rectangle","x","85.6114731","y","32.2144137","width","39.05384","height","1.0232453",1,"fill-color-14"],["id","Rectangle","x","85.6114731","y","35.4546875","width","39.05384","height","1.0232453",1,"fill-color-14"],["id","Rectangle","x","85.6114731","y","38.6949634","width","39.05384","height","1.0232453",1,"fill-color-14"],["d","M88.0406297,103.870828 C88.3071704,103.870828 88.5610365,103.731189 88.7006752,103.490029 L94.2857286,93.8431185 C94.5808417,93.3385473 94.2159092,92.7007212 93.6288439,92.7007212 L89.9668136,92.7007212 L91.318669,88.5817505 C91.445602,88.0993988 91.0806695,87.6234 90.5824512,87.6234 L86.0128621,87.6234 C85.632063,87.6234 85.3083776,87.9058383 85.2576168,88.2834455 L84.2421525,95.8994274 C84.1818469,96.3563987 84.5372656,96.7625782 84.9973979,96.7625782 L88.7641417,96.7625782 L87.30122,102.934697 C87.1869926,103.417048 87.555086,103.870828 88.0406297,103.870828 Z","id","b","transform","translate(89.312846, 95.747114) rotate(14.000000) translate(-89.312846, -95.747114) ",1,"fill-color-12"],["fxFlex","30","viewBox","0 0 278 118","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["id","LoopOut_Step04","transform","translate(-503.000000, -212.000000)"],["id","Loop_Step04","transform","translate(503.000000, 212.000000)"],["id","Loop","fill-rule","nonzero"],["id","Group-16","transform","translate(24.000000, 0.000000)"],["d","M55.0827415,28.5000036 C59.4468211,28.5000036 62.9999285,25.1343958 62.9999285,21.0000215 C62.9999285,16.8656472 59.4468211,13.5000393 55.0827415,13.5000393 C51.9843297,13.5000393 49.5608889,15.4359631 47.9999642,17.1843872 C46.4390396,15.4359631 44.0155987,13.5000393 40.9171869,13.5000393 C36.5531074,13.5000393 33,16.8656472 33,21.0000215 C33,25.1343958 36.5531074,28.5000036 40.9171869,28.5000036 C44.0155987,28.5000036 46.4390396,26.5640798 47.9999642,24.8156557 C49.5608889,26.5640798 51.9843297,28.5000036 55.0827415,28.5000036 Z M40.9171869,24.0000143 C39.0328073,24.0000143 37.4999893,22.6546959 37.4999893,21.0000286 C37.4999893,19.3453471 39.0328073,18.0000286 40.9171869,18.0000286 C42.707771,18.0000286 44.3577763,19.6921938 45.3234264,21.0000286 C44.3671604,22.2937501 42.7031019,24.0000143 40.9171869,24.0000143 Z M55.0827415,24.0000143 C53.2921574,24.0000143 51.6421522,22.3078492 50.676502,21.0000286 C51.6327681,19.7062929 53.2968266,18.0000286 55.0827415,18.0000286 C56.9671212,18.0000286 58.4999392,19.3453471 58.4999392,21.0000286 C58.4999392,22.6546959 56.9671212,24.0000143 55.0827415,24.0000143 Z","id","i",1,"fill-color-primary"],["id","Oval","cx","48.644129","cy","75.1589677","rx","48.644129","ry","6.61766437",1,"fill-color-2"],["id","Group-44","transform","translate(27.000000, 69.000000)","fill-rule","nonzero"],["id","Path","transform","translate(118.400000, 8.960000) scale(-1, 1) translate(-118.400000, -8.960000) ","points","113.024 5.376 123.776 5.376 123.776 12.544 113.024 12.544",1,"fill-color-23"],["id","Group-43","transform","translate(179.000000, 40.000000)"],["id","Oval","fill-rule","nonzero","cx","47.2929593","cy","42.2294561","r","12.9683743",1,"fill-color-4"],["d","M46.519593,50.6740439 L46.519593,48.5460252 C46.9395628,48.5560039 47.349554,48.5560039 47.739557,48.5560039 L47.739557,50.6740439 L49.2794877,50.6740439 L49.2794877,48.5160274 C51.8593644,48.3760168 53.5840235,47.7260428 53.8140277,45.2961554 C53.9939838,43.3462645 53.0739982,42.476265 51.6140824,42.1263004 C52.4940295,41.6763328 53.054041,40.8763386 52.92404,39.5463928 C52.7540005,37.7264719 51.2593765,37.1164744 49.2794567,36.9465279 L49.2794567,34.4266159 L47.739526,34.4266159 L47.739526,36.8765226 C47.3395134,36.8765226 46.9295222,36.8865012 46.519562,36.8965108 L46.519562,34.4266159 L44.9796003,34.4266159 L44.9796003,36.9465279 C44.413422,36.9636341 43.7539962,36.9552669 41.8897293,36.9465279 L41.8897293,38.5864308 C43.1055717,38.564924 43.7434908,38.4867995 43.8896683,39.2663716 L43.8896683,46.1661239 C43.7968547,46.7846435 43.3018283,46.6955796 42.1997174,46.6760872 L41.8897293,48.5060178 C44.6975648,48.5060178 44.9796313,48.5160274 44.9796313,48.5160274 L44.9796313,50.6740439 L46.519593,50.6740439 Z M46.5495908,41.7662953 L46.5495908,38.6964125 C47.4195593,38.6964125 50.1394466,38.4264629 50.1394466,40.2363742 C50.1394466,41.9663016 47.4195903,41.7662953 46.5495908,41.7662953 Z M46.5495908,46.6860969 L46.5495908,43.306257 C47.5895368,43.306257 50.7741427,43.0162572 50.7741427,44.9962079 C50.7741427,46.9060914 47.5895368,46.6860969 46.5495908,46.6860969 Z","id","B","fill-rule","nonzero","transform","translate(47.863077, 42.550330) rotate(14.000000) translate(-47.863077, -42.550330) ",1,"fill-color-29"],["fxFlex","30","viewBox","0 0 200 120","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["id","LoopOut_Step05","transform","translate(-542.000000, -210.000000)","fill-rule","nonzero"],["id","Loop_Step05","transform","translate(542.000000, 210.000000)"],["id","Rectangle","x","0","y","0","width","81.4032636","height","90.8547569",1,"fill-color-11"],["id","Rectangle","x","1.34483737","y","60.660286","width","78.7116083","height","28.2158368",1,"fill-color-9"],["id","Rectangle","x","7.80560248","y","67.352783","width","46.2328358","height","14.4584872",1,"fill-color-primary-lighter"],["id","Oval","cx","68.9135074","cy","74.4889377","r","7.35996418",1,"fill-color-primary-darker"],["id","Rectangle","x","1.34483737","y","31.345208","width","78.7116083","height","28.2158368",1,"fill-color-9"],["id","Rectangle","x","7.80560248","y","38.0377051","width","46.2328358","height","14.4584872",1,"fill-color-primary-lighter"],["id","Oval","cx","68.9135074","cy","45.1758404","r","7.35996418",1,"fill-color-primary-darker"],["id","Rectangle","x","1.34483737","y","2.03013005","width","78.7116083","height","28.2158368",1,"fill-color-9"],["id","Rectangle","x","7.80560248","y","8.72460769","width","46.2328358","height","14.4584872",1,"fill-color-primary-lighter"],["id","Rectangle","x","7.80560248","y","67.352783","width","23.1164179","height","14.4584872",1,"fill-color-primary"],["id","Rectangle","x","7.80560248","y","38.0377051","width","33.2298507","height","14.4584872",1,"fill-color-primary"],["id","Rectangle","x","7.80560248","y","8.72460769","width","23.1164179","height","14.4584872",1,"fill-color-primary"],["id","Oval","cx","68.9135074","cy","15.8607624","r","7.93434243",1,"fill-color-31"],["id","Oval","fill","url(#linearGradient-1)","cx","68.9135074","cy","45.3719212","r","7.93434243"],["id","Oval","fill","url(#linearGradient-1)","cx","68.9135074","cy","74.6850186","r","7.93434243"],["id","Group-16","transform","translate(55.804478, 34.674627)"],["id","Group-29","transform","translate(0.310627, 0.751284)"],["id","Group"],["d","M132.777455,1.04124409 L82.2582659,1.04124409 L82.2582659,0 L59.3509036,0 L59.3509036,1.04124409 L8.62346042,1.04124409 C7.71715136,1.04124358 6.84796221,1.40127322 6.20710493,2.0421305 C5.56624765,2.68298778 5.20621852,3.55217693 5.20621852,4.45848599 L5.20621852,73.6347918 C5.20621852,74.5411031 5.56624437,75.4102953 6.2071016,76.0511558 C6.84795882,76.6920163 7.71714912,77.0520512 8.62346042,77.0520512 L132.777455,77.0520512 C134.664749,77.0520512 136.194697,75.522091 136.194697,73.6347977 L136.194697,4.45848599 C136.194697,3.55217693 135.834668,2.68298778 135.193811,2.0421305 C134.552953,1.40127322 133.683764,1.04124358 132.777455,1.04124409 Z","id","Path",1,"fill-color-20"],["id","Rectangle","x","9.78769098","y","7.08045867","width","121.825532","height","68.7220946",1,"fill-color-7"],["id","Path","opacity","0.306775484","points","96.7732181 75.8025901 9.78772787 75.8025901 9.78772787 7.08050333",1,"fill-color-27"],["id","Group-24","transform","translate(16.889738, 38.617955)",1,"fill-color-primary-darker"],["d","M14.5668332,29.1332406 C8.67527117,29.1332406 3.36383033,25.5842492 1.10922733,20.1411555 C-1.14537566,14.6980619 0.100864684,8.43279022 4.26682842,4.26682704 C8.43279215,0.100863866 14.698064,-1.14537564 20.1411573,1.10922807 C25.5842507,3.36383179 29.1332406,8.67527311 29.1332406,14.5668351 C29.124133,22.607864 22.6078621,29.1241341 14.5668332,29.1332406 L14.5668332,29.1332406 Z M14.5668332,0.190838576 C6.62718953,0.190838576 0.190836635,6.62719147 0.190836635,14.5668351 C0.190836635,22.5064788 6.62718953,28.9428317 14.5668332,28.9428317 C22.5064768,28.9428317 28.9428297,22.5064788 28.9428297,14.5668351 C28.9338602,6.63090975 22.5027586,0.199808125 14.5668332,0.190838576 L14.5668332,0.190838576 Z","id","Shape"],["id","Rectangle","x","99.0215517","y","44.1428314","width","11.3798353","height","2.37787551",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","25.6293676","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","28.8564861","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","32.0836045","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","35.310721","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","38.5378394","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","119.403347","y","8.47469101","width","4.75575295","height","4.75575295",1,"fill-color-5"],["d","M126.367128,15.4384701 L120.592277,15.4384701 L120.592277,9.66361906 L126.367128,9.66361906 L126.367128,15.4384701 Z M120.843366,15.1873981 L126.116048,15.1873981 L126.116048,9.91470857 L120.843366,9.91470857 L120.843366,15.1873981 Z","id","Shape",1,"fill-color-19"],["d","M139.615294,74.5530572 L127.725913,74.5530572 L127.725913,73.6964356 C127.725915,73.6513884 127.708021,73.6081857 127.676168,73.5763323 C127.644315,73.544479 127.601113,73.5265862 127.556065,73.5265862 L123.479706,73.5265862 C123.434659,73.5265862 123.391457,73.5444797 123.359604,73.5763329 C123.327751,73.6081861 123.309857,73.6513886 123.309859,73.6964356 L123.309859,74.5530572 L120.762134,74.5530572 L120.762134,73.6964356 C120.762135,73.6513886 120.744241,73.6081861 120.712388,73.5763329 C120.680536,73.5444797 120.637333,73.5265862 120.592286,73.5265862 L116.515927,73.5265862 C116.47088,73.5265862 116.427677,73.5444789 116.395824,73.5763322 C116.36397,73.6081855 116.346076,73.6513882 116.346078,73.6964356 L116.346078,74.5530572 L113.798355,74.5530572 L113.798355,73.6964356 C113.798356,73.6513882 113.780462,73.6081855 113.748609,73.5763322 C113.716755,73.5444789 113.673553,73.5265862 113.628505,73.5265862 L109.552146,73.5265862 C109.507099,73.5265862 109.463897,73.5444797 109.432044,73.5763329 C109.400191,73.6081861 109.382297,73.6513886 109.382299,73.6964356 L109.382299,74.5530572 L106.834574,74.5530572 L106.834574,73.6964356 C106.834575,73.6513886 106.816681,73.6081861 106.784828,73.5763329 C106.752975,73.5444797 106.709773,73.5265862 106.664726,73.5265862 L102.588363,73.5265862 C102.543316,73.5265862 102.500113,73.544479 102.46826,73.5763323 C102.436407,73.6081857 102.418513,73.6513884 102.418516,73.6964356 L102.418516,74.5530572 L99.8707946,74.5530572 L99.8707946,73.6964356 C99.8707961,73.6513882 99.8529018,73.6081855 99.8210486,73.5763322 C99.7891953,73.5444789 99.7459925,73.5265862 99.7009452,73.5265862 L95.6245878,73.5265862 C95.5795404,73.5265862 95.5363377,73.5444789 95.5044844,73.5763322 C95.4726311,73.6081855 95.4547369,73.6513882 95.4547384,73.6964356 L95.4547384,74.5530572 L92.9070135,74.5530572 L92.9070135,73.6964356 C92.9070151,73.6513886 92.889121,73.6081861 92.8572682,73.5763329 C92.8254153,73.5444797 92.7822131,73.5265862 92.7371661,73.5265862 L88.6608067,73.5265862 C88.6157597,73.5265862 88.5725575,73.5444797 88.5407046,73.5763329 C88.5088518,73.6081861 88.4909577,73.6513886 88.4909593,73.6964356 L88.4909593,74.5530572 L85.9432383,74.5530572 L85.9432383,73.6964356 C85.9432399,73.6513886 85.9253458,73.6081861 85.893493,73.5763329 C85.8616401,73.5444797 85.8184379,73.5265862 85.7733909,73.5265862 L53.8419073,73.5265862 C53.7968603,73.5265862 53.7536581,73.5444797 53.7218052,73.5763329 C53.6899524,73.6081861 53.6720584,73.6513886 53.6720599,73.6964356 L53.6720599,74.5530572 L51.124335,74.5530572 L51.124335,73.6964356 C51.1243366,73.6513882 51.1064423,73.6081855 51.074589,73.5763322 C51.0427358,73.5444789 50.999533,73.5265862 50.9544857,73.5265862 L46.8781379,73.5265862 C46.8330906,73.5265862 46.7898879,73.5444789 46.7580346,73.5763322 C46.7261813,73.6081855 46.708287,73.6513882 46.7082886,73.6964356 L46.7082886,74.5530572 L44.160554,74.5530572 L44.160554,73.6964356 C44.1605561,73.6513884 44.1426622,73.6081857 44.1108092,73.5763323 C44.0789563,73.544479 44.0357537,73.5265862 43.9907066,73.5265862 L39.9143472,73.5265862 C39.8693002,73.5265862 39.8260979,73.5444797 39.7942451,73.5763329 C39.7623922,73.6081861 39.7444982,73.6513886 39.7444998,73.6964356 L39.7444998,74.5530572 L37.1967749,74.5530572 L37.1967749,73.6964356 C37.1967764,73.6513886 37.1788824,73.6081861 37.1470296,73.5763329 C37.1151767,73.5444797 37.0719745,73.5265862 37.0269275,73.5265862 L32.9505681,73.5265862 C32.9055208,73.5265862 32.862318,73.5444789 32.8304647,73.5763322 C32.7986115,73.6081855 32.7807172,73.6513882 32.7807187,73.6964356 L32.7807187,74.5530572 L30.2329958,74.5530572 L30.2329958,73.6964356 C30.2329973,73.6513882 30.215103,73.6081855 30.1832498,73.5763322 C30.1513965,73.5444789 30.1081938,73.5265862 30.0631464,73.5265862 L25.986787,73.5265862 C25.94174,73.5265862 25.8985378,73.5444797 25.866685,73.5763329 C25.8348321,73.6081861 25.8169381,73.6513886 25.8169396,73.6964356 L25.8169396,74.5530572 L23.2692109,74.5530572 L23.2692109,73.6964356 C23.2692124,73.6513886 23.2513184,73.6081861 23.2194655,73.5763329 C23.1876127,73.5444797 23.1444104,73.5265862 23.0993634,73.5265862 L19.0230079,73.5265862 C18.9779608,73.5265862 18.9347582,73.544479 18.9029053,73.5763323 C18.8710523,73.6081857 18.8531585,73.6513884 18.8531605,73.6964356 L18.8531605,74.5530572 L16.3054357,74.5530572 L16.3054357,73.6964356 C16.3054372,73.6513882 16.2875429,73.6081855 16.2556896,73.5763322 C16.2238364,73.5444789 16.1806336,73.5265862 16.1355863,73.5265862 L12.0592288,73.5265862 C12.0141815,73.5265862 11.9709788,73.5444789 11.9391255,73.5763322 C11.9072722,73.6081855 11.8893779,73.6513882 11.8893795,73.6964356 L11.8893795,74.5530572 L4.07635746,74.5530572 C1.82504753,74.5530594 0,76.3781067 0,78.6294166 L0,80.4726504 C0,82.7239563 1.82505163,84.5489982 4.07635746,84.5489982 L139.615294,84.5489982 C141.8666,84.5489982 143.691654,82.7239566 143.691654,80.4726504 L143.691654,78.6294166 C143.691654,76.3781064 141.866605,74.5530594 139.615294,74.5530572 Z","id","Path",1,"fill-color-20"],["id","Group","transform","translate(14.563343, 25.890388)"],["d","M34.1898756,18.6935074 C34.8335754,18.7760331 35.5015474,18.8284611 36.1180622,18.6284578 C36.2151512,18.5983603 36.321949,18.5313689 36.3122401,18.4342799 C36.3052976,18.3990002 36.2903506,18.3657846 36.2685501,18.337191 C36.0361522,17.9886397 35.8409087,17.6167008 35.6860164,17.2274642 C35.6798777,17.2071636 35.6672606,17.1894314 35.6500935,17.176978 C35.6300188,17.1697099 35.6080312,17.1697099 35.5879565,17.176978 C35.3034859,17.2517365 35.0578508,17.4352346 34.775322,17.5138766 C34.6312683,17.5533966 34.4809179,17.5646069 34.3325963,17.5468869 C34.2044389,17.5323235 34.0296788,17.4264966 33.9131721,17.440089 C33.9791925,17.8643678 34.1403602,18.2604907 34.1898756,18.6935074 Z","id","Path",1,"fill-color-primary-darker"],["d","M46.3638597,17.6187327 C46.7881384,17.3274658 47.2279514,17.0216356 47.4784409,16.5721138 C47.4963243,16.5452282 47.5067138,16.5140596 47.5085385,16.481821 C47.5042662,16.4500929 47.4918946,16.4199997 47.4726155,16.394441 C47.2340087,16.0151166 46.9268212,15.6835648 46.5667756,15.4167552 C46.3789189,15.549458 46.2091963,15.7061249 46.061913,15.8827822 C45.9551152,15.9954054 45.6599648,16.1740491 45.6570521,16.3458965 C45.6570521,16.4429855 45.7696753,16.5556086 45.8221033,16.6371634 C45.8929782,16.7420194 45.9599696,16.8488173 46.0240483,16.9575569 C46.0609421,17.0109558 46.3978408,17.5973731 46.3638597,17.6187327 Z","id","Path",1,"fill-color-primary-darker"],["d","M36.7132175,19.9935285 C36.7207976,20.0935521 36.6933371,20.1930963 36.6355464,20.2750865 C36.5902231,20.3206727 36.5341172,20.3540691 36.4724369,20.3721755 C35.5724223,20.6945108 34.5306578,20.2925625 33.632585,20.6100434 C33.448116,20.675093 33.2733558,20.7692693 33.0879159,20.8314062 C32.8668382,20.8978733 32.6387504,20.9382775 32.4082933,20.9517965 C32.0908124,20.9818941 31.7713897,21.0013119 31.4529379,21.0100499 C31.2109788,21.0271812 30.9678332,21.0058814 30.7325379,20.9469421 C30.494578,20.8860354 30.29373,20.7268395 30.1801017,20.5090709 C30.1312849,20.4125511 30.1215484,20.3009295 30.1529168,20.1974154 C30.1669968,20.1619216 30.1870252,20.1290882 30.2121411,20.1003264 C30.2730042,20.0320475 30.3444715,19.9740213 30.423795,19.9284789 L30.7548683,19.7148832 C30.9101158,19.6051008 31.0788103,19.515696 31.2568182,19.4488595 C31.3878883,19.4061404 31.5267255,19.3876935 31.6597374,19.3517706 C32.1247935,19.215846 32.4801391,18.846908 32.8102415,18.4925333 L33.2607343,18.011943 C33.3028503,17.9590638 33.3562578,17.9162715 33.4170475,17.8866982 C33.4795282,17.8658617 33.5459388,17.8595527 33.6112254,17.8682513 C34.0488232,17.8994947 34.4713668,18.041122 34.8394007,18.2799085 C34.9334629,18.3504651 35.0350556,18.4103788 35.1423182,18.4585522 C35.4064002,18.5614665 35.7452406,18.4837953 35.9889339,18.3536961 C36.1044698,18.2915592 36.0792267,18.2566071 36.1277711,18.1459257 C36.1763156,18.0352443 36.2947641,17.9643694 36.3976784,18.0653419 C36.4287289,18.1002598 36.4507324,18.1422664 36.4617571,18.187674 C36.5588461,18.5080675 36.5219523,18.8527333 36.5219523,19.1886611 C36.519104,19.2411857 36.5256803,19.2937961 36.5413701,19.3440034 C36.566144,19.3946232 36.5957307,19.4427421 36.629721,19.4876951 C36.6366398,19.4995928 36.642801,19.5119152 36.6481679,19.5245889 C36.7075588,19.673314 36.7298837,19.8342531 36.7132175,19.9935285 Z","id","Path",1,"fill-color-primary-darker"],["d","M36.7132175,19.9935285 C36.7207976,20.0935521 36.6933371,20.1930963 36.6355464,20.2750865 C36.5902231,20.3206727 36.5341172,20.3540691 36.4724369,20.3721755 C35.5724223,20.6945108 34.5306578,20.2925625 33.632585,20.6100434 C33.448116,20.675093 33.2733558,20.7692693 33.0879159,20.8314062 C32.8668382,20.8978733 32.6387504,20.9382775 32.4082933,20.9517965 C32.0908124,20.9818941 31.7713897,21.0013119 31.4529379,21.0100499 C31.2109788,21.0271812 30.9678332,21.0058814 30.7325379,20.9469421 C30.494578,20.8860354 30.29373,20.7268395 30.1801017,20.5090709 C30.1312849,20.4125511 30.1215484,20.3009295 30.1529168,20.1974154 C30.1669968,20.1619216 30.1870252,20.1290882 30.2121411,20.1003264 C30.2645691,20.2100369 30.3024338,20.3556704 30.3354441,20.4080984 C30.4256618,20.5652773 30.5791886,20.6760005 30.7568101,20.7119868 C30.8882242,20.7200556 31.0199808,20.7032567 31.1451659,20.6624715 C31.9607132,20.4605264 32.8277175,20.4576138 33.6112254,20.1517835 C33.8801618,20.0459566 34.1364767,19.9051776 34.4190055,19.8410989 C34.7015344,19.7770202 35.0015392,19.7944962 35.2928061,19.770224 C35.7530078,19.7333301 36.1986461,19.5944929 36.6520515,19.5216762 C36.7105975,19.6716231 36.7315958,19.83361 36.7132175,19.9935285 L36.7132175,19.9935285 Z","id","Path",1,"fill-color-primary-darker"],["d","M48.4250582,17.5595084 C48.3823391,17.9012616 48.1658307,18.1954411 47.9279627,18.4449597 C47.6900948,18.6944783 47.4211584,18.9187538 47.2318349,19.2061371 C46.9988214,19.5624536 46.8939654,20.0042083 46.5910478,20.3051841 C46.4747693,20.4146353 46.3441148,20.5077266 46.202692,20.5818876 C46.0442646,20.6753601 45.8767312,20.752458 45.7026839,20.8119884 C45.2502494,20.956651 44.7628628,20.9236407 44.2900396,20.8886887 C44.1365309,20.8872131 43.9845596,20.8579372 43.8414886,20.8022795 C43.7763574,20.7691922 43.7140162,20.7308783 43.6550778,20.6877146 C43.5365551,20.6147292 43.4367964,20.5149704 43.363811,20.3964477 C43.3279723,20.332004 43.3179103,20.2563656 43.3356552,20.1847938 C43.3626747,20.1059564 43.4090817,20.0351774 43.4706088,19.9789652 C43.5770067,19.8683202 43.6912186,19.7654647 43.8123619,19.6711932 C43.9785829,19.5639234 44.1283649,19.4331094 44.2570293,19.2828374 C44.335968,19.1640934 44.3940832,19.0327597 44.4288768,18.8944816 C44.4976483,18.652227 44.5396476,18.4031617 44.5541216,18.1517511 C44.5535898,17.9846963 44.5708393,17.8180593 44.6055787,17.6546556 C44.6774245,17.3983408 44.8677189,17.1692108 44.8463593,16.904158 C44.8377185,16.866204 44.8411119,16.8265011 44.8560682,16.7905639 C44.8786704,16.7624825 44.9101823,16.7429588 44.94539,16.7352232 C45.0937604,16.6760869 45.2502282,16.6397523 45.4094752,16.6274545 C45.571226,16.6162976 45.7294484,16.6783037 45.8405502,16.7963893 C45.9065707,16.8760022 45.9502607,16.9905672 46.0473497,17.0216356 C46.0954598,17.0347655 46.1459295,17.0367577 46.1949249,17.027461 C46.4337637,17.0031887 46.686195,16.9730912 46.8745476,16.8187197 C47.0505482,16.6608586 47.152616,16.4366614 47.1561056,16.2002631 C47.1561056,16.1119121 47.1162991,16.0196776 47.2531945,16.0060852 C47.3561088,15.9924927 47.4376635,16.1031741 47.4900916,16.1711364 C47.679415,16.4245386 47.8735929,16.6895914 47.9444679,16.9983343 C47.9720312,16.9876362 48.0013112,16.9820434 48.030877,16.9818292 C48.1537854,16.9807475 48.2694521,17.0398499 48.3405908,17.1400842 C48.4179108,17.2653269 48.447872,17.4140998 48.4250582,17.5595084 L48.4250582,17.5595084 Z","id","Path",1,"fill-color-primary-darker"],["d","M48.4250582,17.5595084 C48.3823391,17.9012616 48.1658307,18.1954411 47.9279627,18.4449597 C47.6900948,18.6944783 47.4211584,18.9187538 47.2318349,19.2061371 C46.9988214,19.5624536 46.8939654,20.0042083 46.5910478,20.3051841 C46.4747693,20.4146353 46.3441148,20.5077266 46.202692,20.5818876 C46.0442646,20.6753601 45.8767312,20.752458 45.7026839,20.8119884 C45.2502494,20.956651 44.7628628,20.9236407 44.2900396,20.8886887 C44.1365309,20.8872131 43.9845596,20.8579372 43.8414886,20.8022795 C43.7763574,20.7691922 43.7140162,20.7308783 43.6550778,20.6877146 C43.5365551,20.6147292 43.4367964,20.5149704 43.363811,20.3964477 C43.4548211,20.3526902 43.5541213,20.3288581 43.6550778,20.3265437 C43.86479,20.3381943 44.0181905,20.5362558 44.2191647,20.5974219 C44.5055771,20.683831 44.7910186,20.481886 45.0813146,20.4129528 C45.270638,20.3682919 45.4696704,20.3799426 45.6570521,20.3158639 C45.8132081,20.2555144 45.9574928,20.168089 46.0832726,20.0576073 C46.2556706,19.9343474 46.4090818,19.786497 46.5386198,19.6187652 C46.646198,19.4510234 46.735696,19.2723528 46.8056144,19.0857468 C46.9589198,18.7281302 47.1393856,18.3827784 47.345429,18.0527203 C47.375905,18.0004629 47.4127576,17.9521958 47.4551395,17.9090287 C47.5007713,17.8672804 47.5522285,17.8381537 47.6036856,17.8012599 C47.7978635,17.6546556 47.8784474,17.4129041 47.9464096,17.1760071 C47.9648208,17.1040024 47.9905203,17.0340608 48.0231099,16.9672512 C48.1460183,16.9661841 48.2616849,17.0252865 48.3328237,17.1255208 C48.4163608,17.2537243 48.4492363,17.4084124 48.4250582,17.5595084 L48.4250582,17.5595084 Z","id","Path",1,"fill-color-primary-darker"],["d","M54.316416,4.55250111 L54.316416,3.34665629 C54.316416,1.49819202 52.8172532,0 50.9687888,0 L3.34762718,0 C1.49916283,0 0,1.49819202 0,3.34665629 L0,5.56999336 L54.316416,4.55250111 Z","id","Path",1,"fill-color-16"],["d","M55.6018738,5.73601547 L55.6018738,39.231705 C55.6018738,39.9999836 55.2966099,40.7367813 54.7532639,41.2799452 C54.2099179,41.8231092 53.4730179,42.1278687 52.7047393,42.1278687 L2.89810531,42.1278687 C1.29897753,42.1273325 0.00291266866,40.8308329 0.00291266866,39.231705 L0.00291266866,2.35926161 C1.43012031,2.88936731 1.43012031,2.88936731 2.89810531,2.84470639 L52.7047393,2.84470639 C54.3025103,2.84470316 55.5986611,4.13824772 55.6018738,5.73601547 Z","id","Path","opacity","0.1",1,"fill-color-27"],["d","M55.6018738,6.16223599 L55.6018738,39.6579255 C55.6018738,41.2575895 54.3044034,42.5540891 52.7047393,42.5540891 L2.89810531,42.5540891 C1.29897753,42.553553 0.00291266866,41.2570534 0.00291266866,39.6579255 L0.00291266866,2.78451124 C1.43012031,3.31364604 1.43012031,3.31364604 2.89810531,3.26995601 L52.7047393,3.26995601 C54.3028886,3.26995377 55.5991959,4.56408894 55.6018738,6.16223599 Z","id","Path",1,"fill-color-19"],["d","M55.4601239,18.5459322 L55.4601239,29.2577567 L45.0716057,29.2577567 C42.141738,29.2183086 39.7873207,26.8319777 39.7873207,23.9018444 C39.7873207,20.9717112 42.141738,18.5853803 45.0716057,18.5459322 L55.4601239,18.5459322 Z","id","Path","opacity","0.1",1,"fill-color-27"],["d","M55.6018738,18.2604907 L55.6018738,28.9742569 L45.2133556,28.9742569 C42.2834879,28.9348088 39.9290706,26.5484779 39.9290706,23.6183447 C39.9290706,20.6882114 42.2834879,18.3018806 45.2133556,18.2624325 L55.6018738,18.2604907 Z","id","Path",1,"fill-color-17"],["id","Oval","opacity","0.1","cx","45.7114219","cy","23.9023299","r","2.08838343",1,"fill-color-27"],["id","Oval","cx","45.8531718","cy","23.6188301","r","2.08838343",1,"fill-color-28"],["d","M37.114137,56.485738 L37.114137,54.3663604 C37.5324015,54.3762985 37.9407279,54.3762985 38.3291472,54.3762985 L38.3291472,56.485738 L39.8628249,56.485738 L39.8628249,54.3364843 C42.4322258,54.1970423 44.1498818,53.5497076 44.378952,51.1296869 C44.5581774,49.1877136 43.6419275,48.3212469 42.1879398,47.9727034 C43.0643138,47.5245628 43.6220513,46.7278171 43.4925782,45.4032717 C43.3232292,43.5907407 41.8346742,42.9832201 39.8627941,42.8139637 L39.8627941,40.3042841 L38.3291164,40.3042841 L38.3291164,42.7442427 C37.9307281,42.7442427 37.5224017,42.7541808 37.1141061,42.7641498 L37.1141061,40.3042841 L35.5803975,40.3042841 L35.5803975,42.8139637 C35.0165182,42.8310005 34.3597701,42.8226673 32.5030732,42.8139637 L32.5030732,44.4472076 C33.7139786,44.4257882 34.3493073,44.3479809 34.4948913,45.1243875 L34.4948913,51.9961228 C34.4024546,52.6121309 33.9094382,52.5234287 32.8118025,52.5040154 L32.5030732,54.3265154 L33.46474,54.3269705 C35.3673259,54.328922 35.5804284,54.3364843 35.5804284,54.3364843 L35.5804284,56.485738 L37.114137,56.485738 Z M37.144013,47.6141601 L37.144013,44.5567428 C38.0104489,44.5567428 40.7192919,44.2878893 40.7192919,46.0904514 C40.7192919,47.8133542 38.0104798,47.6141601 37.144013,47.6141601 Z M37.144013,52.5139844 L37.144013,49.1478686 C38.1797362,49.1478686 41.3514108,48.8590464 41.3514108,50.8309574 C41.3514108,52.7330856 38.1797362,52.5139844 37.144013,52.5139844 Z","id","b","transform","translate(38.452166, 48.395011) rotate(14.000000) translate(-38.452166, -48.395011) ",1,"fill-color-30"]],template:function(e,o){if(1&e&&(t.YNc(0,Ee,1,0,"ng-container",0),t.YNc(1,He,32,5,"ng-template",null,1,t.W1O),t.YNc(3,Ye,51,5,"ng-template",null,2,t.W1O),t.YNc(5,Be,74,5,"ng-template",null,3,t.W1O),t.YNc(7,ze,53,5,"ng-template",null,4,t.W1O),t.YNc(9,Ge,66,5,"ng-template",null,5,t.W1O)),2&e){const a=t.MAs(2),l=t.MAs(4),r=t.MAs(6),h=t.MAs(8),f=t.MAs(10);t.Q6J("ngTemplateOutlet",1===o.stepNumber?a:2===o.stepNumber?l:3===o.stepNumber?r:4===o.stepNumber?h:f)}},directives:[u.tP,m.xw,m.yH,m.Wh,u.mk,L.oO,y.n5,y.$j],styles:["svg.small-svg[_ngcontent-%COMP%]{height:50%;min-height:50%;max-width:100%}svg.large-svg[_ngcontent-%COMP%]{height:60%;min-height:60%;max-width:100%}"],data:{animation:[pt.l]}}),n})();function We(n,i){1&n&&t.GkF(0)}const mt=function(n,i){return{"small-svg":n,"large-svg":i}};function Xe(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",7)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"g",8)(5,"g",9)(6,"g",10)(7,"g",11),t._UZ(8,"circle",12)(9,"path",13),t.qZA(),t.TgZ(10,"g",14),t._UZ(11,"ellipse",15)(12,"ellipse",16)(13,"rect",17)(14,"rect",18)(15,"rect",19)(16,"rect",20)(17,"rect",21)(18,"rect",22)(19,"rect",23)(20,"rect",24)(21,"rect",25)(22,"rect",26)(23,"rect",27)(24,"rect",28)(25,"rect",29),t.qZA()()()()(),t.kcU(),t.TgZ(26,"div",30)(27,"mat-card-title"),t._uU(28,"Loop In explained."),t.qZA()(),t.TgZ(29,"div",31)(30,"mat-card-subtitle",32),t._uU(31," Lightning Loop is a non custodial service offered by Lightning Labs to bridge on-chain and off-chain Bitcoin using Submarine swaps. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,mt,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}function je(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",33)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"defs")(5,"linearGradient",34),t._UZ(6,"stop",35)(7,"stop",36)(8,"stop",37),t.qZA()(),t.TgZ(9,"g",8)(10,"g",38)(11,"g",39)(12,"g",40),t._UZ(13,"rect",41)(14,"rect",42)(15,"rect",43)(16,"circle",44)(17,"rect",45)(18,"rect",46)(19,"circle",47)(20,"rect",48)(21,"rect",49)(22,"rect",50)(23,"rect",51)(24,"rect",52)(25,"circle",53)(26,"circle",54)(27,"circle",55),t.qZA(),t.TgZ(28,"g",56)(29,"g",57)(30,"g",58),t._UZ(31,"path",59)(32,"rect",60)(33,"polygon",61),t.TgZ(34,"g",62),t._UZ(35,"path",63),t.qZA(),t._UZ(36,"rect",64)(37,"rect",65)(38,"rect",66)(39,"rect",67)(40,"rect",68)(41,"rect",69)(42,"rect",70)(43,"path",71)(44,"path",72),t.qZA(),t.TgZ(45,"g",73),t._UZ(46,"path",74)(47,"path",75)(48,"path",76)(49,"path",77)(50,"path",78)(51,"path",79)(52,"path",80)(53,"path",81)(54,"path",82)(55,"path",83)(56,"path",84)(57,"circle",85)(58,"circle",86),t.qZA(),t._UZ(59,"path",87),t.qZA()()()()()(),t.kcU(),t.TgZ(60,"div",30)(61,"mat-card-title"),t._uU(62,"Step 1: Deciding to Loop In"),t.qZA()(),t.TgZ(63,"div",31)(64,"mat-card-subtitle",32),t._uU(65," Your outgoing capacity is depleted and you want to regain it without opening new channels. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,mt,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}function Ke(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",88)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"defs")(5,"linearGradient",89),t._UZ(6,"stop",35)(7,"stop",36)(8,"stop",37),t.qZA()(),t.TgZ(9,"g",90)(10,"g",91)(11,"g",92)(12,"g",93)(13,"g",94),t._UZ(14,"circle",95)(15,"path",96),t.TgZ(16,"g",97),t._UZ(17,"polygon",98)(18,"polygon",99)(19,"path",100),t.qZA(),t.TgZ(20,"g",101),t._UZ(21,"polygon",102)(22,"path",103)(23,"rect",104)(24,"path",105)(25,"rect",106)(26,"rect",107)(27,"rect",108)(28,"rect",109)(29,"circle",110)(30,"path",111),t.TgZ(31,"g",112)(32,"g",113),t._UZ(33,"g",114),t.qZA(),t._UZ(34,"g",115),t.qZA()()(),t.TgZ(35,"g",116)(36,"g",40),t._UZ(37,"rect",117)(38,"rect",42)(39,"rect",43)(40,"circle",118)(41,"rect",45)(42,"rect",46)(43,"circle",119)(44,"rect",48)(45,"rect",49)(46,"rect",50)(47,"rect",51)(48,"rect",52)(49,"circle",120)(50,"circle",54)(51,"circle",55)(52,"circle",121),t.qZA(),t.TgZ(53,"g",56)(54,"g",57)(55,"g",58),t._UZ(56,"path",59)(57,"rect",60)(58,"polygon",61),t.TgZ(59,"g",122),t._UZ(60,"path",63),t.qZA(),t._UZ(61,"rect",123)(62,"rect",124)(63,"rect",125)(64,"rect",126)(65,"rect",127)(66,"rect",128)(67,"rect",129)(68,"path",130)(69,"path",72),t.qZA(),t.TgZ(70,"g",73),t._UZ(71,"path",131)(72,"path",132)(73,"path",133)(74,"path",134)(75,"path",135)(76,"path",136)(77,"path",80)(78,"path",81)(79,"path",137)(80,"path",83)(81,"path",138)(82,"circle",85)(83,"circle",86),t.qZA(),t._UZ(84,"path",139),t.qZA()()()(),t._UZ(85,"path",140)(86,"path",141),t.qZA()()()(),t.kcU(),t.TgZ(87,"div",30)(88,"mat-card-title"),t._uU(89,"Step 2: Send payment out"),t.qZA()(),t.TgZ(90,"div",31)(91,"mat-card-subtitle",32),t._uU(92," Your node sends funds on-chain to loop server to be swapped with off-chain liquidity. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,mt,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}function $e(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",142)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"g",90)(5,"g",143)(6,"g",144)(7,"g")(8,"g",145)(9,"g",146),t._UZ(10,"circle",12)(11,"path",147),t.qZA(),t.TgZ(12,"g",14),t._UZ(13,"ellipse",148)(14,"ellipse",16)(15,"rect",17)(16,"rect",18)(17,"rect",19)(18,"rect",20)(19,"rect",21)(20,"rect",22)(21,"rect",23)(22,"rect",24)(23,"rect",25)(24,"rect",26)(25,"rect",27)(26,"rect",28)(27,"rect",29),t.qZA()(),t.TgZ(28,"g",149),t._UZ(29,"polygon",150)(30,"polygon",99)(31,"path",151),t.qZA(),t.TgZ(32,"g",152),t._UZ(33,"polygon",102)(34,"path",103)(35,"rect",104)(36,"path",105)(37,"rect",106)(38,"rect",107)(39,"rect",108)(40,"rect",109)(41,"circle",110)(42,"path",111),t.TgZ(43,"g",112)(44,"g",113),t._UZ(45,"g",114),t.qZA(),t._UZ(46,"g",115),t.qZA()()(),t._UZ(47,"path",153),t.qZA()()()(),t.kcU(),t.TgZ(48,"div",30)(49,"mat-card-title"),t._uU(50,"Step 3: Recieve Funds Off-chain"),t.qZA()(),t.TgZ(51,"div",31)(52,"mat-card-subtitle",32),t._uU(53," Loop server sends equivalent funds off-chain to your node by making a lightning payment to you. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,mt,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}function tn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",6),t.NdJ("swipe",function(a){return t.CHM(e),t.oxw().onSwipe(a)}),t.O4$(),t.TgZ(1,"svg",154)(2,"desc"),t._uU(3,"Created with Sketch."),t.qZA(),t.TgZ(4,"defs")(5,"linearGradient",34),t._UZ(6,"stop",35)(7,"stop",36)(8,"stop",37),t.qZA()(),t.TgZ(9,"g",90)(10,"g",155)(11,"g",156)(12,"g",157)(13,"g",158)(14,"g",40),t._UZ(15,"rect",159)(16,"rect",160)(17,"rect",161)(18,"circle",162)(19,"rect",163)(20,"rect",164)(21,"circle",165)(22,"rect",166)(23,"rect",167)(24,"rect",168)(25,"rect",169)(26,"circle",170)(27,"circle",171),t.qZA(),t.TgZ(28,"g",172),t._UZ(29,"path",173)(30,"rect",174)(31,"polygon",175)(32,"circle",176)(33,"path",177)(34,"rect",178)(35,"rect",179)(36,"rect",180)(37,"rect",181)(38,"rect",182)(39,"rect",183)(40,"rect",184)(41,"path",185)(42,"path",186),t.qZA(),t._UZ(43,"path",187),t.qZA()(),t._UZ(44,"circle",188),t.qZA()()()(),t.kcU(),t.TgZ(45,"div",30)(46,"mat-card-title"),t._uU(47,"Done!"),t.qZA()(),t.TgZ(48,"div",31)(49,"mat-card-subtitle",32),t._uU(50," You send the payment on-chain from your wallet and also move remote balance to the local side of the node, gaining outgoing capacity. "),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@sliderAnimation",e.animationDirection),t.xp6(1),t.Q6J("ngClass",t.WLB(2,mt,e.screenSize===e.screenSizeEnum.XS,e.screenSize!==e.screenSizeEnum.XS))}}let en=(()=>{class n{constructor(e){this.commonService=e,this.animationDirection="forward",this.stepNumber=1,this.stepNumberChange=new t.vpe,this.screenSize="",this.screenSizeEnum=s.cu}ngOnInit(){this.screenSize=this.commonService.getScreenSize()}onSwipe(e){2===e.direction&&this.stepNumber<5?(this.stepNumber++,this.animationDirection="forward",this.stepNumberChange.emit(this.stepNumber)):4===e.direction&&this.stepNumber>1&&(this.stepNumber--,this.animationDirection="backward",this.stepNumberChange.emit(this.stepNumber))}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(O.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-loop-in-info-graphics"]],inputs:{animationDirection:"animationDirection",stepNumber:"stepNumber"},outputs:{stepNumberChange:"stepNumberChange"},decls:11,vars:1,consts:[[4,"ngTemplateOutlet"],["loopStepBlock1",""],["loopStepBlock2",""],["loopStepBlock3",""],["loopStepBlock4",""],["loopStepBlock5",""],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch",3,"swipe"],["fxFlex","30","viewBox","0 0 108 118","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["id","Loopv0.2","stroke","none","stroke-width","1","fill","none","fill-rule","evenodd"],["id","LoopIn_Step01","transform","translate(-594.000000, -215.000000)","fill-rule","nonzero"],["id","Loop_Step01","transform","translate(594.000000, 215.000000)"],["id","Group-16","transform","translate(23.000000, 0.000000)"],["id","Oval","cx","42.4877419","cy","42.4877419","r","42.4877419",1,"fill-color-2"],["d","M56.0827415,28.5000036 C60.4468211,28.5000036 63.9999285,25.1343958 63.9999285,21.0000215 C63.9999285,16.8656472 60.4468211,13.5000393 56.0827415,13.5000393 C52.9843297,13.5000393 50.5608889,15.4359631 48.9999642,17.1843872 C47.4390396,15.4359631 45.0155987,13.5000393 41.9171869,13.5000393 C37.5531074,13.5000393 34,16.8656472 34,21.0000215 C34,25.1343958 37.5531074,28.5000036 41.9171869,28.5000036 C45.0155987,28.5000036 47.4390396,26.5640798 48.9999642,24.8156557 C50.5608889,26.5640798 52.9843297,28.5000036 56.0827415,28.5000036 Z M41.9171869,24.0000143 C40.0328073,24.0000143 38.4999893,22.6546959 38.4999893,21.0000286 C38.4999893,19.3453471 40.0328073,18.0000286 41.9171869,18.0000286 C43.707771,18.0000286 45.3577763,19.6921938 46.3234264,21.0000286 C45.3671604,22.2937501 43.7031019,24.0000143 41.9171869,24.0000143 Z M56.0827415,24.0000143 C54.2921574,24.0000143 52.6421522,22.3078492 51.676502,21.0000286 C52.6327681,19.7062929 54.2968266,18.0000286 56.0827415,18.0000286 C57.9671212,18.0000286 59.4999392,19.3453471 59.4999392,21.0000286 C59.4999392,22.6546959 57.9671212,24.0000143 56.0827415,24.0000143 Z","id","i",1,"fill-color-primary"],["id","Group-21","transform","translate(0.000000, 36.000000)"],["id","Oval","cx","48.644129","cy","75.1589677","rx","48.644129","ry","6.61766437",1,"fill-color-7"],["id","Oval","opacity","0.1","cx","48.644129","cy","75.1589677","rx","40.8402581","ry","5.55600756",1,"fill-color-27"],["id","Rectangle","x","25.2325161","y","6.09470968","width","54.1068387","height","62.9512258",1,"fill-color-26"],["id","Rectangle","x","20","y","1.24344979e-14","width","65.0322581","height","22.3710968",1,"fill-color-19"],["id","Rectangle","x","20","y","26","width","65.0322581","height","22.3710968",1,"fill-color-19"],["id","Rectangle","x","19.7698065","y","52.9179355","width","65.0322581","height","22.3710968",1,"fill-color-19"],["id","Rectangle","x","67.6335484","y","3.75354839","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","73.6165161","y","3.75354839","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","79.5994839","y","3.75354839","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","67.6335484","y","30.0265806","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","73.6165161","y","30.0265806","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","79.5994839","y","30.0265806","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","67.6335484","y","56.2996129","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","73.6165161","y","56.2996129","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["id","Rectangle","x","79.5994839","y","56.2996129","width","4.16206452","height","4.16206452",1,"fill-color-green-light"],["fxFlex","20","fxLayoutAlign","center end"],["fxFlex","40"],[1,"font-size-120"],["fxFlex","30","viewBox","0 0 200 120","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["x1","50%","y1","100%","x2","50%","y2","0%","id","linearGradient-1"],["stop-color","#808080","stop-opacity","0.25","offset","0%"],["stop-color","#808080","stop-opacity","0.12","offset","54%"],["stop-color","#808080","stop-opacity","0.1","offset","100%"],["id","LoopIn_Step02","transform","translate(-542.000000, -210.000000)","fill-rule","nonzero"],["id","Loop_Step02","transform","translate(542.000000, 210.000000)"],["id","Group-2"],["id","Rectangle","x","0","y","0","width","81.4032636","height","90.8547569",1,"fill-color-11"],["id","Rectangle","x","1.34483737","y","60.660286","width","78.7116083","height","28.2158368",1,"fill-color-9"],["id","Rectangle","x","7.80560248","y","67.352783","width","46.2328358","height","14.4584872",1,"fill-color-primary-lighter"],["id","Oval","cx","68.9135074","cy","74.4889377","r","7.35996418",1,"fill-color-primary-darker"],["id","Rectangle","x","1.34483737","y","31.345208","width","78.7116083","height","28.2158368",1,"fill-color-9"],["id","Rectangle","x","7.80560248","y","38.0377051","width","46.2328358","height","14.4584872",1,"fill-color-primary-lighter"],["id","Oval","cx","68.9135074","cy","45.1758404","r","7.35996418",1,"fill-color-primary-darker"],["id","Rectangle","x","1.34483737","y","2.03013005","width","78.7116083","height","28.2158368",1,"fill-color-9"],["id","Rectangle","x","7.80560248","y","8.72460769","width","46.2328358","height","14.4584872",1,"fill-color-primary-lighter"],["id","Rectangle","x","7.80560248","y","67.352783","width","23.1164179","height","14.4584872",1,"fill-color-primary"],["id","Rectangle","x","7.80560248","y","38.0377051","width","33.2298507","height","14.4584872",1,"fill-color-primary"],["id","Rectangle","x","7.80560248","y","8.72460769","width","23.1164179","height","14.4584872",1,"fill-color-primary"],["id","Oval","cx","68.9135074","cy","15.8607624","r","7.93434243",1,"fill-color-31"],["id","Oval","fill","url(#linearGradient-1)","cx","68.9135074","cy","45.3719212","r","7.93434243"],["id","Oval","fill","url(#linearGradient-1)","cx","68.9135074","cy","74.6850186","r","7.93434243"],["id","Group-16","transform","translate(55.804478, 34.674627)"],["id","Group-29","transform","translate(0.310627, 0.751284)"],["id","Group"],["d","M132.777455,1.04124409 L82.2582659,1.04124409 L82.2582659,0 L59.3509036,0 L59.3509036,1.04124409 L8.62346042,1.04124409 C7.71715136,1.04124358 6.84796221,1.40127322 6.20710493,2.0421305 C5.56624765,2.68298778 5.20621852,3.55217693 5.20621852,4.45848599 L5.20621852,73.6347918 C5.20621852,74.5411031 5.56624437,75.4102953 6.2071016,76.0511558 C6.84795882,76.6920163 7.71714912,77.0520512 8.62346042,77.0520512 L132.777455,77.0520512 C134.664749,77.0520512 136.194697,75.522091 136.194697,73.6347977 L136.194697,4.45848599 C136.194697,3.55217693 135.834668,2.68298778 135.193811,2.0421305 C134.552953,1.40127322 133.683764,1.04124358 132.777455,1.04124409 Z","id","Path",1,"fill-color-20"],["id","Rectangle","x","9.78769098","y","7.08045867","width","121.825532","height","68.7220946",1,"fill-color-7"],["id","Path","opacity","0.306775484","points","96.7732181 75.8025901 9.78772787 75.8025901 9.78772787 7.08050333",1,"fill-color-27"],["id","Group-24","transform","translate(16.889738, 38.617955)",1,"fill-color-primary-darker"],["d","M14.5668332,29.1332406 C8.67527117,29.1332406 3.36383033,25.5842492 1.10922733,20.1411555 C-1.14537566,14.6980619 0.100864684,8.43279022 4.26682842,4.26682704 C8.43279215,0.100863866 14.698064,-1.14537564 20.1411573,1.10922807 C25.5842507,3.36383179 29.1332406,8.67527311 29.1332406,14.5668351 C29.124133,22.607864 22.6078621,29.1241341 14.5668332,29.1332406 L14.5668332,29.1332406 Z M14.5668332,0.190838576 C6.62718953,0.190838576 0.190836635,6.62719147 0.190836635,14.5668351 C0.190836635,22.5064788 6.62718953,28.9428317 14.5668332,28.9428317 C22.5064768,28.9428317 28.9428297,22.5064788 28.9428297,14.5668351 C28.9338602,6.63090975 22.5027586,0.199808125 14.5668332,0.190838576 L14.5668332,0.190838576 Z","id","Shape"],["id","Rectangle","x","99.0215517","y","44.1428314","width","11.3798353","height","2.37787551",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","25.6293676","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","28.8564861","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","32.0836045","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","35.310721","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","85.2638409","y","38.5378394","width","38.8952588","height","1.01909033",1,"fill-color-15"],["id","Rectangle","x","119.403347","y","8.47469101","width","4.75575295","height","4.75575295",1,"fill-color-5"],["d","M126.367128,15.4384701 L120.592277,15.4384701 L120.592277,9.66361906 L126.367128,9.66361906 L126.367128,15.4384701 Z M120.843366,15.1873981 L126.116048,15.1873981 L126.116048,9.91470857 L120.843366,9.91470857 L120.843366,15.1873981 Z","id","Shape",1,"fill-color-19"],["d","M139.615294,74.5530572 L127.725913,74.5530572 L127.725913,73.6964356 C127.725915,73.6513884 127.708021,73.6081857 127.676168,73.5763323 C127.644315,73.544479 127.601113,73.5265862 127.556065,73.5265862 L123.479706,73.5265862 C123.434659,73.5265862 123.391457,73.5444797 123.359604,73.5763329 C123.327751,73.6081861 123.309857,73.6513886 123.309859,73.6964356 L123.309859,74.5530572 L120.762134,74.5530572 L120.762134,73.6964356 C120.762135,73.6513886 120.744241,73.6081861 120.712388,73.5763329 C120.680536,73.5444797 120.637333,73.5265862 120.592286,73.5265862 L116.515927,73.5265862 C116.47088,73.5265862 116.427677,73.5444789 116.395824,73.5763322 C116.36397,73.6081855 116.346076,73.6513882 116.346078,73.6964356 L116.346078,74.5530572 L113.798355,74.5530572 L113.798355,73.6964356 C113.798356,73.6513882 113.780462,73.6081855 113.748609,73.5763322 C113.716755,73.5444789 113.673553,73.5265862 113.628505,73.5265862 L109.552146,73.5265862 C109.507099,73.5265862 109.463897,73.5444797 109.432044,73.5763329 C109.400191,73.6081861 109.382297,73.6513886 109.382299,73.6964356 L109.382299,74.5530572 L106.834574,74.5530572 L106.834574,73.6964356 C106.834575,73.6513886 106.816681,73.6081861 106.784828,73.5763329 C106.752975,73.5444797 106.709773,73.5265862 106.664726,73.5265862 L102.588363,73.5265862 C102.543316,73.5265862 102.500113,73.544479 102.46826,73.5763323 C102.436407,73.6081857 102.418513,73.6513884 102.418516,73.6964356 L102.418516,74.5530572 L99.8707946,74.5530572 L99.8707946,73.6964356 C99.8707961,73.6513882 99.8529018,73.6081855 99.8210486,73.5763322 C99.7891953,73.5444789 99.7459925,73.5265862 99.7009452,73.5265862 L95.6245878,73.5265862 C95.5795404,73.5265862 95.5363377,73.5444789 95.5044844,73.5763322 C95.4726311,73.6081855 95.4547369,73.6513882 95.4547384,73.6964356 L95.4547384,74.5530572 L92.9070135,74.5530572 L92.9070135,73.6964356 C92.9070151,73.6513886 92.889121,73.6081861 92.8572682,73.5763329 C92.8254153,73.5444797 92.7822131,73.5265862 92.7371661,73.5265862 L88.6608067,73.5265862 C88.6157597,73.5265862 88.5725575,73.5444797 88.5407046,73.5763329 C88.5088518,73.6081861 88.4909577,73.6513886 88.4909593,73.6964356 L88.4909593,74.5530572 L85.9432383,74.5530572 L85.9432383,73.6964356 C85.9432399,73.6513886 85.9253458,73.6081861 85.893493,73.5763329 C85.8616401,73.5444797 85.8184379,73.5265862 85.7733909,73.5265862 L53.8419073,73.5265862 C53.7968603,73.5265862 53.7536581,73.5444797 53.7218052,73.5763329 C53.6899524,73.6081861 53.6720584,73.6513886 53.6720599,73.6964356 L53.6720599,74.5530572 L51.124335,74.5530572 L51.124335,73.6964356 C51.1243366,73.6513882 51.1064423,73.6081855 51.074589,73.5763322 C51.0427358,73.5444789 50.999533,73.5265862 50.9544857,73.5265862 L46.8781379,73.5265862 C46.8330906,73.5265862 46.7898879,73.5444789 46.7580346,73.5763322 C46.7261813,73.6081855 46.708287,73.6513882 46.7082886,73.6964356 L46.7082886,74.5530572 L44.160554,74.5530572 L44.160554,73.6964356 C44.1605561,73.6513884 44.1426622,73.6081857 44.1108092,73.5763323 C44.0789563,73.544479 44.0357537,73.5265862 43.9907066,73.5265862 L39.9143472,73.5265862 C39.8693002,73.5265862 39.8260979,73.5444797 39.7942451,73.5763329 C39.7623922,73.6081861 39.7444982,73.6513886 39.7444998,73.6964356 L39.7444998,74.5530572 L37.1967749,74.5530572 L37.1967749,73.6964356 C37.1967764,73.6513886 37.1788824,73.6081861 37.1470296,73.5763329 C37.1151767,73.5444797 37.0719745,73.5265862 37.0269275,73.5265862 L32.9505681,73.5265862 C32.9055208,73.5265862 32.862318,73.5444789 32.8304647,73.5763322 C32.7986115,73.6081855 32.7807172,73.6513882 32.7807187,73.6964356 L32.7807187,74.5530572 L30.2329958,74.5530572 L30.2329958,73.6964356 C30.2329973,73.6513882 30.215103,73.6081855 30.1832498,73.5763322 C30.1513965,73.5444789 30.1081938,73.5265862 30.0631464,73.5265862 L25.986787,73.5265862 C25.94174,73.5265862 25.8985378,73.5444797 25.866685,73.5763329 C25.8348321,73.6081861 25.8169381,73.6513886 25.8169396,73.6964356 L25.8169396,74.5530572 L23.2692109,74.5530572 L23.2692109,73.6964356 C23.2692124,73.6513886 23.2513184,73.6081861 23.2194655,73.5763329 C23.1876127,73.5444797 23.1444104,73.5265862 23.0993634,73.5265862 L19.0230079,73.5265862 C18.9779608,73.5265862 18.9347582,73.544479 18.9029053,73.5763323 C18.8710523,73.6081857 18.8531585,73.6513884 18.8531605,73.6964356 L18.8531605,74.5530572 L16.3054357,74.5530572 L16.3054357,73.6964356 C16.3054372,73.6513882 16.2875429,73.6081855 16.2556896,73.5763322 C16.2238364,73.5444789 16.1806336,73.5265862 16.1355863,73.5265862 L12.0592288,73.5265862 C12.0141815,73.5265862 11.9709788,73.5444789 11.9391255,73.5763322 C11.9072722,73.6081855 11.8893779,73.6513882 11.8893795,73.6964356 L11.8893795,74.5530572 L4.07635746,74.5530572 C1.82504753,74.5530594 0,76.3781067 0,78.6294166 L0,80.4726504 C0,82.7239563 1.82505163,84.5489982 4.07635746,84.5489982 L139.615294,84.5489982 C141.8666,84.5489982 143.691654,82.7239566 143.691654,80.4726504 L143.691654,78.6294166 C143.691654,76.3781064 141.866605,74.5530594 139.615294,74.5530572 Z","id","Path",1,"fill-color-20"],["id","Group","transform","translate(14.563343, 25.890388)"],["d","M34.1898756,18.6935074 C34.8335754,18.7760331 35.5015474,18.8284611 36.1180622,18.6284578 C36.2151512,18.5983603 36.321949,18.5313689 36.3122401,18.4342799 C36.3052976,18.3990002 36.2903506,18.3657846 36.2685501,18.337191 C36.0361522,17.9886397 35.8409087,17.6167008 35.6860164,17.2274642 C35.6798777,17.2071636 35.6672606,17.1894314 35.6500935,17.176978 C35.6300188,17.1697099 35.6080312,17.1697099 35.5879565,17.176978 C35.3034859,17.2517365 35.0578508,17.4352346 34.775322,17.5138766 C34.6312683,17.5533966 34.4809179,17.5646069 34.3325963,17.5468869 C34.2044389,17.5323235 34.0296788,17.4264966 33.9131721,17.440089 C33.9791925,17.8643678 34.1403602,18.2604907 34.1898756,18.6935074 Z","id","Path",1,"fill-color-primary-darker"],["d","M46.3638597,17.6187327 C46.7881384,17.3274658 47.2279514,17.0216356 47.4784409,16.5721138 C47.4963243,16.5452282 47.5067138,16.5140596 47.5085385,16.481821 C47.5042662,16.4500929 47.4918946,16.4199997 47.4726155,16.394441 C47.2340087,16.0151166 46.9268212,15.6835648 46.5667756,15.4167552 C46.3789189,15.549458 46.2091963,15.7061249 46.061913,15.8827822 C45.9551152,15.9954054 45.6599648,16.1740491 45.6570521,16.3458965 C45.6570521,16.4429855 45.7696753,16.5556086 45.8221033,16.6371634 C45.8929782,16.7420194 45.9599696,16.8488173 46.0240483,16.9575569 C46.0609421,17.0109558 46.3978408,17.5973731 46.3638597,17.6187327 Z","id","Path",1,"fill-color-primary-darker"],["d","M36.7132175,19.9935285 C36.7207976,20.0935521 36.6933371,20.1930963 36.6355464,20.2750865 C36.5902231,20.3206727 36.5341172,20.3540691 36.4724369,20.3721755 C35.5724223,20.6945108 34.5306578,20.2925625 33.632585,20.6100434 C33.448116,20.675093 33.2733558,20.7692693 33.0879159,20.8314062 C32.8668382,20.8978733 32.6387504,20.9382775 32.4082933,20.9517965 C32.0908124,20.9818941 31.7713897,21.0013119 31.4529379,21.0100499 C31.2109788,21.0271812 30.9678332,21.0058814 30.7325379,20.9469421 C30.494578,20.8860354 30.29373,20.7268395 30.1801017,20.5090709 C30.1312849,20.4125511 30.1215484,20.3009295 30.1529168,20.1974154 C30.1669968,20.1619216 30.1870252,20.1290882 30.2121411,20.1003264 C30.2730042,20.0320475 30.3444715,19.9740213 30.423795,19.9284789 L30.7548683,19.7148832 C30.9101158,19.6051008 31.0788103,19.515696 31.2568182,19.4488595 C31.3878883,19.4061404 31.5267255,19.3876935 31.6597374,19.3517706 C32.1247935,19.215846 32.4801391,18.846908 32.8102415,18.4925333 L33.2607343,18.011943 C33.3028503,17.9590638 33.3562578,17.9162715 33.4170475,17.8866982 C33.4795282,17.8658617 33.5459388,17.8595527 33.6112254,17.8682513 C34.0488232,17.8994947 34.4713668,18.041122 34.8394007,18.2799085 C34.9334629,18.3504651 35.0350556,18.4103788 35.1423182,18.4585522 C35.4064002,18.5614665 35.7452406,18.4837953 35.9889339,18.3536961 C36.1044698,18.2915592 36.0792267,18.2566071 36.1277711,18.1459257 C36.1763156,18.0352443 36.2947641,17.9643694 36.3976784,18.0653419 C36.4287289,18.1002598 36.4507324,18.1422664 36.4617571,18.187674 C36.5588461,18.5080675 36.5219523,18.8527333 36.5219523,19.1886611 C36.519104,19.2411857 36.5256803,19.2937961 36.5413701,19.3440034 C36.566144,19.3946232 36.5957307,19.4427421 36.629721,19.4876951 C36.6366398,19.4995928 36.642801,19.5119152 36.6481679,19.5245889 C36.7075588,19.673314 36.7298837,19.8342531 36.7132175,19.9935285 Z","id","Path",1,"fill-color-primary-darker"],["d","M36.7132175,19.9935285 C36.7207976,20.0935521 36.6933371,20.1930963 36.6355464,20.2750865 C36.5902231,20.3206727 36.5341172,20.3540691 36.4724369,20.3721755 C35.5724223,20.6945108 34.5306578,20.2925625 33.632585,20.6100434 C33.448116,20.675093 33.2733558,20.7692693 33.0879159,20.8314062 C32.8668382,20.8978733 32.6387504,20.9382775 32.4082933,20.9517965 C32.0908124,20.9818941 31.7713897,21.0013119 31.4529379,21.0100499 C31.2109788,21.0271812 30.9678332,21.0058814 30.7325379,20.9469421 C30.494578,20.8860354 30.29373,20.7268395 30.1801017,20.5090709 C30.1312849,20.4125511 30.1215484,20.3009295 30.1529168,20.1974154 C30.1669968,20.1619216 30.1870252,20.1290882 30.2121411,20.1003264 C30.2645691,20.2100369 30.3024338,20.3556704 30.3354441,20.4080984 C30.4256618,20.5652773 30.5791886,20.6760005 30.7568101,20.7119868 C30.8882242,20.7200556 31.0199808,20.7032567 31.1451659,20.6624715 C31.9607132,20.4605264 32.8277175,20.4576138 33.6112254,20.1517835 C33.8801618,20.0459566 34.1364767,19.9051776 34.4190055,19.8410989 C34.7015344,19.7770202 35.0015392,19.7944962 35.2928061,19.770224 C35.7530078,19.7333301 36.1986461,19.5944929 36.6520515,19.5216762 C36.7105975,19.6716231 36.7315958,19.83361 36.7132175,19.9935285 L36.7132175,19.9935285 Z","id","Path",1,"fill-color-primary-darker"],["d","M48.4250582,17.5595084 C48.3823391,17.9012616 48.1658307,18.1954411 47.9279627,18.4449597 C47.6900948,18.6944783 47.4211584,18.9187538 47.2318349,19.2061371 C46.9988214,19.5624536 46.8939654,20.0042083 46.5910478,20.3051841 C46.4747693,20.4146353 46.3441148,20.5077266 46.202692,20.5818876 C46.0442646,20.6753601 45.8767312,20.752458 45.7026839,20.8119884 C45.2502494,20.956651 44.7628628,20.9236407 44.2900396,20.8886887 C44.1365309,20.8872131 43.9845596,20.8579372 43.8414886,20.8022795 C43.7763574,20.7691922 43.7140162,20.7308783 43.6550778,20.6877146 C43.5365551,20.6147292 43.4367964,20.5149704 43.363811,20.3964477 C43.3279723,20.332004 43.3179103,20.2563656 43.3356552,20.1847938 C43.3626747,20.1059564 43.4090817,20.0351774 43.4706088,19.9789652 C43.5770067,19.8683202 43.6912186,19.7654647 43.8123619,19.6711932 C43.9785829,19.5639234 44.1283649,19.4331094 44.2570293,19.2828374 C44.335968,19.1640934 44.3940832,19.0327597 44.4288768,18.8944816 C44.4976483,18.652227 44.5396476,18.4031617 44.5541216,18.1517511 C44.5535898,17.9846963 44.5708393,17.8180593 44.6055787,17.6546556 C44.6774245,17.3983408 44.8677189,17.1692108 44.8463593,16.904158 C44.8377185,16.866204 44.8411119,16.8265011 44.8560682,16.7905639 C44.8786704,16.7624825 44.9101823,16.7429588 44.94539,16.7352232 C45.0937604,16.6760869 45.2502282,16.6397523 45.4094752,16.6274545 C45.571226,16.6162976 45.7294484,16.6783037 45.8405502,16.7963893 C45.9065707,16.8760022 45.9502607,16.9905672 46.0473497,17.0216356 C46.0954598,17.0347655 46.1459295,17.0367577 46.1949249,17.027461 C46.4337637,17.0031887 46.686195,16.9730912 46.8745476,16.8187197 C47.0505482,16.6608586 47.152616,16.4366614 47.1561056,16.2002631 C47.1561056,16.1119121 47.1162991,16.0196776 47.2531945,16.0060852 C47.3561088,15.9924927 47.4376635,16.1031741 47.4900916,16.1711364 C47.679415,16.4245386 47.8735929,16.6895914 47.9444679,16.9983343 C47.9720312,16.9876362 48.0013112,16.9820434 48.030877,16.9818292 C48.1537854,16.9807475 48.2694521,17.0398499 48.3405908,17.1400842 C48.4179108,17.2653269 48.447872,17.4140998 48.4250582,17.5595084 L48.4250582,17.5595084 Z","id","Path",1,"fill-color-primary-darker"],["d","M48.4250582,17.5595084 C48.3823391,17.9012616 48.1658307,18.1954411 47.9279627,18.4449597 C47.6900948,18.6944783 47.4211584,18.9187538 47.2318349,19.2061371 C46.9988214,19.5624536 46.8939654,20.0042083 46.5910478,20.3051841 C46.4747693,20.4146353 46.3441148,20.5077266 46.202692,20.5818876 C46.0442646,20.6753601 45.8767312,20.752458 45.7026839,20.8119884 C45.2502494,20.956651 44.7628628,20.9236407 44.2900396,20.8886887 C44.1365309,20.8872131 43.9845596,20.8579372 43.8414886,20.8022795 C43.7763574,20.7691922 43.7140162,20.7308783 43.6550778,20.6877146 C43.5365551,20.6147292 43.4367964,20.5149704 43.363811,20.3964477 C43.4548211,20.3526902 43.5541213,20.3288581 43.6550778,20.3265437 C43.86479,20.3381943 44.0181905,20.5362558 44.2191647,20.5974219 C44.5055771,20.683831 44.7910186,20.481886 45.0813146,20.4129528 C45.270638,20.3682919 45.4696704,20.3799426 45.6570521,20.3158639 C45.8132081,20.2555144 45.9574928,20.168089 46.0832726,20.0576073 C46.2556706,19.9343474 46.4090818,19.786497 46.5386198,19.6187652 C46.646198,19.4510234 46.735696,19.2723528 46.8056144,19.0857468 C46.9589198,18.7281302 47.1393856,18.3827784 47.345429,18.0527203 C47.375905,18.0004629 47.4127576,17.9521958 47.4551395,17.9090287 C47.5007713,17.8672804 47.5522285,17.8381537 47.6036856,17.8012599 C47.7978635,17.6546556 47.8784474,17.4129041 47.9464096,17.1760071 C47.9648208,17.1040024 47.9905203,17.0340608 48.0231099,16.9672512 C48.1460183,16.9661841 48.2616849,17.0252865 48.3328237,17.1255208 C48.4163608,17.2537243 48.4492363,17.4084124 48.4250582,17.5595084 L48.4250582,17.5595084 Z","id","Path",1,"fill-color-primary-darker"],["d","M54.316416,4.55250111 L54.316416,3.34665629 C54.316416,1.49819202 52.8172532,0 50.9687888,0 L3.34762718,0 C1.49916283,0 0,1.49819202 0,3.34665629 L0,5.56999336 L54.316416,4.55250111 Z","id","Path",1,"fill-color-16"],["d","M55.6018738,5.73601547 L55.6018738,39.231705 C55.6018738,39.9999836 55.2966099,40.7367813 54.7532639,41.2799452 C54.2099179,41.8231092 53.4730179,42.1278687 52.7047393,42.1278687 L2.89810531,42.1278687 C1.29897753,42.1273325 0.00291266866,40.8308329 0.00291266866,39.231705 L0.00291266866,2.35926161 C1.43012031,2.88936731 1.43012031,2.88936731 2.89810531,2.84470639 L52.7047393,2.84470639 C54.3025103,2.84470316 55.5986611,4.13824772 55.6018738,5.73601547 Z","id","Path","opacity","0.1",1,"fill-color-27"],["d","M55.6018738,6.16223599 L55.6018738,39.6579255 C55.6018738,41.2575895 54.3044034,42.5540891 52.7047393,42.5540891 L2.89810531,42.5540891 C1.29897753,42.553553 0.00291266866,41.2570534 0.00291266866,39.6579255 L0.00291266866,2.78451124 C1.43012031,3.31364604 1.43012031,3.31364604 2.89810531,3.26995601 L52.7047393,3.26995601 C54.3028886,3.26995377 55.5991959,4.56408894 55.6018738,6.16223599 Z","id","Path",1,"fill-color-19"],["d","M55.4601239,18.5459322 L55.4601239,29.2577567 L45.0716057,29.2577567 C42.141738,29.2183086 39.7873207,26.8319777 39.7873207,23.9018444 C39.7873207,20.9717112 42.141738,18.5853803 45.0716057,18.5459322 L55.4601239,18.5459322 Z","id","Path","opacity","0.1",1,"fill-color-27"],["d","M55.6018738,18.2604907 L55.6018738,28.9742569 L45.2133556,28.9742569 C42.2834879,28.9348088 39.9290706,26.5484779 39.9290706,23.6183447 C39.9290706,20.6882114 42.2834879,18.3018806 45.2133556,18.2624325 L55.6018738,18.2604907 Z","id","Path",1,"fill-color-17"],["id","Oval","opacity","0.1","cx","45.7114219","cy","23.9023299","r","2.08838343",1,"fill-color-27"],["id","Oval","cx","45.8531718","cy","23.6188301","r","2.08838343",1,"fill-color-28"],["d","M37.114137,56.485738 L37.114137,54.3663604 C37.5324015,54.3762985 37.9407279,54.3762985 38.3291472,54.3762985 L38.3291472,56.485738 L39.8628249,56.485738 L39.8628249,54.3364843 C42.4322258,54.1970423 44.1498818,53.5497076 44.378952,51.1296869 C44.5581774,49.1877136 43.6419275,48.3212469 42.1879398,47.9727034 C43.0643138,47.5245628 43.6220513,46.7278171 43.4925782,45.4032717 C43.3232292,43.5907407 41.8346742,42.9832201 39.8627941,42.8139637 L39.8627941,40.3042841 L38.3291164,40.3042841 L38.3291164,42.7442427 C37.9307281,42.7442427 37.5224017,42.7541808 37.1141061,42.7641498 L37.1141061,40.3042841 L35.5803975,40.3042841 L35.5803975,42.8139637 C35.0165182,42.8310005 34.3597701,42.8226673 32.5030732,42.8139637 L32.5030732,44.4472076 C33.7139786,44.4257882 34.3493073,44.3479809 34.4948913,45.1243875 L34.4948913,51.9961228 C34.4024546,52.6121309 33.9094382,52.5234287 32.8118025,52.5040154 L32.5030732,54.3265154 L33.46474,54.3269705 C35.3673259,54.328922 35.5804284,54.3364843 35.5804284,54.3364843 L35.5804284,56.485738 L37.114137,56.485738 Z M37.144013,47.6141601 L37.144013,44.5567428 C38.0104489,44.5567428 40.7192919,44.2878893 40.7192919,46.0904514 C40.7192919,47.8133542 38.0104798,47.6141601 37.144013,47.6141601 Z M37.144013,52.5139844 L37.144013,49.1478686 C38.1797362,49.1478686 41.3514108,48.8590464 41.3514108,50.8309574 C41.3514108,52.7330856 38.1797362,52.5139844 37.144013,52.5139844 Z","id","b","transform","translate(38.452166, 48.395011) rotate(14.000000) translate(-38.452166, -48.395011) ",1,"fill-color-30"],["fxFlex","30","viewBox","0 0 364 120","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["x1","50%","y1","100%","x2","50%","y2","8.86848147e-15%","id","linearGradient-1"],["id","Loopv0.3","stroke","none","stroke-width","1","fill","none","fill-rule","evenodd"],["id","LoopIn_Step03","transform","translate(-1127.000000, -164.000000)"],["id","LoopIn_Step03","transform","translate(1127.000000, 164.000000)"],["id","Group-21"],["id","Group-35","transform","translate(107.000000, 10.000000)"],["id","Oval","fill-rule","nonzero","cx","214.487742","cy","42.4877419","r","42.4877419",1,"fill-color-2"],["d","M232.082742,28.5000036 C236.446821,28.5000036 239.999928,25.1343958 239.999928,21.0000215 C239.999928,16.8656472 236.446821,13.5000393 232.082742,13.5000393 C228.98433,13.5000393 226.560889,15.4359631 224.999964,17.1843872 C223.43904,15.4359631 221.015599,13.5000393 217.917187,13.5000393 C213.553107,13.5000393 210,16.8656472 210,21.0000215 C210,25.1343958 213.553107,28.5000036 217.917187,28.5000036 C221.015599,28.5000036 223.43904,26.5640798 224.999964,24.8156557 C226.560889,26.5640798 228.98433,28.5000036 232.082742,28.5000036 Z M217.917187,24.0000143 C216.032807,24.0000143 214.499989,22.6546959 214.499989,21.0000286 C214.499989,19.3453471 216.032807,18.0000286 217.917187,18.0000286 C219.707771,18.0000286 221.357776,19.6921938 222.323426,21.0000286 C221.36716,22.2937501 219.703102,24.0000143 217.917187,24.0000143 Z M232.082742,24.0000143 C230.292157,24.0000143 228.642152,22.3078492 227.676502,21.0000286 C228.632768,19.7062929 230.296827,18.0000286 232.082742,18.0000286 C233.967121,18.0000286 235.499939,19.3453471 235.499939,21.0000286 C235.499939,22.6546959 233.967121,24.0000143 232.082742,24.0000143 Z","id","i","fill-rule","nonzero",1,"fill-color-primary"],["id","Group-44","transform","translate(0.000000, 64.000000)","fill-rule","nonzero"],["id","Path","transform","translate(118.400000, 7.089946) scale(-1, 1) translate(-118.400000, -7.089946) ","points","234.731878 6.60770626 8.52651283e-14 6.60770626 8.52651283e-14 7.57218541 236.8 7.57218541",1,"fill-color-20"],["id","Path","transform","translate(118.400000, 8.960000) scale(-1, 1) translate(-118.400000, -8.960000) ","points","113.024 5.376 123.776 5.376 123.776 12.544 113.024 12.544",1,"fill-color-23"],["d","M120.192,8.96 L105.856,8.96 L105.856,1.86517468e-14 L120.192,1.86517468e-14 L120.192,8.96 Z M106.479304,8.57043501 L119.568696,8.57043501 L119.568696,0.389564988 L106.479304,0.389564988 L106.479304,8.57043501 Z","id","Shape","transform","translate(113.024000, 4.480000) scale(-1, 1) translate(-113.024000, -4.480000) ",1,"fill-color-20"],["id","Group-43","transform","translate(152.000000, 35.000000)"],["id","Path","fill-rule","nonzero","points","-9.84073267e-14 7.36243469 92.3919279 7.36243469 92.3919279 70.3073253 -1.13686838e-13 70.3073253",1,"fill-color-23"],["d","M97.5448374,1.70530257e-13 L6.62592538,1.70530257e-13 C6.01615907,0.000922175294 5.52114394,0.495001701 5.52114394,1.104768 L5.52114394,62.57664 C5.52114394,62.8696481 5.63752746,63.150658 5.84471672,63.3578447 C6.05190598,63.5650315 6.3329173,63.681408 6.62592538,63.681408 L97.5448374,63.681408 C97.8378436,63.681408 98.1188523,63.5650282 98.3260389,63.3578415 C98.5332256,63.1506549 98.6496054,62.8696462 98.6496054,62.57664 L98.6496054,1.104768 C98.6496054,0.495005713 98.1545997,0.000926622272 97.5448374,1.70530257e-13 L97.5448374,1.70530257e-13 Z M97.9130952,62.57664 C97.9130952,62.6744022 97.8747043,62.7682496 97.8055756,62.8373783 C97.736447,62.9065069 97.6425996,62.9448978 97.5448374,62.9448978 L6.62592538,62.9448978 C6.52816341,62.9448978 6.4343164,62.906506 6.3651879,62.8373775 C6.29605941,62.768249 6.25766754,62.674402 6.25766754,62.57664 L6.25766754,1.104768 C6.25766754,0.901512883 6.42267026,0.736512 6.62592538,0.736512 L97.5448374,0.736512 C97.7480931,0.736512 97.9130952,0.901512271 97.9130952,1.104768 L97.9130952,62.57664 Z","id","Shape","fill-rule","nonzero",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","10.3066764","y","43.4358624","width","41.5947948","height","4.78524211","rx","0.5376",1,"fill-color-19"],["d","M89.8141359,39.3872559 L76.5649839,39.3872559 C76.2719769,39.3872559 75.9909677,39.5036372 75.7837792,39.7108232 C75.5765907,39.9180091 75.4602025,40.1990169 75.4602025,40.4920239 L75.4602025,50.7978159 C75.4602025,51.090824 75.576586,51.3718339 75.7837753,51.5790207 C75.9909645,51.7862074 76.2719759,51.9025839 76.5649839,51.9025839 L89.8141359,51.9025839 C90.107143,51.9025839 90.3881533,51.7862079 90.5953406,51.5790206 C90.8025279,51.3718333 90.9189039,51.090823 90.9189039,50.7978159 L90.9189039,40.4920239 C90.9189039,40.199018 90.8025232,39.9180097 90.5953367,39.7108232 C90.3881502,39.5036367 90.1071419,39.3872559 89.8141359,39.3872559 Z M90.1823938,50.7978159 C90.182087,51.0010717 90.0173917,51.165767 89.8141359,51.1660719 L76.5649839,51.1660719 C76.3617256,51.165767 76.1970256,51.0010743 76.19671,50.7978159 L76.19671,40.4920239 C76.1964064,40.3942603 76.2351088,40.3004129 76.30424,40.2312847 C76.3733712,40.1621565 76.4672203,40.1234582 76.5649839,40.1237661 L89.8141359,40.1237661 C89.9118981,40.1234582 90.0057456,40.162157 90.0748742,40.2312857 C90.1440029,40.3004143 90.1827017,40.3942617 90.1823938,40.4920239 L90.1823938,50.7978159 Z","id","Shape","fill-rule","nonzero",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","78.6733409","y","41.7652758","width","9.03249715","height","1.86879168","rx","0.5376",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","78.6733409","y","44.7100416","width","9.03249715","height","1.86879168","rx","0.5376",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","78.6733409","y","47.6548047","width","9.03249715","height","1.86879168","rx","0.5376",1,"fill-color-19"],["id","Rectangle","fill-rule","nonzero","x","11.4109632","y","4.41773875","width","19.1409684","height","8.09810266","rx","0.5376",1,"fill-color-19"],["id","Oval","fill-rule","nonzero","cx","47.2929593","cy","42.2294561","r","12.9683743",1,"fill-color-4"],["d","M50.1798649,51.9764517 C43.6553251,51.9764517 37.7732336,48.0461636 35.2764005,42.0182748 C32.7795674,35.990386 34.1597014,29.0519859 38.773248,24.4384399 C43.3867946,19.824894 50.3251948,18.4447609 56.3530833,20.9415948 C62.3809718,23.4384287 66.3112582,29.3205207 66.3112582,35.8450605 C66.3011721,44.7500015 59.0848059,51.9663668 50.1798649,51.9764517 L50.1798649,51.9764517 Z M50.1798649,19.9245354 C41.3872016,19.9245354 34.2593397,27.0523972 34.2593397,35.8450605 C34.2593397,44.6377237 41.3872016,51.7655856 50.1798649,51.7655856 C58.9725281,51.7655856 66.10039,44.6377237 66.10039,35.8450605 C66.0904567,27.056515 58.9684103,19.9344686 50.1798649,19.9245354 L50.1798649,19.9245354 Z","id","Shape","fill-rule","nonzero",1,"fill-color-primary"],["id","Group-23","transform","translate(5.000000, 0.001193)"],["id","Group-22"],["id","Group","transform","translate(0.378134, 0.000000)"],["id","Group-24","transform","translate(29.048000, 19.712000)"],["id","LoopIn_Step03","fill-rule","nonzero"],["id","Rectangle","x","0","y","0","width","81.4032636","height","90.8547569",1,"fill-color-10"],["id","Oval","cx","68.9135074","cy","74.4889377","r","7.35996418",1,"fill-color-primary"],["id","Oval","cx","68.9135074","cy","45.1758404","r","7.35996418",1,"fill-color-primary"],["id","Oval","fill","url(#linearGradient-1)","cx","68.9135074","cy","15.8607624","r","7.93434243"],["id","Oval","cx","68.9135074","cy","15.8607624","r","7.35996418",1,"fill-color-31"],["id","Group-24","transform","translate(16.889738, 38.617955)",1,"fill-color-primary"],["id","Rectangle","x","99.0215517","y","44.1428314","width","11.3798353","height","2.37787551",1,"fill-color-20"],["id","Rectangle","x","85.2638409","y","25.6293676","width","38.8952588","height","1.01909033",1,"fill-color-20"],["id","Rectangle","x","85.2638409","y","28.8564861","width","38.8952588","height","1.01909033",1,"fill-color-20"],["id","Rectangle","x","85.2638409","y","32.0836045","width","38.8952588","height","1.01909033",1,"fill-color-20"],["id","Rectangle","x","85.2638409","y","35.310721","width","38.8952588","height","1.01909033",1,"fill-color-20"],["id","Rectangle","x","85.2638409","y","38.5378394","width","38.8952588","height","1.01909033",1,"fill-color-20"],["id","Rectangle","x","119.403347","y","8.47469101","width","4.75575295","height","4.75575295",1,"fill-color-4"],["d","M126.367128,15.4384701 L120.592277,15.4384701 L120.592277,9.66361906 L126.367128,9.66361906 L126.367128,15.4384701 Z M120.843366,15.1873981 L126.116048,15.1873981 L126.116048,9.91470857 L120.843366,9.91470857 L120.843366,15.1873981 Z","id","Shape",1,"fill-color-20"],["d","M34.1898756,18.6935074 C34.8335754,18.7760331 35.5015474,18.8284611 36.1180622,18.6284578 C36.2151512,18.5983603 36.321949,18.5313689 36.3122401,18.4342799 C36.3052976,18.3990002 36.2903506,18.3657846 36.2685501,18.337191 C36.0361522,17.9886397 35.8409087,17.6167008 35.6860164,17.2274642 C35.6798777,17.2071636 35.6672606,17.1894314 35.6500935,17.176978 C35.6300188,17.1697099 35.6080312,17.1697099 35.5879565,17.176978 C35.3034859,17.2517365 35.0578508,17.4352346 34.775322,17.5138766 C34.6312683,17.5533966 34.4809179,17.5646069 34.3325963,17.5468869 C34.2044389,17.5323235 34.0296788,17.4264966 33.9131721,17.440089 C33.9791925,17.8643678 34.1403602,18.2604907 34.1898756,18.6935074 Z","id","Path",1,"fill-color-primary"],["d","M46.3638597,17.6187327 C46.7881384,17.3274658 47.2279514,17.0216356 47.4784409,16.5721138 C47.4963243,16.5452282 47.5067138,16.5140596 47.5085385,16.481821 C47.5042662,16.4500929 47.4918946,16.4199997 47.4726155,16.394441 C47.2340087,16.0151166 46.9268212,15.6835648 46.5667756,15.4167552 C46.3789189,15.549458 46.2091963,15.7061249 46.061913,15.8827822 C45.9551152,15.9954054 45.6599648,16.1740491 45.6570521,16.3458965 C45.6570521,16.4429855 45.7696753,16.5556086 45.8221033,16.6371634 C45.8929782,16.7420194 45.9599696,16.8488173 46.0240483,16.9575569 C46.0609421,17.0109558 46.3978408,17.5973731 46.3638597,17.6187327 Z","id","Path",1,"fill-color-primary"],["d","M36.7132175,19.9935285 C36.7207976,20.0935521 36.6933371,20.1930963 36.6355464,20.2750865 C36.5902231,20.3206727 36.5341172,20.3540691 36.4724369,20.3721755 C35.5724223,20.6945108 34.5306578,20.2925625 33.632585,20.6100434 C33.448116,20.675093 33.2733558,20.7692693 33.0879159,20.8314062 C32.8668382,20.8978733 32.6387504,20.9382775 32.4082933,20.9517965 C32.0908124,20.9818941 31.7713897,21.0013119 31.4529379,21.0100499 C31.2109788,21.0271812 30.9678332,21.0058814 30.7325379,20.9469421 C30.494578,20.8860354 30.29373,20.7268395 30.1801017,20.5090709 C30.1312849,20.4125511 30.1215484,20.3009295 30.1529168,20.1974154 C30.1669968,20.1619216 30.1870252,20.1290882 30.2121411,20.1003264 C30.2730042,20.0320475 30.3444715,19.9740213 30.423795,19.9284789 L30.7548683,19.7148832 C30.9101158,19.6051008 31.0788103,19.515696 31.2568182,19.4488595 C31.3878883,19.4061404 31.5267255,19.3876935 31.6597374,19.3517706 C32.1247935,19.215846 32.4801391,18.846908 32.8102415,18.4925333 L33.2607343,18.011943 C33.3028503,17.9590638 33.3562578,17.9162715 33.4170475,17.8866982 C33.4795282,17.8658617 33.5459388,17.8595527 33.6112254,17.8682513 C34.0488232,17.8994947 34.4713668,18.041122 34.8394007,18.2799085 C34.9334629,18.3504651 35.0350556,18.4103788 35.1423182,18.4585522 C35.4064002,18.5614665 35.7452406,18.4837953 35.9889339,18.3536961 C36.1044698,18.2915592 36.0792267,18.2566071 36.1277711,18.1459257 C36.1763156,18.0352443 36.2947641,17.9643694 36.3976784,18.0653419 C36.4287289,18.1002598 36.4507324,18.1422664 36.4617571,18.187674 C36.5588461,18.5080675 36.5219523,18.8527333 36.5219523,19.1886611 C36.519104,19.2411857 36.5256803,19.2937961 36.5413701,19.3440034 C36.566144,19.3946232 36.5957307,19.4427421 36.629721,19.4876951 C36.6366398,19.4995928 36.642801,19.5119152 36.6481679,19.5245889 C36.7075588,19.673314 36.7298837,19.8342531 36.7132175,19.9935285 Z","id","Path",1,"fill-color-primary"],["d","M36.7132175,19.9935285 C36.7207976,20.0935521 36.6933371,20.1930963 36.6355464,20.2750865 C36.5902231,20.3206727 36.5341172,20.3540691 36.4724369,20.3721755 C35.5724223,20.6945108 34.5306578,20.2925625 33.632585,20.6100434 C33.448116,20.675093 33.2733558,20.7692693 33.0879159,20.8314062 C32.8668382,20.8978733 32.6387504,20.9382775 32.4082933,20.9517965 C32.0908124,20.9818941 31.7713897,21.0013119 31.4529379,21.0100499 C31.2109788,21.0271812 30.9678332,21.0058814 30.7325379,20.9469421 C30.494578,20.8860354 30.29373,20.7268395 30.1801017,20.5090709 C30.1312849,20.4125511 30.1215484,20.3009295 30.1529168,20.1974154 C30.1669968,20.1619216 30.1870252,20.1290882 30.2121411,20.1003264 C30.2645691,20.2100369 30.3024338,20.3556704 30.3354441,20.4080984 C30.4256618,20.5652773 30.5791886,20.6760005 30.7568101,20.7119868 C30.8882242,20.7200556 31.0199808,20.7032567 31.1451659,20.6624715 C31.9607132,20.4605264 32.8277175,20.4576138 33.6112254,20.1517835 C33.8801618,20.0459566 34.1364767,19.9051776 34.4190055,19.8410989 C34.7015344,19.7770202 35.0015392,19.7944962 35.2928061,19.770224 C35.7530078,19.7333301 36.1986461,19.5944929 36.6520515,19.5216762 C36.7105975,19.6716231 36.7315958,19.83361 36.7132175,19.9935285 L36.7132175,19.9935285 Z","id","Path",1,"fill-color-primary"],["d","M48.4250582,17.5595084 C48.3823391,17.9012616 48.1658307,18.1954411 47.9279627,18.4449597 C47.6900948,18.6944783 47.4211584,18.9187538 47.2318349,19.2061371 C46.9988214,19.5624536 46.8939654,20.0042083 46.5910478,20.3051841 C46.4747693,20.4146353 46.3441148,20.5077266 46.202692,20.5818876 C46.0442646,20.6753601 45.8767312,20.752458 45.7026839,20.8119884 C45.2502494,20.956651 44.7628628,20.9236407 44.2900396,20.8886887 C44.1365309,20.8872131 43.9845596,20.8579372 43.8414886,20.8022795 C43.7763574,20.7691922 43.7140162,20.7308783 43.6550778,20.6877146 C43.5365551,20.6147292 43.4367964,20.5149704 43.363811,20.3964477 C43.3279723,20.332004 43.3179103,20.2563656 43.3356552,20.1847938 C43.3626747,20.1059564 43.4090817,20.0351774 43.4706088,19.9789652 C43.5770067,19.8683202 43.6912186,19.7654647 43.8123619,19.6711932 C43.9785829,19.5639234 44.1283649,19.4331094 44.2570293,19.2828374 C44.335968,19.1640934 44.3940832,19.0327597 44.4288768,18.8944816 C44.4976483,18.652227 44.5396476,18.4031617 44.5541216,18.1517511 C44.5535898,17.9846963 44.5708393,17.8180593 44.6055787,17.6546556 C44.6774245,17.3983408 44.8677189,17.1692108 44.8463593,16.904158 C44.8377185,16.866204 44.8411119,16.8265011 44.8560682,16.7905639 C44.8786704,16.7624825 44.9101823,16.7429588 44.94539,16.7352232 C45.0937604,16.6760869 45.2502282,16.6397523 45.4094752,16.6274545 C45.571226,16.6162976 45.7294484,16.6783037 45.8405502,16.7963893 C45.9065707,16.8760022 45.9502607,16.9905672 46.0473497,17.0216356 C46.0954598,17.0347655 46.1459295,17.0367577 46.1949249,17.027461 C46.4337637,17.0031887 46.686195,16.9730912 46.8745476,16.8187197 C47.0505482,16.6608586 47.152616,16.4366614 47.1561056,16.2002631 C47.1561056,16.1119121 47.1162991,16.0196776 47.2531945,16.0060852 C47.3561088,15.9924927 47.4376635,16.1031741 47.4900916,16.1711364 C47.679415,16.4245386 47.8735929,16.6895914 47.9444679,16.9983343 C47.9720312,16.9876362 48.0013112,16.9820434 48.030877,16.9818292 C48.1537854,16.9807475 48.2694521,17.0398499 48.3405908,17.1400842 C48.4179108,17.2653269 48.447872,17.4140998 48.4250582,17.5595084 L48.4250582,17.5595084 Z","id","Path",1,"fill-color-primary"],["d","M48.4250582,17.5595084 C48.3823391,17.9012616 48.1658307,18.1954411 47.9279627,18.4449597 C47.6900948,18.6944783 47.4211584,18.9187538 47.2318349,19.2061371 C46.9988214,19.5624536 46.8939654,20.0042083 46.5910478,20.3051841 C46.4747693,20.4146353 46.3441148,20.5077266 46.202692,20.5818876 C46.0442646,20.6753601 45.8767312,20.752458 45.7026839,20.8119884 C45.2502494,20.956651 44.7628628,20.9236407 44.2900396,20.8886887 C44.1365309,20.8872131 43.9845596,20.8579372 43.8414886,20.8022795 C43.7763574,20.7691922 43.7140162,20.7308783 43.6550778,20.6877146 C43.5365551,20.6147292 43.4367964,20.5149704 43.363811,20.3964477 C43.4548211,20.3526902 43.5541213,20.3288581 43.6550778,20.3265437 C43.86479,20.3381943 44.0181905,20.5362558 44.2191647,20.5974219 C44.5055771,20.683831 44.7910186,20.481886 45.0813146,20.4129528 C45.270638,20.3682919 45.4696704,20.3799426 45.6570521,20.3158639 C45.8132081,20.2555144 45.9574928,20.168089 46.0832726,20.0576073 C46.2556706,19.9343474 46.4090818,19.786497 46.5386198,19.6187652 C46.646198,19.4510234 46.735696,19.2723528 46.8056144,19.0857468 C46.9589198,18.7281302 47.1393856,18.3827784 47.345429,18.0527203 C47.375905,18.0004629 47.4127576,17.9521958 47.4551395,17.9090287 C47.5007713,17.8672804 47.5522285,17.8381537 47.6036856,17.8012599 C47.7978635,17.6546556 47.8784474,17.4129041 47.9464096,17.1760071 C47.9648208,17.1040024 47.9905203,17.0340608 48.0231099,16.9672512 C48.1460183,16.9661841 48.2616849,17.0252865 48.3328237,17.1255208 C48.4163608,17.2537243 48.4492363,17.4084124 48.4250582,17.5595084 L48.4250582,17.5595084 Z","id","Path",1,"fill-color-primary"],["d","M55.6018738,6.16223599 L55.6018738,39.6579255 C55.6018738,41.2575895 54.3044034,42.5540891 52.7047393,42.5540891 L2.89810531,42.5540891 C1.29897753,42.553553 0.00291266866,41.2570534 0.00291266866,39.6579255 L0.00291266866,2.78451124 C1.43012031,3.31364604 1.43012031,3.31364604 2.89810531,3.26995601 L52.7047393,3.26995601 C54.3028886,3.26995377 55.5991959,4.56408894 55.6018738,6.16223599 Z","id","Path",1,"fill-color-20"],["d","M55.6018738,18.2604907 L55.6018738,28.9742569 L45.2133556,28.9742569 C42.2834879,28.9348088 39.9290706,26.5484779 39.9290706,23.6183447 C39.9290706,20.6882114 42.2834879,18.3018806 45.2133556,18.2624325 L55.6018738,18.2604907 Z","id","Path",1,"fill-color-16"],["d","M37.114137,56.485738 L37.114137,54.3663604 C37.5324015,54.3762985 37.9407279,54.3762985 38.3291472,54.3762985 L38.3291472,56.485738 L39.8628249,56.485738 L39.8628249,54.3364843 C42.4322258,54.1970423 44.1498818,53.5497076 44.378952,51.1296869 C44.5581774,49.1877136 43.6419275,48.3212469 42.1879398,47.9727034 C43.0643138,47.5245628 43.6220513,46.7278171 43.4925782,45.4032717 C43.3232292,43.5907407 41.8346742,42.9832201 39.8627941,42.8139637 L39.8627941,40.3042841 L38.3291164,40.3042841 L38.3291164,42.7442427 C37.9307281,42.7442427 37.5224017,42.7541808 37.1141061,42.7641498 L37.1141061,40.3042841 L35.5803975,40.3042841 L35.5803975,42.8139637 C35.0165182,42.8310005 34.3597701,42.8226673 32.5030732,42.8139637 L32.5030732,44.4472076 C33.7139786,44.4257882 34.3493073,44.3479809 34.4948913,45.1243875 L34.4948913,51.9961228 C34.4024546,52.6121309 33.9094382,52.5234287 32.8118025,52.5040154 L32.5030732,54.3265154 L33.46474,54.3269705 C35.3673259,54.328922 35.5804284,54.3364843 35.5804284,54.3364843 L35.5804284,56.485738 L37.114137,56.485738 Z M37.144013,47.6141601 L37.144013,44.5567428 C38.0104489,44.5567428 40.7192919,44.2878893 40.7192919,46.0904514 C40.7192919,47.8133542 38.0104798,47.6141601 37.144013,47.6141601 Z M37.144013,52.5139844 L37.144013,49.1478686 C38.1797362,49.1478686 41.3514108,48.8590464 41.3514108,50.8309574 C41.3514108,52.7330856 38.1797362,52.5139844 37.144013,52.5139844 Z","id","b","transform","translate(38.452166, 48.395011) rotate(14.000000) translate(-38.452166, -48.395011) ",1,"fill-color-9"],["d","M93.2292414,91.9116485 L93.2292414,89.7922708 C93.647506,89.8022089 94.0558324,89.8022089 94.4442517,89.8022089 L94.4442517,91.9116485 L95.9779294,91.9116485 L95.9779294,89.7623948 C98.5473303,89.6229527 100.264986,88.975618 100.494057,86.5555973 C100.673282,84.6136241 99.757032,83.7471573 98.3030443,83.3986138 C99.1794183,82.9504733 99.7371558,82.1537275 99.6076827,80.8291821 C99.4383337,79.0166511 97.9497787,78.4091306 95.9778985,78.2398742 L95.9778985,75.7301945 L94.4442208,75.7301945 L94.4442208,78.1701531 C94.0458325,78.1701531 93.6375061,78.1800912 93.2292106,78.1900602 L93.2292106,75.7301945 L91.695502,75.7301945 L91.695502,78.2398742 C91.1316227,78.2569109 90.4748746,78.2485777 88.6181777,78.2398742 L88.6181777,79.8731181 C89.8290831,79.8516987 90.4644118,79.7738914 90.6099957,80.5502979 L90.6099957,87.4220333 C90.517559,88.0380413 90.0245427,87.9493391 88.926907,87.9299259 L88.6181777,89.7524258 L89.5798445,89.7528809 C91.4824304,89.7548325 91.6955329,89.7623948 91.6955329,89.7623948 L91.6955329,91.9116485 L93.2292414,91.9116485 Z M93.2591175,83.0400705 L93.2591175,79.9826533 C94.1255534,79.9826533 96.8343964,79.7137998 96.8343964,81.5163618 C96.8343964,83.2392647 94.1255843,83.0400705 93.2591175,83.0400705 Z M93.2591175,87.9398948 L93.2591175,84.5737791 C94.2948407,84.5737791 97.4665153,84.2849568 97.4665153,86.2568678 C97.4665153,88.1589961 94.2948407,87.9398948 93.2591175,87.9398948 Z","id","b","fill-rule","nonzero","transform","translate(94.567271, 83.820921) rotate(14.000000) translate(-94.567271, -83.820921) ",1,"fill-color-9"],["d","M305.611064,96.181454 L305.611064,94.0620763 C306.029328,94.0720144 306.437655,94.0720144 306.826074,94.0720144 L306.826074,96.181454 L308.359752,96.181454 L308.359752,94.0322003 C310.929153,93.8927582 312.646809,93.2454235 312.875879,90.8254028 C313.055104,88.8834296 312.138854,88.0169628 310.684867,87.6684193 C311.561241,87.2202788 312.118978,86.423533 311.989505,85.0989876 C311.820156,83.2864566 310.331601,82.678936 308.359721,82.5096797 L308.359721,80 L306.826043,80 L306.826043,82.4399586 C306.427655,82.4399586 306.019328,82.4498967 305.611033,82.4598657 L305.611033,80 L304.077324,80 L304.077324,82.5096797 C303.513445,82.5267164 302.856697,82.5183832 301,82.5096797 L301,84.1429236 C302.210905,84.1215042 302.846234,84.0436969 302.991818,84.8201034 L302.991818,91.6918387 C302.899381,92.3078468 302.406365,92.2191446 301.308729,92.1997314 L301,94.0222313 L301.961667,94.0226864 C303.864253,94.024638 304.077355,94.0322003 304.077355,94.0322003 L304.077355,96.181454 L305.611064,96.181454 Z M305.64094,87.309876 L305.64094,84.2524587 C306.507376,84.2524587 309.216219,83.9836053 309.216219,85.7861673 C309.216219,87.5090702 306.507407,87.309876 305.64094,87.309876 Z M305.64094,92.2097003 L305.64094,88.8435846 C306.676663,88.8435846 309.848338,88.5547623 309.848338,90.5266733 C309.848338,92.4288016 306.676663,92.2097003 305.64094,92.2097003 Z","id","b","fill-rule","nonzero","transform","translate(306.949093, 88.090727) rotate(14.000000) translate(-306.949093, -88.090727) ",1,"fill-color-26"],["fxFlex","30","viewBox","0 0 278 118","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["id","LoopIn_Step04","transform","translate(-1799.000000, -756.000000)"],["id","LoopIn_Step04","transform","translate(1799.000000, 756.000000)"],["id","Loop","fill-rule","nonzero"],["id","Group-16","transform","translate(24.000000, 0.000000)"],["d","M55.0827415,28.5000036 C59.4468211,28.5000036 62.9999285,25.1343958 62.9999285,21.0000215 C62.9999285,16.8656472 59.4468211,13.5000393 55.0827415,13.5000393 C51.9843297,13.5000393 49.5608889,15.4359631 47.9999642,17.1843872 C46.4390396,15.4359631 44.0155987,13.5000393 40.9171869,13.5000393 C36.5531074,13.5000393 33,16.8656472 33,21.0000215 C33,25.1343958 36.5531074,28.5000036 40.9171869,28.5000036 C44.0155987,28.5000036 46.4390396,26.5640798 47.9999642,24.8156557 C49.5608889,26.5640798 51.9843297,28.5000036 55.0827415,28.5000036 Z M40.9171869,24.0000143 C39.0328073,24.0000143 37.4999893,22.6546959 37.4999893,21.0000286 C37.4999893,19.3453471 39.0328073,18.0000286 40.9171869,18.0000286 C42.707771,18.0000286 44.3577763,19.6921938 45.3234264,21.0000286 C44.3671604,22.2937501 42.7031019,24.0000143 40.9171869,24.0000143 Z M55.0827415,24.0000143 C53.2921574,24.0000143 51.6421522,22.3078492 50.676502,21.0000286 C51.6327681,19.7062929 53.2968266,18.0000286 55.0827415,18.0000286 C56.9671212,18.0000286 58.4999392,19.3453471 58.4999392,21.0000286 C58.4999392,22.6546959 56.9671212,24.0000143 55.0827415,24.0000143 Z","id","i",1,"fill-color-primary"],["id","Oval","cx","48.644129","cy","75.1589677","rx","48.644129","ry","6.61766437",1,"fill-color-2"],["id","Group-44","transform","translate(27.000000, 69.000000)","fill-rule","nonzero"],["id","Path","transform","translate(118.400000, 7.089946) scale(-1, 1) translate(-118.400000, -7.089946) ","points","234.731878 6.60770626 8.52651283e-14 6.60770626 8.52651283e-14 7.57218541 236.8 7.57218541",1,"fill-color-19"],["d","M120.192,8.96 L105.856,8.96 L105.856,1.86517468e-14 L120.192,1.86517468e-14 L120.192,8.96 Z M106.479304,8.57043501 L119.568696,8.57043501 L119.568696,0.389564988 L106.479304,0.389564988 L106.479304,8.57043501 Z","id","Shape","transform","translate(113.024000, 4.480000) scale(-1, 1) translate(-113.024000, -4.480000) ",1,"fill-color-19"],["id","Group-43","transform","translate(179.000000, 40.000000)"],["d","M225.805162,92.2474279 C226.071703,92.2474279 226.325569,92.1077892 226.465207,91.8666288 L232.050261,82.2197185 C232.345374,81.7151473 231.980441,81.0773212 231.393376,81.0773212 L227.731346,81.0773212 L229.083201,76.9583506 C229.210134,76.4759989 228.845202,76 228.346983,76 L223.777394,76 C223.396595,76 223.07291,76.2824384 223.022149,76.6600456 L222.006685,84.2760274 C221.946379,84.7329987 222.301798,85.1391782 222.76193,85.1391782 L226.528674,85.1391782 L225.065752,91.3112968 C224.951525,91.7936485 225.319618,92.2474279 225.805162,92.2474279 Z","id","b","fill-rule","nonzero","transform","translate(227.077378, 84.123714) rotate(14.000000) translate(-227.077378, -84.123714) ",1,"fill-color-12"],["fxFlex","30","viewBox","0 0 205 121","version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink",3,"ngClass"],["id","LoopIn_Step05","transform","translate(-2386.000000, -764.000000)","fill-rule","nonzero"],["id","LoopIn_Step05","transform","translate(2386.000000, 764.000000)"],["id","Illustration_Step02"],["id","Group-31"],["id","Rectangle","x","0","y","0","width","90.1490688","height","100.616012",1,"fill-color-10"],["id","Rectangle","x","1.48932403","y","67.1775068","width","87.1682273","height","31.2472904",1,"fill-color-1"],["id","Rectangle","x","8.64422093","y","74.5890324","width","51.2","height","16.0118784",1,"fill-color-primary-lighter"],["id","Oval","cx","76.317438","cy","82.4918815","r","8.15070413",1,"fill-color-primary-darker"],["id","Rectangle","x","1.48932403","y","34.712875","width","87.1682273","height","31.2472904",1,"fill-color-1"],["id","Rectangle","x","8.64422093","y","42.1244006","width","51.2","height","16.0118784",1,"fill-color-primary-lighter"],["id","Oval","cx","76.317438","cy","50.0294431","r","8.15070413",1,"fill-color-primary-darker"],["id","Rectangle","x","1.48932403","y","2.2482432","width","87.1682273","height","31.2472904",1,"fill-color-1"],["id","Rectangle","x","8.64422093","y","74.5890324","width","24","height","16.0118784",1,"fill-color-primary"],["id","Rectangle","x","8.64422093","y","42.1244006","width","36.8","height","16.0118784",1,"fill-color-primary"],["id","Rectangle","x","8.64422093","y","9.66196224","width","51.2","height","16.0118784",1,"fill-color-primary"],["id","Oval","fill","url(#linearGradient-1)","cx","76.317438","cy","50.2465905","r","8.78679245"],["id","Oval","fill","url(#linearGradient-1)","cx","76.317438","cy","82.7090289","r","8.78679245"],["id","Group","transform","translate(60.115627, 35.744427)"],["d","M133.318807,1.04548939 L82.5936439,1.04548939 L82.5936439,0 L59.5928852,0 L59.5928852,1.04548939 L8.65861943,1.04548939 C7.74861523,1.04548887 6.87588228,1.4069864 6.23241214,2.05045654 C5.58894199,2.69392669 5.22744498,3.56665964 5.22744498,4.47666384 L5.22744498,73.9350108 C5.22744498,74.8450173 5.5889387,75.7177532 6.23240879,76.3612266 C6.87587888,77.0047 7.74861298,77.3662028 8.65861943,77.3662028 L133.318807,77.3662028 C135.213795,77.3662028 136.749981,75.8300048 136.749981,73.9350167 L136.749981,4.47666384 C136.749981,3.56665964 136.388484,2.69392669 135.745014,2.05045654 C135.101544,1.4069864 134.228811,1.04548887 133.318807,1.04548939 Z","id","Path",1,"fill-color-20"],["id","Rectangle","x","9.82759671","y","7.10932665","width","122.322231","height","69.0022838",1,"fill-color-25"],["id","Path","opacity","0.257273065","points","97.1677755 76.1116475 9.82763376 76.1116475 9.82763376 7.10937149",1,"fill-color-24"],["id","Oval","cx","28.9673627","cy","59.1901502","r","11.7579927",1,"fill-color-25"],["d","M31.5848237,68.0274261 C25.669241,68.0274261 20.3361447,64.4639649 18.0723494,58.9986791 C15.808554,53.5333932 17.0598755,47.2425772 21.2428244,43.0596288 C25.4257733,38.8766804 31.7165895,37.6253598 37.1818751,39.8891559 C42.6471607,42.1529519 46.2106203,47.4860487 46.2106203,53.4016314 C46.2014756,61.4754447 39.6586369,68.0182825 31.5848237,68.0274261 L31.5848237,68.0274261 Z M31.5848237,38.967022 C23.612809,38.967022 17.1502143,45.4296168 17.1502143,53.4016314 C17.1502143,61.3736461 23.612809,67.8362409 31.5848237,67.8362409 C39.5568383,67.8362409 46.0194331,61.3736461 46.0194331,53.4016314 C46.010427,45.4333502 39.5531049,38.9760281 31.5848237,38.967022 L31.5848237,38.967022 Z","id","Shape",1,"fill-color-primary"],["id","Rectangle","x","99.4252759","y","44.3228077","width","11.4262324","height","2.38757043",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","25.733862","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","28.9741379","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","32.2144137","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","35.4546875","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","85.6114731","y","38.6949634","width","39.05384","height","1.0232453",1,"fill-color-13"],["id","Rectangle","x","119.89017","y","8.50924347","width","4.7751428","height","4.7751428",1,"fill-color-6"],["d","M126.882344,15.5014148 L121.083948,15.5014148 L121.083948,9.70301894 L126.882344,9.70301894 L126.882344,15.5014148 Z M121.336061,15.2493191 L126.63024,15.2493191 L126.63024,9.95513218 L121.336061,9.95513218 L121.336061,15.2493191 Z","id","Shape",1,"fill-color-19"],["d","M140.184525,74.8570201 L128.246669,74.8570201 L128.246669,73.9969059 C128.246671,73.9516751 128.228704,73.9082962 128.196721,73.876313 C128.164738,73.8443298 128.12136,73.826364 128.076129,73.826364 L123.98315,73.826364 C123.937919,73.826364 123.89454,73.8443305 123.862558,73.8763135 C123.830575,73.9082966 123.812608,73.9516752 123.81261,73.9969059 L123.81261,74.8570201 L121.254497,74.8570201 L121.254497,73.9969059 C121.254499,73.9516752 121.236532,73.9082966 121.204549,73.8763135 C121.172566,73.8443305 121.129188,73.826364 121.083957,73.826364 L116.990978,73.826364 C116.945747,73.826364 116.902368,73.8443297 116.870385,73.8763129 C116.838402,73.908296 116.820435,73.9516749 116.820436,73.9969059 L116.820436,74.8570201 L114.262326,74.8570201 L114.262326,73.9969059 C114.262328,73.9516749 114.24436,73.908296 114.212377,73.8763129 C114.180394,73.8443297 114.137015,73.826364 114.091784,73.826364 L109.998805,73.826364 C109.953574,73.826364 109.910196,73.8443305 109.878213,73.8763135 C109.84623,73.9082966 109.828263,73.9516752 109.828265,73.9969059 L109.828265,74.8570201 L107.270153,74.8570201 L107.270153,73.9969059 C107.270154,73.9516752 107.252187,73.9082966 107.220204,73.8763135 C107.188222,73.8443305 107.144843,73.826364 107.099613,73.826364 L103.00663,73.826364 C102.961399,73.826364 102.91802,73.8443298 102.886037,73.876313 C102.854054,73.9082962 102.836088,73.9516751 102.83609,73.9969059 L102.83609,74.8570201 L100.277981,74.8570201 L100.277981,73.9969059 C100.277983,73.9516749 100.260016,73.908296 100.228032,73.8763129 C100.196049,73.8443297 100.15267,73.826364 100.107439,73.826364 L96.0144621,73.826364 C95.9692311,73.826364 95.9258522,73.8443297 95.8938691,73.8763129 C95.861886,73.908296 95.8439187,73.9516749 95.8439202,73.9969059 L95.8439202,74.8570201 L93.285808,74.8570201 L93.285808,73.9969059 C93.2858095,73.9516752 93.2678425,73.9082966 93.2358598,73.8763135 C93.2038771,73.8443305 93.1604987,73.826364 93.1152681,73.826364 L89.0222888,73.826364 C88.9770581,73.826364 88.9336797,73.8443305 88.901697,73.8763135 C88.8697143,73.9082966 88.8517473,73.9516752 88.8517489,73.9969059 L88.8517489,74.8570201 L86.2936405,74.8570201 L86.2936405,73.9969059 C86.293642,73.9516752 86.2756751,73.9082966 86.2436923,73.8763135 C86.2117096,73.8443305 86.1683312,73.826364 86.1231006,73.826364 L54.061428,73.826364 C54.0161974,73.826364 53.972819,73.8443305 53.9408363,73.8763135 C53.9088536,73.9082966 53.8908866,73.9516752 53.8908881,73.9969059 L53.8908881,74.8570201 L51.3327759,74.8570201 L51.3327759,73.9969059 C51.3327774,73.9516749 51.3148102,73.908296 51.282827,73.8763129 C51.2508439,73.8443297 51.207465,73.826364 51.162234,73.826364 L47.0692664,73.826364 C47.0240354,73.826364 46.9806565,73.8443297 46.9486734,73.8763129 C46.9166903,73.908296 46.898723,73.9516749 46.8987246,73.9969059 L46.8987246,74.8570201 L44.3406025,74.8570201 L44.3406025,73.9969059 C44.3406046,73.9516751 44.3226378,73.9082962 44.290655,73.876313 C44.2586721,73.8443298 44.2152934,73.826364 44.1700626,73.826364 L40.0770834,73.826364 C40.0318527,73.826364 39.9884743,73.8443305 39.9564916,73.8763135 C39.9245089,73.9082966 39.9065419,73.9516752 39.9065435,73.9969059 L39.9065435,74.8570201 L37.3484312,74.8570201 L37.3484312,73.9969059 C37.3484327,73.9516752 37.3304657,73.9082966 37.298483,73.8763135 C37.2665003,73.8443305 37.2231219,73.826364 37.1778913,73.826364 L33.084912,73.826364 C33.039681,73.826364 32.9963021,73.8443297 32.964319,73.8763129 C32.9323358,73.908296 32.9143686,73.9516749 32.9143701,73.9969059 L32.9143701,74.8570201 L30.3562598,74.8570201 L30.3562598,73.9969059 C30.3562614,73.9516749 30.3382941,73.908296 30.306311,73.8763129 C30.2743278,73.8443297 30.2309489,73.826364 30.1857179,73.826364 L26.0927387,73.826364 C26.047508,73.826364 26.0041296,73.8443305 25.9721469,73.8763135 C25.9401642,73.9082966 25.9221972,73.9516752 25.9221988,73.9969059 L25.9221988,74.8570201 L23.3640826,74.8570201 L23.3640826,73.9969059 C23.3640841,73.9516752 23.3461171,73.9082966 23.3141344,73.8763135 C23.2821517,73.8443305 23.2387733,73.826364 23.1935427,73.826364 L19.1005673,73.826364 C19.0553365,73.826364 19.0119578,73.8443298 18.979975,73.876313 C18.9479921,73.9082962 18.9300253,73.9516751 18.9300274,73.9969059 L18.9300274,74.8570201 L16.3719151,74.8570201 L16.3719151,73.9969059 C16.3719167,73.9516749 16.3539494,73.908296 16.3219663,73.8763129 C16.2899831,73.8443297 16.2466042,73.826364 16.2013733,73.826364 L12.1083959,73.826364 C12.0631649,73.826364 12.0197861,73.8443297 11.9878029,73.8763129 C11.9558198,73.908296 11.9378525,73.9516749 11.9378541,73.9969059 L11.9378541,74.8570201 L4.09297732,74.8570201 C1.83248849,74.8570223 0,76.6895106 0,78.9499994 L0,80.8007483 C0,83.061233 1.83249262,84.8937159 4.09297732,84.8937159 L140.184525,84.8937159 C142.44501,84.8937159 144.277504,83.0612333 144.277504,80.8007483 L144.277504,78.9499994 C144.277504,76.6895102 142.445014,74.8570223 140.184525,74.8570201 Z","id","Path",1,"fill-color-20"],["d","M88.0406297,103.870828 C88.3071704,103.870828 88.5610365,103.731189 88.7006752,103.490029 L94.2857286,93.8431185 C94.5808417,93.3385473 94.2159092,92.7007212 93.6288439,92.7007212 L89.9668136,92.7007212 L91.318669,88.5817505 C91.445602,88.0993988 91.0806695,87.6234 90.5824512,87.6234 L86.0128621,87.6234 C85.632063,87.6234 85.3083776,87.9058383 85.2576168,88.2834455 L84.2421525,95.8994274 C84.1818469,96.3563987 84.5372656,96.7625782 84.9973979,96.7625782 L88.7641417,96.7625782 L87.30122,102.934697 C87.1869926,103.417048 87.555086,103.870828 88.0406297,103.870828 Z","id","b","transform","translate(89.312846, 95.747114) rotate(14.000000) translate(-89.312846, -95.747114) ",1,"fill-color-21"],["id","Oval","cx","74.1507041","cy","17.5648113","r","8.15070413",1,"fill-color-primary"]],template:function(e,o){if(1&e&&(t.YNc(0,We,1,0,"ng-container",0),t.YNc(1,Xe,32,5,"ng-template",null,1,t.W1O),t.YNc(3,je,66,5,"ng-template",null,2,t.W1O),t.YNc(5,Ke,93,5,"ng-template",null,3,t.W1O),t.YNc(7,$e,54,5,"ng-template",null,4,t.W1O),t.YNc(9,tn,51,5,"ng-template",null,5,t.W1O)),2&e){const a=t.MAs(2),l=t.MAs(4),r=t.MAs(6),h=t.MAs(8),f=t.MAs(10);t.Q6J("ngTemplateOutlet",1===o.stepNumber?a:2===o.stepNumber?l:3===o.stepNumber?r:4===o.stepNumber?h:f)}},directives:[u.tP,m.xw,m.yH,m.Wh,u.mk,L.oO,y.n5,y.$j],styles:["svg.small-svg[_ngcontent-%COMP%]{height:50%;min-height:50%;max-width:100%}svg.large-svg[_ngcontent-%COMP%]{height:60%;min-height:60%;max-width:100%}"],data:{animation:[pt.l]}}),n})();const nn=["stepper"];function on(n,i){if(1&n&&(t.TgZ(0,"div",48)(1,"p",49)(2,"strong"),t._uU(3,"Channel Peer:\xa0"),t.qZA(),t._uU(4),t.ALo(5,"titlecase"),t.qZA(),t.TgZ(6,"p",50)(7,"strong"),t._uU(8,"Channel ID:\xa0"),t.qZA(),t._uU(9),t.qZA(),t._UZ(10,"p",50),t.qZA()),2&n){const e=t.oxw(2);t.xp6(4),t.Oqu(t.lcZ(5,2,e.channel.remote_alias)),t.xp6(5),t.Oqu(e.channel.chan_id)}}function an(n,i){if(1&n&&t._uU(0),2&n){const e=t.oxw(2);t.Oqu(e.inputFormLabel)}}function ln(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Amount is required."),t.qZA())}function sn(n,i){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.ALo(2,"number"),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.hij("Amount must be greater than or equal to ",t.lcZ(2,1,e.minQuote.amount),".")}}function rn(n,i){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.ALo(2,"number"),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.hij("Amount must be less than or equal to ",t.lcZ(2,1,e.maxQuote.amount),".")}}function cn(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Confirmation target is required."),t.qZA())}function pn(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Confirmation target must be a positive number."),t.qZA())}function un(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Percentage is required."),t.qZA())}function mn(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Percentage must be a positive number."),t.qZA())}function dn(n,i){if(1&n&&(t.TgZ(0,"mat-form-field",50),t._UZ(1,"input",51),t.YNc(2,un,2,0,"mat-error",25),t.YNc(3,mn,2,0,"mat-error",25),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("step",1),t.xp6(1),t.Q6J("ngIf",null==e.inputFormGroup.controls.routingFeePercent.errors?null:e.inputFormGroup.controls.routingFeePercent.errors.required),t.xp6(1),t.Q6J("ngIf",null==e.inputFormGroup.controls.routingFeePercent.errors?null:e.inputFormGroup.controls.routingFeePercent.errors.min)}}function hn(n,i){1&n&&(t.TgZ(0,"div",52)(1,"mat-slide-toggle",53),t._uU(2,"Fast"),t.qZA(),t.TgZ(3,"mat-icon",54),t._uU(4,"info_outline"),t.qZA()())}function _n(n,i){if(1&n&&t._uU(0),2&n){const e=t.oxw(2);t.Oqu(e.quoteFormLabel)}}function fn(n,i){1&n&&(t.TgZ(0,"p",55)(1,"mat-icon",56),t._uU(2,"close"),t.qZA(),t._uU(3,"Local balance amount is insufficient for swap."),t.qZA())}function gn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",57),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onValidateAmount()}),t._uU(1,"Next"),t.qZA()}}function Cn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",58),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onLoop()}),t._uU(1),t.qZA()}if(2&n){const e=t.oxw(2);t.xp6(1),t.hij("Initiate ",e.loopDirectionCaption,"")}}function xn(n,i){if(1&n&&t._uU(0),2&n){const e=t.oxw(3);t.Oqu(e.addressFormLabel)}}function yn(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Address is required."),t.qZA())}function Tn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-step",16)(1,"form",17),t.YNc(2,xn,1,1,"ng-template",18),t.TgZ(3,"div",59)(4,"mat-radio-group",60),t.NdJ("change",function(a){return t.CHM(e),t.oxw(2).onAddressTypeChange(a)}),t.TgZ(5,"mat-radio-button",61),t._uU(6,"Node Local Address"),t.qZA(),t.TgZ(7,"mat-radio-button",62),t._uU(8,"External Address"),t.qZA()(),t.TgZ(9,"mat-form-field",63),t._UZ(10,"input",64),t.YNc(11,yn,2,0,"mat-error",25),t.qZA()(),t.TgZ(12,"div",29)(13,"button",65),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onLoop()}),t._uU(14),t.qZA()()()()}if(2&n){const e=t.oxw(2);t.Q6J("stepControl",e.addressFormGroup)("editable",e.flgEditable),t.xp6(1),t.Q6J("formGroup",e.addressFormGroup),t.xp6(9),t.Q6J("required","external"===e.addressFormGroup.controls.addressType.value),t.xp6(1),t.Q6J("ngIf",null==e.addressFormGroup.controls.address.errors?null:e.addressFormGroup.controls.address.errors.required),t.xp6(3),t.hij("Initiate ",e.loopDirectionCaption,"")}}function vn(n,i){if(1&n&&t._uU(0),2&n){const e=t.oxw(2);t.hij("",e.loopDirectionCaption," Status")}}function bn(n,i){if(1&n&&(t.TgZ(0,"mat-icon",66),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.loopStatus&&null!=e.loopStatus&&e.loopStatus.id_bytes?"check":"close")}}function wn(n,i){1&n&&t._UZ(0,"div")}function Zn(n,i){1&n&&t._UZ(0,"mat-progress-bar",67)}function An(n,i){if(1&n&&(t.TgZ(0,"h4",68),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.loopStatus&&e.loopStatus.error?e.loopDirectionCaption+" failed.":e.loopStatus&&e.loopStatus.id_bytes&&e.channel?e.loopDirectionCaption+" request placed successfully. You can check the status of the request on the 'Loop' menu.":e.loopDirectionCaption+" request placed successfully.")}}function Ln(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",69),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).goToLoop()}),t._uU(1,"Check Status"),t.qZA()}}function Sn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",70),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onRestart()}),t._uU(1,"Start Again"),t.qZA()}}function Fn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",3)(1,"div",4)(2,"mat-card-header",5)(3,"div",6)(4,"span",7),t._uU(5),t.qZA()(),t.TgZ(6,"div",8)(7,"button",9),t.NdJ("click",function(){return t.CHM(e),t.oxw().showInfo()}),t._uU(8,"?"),t.qZA(),t.TgZ(9,"button",10),t.NdJ("click",function(){return t.CHM(e),t.oxw().onClose()}),t._uU(10,"X"),t.qZA()()(),t.TgZ(11,"mat-card-content",11)(12,"div",12),t.YNc(13,on,11,4,"div",13),t.TgZ(14,"mat-vertical-stepper",14,15),t.NdJ("selectionChange",function(a){return t.CHM(e),t.oxw().stepSelectionChanged(a)}),t.TgZ(16,"mat-step",16)(17,"form",17),t.YNc(18,an,1,1,"ng-template",18),t.TgZ(19,"div",19),t._UZ(20,"rtl-loop-quote",20)(21,"rtl-loop-quote",20),t.qZA(),t.TgZ(22,"div",21)(23,"mat-form-field",22),t._UZ(24,"input",23),t.TgZ(25,"mat-hint"),t._uU(26),t.ALo(27,"number"),t.ALo(28,"number"),t.qZA(),t.TgZ(29,"span",24),t._uU(30,"Sats"),t.qZA(),t.YNc(31,ln,2,0,"mat-error",25),t.YNc(32,sn,3,3,"mat-error",25),t.YNc(33,rn,3,3,"mat-error",25),t.qZA(),t.TgZ(34,"mat-form-field",22),t._UZ(35,"input",26),t.YNc(36,cn,2,0,"mat-error",25),t.YNc(37,pn,2,0,"mat-error",25),t.qZA(),t.YNc(38,dn,4,3,"mat-form-field",27),t.qZA(),t.YNc(39,hn,5,0,"div",28),t.TgZ(40,"div",29)(41,"button",30),t.NdJ("click",function(){return t.CHM(e),t.oxw().onEstimateQuote()}),t._uU(42,"Estimate Quote"),t.qZA()()()(),t.TgZ(43,"mat-step",16)(44,"form",17),t.YNc(45,_n,1,1,"ng-template",18),t._UZ(46,"rtl-loop-quote",31),t.YNc(47,fn,4,0,"p",32),t.TgZ(48,"div",29),t.YNc(49,gn,2,0,"button",33),t.YNc(50,Cn,2,1,"button",34),t.qZA()()(),t.YNc(51,Tn,15,6,"mat-step",35),t.TgZ(52,"mat-step",36)(53,"form",17),t.YNc(54,vn,1,1,"ng-template",18),t.TgZ(55,"div",37)(56,"mat-expansion-panel",38)(57,"mat-expansion-panel-header")(58,"mat-panel-title")(59,"span",39),t._uU(60),t.YNc(61,bn,2,1,"mat-icon",40),t.qZA()()(),t.YNc(62,wn,1,0,"div",41),t.qZA(),t.YNc(63,Zn,1,0,"mat-progress-bar",42),t.qZA(),t.YNc(64,An,2,1,"h4",43),t.TgZ(65,"div",29),t.YNc(66,Ln,2,0,"button",44),t.YNc(67,Sn,2,0,"button",45),t.qZA()()()(),t.TgZ(68,"div",46)(69,"button",47),t._uU(70,"Close"),t.qZA()()()()()()}if(2&n){const e=t.oxw(),o=t.MAs(2);t.Q6J("@opacityAnimation",void 0),t.xp6(3),t.Q6J("fxFlex",e.screenSize===e.screenSizeEnum.XS||e.screenSize===e.screenSizeEnum.SM?"83":"91"),t.xp6(2),t.Oqu(e.channel?"Channel "+e.loopDirectionCaption:e.loopDirectionCaption),t.xp6(1),t.Q6J("fxFlex",e.screenSize===e.screenSizeEnum.XS||e.screenSize===e.screenSizeEnum.SM?"17":"9"),t.xp6(7),t.Q6J("ngIf",e.channel),t.xp6(1),t.Q6J("linear",!0),t.xp6(2),t.Q6J("stepControl",e.inputFormGroup)("editable",e.flgEditable),t.xp6(1),t.Q6J("formGroup",e.inputFormGroup),t.xp6(3),t.Q6J("quote",e.minQuote)("termCaption","min")("panelExpanded",!1)("showPanel",!0),t.xp6(1),t.Q6J("quote",e.maxQuote)("termCaption","max")("panelExpanded",!1)("showPanel",!0),t.xp6(2),t.Q6J("fxFlex",e.direction===e.LoopTypeEnum.LOOP_OUT?"35":"48"),t.xp6(1),t.Q6J("step",1e3),t.xp6(2),t.AsE("Range: ",t.lcZ(27,51,e.minQuote.amount),"-",t.lcZ(28,53,e.maxQuote.amount),""),t.xp6(5),t.Q6J("ngIf",null==e.inputFormGroup.controls.amount.errors?null:e.inputFormGroup.controls.amount.errors.required),t.xp6(1),t.Q6J("ngIf",null==e.inputFormGroup.controls.amount.errors?null:e.inputFormGroup.controls.amount.errors.min),t.xp6(1),t.Q6J("ngIf",null==e.inputFormGroup.controls.amount.errors?null:e.inputFormGroup.controls.amount.errors.max),t.xp6(1),t.Q6J("fxFlex",e.direction===e.LoopTypeEnum.LOOP_OUT?"30":"48"),t.xp6(1),t.Q6J("step",1),t.xp6(1),t.Q6J("ngIf",null==e.inputFormGroup.controls.sweepConfTarget.errors?null:e.inputFormGroup.controls.sweepConfTarget.errors.required),t.xp6(1),t.Q6J("ngIf",null==e.inputFormGroup.controls.sweepConfTarget.errors?null:e.inputFormGroup.controls.sweepConfTarget.errors.min),t.xp6(1),t.Q6J("ngIf",e.direction===e.LoopTypeEnum.LOOP_OUT),t.xp6(1),t.Q6J("ngIf",e.direction===e.LoopTypeEnum.LOOP_OUT),t.xp6(4),t.Q6J("stepControl",e.quoteFormGroup)("editable",e.flgEditable),t.xp6(1),t.Q6J("formGroup",e.quoteFormGroup),t.xp6(2),t.Q6J("quote",e.quote)("showPanel",!1),t.xp6(1),t.Q6J("ngIf",e.inputFormGroup.controls.amount.value>e.localBalanceToCompare),t.xp6(2),t.Q6J("ngIf",e.direction===e.LoopTypeEnum.LOOP_OUT),t.xp6(1),t.Q6J("ngIf",e.direction===e.LoopTypeEnum.LOOP_IN),t.xp6(1),t.Q6J("ngIf",e.direction===e.LoopTypeEnum.LOOP_OUT),t.xp6(1),t.Q6J("stepControl",e.statusFormGroup),t.xp6(1),t.Q6J("formGroup",e.statusFormGroup),t.xp6(3),t.Q6J("expanded",!!e.loopStatus),t.xp6(4),t.Oqu(e.loopStatus?e.loopStatus.id_bytes?e.loopDirectionCaption+" request details":e.loopDirectionCaption+" error details":"Waiting for "+e.loopDirectionCaption+" request..."),t.xp6(1),t.Q6J("ngIf",e.loopStatus),t.xp6(1),t.Q6J("ngIf",!e.loopStatus)("ngIfElse",o),t.xp6(1),t.Q6J("ngIf",!e.loopStatus),t.xp6(1),t.Q6J("ngIf",e.loopStatus),t.xp6(2),t.Q6J("ngIf",e.loopStatus&&e.loopStatus.id_bytes&&e.channel),t.xp6(1),t.Q6J("ngIf",e.loopStatus&&(e.loopStatus.error||!e.loopStatus.id_bytes)),t.xp6(2),t.Q6J("mat-dialog-close",!1)}}function kn(n,i){if(1&n&&t._UZ(0,"rtl-loop-status",71),2&n){const e=t.oxw();t.Q6J("loopStatus",e.loopStatus)}}function qn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"rtl-loop-out-info-graphics",88),t.NdJ("stepNumberChange",function(a){return t.CHM(e),t.oxw(2).stepNumber=a}),t.qZA()}if(2&n){const e=t.oxw(2);t.Q6J("stepNumber",e.stepNumber)("animationDirection",e.animationDirection)}}function Nn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"rtl-loop-in-info-graphics",88),t.NdJ("stepNumberChange",function(a){return t.CHM(e),t.oxw(2).stepNumber=a}),t.qZA()}if(2&n){const e=t.oxw(2);t.Q6J("stepNumber",e.stepNumber)("animationDirection",e.animationDirection)}}const On=function(n,i){return{"dot-primary":n,"dot-primary-lighter":i}};function Un(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"span",89),t.NdJ("click",function(){const l=t.CHM(e).$implicit;return t.oxw(2).onStepChanged(l)}),t._UZ(1,"p",90),t.qZA()}if(2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngClass",t.WLB(1,On,o.stepNumber===e,o.stepNumber!==e))}}function Mn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",91),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onReadMore()}),t._uU(1,"Read More"),t.qZA()}}function Pn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",92),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onStepChanged(4)}),t._uU(1,"Back"),t.qZA()}}function In(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",93),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return a.flgShowInfo=!1,a.stepNumber=1}),t._uU(1,"Close"),t.qZA()}}function Rn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",94),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return a.flgShowInfo=!1,a.stepNumber=1}),t._uU(1,"Close"),t.qZA()}}function Dn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",95),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return a.onStepChanged(a.stepNumber-1)}),t._uU(1,"Back"),t.qZA()}}function Qn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",96),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return a.onStepChanged(a.stepNumber+1)}),t._uU(1,"Next"),t.qZA()}}const Jn=function(){return[1,2,3,4,5]};function En(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",72)(1,"div",19)(2,"mat-card-header",73)(3,"div",74),t._UZ(4,"span",7),t.qZA(),t.TgZ(5,"div",75)(6,"button",76),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return a.flgShowInfo=!1,a.stepNumber=1}),t._uU(7,"X"),t.qZA()()(),t.TgZ(8,"mat-card-content",77),t.YNc(9,qn,1,2,"rtl-loop-out-info-graphics",78),t.YNc(10,Nn,1,2,"rtl-loop-in-info-graphics",78),t.qZA(),t.TgZ(11,"div",79),t.YNc(12,Un,2,4,"span",80),t.qZA(),t.TgZ(13,"div",81),t.YNc(14,Mn,2,0,"button",82),t.YNc(15,Pn,2,0,"button",83),t.YNc(16,In,2,0,"button",84),t.YNc(17,Rn,2,0,"button",85),t.YNc(18,Dn,2,0,"button",86),t.YNc(19,Qn,2,0,"button",87),t.qZA()()()}if(2&n){const e=t.oxw();t.Q6J("@opacityAnimation",void 0),t.xp6(9),t.Q6J("ngIf",e.direction===e.LoopTypeEnum.LOOP_OUT),t.xp6(1),t.Q6J("ngIf",e.direction===e.LoopTypeEnum.LOOP_IN),t.xp6(2),t.Q6J("ngForOf",t.DdM(10,Jn)),t.xp6(2),t.Q6J("ngIf",5===e.stepNumber),t.xp6(1),t.Q6J("ngIf",5===e.stepNumber),t.xp6(1),t.Q6J("ngIf",5===e.stepNumber),t.xp6(1),t.Q6J("ngIf",e.stepNumber<5),t.xp6(1),t.Q6J("ngIf",e.stepNumber>1&&e.stepNumber<5),t.xp6(1),t.Q6J("ngIf",e.stepNumber<5)}}let xt=(()=>{class n{constructor(e,o,a,l,r,h,f,x,I){this.dialogRef=e,this.data=o,this.store=a,this.loopService=l,this.formBuilder=r,this.decimalPipe=h,this.logger=f,this.router=x,this.commonService=I,this.faInfoCircle=b.sqG,this.LoopTypeEnum=s.$I,this.direction=s.$I.LOOP_OUT,this.loopDirectionCaption="Loop out",this.loopStatus=null,this.inputFormLabel="Amount to loop out",this.quoteFormLabel="Confirm Quote",this.addressFormLabel="Withdrawal Address",this.prepayRoutingFee=36,this.flgShowInfo=!1,this.stepNumber=1,this.screenSize="",this.screenSizeEnum=s.cu,this.animationDirection="forward",this.flgEditable=!0,this.localBalanceToCompare=null,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x,new d.x]}ngOnInit(){this.screenSize=this.commonService.getScreenSize(),this.channel=this.data.channel,this.minQuote=this.data.minQuote?this.data.minQuote:{},this.maxQuote=this.data.maxQuote?this.data.maxQuote:{},this.direction=this.data.direction||s.$I.LOOP_OUT,this.loopDirectionCaption=this.direction===s.$I.LOOP_IN?"Loop in":"Loop out",this.inputFormLabel="Amount to "+this.loopDirectionCaption,this.inputFormGroup=this.formBuilder.group({amount:[this.minQuote.amount,[p.kI.required,p.kI.min(this.minQuote.amount||0),p.kI.max(this.maxQuote.amount||0)]],sweepConfTarget:[6,[p.kI.required,p.kI.min(1)]],routingFeePercent:[2,[p.kI.required,p.kI.min(0)]],fast:[!1,[p.kI.required]]}),this.quoteFormGroup=this.formBuilder.group({}),this.addressFormGroup=this.formBuilder.group({addressType:["local",[p.kI.required]],address:[{value:"",disabled:!0}]}),this.statusFormGroup=this.formBuilder.group({}),this.onFormValueChanges(),this.store.select(T.ZW).pipe((0,_.R)(this.unSubs[6])).subscribe(e=>{this.localBalanceToCompare=this.channel&&this.channel.local_balance?+this.channel.local_balance:e.lightningBalance&&e.lightningBalance.local?+e.lightningBalance.local:null})}ngAfterViewInit(){this.inputFormGroup.setErrors({Invalid:!0}),this.direction===s.$I.LOOP_OUT&&this.addressFormGroup.setErrors({Invalid:!0})}onFormValueChanges(){this.inputFormGroup.valueChanges.pipe((0,_.R)(this.unSubs[4])).subscribe(e=>{this.inputFormGroup.setErrors({Invalid:!0})}),this.direction===s.$I.LOOP_OUT&&this.addressFormGroup.valueChanges.pipe((0,_.R)(this.unSubs[5])).subscribe(e=>{this.addressFormGroup.setErrors({Invalid:!0})})}onAddressTypeChange(e){"external"===e.value?(this.addressFormGroup.controls.address.setValidators([p.kI.required]),this.addressFormGroup.controls.address.markAsTouched(),this.addressFormGroup.controls.address.enable()):(this.addressFormGroup.controls.address.setValidators(null),this.addressFormGroup.controls.address.markAsPristine(),this.addressFormGroup.controls.address.disable(),this.addressFormGroup.controls.address.setValue("")),this.addressFormGroup.setErrors({Invalid:!0})}onValidateAmount(){this.localBalanceToCompare&&this.inputFormGroup.controls.amount.value<=this.localBalanceToCompare&&this.stepper.next()}onLoop(){var e;if(!this.inputFormGroup.controls.amount.value||this.minQuote.amount&&this.inputFormGroup.controls.amount.valuethis.maxQuote.amount||!this.inputFormGroup.controls.sweepConfTarget.value||this.inputFormGroup.controls.sweepConfTarget.value<2||this.direction===s.$I.LOOP_OUT&&(!this.inputFormGroup.controls.routingFeePercent.value||this.inputFormGroup.controls.routingFeePercent.value<0)||this.direction===s.$I.LOOP_OUT&&"external"===this.addressFormGroup.controls.addressType.value&&(!this.addressFormGroup.controls.address.value||""===this.addressFormGroup.controls.address.value.trim()))return!0;if(this.flgEditable=!1,null===(e=this.stepper.selected)||void 0===e||e.stepControl.setErrors(null),this.stepper.next(),this.direction===s.$I.LOOP_IN)this.loopService.loopIn(this.inputFormGroup.controls.amount.value,+(this.quote.swap_fee_sat||0),+(this.quote.htlc_publish_fee_sat||0),"",!0).pipe((0,_.R)(this.unSubs[0])).subscribe({next:o=>{this.loopStatus=o,this.loopService.listSwaps(),this.flgEditable=!0},error:o=>{this.loopStatus={error:o},this.flgEditable=!0,this.logger.error(o)}});else{const o=Math.ceil(this.inputFormGroup.controls.amount.value*(this.inputFormGroup.controls.routingFeePercent.value/100)),a="external"===this.addressFormGroup.controls.addressType.value?this.addressFormGroup.controls.address.value:"",l=this.inputFormGroup.controls.fast.value?0:(new Date).getTime()+18e5;this.loopService.loopOut(this.inputFormGroup.controls.amount.value,this.channel&&this.channel.chan_id?this.channel.chan_id:"",this.inputFormGroup.controls.sweepConfTarget.value,o,+(this.quote.htlc_sweep_fee_sat||0),this.prepayRoutingFee,+(this.quote.prepay_amt_sat||0),+(this.quote.swap_fee_sat||0),l,a).pipe((0,_.R)(this.unSubs[1])).subscribe({next:r=>{this.loopStatus=r,this.loopService.listSwaps(),this.flgEditable=!0},error:r=>{this.loopStatus={error:r},this.flgEditable=!0,this.logger.error(r)}})}}onEstimateQuote(){var e;if(!this.inputFormGroup.controls.amount.value||this.minQuote.amount&&this.inputFormGroup.controls.amount.valuethis.maxQuote.amount||!this.inputFormGroup.controls.sweepConfTarget.value||this.inputFormGroup.controls.sweepConfTarget.value<2)return!0;const o=this.inputFormGroup.controls.fast.value?0:(new Date).getTime()+18e5;this.direction===s.$I.LOOP_IN?this.loopService.getLoopInQuote(this.inputFormGroup.controls.amount.value,this.inputFormGroup.controls.sweepConfTarget.value,o).pipe((0,_.R)(this.unSubs[2])).subscribe(a=>{this.quote=a,this.quote.off_chain_swap_routing_fee_percentage=this.inputFormGroup.controls.routingFeePercent.value?this.inputFormGroup.controls.routingFeePercent.value:2}):this.loopService.getLoopOutQuote(this.inputFormGroup.controls.amount.value,this.inputFormGroup.controls.sweepConfTarget.value,o).pipe((0,_.R)(this.unSubs[3])).subscribe(a=>{this.quote=a,this.quote.off_chain_swap_routing_fee_percentage=this.inputFormGroup.controls.routingFeePercent.value?this.inputFormGroup.controls.routingFeePercent.value:2}),null===(e=this.stepper.selected)||void 0===e||e.stepControl.setErrors(null),this.stepper.next()}stepSelectionChanged(e){switch(e.selectedIndex){case 0:default:this.inputFormLabel="Amount to "+this.loopDirectionCaption,this.quoteFormLabel="Confirm Quote",this.addressFormLabel="Withdrawal Address";break;case 1:this.inputFormLabel=this.inputFormGroup.controls.amount.value||this.inputFormGroup.controls.sweepConfTarget.value?this.direction===s.$I.LOOP_IN?this.loopDirectionCaption+" Amount: "+this.decimalPipe.transform(this.inputFormGroup.controls.amount.value?this.inputFormGroup.controls.amount.value:0)+" Sats | Target Confirmation: "+(this.inputFormGroup.controls.sweepConfTarget.value?this.inputFormGroup.controls.sweepConfTarget.value:6):this.loopDirectionCaption+" Amount: "+this.decimalPipe.transform(this.inputFormGroup.controls.amount.value?this.inputFormGroup.controls.amount.value:0)+" Sats | Target Confirmation: "+(this.inputFormGroup.controls.sweepConfTarget.value?this.inputFormGroup.controls.sweepConfTarget.value:6)+" | Percentage: "+(this.inputFormGroup.controls.routingFeePercent.value?this.inputFormGroup.controls.routingFeePercent.value:"2")+" | Fast: "+(this.inputFormGroup.controls.fast.value?"Enabled":"Disabled"):"Amount to "+this.loopDirectionCaption,this.quoteFormLabel="Confirm Quote",this.addressFormLabel="Withdrawal Address";break;case 2:this.inputFormLabel=this.inputFormGroup.controls.amount.value||this.inputFormGroup.controls.sweepConfTarget.value?this.direction===s.$I.LOOP_IN?this.loopDirectionCaption+" Amount: "+this.decimalPipe.transform(this.inputFormGroup.controls.amount.value?this.inputFormGroup.controls.amount.value:0)+" Sats | Target Confirmation: "+(this.inputFormGroup.controls.sweepConfTarget.value?this.inputFormGroup.controls.sweepConfTarget.value:6):this.loopDirectionCaption+" Amount: "+this.decimalPipe.transform(this.inputFormGroup.controls.amount.value?this.inputFormGroup.controls.amount.value:0)+" Sats | Target Confirmation: "+(this.inputFormGroup.controls.sweepConfTarget.value?this.inputFormGroup.controls.sweepConfTarget.value:6)+" | Fast: "+(this.inputFormGroup.controls.fast.value?"Enabled":"Disabled"):"Amount to "+this.loopDirectionCaption,this.quoteFormLabel=this.quote&&this.quote.swap_fee_sat&&(this.quote.htlc_sweep_fee_sat||this.quote.htlc_publish_fee_sat)&&this.quote.prepay_amt_sat?"Quote confirmed | Estimated Fees: "+this.decimalPipe.transform(+this.quote.swap_fee_sat+ +(this.quote.htlc_sweep_fee_sat?this.quote.htlc_sweep_fee_sat:this.quote.htlc_publish_fee_sat?this.quote.htlc_publish_fee_sat:0))+" Sats":"Quote confirmed",this.addressFormLabel=this.addressFormGroup.controls.addressType.value?"Withdrawal Address | Type: "+this.addressFormGroup.controls.addressType.value:"Withdrawal Address"}(this.direction===s.$I.LOOP_OUT&&1!==e.selectedIndex&&e.selectedIndex{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Q.so),t.Y36(Q.WI),t.Y36(S.yh),t.Y36(rt.W),t.Y36(p.qu),t.Y36(u.JJ),t.Y36(N.mQ),t.Y36(v.F0),t.Y36(O.v))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-loop-modal"]],viewQuery:function(e,o){if(1&e&&t.Gf(nn,5),2&e){let a;t.iGM(a=t.CRH())&&(o.stepper=a.first)}},decls:4,vars:2,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch",4,"ngIf"],["loopStatusBlock",""],["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch","class","info-graphics-container",4,"ngIf"],["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxLayoutAlign","start start",3,"fxFlex"],[1,"page-title"],["fxLayoutAlign","space-between end",3,"fxFlex"],["tabindex","21","mat-button","",1,"btn-close-x","p-0",3,"click"],["tabindex","22","mat-button","",1,"btn-close-x","p-0",3,"click"],[1,"padding-gap-x-large"],["fxLayout","column"],["class","padding-gap-large","fxLayout","row wrap","fxLayoutAlign","space-between stretch",4,"ngIf"],[3,"linear","selectionChange"],["stepper",""],[3,"stepControl","editable"],["fxLayout","column","fxLayoutAlign","start","fxLayoutAlign.gt-sm","space-between",1,"my-1",3,"formGroup"],["matStepLabel",""],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between stretch"],[3,"quote","termCaption","panelExpanded","showPanel"],["fxLayout","row wrap","fxFlex","100","fxLayoutAlign","space-between center",1,"mt-1"],[3,"fxFlex"],["autoFocus","","matInput","","placeholder","Amount","type","number","tabindex","1","formControlName","amount","required","",3,"step"],["matSuffix",""],[4,"ngIf"],["matInput","","placeholder","Sweep Confirmation Target","type","number","tabindex","2","formControlName","sweepConfTarget","required","",3,"step"],["fxFlex","30",4,"ngIf"],["fxLayout","row wrap","fxFlex","100","fxLayoutAlign","start center","class","mt-1",4,"ngIf"],["fxLayout","row","fxLayoutAlign","start center","fxFlex","100",1,"mt-2"],["mat-button","","color","primary","tabindex","5","type","button",3,"click"],[3,"quote","showPanel"],["fxFlex","100","class","color-warn mt-2","fxLayoutAlign","start center",4,"ngIf"],["mat-button","","color","primary","tabindex","6","type","button",3,"click",4,"ngIf"],["mat-button","","color","primary","tabindex","7","type","button",3,"click",4,"ngIf"],[3,"stepControl","editable",4,"ngIf"],[3,"stepControl"],["fxLayout","row wrap","fxFlex","100","fxLayoutAlign","space-between stretch"],["fxFlex","100",1,"flat-expansion-panel",3,"expanded"],["fxLayoutAlign","start center","fxFlex","100"],["class","ml-1 icon-small",4,"ngIf"],[4,"ngIf","ngIfElse"],["fxFlex","100","color","primary","mode","indeterminate",4,"ngIf"],["fxLayoutAlign","start","class","font-bold-500 mt-2",4,"ngIf"],["mat-button","","color","primary","tabindex","12","type","button",3,"click",4,"ngIf"],["mat-button","","color","primary","tabindex","13","type","button",3,"click",4,"ngIf"],["fxLayout","row","fxFlex","100","fxLayoutAlign","end end"],["mat-button","","color","primary","tabindex","14","type","button","default","",3,"mat-dialog-close"],["fxLayout","row wrap","fxLayoutAlign","space-between stretch",1,"padding-gap-large"],["fxFlex","40"],["fxFlex","30"],["matInput","","placeholder","Max Off-chain Routing Fee (%)","type","number","tabindex","3","formControlName","routingFeePercent","required","",3,"step"],["fxLayout","row wrap","fxFlex","100","fxLayoutAlign","start center",1,"mt-1"],["tabindex","4","color","primary","formControlName","fast","fxFlex","none"],["matTooltip","Swap immediately (Might end up paying a higher on-chain fee)","matTooltipPosition","above","fxFlex","none",1,"info-icon"],["fxFlex","100","fxLayoutAlign","start center",1,"color-warn","mt-2"],[1,"mr-1","icon-small"],["mat-button","","color","primary","tabindex","6","type","button",3,"click"],["mat-button","","color","primary","tabindex","7","type","button",3,"click"],["fxLayout","row wrap","fxFlex","100","fxLayoutAlign","space-between stretch",1,"mt-1"],["color","primary","name","addressType","formControlName","addressType","fxFlex","100","fxLayoutAlign","space-between stretch",3,"change"],["fxFlex","48","tabindex","8","value","local"],["fxFlex","48","tabindex","9","value","external"],["fxFlex","100",1,"mt-1"],["matInput","","placeholder","Address","tabindex","10","formControlName","address",3,"required"],["mat-button","","color","primary","tabindex","11","type","button",3,"click"],[1,"ml-1","icon-small"],["fxFlex","100","color","primary","mode","indeterminate"],["fxLayoutAlign","start",1,"font-bold-500","mt-2"],["mat-button","","color","primary","tabindex","12","type","button",3,"click"],["mat-button","","color","primary","tabindex","13","type","button",3,"click"],["fxLayout","column",3,"loopStatus"],["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch",1,"info-graphics-container"],["fxLayout","row","fxFlex","8","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],["fxFlex","5","fxLayoutAlign","end center"],["tabindex","19","mat-button","",1,"btn-close-x","p-0",3,"click"],["fxLayout","column","fxFlex","70","fxLayoutAlign","space-between center",1,"padding-gap-x-large"],["fxFlex","100",3,"stepNumber","animationDirection","stepNumberChange",4,"ngIf"],["fxLayout","row","fxFlex","10","fxLayoutAlign","center end",1,"padding-gap-x-large","padding-gap-bottom-large"],["fxLayoutAlign","center center","class","dots-stepper-block",3,"click",4,"ngFor","ngForOf"],["fxLayout","row","fxFlex","10","fxLayoutAlign","end end",1,"padding-gap-x-large","padding-gap-bottom-large"],["mat-button","","class","mr-1","color","primary","tabindex","15","type","button",3,"click",4,"ngIf"],["mat-button","","class","mr-1","color","primary","tabindex","16","type","button",3,"click",4,"ngIf"],["mat-button","","color","primary","tabindex","17","type","button",3,"click",4,"ngIf"],["mat-button","","class","mr-1","color","primary","tabindex","18","type","button",3,"click",4,"ngIf"],["mat-button","","class","mr-1","color","primary","tabindex","19","type","button",3,"click",4,"ngIf"],["mat-button","","color","primary","tabindex","20","type","button",3,"click",4,"ngIf"],["fxFlex","100",3,"stepNumber","animationDirection","stepNumberChange"],["fxLayoutAlign","center center",1,"dots-stepper-block",3,"click"],[1,"dot","tiny-dot","mr-0",3,"ngClass"],["mat-button","","color","primary","tabindex","15","type","button",1,"mr-1",3,"click"],["mat-button","","color","primary","tabindex","16","type","button",1,"mr-1",3,"click"],["mat-button","","color","primary","tabindex","17","type","button",3,"click"],["mat-button","","color","primary","tabindex","18","type","button",1,"mr-1",3,"click"],["mat-button","","color","primary","tabindex","19","type","button",1,"mr-1",3,"click"],["mat-button","","color","primary","tabindex","20","type","button",3,"click"]],template:function(e,o){1&e&&(t.YNc(0,Fn,71,55,"div",0),t.YNc(1,kn,1,1,"ng-template",null,1,t.W1O),t.YNc(3,En,20,11,"div",2)),2&e&&(t.Q6J("ngIf",!o.flgShowInfo),t.xp6(3),t.Q6J("ngIf",o.flgShowInfo))},directives:[u.O5,m.xw,m.yH,m.Wh,y.dk,q.lW,y.dn,Y.Vq,Y.C0,p._Y,p.JL,p.sg,Y.VY,Ie,C.KE,P.Nt,p.wV,p.Fj,W.h,p.JJ,p.u,p.Q7,C.bx,C.R9,C.TO,ct.Rr,$.Hw,K.gM,tt.VQ,tt.U0,E.ib,E.yz,E.yK,J.pW,Q.ZT,Je,Ve,en,u.sg,u.mk,L.oO],pipes:[u.rS,u.JJ],styles:[".dots-stepper-block[_ngcontent-%COMP%]{width:3rem}.info-graphics-container[_ngcontent-%COMP%]{max-height:60rem;min-height:60rem}"],data:{animation:[st._]}}),n})();var F=g(7861);function Hn(n,i){if(1&n&&(t.TgZ(0,"mat-hint",19)(1,"strong",20),t._uU(2,"Capacity: "),t.qZA(),t._uU(3),t.ALo(4,"number"),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(3),t.hij("",t.lcZ(4,1,e.remote_balance||0)," Sats")}}function Yn(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",24),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2).$implicit;return t.oxw(3).onLoopOut(a)}),t._uU(1,"Loop Out"),t.qZA()}}function Bn(n,i){if(1&n&&(t.TgZ(0,"div",21)(1,"mat-hint",22)(2,"strong",20),t._uU(3,"Capacity: "),t.qZA(),t._uU(4),t.ALo(5,"number"),t.qZA(),t.YNc(6,Yn,2,0,"button",23),t.qZA()),2&n){const e=t.oxw().$implicit,o=t.oxw(3);t.xp6(4),t.hij("",t.lcZ(5,2,e.local_balance||0)," Sats"),t.xp6(2),t.Q6J("ngIf",o.showLoop)}}function zn(n,i){if(1&n&&t._UZ(0,"mat-progress-bar",25),2&n){const e=t.oxw().$implicit,o=t.oxw(3);t.s9C("value",o.totalLiquidity>0?(+e.remote_balance||0)/o.totalLiquidity*100:0)}}function Gn(n,i){if(1&n&&t._UZ(0,"mat-progress-bar",25),2&n){const e=t.oxw().$implicit,o=t.oxw(3);t.s9C("value",o.totalLiquidity>0?(+e.local_balance||0)/o.totalLiquidity*100:0)}}const Vn=function(){return["../connections/channels/open"]},Wn=function(n){return{filter:n}};function Xn(n,i){if(1&n&&(t.TgZ(0,"div",13)(1,"a",14),t._uU(2),t.ALo(3,"slice"),t.qZA(),t.TgZ(4,"div",15),t.YNc(5,Hn,5,3,"mat-hint",16),t.YNc(6,Bn,7,4,"div",17),t.qZA(),t.YNc(7,zn,1,1,"mat-progress-bar",18),t.YNc(8,Gn,1,1,"mat-progress-bar",18),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(3);t.xp6(1),t.s9C("matTooltip",e.remote_alias||e.remote_pubkey),t.s9C("matTooltipDisabled",(e.remote_alias||e.remote_pubkey).length<26),t.Q6J("routerLink",t.DdM(14,Vn))("state",t.VKq(15,Wn,e.chan_id)),t.xp6(1),t.AsE(" ",t.Dn7(3,10,e.remote_alias||e.remote_pubkey,0,24),"",(e.remote_alias||e.remote_pubkey).length>25?"...":""," "),t.xp6(3),t.Q6J("ngIf","In"===o.direction),t.xp6(1),t.Q6J("ngIf","Out"===o.direction),t.xp6(1),t.Q6J("ngIf","In"===o.direction),t.xp6(1),t.Q6J("ngIf","Out"===o.direction)}}function jn(n,i){if(1&n&&(t.TgZ(0,"div",11),t.YNc(1,Xn,9,17,"div",12),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.allChannels)}}const Kn=function(n,i,e){return{"mb-4":n,"mb-2":i,"mb-1":e}};function $n(n,i){if(1&n&&(t.TgZ(0,"div",3)(1,"div",4)(2,"span",5),t._uU(3,"Total Capacity"),t.qZA(),t.TgZ(4,"mat-hint",6),t._uU(5),t.ALo(6,"number"),t.qZA(),t._UZ(7,"mat-progress-bar",7),t.qZA(),t.TgZ(8,"div",8),t._UZ(9,"mat-divider",9),t.qZA(),t.YNc(10,jn,2,1,"div",10),t.qZA()),2&n){const e=t.oxw(),o=t.MAs(2);t.Q6J("ngClass",t.kEZ(6,Kn,e.screenSize===e.screenSizeEnum.XS||e.screenSize===e.screenSizeEnum.SM,e.screenSize===e.screenSizeEnum.MD,e.screenSize===e.screenSizeEnum.LG||e.screenSize===e.screenSizeEnum.XL)),t.xp6(5),t.hij("",t.lcZ(6,4,e.totalLiquidity)," Sats"),t.xp6(5),t.Q6J("ngIf",e.allChannels&&e.allChannels.length>0)("ngIfElse",o)}}function to(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"button",28),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).goToChannels()}),t._uU(1,"Open Channel"),t.qZA()}}function eo(n,i){if(1&n&&(t.TgZ(0,"div",26),t._uU(1," No channels available. "),t.YNc(2,to,2,0,"button",27),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngIf","Out"===e.direction)}}function no(n,i){if(1&n&&(t.TgZ(0,"div",29)(1,"p"),t._uU(2),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.errorMessage)}}let oo=(()=>{class n{constructor(e,o,a,l){this.router=e,this.loopService=o,this.commonService=a,this.store=l,this.targetConf=6,this.screenSize="",this.screenSizeEnum=s.cu,this.unSubs=[new d.x,new d.x]}ngOnInit(){this.screenSize=this.commonService.getScreenSize(),this.store.select(T.$k).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.showLoop=!(!(null==e?void 0:e.swapServerUrl)||""===e.swapServerUrl.trim())})}goToChannels(){this.router.navigateByUrl("/lnd/connections")}onLoopOut(e){this.loopService.getLoopOutTermsAndQuotes(this.targetConf).pipe((0,_.R)(this.unSubs[1])).subscribe(o=>{this.store.dispatch((0,F.qR)({payload:{minHeight:"56rem",data:{channel:e,minQuote:o[0],maxQuote:o[1],direction:s.$I.LOOP_OUT,component:xt}}}))})}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(v.F0),t.Y36(rt.W),t.Y36(O.v),t.Y36(S.yh))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-channel-liquidity-info"]],inputs:{direction:"direction",totalLiquidity:"totalLiquidity",allChannels:"allChannels",errorMessage:"errorMessage"},decls:5,vars:2,consts:[["fxLayout","column","fxLayoutAlign","start stretch","fxFlex","100",3,"ngClass",4,"ngIf","ngIfElse"],["noChannelBlock",""],["errorBlock",""],["fxLayout","column","fxLayoutAlign","start stretch","fxFlex","100",3,"ngClass"],["fxLayout","column","fxFlex","9","fxLayoutAlign","end start"],[1,"dashboard-capacity-header","this-channel-capacity"],[1,"font-size-90"],["mode","determinate","color","accent","value","100",1,"dashboard-progress-bar","this-channel-bar"],["fxLayout","column","fxFlex","3","fxLayoutAlign","end stretch"],[1,"dashboard-divider"],[3,"perfectScrollbar",4,"ngIf","ngIfElse"],[3,"perfectScrollbar"],["fxLayout","column",4,"ngFor","ngForOf"],["fxLayout","column"],[1,"dashboard-capacity-header","mt-2",3,"routerLink","state","matTooltip","matTooltipDisabled"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between start"],["class","font-size-90 color-primary",4,"ngIf"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start center",4,"ngIf"],["class","dashboard-progress-bar","mode","determinate",3,"value",4,"ngIf"],[1,"font-size-90","color-primary"],[1,"font-weight-900","mr-5px"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start center"],["fxFlex","85","fxLayoutAlign","start start",1,"font-size-90","color-primary"],["fxFlex","15","fxLayoutAlign","end start","class","button-link-dashboard","color","primary","mat-button","","aria-label","Loop Out",3,"click",4,"ngIf"],["fxFlex","15","fxLayoutAlign","end start","color","primary","mat-button","","aria-label","Loop Out",1,"button-link-dashboard",3,"click"],["mode","determinate",1,"dashboard-progress-bar",3,"value"],["fxLayout","row","fxFlex","100","fxLayoutAlign","space-between start",1,"mt-1"],["mat-stroked-button","","color","primary","tabindex","1",3,"click",4,"ngIf"],["mat-stroked-button","","color","primary","tabindex","1",3,"click"],["fxLayout","column","fxFlex","100","fxLayoutAlign","space-between",1,"p-2"]],template:function(e,o){if(1&e&&(t.YNc(0,$n,11,10,"div",0),t.YNc(1,eo,3,1,"ng-template",null,1,t.W1O),t.YNc(3,no,3,1,"ng-template",null,2,t.W1O)),2&e){const a=t.MAs(4);t.Q6J("ngIf",""===(null==o.errorMessage?null:o.errorMessage.trim()))("ngIfElse",a)}},directives:[u.O5,m.xw,m.Wh,m.yH,u.mk,L.oO,C.bx,J.pW,V.d,z.$V,u.sg,v.yS,K.gM,q.lW],pipes:[u.JJ,u.OU],styles:[""]}),n})();var R=g(3251),k=g(6087),Z=g(4847),c=g(2075),A=g(6523),et=g(6534),M=g(4107),G=g(508);function io(n,i){if(1&n&&(t.TgZ(0,"mat-option",25),t._uU(1),t.ALo(2,"titlecase"),t.qZA()),2&n){const e=i.$implicit;t.Q6J("value",e),t.xp6(1),t.Oqu(t.lcZ(2,2,e))}}function ao(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.invoiceError)}}function lo(n,i){if(1&n&&(t.TgZ(0,"div",26),t._UZ(1,"fa-icon",27),t.YNc(2,ao,2,1,"span",28),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faExclamationTriangle),t.xp6(1),t.Q6J("ngIf",""!==e.invoiceError)}}let so=(()=>{class n{constructor(e,o,a,l,r,h){this.dialogRef=e,this.data=o,this.store=a,this.decimalPipe=l,this.commonService=r,this.actions=h,this.faExclamationTriangle=b.eHv,this.selNode={},this.memo="",this.invoiceValueHint="",this.invoicePaymentReq="",this.information={},this.private=!1,this.expiryStep=100,this.pageSize=s.IV,this.timeUnitEnum=s.Qk,this.timeUnits=s.LO,this.selTimeUnit=s.Qk.SECS,this.invoiceError="",this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x]}ngOnInit(){this.pageSize=this.data.pageSize,this.store.select(T.$k).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.selNode=e}),this.store.select(T.Q5).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.actions.pipe((0,_.R)(this.unSubs[2]),(0,H.h)(e=>e.type===s.uR.UPDATE_API_CALL_STATUS_LND)).subscribe(e=>{e.type===s.uR.UPDATE_API_CALL_STATUS_LND&&"SaveNewInvoice"===e.payload.action&&(this.invoiceError=e.payload.message,e.payload.status===s.Bn.ERROR&&(this.invoiceError=e.payload.message),e.payload.status===s.Bn.COMPLETED&&this.dialogRef.close())})}onAddInvoice(e){this.invoiceError="";let o=0;o=this.expiry?this.selTimeUnit!==s.Qk.SECS?this.commonService.convertTime(this.expiry,this.selTimeUnit,s.Qk.SECS):this.expiry:3600,this.store.dispatch((0,A.Rd)({payload:{uiMessage:s.m6.ADD_INVOICE,memo:this.memo,invoiceValue:this.invoiceValue,private:this.private,expiry:o,pageSize:this.pageSize,openModal:!0}}))}resetData(){this.memo="",this.invoiceValue=null,this.private=!1,this.expiry=null,this.invoiceValueHint="",this.selTimeUnit=s.Qk.SECS,this.invoiceError=""}onInvoiceValueChange(){this.selNode&&this.selNode.fiatConversion&&this.invoiceValue&&this.invoiceValue>99&&(this.invoiceValueHint="",this.commonService.convertCurrency(this.invoiceValue,s.NT.SATS,s.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[3])).subscribe({next:e=>{this.invoiceValueHint="= "+this.decimalPipe.transform(e.OTHER,s.Xz.OTHER)+" "+e.symbol},error:e=>{this.invoiceValueHint="Conversion Error: "+e}}))}onTimeUnitChange(e){this.expiry&&this.selTimeUnit!==e.value&&(this.expiry=this.commonService.convertTime(this.expiry,this.selTimeUnit,e.value)),this.selTimeUnit=e.value}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Q.so),t.Y36(Q.WI),t.Y36(S.yh),t.Y36(u.JJ),t.Y36(O.v),t.Y36(j.eX))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-create-invoices"]],decls:38,vars:16,consts:[["fxLayout","row"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title"],["tabindex","8","fxFlex","5","fxLayoutAlign","center","default","","mat-button","",1,"btn-close-x","p-0",3,"mat-dialog-close"],[1,"padding-gap-x-large"],["fxLayout","row wrap","fxLayoutAlign","space-between start","fxFlex","100"],["addInvoiceForm","ngForm"],["fxFlex","100","fxLayoutAlign","end start"],["matInput","","autoFocus","","placeholder","Memo","tabindex","1","name","memo",3,"ngModel","ngModelChange"],["fxFlex","50","fxLayoutAlign","start end"],["matInput","","placeholder","Amount","type","number","tabindex","2","name","invoiceValue",3,"ngModel","step","min","ngModelChange","keyup"],["matSuffix",""],["fxFlex","24","fxLayoutAlign","start end"],["matInput","","placeholder","Expiry","type","number","tabindex","3","name","expiry",3,"ngModel","step","min","ngModelChange"],["tabindex","4","name","timeUnit",3,"value","selectionChange"],[3,"value",4,"ngFor","ngForOf"],["fxLayout","row","fxFlex","100","fxLayoutAlign","start center",1,"mt-1"],["tabindex","4","color","primary","name","private",3,"ngModel","ngModelChange"],["matTooltip","Include routing hints for private channels","matTooltipPosition","above",1,"info-icon"],["fxFlex","100","class","alert alert-danger mt-1",4,"ngIf"],["fxLayout","row","fxFlex","100","fxLayoutAlign","end center",1,"mt-1"],["mat-button","","color","primary","tabindex","5","type","reset",1,"mr-1",3,"click"],["mat-button","","color","primary","tabindex","6",3,"click"],[3,"value"],["fxFlex","100",1,"alert","alert-danger","mt-1"],[1,"mr-1","alert-icon",3,"icon"],[4,"ngIf"]],template:function(e,o){if(1&e){const a=t.EpF();t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3)(4,"span",4),t._uU(5,"Create Invoice"),t.qZA()(),t.TgZ(6,"button",5),t._uU(7,"X"),t.qZA()(),t.TgZ(8,"mat-card-content",6)(9,"form",7,8)(11,"mat-form-field",9)(12,"input",10),t.NdJ("ngModelChange",function(r){return o.memo=r}),t.qZA()(),t.TgZ(13,"mat-form-field",11)(14,"input",12),t.NdJ("ngModelChange",function(r){return o.invoiceValue=r})("keyup",function(){return o.onInvoiceValueChange()}),t.qZA(),t.TgZ(15,"span",13),t._uU(16," Sats "),t.qZA(),t.TgZ(17,"mat-hint"),t._uU(18),t.qZA()(),t.TgZ(19,"mat-form-field",14)(20,"input",15),t.NdJ("ngModelChange",function(r){return o.expiry=r}),t.qZA(),t.TgZ(21,"span",13),t._uU(22),t.ALo(23,"titlecase"),t.qZA()(),t.TgZ(24,"mat-form-field",14)(25,"mat-select",16),t.NdJ("selectionChange",function(r){return o.onTimeUnitChange(r)}),t.YNc(26,io,3,4,"mat-option",17),t.qZA()(),t.TgZ(27,"div",18)(28,"mat-slide-toggle",19),t.NdJ("ngModelChange",function(r){return o.private=r}),t._uU(29,"Private Routing Hints"),t.qZA(),t.TgZ(30,"mat-icon",20),t._uU(31,"info_outline"),t.qZA()(),t.YNc(32,lo,3,2,"div",21),t.TgZ(33,"div",22)(34,"button",23),t.NdJ("click",function(){return o.resetData()}),t._uU(35,"Clear Field"),t.qZA(),t.TgZ(36,"button",24),t.NdJ("click",function(){t.CHM(a);const r=t.MAs(10);return o.onAddInvoice(r)}),t._uU(37,"Create Invoice"),t.qZA()()()()()()}2&e&&(t.xp6(6),t.Q6J("mat-dialog-close",!1),t.xp6(6),t.Q6J("ngModel",o.memo),t.xp6(2),t.Q6J("ngModel",o.invoiceValue)("step",100)("min",1),t.xp6(4),t.Oqu(o.invoiceValueHint),t.xp6(2),t.Q6J("ngModel",o.expiry)("step",o.selTimeUnit===o.timeUnitEnum.SECS?300:o.selTimeUnit===o.timeUnitEnum.MINS?10:o.selTimeUnit===o.timeUnitEnum.HOURS?2:1)("min",1),t.xp6(2),t.hij(" ",t.lcZ(23,14,o.selTimeUnit)," "),t.xp6(3),t.Q6J("value",o.selTimeUnit),t.xp6(1),t.Q6J("ngForOf",o.timeUnits),t.xp6(2),t.Q6J("ngModel",o.private),t.xp6(4),t.Q6J("ngIf",""!==o.invoiceError))},directives:[m.xw,m.yH,y.dk,m.Wh,q.lW,Q.ZT,y.dn,p._Y,p.JL,p.F,C.KE,P.Nt,p.Fj,W.h,p.JJ,p.On,p.wV,p.qQ,et.q,C.R9,C.bx,M.gD,u.sg,G.ey,ct.Rr,$.Hw,K.gM,u.O5,D.BN],pipes:[u.rS],styles:[".mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})();var ro=g(8627);function co(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"form",4,5)(2,"mat-form-field",6)(3,"input",7),t.NdJ("ngModelChange",function(a){return t.CHM(e),t.oxw().memo=a}),t.qZA()(),t.TgZ(4,"mat-form-field",8)(5,"input",9),t.NdJ("ngModelChange",function(a){return t.CHM(e),t.oxw().invoiceValue=a})("keyup",function(){return t.CHM(e),t.oxw().onInvoiceValueChange()}),t.qZA(),t.TgZ(6,"span",10),t._uU(7," Sats "),t.qZA(),t.TgZ(8,"mat-hint"),t._uU(9),t.qZA()(),t.TgZ(10,"div",11)(11,"button",12),t.NdJ("click",function(){return t.CHM(e),t.oxw().resetData()}),t._uU(12,"Clear Field"),t.qZA(),t.TgZ(13,"button",13),t.NdJ("click",function(){t.CHM(e);const a=t.MAs(1);return t.oxw().onAddInvoice(a)}),t._uU(14,"Create Invoice"),t.qZA()()()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngModel",e.memo),t.xp6(2),t.Q6J("ngModel",e.invoiceValue)("step",100)("min",1),t.xp6(4),t.Oqu(e.invoiceValueHint)}}function po(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",14)(1,"button",15),t.NdJ("click",function(){return t.CHM(e),t.oxw().openCreateInvoiceModal()}),t._uU(2,"Create Invoice"),t.qZA()()}}function uo(n,i){1&n&&t._UZ(0,"mat-progress-bar",46)}function mo(n,i){1&n&&(t.TgZ(0,"th",47),t._uU(1," Date Created "),t.qZA())}const yt=function(n){return{"mr-0":n}};function ho(n,i){if(1&n&&t._UZ(0,"span",53),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,yt,e.screenSize===e.screenSizeEnum.XS))}}function _o(n,i){if(1&n&&t._UZ(0,"span",54),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,yt,e.screenSize===e.screenSizeEnum.XS))}}function fo(n,i){if(1&n&&t._UZ(0,"span",55),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,yt,e.screenSize===e.screenSizeEnum.XS))}}function go(n,i){if(1&n&&t._UZ(0,"span",56),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,yt,e.screenSize===e.screenSizeEnum.XS))}}function Co(n,i){if(1&n&&(t.TgZ(0,"td",48),t.YNc(1,ho,1,3,"span",49),t.YNc(2,_o,1,3,"span",50),t.YNc(3,fo,1,3,"span",51),t.YNc(4,go,1,3,"span",52),t._uU(5),t.ALo(6,"date"),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf","OPEN"===(null==e?null:e.state)),t.xp6(1),t.Q6J("ngIf","SETTLED"===(null==e?null:e.state)),t.xp6(1),t.Q6J("ngIf","ACCEPTED"===(null==e?null:e.state)),t.xp6(1),t.Q6J("ngIf","CANCELED"===(null==e?null:e.state)),t.xp6(1),t.hij(" ",t.xi3(6,5,1e3*(null==e?null:e.creation_date),"dd/MMM/y HH:mm"),"")}}function xo(n,i){1&n&&(t.TgZ(0,"th",57),t._uU(1," Date Settled "),t.qZA())}function yo(n,i){if(1&n&&(t.TgZ(0,"td",58),t._uU(1),t.ALo(2,"date"),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Oqu(0!=+(null==e?null:e.settle_date)?t.xi3(2,1,1e3*+(null==e?null:e.settle_date),"dd/MMM/y HH:mm"):"-")}}function To(n,i){1&n&&(t.TgZ(0,"th",47),t._uU(1," Memo "),t.qZA())}const vo=function(n){return{"max-width":n}};function bo(n,i){if(1&n&&(t.TgZ(0,"td",48)(1,"div",59)(2,"span",60),t._uU(3),t.qZA()()()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngStyle",t.VKq(2,vo,o.screenSize===o.screenSizeEnum.XS?"10rem":"22rem")),t.xp6(2),t.Oqu(null==e?null:e.memo)}}function wo(n,i){1&n&&(t.TgZ(0,"th",61),t._uU(1," Amount (Sats) "),t.qZA())}function Zo(n,i){if(1&n&&(t.TgZ(0,"td",48)(1,"span",62),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.hij(" ",t.lcZ(3,1,null==e?null:e.value)," ")}}function Ao(n,i){1&n&&(t.TgZ(0,"th",61),t._uU(1," Amount Settled (Sats) "),t.qZA())}function Lo(n,i){if(1&n&&(t.TgZ(0,"td",48)(1,"span",62),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.hij(" ",t.lcZ(3,1,null==e?null:e.amt_paid_sat)," ")}}function So(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"th",63)(1,"div",64)(2,"mat-select",65),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",66),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}const Fo=function(n){return{"pl-3":n}};function ko(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"td",67)(1,"div",68)(2,"mat-select",69),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",66),t.NdJ("click",function(){const l=t.CHM(e).$implicit;return t.oxw(2).onInvoiceClick(l)}),t._uU(5,"View Info"),t.qZA(),t.TgZ(6,"mat-option",66),t.NdJ("click",function(){const l=t.CHM(e).$implicit;return t.oxw(2).onRefreshInvoice(l)}),t._uU(7,"Refresh"),t.qZA()()()()}if(2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,Fo,e.screenSize!==e.screenSizeEnum.XS))}}function qo(n,i){1&n&&(t.TgZ(0,"p"),t._uU(1,"No invoice available."),t.qZA())}function No(n,i){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting invoices..."),t.qZA())}function Oo(n,i){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.errorMessage)}}function Uo(n,i){if(1&n&&(t.TgZ(0,"td",70),t.YNc(1,qo,2,0,"p",71),t.YNc(2,No,2,0,"p",71),t.YNc(3,Oo,2,1,"p",71),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",(!(null!=e.invoices&&e.invoices.data)||(null==e.invoices||null==e.invoices.data?null:e.invoices.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.invoices&&e.invoices.data)||(null==e.invoices||null==e.invoices.data?null:e.invoices.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.invoices&&e.invoices.data)||(null==e.invoices||null==e.invoices.data?null:e.invoices.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}const Mo=function(n){return{"display-none":n}};function Po(n,i){if(1&n&&t._UZ(0,"tr",72),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,Mo,(null==e.invoices?null:e.invoices.data)&&(null==e.invoices||null==e.invoices.data?null:e.invoices.data.length)>0))}}function Io(n,i){1&n&&t._UZ(0,"tr",73)}function Ro(n,i){1&n&&t._UZ(0,"tr",74)}const Do=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},Qo=function(){return["no_invoice"]};function Jo(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",16)(1,"div",17)(2,"div",18),t._UZ(3,"fa-icon",19),t.TgZ(4,"span",20),t._uU(5,"Invoices History"),t.qZA()(),t.TgZ(6,"mat-form-field",21)(7,"input",22),t.NdJ("keyup",function(){return t.CHM(e),t.oxw().applyFilter()})("ngModelChange",function(a){return t.CHM(e),t.oxw().selFilter=a}),t.qZA()()(),t.TgZ(8,"div",23),t.YNc(9,uo,1,0,"mat-progress-bar",24),t.TgZ(10,"table",25,26),t.ynx(12,27),t.YNc(13,mo,2,0,"th",28),t.YNc(14,Co,7,8,"td",29),t.BQk(),t.ynx(15,30),t.YNc(16,xo,2,0,"th",31),t.YNc(17,yo,3,4,"td",32),t.BQk(),t.ynx(18,33),t.YNc(19,To,2,0,"th",28),t.YNc(20,bo,4,4,"td",29),t.BQk(),t.ynx(21,34),t.YNc(22,wo,2,0,"th",35),t.YNc(23,Zo,4,3,"td",29),t.BQk(),t.ynx(24,36),t.YNc(25,Ao,2,0,"th",35),t.YNc(26,Lo,4,3,"td",29),t.BQk(),t.ynx(27,37),t.YNc(28,So,6,0,"th",38),t.YNc(29,ko,8,3,"td",39),t.BQk(),t.ynx(30,40),t.YNc(31,Uo,4,3,"td",41),t.BQk(),t.YNc(32,Po,1,3,"tr",42),t.YNc(33,Io,1,0,"tr",43),t.YNc(34,Ro,1,0,"tr",44),t.qZA(),t.TgZ(35,"mat-paginator",45),t.NdJ("page",function(a){return t.CHM(e),t.oxw().onPageChange(a)}),t.qZA()()()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("icon",e.faHistory),t.xp6(4),t.Q6J("ngModel",e.selFilter),t.xp6(2),t.Q6J("ngIf",e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",e.invoices)("ngClass",t.VKq(13,Do,""!==e.errorMessage)),t.xp6(22),t.Q6J("matFooterRowDef",t.DdM(15,Qo)),t.xp6(1),t.Q6J("matHeaderRowDef",e.displayedColumns)("matHeaderRowDefSticky",e.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",e.displayedColumns),t.xp6(1),t.Q6J("length",e.totalInvoices)("pageSize",e.pageSize)("pageSizeOptions",e.pageSizeOptions)("showFirstLastButtons",e.screenSize!==e.screenSizeEnum.XS)}}let Yt=(()=>{class n{constructor(e,o,a,l,r,h){this.logger=e,this.store=o,this.decimalPipe=a,this.commonService=l,this.datePipe=r,this.actions=h,this.calledFrom="transactions",this.faHistory=b.qO$,this.selNode={},this.newlyAddedInvoiceMemo=null,this.newlyAddedInvoiceValue=null,this.memo="",this.invoiceValueHint="",this.displayedColumns=[],this.invoicePaymentReq="",this.invoicesData=[],this.information={},this.flgSticky=!1,this.selFilter="",this.private=!1,this.expiryStep=100,this.pageSize=s.IV,this.pageSizeOptions=s.TJ,this.firstOffset=-1,this.lastOffset=-1,this.totalInvoices=0,this.screenSize="",this.screenSizeEnum=s.cu,this.errorMessage="",this.apiCallStatus=null,this.apiCallStatusEnum=s.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===s.cu.XS?(this.flgSticky=!1,this.displayedColumns=["creation_date","value","actions"]):this.screenSize===s.cu.SM?(this.flgSticky=!1,this.displayedColumns=["creation_date","settle_date","value","amt_paid_sat","actions"]):this.screenSize===s.cu.MD?(this.flgSticky=!1,this.displayedColumns=["creation_date","settle_date","memo","value","actions"]):(this.flgSticky=!0,this.displayedColumns=["creation_date","settle_date","memo","value","amt_paid_sat","actions"])}ngOnInit(){this.store.select(T.$k).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.selNode=e}),this.store.select(T.Q5).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.store.select(T.Ef).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===s.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.totalInvoices=e.listInvoices.total_invoices||0,this.firstOffset=+(e.listInvoices.first_index_offset||-1),this.lastOffset=+(e.listInvoices.last_index_offset||-1),this.invoicesData=e.listInvoices.invoices||[],this.invoicesData.length>0&&this.sort&&this.paginator&&this.loadInvoicesTable(this.invoicesData),this.logger.info(e)}),this.actions.pipe((0,_.R)(this.unSubs[3]),(0,H.h)(e=>e.type===s.uR.SET_LOOKUP_LND||e.type===s.uR.UPDATE_API_CALL_STATUS_LND)).subscribe(e=>{e.type===s.uR.SET_LOOKUP_LND&&this.invoicesData.length>0&&this.sort&&this.paginator&&e.payload&&(this.updateInvoicesData(JSON.parse(JSON.stringify(e.payload))),this.loadInvoicesTable(this.invoicesData))})}ngAfterViewInit(){this.invoicesData.length>0&&this.loadInvoicesTable(this.invoicesData)}onAddInvoice(e){const o=this.expiry?this.expiry:3600;this.newlyAddedInvoiceMemo=this.memo,this.newlyAddedInvoiceValue=this.invoiceValue,this.store.dispatch((0,A.Rd)({payload:{uiMessage:s.m6.ADD_INVOICE,memo:this.memo,invoiceValue:this.invoiceValue,private:this.private,expiry:o,pageSize:this.pageSize,openModal:!0}})),this.resetData()}onInvoiceClick(e){this.store.dispatch((0,F.qR)({payload:{data:{invoice:e,newlyAdded:!1,component:ro.v}}}))}onRefreshInvoice(e){var o,a;e&&e.r_hash&&this.store.dispatch((0,A.n7)({payload:{openSnackBar:!0,paymentHash:null===(a=null===(o=Buffer.from(e.r_hash.trim(),"hex").toString("base64"))||void 0===o?void 0:o.replace(/\+/g,"-"))||void 0===a?void 0:a.replace(/[/]/g,"_")}}))}updateInvoicesData(e){var o;this.invoicesData=null===(o=this.invoicesData)||void 0===o?void 0:o.map(a=>a.r_hash===e.r_hash?e:a)}loadInvoicesTable(e){this.invoices=new c.by(e?[...e]:[]),this.invoices.sort=this.sort,this.invoices.sortingDataAccessor=(o,a)=>o[a]&&isNaN(o[a])?o[a].toLocaleLowerCase():o[a]?+o[a]:null,this.invoices.filterPredicate=(o,a)=>{var l,r;return((o.creation_date?null===(l=this.datePipe.transform(new Date(1e3*o.creation_date),"dd/MMM/YYYY HH:mm"))||void 0===l?void 0:l.toLowerCase():"")+(o.settle_date?null===(r=this.datePipe.transform(new Date(1e3*o.settle_date),"dd/MMM/YYYY HH:mm"))||void 0===r?void 0:r.toLowerCase():"")+JSON.stringify(o).toLowerCase()).includes(a)},this.applyFilter(),this.logger.info(this.invoices)}resetData(){this.memo="",this.invoiceValue=null,this.private=!1,this.expiry=null,this.invoiceValueHint=""}applyFilter(){this.invoices.filter=this.selFilter.trim().toLowerCase()}onPageChange(e){let o=!0,a=this.lastOffset;this.pageSize=e.pageSize,0===e.pageIndex?(o=!0,a=0):e.previousPageIndex&&e.pageIndexe.previousPageIndex&&e.length>(e.pageIndex+1)*e.pageSize?(o=!0,a=this.firstOffset):e.length<=(e.pageIndex+1)*e.pageSize&&(o=!1,a=0),this.store.dispatch((0,A.WM)({payload:{num_max_invoices:e.pageSize,index_offset:a,reversed:o}}))}onInvoiceValueChange(){this.selNode&&this.selNode.fiatConversion&&this.invoiceValue&&this.invoiceValue>99&&(this.invoiceValueHint="",this.commonService.convertCurrency(this.invoiceValue,s.NT.SATS,s.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[4])).subscribe({next:e=>{this.invoiceValueHint="= "+this.decimalPipe.transform(e.OTHER,s.Xz.OTHER)+" "+e.symbol},error:e=>{this.invoiceValueHint="Conversion Error: "+e}}))}onDownloadCSV(){this.invoices.data&&this.invoices.data.length>0&&this.commonService.downloadFile(this.invoices.data,"Invoices")}openCreateInvoiceModal(){this.store.dispatch((0,F.qR)({payload:{data:{pageSize:this.pageSize,component:so}}}))}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(N.mQ),t.Y36(S.yh),t.Y36(u.JJ),t.Y36(O.v),t.Y36(u.uU),t.Y36(j.eX))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-lightning-invoices"]],viewQuery:function(e,o){if(1&e&&(t.Gf(Z.YE,5),t.Gf(k.NW,5)),2&e){let a;t.iGM(a=t.CRH())&&(o.sort=a.first),t.iGM(a=t.CRH())&&(o.paginator=a.first)}},inputs:{calledFrom:"calledFrom"},features:[t._Bn([{provide:k.ye,useValue:(0,s.pt)("Invoices")}])],decls:4,vars:3,consts:[["fxLayout","column","fxFlex","100","fxLayoutAlign","start stretch",1,"padding-gap"],["fxLayout","row wrap","fxLayoutAlign","stretch start","fxFlex","100",4,"ngIf"],["fxLayout","row",4,"ngIf"],["fxLayout","column","fxLayoutAlign","start stretch",4,"ngIf"],["fxLayout","row wrap","fxLayoutAlign","stretch start","fxFlex","100"],["addInvoiceForm","ngForm"],["fxFlex","100","fxLayoutAlign","end start"],["matInput","","placeholder","Memo","tabindex","1","name","memo",3,"ngModel","ngModelChange"],["fxFlex","100","fxLayoutAlign","start end"],["matInput","","placeholder","Amount","type","number","tabindex","2","name","invValue",3,"ngModel","step","min","ngModelChange","keyup"],["matSuffix",""],["fxLayout","row",1,"mt-1"],["mat-stroked-button","","color","primary","tabindex","3","type","reset",1,"mr-1",3,"click"],["mat-flat-button","","color","primary","tabindex","4",3,"click"],["fxLayout","row"],["mat-flat-button","","color","primary","tabindex","5",3,"click"],["fxLayout","column","fxLayoutAlign","start stretch"],["fxLayout","column","fxLayoutAlign","start stretch","fxLayout.gt-sm","row wrap",1,"page-sub-title-container","mt-1"],["fxFlex","70","fxLayoutAlign","start start","fxLayoutAlign.gt-sm","start center"],[1,"page-title-img","mr-1",3,"icon"],[1,"page-title"],["fxFlex","30","fxLayoutAlign","start end"],["matInput","","tabindex","6","placeholder","Filter",3,"ngModel","keyup","ngModelChange"],["fxLayout","column","fxLayoutAlign","start end","fxFlex","100",1,"table-container",3,"perfectScrollbar"],["mode","indeterminate",4,"ngIf"],["mat-table","","fxFlex","100","matSort","",3,"dataSource","ngClass"],["table",""],["matColumnDef","creation_date"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","settle_date"],["mat-header-cell","","mat-sort-header","","class","pl-4",4,"matHeaderCellDef"],["mat-cell","","class","pl-4",4,"matCellDef"],["matColumnDef","memo"],["matColumnDef","value"],["mat-header-cell","","mat-sort-header","","arrowPosition","before",4,"matHeaderCellDef"],["matColumnDef","amt_paid_sat"],["matColumnDef","actions"],["mat-header-cell","","class","px-3",4,"matHeaderCellDef"],["mat-cell","","fxLayoutAlign","end center",3,"ngClass",4,"matCellDef"],["matColumnDef","no_invoice"],["mat-footer-cell","","colspan","4",4,"matFooterCellDef"],["mat-footer-row","",3,"ngClass",4,"matFooterRowDef"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"mb-1",3,"length","pageSize","pageSizeOptions","showFirstLastButtons","page"],["mode","indeterminate"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],["class","dot grey","matTooltip","Open","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["class","dot green","matTooltip","Settled","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["class","dot yellow","matTooltip","Accepted","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["class","dot red","matTooltip","Canceled","matTooltipPosition","right",3,"ngClass",4,"ngIf"],["matTooltip","Open","matTooltipPosition","right",1,"dot","grey",3,"ngClass"],["matTooltip","Settled","matTooltipPosition","right",1,"dot","green",3,"ngClass"],["matTooltip","Accepted","matTooltipPosition","right",1,"dot","yellow",3,"ngClass"],["matTooltip","Canceled","matTooltipPosition","right",1,"dot","red",3,"ngClass"],["mat-header-cell","","mat-sort-header","",1,"pl-4"],["mat-cell","",1,"pl-4"],[1,"ellipsis-parent",3,"ngStyle"],[1,"ellipsis-child"],["mat-header-cell","","mat-sort-header","","arrowPosition","before"],["fxLayoutAlign","end center"],["mat-header-cell","",1,"px-3"],[1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","1",1,"mr-0"],[3,"click"],["mat-cell","","fxLayoutAlign","end center",3,"ngClass"],["fxLayoutAlign","center center",1,"bordered-box","table-actions-select"],["placeholder","Actions","tabindex","4",1,"mr-0"],["mat-footer-cell","","colspan","4"],[4,"ngIf"],["mat-footer-row","",3,"ngClass"],["mat-header-row",""],["mat-row",""]],template:function(e,o){1&e&&(t.TgZ(0,"div",0),t.YNc(1,co,15,5,"form",1),t.YNc(2,po,3,0,"div",2),t.YNc(3,Jo,36,16,"div",3),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf","home"===o.calledFrom),t.xp6(1),t.Q6J("ngIf","transactions"===o.calledFrom),t.xp6(1),t.Q6J("ngIf","transactions"===o.calledFrom))},directives:[m.xw,m.yH,m.Wh,u.O5,p._Y,p.JL,p.F,C.KE,P.Nt,p.Fj,p.JJ,p.On,p.wV,p.qQ,et.q,C.R9,C.bx,q.lW,D.BN,z.$V,J.pW,c.BZ,Z.YE,u.mk,L.oO,c.w1,c.fO,c.ge,Z.nU,c.Dz,c.ev,K.gM,u.PC,L.Zl,M.gD,M.$L,G.ey,c.mD,c.yh,c.Ke,c.Q2,c.as,c.XQ,c.nj,c.Gk,k.NW],pipes:[u.uU,u.JJ],styles:[".mat-column-memo[_ngcontent-%COMP%]{flex:0 0 15%;width:15%}.mat-column-memo[_ngcontent-%COMP%] .ellipsis-parent[_ngcontent-%COMP%]{display:flex}.mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}"]}),n})();var X=g(5698),nt=g(8104),at=g(1079);const Eo=["paymentReq"];function Ho(n,i){if(1&n&&(t.TgZ(0,"mat-hint"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.paymentDecodedHint)}}function Yo(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Payment request is required."),t.qZA())}function Bo(n,i){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.paymentDecodedHint)}}function zo(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Payment amount is required."),t.qZA())}function Go(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"mat-form-field",1)(1,"input",29,30),t.NdJ("ngModelChange",function(a){return t.CHM(e),t.oxw().paymentAmount=a})("change",function(a){return t.CHM(e),t.oxw().onAmountChange(a)}),t.qZA(),t.TgZ(3,"mat-hint"),t._uU(4,"It is a zero amount invoice, enter amount to be paid."),t.qZA(),t.YNc(5,zo,2,0,"mat-error",11),t.qZA()}if(2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngModel",e.paymentAmount),t.xp6(4),t.Q6J("ngIf",!e.paymentAmount)}}function Vo(n,i){if(1&n&&(t.TgZ(0,"mat-option",31),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.Q6J("value",e),t.xp6(1),t.hij(" ",null==e?null:e.name," ")}}function Wo(n,i){if(1&n&&(t.TgZ(0,"mat-error"),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("",null==e.selFeeLimitType?null:e.selFeeLimitType.placeholder," is required.")}}function Xo(n,i){if(1&n&&(t.TgZ(0,"mat-option",31),t._uU(1),t.qZA()),2&n){const e=i.$implicit;t.Q6J("value",e),t.xp6(1),t.Oqu((null==e?null:e.remote_alias)||(null==e?null:e.chan_id))}}function jo(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Channel not found in the list."),t.qZA())}function Ko(n,i){if(1&n&&(t.TgZ(0,"span"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.paymentError)}}function $o(n,i){if(1&n&&(t.TgZ(0,"div",32),t._UZ(1,"fa-icon",33),t.YNc(2,Ko,2,1,"span",11),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("icon",e.faExclamationTriangle),t.xp6(1),t.Q6J("ngIf",""!==e.paymentError)}}let ti=(()=>{class n{constructor(e,o,a,l,r,h,f){this.dialogRef=e,this.store=o,this.logger=a,this.commonService=l,this.decimalPipe=r,this.actions=h,this.dataService=f,this.faExclamationTriangle=b.eHv,this.selNode={},this.paymentDecoded={},this.zeroAmtInvoice=!1,this.paymentAmount=null,this.paymentRequest="",this.paymentDecodedHint="",this.showAdvanced=!1,this.activeChannels=[],this.filteredMinAmtActvChannels=[],this.selectedChannelCtrl=new p.NI,this.feeLimit=null,this.selFeeLimitType=s.Vc[0],this.feeLimitTypes=s.Vc,this.advancedTitle="Advanced Options",this.paymentError="",this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x]}ngOnInit(){this.store.select(T.$k).pipe((0,_.R)(this.unSubs[0])).subscribe(a=>{this.selNode=a}),this.store.select(T.ZW).pipe((0,_.R)(this.unSubs[1])).subscribe(a=>{var l;this.activeChannels=a.channels&&a.channels.length?null===(l=a.channels)||void 0===l?void 0:l.filter(r=>r.active):[],this.filteredMinAmtActvChannels=this.activeChannels,this.filteredMinAmtActvChannels.length&&this.filteredMinAmtActvChannels.length>0?this.selectedChannelCtrl.enable():this.selectedChannelCtrl.disable(),this.logger.info(a)}),this.actions.pipe((0,_.R)(this.unSubs[2]),(0,H.h)(a=>a.type===s.uR.UPDATE_API_CALL_STATUS_LND||a.type===s.uR.SEND_PAYMENT_STATUS_LND)).subscribe(a=>{a.type===s.uR.SEND_PAYMENT_STATUS_LND&&this.dialogRef.close(),a.type===s.uR.UPDATE_API_CALL_STATUS_LND&&a.payload.status===s.Bn.ERROR&&"SendPayment"===a.payload.action&&(delete this.paymentDecoded.num_satoshis,this.paymentError=a.payload.message)});let e="",o="";this.activeChannels=this.activeChannels.sort((a,l)=>(e=a.remote_alias?a.remote_alias.toLowerCase():a.chan_id?a.chan_id.toLowerCase():"",o=l.remote_alias?l.remote_alias.toLowerCase():l.chan_id?l.chan_id.toLowerCase():"",eo?1:0)),this.selectedChannelCtrl.valueChanges.pipe((0,_.R)(this.unSubs[3])).subscribe(a=>{"string"==typeof a&&(this.filteredMinAmtActvChannels=this.filterChannels())})}filterChannels(){var e;return this.activeChannels&&this.activeChannels.length?null===(e=this.activeChannels)||void 0===e?void 0:e.filter(o=>0===(o.remote_alias?o.remote_alias.toLowerCase():o.chan_id?o.chan_id.toLowerCase():"").indexOf(this.selectedChannelCtrl.value?this.selectedChannelCtrl.value.toLowerCase():"")&&(o.local_balance||0)>=+(this.paymentDecoded.num_satoshis?this.paymentDecoded.num_satoshis:0)):[]}displayFn(e){return e&&e.remote_alias?e.remote_alias:e&&e.chan_id?e.chan_id:""}onSelectedChannelChanged(){var e;if(this.selectedChannelCtrl.value&&this.selectedChannelCtrl.value.length>0&&"string"==typeof this.selectedChannelCtrl.value){const o=this.activeChannels&&this.activeChannels.length?null===(e=this.activeChannels)||void 0===e?void 0:e.filter(a=>{const l=a.remote_alias?a.remote_alias.toLowerCase():a.chan_id?a.chan_id.toLowerCase():"";return l.length===this.selectedChannelCtrl.value.length&&0===l.indexOf(this.selectedChannelCtrl.value?this.selectedChannelCtrl.value.toLowerCase():"")}):[];o&&o.length>0?(this.selectedChannelCtrl.setValue(o[0]),this.selectedChannelCtrl.setErrors(null)):this.selectedChannelCtrl.setErrors({notfound:!0})}}onSendPayment(){if(this.selectedChannelCtrl.value&&"string"==typeof this.selectedChannelCtrl.value&&this.onSelectedChannelChanged(),!this.paymentRequest||this.zeroAmtInvoice&&(!this.paymentAmount||this.paymentAmount<=0)||"string"==typeof this.selectedChannelCtrl.value)return!0;this.paymentDecoded.timestamp?this.sendPayment():this.onPaymentRequestEntry(this.paymentRequest)}sendPayment(){var e;if(this.selFeeLimitType!==this.feeLimitTypes[0]&&!this.feeLimit)return!0;this.paymentDecoded.num_msat&&!this.paymentDecoded.num_satoshis&&(this.paymentDecoded.num_satoshis=(+this.paymentDecoded.num_msat/1e3).toString()),this.paymentDecoded.num_satoshis&&""!==this.paymentDecoded.num_satoshis&&"0"!==this.paymentDecoded.num_satoshis?(this.zeroAmtInvoice=!1,this.store.dispatch((0,A.oV)({payload:{uiMessage:s.m6.SEND_PAYMENT,paymentReq:this.paymentRequest,outgoingChannel:this.selectedChannelCtrl.value,feeLimitType:this.selFeeLimitType.id,feeLimit:this.feeLimit,fromDialog:!0}}))):(this.zeroAmtInvoice=!0,this.paymentDecoded.num_satoshis=(null===(e=this.paymentAmount)||void 0===e?void 0:e.toString())||"",this.store.dispatch((0,A.oV)({payload:{uiMessage:s.m6.SEND_PAYMENT,paymentReq:this.paymentRequest,paymentAmount:this.paymentAmount||0,outgoingChannel:this.selectedChannelCtrl.value,feeLimitType:this.selFeeLimitType.id,feeLimit:this.feeLimit,fromDialog:!0}})))}onAmountChange(e){delete this.paymentDecoded.num_satoshis}onPaymentRequestEntry(e){this.paymentRequest=e,this.paymentAmount=null,this.paymentError="",this.paymentDecodedHint="",this.zeroAmtInvoice=!1,this.paymentRequest&&this.paymentRequest.length>100&&(this.paymentReq.control.setErrors(null),this.zeroAmtInvoice=!1,this.dataService.decodePayment(this.paymentRequest,!0).pipe((0,X.q)(1)).subscribe({next:o=>{this.paymentDecoded=o,this.selectedChannelCtrl.setValue(null),this.onAdvancedPanelToggle(!0,!0),this.paymentDecoded.num_msat&&!this.paymentDecoded.num_satoshis&&(this.paymentDecoded.num_satoshis=(+this.paymentDecoded.num_msat/1e3).toString()),this.paymentDecoded.num_satoshis&&""!==this.paymentDecoded.num_satoshis&&"0"!==this.paymentDecoded.num_satoshis?(this.filteredMinAmtActvChannels=this.filterChannels(),this.filteredMinAmtActvChannels.length&&this.filteredMinAmtActvChannels.length>0?this.selectedChannelCtrl.enable():this.selectedChannelCtrl.disable(),this.zeroAmtInvoice=!1,this.selNode.fiatConversion?this.commonService.convertCurrency(+this.paymentDecoded.num_satoshis,s.NT.SATS,s.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"BTC",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[4])).subscribe({next:a=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.num_satoshis)+" Sats ("+a.symbol+" "+this.decimalPipe.transform(a.OTHER?a.OTHER:0,s.Xz.OTHER)+") | Memo: "+(this.paymentDecoded.description?this.paymentDecoded.description:"None")},error:a=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.num_satoshis)+" Sats | Memo: "+(this.paymentDecoded.description?this.paymentDecoded.description:"None")+". Unable to convert currency."}}):this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.num_satoshis)+" Sats | Memo: "+(this.paymentDecoded.description?this.paymentDecoded.description:"None")):(this.zeroAmtInvoice=!0,this.filteredMinAmtActvChannels=this.activeChannels,this.filteredMinAmtActvChannels.length&&this.filteredMinAmtActvChannels.length>0?this.selectedChannelCtrl.enable():this.selectedChannelCtrl.disable(),this.paymentDecodedHint="Memo: "+(this.paymentDecoded.description?this.paymentDecoded.description:"None"))},error:o=>{this.logger.error(o),this.paymentDecodedHint="ERROR: "+o.message,this.paymentReq.control.setErrors({decodeError:!0})}}))}onAdvancedPanelToggle(e,o){if(e&&!o){const a=this.selectedChannelCtrl.value&&this.selectedChannelCtrl.value.remote_alias?this.selectedChannelCtrl.value.remote_alias:this.selectedChannelCtrl.value&&this.selectedChannelCtrl.value.chan_id?this.selectedChannelCtrl.value.chan_id:"";this.advancedTitle="Advanced Options | "+this.selFeeLimitType.name+("none"===this.selFeeLimitType.id?"":": "+this.feeLimit)+(""!==a?" | First Outgoing Channel: "+a:"")}else this.advancedTitle="Advanced Options"}resetData(){this.paymentDecoded={},this.paymentRequest="",this.selectedChannelCtrl.setValue(null),this.filteredMinAmtActvChannels=this.activeChannels,this.filteredMinAmtActvChannels.length&&this.filteredMinAmtActvChannels.length>0?this.selectedChannelCtrl.enable():this.selectedChannelCtrl.disable(),this.feeLimit=null,this.selFeeLimitType=s.Vc[0],this.advancedTitle="Advanced Options",this.zeroAmtInvoice=!1,this.paymentReq.control.setErrors(null),this.paymentError="",this.paymentDecodedHint=""}ngOnDestroy(){this.unSubs.forEach(e=>{e.next(null),e.complete()})}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(Q.so),t.Y36(S.yh),t.Y36(N.mQ),t.Y36(O.v),t.Y36(u.JJ),t.Y36(j.eX),t.Y36(nt.D))},n.\u0275cmp=t.Xpm({type:n,selectors:[["rtl-lightning-send-payments"]],viewQuery:function(e,o){if(1&e&&t.Gf(Eo,5),2&e){let a;t.iGM(a=t.CRH())&&(o.paymentReq=a.first)}},decls:43,vars:21,consts:[["fxLayout","row"],["fxFlex","100"],["fxLayout","row","fxLayoutAlign","space-between center",1,"modal-info-header"],["fxFlex","95","fxLayoutAlign","start start"],[1,"page-title"],["tabindex","8","fxFlex","5","fxLayoutAlign","center","default","","mat-button","",1,"btn-close-x","p-0",3,"mat-dialog-close"],[1,"padding-gap-x-large"],["fxLayoutAlign","space-between stretch","fxLayout","column"],["sendPaymentForm","ngForm"],["autoFocus","","matInput","","placeholder","Payment Request","name","paymentRequest","rows","4","tabindex","1","required","",3,"ngModel","ngModelChange","matTextareaAutosize"],["paymentReq","ngModel"],[4,"ngIf"],["fxFlex","100",4,"ngIf"],["fxFlex","100","expanded","false",1,"flat-expansion-panel","mt-2",3,"closed","opened"],["fxFlex","100","fxLayout","column","fxLayoutAlign","space-between stretch","fxLayout.gt-sm","row wrap"],["fxFlex","30","fxLayoutAlign","start end"],["tabindex","5","Placeholder","Fee Limits",3,"value","valueChange"],[3,"value",4,"ngFor","ngForOf"],["fxFlex","26"],["matInput","","type","number","name","feeLmt","required","","tabindex","6",3,"ngModel","placeholder","step","min","disabled","ngModelChange"],["fLmt","ngModel"],["fxFlex","40","fxLayoutAlign","start end"],["type","text","placeholder","First Outgoing Channel","aria-label","First Outgoing Channel","matInput","","tabindex","7",3,"formControl","matAutocomplete"],[3,"displayWith","optionSelected"],["auto","matAutocomplete"],["fxFlex","100","class","alert alert-danger mt-1",4,"ngIf"],["fxLayout","row","fxLayoutAlign","end center",1,"mt-2"],["mat-button","","color","primary","tabindex","2","type","reset",1,"mr-1",3,"click"],["mat-button","","id","sendBtn","color","primary","tabindex","3",3,"click"],["matInput","","placeholder","Amount (Sats)","name","amount","tabindex","2","required","",3,"ngModel","ngModelChange","change"],["paymentAmt","ngModel"],[3,"value"],["fxFlex","100",1,"alert","alert-danger","mt-1"],[1,"mr-1","alert-icon",3,"icon"]],template:function(e,o){if(1&e&&(t.TgZ(0,"div",0)(1,"div",1)(2,"mat-card-header",2)(3,"div",3)(4,"span",4),t._uU(5,"Send Payment"),t.qZA()(),t.TgZ(6,"button",5),t._uU(7,"X"),t.qZA()(),t.TgZ(8,"mat-card-content",6)(9,"form",7,8)(11,"mat-form-field",1)(12,"textarea",9,10),t.NdJ("ngModelChange",function(l){return o.onPaymentRequestEntry(l)})("matTextareaAutosize",function(){return!0}),t.qZA(),t.YNc(14,Ho,2,1,"mat-hint",11),t.YNc(15,Yo,2,0,"mat-error",11),t.YNc(16,Bo,2,1,"mat-error",11),t.qZA(),t.YNc(17,Go,6,2,"mat-form-field",12),t.TgZ(18,"mat-expansion-panel",13),t.NdJ("closed",function(){return o.onAdvancedPanelToggle(!0,!1)})("opened",function(){return o.onAdvancedPanelToggle(!1,!1)}),t.TgZ(19,"mat-expansion-panel-header")(20,"mat-panel-title")(21,"span"),t._uU(22),t.qZA()()(),t.TgZ(23,"div",14)(24,"mat-form-field",15)(25,"mat-select",16),t.NdJ("valueChange",function(l){return o.selFeeLimitType=l}),t.YNc(26,Vo,2,2,"mat-option",17),t.qZA()(),t.TgZ(27,"mat-form-field",18)(28,"input",19,20),t.NdJ("ngModelChange",function(l){return o.feeLimit=l}),t.qZA(),t.YNc(30,Wo,2,1,"mat-error",11),t.qZA(),t.TgZ(31,"mat-form-field",21),t._UZ(32,"input",22),t.TgZ(33,"mat-autocomplete",23,24),t.NdJ("optionSelected",function(){return o.onSelectedChannelChanged()}),t.YNc(35,Xo,2,2,"mat-option",17),t.qZA(),t.YNc(36,jo,2,0,"mat-error",11),t.qZA()()(),t.YNc(37,$o,3,2,"div",25),t.TgZ(38,"div",26)(39,"button",27),t.NdJ("click",function(){return o.resetData()}),t._uU(40,"Clear Fields"),t.qZA(),t.TgZ(41,"button",28),t.NdJ("click",function(){return o.onSendPayment()}),t._uU(42,"Send Payment"),t.qZA()()()()()()),2&e){const a=t.MAs(13),l=t.MAs(34);t.xp6(6),t.Q6J("mat-dialog-close",!1),t.xp6(6),t.Q6J("ngModel",o.paymentRequest),t.xp6(2),t.Q6J("ngIf",o.paymentRequest&&""!==o.paymentDecodedHint),t.xp6(1),t.Q6J("ngIf",!o.paymentRequest),t.xp6(1),t.Q6J("ngIf",null==a.errors?null:a.errors.decodeError),t.xp6(1),t.Q6J("ngIf",o.zeroAmtInvoice),t.xp6(5),t.Oqu(o.advancedTitle),t.xp6(3),t.Q6J("value",o.selFeeLimitType),t.xp6(1),t.Q6J("ngForOf",o.feeLimitTypes),t.xp6(2),t.Q6J("ngModel",o.feeLimit)("placeholder",null==o.selFeeLimitType?null:o.selFeeLimitType.placeholder)("step",1)("min",0)("disabled",o.selFeeLimitType===o.feeLimitTypes[0]),t.xp6(2),t.Q6J("ngIf",o.selFeeLimitType!==o.feeLimitTypes[0]&&!o.feeLimit),t.xp6(2),t.Q6J("formControl",o.selectedChannelCtrl)("matAutocomplete",l),t.xp6(1),t.Q6J("displayWith",o.displayFn),t.xp6(2),t.Q6J("ngForOf",o.filteredMinAmtActvChannels),t.xp6(1),t.Q6J("ngIf",null==o.selectedChannelCtrl.errors?null:o.selectedChannelCtrl.errors.notfound),t.xp6(1),t.Q6J("ngIf",""!==o.paymentError)}},directives:[m.xw,m.yH,y.dk,m.Wh,q.lW,Q.ZT,y.dn,p._Y,p.JL,p.F,C.KE,P.Nt,p.Fj,W.h,p.Q7,p.JJ,p.On,u.O5,C.bx,C.TO,E.ib,E.yz,E.yK,M.gD,u.sg,G.ey,p.wV,p.qQ,et.q,at.ZL,p.oH,at.XC,D.BN],styles:[".mat-column-actions[_ngcontent-%COMP%]{min-height:4.8rem}.mat-column-payment_hash[_ngcontent-%COMP%]{flex:1 1 20%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}"]}),n})();var dt=g(3093),ot=g(711);const ei=["sendPaymentForm"];function ni(n,i){if(1&n&&(t.TgZ(0,"mat-hint"),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.paymentDecodedHint)}}function oi(n,i){1&n&&(t.TgZ(0,"mat-error"),t._uU(1,"Payment request is required."),t.qZA())}function ii(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"form",4,5)(2,"mat-form-field",6)(3,"textarea",7,8),t.NdJ("ngModelChange",function(a){return t.CHM(e),t.oxw().onPaymentRequestEntry(a)})("matTextareaAutosize",function(){return!0}),t.qZA(),t.YNc(5,ni,2,1,"mat-hint",9),t.YNc(6,oi,2,0,"mat-error",9),t.qZA(),t.TgZ(7,"div",10)(8,"button",11),t.NdJ("click",function(){return t.CHM(e),t.oxw().resetData()}),t._uU(9,"Clear Field"),t.qZA(),t.TgZ(10,"button",12),t.NdJ("click",function(){return t.CHM(e),t.oxw().onSendPayment()}),t._uU(11,"Send Payment"),t.qZA()()()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("ngModel",e.paymentRequest),t.xp6(2),t.Q6J("ngIf",e.paymentRequest&&""!==e.paymentDecodedHint),t.xp6(1),t.Q6J("ngIf",!e.paymentRequest)}}function ai(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",13)(1,"button",14),t.NdJ("click",function(){return t.CHM(e),t.oxw().openSendPaymentModal()}),t._uU(2,"Send Payment"),t.qZA()()}}function li(n,i){1&n&&t._UZ(0,"mat-progress-bar",52)}function si(n,i){1&n&&(t.TgZ(0,"th",53),t._uU(1,"Creation Date"),t.qZA())}const lt=function(n){return{"mr-0":n}};function ri(n,i){if(1&n&&t._UZ(0,"span",57),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,lt,e.screenSize===e.screenSizeEnum.XS))}}function ci(n,i){if(1&n&&t._UZ(0,"span",58),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,lt,e.screenSize===e.screenSizeEnum.XS))}}function pi(n,i){if(1&n&&(t.TgZ(0,"td",54),t.YNc(1,ri,1,3,"span",55),t.YNc(2,ci,1,3,"span",56),t._uU(3),t.ALo(4,"date"),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf","SUCCEEDED"===(null==e?null:e.status)),t.xp6(1),t.Q6J("ngIf","SUCCEEDED"!==(null==e?null:e.status)),t.xp6(1),t.hij(" ",t.xi3(4,3,1e3*(null==e?null:e.creation_date),"dd/MMM/y HH:mm")," ")}}function ui(n,i){1&n&&(t.TgZ(0,"th",53),t._uU(1,"Payment Hash"),t.qZA())}const Bt=function(n){return{"max-width":n}};function mi(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",59)(2,"span",60),t._uU(3),t.qZA()()()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngStyle",t.VKq(2,Bt,o.screenSize===o.screenSizeEnum.XS?"10rem":"30rem")),t.xp6(2),t.Oqu(null==e?null:e.payment_hash)}}function di(n,i){1&n&&(t.TgZ(0,"th",61),t._uU(1,"Fee (Sats)"),t.qZA())}function hi(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",62),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,null==e?null:e.fee))}}function _i(n,i){1&n&&(t.TgZ(0,"th",61),t._uU(1,"Value (Sats)"),t.qZA())}function fi(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",62),t._uU(2),t.ALo(3,"number"),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,null==e?null:e.value))}}function gi(n,i){1&n&&(t.TgZ(0,"th",61),t._uU(1,"#Hops"),t.qZA())}function Ci(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",62),t._uU(2),t.qZA()()),2&n){const e=i.$implicit;t.xp6(2),t.Oqu((null==e||null==e.htlcs[0]||null==e.htlcs[0].route||null==e.htlcs[0].route.hops?null:e.htlcs[0].route.hops.length)||0)}}function xi(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"th",63)(1,"div",64)(2,"mat-select",65),t._UZ(3,"mat-select-trigger"),t.TgZ(4,"mat-option",66),t.NdJ("click",function(){return t.CHM(e),t.oxw(2).onDownloadCSV()}),t._uU(5,"Download CSV"),t.qZA()()()()}}function yi(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"td",67)(1,"button",68),t.NdJ("click",function(){const l=t.CHM(e).$implicit;return t.oxw(2).onPaymentClick(l)}),t._uU(2,"View Info"),t.qZA()()}}function Ti(n,i){1&n&&(t.TgZ(0,"p"),t._uU(1,"No payment available."),t.qZA())}function vi(n,i){1&n&&(t.TgZ(0,"p"),t._uU(1,"Getting payments..."),t.qZA())}function bi(n,i){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.errorMessage)}}function wi(n,i){if(1&n&&(t.TgZ(0,"td",69),t.YNc(1,Ti,2,0,"p",9),t.YNc(2,vi,2,0,"p",9),t.YNc(3,bi,2,1,"p",9),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",(!(null!=e.payments&&e.payments.data)||(null==e.payments||null==e.payments.data?null:e.payments.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.COMPLETED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.payments&&e.payments.data)||(null==e.payments||null==e.payments.data?null:e.payments.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("ngIf",(!(null!=e.payments&&e.payments.data)||(null==e.payments||null==e.payments.data?null:e.payments.data.length)<1)&&e.apiCallStatus.status===e.apiCallStatusEnum.ERROR)}}function Zi(n,i){if(1&n&&t._UZ(0,"span",57),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,lt,e.screenSize===e.screenSizeEnum.XS))}}function Ai(n,i){if(1&n&&t._UZ(0,"span",58),2&n){const e=t.oxw(3);t.Q6J("ngClass",t.VKq(1,lt,e.screenSize===e.screenSizeEnum.XS))}}function Li(n,i){if(1&n&&t._UZ(0,"span",57),2&n){const e=t.oxw(5);t.Q6J("ngClass",t.VKq(1,lt,e.screenSize===e.screenSizeEnum.XS))}}function Si(n,i){if(1&n&&t._UZ(0,"span",58),2&n){const e=t.oxw(5);t.Q6J("ngClass",t.VKq(1,lt,e.screenSize===e.screenSizeEnum.XS))}}function Fi(n,i){if(1&n&&(t.TgZ(0,"span",72),t.YNc(1,Li,1,3,"span",55),t.YNc(2,Si,1,3,"span",56),t._uU(3),t.ALo(4,"date"),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.Q6J("ngIf","SUCCEEDED"===e.status),t.xp6(1),t.Q6J("ngIf","SUCCEEDED"!==e.status),t.xp6(1),t.hij(" ",t.xi3(4,3,1e3*e.attempt_time,"dd/MMM/y HH:mm")," ")}}function ki(n,i){if(1&n&&(t.ynx(0),t.YNc(1,Fi,5,6,"span",71),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.htlcs)}}function qi(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",70),t.YNc(2,Zi,1,3,"span",55),t.YNc(3,Ai,1,3,"span",56),t._uU(4),t.qZA(),t.YNc(5,ki,2,1,"ng-container",9),t.qZA()),2&n){const e=i.$implicit;t.xp6(2),t.Q6J("ngIf","SUCCEEDED"===(null==e?null:e.status)),t.xp6(1),t.Q6J("ngIf","SUCCEEDED"!==(null==e?null:e.status)),t.xp6(1),t.hij(" Total Attempts: ",null==e||null==e.htlcs?null:e.htlcs.length," "),t.xp6(1),t.Q6J("ngIf",null==e?null:e.is_expanded)}}function Ni(n,i){if(1&n&&(t.TgZ(0,"span",70),t._uU(1),t.qZA()),2&n){const e=i.index;t.xp6(1),t.hij(" HTLC ",e+1," ")}}function Oi(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Ni,2,1,"span",73),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.htlcs)}}function Ui(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",59)(2,"span",60),t._uU(3),t.qZA()(),t.YNc(4,Oi,2,1,"span",9),t.qZA()),2&n){const e=i.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("ngStyle",t.VKq(3,Bt,o.screenSize===o.screenSizeEnum.XS?"10rem":"30rem")),t.xp6(2),t.Oqu(null==e?null:e.payment_hash),t.xp6(1),t.Q6J("ngIf",null==e?null:e.is_expanded)}}function Mi(n,i){if(1&n&&(t.TgZ(0,"span",74),t._uU(1),t.ALo(2,"number"),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",t.xi3(2,1,null==e.route?null:e.route.total_fees,"1.0-0")," ")}}function Pi(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Mi,3,4,"span",75),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.htlcs)}}function Ii(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",74),t._uU(2),t.ALo(3,"number"),t.qZA(),t.YNc(4,Pi,2,1,"span",9),t.qZA()),2&n){const e=i.$implicit;t.xp6(2),t.Oqu(t.xi3(3,2,null==e?null:e.fee,"1.0-0")),t.xp6(2),t.Q6J("ngIf",null==e?null:e.is_expanded)}}function Ri(n,i){if(1&n&&(t.TgZ(0,"span",74),t._uU(1),t.ALo(2,"number"),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",t.xi3(2,1,null==e.route?null:e.route.total_amt,"1.0-0")," ")}}function Di(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Ri,3,4,"span",75),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.htlcs)}}function Qi(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",74),t._uU(2),t.ALo(3,"number"),t.qZA(),t.YNc(4,Di,2,1,"span",9),t.qZA()),2&n){const e=i.$implicit;t.xp6(2),t.Oqu(t.xi3(3,2,null==e?null:e.value,"1.0-0")),t.xp6(2),t.Q6J("ngIf",null==e?null:e.is_expanded)}}function Ji(n,i){if(1&n&&(t.TgZ(0,"span",74),t._uU(1),t.ALo(2,"number"),t.qZA()),2&n){const e=i.$implicit;t.xp6(1),t.hij(" ",t.xi3(2,1,(null==e.route||null==e.route.hops?null:e.route.hops.length)||0,"1.0-0")," ")}}function Ei(n,i){if(1&n&&(t.TgZ(0,"span"),t.YNc(1,Ji,3,4,"span",75),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.htlcs)}}function Hi(n,i){if(1&n&&(t.TgZ(0,"td",54)(1,"span",74),t._uU(2,"-"),t.qZA(),t.YNc(3,Ei,2,1,"span",9),t.qZA()),2&n){const e=i.$implicit;t.xp6(3),t.Q6J("ngIf",null==e?null:e.is_expanded)}}function Yi(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",62)(1,"button",79),t.NdJ("click",function(){const l=t.CHM(e).$implicit,r=t.oxw(2).$implicit;return t.oxw(2).onHTLCClick(l,r)}),t._uU(2),t.qZA()()}if(2&n){const e=i.index;t.xp6(2),t.hij("View ",e+1,"")}}function Bi(n,i){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Yi,3,1,"div",78),t.qZA()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngForOf",null==e?null:e.htlcs)}}function zi(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"td",76)(1,"span",62)(2,"button",77),t.NdJ("click",function(){const l=t.CHM(e).$implicit;return l.is_expanded=!(null!=l&&l.is_expanded)}),t._uU(3),t.qZA()(),t.YNc(4,Bi,2,1,"div",9),t.qZA()}if(2&n){const e=i.$implicit;t.xp6(3),t.Oqu(null!=e&&e.is_expanded?"Hide":"Show"),t.xp6(1),t.Q6J("ngIf",null==e?null:e.is_expanded)}}function Gi(n,i){1&n&&t._UZ(0,"tr",80)}const Vi=function(n){return{"display-none":n}};function Wi(n,i){if(1&n&&t._UZ(0,"tr",81),2&n){const e=t.oxw(2);t.Q6J("ngClass",t.VKq(1,Vi,(null==e.payments?null:e.payments.data)&&(null==e.payments||null==e.payments.data?null:e.payments.data.length)>0))}}function Xi(n,i){1&n&&t._UZ(0,"tr",82)}function ji(n,i){1&n&&t._UZ(0,"tr",80)}const Ki=function(n){return{"overflow-auto error-border":n,"overflow-auto":!0}},$i=function(){return["no_payment"]};function ta(n,i){if(1&n){const e=t.EpF();t.TgZ(0,"div",15)(1,"div",16)(2,"div",17),t._UZ(3,"fa-icon",18),t.TgZ(4,"span",19),t._uU(5,"Payments History"),t.qZA()(),t.TgZ(6,"mat-form-field",20)(7,"input",21),t.NdJ("keyup",function(){return t.CHM(e),t.oxw().applyFilter()})("ngModelChange",function(a){return t.CHM(e),t.oxw().selFilter=a}),t.qZA()()(),t.TgZ(8,"div",22)(9,"div",23),t.YNc(10,li,1,0,"mat-progress-bar",24),t.TgZ(11,"table",25,26),t.ynx(13,27),t.YNc(14,si,2,0,"th",28),t.YNc(15,pi,5,6,"td",29),t.BQk(),t.ynx(16,30),t.YNc(17,ui,2,0,"th",28),t.YNc(18,mi,4,4,"td",29),t.BQk(),t.ynx(19,31),t.YNc(20,di,2,0,"th",32),t.YNc(21,hi,4,3,"td",29),t.BQk(),t.ynx(22,33),t.YNc(23,_i,2,0,"th",32),t.YNc(24,fi,4,3,"td",29),t.BQk(),t.ynx(25,34),t.YNc(26,gi,2,0,"th",32),t.YNc(27,Ci,3,1,"td",29),t.BQk(),t.ynx(28,35),t.YNc(29,xi,6,0,"th",36),t.YNc(30,yi,3,0,"td",37),t.BQk(),t.ynx(31,38),t.YNc(32,wi,4,3,"td",39),t.BQk(),t.ynx(33,40),t.YNc(34,qi,6,4,"td",29),t.BQk(),t.ynx(35,41),t.YNc(36,Ui,5,5,"td",29),t.BQk(),t.ynx(37,42),t.YNc(38,Ii,5,5,"td",29),t.BQk(),t.ynx(39,43),t.YNc(40,Qi,5,5,"td",29),t.BQk(),t.ynx(41,44),t.YNc(42,Hi,4,1,"td",29),t.BQk(),t.ynx(43,45),t.YNc(44,zi,5,2,"td",46),t.BQk(),t.YNc(45,Gi,1,0,"tr",47),t.YNc(46,Wi,1,3,"tr",48),t.YNc(47,Xi,1,0,"tr",49),t.YNc(48,ji,1,0,"tr",50),t.qZA(),t.TgZ(49,"mat-paginator",51),t.NdJ("page",function(a){return t.CHM(e),t.oxw().onPageChange(a)}),t.qZA()()()()}if(2&n){const e=t.oxw();t.xp6(3),t.Q6J("icon",e.faHistory),t.xp6(4),t.Q6J("ngModel",e.selFilter),t.xp6(3),t.Q6J("ngIf",e.apiCallStatus.status===e.apiCallStatusEnum.INITIATED),t.xp6(1),t.Q6J("dataSource",e.payments)("ngClass",t.VKq(15,Ki,""!==e.errorMessage)),t.xp6(34),t.Q6J("matRowDefColumns",e.htlcColumns)("matRowDefWhen",e.is_group),t.xp6(1),t.Q6J("matFooterRowDef",t.DdM(17,$i)),t.xp6(1),t.Q6J("matHeaderRowDef",e.displayedColumns)("matHeaderRowDefSticky",e.flgSticky),t.xp6(1),t.Q6J("matRowDefColumns",e.displayedColumns),t.xp6(1),t.Q6J("length",e.totalPayments)("pageSize",e.pageSize)("pageSizeOptions",e.pageSizeOptions)("showFirstLastButtons",e.screenSize!==e.screenSizeEnum.XS)}}let zt=(()=>{class n{constructor(e,o,a,l,r,h,f,x){this.logger=e,this.commonService=o,this.dataService=a,this.store=l,this.rtlEffects=r,this.lndEffects=h,this.decimalPipe=f,this.datePipe=x,this.calledFrom="transactions",this.faHistory=b.qO$,this.newlyAddedPayment="",this.selNode={},this.information={},this.peers=[],this.totalPayments=100,this.paymentJSONArr=[],this.displayedColumns=[],this.htlcColumns=[],this.paymentDecoded={},this.paymentRequest="",this.paymentDecodedHint="",this.flgSticky=!1,this.firstOffset=-1,this.lastOffset=-1,this.selFilter="",this.pageSize=s.IV,this.pageSizeOptions=s.TJ,this.screenSize="",this.screenSizeEnum=s.cu,this.errorMessage="",this.apiCallStatus=null,this.apiCallStatusEnum=s.Bn,this.unSubs=[new d.x,new d.x,new d.x,new d.x,new d.x,new d.x,new d.x,new d.x,new d.x,new d.x],this.screenSize=this.commonService.getScreenSize(),this.screenSize===s.cu.XS?(this.flgSticky=!1,this.displayedColumns=["creation_date","fee","actions"],this.htlcColumns=["groupTotal","groupFee","groupAction"]):this.screenSize===s.cu.SM||this.screenSize===s.cu.MD?(this.flgSticky=!1,this.displayedColumns=["creation_date","fee","value","hops","actions"],this.htlcColumns=["groupTotal","groupFee","groupValue","groupHops","groupAction"]):(this.flgSticky=!0,this.displayedColumns=["creation_date","payment_hash","fee","value","hops","actions"],this.htlcColumns=["groupTotal","groupHash","groupFee","groupValue","groupHops","groupAction"])}ngOnInit(){this.store.select(T.$k).pipe((0,_.R)(this.unSubs[0])).subscribe(e=>{this.selNode=e}),this.store.select(T.Q5).pipe((0,_.R)(this.unSubs[1])).subscribe(e=>{this.information=e}),this.store.select(T.Wi).pipe((0,_.R)(this.unSubs[2])).subscribe(e=>{this.peers=e.peers}),this.store.select(T.PP).pipe((0,_.R)(this.unSubs[3])).subscribe(e=>{this.errorMessage="",this.apiCallStatus=e.apiCallStatus,this.apiCallStatus.status===s.Bn.ERROR&&(this.errorMessage=this.apiCallStatus.message?"object"==typeof this.apiCallStatus.message?JSON.stringify(this.apiCallStatus.message):this.apiCallStatus.message:""),this.paymentJSONArr=e.listPayments.payments||[],this.totalPayments=this.paymentJSONArr.length,this.firstOffset=+(e.listPayments.first_index_offset||-1),this.lastOffset=+(e.listPayments.last_index_offset||-1),this.paymentJSONArr&&this.paymentJSONArr.length>0&&this.sort&&this.paginator&&this.loadPaymentsTable(this.paymentJSONArr.slice(0,this.pageSize)),this.logger.info(e)})}ngAfterViewInit(){this.paymentJSONArr&&this.paymentJSONArr.length>0&&this.loadPaymentsTable(this.paymentJSONArr.slice(0,this.pageSize))}onSendPayment(){if(!this.paymentRequest)return!0;this.paymentDecoded.timestamp?this.sendPayment():this.dataService.decodePayment(this.paymentRequest,!1).pipe((0,X.q)(1)).subscribe(e=>{this.paymentDecoded=e,this.paymentDecoded.timestamp?(this.paymentDecoded.num_satoshis=this.paymentDecoded.num_msat&&!this.paymentDecoded.num_satoshis?(+this.paymentDecoded.num_msat/1e3).toString():"0",this.sendPayment()):this.resetData()})}sendPayment(){this.newlyAddedPayment=this.paymentDecoded.payment_hash||"",this.paymentDecoded.num_msat&&!this.paymentDecoded.num_satoshis&&(this.paymentDecoded.num_satoshis=(+this.paymentDecoded.num_msat/1e3).toString()),this.paymentDecoded.num_satoshis&&""!==this.paymentDecoded.num_satoshis&&"0"!==this.paymentDecoded.num_satoshis?(this.store.dispatch((0,F.c1)({payload:{data:{type:s.n_.CONFIRM,alertTitle:"Confirm Send Payment",noBtnText:"Cancel",yesBtnText:"Send Payment",message:[[{key:"payment_hash",value:this.paymentDecoded.payment_hash,title:"Payment Hash",width:100}],[{key:"destination",value:this.paymentDecoded.destination,title:"Destination",width:100}],[{key:"description",value:this.paymentDecoded.description,title:"Description",width:100}],[{key:"timestamp",value:this.paymentDecoded.timestamp,title:"Creation Date",width:50,type:s.Gi.DATE_TIME},{key:"num_satoshis",value:this.paymentDecoded.num_satoshis,title:"Amount (Sats)",width:50,type:s.Gi.NUMBER}],[{key:"expiry",value:this.paymentDecoded.expiry,title:"Expiry",width:50,type:s.Gi.NUMBER},{key:"cltv_expiry",value:this.paymentDecoded.cltv_expiry,title:"CLTV Expiry",width:50}]]}}})),this.rtlEffects.closeConfirm.pipe((0,X.q)(1)).subscribe(o=>{o&&(this.store.dispatch((0,A.oV)({payload:{uiMessage:s.m6.SEND_PAYMENT,paymentReq:this.paymentRequest,fromDialog:!1}})),this.resetData())})):(this.store.dispatch((0,F.c1)({payload:{data:{type:s.n_.CONFIRM,alertTitle:"Enter Amount and Confirm Send Payment",titleMessage:"It is a zero amount invoice. Enter the amount (Sats) to pay.",message:[[{key:"payment_hash",value:this.paymentDecoded.payment_hash,title:"Payment Hash",width:100}],[{key:"destination",value:this.paymentDecoded.destination,title:"Destination",width:100}],[{key:"description",value:this.paymentDecoded.description,title:"Description",width:100}],[{key:"timestamp",value:this.paymentDecoded.timestamp,title:"Creation Date",width:40,type:s.Gi.DATE_TIME},{key:"expiry",value:this.paymentDecoded.expiry,title:"Expiry",width:30,type:s.Gi.NUMBER},{key:"cltv_expiry",value:this.paymentDecoded.cltv_expiry,title:"CLTV Expiry",width:30}]],noBtnText:"Cancel",yesBtnText:"Send Payment",flgShowInput:!0,getInputs:[{placeholder:"Amount (Sats)",inputType:s.Gi.NUMBER,inputValue:"",width:30}]}}})),this.rtlEffects.closeConfirm.pipe((0,X.q)(1)).subscribe(a=>{a&&(this.paymentDecoded.num_satoshis=a[0].inputValue,this.store.dispatch((0,A.oV)({payload:{uiMessage:s.m6.SEND_PAYMENT,paymentReq:this.paymentRequest,paymentAmount:a[0].inputValue,fromDialog:!1}})),this.resetData())}))}openSendPaymentModal(){this.store.dispatch((0,F.qR)({payload:{data:{component:ti}}}))}onPaymentRequestEntry(e){this.paymentRequest=e,this.paymentDecodedHint="",this.paymentRequest&&this.paymentRequest.length>100&&this.dataService.decodePayment(this.paymentRequest,!1).pipe((0,X.q)(1)).subscribe(o=>{this.paymentDecoded=o,this.paymentDecoded.num_msat&&!this.paymentDecoded.num_satoshis&&(this.paymentDecoded.num_satoshis=(+this.paymentDecoded.num_msat/1e3).toString()),this.paymentDecoded.num_satoshis?this.selNode&&this.selNode.fiatConversion?this.commonService.convertCurrency(+this.paymentDecoded.num_satoshis,s.NT.SATS,s.NT.OTHER,this.selNode.currencyUnits&&this.selNode.currencyUnits.length>2?this.selNode.currencyUnits[2]:"",this.selNode.fiatConversion).pipe((0,_.R)(this.unSubs[5])).subscribe({next:a=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.num_satoshis?this.paymentDecoded.num_satoshis:0)+" Sats ("+a.symbol+this.decimalPipe.transform(a.OTHER?a.OTHER:0,s.Xz.OTHER)+") | Memo: "+this.paymentDecoded.description},error:a=>{this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.num_satoshis?this.paymentDecoded.num_satoshis:0)+" Sats | Memo: "+this.paymentDecoded.description+". Unable to convert currency."}}):this.paymentDecodedHint="Sending: "+this.decimalPipe.transform(this.paymentDecoded.num_satoshis?this.paymentDecoded.num_satoshis:0)+" Sats | Memo: "+this.paymentDecoded.description:this.paymentDecodedHint="Zero Amount Invoice | Memo: "+this.paymentDecoded.description})}onPageChange(e){let o=!0,a=this.lastOffset;this.pageSize=e.pageSize,0===e.pageIndex?(o=!0,a=0):e.pageIndexe.previousPageIndex&&e.length>(e.pageIndex+1)*e.pageSize?(o=!0,a=this.firstOffset):e.length<=(e.pageIndex+1)*e.pageSize&&(o=!1,a=0);const l=e.pageIndex*this.pageSize;this.loadPaymentsTable(this.paymentJSONArr.slice(l,l+this.pageSize))}is_group(e,o){return o.htlcs&&o.htlcs.length>1}resetData(){this.paymentDecoded={},this.paymentRequest="",this.form.resetForm()}getHopDetails(e){const o=this;return null==e?void 0:e.reduce((a,l)=>{const r=o.peers.find(h=>h.pub_key===l.pub_key);return r&&r.alias?a.push("