From 6ba8cb4d35060b803410ef1660f67c37d6101e26 Mon Sep 17 00:00:00 2001
From: jneilliii
Date: Sun, 15 Mar 2020 03:47:20 -0400
Subject: [PATCH] 0.1.12
#### Added
- Rotation options to mesh visualization, community forum request.
- Custom debug logging for future troubleshooting
- Custom commands that will give additional buttons on tab
- Cancel button to stop processing when visualization gets stuck
- Larger precision number processing
- Themify support, will now color the background and axis based on tab colors
- Marlin Mesh Bed Leveling support
- Marlin OpenScad Output support
- Option to show webcam while processing
#### Updated
- Several UI improvements
- Timeout logic to also stop processing on server side
- Plotly library to version 1.52.2
---
octoprint_bedlevelvisualizer/__init__.py | 122 +-
.../static/css/bedlevelvisualizer.css | 59 +
.../static/css/font-awesome-v4-shims.min.css | 1 +
.../static/css/font-awesome.min.css | 1 +
.../static/css/fontawesome-iconpicker.css | 311 +
.../static/js/bedlevelvisualizer.js | 189 +-
.../static/js/fontawesome-iconpicker.js | 5305 +++++++++++++++++
.../static/js/jquery-ui.min.js | 8 +
.../static/js/knockout-sortable.js | 486 ++
.../static/js/ko.iconpicker.js | 28 +
.../static/js/plotly-latest.min.js | 6 +-
.../static/webfonts/fa-brands-400.eot | Bin 0 -> 134396 bytes
.../static/webfonts/fa-brands-400.svg | 1260 ++++
.../static/webfonts/fa-brands-400.ttf | Bin 0 -> 134160 bytes
.../static/webfonts/fa-brands-400.woff | Bin 0 -> 87048 bytes
.../static/webfonts/fa-brands-400.woff2 | Bin 0 -> 74288 bytes
.../static/webfonts/fa-regular-400.eot | Bin 0 -> 40308 bytes
.../static/webfonts/fa-regular-400.svg | 471 ++
.../static/webfonts/fa-regular-400.ttf | Bin 0 -> 40080 bytes
.../static/webfonts/fa-regular-400.woff | Bin 0 -> 18164 bytes
.../static/webfonts/fa-regular-400.woff2 | Bin 0 -> 14872 bytes
.../static/webfonts/fa-solid-900.eot | Bin 0 -> 209012 bytes
.../static/webfonts/fa-solid-900.svg | 2763 +++++++++
.../static/webfonts/fa-solid-900.ttf | Bin 0 -> 208792 bytes
.../static/webfonts/fa-solid-900.woff | Bin 0 -> 102224 bytes
.../static/webfonts/fa-solid-900.woff2 | Bin 0 -> 79100 bytes
.../bedlevelvisualizer_settings.jinja2 | 100 +-
.../templates/bedlevelvisualizer_tab.jinja2 | 52 +-
setup.py | 2 +-
...report_cartesian_Mesh_Bed_Level_data.gcode | 12 +
...report_cartesian_Mesh_Bed_Level_scad.gcode | 13 +
virtual_level_report_klipper.gcode | 20 +
virtual_level_report_repetier.gcode | 730 +++
virtual_level_report_repetier_G33_L0.gcode | 115 +
...epetier_distortion_correction_matrix.gcode | 12 +
35 files changed, 12006 insertions(+), 60 deletions(-)
create mode 100644 octoprint_bedlevelvisualizer/static/css/bedlevelvisualizer.css
create mode 100644 octoprint_bedlevelvisualizer/static/css/font-awesome-v4-shims.min.css
create mode 100644 octoprint_bedlevelvisualizer/static/css/font-awesome.min.css
create mode 100644 octoprint_bedlevelvisualizer/static/css/fontawesome-iconpicker.css
create mode 100644 octoprint_bedlevelvisualizer/static/js/fontawesome-iconpicker.js
create mode 100644 octoprint_bedlevelvisualizer/static/js/jquery-ui.min.js
create mode 100644 octoprint_bedlevelvisualizer/static/js/knockout-sortable.js
create mode 100644 octoprint_bedlevelvisualizer/static/js/ko.iconpicker.js
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-brands-400.eot
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-brands-400.svg
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-brands-400.ttf
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-brands-400.woff
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-brands-400.woff2
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-regular-400.eot
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-regular-400.svg
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-regular-400.ttf
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-regular-400.woff
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-regular-400.woff2
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-solid-900.eot
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-solid-900.svg
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-solid-900.ttf
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-solid-900.woff
create mode 100644 octoprint_bedlevelvisualizer/static/webfonts/fa-solid-900.woff2
create mode 100644 virtual_level_report_cartesian_Mesh_Bed_Level_data.gcode
create mode 100644 virtual_level_report_cartesian_Mesh_Bed_Level_scad.gcode
create mode 100644 virtual_level_report_klipper.gcode
create mode 100644 virtual_level_report_repetier.gcode
create mode 100644 virtual_level_report_repetier_G33_L0.gcode
create mode 100644 virtual_level_report_repetier_distortion_correction_matrix.gcode
diff --git a/octoprint_bedlevelvisualizer/__init__.py b/octoprint_bedlevelvisualizer/__init__.py
index 223a9f6..f2f98f8 100644
--- a/octoprint_bedlevelvisualizer/__init__.py
+++ b/octoprint_bedlevelvisualizer/__init__.py
@@ -4,15 +4,19 @@
import octoprint.plugin
import re
import numpy as np
+import logging
+import flask
class bedlevelvisualizer(octoprint.plugin.StartupPlugin,
octoprint.plugin.TemplatePlugin,
octoprint.plugin.AssetPlugin,
- octoprint.plugin.SettingsPlugin,
- octoprint.plugin.WizardPlugin):
+ octoprint.plugin.SettingsPlugin,
+ octoprint.plugin.WizardPlugin,
+ octoprint.plugin.SimpleApiPlugin):
def __init__(self):
self.processing = False
+ self.mesh_collection_canceled = False
self.old_marlin = False
self.old_marlin_offset = 0
self.repetier_firmware = False
@@ -20,6 +24,8 @@ def __init__(self):
self.box = []
self.flip_x = False
self.flip_y = False
+ self._logger = logging.getLogger("octoprint.plugins.bedlevelvisualizer")
+ self._bedlevelvisualizer_logger = logging.getLogger("octoprint.plugins.bedlevelvisualizer.debug")
##~~ SettingsPlugin
def get_settings_defaults(self):
@@ -36,16 +42,61 @@ def get_settings_defaults(self):
use_center_origin=False,
use_relative_offsets=False,
timeout=60,
- ignore_correction_matrix=False)
+ rotation=0,
+ ignore_correction_matrix=False,
+ debug_logging = False,
+ commands=[],
+ show_labels=True,
+ show_webcam=False)
+
+ def get_settings_version(self):
+ return 1
+
+ def on_settings_migrate(self, target, current=None):
+ if current is None or current < 1:
+ # Loop through commands adding new fields
+ commands_new = []
+ self._logger.info(self._settings.get(['commands']))
+ for command in self._settings.get(['commands']):
+ command["confirmation"] = False
+ command["input"] = []
+ command["message"] = ""
+ commands_new.append(command)
+ self._settings.set(["commands"],commands_new)
+
+ def on_settings_save(self, data):
+ old_debug_logging = self._settings.get_boolean(["debug_logging"])
+
+ octoprint.plugin.SettingsPlugin.on_settings_save(self, data)
+
+ new_debug_logging = self._settings.get_boolean(["debug_logging"])
+ if old_debug_logging != new_debug_logging:
+ if new_debug_logging:
+ self._bedlevelvisualizer_logger.setLevel(logging.DEBUG)
+ else:
+ self._bedlevelvisualizer_logger.setLevel(logging.INFO)
##~~ StartupPlugin
+
+ def on_startup(self, host, port):
+ # setup customized logger
+ from octoprint.logging.handlers import CleaningTimedRotatingFileHandler
+ bedlevelvisualizer_logging_handler = CleaningTimedRotatingFileHandler(self._settings.get_plugin_logfile_path(postfix="debug"), when="D", backupCount=3)
+ bedlevelvisualizer_logging_handler.setFormatter(logging.Formatter("[%(asctime)s] %(levelname)s: %(message)s"))
+ bedlevelvisualizer_logging_handler.setLevel(logging.DEBUG)
+
+ self._bedlevelvisualizer_logger.addHandler(bedlevelvisualizer_logging_handler)
+ self._bedlevelvisualizer_logger.setLevel(logging.DEBUG if self._settings.get_boolean(["debug_logging"]) else logging.INFO)
+ self._bedlevelvisualizer_logger.propagate = False
+
def on_after_startup(self):
self._logger.info("OctoPrint-BedLevelVisualizer loaded!")
##~~ AssetPlugin
def get_assets(self):
return dict(
- js=["js/bedlevelvisualizer.js","js/plotly-latest.min.js"],
+ js=["js/jquery-ui.min.js","js/knockout-sortable.js","js/fontawesome-iconpicker.js","js/ko.iconpicker.js","js/plotly-latest.min.js","js/bedlevelvisualizer.js"],
+ css=["css/font-awesome.min.css","css/font-awesome-v4-shims.min.css","css/fontawesome-iconpicker.css","css/bedlevelvisualizer.css"]
)
##~~ WizardPlugin
@@ -69,20 +120,30 @@ def flagMeshCollection(self, comm_instance, phase, cmd, cmd_type, gcode, *args,
if cmd.startswith("@BEDLEVELVISUALIZER"):
self.mesh = []
self.box = []
- self.processing = True
+ if not self.mesh_collection_canceled and not self.processing:
+ self.processing = True
+ if self.mesh_collection_canceled:
+ self.mesh_collection_canceled = False
+ return
+ self._bedlevelvisualizer_logger.debug("mesh collection started")
return
def processGCODE(self, comm, line, *args, **kwargs):
- if self._settings.get_boolean(["ignore_correction_matrix"]) and re.match(r"^Bed Level Correction Matrix:.*$", line.strip()):
+ if self.processing == True:
+ self._bedlevelvisualizer_logger.debug(line.strip())
+ if self._settings.get_boolean(["ignore_correction_matrix"]) and re.match(r"^(Mesh )?Bed Level (Correction Matrix|data):.*$", line.strip()):
line = "ok"
- if self.processing and "ok" not in line and re.match(r"^((G33.+)|(Bed.+)|(\d+\s)|(\|\s*)|(\[?\s?\+?\-?\d?\.\d+\]?\s*\,?)|(\s?\.\s*)|(NAN\,?))+$", line.strip()):
+ if self.processing and "ok" not in line and re.match(r"^((G33.+)|(Bed.+)|(\d+\s)|(\|\s*)|(\s*\[\s+)|(\[?\s?\+?\-?\d?\.\d+\]?\s*\,?)|(\s?\.\s*)|(NAN\,?))+(\s+\],?)?$", line.strip()):
new_line = re.findall(r"(\+?\-?\d*\.\d*)",line)
+ self._bedlevelvisualizer_logger.debug(new_line)
if re.match(r"^Bed x:.+$", line.strip()):
self.old_marlin = True
+ self._bedlevelvisualizer_logger.debug("using old marlin flag")
if re.match(r"^G33 X.+$", line.strip()):
self.repetier_firmware = True
+ self._bedlevelvisualizer_logger.debug("using repetier flag")
if self._settings.get(["stripFirst"]):
new_line.pop(0)
@@ -93,6 +154,7 @@ def processGCODE(self, comm, line, *args, **kwargs):
return line
if self.processing and "ok" not in line and re.match(r"^Subdivided with CATMULL ROM Leveling Grid:.*$", line.strip()):
+ self._bedlevelvisualizer_logger.debug("resetting mesh to blank because of CATMULL subdivision")
self.mesh = []
return line
@@ -110,8 +172,11 @@ def processGCODE(self, comm, line, *args, **kwargs):
if self.processing and self.old_marlin and re.match(r"^Eqn coefficients:.+$", line.strip()):
self.old_marlin_offset = re.sub("^(Eqn coefficients:.+)(\d+.\d+)$",r"\2", line.strip())
+ self._bedlevelvisualizer_logger.debug("using old marlin offset")
- if self.processing and "Home XYZ first" in line:
+ if self.processing and "Home XYZ first" in line or "Invalid mesh" in line:
+ reason = "data is invalid" if "Invalid" in line else "homing required"
+ self._bedlevelvisualizer_logger.debug("stopping mesh collection because %s" % reason)
self._plugin_manager.send_plugin_message(self._identifier, dict(error=line.strip()))
self.processing = False
return line
@@ -143,38 +208,67 @@ def processGCODE(self, comm, line, *args, **kwargs):
max_y = max([y for x, y in self.box])
bed = dict(type=bed_type,x_min=min_x,x_max=max_x,y_min=min_y,y_max=max_y,z_min=min_z,z_max=max_z)
+ self._bedlevelvisualizer_logger.debug(bed)
if self.old_marlin or self.repetier_firmware:
a = np.swapaxes(self.mesh,1,0)
x = np.unique(a[0]).astype(np.float)
y = np.unique(a[1]).astype(np.float)
z = a[2].reshape((len(x),len(y)))
- self._logger.debug(a)
- self._logger.debug(x)
- self._logger.debug(y)
- self._logger.debug(z)
+ self._bedlevelvisualizer_logger.debug(a)
+ self._bedlevelvisualizer_logger.debug(x)
+ self._bedlevelvisualizer_logger.debug(y)
+ self._bedlevelvisualizer_logger.debug(z)
offset = 0
if self.old_marlin:
offset = self.old_marlin_offset
- self._logger.debug(offset)
+ self._bedlevelvisualizer_logger.debug(offset)
self.mesh = np.subtract(z, [offset], dtype=np.float, casting='unsafe').tolist()
- self._logger.debug(self.mesh)
+ self._bedlevelvisualizer_logger.debug(self.mesh)
self.processing = False
+ self._bedlevelvisualizer_logger.debug("stopping mesh collection")
if bool(self.flip_y) != bool(self._settings.get(["flipY"])):
+ self._bedlevelvisualizer_logger.debug("flipping y axis")
self.mesh.reverse()
if self._settings.get(["use_relative_offsets"]):
+ self._bedlevelvisualizer_logger.debug("using relative offsets")
self.mesh = np.array(self.mesh)
if self._settings.get(["use_center_origin"]):
+ self._bedlevelvisualizer_logger.debug("using center origin")
self.mesh = np.subtract(self.mesh, self.mesh[len(self.mesh[0])/2,len(self.mesh)/2], dtype=np.float, casting='unsafe').tolist()
else:
self.mesh = np.subtract(self.mesh, self.mesh[0,0], dtype=np.float, casting='unsafe').tolist()
+ if int(self._settings.get(["rotation"])) > 0:
+ self._bedlevelvisualizer_logger.debug("rotating mesh by %s" % self._settings.get(["rotation"]))
+ self.mesh = np.array(self.mesh)
+ self.mesh = np.rot90(self.mesh, int(self._settings.get(["rotation"]))/90).tolist()
+
+ self._bedlevelvisualizer_logger.debug(self.mesh)
+
self._plugin_manager.send_plugin_message(self._identifier, dict(mesh=self.mesh,bed=bed))
return line
+ ##~~ SimpleApiPlugin mixin
+ def get_api_commands(self):
+ return dict(stopProcessing=[])
+
+ def on_api_get(self, request):
+ if request.args.get("stopProcessing"):
+ self._bedlevelvisualizer_logger.debug("Canceling mesh collection per user request")
+ self._bedlevelvisualizer_logger.debug("Mesh data collected prior to cancel:")
+ self._bedlevelvisualizer_logger.debug(self.mesh)
+ self.processing = False
+ self.mesh_collection_canceled = True
+ self.mesh = []
+ self._bedlevelvisualizer_logger.debug("Mesh data after clearing:")
+ self._bedlevelvisualizer_logger.debug(self.mesh)
+ response = dict(stopped=True)
+ return flask.jsonify(response)
+
##~~ Softwareupdate hook
def get_update_information(self):
return dict(
diff --git a/octoprint_bedlevelvisualizer/static/css/bedlevelvisualizer.css b/octoprint_bedlevelvisualizer/static/css/bedlevelvisualizer.css
new file mode 100644
index 0000000..ef82d8f
--- /dev/null
+++ b/octoprint_bedlevelvisualizer/static/css/bedlevelvisualizer.css
@@ -0,0 +1,59 @@
+div#bedlevelvisualizergraph div.modebar {
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+#bedlevelvisualizer_webcam_container{
+ width:100%;
+ overflow: hidden;
+ position:relative;
+ outline:0;
+ background-color:#000;
+ margin-bottom: 10px;
+}
+#bedlevelvisualizer_webcam_container .webcam_rotated{
+ position:relative;
+ width:100%;
+ padding-bottom:100%;
+ pointer-events:none;
+}
+#bedlevelvisualizer_webcam_container .webcam_rotated .webcam_fixed_ratio{
+ position:absolute;
+ transform:rotate(-90deg);
+ top:0;
+ bottom:0;
+ pointer-events:none;
+}
+#bedlevelvisualizer_webcam_container .webcam_rotated .webcam_fixed_ratio .webcam_fixed_ratio_inner{
+ width:100%;
+ height:100%;
+ pointer-events:none;
+}
+#bedlevelvisualizer_webcam_container .webcam_unrotated .webcam_fixed_ratio{
+ width:100%;
+ pointer-events:none;
+ padding-bottom:100%;
+ position:relative;
+}
+#bedlevelvisualizer_webcam_container .webcam_unrotated .webcam_fixed_ratio.ratio43{
+ padding-bottom:75%;
+}
+#bedlevelvisualizer_webcam_container .webcam_unrotated .webcam_fixed_ratio.ratio169{
+ padding-bottom:56.25%;
+}
+#bedlevelvisualizer_webcam_container .webcam_unrotated .webcam_fixed_ratio.ratio1610{
+ padding-bottom:62.5%;
+}
+#bedlevelvisualizer_webcam_container .webcam_unrotated .webcam_fixed_ratio .webcam_fixed_ratio_inner{
+ position:absolute;
+ top:0;
+ bottom:0;
+ left:0;
+ right:0;
+ pointer-events:none;
+}
+#bedlevelvisualizer_webcam_container img{
+ width:100%;
+ height:100%;
+ object-fit:contain;
+}
\ No newline at end of file
diff --git a/octoprint_bedlevelvisualizer/static/css/font-awesome-v4-shims.min.css b/octoprint_bedlevelvisualizer/static/css/font-awesome-v4-shims.min.css
new file mode 100644
index 0000000..06c24e9
--- /dev/null
+++ b/octoprint_bedlevelvisualizer/static/css/font-awesome-v4-shims.min.css
@@ -0,0 +1 @@
+.fa.fa-glass:before{content:"\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-pencil:before{content:"\f303"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-scissors:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f381"}.fa.fa-cloud-upload:before{content:"\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f089"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before{content:"\f127"}.fa.fa-shield:before{content:"\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f15e"}.fa.fa-sort-amount-asc:before{content:"\f160"}.fa.fa-sort-amount-desc:before{content:"\f161"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f163"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-cab:before{content:"\f1ba"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-sliders:before{content:"\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before{content:"\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-tripadvisor,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-spotify,.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}
\ No newline at end of file
diff --git a/octoprint_bedlevelvisualizer/static/css/font-awesome.min.css b/octoprint_bedlevelvisualizer/static/css/font-awesome.min.css
new file mode 100644
index 0000000..de56473
--- /dev/null
+++ b/octoprint_bedlevelvisualizer/static/css/font-awesome.min.css
@@ -0,0 +1 @@
+.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-icicles:before{content:"\f7ad"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
\ No newline at end of file
diff --git a/octoprint_bedlevelvisualizer/static/css/fontawesome-iconpicker.css b/octoprint_bedlevelvisualizer/static/css/fontawesome-iconpicker.css
new file mode 100644
index 0000000..cb68599
--- /dev/null
+++ b/octoprint_bedlevelvisualizer/static/css/fontawesome-iconpicker.css
@@ -0,0 +1,311 @@
+/*!
+ * Font Awesome Icon Picker
+ * https://farbelous.github.io/fontawesome-iconpicker/
+ *
+ * @author Javi Aguilar, itsjavi.com
+ * @license MIT License
+ * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE
+ */
+.iconpicker-popover.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: none;
+ max-width: none;
+ padding: 1px;
+ text-align: left;
+ width: 234px;
+ background: #f7f7f7;
+ z-index: 9;
+}
+.iconpicker-popover.popover.top,
+.iconpicker-popover.popover.topLeftCorner,
+.iconpicker-popover.popover.topLeft,
+.iconpicker-popover.popover.topRight,
+.iconpicker-popover.popover.topRightCorner {
+ margin-top: -10px;
+}
+.iconpicker-popover.popover.right,
+.iconpicker-popover.popover.rightTop,
+.iconpicker-popover.popover.rightBottom {
+ margin-left: 10px;
+}
+.iconpicker-popover.popover.bottom,
+.iconpicker-popover.popover.bottomRightCorner,
+.iconpicker-popover.popover.bottomRight,
+.iconpicker-popover.popover.bottomLeft,
+.iconpicker-popover.popover.bottomLeftCorner {
+ margin-top: 10px;
+}
+.iconpicker-popover.popover.left,
+.iconpicker-popover.popover.leftBottom,
+.iconpicker-popover.popover.leftTop {
+ margin-left: -10px;
+}
+.iconpicker-popover.popover.inline {
+ margin: 0 0 12px 0;
+ position: relative;
+ display: inline-block;
+ opacity: 1;
+ top: auto;
+ left: auto;
+ bottom: auto;
+ right: auto;
+ max-width: 100%;
+ box-shadow: none;
+ z-index: auto;
+ vertical-align: top;
+}
+.iconpicker-popover.popover.inline > .arrow {
+ display: none;
+}
+.dropdown-menu .iconpicker-popover.inline {
+ margin: 0;
+ border: none;
+}
+.dropdown-menu.iconpicker-container {
+ padding: 0;
+}
+.iconpicker-popover.popover .popover-title {
+ padding: 12px;
+ font-size: 13px;
+ line-height: 15px;
+ border-bottom: 1px solid #ebebeb;
+ background-color: #f7f7f7;
+}
+.iconpicker-popover.popover .popover-title input[type=search].iconpicker-search {
+ margin: 0 0 2px 0;
+}
+.iconpicker-popover.popover .popover-title-text ~ input[type=search].iconpicker-search {
+ margin-top: 12px;
+}
+.iconpicker-popover.popover .popover-content {
+ padding: 0px;
+ text-align: center;
+}
+.iconpicker-popover .popover-footer {
+ float: none;
+ clear: both;
+ padding: 12px;
+ text-align: right;
+ margin: 0;
+ border-top: 1px solid #ebebeb;
+ background-color: #f7f7f7;
+}
+.iconpicker-popover .popover-footer:before,
+.iconpicker-popover .popover-footer:after {
+ content: " ";
+ display: table;
+}
+.iconpicker-popover .popover-footer:after {
+ clear: both;
+}
+.iconpicker-popover .popover-footer .iconpicker-btn {
+ margin-left: 10px;
+}
+.iconpicker-popover .popover-footer input[type=search].iconpicker-search {
+ /*width:auto;
+ float:left;*/
+ margin-bottom: 12px;
+}
+.iconpicker-popover.popover > .arrow,
+.iconpicker-popover.popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.iconpicker-popover.popover > .arrow {
+ border-width: 11px;
+}
+.iconpicker-popover.popover > .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.iconpicker-popover.popover.top > .arrow,
+.iconpicker-popover.popover.topLeft > .arrow,
+.iconpicker-popover.popover.topRight > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
+}
+.iconpicker-popover.popover.top > .arrow:after,
+.iconpicker-popover.popover.topLeft > .arrow:after,
+.iconpicker-popover.popover.topRight > .arrow:after {
+ content: " ";
+ bottom: 1px;
+ margin-left: -10px;
+ border-bottom-width: 0;
+ border-top-color: #fff;
+}
+.iconpicker-popover.popover.topLeft > .arrow {
+ left: 8px;
+ margin-left: 0;
+}
+.iconpicker-popover.popover.topRight > .arrow {
+ left: auto;
+ right: 8px;
+ margin-left: 0;
+}
+.iconpicker-popover.popover.right > .arrow,
+.iconpicker-popover.popover.rightTop > .arrow,
+.iconpicker-popover.popover.rightBottom > .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: rgba(0, 0, 0, 0.25);
+}
+.iconpicker-popover.popover.right > .arrow:after,
+.iconpicker-popover.popover.rightTop > .arrow:after,
+.iconpicker-popover.popover.rightBottom > .arrow:after {
+ content: " ";
+ left: 1px;
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #fff;
+}
+.iconpicker-popover.popover.rightTop > .arrow {
+ top: auto;
+ bottom: 8px;
+ margin-top: 0;
+}
+.iconpicker-popover.popover.rightBottom > .arrow {
+ top: 8px;
+ margin-top: 0;
+}
+.iconpicker-popover.popover.bottom > .arrow,
+.iconpicker-popover.popover.bottomRight > .arrow,
+.iconpicker-popover.popover.bottomLeft > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999999;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ top: -11px;
+}
+.iconpicker-popover.popover.bottom > .arrow:after,
+.iconpicker-popover.popover.bottomRight > .arrow:after,
+.iconpicker-popover.popover.bottomLeft > .arrow:after {
+ content: " ";
+ top: 1px;
+ margin-left: -10px;
+ border-top-width: 0;
+ border-bottom-color: #fff;
+}
+.iconpicker-popover.popover.bottomLeft > .arrow {
+ left: 8px;
+ margin-left: 0;
+}
+.iconpicker-popover.popover.bottomRight > .arrow {
+ left: auto;
+ right: 8px;
+ margin-left: 0;
+}
+.iconpicker-popover.popover.left > .arrow,
+.iconpicker-popover.popover.leftBottom > .arrow,
+.iconpicker-popover.popover.leftTop > .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999999;
+ border-left-color: rgba(0, 0, 0, 0.25);
+}
+.iconpicker-popover.popover.left > .arrow:after,
+.iconpicker-popover.popover.leftBottom > .arrow:after,
+.iconpicker-popover.popover.leftTop > .arrow:after {
+ content: " ";
+ right: 1px;
+ border-right-width: 0;
+ border-left-color: #fff;
+ bottom: -10px;
+}
+.iconpicker-popover.popover.leftBottom > .arrow {
+ top: 8px;
+ margin-top: 0;
+}
+.iconpicker-popover.popover.leftTop > .arrow {
+ top: auto;
+ bottom: 8px;
+ margin-top: 0;
+}
+.iconpicker {
+ position: relative;
+ text-align: left;
+ text-shadow: none;
+ line-height: 0;
+ display: block;
+ margin: 0;
+ overflow: hidden;
+}
+.iconpicker * {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ position: relative;
+}
+.iconpicker:before,
+.iconpicker:after {
+ content: " ";
+ display: table;
+}
+.iconpicker:after {
+ clear: both;
+}
+.iconpicker .iconpicker-items {
+ position: relative;
+ clear: both;
+ float: none;
+ padding: 12px 0 0 12px;
+ background: #fff;
+ margin: 0;
+ overflow: hidden;
+ overflow-y: auto;
+ min-height: 49px;
+ max-height: 246px;
+}
+.iconpicker .iconpicker-items:before,
+.iconpicker .iconpicker-items:after {
+ content: " ";
+ display: table;
+}
+.iconpicker .iconpicker-items:after {
+ clear: both;
+}
+.iconpicker .iconpicker-item {
+ float: left;
+ width: 14px;
+ height: 14px;
+ padding: 12px;
+ margin: 0 12px 12px 0;
+ text-align: center;
+ cursor: pointer;
+ border-radius: 3px;
+ font-size: 14px;
+ box-shadow: 0 0 0 1px #ddd;
+ color: inherit;
+ /*&:nth-child(4n+4) {
+ margin-right: 0;
+ }
+ &:nth-last-child(-n+4) {
+ margin-bottom: 0;
+ }*/
+}
+.iconpicker .iconpicker-item:hover:not(.iconpicker-selected) {
+ background-color: #eee;
+}
+.iconpicker .iconpicker-item.iconpicker-selected {
+ box-shadow: none;
+ color: #fff;
+ background: #000;
+}
+.iconpicker-component {
+ cursor: pointer;
+}
diff --git a/octoprint_bedlevelvisualizer/static/js/bedlevelvisualizer.js b/octoprint_bedlevelvisualizer/static/js/bedlevelvisualizer.js
index 0ff2725..22f2e7a 100644
--- a/octoprint_bedlevelvisualizer/static/js/bedlevelvisualizer.js
+++ b/octoprint_bedlevelvisualizer/static/js/bedlevelvisualizer.js
@@ -12,6 +12,7 @@ $(function () {
self.mesh_data_y = ko.observableArray([]);
self.mesh_data_z_height = ko.observable();
self.save_mesh = ko.observable();
+ self.selected_command = ko.observable();
self.mesh_status = ko.computed(function(){
if(self.processing()){
return 'Collecting mesh data.';
@@ -22,7 +23,7 @@ $(function () {
return 'Update mesh.'
}
});
-
+
self.onBeforeBinding = function() {
self.mesh_data(self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh());
self.mesh_data_x(self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh_x());
@@ -30,11 +31,11 @@ $(function () {
self.mesh_data_z_height(self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh_z_height());
self.save_mesh(self.settingsViewModel.settings.plugins.bedlevelvisualizer.save_mesh());
}
-
+
self.onAfterBinding = function() {
$('div#settings_plugin_bedlevelvisualizer i[data-toggle="tooltip"],div#tab_plugin_bedlevelvisualizer i[data-toggle="tooltip"],div#wizard_plugin_bedlevelvisualizer i[data-toggle="tooltip"],div#settings_plugin_bedlevelvisualizer pre[data-toggle="tooltip"]').tooltip();
}
-
+
self.onEventSettingsUpdated = function (payload) {
self.mesh_data(self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh());
self.save_mesh(self.settingsViewModel.settings.plugins.bedlevelvisualizer.save_mesh());
@@ -48,33 +49,35 @@ $(function () {
if (mesh_data.mesh.length > 0) {
var x_data = [];
var y_data = [];
-
- for(var i = 0;i <= (mesh_data.mesh[0].length - 1);i++){
- if((mesh_data.bed.type == "circular") || self.settingsViewModel.settings.plugins.bedlevelvisualizer.use_center_origin()){
+
+ for(var i = 0;i <= (mesh_data.mesh[0].length - 1);i++) {
+ if ((mesh_data.bed.type == "circular") || self.settingsViewModel.settings.plugins.bedlevelvisualizer.use_center_origin()) {
x_data.push(Math.round(mesh_data.bed.x_min - (mesh_data.bed.x_max/2)+i/(mesh_data.mesh[0].length - 1)*(mesh_data.bed.x_max - mesh_data.bed.x_min)));
} else {
x_data.push(Math.round(mesh_data.bed.x_min+i/(mesh_data.mesh[0].length - 1)*(mesh_data.bed.x_max - mesh_data.bed.x_min)));
}
};
-
- for(var i = 0;i <= (mesh_data.mesh.length - 1);i++){
- if((mesh_data.bed.type == "circular") || self.settingsViewModel.settings.plugins.bedlevelvisualizer.use_center_origin()){
+
+ for(var i = 0;i <= (mesh_data.mesh.length - 1);i++) {
+ if ((mesh_data.bed.type == "circular") || self.settingsViewModel.settings.plugins.bedlevelvisualizer.use_center_origin()) {
y_data.push(Math.round(mesh_data.bed.y_min - (mesh_data.bed.y_max/2)+i/(mesh_data.mesh.length - 1)*(mesh_data.bed.y_max - mesh_data.bed.y_min)));
} else {
y_data.push(Math.round(mesh_data.bed.y_min+i/(mesh_data.mesh.length - 1)*(mesh_data.bed.y_max - mesh_data.bed.y_min)));
}
};
-
+
self.drawMesh(mesh_data.mesh,true,x_data,y_data,mesh_data.bed.z_max);
}
return;
}
if (mesh_data.error) {
+ clearTimeout(self.timeout);
+ self.processing(false);
new PNotify({
- title: 'Bed Visualizer Error',
- text: 'Looks like your settings are not correct or there was an error.
Please see the Readme for configuration tips.
'+mesh_data.error+'
',
- hide: true
- });
+ title: 'Bed Visualizer Error',
+ text: 'Looks like your settings are not correct or there was an error.
Please see the Readme for configuration tips.
'+mesh_data.error+' ',
+ hide: true
+ });
return;
}
return;
@@ -84,8 +87,8 @@ $(function () {
// console.log(mesh_data_z+'\n'+store_data+'\n'+mesh_data_x+'\n'+mesh_data_y+'\n'+mesh_data_z_height);
clearTimeout(self.timeout);
self.processing(false);
- if(self.save_mesh()){
- if(store_data){
+ if (self.save_mesh()) {
+ if (store_data) {
self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh(mesh_data_z);
self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh_x(mesh_data_x);
self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh_y(mesh_data_y);
@@ -94,19 +97,28 @@ $(function () {
self.settingsViewModel.saveData();
};
}
-
+
try {
var data = [{
z: mesh_data_z,
x: mesh_data_x,
y: mesh_data_y,
- type: 'surface'
+ type: 'surface',
+ colorbar: {
+ tickfont: {
+ color: $('#tabs_content').css('color')
+ }
+ }
}
];
+ var background_color = $('#tabs_content').css('background-color');
+ var foreground_color = $('#tabs_content').css('color');
var layout = {
//title: 'Bed Leveling Mesh',
autosize: true,
+ plot_bgcolor: background_color,
+ paper_bgcolor: background_color,
margin: {
l: 0,
r: 0,
@@ -121,13 +133,21 @@ $(function () {
z: .25
}
},
+ xaxis: {
+ color: foreground_color
+ },
+ yaxis: {
+ color: foreground_color
+ },
zaxis: {
+ color: foreground_color,
range: [-2,2]
}
}
};
-
+
var config_options = {
+ displaylogo: false,
modeBarButtonsToRemove: ['resetCameraLastSave3d'],
modeBarButtonsToAdd: [{
name: 'Move Nozzle',
@@ -136,8 +156,8 @@ $(function () {
click: function(gd, ev) {
var button = ev.currentTarget;
var button_enabled = button._previousVal || false;
- if(!button_enabled){
- gd.on('plotly_click', function(data){
+ if (!button_enabled) {
+ gd.on('plotly_click', function(data) {
var gcode_command = 'G1 X' + data.points[0].x + ' Y' + data.points[0].y
OctoPrint.control.sendGcode([gcode_command]);
});
@@ -149,7 +169,7 @@ $(function () {
}
}]
}
-
+
Plotly.react('bedlevelvisualizergraph', data, layout, config_options);
} catch(err) {
new PNotify({
@@ -169,10 +189,10 @@ $(function () {
}
} else if (self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh().length > 0) {
self.drawMesh(self.mesh_data(),false,self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh_x(),self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh_y(),self.settingsViewModel.settings.plugins.bedlevelvisualizer.stored_mesh_z_height());
- }
+ }
return;
}
-
+
if (previous === "#tab_plugin_bedlevelvisualizer") {
//Plotly.purge('bedlevelvisualizergraph');
}
@@ -180,20 +200,129 @@ $(function () {
self.updateMesh = function () {
self.processing(true);
- self.timeout = setTimeout(function(){self.processing(false);new PNotify({title: 'Bed Visualizer Error',text: 'Timeout occured before prcessing completed. Processing may still be running or there may be a configuration error. Consider increasing the timeout value in settings.
',type: 'info',hide: true});}, (parseInt(self.settingsViewModel.settings.plugins.bedlevelvisualizer.timeout())*1000));
+ self.timeout = setTimeout(function(){self.cancelMeshUpdate();new PNotify({title: 'Bed Visualizer Error',text: 'Timeout occured before prcessing completed. Processing may still be running or there may be a configuration error. Consider increasing the timeout value in settings.
',type: 'info',hide: true});}, (parseInt(self.settingsViewModel.settings.plugins.bedlevelvisualizer.timeout())*1000));
var gcode_cmds = self.settingsViewModel.settings.plugins.bedlevelvisualizer.command().split("\n");
- if (gcode_cmds.indexOf("@BEDLEVELVISUALIZER") == -1){
+ if (gcode_cmds.indexOf("@BEDLEVELVISUALIZER") == -1) {
gcode_cmds = ["@BEDLEVELVISUALIZER"].concat(gcode_cmds);
}
+ // clean extraneous code
+ gcode_cmds = gcode_cmds.filter(function(array_val) {
+ var x = Boolean(array_val);
+ return x == true;
+ });
+
+ console.log(gcode_cmds);
+
+ OctoPrint.control.sendGcode(gcode_cmds);
+ };
+
+ self.cancelMeshUpdate = function() {
+ $.ajax({
+ url: API_BASEURL + "plugin/bedlevelvisualizer",
+ type: "GET",
+ dataType: "json",
+ data: {stopProcessing:true},
+ contentType: "application/json; charset=UTF-8"
+ }).done(function(data){
+ if(data.stopped){
+ clearTimeout(self.timeout);
+ self.processing(false);
+ }
+ });
+ }
+
+ // Custom command list
+
+ self.showEditor = function(data) {
+ self.selected_command(data);
+ $('#BedLevelVisulizerCommandEditor').modal('show');
+ };
+
+ self.copyCommand = function(data) {
+ self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands.push({
+ icon: ko.observable(data.icon()),
+ label: ko.observable(data.label()),
+ tooltip: ko.observable(data.tooltip()),
+ command: ko.observable(data.command()),
+ confirmation: ko.observable(data.confirmation()),
+ message: ko.observable(data.message()),
+ enabled_while_printing: ko.observable(data.enabled_while_printing()),
+ enabled_while_graphing: ko.observable(data.enabled_while_graphing()),
+ input: ko.observableArray(data.input())});
+ };
+
+ self.moveCommandUp = function(data) {
+ let currentIndex = self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands.indexOf(data);
+ if (currentIndex > 0) {
+ let queueArray = self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands();
+ self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands.splice(currentIndex-1, 2, queueArray[currentIndex], queueArray[currentIndex - 1]);
+ }
+ }
+
+ self.moveCommandDown = function(data) {
+ let currentIndex = self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands.indexOf(data);
+ if (currentIndex < self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands().length - 1) {
+ let queueArray = self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands();
+ self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands.splice(currentIndex, 2, queueArray[currentIndex + 1], queueArray[currentIndex]);
+ }
+ }
+
+ self.addCommand = function() {
+ self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands.push({icon: ko.observable('fas fa-gear'), label: ko.observable(''), tooltip: ko.observable(''), command: ko.observable(''), confirmation: ko.observable(false), message: ko.observable(''), input: ko.observableArray([]), enabled_while_printing: ko.observable(false), enabled_while_graphing: ko.observable(false)});
+ }
+
+ self.removeCommand = function(data) {
+ self.settingsViewModel.settings.plugins.bedlevelvisualizer.commands.remove(data);
+ }
+
+ self.addParameter = function(data) {
+ data.input.push({label: ko.observable(''), parameter: ko.observable(''), value: ko.observable('')});
+ }
+
+ self.insertParameter = function(data) {
+ var text = self.selected_command().command();
+ text += '%(' + data.parameter() + ')s';
+ self.selected_command().command(text);
+ console.log(data);
+ }
+
+ self.removeParameter = function(data) {
+ var text = self.selected_command().command();
+ var search = '%\\(' + data.parameter() + '\\)s';
+ var re = new RegExp(search,"gm");
+ var new_text = text.replace(re, '');
+ self.selected_command().command(new_text);
+ self.selected_command().input.remove(data);
+ }
+
+ self.runCustomCommand = function(data, event) {
+ var gcode_cmds = data.command().split("\n");
+ var parameters = {};
+
// clean extraneous code
gcode_cmds = gcode_cmds.filter(function(array_val) {
var x = Boolean(array_val);
return x == true;
});
-
- console.log(gcode_cmds);
-
- OctoPrint.control.sendGcode(gcode_cmds);
+ if (data.input().length > 0) {
+ _.each(data.input(), function (input) {
+ if (!input.hasOwnProperty("parameter") || !input.hasOwnProperty("value")) {
+ return;
+ }
+ parameters[input.parameter()] = input.value();
+ });
+ }
+ if (data.confirmation()) {
+ showConfirmationDialog({
+ message: data.message(),
+ onproceed: function (e) {
+ OctoPrint.control.sendGcodeWithParameters(gcode_cmds, parameters);
+ }
+ });
+ } else {
+ OctoPrint.control.sendGcodeWithParameters(gcode_cmds, parameters);
+ }
+ event.currentTarget.blur();
};
}
diff --git a/octoprint_bedlevelvisualizer/static/js/fontawesome-iconpicker.js b/octoprint_bedlevelvisualizer/static/js/fontawesome-iconpicker.js
new file mode 100644
index 0000000..a6ce126
--- /dev/null
+++ b/octoprint_bedlevelvisualizer/static/js/fontawesome-iconpicker.js
@@ -0,0 +1,5305 @@
+/*!
+ * Font Awesome Icon Picker
+ * https://farbelous.github.io/fontawesome-iconpicker/
+ *
+ * @author Javi Aguilar, itsjavi.com
+ * @license MIT License
+ * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE
+ */
+
+
+(function(e) {
+ if (typeof define === "function" && define.amd) {
+ define([ "jquery" ], e);
+ } else {
+ e(jQuery);
+ }
+})(function(j) {
+ j.ui = j.ui || {};
+ var e = j.ui.version = "1.12.1";
+ (function() {
+ var r, y = Math.max, x = Math.abs, s = /left|center|right/, i = /top|center|bottom/, f = /[\+\-]\d+(\.[\d]+)?%?/, l = /^\w+/, c = /%$/, a = j.fn.pos;
+ function q(e, a, t) {
+ return [ parseFloat(e[0]) * (c.test(e[0]) ? a / 100 : 1), parseFloat(e[1]) * (c.test(e[1]) ? t / 100 : 1) ];
+ }
+ function C(e, a) {
+ return parseInt(j.css(e, a), 10) || 0;
+ }
+ function t(e) {
+ var a = e[0];
+ if (a.nodeType === 9) {
+ return {
+ width: e.width(),
+ height: e.height(),
+ offset: {
+ top: 0,
+ left: 0
+ }
+ };
+ }
+ if (j.isWindow(a)) {
+ return {
+ width: e.width(),
+ height: e.height(),
+ offset: {
+ top: e.scrollTop(),
+ left: e.scrollLeft()
+ }
+ };
+ }
+ if (a.preventDefault) {
+ return {
+ width: 0,
+ height: 0,
+ offset: {
+ top: a.pageY,
+ left: a.pageX
+ }
+ };
+ }
+ return {
+ width: e.outerWidth(),
+ height: e.outerHeight(),
+ offset: e.offset()
+ };
+ }
+ j.pos = {
+ scrollbarWidth: function() {
+ if (r !== undefined) {
+ return r;
+ }
+ var e, a, t = j(""), s = t.children()[0];
+ j("body").append(t);
+ e = s.offsetWidth;
+ t.css("overflow", "scroll");
+ a = s.offsetWidth;
+ if (e === a) {
+ a = t[0].clientWidth;
+ }
+ t.remove();
+ return r = e - a;
+ },
+ getScrollInfo: function(e) {
+ var a = e.isWindow || e.isDocument ? "" : e.element.css("overflow-x"), t = e.isWindow || e.isDocument ? "" : e.element.css("overflow-y"), s = a === "scroll" || a === "auto" && e.width < e.element[0].scrollWidth, r = t === "scroll" || t === "auto" && e.height < e.element[0].scrollHeight;
+ return {
+ width: r ? j.pos.scrollbarWidth() : 0,
+ height: s ? j.pos.scrollbarWidth() : 0
+ };
+ },
+ getWithinInfo: function(e) {
+ var a = j(e || window), t = j.isWindow(a[0]), s = !!a[0] && a[0].nodeType === 9, r = !t && !s;
+ return {
+ element: a,
+ isWindow: t,
+ isDocument: s,
+ offset: r ? j(e).offset() : {
+ left: 0,
+ top: 0
+ },
+ scrollLeft: a.scrollLeft(),
+ scrollTop: a.scrollTop(),
+ width: a.outerWidth(),
+ height: a.outerHeight()
+ };
+ }
+ };
+ j.fn.pos = function(h) {
+ if (!h || !h.of) {
+ return a.apply(this, arguments);
+ }
+ h = j.extend({}, h);
+ var m, p, d, u, T, e, g = j(h.of), b = j.pos.getWithinInfo(h.within), k = j.pos.getScrollInfo(b), w = (h.collision || "flip").split(" "), v = {};
+ e = t(g);
+ if (g[0].preventDefault) {
+ h.at = "left top";
+ }
+ p = e.width;
+ d = e.height;
+ u = e.offset;
+ T = j.extend({}, u);
+ j.each([ "my", "at" ], function() {
+ var e = (h[this] || "").split(" "), a, t;
+ if (e.length === 1) {
+ e = s.test(e[0]) ? e.concat([ "center" ]) : i.test(e[0]) ? [ "center" ].concat(e) : [ "center", "center" ];
+ }
+ e[0] = s.test(e[0]) ? e[0] : "center";
+ e[1] = i.test(e[1]) ? e[1] : "center";
+ a = f.exec(e[0]);
+ t = f.exec(e[1]);
+ v[this] = [ a ? a[0] : 0, t ? t[0] : 0 ];
+ h[this] = [ l.exec(e[0])[0], l.exec(e[1])[0] ];
+ });
+ if (w.length === 1) {
+ w[1] = w[0];
+ }
+ if (h.at[0] === "right") {
+ T.left += p;
+ } else if (h.at[0] === "center") {
+ T.left += p / 2;
+ }
+ if (h.at[1] === "bottom") {
+ T.top += d;
+ } else if (h.at[1] === "center") {
+ T.top += d / 2;
+ }
+ m = q(v.at, p, d);
+ T.left += m[0];
+ T.top += m[1];
+ return this.each(function() {
+ var t, e, f = j(this), l = f.outerWidth(), c = f.outerHeight(), a = C(this, "marginLeft"), s = C(this, "marginTop"), r = l + a + C(this, "marginRight") + k.width, i = c + s + C(this, "marginBottom") + k.height, o = j.extend({}, T), n = q(v.my, f.outerWidth(), f.outerHeight());
+ if (h.my[0] === "right") {
+ o.left -= l;
+ } else if (h.my[0] === "center") {
+ o.left -= l / 2;
+ }
+ if (h.my[1] === "bottom") {
+ o.top -= c;
+ } else if (h.my[1] === "center") {
+ o.top -= c / 2;
+ }
+ o.left += n[0];
+ o.top += n[1];
+ t = {
+ marginLeft: a,
+ marginTop: s
+ };
+ j.each([ "left", "top" ], function(e, a) {
+ if (j.ui.pos[w[e]]) {
+ j.ui.pos[w[e]][a](o, {
+ targetWidth: p,
+ targetHeight: d,
+ elemWidth: l,
+ elemHeight: c,
+ collisionPosition: t,
+ collisionWidth: r,
+ collisionHeight: i,
+ offset: [ m[0] + n[0], m[1] + n[1] ],
+ my: h.my,
+ at: h.at,
+ within: b,
+ elem: f
+ });
+ }
+ });
+ if (h.using) {
+ e = function(e) {
+ var a = u.left - o.left, t = a + p - l, s = u.top - o.top, r = s + d - c, i = {
+ target: {
+ element: g,
+ left: u.left,
+ top: u.top,
+ width: p,
+ height: d
+ },
+ element: {
+ element: f,
+ left: o.left,
+ top: o.top,
+ width: l,
+ height: c
+ },
+ horizontal: t < 0 ? "left" : a > 0 ? "right" : "center",
+ vertical: r < 0 ? "top" : s > 0 ? "bottom" : "middle"
+ };
+ if (p < l && x(a + t) < p) {
+ i.horizontal = "center";
+ }
+ if (d < c && x(s + r) < d) {
+ i.vertical = "middle";
+ }
+ if (y(x(a), x(t)) > y(x(s), x(r))) {
+ i.important = "horizontal";
+ } else {
+ i.important = "vertical";
+ }
+ h.using.call(this, e, i);
+ };
+ }
+ f.offset(j.extend(o, {
+ using: e
+ }));
+ });
+ };
+ j.ui.pos = {
+ _trigger: function(e, a, t, s) {
+ if (a.elem) {
+ a.elem.trigger({
+ type: t,
+ position: e,
+ positionData: a,
+ triggered: s
+ });
+ }
+ },
+ fit: {
+ left: function(e, a) {
+ j.ui.pos._trigger(e, a, "posCollide", "fitLeft");
+ var t = a.within, s = t.isWindow ? t.scrollLeft : t.offset.left, r = t.width, i = e.left - a.collisionPosition.marginLeft, f = s - i, l = i + a.collisionWidth - r - s, c;
+ if (a.collisionWidth > r) {
+ if (f > 0 && l <= 0) {
+ c = e.left + f + a.collisionWidth - r - s;
+ e.left += f - c;
+ } else if (l > 0 && f <= 0) {
+ e.left = s;
+ } else {
+ if (f > l) {
+ e.left = s + r - a.collisionWidth;
+ } else {
+ e.left = s;
+ }
+ }
+ } else if (f > 0) {
+ e.left += f;
+ } else if (l > 0) {
+ e.left -= l;
+ } else {
+ e.left = y(e.left - i, e.left);
+ }
+ j.ui.pos._trigger(e, a, "posCollided", "fitLeft");
+ },
+ top: function(e, a) {
+ j.ui.pos._trigger(e, a, "posCollide", "fitTop");
+ var t = a.within, s = t.isWindow ? t.scrollTop : t.offset.top, r = a.within.height, i = e.top - a.collisionPosition.marginTop, f = s - i, l = i + a.collisionHeight - r - s, c;
+ if (a.collisionHeight > r) {
+ if (f > 0 && l <= 0) {
+ c = e.top + f + a.collisionHeight - r - s;
+ e.top += f - c;
+ } else if (l > 0 && f <= 0) {
+ e.top = s;
+ } else {
+ if (f > l) {
+ e.top = s + r - a.collisionHeight;
+ } else {
+ e.top = s;
+ }
+ }
+ } else if (f > 0) {
+ e.top += f;
+ } else if (l > 0) {
+ e.top -= l;
+ } else {
+ e.top = y(e.top - i, e.top);
+ }
+ j.ui.pos._trigger(e, a, "posCollided", "fitTop");
+ }
+ },
+ flip: {
+ left: function(e, a) {
+ j.ui.pos._trigger(e, a, "posCollide", "flipLeft");
+ var t = a.within, s = t.offset.left + t.scrollLeft, r = t.width, i = t.isWindow ? t.scrollLeft : t.offset.left, f = e.left - a.collisionPosition.marginLeft, l = f - i, c = f + a.collisionWidth - r - i, o = a.my[0] === "left" ? -a.elemWidth : a.my[0] === "right" ? a.elemWidth : 0, n = a.at[0] === "left" ? a.targetWidth : a.at[0] === "right" ? -a.targetWidth : 0, h = -2 * a.offset[0], m, p;
+ if (l < 0) {
+ m = e.left + o + n + h + a.collisionWidth - r - s;
+ if (m < 0 || m < x(l)) {
+ e.left += o + n + h;
+ }
+ } else if (c > 0) {
+ p = e.left - a.collisionPosition.marginLeft + o + n + h - i;
+ if (p > 0 || x(p) < c) {
+ e.left += o + n + h;
+ }
+ }
+ j.ui.pos._trigger(e, a, "posCollided", "flipLeft");
+ },
+ top: function(e, a) {
+ j.ui.pos._trigger(e, a, "posCollide", "flipTop");
+ var t = a.within, s = t.offset.top + t.scrollTop, r = t.height, i = t.isWindow ? t.scrollTop : t.offset.top, f = e.top - a.collisionPosition.marginTop, l = f - i, c = f + a.collisionHeight - r - i, o = a.my[1] === "top", n = o ? -a.elemHeight : a.my[1] === "bottom" ? a.elemHeight : 0, h = a.at[1] === "top" ? a.targetHeight : a.at[1] === "bottom" ? -a.targetHeight : 0, m = -2 * a.offset[1], p, d;
+ if (l < 0) {
+ d = e.top + n + h + m + a.collisionHeight - r - s;
+ if (d < 0 || d < x(l)) {
+ e.top += n + h + m;
+ }
+ } else if (c > 0) {
+ p = e.top - a.collisionPosition.marginTop + n + h + m - i;
+ if (p > 0 || x(p) < c) {
+ e.top += n + h + m;
+ }
+ }
+ j.ui.pos._trigger(e, a, "posCollided", "flipTop");
+ }
+ },
+ flipfit: {
+ left: function() {
+ j.ui.pos.flip.left.apply(this, arguments);
+ j.ui.pos.fit.left.apply(this, arguments);
+ },
+ top: function() {
+ j.ui.pos.flip.top.apply(this, arguments);
+ j.ui.pos.fit.top.apply(this, arguments);
+ }
+ }
+ };
+ (function() {
+ var e, a, t, s, r, i = document.getElementsByTagName("body")[0], f = document.createElement("div");
+ e = document.createElement(i ? "div" : "body");
+ t = {
+ visibility: "hidden",
+ width: 0,
+ height: 0,
+ border: 0,
+ margin: 0,
+ background: "none"
+ };
+ if (i) {
+ j.extend(t, {
+ position: "absolute",
+ left: "-1000px",
+ top: "-1000px"
+ });
+ }
+ for (r in t) {
+ e.style[r] = t[r];
+ }
+ e.appendChild(f);
+ a = i || document.documentElement;
+ a.insertBefore(e, a.firstChild);
+ f.style.cssText = "position: absolute; left: 10.7432222px;";
+ s = j(f).offset().left;
+ j.support.offsetFractions = s > 10 && s < 11;
+ e.innerHTML = "";
+ a.removeChild(e);
+ })();
+ })();
+ var a = j.ui.position;
+});
+
+(function(e) {
+ "use strict";
+ if (typeof define === "function" && define.amd) {
+ define([ "jquery" ], e);
+ } else if (window.jQuery && !window.jQuery.fn.iconpicker) {
+ e(window.jQuery);
+ }
+})(function(c) {
+ "use strict";
+ var f = {
+ isEmpty: function(e) {
+ return e === false || e === "" || e === null || e === undefined;
+ },
+ isEmptyObject: function(e) {
+ return this.isEmpty(e) === true || e.length === 0;
+ },
+ isElement: function(e) {
+ return c(e).length > 0;
+ },
+ isString: function(e) {
+ return typeof e === "string" || e instanceof String;
+ },
+ isArray: function(e) {
+ return c.isArray(e);
+ },
+ inArray: function(e, a) {
+ return c.inArray(e, a) !== -1;
+ },
+ throwError: function(e) {
+ throw "Font Awesome Icon Picker Exception: " + e;
+ }
+ };
+ var t = function(e, a) {
+ this._id = t._idCounter++;
+ this.element = c(e).addClass("iconpicker-element");
+ this._trigger("iconpickerCreate", {
+ iconpickerValue: this.iconpickerValue
+ });
+ this.options = c.extend({}, t.defaultOptions, this.element.data(), a);
+ this.options.templates = c.extend({}, t.defaultOptions.templates, this.options.templates);
+ this.options.originalPlacement = this.options.placement;
+ this.container = f.isElement(this.options.container) ? c(this.options.container) : false;
+ if (this.container === false) {
+ if (this.element.is(".dropdown-toggle")) {
+ this.container = c("~ .dropdown-menu:first", this.element);
+ } else {
+ this.container = this.element.is("input,textarea,button,.btn") ? this.element.parent() : this.element;
+ }
+ }
+ this.container.addClass("iconpicker-container");
+ if (this.isDropdownMenu()) {
+ this.options.placement = "inline";
+ }
+ this.input = this.element.is("input,textarea") ? this.element.addClass("iconpicker-input") : false;
+ if (this.input === false) {
+ this.input = this.container.find(this.options.input);
+ if (!this.input.is("input,textarea")) {
+ this.input = false;
+ }
+ }
+ this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component);
+ if (this.component.length === 0) {
+ this.component = false;
+ } else {
+ this.component.find("i").addClass("iconpicker-component");
+ }
+ this._createPopover();
+ this._createIconpicker();
+ if (this.getAcceptButton().length === 0) {
+ this.options.mustAccept = false;
+ }
+ if (this.isInputGroup()) {
+ this.container.parent().append(this.popover);
+ } else {
+ this.container.append(this.popover);
+ }
+ this._bindElementEvents();
+ this._bindWindowEvents();
+ this.update(this.options.selected);
+ if (this.isInline()) {
+ this.show();
+ }
+ this._trigger("iconpickerCreated", {
+ iconpickerValue: this.iconpickerValue
+ });
+ };
+ t._idCounter = 0;
+ t.defaultOptions = {
+ title: false,
+ selected: false,
+ defaultValue: false,
+ placement: "bottom",
+ collision: "none",
+ animation: true,
+ hideOnSelect: false,
+ showFooter: false,
+ searchInFooter: false,
+ mustAccept: false,
+ selectedCustomClass: "bg-primary",
+ icons: [],
+ fullClassFormatter: function(e) {
+ return e;
+ },
+ input: "input,.iconpicker-input",
+ inputSearch: false,
+ container: false,
+ component: ".input-group-addon,.iconpicker-component",
+ templates: {
+ popover: '',
+ footer: '',
+ buttons: 'Cancel ' + ' Accept ',
+ search: ' ',
+ iconpicker: '',
+ iconpickerItem: ' '
+ }
+ };
+ t.batch = function(e, a) {
+ var t = Array.prototype.slice.call(arguments, 2);
+ return c(e).each(function() {
+ var e = c(this).data("iconpicker");
+ if (!!e) {
+ e[a].apply(e, t);
+ }
+ });
+ };
+ t.prototype = {
+ constructor: t,
+ options: {},
+ _id: 0,
+ _trigger: function(e, a) {
+ a = a || {};
+ this.element.trigger(c.extend({
+ type: e,
+ iconpickerInstance: this
+ }, a));
+ },
+ _createPopover: function() {
+ this.popover = c(this.options.templates.popover);
+ var e = this.popover.find(".popover-title");
+ if (!!this.options.title) {
+ e.append(c('' + this.options.title + "
"));
+ }
+ if (this.hasSeparatedSearchInput() && !this.options.searchInFooter) {
+ e.append(this.options.templates.search);
+ } else if (!this.options.title) {
+ e.remove();
+ }
+ if (this.options.showFooter && !f.isEmpty(this.options.templates.footer)) {
+ var a = c(this.options.templates.footer);
+ if (this.hasSeparatedSearchInput() && this.options.searchInFooter) {
+ a.append(c(this.options.templates.search));
+ }
+ if (!f.isEmpty(this.options.templates.buttons)) {
+ a.append(c(this.options.templates.buttons));
+ }
+ this.popover.append(a);
+ }
+ if (this.options.animation === true) {
+ this.popover.addClass("fade");
+ }
+ return this.popover;
+ },
+ _createIconpicker: function() {
+ var t = this;
+ this.iconpicker = c(this.options.templates.iconpicker);
+ var e = function(e) {
+ var a = c(this);
+ if (a.is("i")) {
+ a = a.parent();
+ }
+ t._trigger("iconpickerSelect", {
+ iconpickerItem: a,
+ iconpickerValue: t.iconpickerValue
+ });
+ if (t.options.mustAccept === false) {
+ t.update(a.data("iconpickerValue"));
+ t._trigger("iconpickerSelected", {
+ iconpickerItem: this,
+ iconpickerValue: t.iconpickerValue
+ });
+ } else {
+ t.update(a.data("iconpickerValue"), true);
+ }
+ if (t.options.hideOnSelect && t.options.mustAccept === false) {
+ t.hide();
+ }
+ };
+ var a = c(this.options.templates.iconpickerItem);
+ var s = [];
+ for (var r in this.options.icons) {
+ if (typeof this.options.icons[r].title === "string") {
+ var i = a.clone();
+ i.find("i").addClass(this.options.fullClassFormatter(this.options.icons[r].title));
+ i.data("iconpickerValue", this.options.icons[r].title).on("click.iconpicker", e);
+ i.attr("title", "." + this.options.icons[r].title);
+ if (this.options.icons[r].searchTerms.length > 0) {
+ var f = "";
+ for (var l = 0; l < this.options.icons[r].searchTerms.length; l++) {
+ f = f + this.options.icons[r].searchTerms[l] + " ";
+ }
+ i.attr("data-search-terms", f);
+ }
+ s.push(i);
+ }
+ }
+ this.iconpicker.find(".iconpicker-items").append(s);
+ this.popover.find(".popover-content").append(this.iconpicker);
+ return this.iconpicker;
+ },
+ _isEventInsideIconpicker: function(e) {
+ var a = c(e.target);
+ if ((!a.hasClass("iconpicker-element") || a.hasClass("iconpicker-element") && !a.is(this.element)) && a.parents(".iconpicker-popover").length === 0) {
+ return false;
+ }
+ return true;
+ },
+ _bindElementEvents: function() {
+ var a = this;
+ this.getSearchInput().on("keyup.iconpicker", function() {
+ a.filter(c(this).val().toLowerCase());
+ });
+ this.getAcceptButton().on("click.iconpicker", function() {
+ var e = a.iconpicker.find(".iconpicker-selected").get(0);
+ a.update(a.iconpickerValue);
+ a._trigger("iconpickerSelected", {
+ iconpickerItem: e,
+ iconpickerValue: a.iconpickerValue
+ });
+ if (!a.isInline()) {
+ a.hide();
+ }
+ });
+ this.getCancelButton().on("click.iconpicker", function() {
+ if (!a.isInline()) {
+ a.hide();
+ }
+ });
+ this.element.on("focus.iconpicker", function(e) {
+ a.show();
+ e.stopPropagation();
+ });
+ if (this.hasComponent()) {
+ this.component.on("click.iconpicker", function() {
+ a.toggle();
+ });
+ }
+ if (this.hasInput()) {
+ this.input.on("keyup.iconpicker", function(e) {
+ if (!f.inArray(e.keyCode, [ 38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86 ])) {
+ a.update();
+ } else {
+ a._updateFormGroupStatus(a.getValid(this.value) !== false);
+ }
+ if (a.options.inputSearch === true) {
+ a.filter(c(this).val().toLowerCase());
+ }
+ });
+ }
+ },
+ _bindWindowEvents: function() {
+ var e = c(window.document);
+ var a = this;
+ var t = ".iconpicker.inst" + this._id;
+ c(window).on("resize.iconpicker" + t + " orientationchange.iconpicker" + t, function(e) {
+ if (a.popover.hasClass("in")) {
+ a.updatePlacement();
+ }
+ });
+ if (!a.isInline()) {
+ e.on("mouseup" + t, function(e) {
+ if (!a._isEventInsideIconpicker(e) && !a.isInline()) {
+ a.hide();
+ }
+ });
+ }
+ },
+ _unbindElementEvents: function() {
+ this.popover.off(".iconpicker");
+ this.element.off(".iconpicker");
+ if (this.hasInput()) {
+ this.input.off(".iconpicker");
+ }
+ if (this.hasComponent()) {
+ this.component.off(".iconpicker");
+ }
+ if (this.hasContainer()) {
+ this.container.off(".iconpicker");
+ }
+ },
+ _unbindWindowEvents: function() {
+ c(window).off(".iconpicker.inst" + this._id);
+ c(window.document).off(".iconpicker.inst" + this._id);
+ },
+ updatePlacement: function(e, a) {
+ e = e || this.options.placement;
+ this.options.placement = e;
+ a = a || this.options.collision;
+ a = a === true ? "flip" : a;
+ var t = {
+ at: "right bottom",
+ my: "right top",
+ of: this.hasInput() && !this.isInputGroup() ? this.input : this.container,
+ collision: a === true ? "flip" : a,
+ within: window
+ };
+ this.popover.removeClass("inline topLeftCorner topLeft top topRight topRightCorner " + "rightTop right rightBottom bottomRight bottomRightCorner " + "bottom bottomLeft bottomLeftCorner leftBottom left leftTop");
+ if (typeof e === "object") {
+ return this.popover.pos(c.extend({}, t, e));
+ }
+ switch (e) {
+ case "inline":
+ {
+ t = false;
+ }
+ break;
+
+ case "topLeftCorner":
+ {
+ t.my = "right bottom";
+ t.at = "left top";
+ }
+ break;
+
+ case "topLeft":
+ {
+ t.my = "left bottom";
+ t.at = "left top";
+ }
+ break;
+
+ case "top":
+ {
+ t.my = "center bottom";
+ t.at = "center top";
+ }
+ break;
+
+ case "topRight":
+ {
+ t.my = "right bottom";
+ t.at = "right top";
+ }
+ break;
+
+ case "topRightCorner":
+ {
+ t.my = "left bottom";
+ t.at = "right top";
+ }
+ break;
+
+ case "rightTop":
+ {
+ t.my = "left bottom";
+ t.at = "right center";
+ }
+ break;
+
+ case "right":
+ {
+ t.my = "left center";
+ t.at = "right center";
+ }
+ break;
+
+ case "rightBottom":
+ {
+ t.my = "left top";
+ t.at = "right center";
+ }
+ break;
+
+ case "bottomRightCorner":
+ {
+ t.my = "left top";
+ t.at = "right bottom";
+ }
+ break;
+
+ case "bottomRight":
+ {
+ t.my = "right top";
+ t.at = "right bottom";
+ }
+ break;
+
+ case "bottom":
+ {
+ t.my = "center top";
+ t.at = "center bottom";
+ }
+ break;
+
+ case "bottomLeft":
+ {
+ t.my = "left top";
+ t.at = "left bottom";
+ }
+ break;
+
+ case "bottomLeftCorner":
+ {
+ t.my = "right top";
+ t.at = "left bottom";
+ }
+ break;
+
+ case "leftBottom":
+ {
+ t.my = "right top";
+ t.at = "left center";
+ }
+ break;
+
+ case "left":
+ {
+ t.my = "right center";
+ t.at = "left center";
+ }
+ break;
+
+ case "leftTop":
+ {
+ t.my = "right bottom";
+ t.at = "left center";
+ }
+ break;
+
+ default:
+ {
+ return false;
+ }
+ break;
+ }
+ this.popover.css({
+ display: this.options.placement === "inline" ? "" : "block"
+ });
+ if (t !== false) {
+ this.popover.pos(t).css("maxWidth", c(window).width() - this.container.offset().left - 5);
+ } else {
+ this.popover.css({
+ top: "auto",
+ right: "auto",
+ bottom: "auto",
+ left: "auto",
+ maxWidth: "none"
+ });
+ }
+ this.popover.addClass(this.options.placement);
+ return true;
+ },
+ _updateComponents: function() {
+ this.iconpicker.find(".iconpicker-item.iconpicker-selected").removeClass("iconpicker-selected " + this.options.selectedCustomClass);
+ if (this.iconpickerValue) {
+ this.iconpicker.find("." + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, ".")).parent().addClass("iconpicker-selected " + this.options.selectedCustomClass);
+ }
+ if (this.hasComponent()) {
+ var e = this.component.find("i");
+ if (e.length > 0) {
+ e.attr("class", this.options.fullClassFormatter(this.iconpickerValue));
+ } else {
+ this.component.html(this.getHtml());
+ }
+ }
+ },
+ _updateFormGroupStatus: function(e) {
+ if (this.hasInput()) {
+ if (e !== false) {
+ this.input.parents(".form-group:first").removeClass("has-error");
+ } else {
+ this.input.parents(".form-group:first").addClass("has-error");
+ }
+ return true;
+ }
+ return false;
+ },
+ getValid: function(e) {
+ if (!f.isString(e)) {
+ e = "";
+ }
+ var a = e === "";
+ e = c.trim(e);
+ var t = false;
+ for (var s = 0; s < this.options.icons.length; s++) {
+ if (this.options.icons[s].title === e) {
+ t = true;
+ break;
+ }
+ }
+ if (t || a) {
+ return e;
+ }
+ return false;
+ },
+ setValue: function(e) {
+ var a = this.getValid(e);
+ if (a !== false) {
+ this.iconpickerValue = a;
+ this._trigger("iconpickerSetValue", {
+ iconpickerValue: a
+ });
+ return this.iconpickerValue;
+ } else {
+ this._trigger("iconpickerInvalid", {
+ iconpickerValue: e
+ });
+ return false;
+ }
+ },
+ getHtml: function() {
+ return ' ';
+ },
+ setSourceValue: function(e) {
+ e = this.setValue(e);
+ if (e !== false && e !== "") {
+ if (this.hasInput()) {
+ this.input.val(this.iconpickerValue);
+ } else {
+ this.element.data("iconpickerValue", this.iconpickerValue);
+ }
+ this._trigger("iconpickerSetSourceValue", {
+ iconpickerValue: e
+ });
+ }
+ return e;
+ },
+ getSourceValue: function(e) {
+ e = e || this.options.defaultValue;
+ var a = e;
+ if (this.hasInput()) {
+ a = this.input.val();
+ } else {
+ a = this.element.data("iconpickerValue");
+ }
+ if (a === undefined || a === "" || a === null || a === false) {
+ a = e;
+ }
+ return a;
+ },
+ hasInput: function() {
+ return this.input !== false;
+ },
+ isInputSearch: function() {
+ return this.hasInput() && this.options.inputSearch === true;
+ },
+ isInputGroup: function() {
+ return this.container.is(".input-group");
+ },
+ isDropdownMenu: function() {
+ return this.container.is(".dropdown-menu");
+ },
+ hasSeparatedSearchInput: function() {
+ return this.options.templates.search !== false && !this.isInputSearch();
+ },
+ hasComponent: function() {
+ return this.component !== false;
+ },
+ hasContainer: function() {
+ return this.container !== false;
+ },
+ getAcceptButton: function() {
+ return this.popover.find(".iconpicker-btn-accept");
+ },
+ getCancelButton: function() {
+ return this.popover.find(".iconpicker-btn-cancel");
+ },
+ getSearchInput: function() {
+ return this.popover.find(".iconpicker-search");
+ },
+ filter: function(r) {
+ if (f.isEmpty(r)) {
+ this.iconpicker.find(".iconpicker-item").show();
+ return c(false);
+ } else {
+ var i = [];
+ this.iconpicker.find(".iconpicker-item").each(function() {
+ var e = c(this);
+ var a = e.attr("title").toLowerCase();
+ var t = e.attr("data-search-terms") ? e.attr("data-search-terms").toLowerCase() : "";
+ a = a + " " + t;
+ var s = false;
+ try {
+ s = new RegExp("(^|\\W)" + r, "g");
+ } catch (e) {
+ s = false;
+ }
+ if (s !== false && a.match(s)) {
+ i.push(e);
+ e.show();
+ } else {
+ e.hide();
+ }
+ });
+ return i;
+ }
+ },
+ show: function() {
+ if (this.popover.hasClass("in")) {
+ return false;
+ }
+ c.iconpicker.batch(c(".iconpicker-popover.in:not(.inline)").not(this.popover), "hide");
+ this._trigger("iconpickerShow", {
+ iconpickerValue: this.iconpickerValue
+ });
+ this.updatePlacement();
+ this.popover.addClass("in");
+ setTimeout(c.proxy(function() {
+ this.popover.css("display", this.isInline() ? "" : "block");
+ this._trigger("iconpickerShown", {
+ iconpickerValue: this.iconpickerValue
+ });
+ }, this), this.options.animation ? 300 : 1);
+ },
+ hide: function() {
+ if (!this.popover.hasClass("in")) {
+ return false;
+ }
+ this._trigger("iconpickerHide", {
+ iconpickerValue: this.iconpickerValue
+ });
+ this.popover.removeClass("in");
+ setTimeout(c.proxy(function() {
+ this.popover.css("display", "none");
+ this.getSearchInput().val("");
+ this.filter("");
+ this._trigger("iconpickerHidden", {
+ iconpickerValue: this.iconpickerValue
+ });
+ }, this), this.options.animation ? 300 : 1);
+ },
+ toggle: function() {
+ if (this.popover.is(":visible")) {
+ this.hide();
+ } else {
+ this.show(true);
+ }
+ },
+ update: function(e, a) {
+ e = e ? e : this.getSourceValue(this.iconpickerValue);
+ this._trigger("iconpickerUpdate", {
+ iconpickerValue: this.iconpickerValue
+ });
+ if (a === true) {
+ e = this.setValue(e);
+ } else {
+ e = this.setSourceValue(e);
+ this._updateFormGroupStatus(e !== false);
+ }
+ if (e !== false) {
+ this._updateComponents();
+ }
+ this._trigger("iconpickerUpdated", {
+ iconpickerValue: this.iconpickerValue
+ });
+ return e;
+ },
+ destroy: function() {
+ this._trigger("iconpickerDestroy", {
+ iconpickerValue: this.iconpickerValue
+ });
+ this.element.removeData("iconpicker").removeData("iconpickerValue").removeClass("iconpicker-element");
+ this._unbindElementEvents();
+ this._unbindWindowEvents();
+ c(this.popover).remove();
+ this._trigger("iconpickerDestroyed", {
+ iconpickerValue: this.iconpickerValue
+ });
+ },
+ disable: function() {
+ if (this.hasInput()) {
+ this.input.prop("disabled", true);
+ return true;
+ }
+ return false;
+ },
+ enable: function() {
+ if (this.hasInput()) {
+ this.input.prop("disabled", false);
+ return true;
+ }
+ return false;
+ },
+ isDisabled: function() {
+ if (this.hasInput()) {
+ return this.input.prop("disabled") === true;
+ }
+ return false;
+ },
+ isInline: function() {
+ return this.options.placement === "inline" || this.popover.hasClass("inline");
+ }
+ };
+ c.iconpicker = t;
+ c.fn.iconpicker = function(a) {
+ return this.each(function() {
+ var e = c(this);
+ if (!e.data("iconpicker")) {
+ e.data("iconpicker", new t(this, typeof a === "object" ? a : {}));
+ }
+ });
+ };
+ t.defaultOptions = c.extend(t.defaultOptions, {
+ icons: [ {
+ title: "fab fa-500px",
+ searchTerms: []
+ }, {
+ title: "fab fa-accessible-icon",
+ searchTerms: [ "accessibility", "handicap", "person", "wheelchair", "wheelchair-alt" ]
+ }, {
+ title: "fab fa-accusoft",
+ searchTerms: []
+ }, {
+ title: "fab fa-acquisitions-incorporated",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ]
+ }, {
+ title: "fas fa-ad",
+ searchTerms: []
+ }, {
+ title: "fas fa-address-book",
+ searchTerms: []
+ }, {
+ title: "far fa-address-book",
+ searchTerms: []
+ }, {
+ title: "fas fa-address-card",
+ searchTerms: []
+ }, {
+ title: "far fa-address-card",
+ searchTerms: []
+ }, {
+ title: "fas fa-adjust",
+ searchTerms: [ "contrast" ]
+ }, {
+ title: "fab fa-adn",
+ searchTerms: []
+ }, {
+ title: "fab fa-adversal",
+ searchTerms: []
+ }, {
+ title: "fab fa-affiliatetheme",
+ searchTerms: []
+ }, {
+ title: "fas fa-air-freshener",
+ searchTerms: []
+ }, {
+ title: "fab fa-algolia",
+ searchTerms: []
+ }, {
+ title: "fas fa-align-center",
+ searchTerms: [ "middle", "text" ]
+ }, {
+ title: "fas fa-align-justify",
+ searchTerms: [ "text" ]
+ }, {
+ title: "fas fa-align-left",
+ searchTerms: [ "text" ]
+ }, {
+ title: "fas fa-align-right",
+ searchTerms: [ "text" ]
+ }, {
+ title: "fab fa-alipay",
+ searchTerms: []
+ }, {
+ title: "fas fa-allergies",
+ searchTerms: [ "freckles", "hand", "intolerances", "pox", "spots" ]
+ }, {
+ title: "fab fa-amazon",
+ searchTerms: []
+ }, {
+ title: "fab fa-amazon-pay",
+ searchTerms: []
+ }, {
+ title: "fas fa-ambulance",
+ searchTerms: [ "help", "machine", "support", "vehicle" ]
+ }, {
+ title: "fas fa-american-sign-language-interpreting",
+ searchTerms: []
+ }, {
+ title: "fab fa-amilia",
+ searchTerms: []
+ }, {
+ title: "fas fa-anchor",
+ searchTerms: [ "link" ]
+ }, {
+ title: "fab fa-android",
+ searchTerms: [ "robot" ]
+ }, {
+ title: "fab fa-angellist",
+ searchTerms: []
+ }, {
+ title: "fas fa-angle-double-down",
+ searchTerms: [ "arrows" ]
+ }, {
+ title: "fas fa-angle-double-left",
+ searchTerms: [ "arrows", "back", "laquo", "previous", "quote" ]
+ }, {
+ title: "fas fa-angle-double-right",
+ searchTerms: [ "arrows", "forward", "next", "quote", "raquo" ]
+ }, {
+ title: "fas fa-angle-double-up",
+ searchTerms: [ "arrows" ]
+ }, {
+ title: "fas fa-angle-down",
+ searchTerms: [ "arrow" ]
+ }, {
+ title: "fas fa-angle-left",
+ searchTerms: [ "arrow", "back", "previous" ]
+ }, {
+ title: "fas fa-angle-right",
+ searchTerms: [ "arrow", "forward", "next" ]
+ }, {
+ title: "fas fa-angle-up",
+ searchTerms: [ "arrow" ]
+ }, {
+ title: "fas fa-angry",
+ searchTerms: [ "disapprove", "emoticon", "face", "mad", "upset" ]
+ }, {
+ title: "far fa-angry",
+ searchTerms: [ "disapprove", "emoticon", "face", "mad", "upset" ]
+ }, {
+ title: "fab fa-angrycreative",
+ searchTerms: []
+ }, {
+ title: "fab fa-angular",
+ searchTerms: []
+ }, {
+ title: "fas fa-ankh",
+ searchTerms: [ "amulet", "copper", "coptic christianity", "copts", "crux ansata", "egyptian", "venus" ]
+ }, {
+ title: "fab fa-app-store",
+ searchTerms: []
+ }, {
+ title: "fab fa-app-store-ios",
+ searchTerms: []
+ }, {
+ title: "fab fa-apper",
+ searchTerms: []
+ }, {
+ title: "fab fa-apple",
+ searchTerms: [ "food", "fruit", "mac", "osx" ]
+ }, {
+ title: "fas fa-apple-alt",
+ searchTerms: [ "fall", "food", "fruit", "fuji", "macintosh", "seasonal" ]
+ }, {
+ title: "fab fa-apple-pay",
+ searchTerms: []
+ }, {
+ title: "fas fa-archive",
+ searchTerms: [ "box", "package", "storage" ]
+ }, {
+ title: "fas fa-archway",
+ searchTerms: [ "arc", "monument", "road", "street" ]
+ }, {
+ title: "fas fa-arrow-alt-circle-down",
+ searchTerms: [ "arrow-circle-o-down", "download" ]
+ }, {
+ title: "far fa-arrow-alt-circle-down",
+ searchTerms: [ "arrow-circle-o-down", "download" ]
+ }, {
+ title: "fas fa-arrow-alt-circle-left",
+ searchTerms: [ "arrow-circle-o-left", "back", "previous" ]
+ }, {
+ title: "far fa-arrow-alt-circle-left",
+ searchTerms: [ "arrow-circle-o-left", "back", "previous" ]
+ }, {
+ title: "fas fa-arrow-alt-circle-right",
+ searchTerms: [ "arrow-circle-o-right", "forward", "next" ]
+ }, {
+ title: "far fa-arrow-alt-circle-right",
+ searchTerms: [ "arrow-circle-o-right", "forward", "next" ]
+ }, {
+ title: "fas fa-arrow-alt-circle-up",
+ searchTerms: [ "arrow-circle-o-up" ]
+ }, {
+ title: "far fa-arrow-alt-circle-up",
+ searchTerms: [ "arrow-circle-o-up" ]
+ }, {
+ title: "fas fa-arrow-circle-down",
+ searchTerms: [ "download" ]
+ }, {
+ title: "fas fa-arrow-circle-left",
+ searchTerms: [ "back", "previous" ]
+ }, {
+ title: "fas fa-arrow-circle-right",
+ searchTerms: [ "forward", "next" ]
+ }, {
+ title: "fas fa-arrow-circle-up",
+ searchTerms: []
+ }, {
+ title: "fas fa-arrow-down",
+ searchTerms: [ "download" ]
+ }, {
+ title: "fas fa-arrow-left",
+ searchTerms: [ "back", "previous" ]
+ }, {
+ title: "fas fa-arrow-right",
+ searchTerms: [ "forward", "next" ]
+ }, {
+ title: "fas fa-arrow-up",
+ searchTerms: []
+ }, {
+ title: "fas fa-arrows-alt",
+ searchTerms: [ "arrow", "arrows", "bigger", "enlarge", "expand", "fullscreen", "move", "position", "reorder", "resize" ]
+ }, {
+ title: "fas fa-arrows-alt-h",
+ searchTerms: [ "arrows-h", "resize" ]
+ }, {
+ title: "fas fa-arrows-alt-v",
+ searchTerms: [ "arrows-v", "resize" ]
+ }, {
+ title: "fas fa-assistive-listening-systems",
+ searchTerms: []
+ }, {
+ title: "fas fa-asterisk",
+ searchTerms: [ "details" ]
+ }, {
+ title: "fab fa-asymmetrik",
+ searchTerms: []
+ }, {
+ title: "fas fa-at",
+ searchTerms: [ "e-mail", "email" ]
+ }, {
+ title: "fas fa-atlas",
+ searchTerms: [ "book", "directions", "geography", "map", "wayfinding" ]
+ }, {
+ title: "fas fa-atom",
+ searchTerms: [ "atheism", "chemistry", "science" ]
+ }, {
+ title: "fab fa-audible",
+ searchTerms: []
+ }, {
+ title: "fas fa-audio-description",
+ searchTerms: []
+ }, {
+ title: "fab fa-autoprefixer",
+ searchTerms: []
+ }, {
+ title: "fab fa-avianex",
+ searchTerms: []
+ }, {
+ title: "fab fa-aviato",
+ searchTerms: []
+ }, {
+ title: "fas fa-award",
+ searchTerms: [ "honor", "praise", "prize", "recognition", "ribbon" ]
+ }, {
+ title: "fab fa-aws",
+ searchTerms: []
+ }, {
+ title: "fas fa-backspace",
+ searchTerms: [ "command", "delete", "keyboard", "undo" ]
+ }, {
+ title: "fas fa-backward",
+ searchTerms: [ "previous", "rewind" ]
+ }, {
+ title: "fas fa-balance-scale",
+ searchTerms: [ "balanced", "justice", "legal", "measure", "weight" ]
+ }, {
+ title: "fas fa-ban",
+ searchTerms: [ "abort", "ban", "block", "cancel", "delete", "hide", "prohibit", "remove", "stop", "trash" ]
+ }, {
+ title: "fas fa-band-aid",
+ searchTerms: [ "bandage", "boo boo", "ouch" ]
+ }, {
+ title: "fab fa-bandcamp",
+ searchTerms: []
+ }, {
+ title: "fas fa-barcode",
+ searchTerms: [ "scan" ]
+ }, {
+ title: "fas fa-bars",
+ searchTerms: [ "checklist", "drag", "hamburger", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "todo", "ul" ]
+ }, {
+ title: "fas fa-baseball-ball",
+ searchTerms: []
+ }, {
+ title: "fas fa-basketball-ball",
+ searchTerms: []
+ }, {
+ title: "fas fa-bath",
+ searchTerms: []
+ }, {
+ title: "fas fa-battery-empty",
+ searchTerms: [ "power", "status" ]
+ }, {
+ title: "fas fa-battery-full",
+ searchTerms: [ "power", "status" ]
+ }, {
+ title: "fas fa-battery-half",
+ searchTerms: [ "power", "status" ]
+ }, {
+ title: "fas fa-battery-quarter",
+ searchTerms: [ "power", "status" ]
+ }, {
+ title: "fas fa-battery-three-quarters",
+ searchTerms: [ "power", "status" ]
+ }, {
+ title: "fas fa-bed",
+ searchTerms: [ "lodging", "sleep", "travel" ]
+ }, {
+ title: "fas fa-beer",
+ searchTerms: [ "alcohol", "bar", "beverage", "drink", "liquor", "mug", "stein" ]
+ }, {
+ title: "fab fa-behance",
+ searchTerms: []
+ }, {
+ title: "fab fa-behance-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-bell",
+ searchTerms: [ "alert", "notification", "reminder" ]
+ }, {
+ title: "far fa-bell",
+ searchTerms: [ "alert", "notification", "reminder" ]
+ }, {
+ title: "fas fa-bell-slash",
+ searchTerms: []
+ }, {
+ title: "far fa-bell-slash",
+ searchTerms: []
+ }, {
+ title: "fas fa-bezier-curve",
+ searchTerms: [ "curves", "illustrator", "lines", "path", "vector" ]
+ }, {
+ title: "fas fa-bible",
+ searchTerms: [ "book", "catholicism", "christianity" ]
+ }, {
+ title: "fas fa-bicycle",
+ searchTerms: [ "bike", "gears", "transportation", "vehicle" ]
+ }, {
+ title: "fab fa-bimobject",
+ searchTerms: []
+ }, {
+ title: "fas fa-binoculars",
+ searchTerms: []
+ }, {
+ title: "fas fa-birthday-cake",
+ searchTerms: []
+ }, {
+ title: "fab fa-bitbucket",
+ searchTerms: [ "bitbucket-square", "git" ]
+ }, {
+ title: "fab fa-bitcoin",
+ searchTerms: []
+ }, {
+ title: "fab fa-bity",
+ searchTerms: []
+ }, {
+ title: "fab fa-black-tie",
+ searchTerms: []
+ }, {
+ title: "fab fa-blackberry",
+ searchTerms: []
+ }, {
+ title: "fas fa-blender",
+ searchTerms: []
+ }, {
+ title: "fas fa-blender-phone",
+ searchTerms: [ "appliance", "fantasy", "silly" ]
+ }, {
+ title: "fas fa-blind",
+ searchTerms: []
+ }, {
+ title: "fab fa-blogger",
+ searchTerms: []
+ }, {
+ title: "fab fa-blogger-b",
+ searchTerms: []
+ }, {
+ title: "fab fa-bluetooth",
+ searchTerms: []
+ }, {
+ title: "fab fa-bluetooth-b",
+ searchTerms: []
+ }, {
+ title: "fas fa-bold",
+ searchTerms: []
+ }, {
+ title: "fas fa-bolt",
+ searchTerms: [ "electricity", "lightning", "weather", "zap" ]
+ }, {
+ title: "fas fa-bomb",
+ searchTerms: []
+ }, {
+ title: "fas fa-bone",
+ searchTerms: []
+ }, {
+ title: "fas fa-bong",
+ searchTerms: [ "aparatus", "cannabis", "marijuana", "pipe", "smoke", "smoking" ]
+ }, {
+ title: "fas fa-book",
+ searchTerms: [ "documentation", "read" ]
+ }, {
+ title: "fas fa-book-dead",
+ searchTerms: [ "Dungeons & Dragons", "crossbones", "d&d", "dark arts", "death", "dnd", "documentation", "evil", "fantasy", "halloween", "holiday", "read", "skull", "spell" ]
+ }, {
+ title: "fas fa-book-open",
+ searchTerms: [ "flyer", "notebook", "open book", "pamphlet", "reading" ]
+ }, {
+ title: "fas fa-book-reader",
+ searchTerms: [ "library" ]
+ }, {
+ title: "fas fa-bookmark",
+ searchTerms: [ "save" ]
+ }, {
+ title: "far fa-bookmark",
+ searchTerms: [ "save" ]
+ }, {
+ title: "fas fa-bowling-ball",
+ searchTerms: []
+ }, {
+ title: "fas fa-box",
+ searchTerms: [ "package" ]
+ }, {
+ title: "fas fa-box-open",
+ searchTerms: []
+ }, {
+ title: "fas fa-boxes",
+ searchTerms: []
+ }, {
+ title: "fas fa-braille",
+ searchTerms: []
+ }, {
+ title: "fas fa-brain",
+ searchTerms: [ "cerebellum", "gray matter", "intellect", "medulla oblongata", "mind", "noodle", "wit" ]
+ }, {
+ title: "fas fa-briefcase",
+ searchTerms: [ "bag", "business", "luggage", "office", "work" ]
+ }, {
+ title: "fas fa-briefcase-medical",
+ searchTerms: [ "health briefcase" ]
+ }, {
+ title: "fas fa-broadcast-tower",
+ searchTerms: [ "airwaves", "radio", "waves" ]
+ }, {
+ title: "fas fa-broom",
+ searchTerms: [ "clean", "firebolt", "fly", "halloween", "holiday", "nimbus 2000", "quidditch", "sweep", "witch" ]
+ }, {
+ title: "fas fa-brush",
+ searchTerms: [ "bristles", "color", "handle", "painting" ]
+ }, {
+ title: "fab fa-btc",
+ searchTerms: []
+ }, {
+ title: "fas fa-bug",
+ searchTerms: [ "insect", "report" ]
+ }, {
+ title: "fas fa-building",
+ searchTerms: [ "apartment", "business", "company", "office", "work" ]
+ }, {
+ title: "far fa-building",
+ searchTerms: [ "apartment", "business", "company", "office", "work" ]
+ }, {
+ title: "fas fa-bullhorn",
+ searchTerms: [ "announcement", "broadcast", "louder", "megaphone", "share" ]
+ }, {
+ title: "fas fa-bullseye",
+ searchTerms: [ "target" ]
+ }, {
+ title: "fas fa-burn",
+ searchTerms: [ "energy" ]
+ }, {
+ title: "fab fa-buromobelexperte",
+ searchTerms: []
+ }, {
+ title: "fas fa-bus",
+ searchTerms: [ "machine", "public transportation", "transportation", "vehicle" ]
+ }, {
+ title: "fas fa-bus-alt",
+ searchTerms: [ "machine", "public transportation", "transportation", "vehicle" ]
+ }, {
+ title: "fas fa-business-time",
+ searchTerms: [ "briefcase", "business socks", "clock", "flight of the conchords", "wednesday" ]
+ }, {
+ title: "fab fa-buysellads",
+ searchTerms: []
+ }, {
+ title: "fas fa-calculator",
+ searchTerms: []
+ }, {
+ title: "fas fa-calendar",
+ searchTerms: [ "calendar-o", "date", "event", "schedule", "time", "when" ]
+ }, {
+ title: "far fa-calendar",
+ searchTerms: [ "calendar-o", "date", "event", "schedule", "time", "when" ]
+ }, {
+ title: "fas fa-calendar-alt",
+ searchTerms: [ "calendar", "date", "event", "schedule", "time", "when" ]
+ }, {
+ title: "far fa-calendar-alt",
+ searchTerms: [ "calendar", "date", "event", "schedule", "time", "when" ]
+ }, {
+ title: "fas fa-calendar-check",
+ searchTerms: [ "accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo" ]
+ }, {
+ title: "far fa-calendar-check",
+ searchTerms: [ "accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo" ]
+ }, {
+ title: "fas fa-calendar-minus",
+ searchTerms: [ "delete", "negative", "remove" ]
+ }, {
+ title: "far fa-calendar-minus",
+ searchTerms: [ "delete", "negative", "remove" ]
+ }, {
+ title: "fas fa-calendar-plus",
+ searchTerms: [ "add", "create", "new", "positive" ]
+ }, {
+ title: "far fa-calendar-plus",
+ searchTerms: [ "add", "create", "new", "positive" ]
+ }, {
+ title: "fas fa-calendar-times",
+ searchTerms: [ "archive", "delete", "remove", "x" ]
+ }, {
+ title: "far fa-calendar-times",
+ searchTerms: [ "archive", "delete", "remove", "x" ]
+ }, {
+ title: "fas fa-camera",
+ searchTerms: [ "photo", "picture", "record" ]
+ }, {
+ title: "fas fa-camera-retro",
+ searchTerms: [ "photo", "picture", "record" ]
+ }, {
+ title: "fas fa-campground",
+ searchTerms: [ "camping", "fall", "outdoors", "seasonal", "tent" ]
+ }, {
+ title: "fas fa-cannabis",
+ searchTerms: [ "bud", "chronic", "drugs", "endica", "endo", "ganja", "marijuana", "mary jane", "pot", "reefer", "sativa", "spliff", "weed", "whacky-tabacky" ]
+ }, {
+ title: "fas fa-capsules",
+ searchTerms: [ "drugs", "medicine" ]
+ }, {
+ title: "fas fa-car",
+ searchTerms: [ "machine", "transportation", "vehicle" ]
+ }, {
+ title: "fas fa-car-alt",
+ searchTerms: []
+ }, {
+ title: "fas fa-car-battery",
+ searchTerms: []
+ }, {
+ title: "fas fa-car-crash",
+ searchTerms: []
+ }, {
+ title: "fas fa-car-side",
+ searchTerms: []
+ }, {
+ title: "fas fa-caret-down",
+ searchTerms: [ "arrow", "dropdown", "menu", "more", "triangle down" ]
+ }, {
+ title: "fas fa-caret-left",
+ searchTerms: [ "arrow", "back", "previous", "triangle left" ]
+ }, {
+ title: "fas fa-caret-right",
+ searchTerms: [ "arrow", "forward", "next", "triangle right" ]
+ }, {
+ title: "fas fa-caret-square-down",
+ searchTerms: [ "caret-square-o-down", "dropdown", "menu", "more" ]
+ }, {
+ title: "far fa-caret-square-down",
+ searchTerms: [ "caret-square-o-down", "dropdown", "menu", "more" ]
+ }, {
+ title: "fas fa-caret-square-left",
+ searchTerms: [ "back", "caret-square-o-left", "previous" ]
+ }, {
+ title: "far fa-caret-square-left",
+ searchTerms: [ "back", "caret-square-o-left", "previous" ]
+ }, {
+ title: "fas fa-caret-square-right",
+ searchTerms: [ "caret-square-o-right", "forward", "next" ]
+ }, {
+ title: "far fa-caret-square-right",
+ searchTerms: [ "caret-square-o-right", "forward", "next" ]
+ }, {
+ title: "fas fa-caret-square-up",
+ searchTerms: [ "caret-square-o-up" ]
+ }, {
+ title: "far fa-caret-square-up",
+ searchTerms: [ "caret-square-o-up" ]
+ }, {
+ title: "fas fa-caret-up",
+ searchTerms: [ "arrow", "triangle up" ]
+ }, {
+ title: "fas fa-cart-arrow-down",
+ searchTerms: [ "shopping" ]
+ }, {
+ title: "fas fa-cart-plus",
+ searchTerms: [ "add", "create", "new", "positive", "shopping" ]
+ }, {
+ title: "fas fa-cat",
+ searchTerms: [ "feline", "halloween", "holiday", "kitten", "kitty", "meow", "pet" ]
+ }, {
+ title: "fab fa-cc-amazon-pay",
+ searchTerms: []
+ }, {
+ title: "fab fa-cc-amex",
+ searchTerms: [ "amex" ]
+ }, {
+ title: "fab fa-cc-apple-pay",
+ searchTerms: []
+ }, {
+ title: "fab fa-cc-diners-club",
+ searchTerms: []
+ }, {
+ title: "fab fa-cc-discover",
+ searchTerms: []
+ }, {
+ title: "fab fa-cc-jcb",
+ searchTerms: []
+ }, {
+ title: "fab fa-cc-mastercard",
+ searchTerms: []
+ }, {
+ title: "fab fa-cc-paypal",
+ searchTerms: []
+ }, {
+ title: "fab fa-cc-stripe",
+ searchTerms: []
+ }, {
+ title: "fab fa-cc-visa",
+ searchTerms: []
+ }, {
+ title: "fab fa-centercode",
+ searchTerms: []
+ }, {
+ title: "fas fa-certificate",
+ searchTerms: [ "badge", "star" ]
+ }, {
+ title: "fas fa-chair",
+ searchTerms: [ "furniture", "seat" ]
+ }, {
+ title: "fas fa-chalkboard",
+ searchTerms: [ "blackboard", "learning", "school", "teaching", "whiteboard", "writing" ]
+ }, {
+ title: "fas fa-chalkboard-teacher",
+ searchTerms: [ "blackboard", "instructor", "learning", "professor", "school", "whiteboard", "writing" ]
+ }, {
+ title: "fas fa-charging-station",
+ searchTerms: []
+ }, {
+ title: "fas fa-chart-area",
+ searchTerms: [ "analytics", "area-chart", "graph" ]
+ }, {
+ title: "fas fa-chart-bar",
+ searchTerms: [ "analytics", "bar-chart", "graph" ]
+ }, {
+ title: "far fa-chart-bar",
+ searchTerms: [ "analytics", "bar-chart", "graph" ]
+ }, {
+ title: "fas fa-chart-line",
+ searchTerms: [ "activity", "analytics", "dashboard", "graph", "line-chart" ]
+ }, {
+ title: "fas fa-chart-pie",
+ searchTerms: [ "analytics", "graph", "pie-chart" ]
+ }, {
+ title: "fas fa-check",
+ searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo", "yes" ]
+ }, {
+ title: "fas fa-check-circle",
+ searchTerms: [ "accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ]
+ }, {
+ title: "far fa-check-circle",
+ searchTerms: [ "accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ]
+ }, {
+ title: "fas fa-check-double",
+ searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo" ]
+ }, {
+ title: "fas fa-check-square",
+ searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ]
+ }, {
+ title: "far fa-check-square",
+ searchTerms: [ "accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes" ]
+ }, {
+ title: "fas fa-chess",
+ searchTerms: []
+ }, {
+ title: "fas fa-chess-bishop",
+ searchTerms: []
+ }, {
+ title: "fas fa-chess-board",
+ searchTerms: []
+ }, {
+ title: "fas fa-chess-king",
+ searchTerms: []
+ }, {
+ title: "fas fa-chess-knight",
+ searchTerms: []
+ }, {
+ title: "fas fa-chess-pawn",
+ searchTerms: []
+ }, {
+ title: "fas fa-chess-queen",
+ searchTerms: []
+ }, {
+ title: "fas fa-chess-rook",
+ searchTerms: []
+ }, {
+ title: "fas fa-chevron-circle-down",
+ searchTerms: [ "arrow", "dropdown", "menu", "more" ]
+ }, {
+ title: "fas fa-chevron-circle-left",
+ searchTerms: [ "arrow", "back", "previous" ]
+ }, {
+ title: "fas fa-chevron-circle-right",
+ searchTerms: [ "arrow", "forward", "next" ]
+ }, {
+ title: "fas fa-chevron-circle-up",
+ searchTerms: [ "arrow" ]
+ }, {
+ title: "fas fa-chevron-down",
+ searchTerms: []
+ }, {
+ title: "fas fa-chevron-left",
+ searchTerms: [ "back", "bracket", "previous" ]
+ }, {
+ title: "fas fa-chevron-right",
+ searchTerms: [ "bracket", "forward", "next" ]
+ }, {
+ title: "fas fa-chevron-up",
+ searchTerms: []
+ }, {
+ title: "fas fa-child",
+ searchTerms: []
+ }, {
+ title: "fab fa-chrome",
+ searchTerms: [ "browser" ]
+ }, {
+ title: "fas fa-church",
+ searchTerms: [ "building", "community", "religion" ]
+ }, {
+ title: "fas fa-circle",
+ searchTerms: [ "circle-thin", "dot", "notification" ]
+ }, {
+ title: "far fa-circle",
+ searchTerms: [ "circle-thin", "dot", "notification" ]
+ }, {
+ title: "fas fa-circle-notch",
+ searchTerms: [ "circle-o-notch" ]
+ }, {
+ title: "fas fa-city",
+ searchTerms: [ "buildings", "busy", "skyscrapers", "urban", "windows" ]
+ }, {
+ title: "fas fa-clipboard",
+ searchTerms: [ "paste" ]
+ }, {
+ title: "far fa-clipboard",
+ searchTerms: [ "paste" ]
+ }, {
+ title: "fas fa-clipboard-check",
+ searchTerms: [ "accept", "agree", "confirm", "done", "ok", "select", "success", "todo", "yes" ]
+ }, {
+ title: "fas fa-clipboard-list",
+ searchTerms: [ "checklist", "completed", "done", "finished", "intinerary", "ol", "schedule", "todo", "ul" ]
+ }, {
+ title: "fas fa-clock",
+ searchTerms: [ "date", "late", "schedule", "timer", "timestamp", "watch" ]
+ }, {
+ title: "far fa-clock",
+ searchTerms: [ "date", "late", "schedule", "timer", "timestamp", "watch" ]
+ }, {
+ title: "fas fa-clone",
+ searchTerms: [ "copy", "duplicate" ]
+ }, {
+ title: "far fa-clone",
+ searchTerms: [ "copy", "duplicate" ]
+ }, {
+ title: "fas fa-closed-captioning",
+ searchTerms: [ "cc" ]
+ }, {
+ title: "far fa-closed-captioning",
+ searchTerms: [ "cc" ]
+ }, {
+ title: "fas fa-cloud",
+ searchTerms: [ "save" ]
+ }, {
+ title: "fas fa-cloud-download-alt",
+ searchTerms: [ "import" ]
+ }, {
+ title: "fas fa-cloud-meatball",
+ searchTerms: []
+ }, {
+ title: "fas fa-cloud-moon",
+ searchTerms: [ "crescent", "evening", "halloween", "holiday", "lunar", "night", "sky" ]
+ }, {
+ title: "fas fa-cloud-moon-rain",
+ searchTerms: []
+ }, {
+ title: "fas fa-cloud-rain",
+ searchTerms: [ "precipitation" ]
+ }, {
+ title: "fas fa-cloud-showers-heavy",
+ searchTerms: [ "precipitation", "rain", "storm" ]
+ }, {
+ title: "fas fa-cloud-sun",
+ searchTerms: [ "day", "daytime", "fall", "outdoors", "seasonal" ]
+ }, {
+ title: "fas fa-cloud-sun-rain",
+ searchTerms: []
+ }, {
+ title: "fas fa-cloud-upload-alt",
+ searchTerms: [ "cloud-upload" ]
+ }, {
+ title: "fab fa-cloudscale",
+ searchTerms: []
+ }, {
+ title: "fab fa-cloudsmith",
+ searchTerms: []
+ }, {
+ title: "fab fa-cloudversify",
+ searchTerms: []
+ }, {
+ title: "fas fa-cocktail",
+ searchTerms: [ "alcohol", "beverage", "drink" ]
+ }, {
+ title: "fas fa-code",
+ searchTerms: [ "brackets", "html" ]
+ }, {
+ title: "fas fa-code-branch",
+ searchTerms: [ "branch", "code-fork", "fork", "git", "github", "rebase", "svn", "vcs", "version" ]
+ }, {
+ title: "fab fa-codepen",
+ searchTerms: []
+ }, {
+ title: "fab fa-codiepie",
+ searchTerms: []
+ }, {
+ title: "fas fa-coffee",
+ searchTerms: [ "beverage", "breakfast", "cafe", "drink", "fall", "morning", "mug", "seasonal", "tea" ]
+ }, {
+ title: "fas fa-cog",
+ searchTerms: [ "settings" ]
+ }, {
+ title: "fas fa-cogs",
+ searchTerms: [ "gears", "settings" ]
+ }, {
+ title: "fas fa-coins",
+ searchTerms: []
+ }, {
+ title: "fas fa-columns",
+ searchTerms: [ "dashboard", "panes", "split" ]
+ }, {
+ title: "fas fa-comment",
+ searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
+ }, {
+ title: "far fa-comment",
+ searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
+ }, {
+ title: "fas fa-comment-alt",
+ searchTerms: [ "bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
+ }, {
+ title: "far fa-comment-alt",
+ searchTerms: [ "bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
+ }, {
+ title: "fas fa-comment-dollar",
+ searchTerms: []
+ }, {
+ title: "fas fa-comment-dots",
+ searchTerms: []
+ }, {
+ title: "far fa-comment-dots",
+ searchTerms: []
+ }, {
+ title: "fas fa-comment-slash",
+ searchTerms: []
+ }, {
+ title: "fas fa-comments",
+ searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
+ }, {
+ title: "far fa-comments",
+ searchTerms: [ "bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting" ]
+ }, {
+ title: "fas fa-comments-dollar",
+ searchTerms: []
+ }, {
+ title: "fas fa-compact-disc",
+ searchTerms: [ "bluray", "cd", "disc", "media" ]
+ }, {
+ title: "fas fa-compass",
+ searchTerms: [ "directory", "location", "menu", "safari" ]
+ }, {
+ title: "far fa-compass",
+ searchTerms: [ "directory", "location", "menu", "safari" ]
+ }, {
+ title: "fas fa-compress",
+ searchTerms: [ "collapse", "combine", "contract", "merge", "smaller" ]
+ }, {
+ title: "fas fa-concierge-bell",
+ searchTerms: [ "attention", "hotel", "service", "support" ]
+ }, {
+ title: "fab fa-connectdevelop",
+ searchTerms: []
+ }, {
+ title: "fab fa-contao",
+ searchTerms: []
+ }, {
+ title: "fas fa-cookie",
+ searchTerms: [ "baked good", "chips", "food", "snack", "sweet", "treat" ]
+ }, {
+ title: "fas fa-cookie-bite",
+ searchTerms: [ "baked good", "bitten", "chips", "eating", "food", "snack", "sweet", "treat" ]
+ }, {
+ title: "fas fa-copy",
+ searchTerms: [ "clone", "duplicate", "file", "files-o" ]
+ }, {
+ title: "far fa-copy",
+ searchTerms: [ "clone", "duplicate", "file", "files-o" ]
+ }, {
+ title: "fas fa-copyright",
+ searchTerms: []
+ }, {
+ title: "far fa-copyright",
+ searchTerms: []
+ }, {
+ title: "fas fa-couch",
+ searchTerms: [ "furniture", "sofa" ]
+ }, {
+ title: "fab fa-cpanel",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-by",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-nc",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-nc-eu",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-nc-jp",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-nd",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-pd",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-pd-alt",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-remix",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-sa",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-sampling",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-sampling-plus",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-share",
+ searchTerms: []
+ }, {
+ title: "fab fa-creative-commons-zero",
+ searchTerms: []
+ }, {
+ title: "fas fa-credit-card",
+ searchTerms: [ "buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase" ]
+ }, {
+ title: "far fa-credit-card",
+ searchTerms: [ "buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase" ]
+ }, {
+ title: "fab fa-critical-role",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ]
+ }, {
+ title: "fas fa-crop",
+ searchTerms: [ "design" ]
+ }, {
+ title: "fas fa-crop-alt",
+ searchTerms: []
+ }, {
+ title: "fas fa-cross",
+ searchTerms: [ "catholicism", "christianity" ]
+ }, {
+ title: "fas fa-crosshairs",
+ searchTerms: [ "gpd", "picker", "position" ]
+ }, {
+ title: "fas fa-crow",
+ searchTerms: [ "bird", "bullfrog", "fauna", "halloween", "holiday", "toad" ]
+ }, {
+ title: "fas fa-crown",
+ searchTerms: []
+ }, {
+ title: "fab fa-css3",
+ searchTerms: [ "code" ]
+ }, {
+ title: "fab fa-css3-alt",
+ searchTerms: []
+ }, {
+ title: "fas fa-cube",
+ searchTerms: [ "package" ]
+ }, {
+ title: "fas fa-cubes",
+ searchTerms: [ "packages" ]
+ }, {
+ title: "fas fa-cut",
+ searchTerms: [ "scissors" ]
+ }, {
+ title: "fab fa-cuttlefish",
+ searchTerms: []
+ }, {
+ title: "fab fa-d-and-d",
+ searchTerms: []
+ }, {
+ title: "fab fa-d-and-d-beyond",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "gaming", "tabletop" ]
+ }, {
+ title: "fab fa-dashcube",
+ searchTerms: []
+ }, {
+ title: "fas fa-database",
+ searchTerms: []
+ }, {
+ title: "fas fa-deaf",
+ searchTerms: []
+ }, {
+ title: "fab fa-delicious",
+ searchTerms: []
+ }, {
+ title: "fas fa-democrat",
+ searchTerms: [ "american", "democratic party", "donkey", "election", "left", "left-wing", "liberal", "politics", "usa" ]
+ }, {
+ title: "fab fa-deploydog",
+ searchTerms: []
+ }, {
+ title: "fab fa-deskpro",
+ searchTerms: []
+ }, {
+ title: "fas fa-desktop",
+ searchTerms: [ "computer", "cpu", "demo", "desktop", "device", "machine", "monitor", "pc", "screen" ]
+ }, {
+ title: "fab fa-dev",
+ searchTerms: []
+ }, {
+ title: "fab fa-deviantart",
+ searchTerms: []
+ }, {
+ title: "fas fa-dharmachakra",
+ searchTerms: [ "buddhism", "buddhist", "wheel of dharma" ]
+ }, {
+ title: "fas fa-diagnoses",
+ searchTerms: []
+ }, {
+ title: "fas fa-dice",
+ searchTerms: [ "chance", "gambling", "game", "roll" ]
+ }, {
+ title: "fas fa-dice-d20",
+ searchTerms: [ "Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll" ]
+ }, {
+ title: "fas fa-dice-d6",
+ searchTerms: [ "Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll" ]
+ }, {
+ title: "fas fa-dice-five",
+ searchTerms: [ "chance", "gambling", "game", "roll" ]
+ }, {
+ title: "fas fa-dice-four",
+ searchTerms: [ "chance", "gambling", "game", "roll" ]
+ }, {
+ title: "fas fa-dice-one",
+ searchTerms: [ "chance", "gambling", "game", "roll" ]
+ }, {
+ title: "fas fa-dice-six",
+ searchTerms: [ "chance", "gambling", "game", "roll" ]
+ }, {
+ title: "fas fa-dice-three",
+ searchTerms: [ "chance", "gambling", "game", "roll" ]
+ }, {
+ title: "fas fa-dice-two",
+ searchTerms: [ "chance", "gambling", "game", "roll" ]
+ }, {
+ title: "fab fa-digg",
+ searchTerms: []
+ }, {
+ title: "fab fa-digital-ocean",
+ searchTerms: []
+ }, {
+ title: "fas fa-digital-tachograph",
+ searchTerms: []
+ }, {
+ title: "fas fa-directions",
+ searchTerms: []
+ }, {
+ title: "fab fa-discord",
+ searchTerms: []
+ }, {
+ title: "fab fa-discourse",
+ searchTerms: []
+ }, {
+ title: "fas fa-divide",
+ searchTerms: []
+ }, {
+ title: "fas fa-dizzy",
+ searchTerms: [ "dazed", "disapprove", "emoticon", "face" ]
+ }, {
+ title: "far fa-dizzy",
+ searchTerms: [ "dazed", "disapprove", "emoticon", "face" ]
+ }, {
+ title: "fas fa-dna",
+ searchTerms: [ "double helix", "helix" ]
+ }, {
+ title: "fab fa-dochub",
+ searchTerms: []
+ }, {
+ title: "fab fa-docker",
+ searchTerms: []
+ }, {
+ title: "fas fa-dog",
+ searchTerms: [ "canine", "fauna", "mammmal", "pet", "pooch", "puppy", "woof" ]
+ }, {
+ title: "fas fa-dollar-sign",
+ searchTerms: [ "$", "dollar-sign", "money", "price", "usd" ]
+ }, {
+ title: "fas fa-dolly",
+ searchTerms: []
+ }, {
+ title: "fas fa-dolly-flatbed",
+ searchTerms: []
+ }, {
+ title: "fas fa-donate",
+ searchTerms: [ "generosity", "give" ]
+ }, {
+ title: "fas fa-door-closed",
+ searchTerms: []
+ }, {
+ title: "fas fa-door-open",
+ searchTerms: []
+ }, {
+ title: "fas fa-dot-circle",
+ searchTerms: [ "bullseye", "notification", "target" ]
+ }, {
+ title: "far fa-dot-circle",
+ searchTerms: [ "bullseye", "notification", "target" ]
+ }, {
+ title: "fas fa-dove",
+ searchTerms: [ "bird", "fauna", "flying", "peace" ]
+ }, {
+ title: "fas fa-download",
+ searchTerms: [ "import" ]
+ }, {
+ title: "fab fa-draft2digital",
+ searchTerms: []
+ }, {
+ title: "fas fa-drafting-compass",
+ searchTerms: [ "mechanical drawing", "plot", "plotting" ]
+ }, {
+ title: "fas fa-dragon",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy" ]
+ }, {
+ title: "fas fa-draw-polygon",
+ searchTerms: []
+ }, {
+ title: "fab fa-dribbble",
+ searchTerms: []
+ }, {
+ title: "fab fa-dribbble-square",
+ searchTerms: []
+ }, {
+ title: "fab fa-dropbox",
+ searchTerms: []
+ }, {
+ title: "fas fa-drum",
+ searchTerms: [ "instrument", "music", "percussion", "snare", "sound" ]
+ }, {
+ title: "fas fa-drum-steelpan",
+ searchTerms: [ "calypso", "instrument", "music", "percussion", "reggae", "snare", "sound", "steel", "tropical" ]
+ }, {
+ title: "fas fa-drumstick-bite",
+ searchTerms: []
+ }, {
+ title: "fab fa-drupal",
+ searchTerms: []
+ }, {
+ title: "fas fa-dumbbell",
+ searchTerms: [ "exercise", "gym", "strength", "weight", "weight-lifting" ]
+ }, {
+ title: "fas fa-dungeon",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "door", "entrance", "fantasy", "gate" ]
+ }, {
+ title: "fab fa-dyalog",
+ searchTerms: []
+ }, {
+ title: "fab fa-earlybirds",
+ searchTerms: []
+ }, {
+ title: "fab fa-ebay",
+ searchTerms: []
+ }, {
+ title: "fab fa-edge",
+ searchTerms: [ "browser", "ie" ]
+ }, {
+ title: "fas fa-edit",
+ searchTerms: [ "edit", "pen", "pencil", "update", "write" ]
+ }, {
+ title: "far fa-edit",
+ searchTerms: [ "edit", "pen", "pencil", "update", "write" ]
+ }, {
+ title: "fas fa-eject",
+ searchTerms: []
+ }, {
+ title: "fab fa-elementor",
+ searchTerms: []
+ }, {
+ title: "fas fa-ellipsis-h",
+ searchTerms: [ "dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul" ]
+ }, {
+ title: "fas fa-ellipsis-v",
+ searchTerms: [ "dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul" ]
+ }, {
+ title: "fab fa-ello",
+ searchTerms: []
+ }, {
+ title: "fab fa-ember",
+ searchTerms: []
+ }, {
+ title: "fab fa-empire",
+ searchTerms: []
+ }, {
+ title: "fas fa-envelope",
+ searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
+ }, {
+ title: "far fa-envelope",
+ searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
+ }, {
+ title: "fas fa-envelope-open",
+ searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
+ }, {
+ title: "far fa-envelope-open",
+ searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
+ }, {
+ title: "fas fa-envelope-open-text",
+ searchTerms: []
+ }, {
+ title: "fas fa-envelope-square",
+ searchTerms: [ "e-mail", "email", "letter", "mail", "message", "notification", "support" ]
+ }, {
+ title: "fab fa-envira",
+ searchTerms: [ "leaf" ]
+ }, {
+ title: "fas fa-equals",
+ searchTerms: []
+ }, {
+ title: "fas fa-eraser",
+ searchTerms: [ "delete", "remove" ]
+ }, {
+ title: "fab fa-erlang",
+ searchTerms: []
+ }, {
+ title: "fab fa-ethereum",
+ searchTerms: []
+ }, {
+ title: "fab fa-etsy",
+ searchTerms: []
+ }, {
+ title: "fas fa-euro-sign",
+ searchTerms: [ "eur" ]
+ }, {
+ title: "fas fa-exchange-alt",
+ searchTerms: [ "arrow", "arrows", "exchange", "reciprocate", "return", "swap", "transfer" ]
+ }, {
+ title: "fas fa-exclamation",
+ searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ]
+ }, {
+ title: "fas fa-exclamation-circle",
+ searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ]
+ }, {
+ title: "fas fa-exclamation-triangle",
+ searchTerms: [ "alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning" ]
+ }, {
+ title: "fas fa-expand",
+ searchTerms: [ "bigger", "enlarge", "resize" ]
+ }, {
+ title: "fas fa-expand-arrows-alt",
+ searchTerms: [ "arrows-alt", "bigger", "enlarge", "move", "resize" ]
+ }, {
+ title: "fab fa-expeditedssl",
+ searchTerms: []
+ }, {
+ title: "fas fa-external-link-alt",
+ searchTerms: [ "external-link", "new", "open" ]
+ }, {
+ title: "fas fa-external-link-square-alt",
+ searchTerms: [ "external-link-square", "new", "open" ]
+ }, {
+ title: "fas fa-eye",
+ searchTerms: [ "optic", "see", "seen", "show", "sight", "views", "visible" ]
+ }, {
+ title: "far fa-eye",
+ searchTerms: [ "optic", "see", "seen", "show", "sight", "views", "visible" ]
+ }, {
+ title: "fas fa-eye-dropper",
+ searchTerms: [ "eyedropper" ]
+ }, {
+ title: "fas fa-eye-slash",
+ searchTerms: [ "blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity" ]
+ }, {
+ title: "far fa-eye-slash",
+ searchTerms: [ "blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity" ]
+ }, {
+ title: "fab fa-facebook",
+ searchTerms: [ "facebook-official", "social network" ]
+ }, {
+ title: "fab fa-facebook-f",
+ searchTerms: [ "facebook" ]
+ }, {
+ title: "fab fa-facebook-messenger",
+ searchTerms: []
+ }, {
+ title: "fab fa-facebook-square",
+ searchTerms: [ "social network" ]
+ }, {
+ title: "fab fa-fantasy-flight-games",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ]
+ }, {
+ title: "fas fa-fast-backward",
+ searchTerms: [ "beginning", "first", "previous", "rewind", "start" ]
+ }, {
+ title: "fas fa-fast-forward",
+ searchTerms: [ "end", "last", "next" ]
+ }, {
+ title: "fas fa-fax",
+ searchTerms: []
+ }, {
+ title: "fas fa-feather",
+ searchTerms: [ "bird", "light", "plucked", "quill" ]
+ }, {
+ title: "fas fa-feather-alt",
+ searchTerms: [ "bird", "light", "plucked", "quill" ]
+ }, {
+ title: "fas fa-female",
+ searchTerms: [ "human", "person", "profile", "user", "woman" ]
+ }, {
+ title: "fas fa-fighter-jet",
+ searchTerms: [ "airplane", "fast", "fly", "goose", "maverick", "plane", "quick", "top gun", "transportation", "travel" ]
+ }, {
+ title: "fas fa-file",
+ searchTerms: [ "document", "new", "page", "pdf", "resume" ]
+ }, {
+ title: "far fa-file",
+ searchTerms: [ "document", "new", "page", "pdf", "resume" ]
+ }, {
+ title: "fas fa-file-alt",
+ searchTerms: [ "document", "file-text", "invoice", "new", "page", "pdf" ]
+ }, {
+ title: "far fa-file-alt",
+ searchTerms: [ "document", "file-text", "invoice", "new", "page", "pdf" ]
+ }, {
+ title: "fas fa-file-archive",
+ searchTerms: [ ".zip", "bundle", "compress", "compression", "download", "zip" ]
+ }, {
+ title: "far fa-file-archive",
+ searchTerms: [ ".zip", "bundle", "compress", "compression", "download", "zip" ]
+ }, {
+ title: "fas fa-file-audio",
+ searchTerms: []
+ }, {
+ title: "far fa-file-audio",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-code",
+ searchTerms: []
+ }, {
+ title: "far fa-file-code",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-contract",
+ searchTerms: [ "agreement", "binding", "document", "legal", "signature" ]
+ }, {
+ title: "fas fa-file-csv",
+ searchTerms: [ "spreadsheets" ]
+ }, {
+ title: "fas fa-file-download",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-excel",
+ searchTerms: []
+ }, {
+ title: "far fa-file-excel",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-export",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-image",
+ searchTerms: []
+ }, {
+ title: "far fa-file-image",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-import",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-invoice",
+ searchTerms: [ "bill", "document", "receipt" ]
+ }, {
+ title: "fas fa-file-invoice-dollar",
+ searchTerms: [ "$", "bill", "document", "dollar-sign", "money", "receipt", "usd" ]
+ }, {
+ title: "fas fa-file-medical",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-medical-alt",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-pdf",
+ searchTerms: []
+ }, {
+ title: "far fa-file-pdf",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-powerpoint",
+ searchTerms: []
+ }, {
+ title: "far fa-file-powerpoint",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-prescription",
+ searchTerms: [ "drugs", "medical", "medicine", "rx" ]
+ }, {
+ title: "fas fa-file-signature",
+ searchTerms: [ "John Hancock", "contract", "document", "name" ]
+ }, {
+ title: "fas fa-file-upload",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-video",
+ searchTerms: []
+ }, {
+ title: "far fa-file-video",
+ searchTerms: []
+ }, {
+ title: "fas fa-file-word",
+ searchTerms: []
+ }, {
+ title: "far fa-file-word",
+ searchTerms: []
+ }, {
+ title: "fas fa-fill",
+ searchTerms: [ "bucket", "color", "paint", "paint bucket" ]
+ }, {
+ title: "fas fa-fill-drip",
+ searchTerms: [ "bucket", "color", "drop", "paint", "paint bucket", "spill" ]
+ }, {
+ title: "fas fa-film",
+ searchTerms: [ "movie" ]
+ }, {
+ title: "fas fa-filter",
+ searchTerms: [ "funnel", "options" ]
+ }, {
+ title: "fas fa-fingerprint",
+ searchTerms: [ "human", "id", "identification", "lock", "smudge", "touch", "unique", "unlock" ]
+ }, {
+ title: "fas fa-fire",
+ searchTerms: [ "caliente", "flame", "heat", "hot", "popular" ]
+ }, {
+ title: "fas fa-fire-extinguisher",
+ searchTerms: []
+ }, {
+ title: "fab fa-firefox",
+ searchTerms: [ "browser" ]
+ }, {
+ title: "fas fa-first-aid",
+ searchTerms: []
+ }, {
+ title: "fab fa-first-order",
+ searchTerms: []
+ }, {
+ title: "fab fa-first-order-alt",
+ searchTerms: []
+ }, {
+ title: "fab fa-firstdraft",
+ searchTerms: []
+ }, {
+ title: "fas fa-fish",
+ searchTerms: [ "fauna", "gold", "swimming" ]
+ }, {
+ title: "fas fa-fist-raised",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "hand", "ki", "monk", "resist", "strength", "unarmed combat" ]
+ }, {
+ title: "fas fa-flag",
+ searchTerms: [ "country", "notice", "notification", "notify", "pole", "report", "symbol" ]
+ }, {
+ title: "far fa-flag",
+ searchTerms: [ "country", "notice", "notification", "notify", "pole", "report", "symbol" ]
+ }, {
+ title: "fas fa-flag-checkered",
+ searchTerms: [ "notice", "notification", "notify", "pole", "racing", "report", "symbol" ]
+ }, {
+ title: "fas fa-flag-usa",
+ searchTerms: [ "betsy ross", "country", "old glory", "stars", "stripes", "symbol" ]
+ }, {
+ title: "fas fa-flask",
+ searchTerms: [ "beaker", "experimental", "labs", "science" ]
+ }, {
+ title: "fab fa-flickr",
+ searchTerms: []
+ }, {
+ title: "fab fa-flipboard",
+ searchTerms: []
+ }, {
+ title: "fas fa-flushed",
+ searchTerms: [ "embarrassed", "emoticon", "face" ]
+ }, {
+ title: "far fa-flushed",
+ searchTerms: [ "embarrassed", "emoticon", "face" ]
+ }, {
+ title: "fab fa-fly",
+ searchTerms: []
+ }, {
+ title: "fas fa-folder",
+ searchTerms: []
+ }, {
+ title: "far fa-folder",
+ searchTerms: []
+ }, {
+ title: "fas fa-folder-minus",
+ searchTerms: [ "archive", "delete", "negative", "remove" ]
+ }, {
+ title: "fas fa-folder-open",
+ searchTerms: []
+ }, {
+ title: "far fa-folder-open",
+ searchTerms: []
+ }, {
+ title: "fas fa-folder-plus",
+ searchTerms: [ "add", "create", "new", "positive" ]
+ }, {
+ title: "fas fa-font",
+ searchTerms: [ "text" ]
+ }, {
+ title: "fab fa-font-awesome",
+ searchTerms: [ "meanpath" ]
+ }, {
+ title: "fab fa-font-awesome-alt",
+ searchTerms: []
+ }, {
+ title: "fab fa-font-awesome-flag",
+ searchTerms: []
+ }, {
+ title: "far fa-font-awesome-logo-full",
+ searchTerms: []
+ }, {
+ title: "fas fa-font-awesome-logo-full",
+ searchTerms: []
+ }, {
+ title: "fab fa-font-awesome-logo-full",
+ searchTerms: []
+ }, {
+ title: "fab fa-fonticons",
+ searchTerms: []
+ }, {
+ title: "fab fa-fonticons-fi",
+ searchTerms: []
+ }, {
+ title: "fas fa-football-ball",
+ searchTerms: [ "fall", "pigskin", "seasonal" ]
+ }, {
+ title: "fab fa-fort-awesome",
+ searchTerms: [ "castle" ]
+ }, {
+ title: "fab fa-fort-awesome-alt",
+ searchTerms: [ "castle" ]
+ }, {
+ title: "fab fa-forumbee",
+ searchTerms: []
+ }, {
+ title: "fas fa-forward",
+ searchTerms: [ "forward", "next" ]
+ }, {
+ title: "fab fa-foursquare",
+ searchTerms: []
+ }, {
+ title: "fab fa-free-code-camp",
+ searchTerms: []
+ }, {
+ title: "fab fa-freebsd",
+ searchTerms: []
+ }, {
+ title: "fas fa-frog",
+ searchTerms: [ "amphibian", "bullfrog", "fauna", "hop", "kermit", "kiss", "prince", "ribbit", "toad", "wart" ]
+ }, {
+ title: "fas fa-frown",
+ searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ]
+ }, {
+ title: "far fa-frown",
+ searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ]
+ }, {
+ title: "fas fa-frown-open",
+ searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ]
+ }, {
+ title: "far fa-frown-open",
+ searchTerms: [ "disapprove", "emoticon", "face", "rating", "sad" ]
+ }, {
+ title: "fab fa-fulcrum",
+ searchTerms: []
+ }, {
+ title: "fas fa-funnel-dollar",
+ searchTerms: []
+ }, {
+ title: "fas fa-futbol",
+ searchTerms: [ "ball", "football", "soccer" ]
+ }, {
+ title: "far fa-futbol",
+ searchTerms: [ "ball", "football", "soccer" ]
+ }, {
+ title: "fab fa-galactic-republic",
+ searchTerms: [ "politics", "star wars" ]
+ }, {
+ title: "fab fa-galactic-senate",
+ searchTerms: [ "star wars" ]
+ }, {
+ title: "fas fa-gamepad",
+ searchTerms: [ "controller" ]
+ }, {
+ title: "fas fa-gas-pump",
+ searchTerms: []
+ }, {
+ title: "fas fa-gavel",
+ searchTerms: [ "hammer", "judge", "lawyer", "opinion" ]
+ }, {
+ title: "fas fa-gem",
+ searchTerms: [ "diamond" ]
+ }, {
+ title: "far fa-gem",
+ searchTerms: [ "diamond" ]
+ }, {
+ title: "fas fa-genderless",
+ searchTerms: []
+ }, {
+ title: "fab fa-get-pocket",
+ searchTerms: []
+ }, {
+ title: "fab fa-gg",
+ searchTerms: []
+ }, {
+ title: "fab fa-gg-circle",
+ searchTerms: []
+ }, {
+ title: "fas fa-ghost",
+ searchTerms: [ "apparition", "blinky", "clyde", "floating", "halloween", "holiday", "inky", "pinky", "spirit" ]
+ }, {
+ title: "fas fa-gift",
+ searchTerms: [ "generosity", "giving", "party", "present", "wrapped" ]
+ }, {
+ title: "fab fa-git",
+ searchTerms: []
+ }, {
+ title: "fab fa-git-square",
+ searchTerms: []
+ }, {
+ title: "fab fa-github",
+ searchTerms: [ "octocat" ]
+ }, {
+ title: "fab fa-github-alt",
+ searchTerms: [ "octocat" ]
+ }, {
+ title: "fab fa-github-square",
+ searchTerms: [ "octocat" ]
+ }, {
+ title: "fab fa-gitkraken",
+ searchTerms: []
+ }, {
+ title: "fab fa-gitlab",
+ searchTerms: [ "Axosoft" ]
+ }, {
+ title: "fab fa-gitter",
+ searchTerms: []
+ }, {
+ title: "fas fa-glass-martini",
+ searchTerms: [ "alcohol", "bar", "beverage", "drink", "glass", "liquor", "martini" ]
+ }, {
+ title: "fas fa-glass-martini-alt",
+ searchTerms: []
+ }, {
+ title: "fas fa-glasses",
+ searchTerms: [ "foureyes", "hipster", "nerd", "reading", "sight", "spectacles" ]
+ }, {
+ title: "fab fa-glide",
+ searchTerms: []
+ }, {
+ title: "fab fa-glide-g",
+ searchTerms: []
+ }, {
+ title: "fas fa-globe",
+ searchTerms: [ "all", "coordinates", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ]
+ }, {
+ title: "fas fa-globe-africa",
+ searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ]
+ }, {
+ title: "fas fa-globe-americas",
+ searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ]
+ }, {
+ title: "fas fa-globe-asia",
+ searchTerms: [ "all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world" ]
+ }, {
+ title: "fab fa-gofore",
+ searchTerms: []
+ }, {
+ title: "fas fa-golf-ball",
+ searchTerms: []
+ }, {
+ title: "fab fa-goodreads",
+ searchTerms: []
+ }, {
+ title: "fab fa-goodreads-g",
+ searchTerms: []
+ }, {
+ title: "fab fa-google",
+ searchTerms: []
+ }, {
+ title: "fab fa-google-drive",
+ searchTerms: []
+ }, {
+ title: "fab fa-google-play",
+ searchTerms: []
+ }, {
+ title: "fab fa-google-plus",
+ searchTerms: [ "google-plus-circle", "google-plus-official" ]
+ }, {
+ title: "fab fa-google-plus-g",
+ searchTerms: [ "google-plus", "social network" ]
+ }, {
+ title: "fab fa-google-plus-square",
+ searchTerms: [ "social network" ]
+ }, {
+ title: "fab fa-google-wallet",
+ searchTerms: []
+ }, {
+ title: "fas fa-gopuram",
+ searchTerms: [ "building", "entrance", "hinduism", "temple", "tower" ]
+ }, {
+ title: "fas fa-graduation-cap",
+ searchTerms: [ "learning", "school", "student" ]
+ }, {
+ title: "fab fa-gratipay",
+ searchTerms: [ "favorite", "heart", "like", "love" ]
+ }, {
+ title: "fab fa-grav",
+ searchTerms: []
+ }, {
+ title: "fas fa-greater-than",
+ searchTerms: []
+ }, {
+ title: "fas fa-greater-than-equal",
+ searchTerms: []
+ }, {
+ title: "fas fa-grimace",
+ searchTerms: [ "cringe", "emoticon", "face" ]
+ }, {
+ title: "far fa-grimace",
+ searchTerms: [ "cringe", "emoticon", "face" ]
+ }, {
+ title: "fas fa-grin",
+ searchTerms: [ "emoticon", "face", "laugh", "smile" ]
+ }, {
+ title: "far fa-grin",
+ searchTerms: [ "emoticon", "face", "laugh", "smile" ]
+ }, {
+ title: "fas fa-grin-alt",
+ searchTerms: [ "emoticon", "face", "laugh", "smile" ]
+ }, {
+ title: "far fa-grin-alt",
+ searchTerms: [ "emoticon", "face", "laugh", "smile" ]
+ }, {
+ title: "fas fa-grin-beam",
+ searchTerms: [ "emoticon", "face", "laugh", "smile" ]
+ }, {
+ title: "far fa-grin-beam",
+ searchTerms: [ "emoticon", "face", "laugh", "smile" ]
+ }, {
+ title: "fas fa-grin-beam-sweat",
+ searchTerms: [ "emoticon", "face", "smile" ]
+ }, {
+ title: "far fa-grin-beam-sweat",
+ searchTerms: [ "emoticon", "face", "smile" ]
+ }, {
+ title: "fas fa-grin-hearts",
+ searchTerms: [ "emoticon", "face", "love", "smile" ]
+ }, {
+ title: "far fa-grin-hearts",
+ searchTerms: [ "emoticon", "face", "love", "smile" ]
+ }, {
+ title: "fas fa-grin-squint",
+ searchTerms: [ "emoticon", "face", "laugh", "smile" ]
+ }, {
+ title: "far fa-grin-squint",
+ searchTerms: [ "emoticon", "face", "laugh", "smile" ]
+ }, {
+ title: "fas fa-grin-squint-tears",
+ searchTerms: [ "emoticon", "face", "happy", "smile" ]
+ }, {
+ title: "far fa-grin-squint-tears",
+ searchTerms: [ "emoticon", "face", "happy", "smile" ]
+ }, {
+ title: "fas fa-grin-stars",
+ searchTerms: [ "emoticon", "face", "star-struck" ]
+ }, {
+ title: "far fa-grin-stars",
+ searchTerms: [ "emoticon", "face", "star-struck" ]
+ }, {
+ title: "fas fa-grin-tears",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "far fa-grin-tears",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "fas fa-grin-tongue",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "far fa-grin-tongue",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "fas fa-grin-tongue-squint",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "far fa-grin-tongue-squint",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "fas fa-grin-tongue-wink",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "far fa-grin-tongue-wink",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "fas fa-grin-wink",
+ searchTerms: [ "emoticon", "face", "flirt", "laugh", "smile" ]
+ }, {
+ title: "far fa-grin-wink",
+ searchTerms: [ "emoticon", "face", "flirt", "laugh", "smile" ]
+ }, {
+ title: "fas fa-grip-horizontal",
+ searchTerms: [ "affordance", "drag", "drop", "grab", "handle" ]
+ }, {
+ title: "fas fa-grip-vertical",
+ searchTerms: [ "affordance", "drag", "drop", "grab", "handle" ]
+ }, {
+ title: "fab fa-gripfire",
+ searchTerms: []
+ }, {
+ title: "fab fa-grunt",
+ searchTerms: []
+ }, {
+ title: "fab fa-gulp",
+ searchTerms: []
+ }, {
+ title: "fas fa-h-square",
+ searchTerms: [ "hospital", "hotel" ]
+ }, {
+ title: "fab fa-hacker-news",
+ searchTerms: []
+ }, {
+ title: "fab fa-hacker-news-square",
+ searchTerms: []
+ }, {
+ title: "fab fa-hackerrank",
+ searchTerms: []
+ }, {
+ title: "fas fa-hammer",
+ searchTerms: [ "admin", "fix", "repair", "settings", "tool" ]
+ }, {
+ title: "fas fa-hamsa",
+ searchTerms: [ "amulet", "christianity", "islam", "jewish", "judaism", "muslim", "protection" ]
+ }, {
+ title: "fas fa-hand-holding",
+ searchTerms: []
+ }, {
+ title: "fas fa-hand-holding-heart",
+ searchTerms: []
+ }, {
+ title: "fas fa-hand-holding-usd",
+ searchTerms: [ "$", "dollar sign", "donation", "giving", "money", "price" ]
+ }, {
+ title: "fas fa-hand-lizard",
+ searchTerms: []
+ }, {
+ title: "far fa-hand-lizard",
+ searchTerms: []
+ }, {
+ title: "fas fa-hand-paper",
+ searchTerms: [ "stop" ]
+ }, {
+ title: "far fa-hand-paper",
+ searchTerms: [ "stop" ]
+ }, {
+ title: "fas fa-hand-peace",
+ searchTerms: []
+ }, {
+ title: "far fa-hand-peace",
+ searchTerms: []
+ }, {
+ title: "fas fa-hand-point-down",
+ searchTerms: [ "finger", "hand-o-down", "point" ]
+ }, {
+ title: "far fa-hand-point-down",
+ searchTerms: [ "finger", "hand-o-down", "point" ]
+ }, {
+ title: "fas fa-hand-point-left",
+ searchTerms: [ "back", "finger", "hand-o-left", "left", "point", "previous" ]
+ }, {
+ title: "far fa-hand-point-left",
+ searchTerms: [ "back", "finger", "hand-o-left", "left", "point", "previous" ]
+ }, {
+ title: "fas fa-hand-point-right",
+ searchTerms: [ "finger", "forward", "hand-o-right", "next", "point", "right" ]
+ }, {
+ title: "far fa-hand-point-right",
+ searchTerms: [ "finger", "forward", "hand-o-right", "next", "point", "right" ]
+ }, {
+ title: "fas fa-hand-point-up",
+ searchTerms: [ "finger", "hand-o-up", "point" ]
+ }, {
+ title: "far fa-hand-point-up",
+ searchTerms: [ "finger", "hand-o-up", "point" ]
+ }, {
+ title: "fas fa-hand-pointer",
+ searchTerms: [ "select" ]
+ }, {
+ title: "far fa-hand-pointer",
+ searchTerms: [ "select" ]
+ }, {
+ title: "fas fa-hand-rock",
+ searchTerms: []
+ }, {
+ title: "far fa-hand-rock",
+ searchTerms: []
+ }, {
+ title: "fas fa-hand-scissors",
+ searchTerms: []
+ }, {
+ title: "far fa-hand-scissors",
+ searchTerms: []
+ }, {
+ title: "fas fa-hand-spock",
+ searchTerms: []
+ }, {
+ title: "far fa-hand-spock",
+ searchTerms: []
+ }, {
+ title: "fas fa-hands",
+ searchTerms: []
+ }, {
+ title: "fas fa-hands-helping",
+ searchTerms: [ "aid", "assistance", "partnership", "volunteering" ]
+ }, {
+ title: "fas fa-handshake",
+ searchTerms: [ "greeting", "partnership" ]
+ }, {
+ title: "far fa-handshake",
+ searchTerms: [ "greeting", "partnership" ]
+ }, {
+ title: "fas fa-hanukiah",
+ searchTerms: [ "candle", "hanukkah", "jewish", "judaism", "light" ]
+ }, {
+ title: "fas fa-hashtag",
+ searchTerms: []
+ }, {
+ title: "fas fa-hat-wizard",
+ searchTerms: [ "Dungeons & Dragons", "buckle", "cloth", "clothing", "d&d", "dnd", "fantasy", "halloween", "holiday", "mage", "magic", "pointy", "witch" ]
+ }, {
+ title: "fas fa-haykal",
+ searchTerms: [ "bahai", "bahá'Ã", "star" ]
+ }, {
+ title: "fas fa-hdd",
+ searchTerms: [ "cpu", "hard drive", "harddrive", "machine", "save", "storage" ]
+ }, {
+ title: "far fa-hdd",
+ searchTerms: [ "cpu", "hard drive", "harddrive", "machine", "save", "storage" ]
+ }, {
+ title: "fas fa-heading",
+ searchTerms: [ "header" ]
+ }, {
+ title: "fas fa-headphones",
+ searchTerms: [ "audio", "listen", "music", "sound", "speaker" ]
+ }, {
+ title: "fas fa-headphones-alt",
+ searchTerms: [ "audio", "listen", "music", "sound", "speaker" ]
+ }, {
+ title: "fas fa-headset",
+ searchTerms: [ "audio", "gamer", "gaming", "listen", "live chat", "microphone", "shot caller", "sound", "support", "telemarketer" ]
+ }, {
+ title: "fas fa-heart",
+ searchTerms: [ "favorite", "like", "love" ]
+ }, {
+ title: "far fa-heart",
+ searchTerms: [ "favorite", "like", "love" ]
+ }, {
+ title: "fas fa-heartbeat",
+ searchTerms: [ "ekg", "lifeline", "vital signs" ]
+ }, {
+ title: "fas fa-helicopter",
+ searchTerms: [ "airwolf", "apache", "chopper", "flight", "fly" ]
+ }, {
+ title: "fas fa-highlighter",
+ searchTerms: [ "edit", "marker", "sharpie", "update", "write" ]
+ }, {
+ title: "fas fa-hiking",
+ searchTerms: [ "activity", "backpack", "fall", "fitness", "outdoors", "seasonal", "walking" ]
+ }, {
+ title: "fas fa-hippo",
+ searchTerms: [ "fauna", "hungry", "mammmal" ]
+ }, {
+ title: "fab fa-hips",
+ searchTerms: []
+ }, {
+ title: "fab fa-hire-a-helper",
+ searchTerms: []
+ }, {
+ title: "fas fa-history",
+ searchTerms: []
+ }, {
+ title: "fas fa-hockey-puck",
+ searchTerms: []
+ }, {
+ title: "fas fa-home",
+ searchTerms: [ "house", "main" ]
+ }, {
+ title: "fab fa-hooli",
+ searchTerms: []
+ }, {
+ title: "fab fa-hornbill",
+ searchTerms: []
+ }, {
+ title: "fas fa-horse",
+ searchTerms: [ "equus", "fauna", "mammmal", "neigh" ]
+ }, {
+ title: "fas fa-hospital",
+ searchTerms: [ "building", "emergency room", "medical center" ]
+ }, {
+ title: "far fa-hospital",
+ searchTerms: [ "building", "emergency room", "medical center" ]
+ }, {
+ title: "fas fa-hospital-alt",
+ searchTerms: [ "building", "emergency room", "medical center" ]
+ }, {
+ title: "fas fa-hospital-symbol",
+ searchTerms: []
+ }, {
+ title: "fas fa-hot-tub",
+ searchTerms: []
+ }, {
+ title: "fas fa-hotel",
+ searchTerms: [ "building", "lodging" ]
+ }, {
+ title: "fab fa-hotjar",
+ searchTerms: []
+ }, {
+ title: "fas fa-hourglass",
+ searchTerms: []
+ }, {
+ title: "far fa-hourglass",
+ searchTerms: []
+ }, {
+ title: "fas fa-hourglass-end",
+ searchTerms: []
+ }, {
+ title: "fas fa-hourglass-half",
+ searchTerms: []
+ }, {
+ title: "fas fa-hourglass-start",
+ searchTerms: []
+ }, {
+ title: "fas fa-house-damage",
+ searchTerms: [ "devastation", "home" ]
+ }, {
+ title: "fab fa-houzz",
+ searchTerms: []
+ }, {
+ title: "fas fa-hryvnia",
+ searchTerms: [ "money" ]
+ }, {
+ title: "fab fa-html5",
+ searchTerms: []
+ }, {
+ title: "fab fa-hubspot",
+ searchTerms: []
+ }, {
+ title: "fas fa-i-cursor",
+ searchTerms: []
+ }, {
+ title: "fas fa-id-badge",
+ searchTerms: []
+ }, {
+ title: "far fa-id-badge",
+ searchTerms: []
+ }, {
+ title: "fas fa-id-card",
+ searchTerms: [ "document", "identification", "issued" ]
+ }, {
+ title: "far fa-id-card",
+ searchTerms: [ "document", "identification", "issued" ]
+ }, {
+ title: "fas fa-id-card-alt",
+ searchTerms: [ "demographics" ]
+ }, {
+ title: "fas fa-image",
+ searchTerms: [ "album", "photo", "picture" ]
+ }, {
+ title: "far fa-image",
+ searchTerms: [ "album", "photo", "picture" ]
+ }, {
+ title: "fas fa-images",
+ searchTerms: [ "album", "photo", "picture" ]
+ }, {
+ title: "far fa-images",
+ searchTerms: [ "album", "photo", "picture" ]
+ }, {
+ title: "fab fa-imdb",
+ searchTerms: []
+ }, {
+ title: "fas fa-inbox",
+ searchTerms: []
+ }, {
+ title: "fas fa-indent",
+ searchTerms: []
+ }, {
+ title: "fas fa-industry",
+ searchTerms: [ "factory", "manufacturing" ]
+ }, {
+ title: "fas fa-infinity",
+ searchTerms: []
+ }, {
+ title: "fas fa-info",
+ searchTerms: [ "details", "help", "information", "more" ]
+ }, {
+ title: "fas fa-info-circle",
+ searchTerms: [ "details", "help", "information", "more" ]
+ }, {
+ title: "fab fa-instagram",
+ searchTerms: []
+ }, {
+ title: "fab fa-internet-explorer",
+ searchTerms: [ "browser", "ie" ]
+ }, {
+ title: "fab fa-ioxhost",
+ searchTerms: []
+ }, {
+ title: "fas fa-italic",
+ searchTerms: [ "italics" ]
+ }, {
+ title: "fab fa-itunes",
+ searchTerms: []
+ }, {
+ title: "fab fa-itunes-note",
+ searchTerms: []
+ }, {
+ title: "fab fa-java",
+ searchTerms: []
+ }, {
+ title: "fas fa-jedi",
+ searchTerms: [ "star wars" ]
+ }, {
+ title: "fab fa-jedi-order",
+ searchTerms: [ "star wars" ]
+ }, {
+ title: "fab fa-jenkins",
+ searchTerms: []
+ }, {
+ title: "fab fa-joget",
+ searchTerms: []
+ }, {
+ title: "fas fa-joint",
+ searchTerms: [ "blunt", "cannabis", "doobie", "drugs", "marijuana", "roach", "smoke", "smoking", "spliff" ]
+ }, {
+ title: "fab fa-joomla",
+ searchTerms: []
+ }, {
+ title: "fas fa-journal-whills",
+ searchTerms: [ "book", "jedi", "star wars", "the force" ]
+ }, {
+ title: "fab fa-js",
+ searchTerms: []
+ }, {
+ title: "fab fa-js-square",
+ searchTerms: []
+ }, {
+ title: "fab fa-jsfiddle",
+ searchTerms: []
+ }, {
+ title: "fas fa-kaaba",
+ searchTerms: [ "building", "cube", "islam", "muslim" ]
+ }, {
+ title: "fab fa-kaggle",
+ searchTerms: []
+ }, {
+ title: "fas fa-key",
+ searchTerms: [ "password", "unlock" ]
+ }, {
+ title: "fab fa-keybase",
+ searchTerms: []
+ }, {
+ title: "fas fa-keyboard",
+ searchTerms: [ "input", "type" ]
+ }, {
+ title: "far fa-keyboard",
+ searchTerms: [ "input", "type" ]
+ }, {
+ title: "fab fa-keycdn",
+ searchTerms: []
+ }, {
+ title: "fas fa-khanda",
+ searchTerms: [ "chakkar", "sikh", "sikhism", "sword" ]
+ }, {
+ title: "fab fa-kickstarter",
+ searchTerms: []
+ }, {
+ title: "fab fa-kickstarter-k",
+ searchTerms: []
+ }, {
+ title: "fas fa-kiss",
+ searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
+ }, {
+ title: "far fa-kiss",
+ searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
+ }, {
+ title: "fas fa-kiss-beam",
+ searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
+ }, {
+ title: "far fa-kiss-beam",
+ searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
+ }, {
+ title: "fas fa-kiss-wink-heart",
+ searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
+ }, {
+ title: "far fa-kiss-wink-heart",
+ searchTerms: [ "beso", "emoticon", "face", "love", "smooch" ]
+ }, {
+ title: "fas fa-kiwi-bird",
+ searchTerms: [ "bird", "fauna" ]
+ }, {
+ title: "fab fa-korvue",
+ searchTerms: []
+ }, {
+ title: "fas fa-landmark",
+ searchTerms: [ "building", "historic", "memoroable", "politics" ]
+ }, {
+ title: "fas fa-language",
+ searchTerms: [ "dialect", "idiom", "localize", "speech", "translate", "vernacular" ]
+ }, {
+ title: "fas fa-laptop",
+ searchTerms: [ "computer", "cpu", "dell", "demo", "device", "dude you're getting", "mac", "macbook", "machine", "pc" ]
+ }, {
+ title: "fas fa-laptop-code",
+ searchTerms: []
+ }, {
+ title: "fab fa-laravel",
+ searchTerms: []
+ }, {
+ title: "fab fa-lastfm",
+ searchTerms: []
+ }, {
+ title: "fab fa-lastfm-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-laugh",
+ searchTerms: [ "LOL", "emoticon", "face", "laugh" ]
+ }, {
+ title: "far fa-laugh",
+ searchTerms: [ "LOL", "emoticon", "face", "laugh" ]
+ }, {
+ title: "fas fa-laugh-beam",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "far fa-laugh-beam",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "fas fa-laugh-squint",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "far fa-laugh-squint",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "fas fa-laugh-wink",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "far fa-laugh-wink",
+ searchTerms: [ "LOL", "emoticon", "face" ]
+ }, {
+ title: "fas fa-layer-group",
+ searchTerms: [ "layers" ]
+ }, {
+ title: "fas fa-leaf",
+ searchTerms: [ "eco", "flora", "nature", "plant" ]
+ }, {
+ title: "fab fa-leanpub",
+ searchTerms: []
+ }, {
+ title: "fas fa-lemon",
+ searchTerms: [ "food" ]
+ }, {
+ title: "far fa-lemon",
+ searchTerms: [ "food" ]
+ }, {
+ title: "fab fa-less",
+ searchTerms: []
+ }, {
+ title: "fas fa-less-than",
+ searchTerms: []
+ }, {
+ title: "fas fa-less-than-equal",
+ searchTerms: []
+ }, {
+ title: "fas fa-level-down-alt",
+ searchTerms: [ "level-down" ]
+ }, {
+ title: "fas fa-level-up-alt",
+ searchTerms: [ "level-up" ]
+ }, {
+ title: "fas fa-life-ring",
+ searchTerms: [ "support" ]
+ }, {
+ title: "far fa-life-ring",
+ searchTerms: [ "support" ]
+ }, {
+ title: "fas fa-lightbulb",
+ searchTerms: [ "idea", "inspiration" ]
+ }, {
+ title: "far fa-lightbulb",
+ searchTerms: [ "idea", "inspiration" ]
+ }, {
+ title: "fab fa-line",
+ searchTerms: []
+ }, {
+ title: "fas fa-link",
+ searchTerms: [ "chain" ]
+ }, {
+ title: "fab fa-linkedin",
+ searchTerms: [ "linkedin-square" ]
+ }, {
+ title: "fab fa-linkedin-in",
+ searchTerms: [ "linkedin" ]
+ }, {
+ title: "fab fa-linode",
+ searchTerms: []
+ }, {
+ title: "fab fa-linux",
+ searchTerms: [ "tux" ]
+ }, {
+ title: "fas fa-lira-sign",
+ searchTerms: [ "try", "turkish" ]
+ }, {
+ title: "fas fa-list",
+ searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ]
+ }, {
+ title: "fas fa-list-alt",
+ searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ]
+ }, {
+ title: "far fa-list-alt",
+ searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ]
+ }, {
+ title: "fas fa-list-ol",
+ searchTerms: [ "checklist", "list", "numbers", "ol", "todo", "ul" ]
+ }, {
+ title: "fas fa-list-ul",
+ searchTerms: [ "checklist", "list", "ol", "todo", "ul" ]
+ }, {
+ title: "fas fa-location-arrow",
+ searchTerms: [ "address", "coordinates", "gps", "location", "map", "place", "where" ]
+ }, {
+ title: "fas fa-lock",
+ searchTerms: [ "admin", "protect", "security" ]
+ }, {
+ title: "fas fa-lock-open",
+ searchTerms: [ "admin", "lock", "open", "password", "protect" ]
+ }, {
+ title: "fas fa-long-arrow-alt-down",
+ searchTerms: [ "long-arrow-down" ]
+ }, {
+ title: "fas fa-long-arrow-alt-left",
+ searchTerms: [ "back", "long-arrow-left", "previous" ]
+ }, {
+ title: "fas fa-long-arrow-alt-right",
+ searchTerms: [ "long-arrow-right" ]
+ }, {
+ title: "fas fa-long-arrow-alt-up",
+ searchTerms: [ "long-arrow-up" ]
+ }, {
+ title: "fas fa-low-vision",
+ searchTerms: []
+ }, {
+ title: "fas fa-luggage-cart",
+ searchTerms: []
+ }, {
+ title: "fab fa-lyft",
+ searchTerms: []
+ }, {
+ title: "fab fa-magento",
+ searchTerms: []
+ }, {
+ title: "fas fa-magic",
+ searchTerms: [ "autocomplete", "automatic", "mage", "magic", "spell", "witch", "wizard" ]
+ }, {
+ title: "fas fa-magnet",
+ searchTerms: []
+ }, {
+ title: "fas fa-mail-bulk",
+ searchTerms: []
+ }, {
+ title: "fab fa-mailchimp",
+ searchTerms: []
+ }, {
+ title: "fas fa-male",
+ searchTerms: [ "human", "man", "person", "profile", "user" ]
+ }, {
+ title: "fab fa-mandalorian",
+ searchTerms: []
+ }, {
+ title: "fas fa-map",
+ searchTerms: [ "coordinates", "location", "paper", "place", "travel" ]
+ }, {
+ title: "far fa-map",
+ searchTerms: [ "coordinates", "location", "paper", "place", "travel" ]
+ }, {
+ title: "fas fa-map-marked",
+ searchTerms: [ "address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where" ]
+ }, {
+ title: "fas fa-map-marked-alt",
+ searchTerms: [ "address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where" ]
+ }, {
+ title: "fas fa-map-marker",
+ searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where" ]
+ }, {
+ title: "fas fa-map-marker-alt",
+ searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where" ]
+ }, {
+ title: "fas fa-map-pin",
+ searchTerms: [ "address", "coordinates", "gps", "localize", "location", "map", "marker", "place", "position", "travel", "where" ]
+ }, {
+ title: "fas fa-map-signs",
+ searchTerms: []
+ }, {
+ title: "fab fa-markdown",
+ searchTerms: []
+ }, {
+ title: "fas fa-marker",
+ searchTerms: [ "edit", "sharpie", "update", "write" ]
+ }, {
+ title: "fas fa-mars",
+ searchTerms: [ "male" ]
+ }, {
+ title: "fas fa-mars-double",
+ searchTerms: []
+ }, {
+ title: "fas fa-mars-stroke",
+ searchTerms: []
+ }, {
+ title: "fas fa-mars-stroke-h",
+ searchTerms: []
+ }, {
+ title: "fas fa-mars-stroke-v",
+ searchTerms: []
+ }, {
+ title: "fas fa-mask",
+ searchTerms: [ "costume", "disguise", "halloween", "holiday", "secret", "super hero" ]
+ }, {
+ title: "fab fa-mastodon",
+ searchTerms: []
+ }, {
+ title: "fab fa-maxcdn",
+ searchTerms: []
+ }, {
+ title: "fas fa-medal",
+ searchTerms: []
+ }, {
+ title: "fab fa-medapps",
+ searchTerms: []
+ }, {
+ title: "fab fa-medium",
+ searchTerms: []
+ }, {
+ title: "fab fa-medium-m",
+ searchTerms: []
+ }, {
+ title: "fas fa-medkit",
+ searchTerms: [ "first aid", "firstaid", "health", "help", "support" ]
+ }, {
+ title: "fab fa-medrt",
+ searchTerms: []
+ }, {
+ title: "fab fa-meetup",
+ searchTerms: []
+ }, {
+ title: "fab fa-megaport",
+ searchTerms: []
+ }, {
+ title: "fas fa-meh",
+ searchTerms: [ "emoticon", "face", "neutral", "rating" ]
+ }, {
+ title: "far fa-meh",
+ searchTerms: [ "emoticon", "face", "neutral", "rating" ]
+ }, {
+ title: "fas fa-meh-blank",
+ searchTerms: [ "emoticon", "face", "neutral", "rating" ]
+ }, {
+ title: "far fa-meh-blank",
+ searchTerms: [ "emoticon", "face", "neutral", "rating" ]
+ }, {
+ title: "fas fa-meh-rolling-eyes",
+ searchTerms: [ "emoticon", "face", "neutral", "rating" ]
+ }, {
+ title: "far fa-meh-rolling-eyes",
+ searchTerms: [ "emoticon", "face", "neutral", "rating" ]
+ }, {
+ title: "fas fa-memory",
+ searchTerms: [ "DIMM", "RAM" ]
+ }, {
+ title: "fas fa-menorah",
+ searchTerms: [ "candle", "hanukkah", "jewish", "judaism", "light" ]
+ }, {
+ title: "fas fa-mercury",
+ searchTerms: [ "transgender" ]
+ }, {
+ title: "fas fa-meteor",
+ searchTerms: []
+ }, {
+ title: "fas fa-microchip",
+ searchTerms: [ "cpu", "processor" ]
+ }, {
+ title: "fas fa-microphone",
+ searchTerms: [ "record", "sound", "voice" ]
+ }, {
+ title: "fas fa-microphone-alt",
+ searchTerms: [ "record", "sound", "voice" ]
+ }, {
+ title: "fas fa-microphone-alt-slash",
+ searchTerms: [ "disable", "mute", "record", "sound", "voice" ]
+ }, {
+ title: "fas fa-microphone-slash",
+ searchTerms: [ "disable", "mute", "record", "sound", "voice" ]
+ }, {
+ title: "fas fa-microscope",
+ searchTerms: []
+ }, {
+ title: "fab fa-microsoft",
+ searchTerms: []
+ }, {
+ title: "fas fa-minus",
+ searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ]
+ }, {
+ title: "fas fa-minus-circle",
+ searchTerms: [ "delete", "hide", "negative", "remove", "trash" ]
+ }, {
+ title: "fas fa-minus-square",
+ searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ]
+ }, {
+ title: "far fa-minus-square",
+ searchTerms: [ "collapse", "delete", "hide", "minify", "negative", "remove", "trash" ]
+ }, {
+ title: "fab fa-mix",
+ searchTerms: []
+ }, {
+ title: "fab fa-mixcloud",
+ searchTerms: []
+ }, {
+ title: "fab fa-mizuni",
+ searchTerms: []
+ }, {
+ title: "fas fa-mobile",
+ searchTerms: [ "apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text" ]
+ }, {
+ title: "fas fa-mobile-alt",
+ searchTerms: [ "apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text" ]
+ }, {
+ title: "fab fa-modx",
+ searchTerms: []
+ }, {
+ title: "fab fa-monero",
+ searchTerms: []
+ }, {
+ title: "fas fa-money-bill",
+ searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ]
+ }, {
+ title: "fas fa-money-bill-alt",
+ searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ]
+ }, {
+ title: "far fa-money-bill-alt",
+ searchTerms: [ "buy", "cash", "checkout", "money", "payment", "price", "purchase" ]
+ }, {
+ title: "fas fa-money-bill-wave",
+ searchTerms: []
+ }, {
+ title: "fas fa-money-bill-wave-alt",
+ searchTerms: []
+ }, {
+ title: "fas fa-money-check",
+ searchTerms: [ "bank check", "cheque" ]
+ }, {
+ title: "fas fa-money-check-alt",
+ searchTerms: [ "bank check", "cheque" ]
+ }, {
+ title: "fas fa-monument",
+ searchTerms: [ "building", "historic", "memoroable" ]
+ }, {
+ title: "fas fa-moon",
+ searchTerms: [ "contrast", "crescent", "darker", "lunar", "night" ]
+ }, {
+ title: "far fa-moon",
+ searchTerms: [ "contrast", "crescent", "darker", "lunar", "night" ]
+ }, {
+ title: "fas fa-mortar-pestle",
+ searchTerms: [ "crush", "culinary", "grind", "medical", "mix", "spices" ]
+ }, {
+ title: "fas fa-mosque",
+ searchTerms: [ "building", "islam", "muslim" ]
+ }, {
+ title: "fas fa-motorcycle",
+ searchTerms: [ "bike", "machine", "transportation", "vehicle" ]
+ }, {
+ title: "fas fa-mountain",
+ searchTerms: []
+ }, {
+ title: "fas fa-mouse-pointer",
+ searchTerms: [ "select" ]
+ }, {
+ title: "fas fa-music",
+ searchTerms: [ "note", "sound" ]
+ }, {
+ title: "fab fa-napster",
+ searchTerms: []
+ }, {
+ title: "fab fa-neos",
+ searchTerms: []
+ }, {
+ title: "fas fa-network-wired",
+ searchTerms: []
+ }, {
+ title: "fas fa-neuter",
+ searchTerms: []
+ }, {
+ title: "fas fa-newspaper",
+ searchTerms: [ "article", "press" ]
+ }, {
+ title: "far fa-newspaper",
+ searchTerms: [ "article", "press" ]
+ }, {
+ title: "fab fa-nimblr",
+ searchTerms: []
+ }, {
+ title: "fab fa-nintendo-switch",
+ searchTerms: []
+ }, {
+ title: "fab fa-node",
+ searchTerms: []
+ }, {
+ title: "fab fa-node-js",
+ searchTerms: []
+ }, {
+ title: "fas fa-not-equal",
+ searchTerms: []
+ }, {
+ title: "fas fa-notes-medical",
+ searchTerms: []
+ }, {
+ title: "fab fa-npm",
+ searchTerms: []
+ }, {
+ title: "fab fa-ns8",
+ searchTerms: []
+ }, {
+ title: "fab fa-nutritionix",
+ searchTerms: []
+ }, {
+ title: "fas fa-object-group",
+ searchTerms: [ "design" ]
+ }, {
+ title: "far fa-object-group",
+ searchTerms: [ "design" ]
+ }, {
+ title: "fas fa-object-ungroup",
+ searchTerms: [ "design" ]
+ }, {
+ title: "far fa-object-ungroup",
+ searchTerms: [ "design" ]
+ }, {
+ title: "fab fa-odnoklassniki",
+ searchTerms: []
+ }, {
+ title: "fab fa-odnoklassniki-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-oil-can",
+ searchTerms: []
+ }, {
+ title: "fab fa-old-republic",
+ searchTerms: [ "politics", "star wars" ]
+ }, {
+ title: "fas fa-om",
+ searchTerms: [ "buddhism", "hinduism", "jainism", "mantra" ]
+ }, {
+ title: "fab fa-opencart",
+ searchTerms: []
+ }, {
+ title: "fab fa-openid",
+ searchTerms: []
+ }, {
+ title: "fab fa-opera",
+ searchTerms: []
+ }, {
+ title: "fab fa-optin-monster",
+ searchTerms: []
+ }, {
+ title: "fab fa-osi",
+ searchTerms: []
+ }, {
+ title: "fas fa-otter",
+ searchTerms: [ "fauna", "mammmal" ]
+ }, {
+ title: "fas fa-outdent",
+ searchTerms: []
+ }, {
+ title: "fab fa-page4",
+ searchTerms: []
+ }, {
+ title: "fab fa-pagelines",
+ searchTerms: [ "eco", "flora", "leaf", "leaves", "nature", "plant", "tree" ]
+ }, {
+ title: "fas fa-paint-brush",
+ searchTerms: []
+ }, {
+ title: "fas fa-paint-roller",
+ searchTerms: [ "brush", "painting", "tool" ]
+ }, {
+ title: "fas fa-palette",
+ searchTerms: [ "colors", "painting" ]
+ }, {
+ title: "fab fa-palfed",
+ searchTerms: []
+ }, {
+ title: "fas fa-pallet",
+ searchTerms: []
+ }, {
+ title: "fas fa-paper-plane",
+ searchTerms: []
+ }, {
+ title: "far fa-paper-plane",
+ searchTerms: []
+ }, {
+ title: "fas fa-paperclip",
+ searchTerms: [ "attachment" ]
+ }, {
+ title: "fas fa-parachute-box",
+ searchTerms: [ "aid", "assistance", "rescue", "supplies" ]
+ }, {
+ title: "fas fa-paragraph",
+ searchTerms: []
+ }, {
+ title: "fas fa-parking",
+ searchTerms: []
+ }, {
+ title: "fas fa-passport",
+ searchTerms: [ "document", "identification", "issued" ]
+ }, {
+ title: "fas fa-pastafarianism",
+ searchTerms: [ "agnosticism", "atheism", "flying spaghetti monster", "fsm" ]
+ }, {
+ title: "fas fa-paste",
+ searchTerms: [ "clipboard", "copy" ]
+ }, {
+ title: "fab fa-patreon",
+ searchTerms: []
+ }, {
+ title: "fas fa-pause",
+ searchTerms: [ "wait" ]
+ }, {
+ title: "fas fa-pause-circle",
+ searchTerms: []
+ }, {
+ title: "far fa-pause-circle",
+ searchTerms: []
+ }, {
+ title: "fas fa-paw",
+ searchTerms: [ "animal", "pet" ]
+ }, {
+ title: "fab fa-paypal",
+ searchTerms: []
+ }, {
+ title: "fas fa-peace",
+ searchTerms: []
+ }, {
+ title: "fas fa-pen",
+ searchTerms: [ "design", "edit", "update", "write" ]
+ }, {
+ title: "fas fa-pen-alt",
+ searchTerms: [ "design", "edit", "update", "write" ]
+ }, {
+ title: "fas fa-pen-fancy",
+ searchTerms: [ "design", "edit", "fountain pen", "update", "write" ]
+ }, {
+ title: "fas fa-pen-nib",
+ searchTerms: [ "design", "edit", "fountain pen", "update", "write" ]
+ }, {
+ title: "fas fa-pen-square",
+ searchTerms: [ "edit", "pencil-square", "update", "write" ]
+ }, {
+ title: "fas fa-pencil-alt",
+ searchTerms: [ "design", "edit", "pencil", "update", "write" ]
+ }, {
+ title: "fas fa-pencil-ruler",
+ searchTerms: []
+ }, {
+ title: "fab fa-penny-arcade",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "pax", "tabletop" ]
+ }, {
+ title: "fas fa-people-carry",
+ searchTerms: [ "movers" ]
+ }, {
+ title: "fas fa-percent",
+ searchTerms: []
+ }, {
+ title: "fas fa-percentage",
+ searchTerms: []
+ }, {
+ title: "fab fa-periscope",
+ searchTerms: []
+ }, {
+ title: "fas fa-person-booth",
+ searchTerms: [ "changing", "changing room", "election", "human", "person", "vote", "voting" ]
+ }, {
+ title: "fab fa-phabricator",
+ searchTerms: []
+ }, {
+ title: "fab fa-phoenix-framework",
+ searchTerms: []
+ }, {
+ title: "fab fa-phoenix-squadron",
+ searchTerms: []
+ }, {
+ title: "fas fa-phone",
+ searchTerms: [ "call", "earphone", "number", "support", "telephone", "voice" ]
+ }, {
+ title: "fas fa-phone-slash",
+ searchTerms: []
+ }, {
+ title: "fas fa-phone-square",
+ searchTerms: [ "call", "number", "support", "telephone", "voice" ]
+ }, {
+ title: "fas fa-phone-volume",
+ searchTerms: [ "telephone", "volume-control-phone" ]
+ }, {
+ title: "fab fa-php",
+ searchTerms: []
+ }, {
+ title: "fab fa-pied-piper",
+ searchTerms: []
+ }, {
+ title: "fab fa-pied-piper-alt",
+ searchTerms: []
+ }, {
+ title: "fab fa-pied-piper-hat",
+ searchTerms: [ "clothing" ]
+ }, {
+ title: "fab fa-pied-piper-pp",
+ searchTerms: []
+ }, {
+ title: "fas fa-piggy-bank",
+ searchTerms: [ "save", "savings" ]
+ }, {
+ title: "fas fa-pills",
+ searchTerms: [ "drugs", "medicine" ]
+ }, {
+ title: "fab fa-pinterest",
+ searchTerms: []
+ }, {
+ title: "fab fa-pinterest-p",
+ searchTerms: []
+ }, {
+ title: "fab fa-pinterest-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-place-of-worship",
+ searchTerms: []
+ }, {
+ title: "fas fa-plane",
+ searchTerms: [ "airplane", "destination", "fly", "location", "mode", "travel", "trip" ]
+ }, {
+ title: "fas fa-plane-arrival",
+ searchTerms: [ "airplane", "arriving", "destination", "fly", "land", "landing", "location", "mode", "travel", "trip" ]
+ }, {
+ title: "fas fa-plane-departure",
+ searchTerms: [ "airplane", "departing", "destination", "fly", "location", "mode", "take off", "taking off", "travel", "trip" ]
+ }, {
+ title: "fas fa-play",
+ searchTerms: [ "music", "playing", "sound", "start" ]
+ }, {
+ title: "fas fa-play-circle",
+ searchTerms: [ "playing", "start" ]
+ }, {
+ title: "far fa-play-circle",
+ searchTerms: [ "playing", "start" ]
+ }, {
+ title: "fab fa-playstation",
+ searchTerms: []
+ }, {
+ title: "fas fa-plug",
+ searchTerms: [ "connect", "online", "power" ]
+ }, {
+ title: "fas fa-plus",
+ searchTerms: [ "add", "create", "expand", "new", "positive" ]
+ }, {
+ title: "fas fa-plus-circle",
+ searchTerms: [ "add", "create", "expand", "new", "positive" ]
+ }, {
+ title: "fas fa-plus-square",
+ searchTerms: [ "add", "create", "expand", "new", "positive" ]
+ }, {
+ title: "far fa-plus-square",
+ searchTerms: [ "add", "create", "expand", "new", "positive" ]
+ }, {
+ title: "fas fa-podcast",
+ searchTerms: []
+ }, {
+ title: "fas fa-poll",
+ searchTerms: [ "results", "survey", "vote", "voting" ]
+ }, {
+ title: "fas fa-poll-h",
+ searchTerms: [ "results", "survey", "vote", "voting" ]
+ }, {
+ title: "fas fa-poo",
+ searchTerms: []
+ }, {
+ title: "fas fa-poo-storm",
+ searchTerms: [ "mess", "poop", "shit" ]
+ }, {
+ title: "fas fa-poop",
+ searchTerms: []
+ }, {
+ title: "fas fa-portrait",
+ searchTerms: []
+ }, {
+ title: "fas fa-pound-sign",
+ searchTerms: [ "gbp" ]
+ }, {
+ title: "fas fa-power-off",
+ searchTerms: [ "on", "reboot", "restart" ]
+ }, {
+ title: "fas fa-pray",
+ searchTerms: []
+ }, {
+ title: "fas fa-praying-hands",
+ searchTerms: []
+ }, {
+ title: "fas fa-prescription",
+ searchTerms: [ "drugs", "medical", "medicine", "rx" ]
+ }, {
+ title: "fas fa-prescription-bottle",
+ searchTerms: [ "drugs", "medical", "medicine", "rx" ]
+ }, {
+ title: "fas fa-prescription-bottle-alt",
+ searchTerms: [ "drugs", "medical", "medicine", "rx" ]
+ }, {
+ title: "fas fa-print",
+ searchTerms: []
+ }, {
+ title: "fas fa-procedures",
+ searchTerms: []
+ }, {
+ title: "fab fa-product-hunt",
+ searchTerms: []
+ }, {
+ title: "fas fa-project-diagram",
+ searchTerms: []
+ }, {
+ title: "fab fa-pushed",
+ searchTerms: []
+ }, {
+ title: "fas fa-puzzle-piece",
+ searchTerms: [ "add-on", "addon", "section" ]
+ }, {
+ title: "fab fa-python",
+ searchTerms: []
+ }, {
+ title: "fab fa-qq",
+ searchTerms: []
+ }, {
+ title: "fas fa-qrcode",
+ searchTerms: [ "scan" ]
+ }, {
+ title: "fas fa-question",
+ searchTerms: [ "help", "information", "support", "unknown" ]
+ }, {
+ title: "fas fa-question-circle",
+ searchTerms: [ "help", "information", "support", "unknown" ]
+ }, {
+ title: "far fa-question-circle",
+ searchTerms: [ "help", "information", "support", "unknown" ]
+ }, {
+ title: "fas fa-quidditch",
+ searchTerms: []
+ }, {
+ title: "fab fa-quinscape",
+ searchTerms: []
+ }, {
+ title: "fab fa-quora",
+ searchTerms: []
+ }, {
+ title: "fas fa-quote-left",
+ searchTerms: []
+ }, {
+ title: "fas fa-quote-right",
+ searchTerms: []
+ }, {
+ title: "fas fa-quran",
+ searchTerms: [ "book", "islam", "muslim" ]
+ }, {
+ title: "fab fa-r-project",
+ searchTerms: []
+ }, {
+ title: "fas fa-rainbow",
+ searchTerms: []
+ }, {
+ title: "fas fa-random",
+ searchTerms: [ "shuffle", "sort" ]
+ }, {
+ title: "fab fa-ravelry",
+ searchTerms: []
+ }, {
+ title: "fab fa-react",
+ searchTerms: []
+ }, {
+ title: "fab fa-reacteurope",
+ searchTerms: []
+ }, {
+ title: "fab fa-readme",
+ searchTerms: []
+ }, {
+ title: "fab fa-rebel",
+ searchTerms: []
+ }, {
+ title: "fas fa-receipt",
+ searchTerms: [ "check", "invoice", "table" ]
+ }, {
+ title: "fas fa-recycle",
+ searchTerms: []
+ }, {
+ title: "fab fa-red-river",
+ searchTerms: []
+ }, {
+ title: "fab fa-reddit",
+ searchTerms: []
+ }, {
+ title: "fab fa-reddit-alien",
+ searchTerms: []
+ }, {
+ title: "fab fa-reddit-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-redo",
+ searchTerms: [ "forward", "refresh", "reload", "repeat" ]
+ }, {
+ title: "fas fa-redo-alt",
+ searchTerms: [ "forward", "refresh", "reload", "repeat" ]
+ }, {
+ title: "fas fa-registered",
+ searchTerms: []
+ }, {
+ title: "far fa-registered",
+ searchTerms: []
+ }, {
+ title: "fab fa-renren",
+ searchTerms: []
+ }, {
+ title: "fas fa-reply",
+ searchTerms: []
+ }, {
+ title: "fas fa-reply-all",
+ searchTerms: []
+ }, {
+ title: "fab fa-replyd",
+ searchTerms: []
+ }, {
+ title: "fas fa-republican",
+ searchTerms: [ "american", "conservative", "election", "elephant", "politics", "republican party", "right", "right-wing", "usa" ]
+ }, {
+ title: "fab fa-researchgate",
+ searchTerms: []
+ }, {
+ title: "fab fa-resolving",
+ searchTerms: []
+ }, {
+ title: "fas fa-retweet",
+ searchTerms: [ "refresh", "reload", "share", "swap" ]
+ }, {
+ title: "fab fa-rev",
+ searchTerms: []
+ }, {
+ title: "fas fa-ribbon",
+ searchTerms: [ "badge", "cause", "lapel", "pin" ]
+ }, {
+ title: "fas fa-ring",
+ searchTerms: [ "Dungeons & Dragons", "Gollum", "band", "binding", "d&d", "dnd", "fantasy", "jewelry", "precious" ]
+ }, {
+ title: "fas fa-road",
+ searchTerms: [ "street" ]
+ }, {
+ title: "fas fa-robot",
+ searchTerms: []
+ }, {
+ title: "fas fa-rocket",
+ searchTerms: [ "app" ]
+ }, {
+ title: "fab fa-rocketchat",
+ searchTerms: []
+ }, {
+ title: "fab fa-rockrms",
+ searchTerms: []
+ }, {
+ title: "fas fa-route",
+ searchTerms: []
+ }, {
+ title: "fas fa-rss",
+ searchTerms: [ "blog" ]
+ }, {
+ title: "fas fa-rss-square",
+ searchTerms: [ "blog", "feed" ]
+ }, {
+ title: "fas fa-ruble-sign",
+ searchTerms: [ "rub" ]
+ }, {
+ title: "fas fa-ruler",
+ searchTerms: []
+ }, {
+ title: "fas fa-ruler-combined",
+ searchTerms: []
+ }, {
+ title: "fas fa-ruler-horizontal",
+ searchTerms: []
+ }, {
+ title: "fas fa-ruler-vertical",
+ searchTerms: []
+ }, {
+ title: "fas fa-running",
+ searchTerms: [ "jog", "sprint" ]
+ }, {
+ title: "fas fa-rupee-sign",
+ searchTerms: [ "indian", "inr" ]
+ }, {
+ title: "fas fa-sad-cry",
+ searchTerms: [ "emoticon", "face", "tear", "tears" ]
+ }, {
+ title: "far fa-sad-cry",
+ searchTerms: [ "emoticon", "face", "tear", "tears" ]
+ }, {
+ title: "fas fa-sad-tear",
+ searchTerms: [ "emoticon", "face", "tear", "tears" ]
+ }, {
+ title: "far fa-sad-tear",
+ searchTerms: [ "emoticon", "face", "tear", "tears" ]
+ }, {
+ title: "fab fa-safari",
+ searchTerms: [ "browser" ]
+ }, {
+ title: "fab fa-sass",
+ searchTerms: []
+ }, {
+ title: "fas fa-save",
+ searchTerms: [ "floppy", "floppy-o" ]
+ }, {
+ title: "far fa-save",
+ searchTerms: [ "floppy", "floppy-o" ]
+ }, {
+ title: "fab fa-schlix",
+ searchTerms: []
+ }, {
+ title: "fas fa-school",
+ searchTerms: []
+ }, {
+ title: "fas fa-screwdriver",
+ searchTerms: [ "admin", "fix", "repair", "settings", "tool" ]
+ }, {
+ title: "fab fa-scribd",
+ searchTerms: []
+ }, {
+ title: "fas fa-scroll",
+ searchTerms: [ "Dungeons & Dragons", "announcement", "d&d", "dnd", "fantasy", "paper" ]
+ }, {
+ title: "fas fa-search",
+ searchTerms: [ "bigger", "enlarge", "magnify", "preview", "zoom" ]
+ }, {
+ title: "fas fa-search-dollar",
+ searchTerms: []
+ }, {
+ title: "fas fa-search-location",
+ searchTerms: []
+ }, {
+ title: "fas fa-search-minus",
+ searchTerms: [ "minify", "negative", "smaller", "zoom", "zoom out" ]
+ }, {
+ title: "fas fa-search-plus",
+ searchTerms: [ "bigger", "enlarge", "magnify", "positive", "zoom", "zoom in" ]
+ }, {
+ title: "fab fa-searchengin",
+ searchTerms: []
+ }, {
+ title: "fas fa-seedling",
+ searchTerms: []
+ }, {
+ title: "fab fa-sellcast",
+ searchTerms: [ "eercast" ]
+ }, {
+ title: "fab fa-sellsy",
+ searchTerms: []
+ }, {
+ title: "fas fa-server",
+ searchTerms: [ "cpu" ]
+ }, {
+ title: "fab fa-servicestack",
+ searchTerms: []
+ }, {
+ title: "fas fa-shapes",
+ searchTerms: [ "circle", "square", "triangle" ]
+ }, {
+ title: "fas fa-share",
+ searchTerms: []
+ }, {
+ title: "fas fa-share-alt",
+ searchTerms: []
+ }, {
+ title: "fas fa-share-alt-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-share-square",
+ searchTerms: [ "send", "social" ]
+ }, {
+ title: "far fa-share-square",
+ searchTerms: [ "send", "social" ]
+ }, {
+ title: "fas fa-shekel-sign",
+ searchTerms: [ "ils" ]
+ }, {
+ title: "fas fa-shield-alt",
+ searchTerms: [ "achievement", "award", "block", "defend", "security", "winner" ]
+ }, {
+ title: "fas fa-ship",
+ searchTerms: [ "boat", "sea" ]
+ }, {
+ title: "fas fa-shipping-fast",
+ searchTerms: []
+ }, {
+ title: "fab fa-shirtsinbulk",
+ searchTerms: []
+ }, {
+ title: "fas fa-shoe-prints",
+ searchTerms: [ "feet", "footprints", "steps" ]
+ }, {
+ title: "fas fa-shopping-bag",
+ searchTerms: []
+ }, {
+ title: "fas fa-shopping-basket",
+ searchTerms: []
+ }, {
+ title: "fas fa-shopping-cart",
+ searchTerms: [ "buy", "checkout", "payment", "purchase" ]
+ }, {
+ title: "fab fa-shopware",
+ searchTerms: []
+ }, {
+ title: "fas fa-shower",
+ searchTerms: []
+ }, {
+ title: "fas fa-shuttle-van",
+ searchTerms: [ "machine", "public-transportation", "transportation", "vehicle" ]
+ }, {
+ title: "fas fa-sign",
+ searchTerms: []
+ }, {
+ title: "fas fa-sign-in-alt",
+ searchTerms: [ "arrow", "enter", "join", "log in", "login", "sign in", "sign up", "sign-in", "signin", "signup" ]
+ }, {
+ title: "fas fa-sign-language",
+ searchTerms: []
+ }, {
+ title: "fas fa-sign-out-alt",
+ searchTerms: [ "arrow", "exit", "leave", "log out", "logout", "sign-out" ]
+ }, {
+ title: "fas fa-signal",
+ searchTerms: [ "bars", "graph", "online", "status" ]
+ }, {
+ title: "fas fa-signature",
+ searchTerms: [ "John Hancock", "cursive", "name", "writing" ]
+ }, {
+ title: "fab fa-simplybuilt",
+ searchTerms: []
+ }, {
+ title: "fab fa-sistrix",
+ searchTerms: []
+ }, {
+ title: "fas fa-sitemap",
+ searchTerms: [ "directory", "hierarchy", "ia", "information architecture", "organization" ]
+ }, {
+ title: "fab fa-sith",
+ searchTerms: []
+ }, {
+ title: "fas fa-skull",
+ searchTerms: [ "bones", "skeleton", "yorick" ]
+ }, {
+ title: "fas fa-skull-crossbones",
+ searchTerms: [ "Dungeons & Dragons", "alert", "bones", "d&d", "danger", "dead", "deadly", "death", "dnd", "fantasy", "halloween", "holiday", "jolly-roger", "pirate", "poison", "skeleton", "warning" ]
+ }, {
+ title: "fab fa-skyatlas",
+ searchTerms: []
+ }, {
+ title: "fab fa-skype",
+ searchTerms: []
+ }, {
+ title: "fab fa-slack",
+ searchTerms: [ "anchor", "hash", "hashtag" ]
+ }, {
+ title: "fab fa-slack-hash",
+ searchTerms: [ "anchor", "hash", "hashtag" ]
+ }, {
+ title: "fas fa-slash",
+ searchTerms: []
+ }, {
+ title: "fas fa-sliders-h",
+ searchTerms: [ "settings", "sliders" ]
+ }, {
+ title: "fab fa-slideshare",
+ searchTerms: []
+ }, {
+ title: "fas fa-smile",
+ searchTerms: [ "approve", "emoticon", "face", "happy", "rating", "satisfied" ]
+ }, {
+ title: "far fa-smile",
+ searchTerms: [ "approve", "emoticon", "face", "happy", "rating", "satisfied" ]
+ }, {
+ title: "fas fa-smile-beam",
+ searchTerms: [ "emoticon", "face", "happy", "positive" ]
+ }, {
+ title: "far fa-smile-beam",
+ searchTerms: [ "emoticon", "face", "happy", "positive" ]
+ }, {
+ title: "fas fa-smile-wink",
+ searchTerms: [ "emoticon", "face", "happy" ]
+ }, {
+ title: "far fa-smile-wink",
+ searchTerms: [ "emoticon", "face", "happy" ]
+ }, {
+ title: "fas fa-smog",
+ searchTerms: [ "dragon" ]
+ }, {
+ title: "fas fa-smoking",
+ searchTerms: [ "cigarette", "nicotine", "smoking status" ]
+ }, {
+ title: "fas fa-smoking-ban",
+ searchTerms: [ "no smoking", "non-smoking" ]
+ }, {
+ title: "fab fa-snapchat",
+ searchTerms: []
+ }, {
+ title: "fab fa-snapchat-ghost",
+ searchTerms: []
+ }, {
+ title: "fab fa-snapchat-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-snowflake",
+ searchTerms: [ "precipitation", "seasonal", "winter" ]
+ }, {
+ title: "far fa-snowflake",
+ searchTerms: [ "precipitation", "seasonal", "winter" ]
+ }, {
+ title: "fas fa-socks",
+ searchTerms: [ "business socks", "business time", "flight of the conchords", "wednesday" ]
+ }, {
+ title: "fas fa-solar-panel",
+ searchTerms: [ "clean", "eco-friendly", "energy", "green", "sun" ]
+ }, {
+ title: "fas fa-sort",
+ searchTerms: [ "order" ]
+ }, {
+ title: "fas fa-sort-alpha-down",
+ searchTerms: [ "sort-alpha-asc" ]
+ }, {
+ title: "fas fa-sort-alpha-up",
+ searchTerms: [ "sort-alpha-desc" ]
+ }, {
+ title: "fas fa-sort-amount-down",
+ searchTerms: [ "sort-amount-asc" ]
+ }, {
+ title: "fas fa-sort-amount-up",
+ searchTerms: [ "sort-amount-desc" ]
+ }, {
+ title: "fas fa-sort-down",
+ searchTerms: [ "arrow", "descending", "sort-desc" ]
+ }, {
+ title: "fas fa-sort-numeric-down",
+ searchTerms: [ "numbers", "sort-numeric-asc" ]
+ }, {
+ title: "fas fa-sort-numeric-up",
+ searchTerms: [ "numbers", "sort-numeric-desc" ]
+ }, {
+ title: "fas fa-sort-up",
+ searchTerms: [ "arrow", "ascending", "sort-asc" ]
+ }, {
+ title: "fab fa-soundcloud",
+ searchTerms: []
+ }, {
+ title: "fas fa-spa",
+ searchTerms: [ "flora", "mindfullness", "plant", "wellness" ]
+ }, {
+ title: "fas fa-space-shuttle",
+ searchTerms: [ "astronaut", "machine", "nasa", "rocket", "transportation" ]
+ }, {
+ title: "fab fa-speakap",
+ searchTerms: []
+ }, {
+ title: "fas fa-spider",
+ searchTerms: [ "arachnid", "bug", "charlotte", "crawl", "eight", "halloween", "holiday" ]
+ }, {
+ title: "fas fa-spinner",
+ searchTerms: [ "loading", "progress" ]
+ }, {
+ title: "fas fa-splotch",
+ searchTerms: []
+ }, {
+ title: "fab fa-spotify",
+ searchTerms: []
+ }, {
+ title: "fas fa-spray-can",
+ searchTerms: []
+ }, {
+ title: "fas fa-square",
+ searchTerms: [ "block", "box" ]
+ }, {
+ title: "far fa-square",
+ searchTerms: [ "block", "box" ]
+ }, {
+ title: "fas fa-square-full",
+ searchTerms: []
+ }, {
+ title: "fas fa-square-root-alt",
+ searchTerms: []
+ }, {
+ title: "fab fa-squarespace",
+ searchTerms: []
+ }, {
+ title: "fab fa-stack-exchange",
+ searchTerms: []
+ }, {
+ title: "fab fa-stack-overflow",
+ searchTerms: []
+ }, {
+ title: "fas fa-stamp",
+ searchTerms: []
+ }, {
+ title: "fas fa-star",
+ searchTerms: [ "achievement", "award", "favorite", "important", "night", "rating", "score" ]
+ }, {
+ title: "far fa-star",
+ searchTerms: [ "achievement", "award", "favorite", "important", "night", "rating", "score" ]
+ }, {
+ title: "fas fa-star-and-crescent",
+ searchTerms: [ "islam", "muslim" ]
+ }, {
+ title: "fas fa-star-half",
+ searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ]
+ }, {
+ title: "far fa-star-half",
+ searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ]
+ }, {
+ title: "fas fa-star-half-alt",
+ searchTerms: [ "achievement", "award", "rating", "score", "star-half-empty", "star-half-full" ]
+ }, {
+ title: "fas fa-star-of-david",
+ searchTerms: [ "jewish", "judaism" ]
+ }, {
+ title: "fas fa-star-of-life",
+ searchTerms: []
+ }, {
+ title: "fab fa-staylinked",
+ searchTerms: []
+ }, {
+ title: "fab fa-steam",
+ searchTerms: []
+ }, {
+ title: "fab fa-steam-square",
+ searchTerms: []
+ }, {
+ title: "fab fa-steam-symbol",
+ searchTerms: []
+ }, {
+ title: "fas fa-step-backward",
+ searchTerms: [ "beginning", "first", "previous", "rewind", "start" ]
+ }, {
+ title: "fas fa-step-forward",
+ searchTerms: [ "end", "last", "next" ]
+ }, {
+ title: "fas fa-stethoscope",
+ searchTerms: []
+ }, {
+ title: "fab fa-sticker-mule",
+ searchTerms: []
+ }, {
+ title: "fas fa-sticky-note",
+ searchTerms: []
+ }, {
+ title: "far fa-sticky-note",
+ searchTerms: []
+ }, {
+ title: "fas fa-stop",
+ searchTerms: [ "block", "box", "square" ]
+ }, {
+ title: "fas fa-stop-circle",
+ searchTerms: []
+ }, {
+ title: "far fa-stop-circle",
+ searchTerms: []
+ }, {
+ title: "fas fa-stopwatch",
+ searchTerms: [ "time" ]
+ }, {
+ title: "fas fa-store",
+ searchTerms: []
+ }, {
+ title: "fas fa-store-alt",
+ searchTerms: []
+ }, {
+ title: "fab fa-strava",
+ searchTerms: []
+ }, {
+ title: "fas fa-stream",
+ searchTerms: []
+ }, {
+ title: "fas fa-street-view",
+ searchTerms: [ "map" ]
+ }, {
+ title: "fas fa-strikethrough",
+ searchTerms: []
+ }, {
+ title: "fab fa-stripe",
+ searchTerms: []
+ }, {
+ title: "fab fa-stripe-s",
+ searchTerms: []
+ }, {
+ title: "fas fa-stroopwafel",
+ searchTerms: [ "dessert", "food", "sweets", "waffle" ]
+ }, {
+ title: "fab fa-studiovinari",
+ searchTerms: []
+ }, {
+ title: "fab fa-stumbleupon",
+ searchTerms: []
+ }, {
+ title: "fab fa-stumbleupon-circle",
+ searchTerms: []
+ }, {
+ title: "fas fa-subscript",
+ searchTerms: []
+ }, {
+ title: "fas fa-subway",
+ searchTerms: [ "machine", "railway", "train", "transportation", "vehicle" ]
+ }, {
+ title: "fas fa-suitcase",
+ searchTerms: [ "baggage", "luggage", "move", "suitcase", "travel", "trip" ]
+ }, {
+ title: "fas fa-suitcase-rolling",
+ searchTerms: []
+ }, {
+ title: "fas fa-sun",
+ searchTerms: [ "brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather" ]
+ }, {
+ title: "far fa-sun",
+ searchTerms: [ "brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather" ]
+ }, {
+ title: "fab fa-superpowers",
+ searchTerms: []
+ }, {
+ title: "fas fa-superscript",
+ searchTerms: [ "exponential" ]
+ }, {
+ title: "fab fa-supple",
+ searchTerms: []
+ }, {
+ title: "fas fa-surprise",
+ searchTerms: [ "emoticon", "face", "shocked" ]
+ }, {
+ title: "far fa-surprise",
+ searchTerms: [ "emoticon", "face", "shocked" ]
+ }, {
+ title: "fas fa-swatchbook",
+ searchTerms: []
+ }, {
+ title: "fas fa-swimmer",
+ searchTerms: [ "athlete", "head", "man", "person", "water" ]
+ }, {
+ title: "fas fa-swimming-pool",
+ searchTerms: [ "ladder", "recreation", "water" ]
+ }, {
+ title: "fas fa-synagogue",
+ searchTerms: [ "building", "jewish", "judaism", "star of david", "temple" ]
+ }, {
+ title: "fas fa-sync",
+ searchTerms: [ "exchange", "refresh", "reload", "rotate", "swap" ]
+ }, {
+ title: "fas fa-sync-alt",
+ searchTerms: [ "refresh", "reload", "rotate" ]
+ }, {
+ title: "fas fa-syringe",
+ searchTerms: [ "immunizations", "needle" ]
+ }, {
+ title: "fas fa-table",
+ searchTerms: [ "data", "excel", "spreadsheet" ]
+ }, {
+ title: "fas fa-table-tennis",
+ searchTerms: []
+ }, {
+ title: "fas fa-tablet",
+ searchTerms: [ "apple", "device", "ipad", "kindle", "screen" ]
+ }, {
+ title: "fas fa-tablet-alt",
+ searchTerms: [ "apple", "device", "ipad", "kindle", "screen" ]
+ }, {
+ title: "fas fa-tablets",
+ searchTerms: [ "drugs", "medicine" ]
+ }, {
+ title: "fas fa-tachometer-alt",
+ searchTerms: [ "dashboard", "tachometer" ]
+ }, {
+ title: "fas fa-tag",
+ searchTerms: [ "label" ]
+ }, {
+ title: "fas fa-tags",
+ searchTerms: [ "labels" ]
+ }, {
+ title: "fas fa-tape",
+ searchTerms: []
+ }, {
+ title: "fas fa-tasks",
+ searchTerms: [ "downloading", "downloads", "loading", "progress", "settings" ]
+ }, {
+ title: "fas fa-taxi",
+ searchTerms: [ "cab", "cabbie", "car", "car service", "lyft", "machine", "transportation", "uber", "vehicle" ]
+ }, {
+ title: "fab fa-teamspeak",
+ searchTerms: []
+ }, {
+ title: "fas fa-teeth",
+ searchTerms: []
+ }, {
+ title: "fas fa-teeth-open",
+ searchTerms: []
+ }, {
+ title: "fab fa-telegram",
+ searchTerms: []
+ }, {
+ title: "fab fa-telegram-plane",
+ searchTerms: []
+ }, {
+ title: "fas fa-temperature-high",
+ searchTerms: [ "mercury", "thermometer", "warm" ]
+ }, {
+ title: "fas fa-temperature-low",
+ searchTerms: [ "cool", "mercury", "thermometer" ]
+ }, {
+ title: "fab fa-tencent-weibo",
+ searchTerms: []
+ }, {
+ title: "fas fa-terminal",
+ searchTerms: [ "code", "command", "console", "prompt" ]
+ }, {
+ title: "fas fa-text-height",
+ searchTerms: []
+ }, {
+ title: "fas fa-text-width",
+ searchTerms: []
+ }, {
+ title: "fas fa-th",
+ searchTerms: [ "blocks", "boxes", "grid", "squares" ]
+ }, {
+ title: "fas fa-th-large",
+ searchTerms: [ "blocks", "boxes", "grid", "squares" ]
+ }, {
+ title: "fas fa-th-list",
+ searchTerms: [ "checklist", "completed", "done", "finished", "ol", "todo", "ul" ]
+ }, {
+ title: "fab fa-the-red-yeti",
+ searchTerms: []
+ }, {
+ title: "fas fa-theater-masks",
+ searchTerms: []
+ }, {
+ title: "fab fa-themeco",
+ searchTerms: []
+ }, {
+ title: "fab fa-themeisle",
+ searchTerms: []
+ }, {
+ title: "fas fa-thermometer",
+ searchTerms: [ "mercury", "status", "temperature" ]
+ }, {
+ title: "fas fa-thermometer-empty",
+ searchTerms: [ "mercury", "status", "temperature" ]
+ }, {
+ title: "fas fa-thermometer-full",
+ searchTerms: [ "fever", "mercury", "status", "temperature" ]
+ }, {
+ title: "fas fa-thermometer-half",
+ searchTerms: [ "mercury", "status", "temperature" ]
+ }, {
+ title: "fas fa-thermometer-quarter",
+ searchTerms: [ "mercury", "status", "temperature" ]
+ }, {
+ title: "fas fa-thermometer-three-quarters",
+ searchTerms: [ "mercury", "status", "temperature" ]
+ }, {
+ title: "fab fa-think-peaks",
+ searchTerms: []
+ }, {
+ title: "fas fa-thumbs-down",
+ searchTerms: [ "disagree", "disapprove", "dislike", "hand", "thumbs-o-down" ]
+ }, {
+ title: "far fa-thumbs-down",
+ searchTerms: [ "disagree", "disapprove", "dislike", "hand", "thumbs-o-down" ]
+ }, {
+ title: "fas fa-thumbs-up",
+ searchTerms: [ "agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude" ]
+ }, {
+ title: "far fa-thumbs-up",
+ searchTerms: [ "agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude" ]
+ }, {
+ title: "fas fa-thumbtack",
+ searchTerms: [ "coordinates", "location", "marker", "pin", "thumb-tack" ]
+ }, {
+ title: "fas fa-ticket-alt",
+ searchTerms: [ "ticket" ]
+ }, {
+ title: "fas fa-times",
+ searchTerms: [ "close", "cross", "error", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ]
+ }, {
+ title: "fas fa-times-circle",
+ searchTerms: [ "close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ]
+ }, {
+ title: "far fa-times-circle",
+ searchTerms: [ "close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x" ]
+ }, {
+ title: "fas fa-tint",
+ searchTerms: [ "drop", "droplet", "raindrop", "waterdrop" ]
+ }, {
+ title: "fas fa-tint-slash",
+ searchTerms: []
+ }, {
+ title: "fas fa-tired",
+ searchTerms: [ "emoticon", "face", "grumpy" ]
+ }, {
+ title: "far fa-tired",
+ searchTerms: [ "emoticon", "face", "grumpy" ]
+ }, {
+ title: "fas fa-toggle-off",
+ searchTerms: [ "switch" ]
+ }, {
+ title: "fas fa-toggle-on",
+ searchTerms: [ "switch" ]
+ }, {
+ title: "fas fa-toilet-paper",
+ searchTerms: [ "bathroom", "halloween", "holiday", "lavatory", "prank", "restroom", "roll" ]
+ }, {
+ title: "fas fa-toolbox",
+ searchTerms: [ "admin", "container", "fix", "repair", "settings", "tools" ]
+ }, {
+ title: "fas fa-tooth",
+ searchTerms: [ "bicuspid", "dental", "molar", "mouth", "teeth" ]
+ }, {
+ title: "fas fa-torah",
+ searchTerms: [ "book", "jewish", "judaism" ]
+ }, {
+ title: "fas fa-torii-gate",
+ searchTerms: [ "building", "shintoism" ]
+ }, {
+ title: "fas fa-tractor",
+ searchTerms: []
+ }, {
+ title: "fab fa-trade-federation",
+ searchTerms: []
+ }, {
+ title: "fas fa-trademark",
+ searchTerms: []
+ }, {
+ title: "fas fa-traffic-light",
+ searchTerms: []
+ }, {
+ title: "fas fa-train",
+ searchTerms: [ "bullet", "locomotive", "railway" ]
+ }, {
+ title: "fas fa-transgender",
+ searchTerms: [ "intersex" ]
+ }, {
+ title: "fas fa-transgender-alt",
+ searchTerms: []
+ }, {
+ title: "fas fa-trash",
+ searchTerms: [ "delete", "garbage", "hide", "remove" ]
+ }, {
+ title: "fas fa-trash-alt",
+ searchTerms: [ "delete", "garbage", "hide", "remove", "trash", "trash-o" ]
+ }, {
+ title: "far fa-trash-alt",
+ searchTerms: [ "delete", "garbage", "hide", "remove", "trash", "trash-o" ]
+ }, {
+ title: "fas fa-tree",
+ searchTerms: [ "bark", "fall", "flora", "forest", "nature", "plant", "seasonal" ]
+ }, {
+ title: "fab fa-trello",
+ searchTerms: []
+ }, {
+ title: "fab fa-tripadvisor",
+ searchTerms: []
+ }, {
+ title: "fas fa-trophy",
+ searchTerms: [ "achievement", "award", "cup", "game", "winner" ]
+ }, {
+ title: "fas fa-truck",
+ searchTerms: [ "delivery", "shipping" ]
+ }, {
+ title: "fas fa-truck-loading",
+ searchTerms: []
+ }, {
+ title: "fas fa-truck-monster",
+ searchTerms: []
+ }, {
+ title: "fas fa-truck-moving",
+ searchTerms: []
+ }, {
+ title: "fas fa-truck-pickup",
+ searchTerms: []
+ }, {
+ title: "fas fa-tshirt",
+ searchTerms: [ "cloth", "clothing" ]
+ }, {
+ title: "fas fa-tty",
+ searchTerms: []
+ }, {
+ title: "fab fa-tumblr",
+ searchTerms: []
+ }, {
+ title: "fab fa-tumblr-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-tv",
+ searchTerms: [ "computer", "display", "monitor", "television" ]
+ }, {
+ title: "fab fa-twitch",
+ searchTerms: []
+ }, {
+ title: "fab fa-twitter",
+ searchTerms: [ "social network", "tweet" ]
+ }, {
+ title: "fab fa-twitter-square",
+ searchTerms: [ "social network", "tweet" ]
+ }, {
+ title: "fab fa-typo3",
+ searchTerms: []
+ }, {
+ title: "fab fa-uber",
+ searchTerms: []
+ }, {
+ title: "fab fa-uikit",
+ searchTerms: []
+ }, {
+ title: "fas fa-umbrella",
+ searchTerms: [ "protection", "rain" ]
+ }, {
+ title: "fas fa-umbrella-beach",
+ searchTerms: [ "protection", "recreation", "sun" ]
+ }, {
+ title: "fas fa-underline",
+ searchTerms: []
+ }, {
+ title: "fas fa-undo",
+ searchTerms: [ "back", "control z", "exchange", "oops", "return", "rotate", "swap" ]
+ }, {
+ title: "fas fa-undo-alt",
+ searchTerms: [ "back", "control z", "exchange", "oops", "return", "swap" ]
+ }, {
+ title: "fab fa-uniregistry",
+ searchTerms: []
+ }, {
+ title: "fas fa-universal-access",
+ searchTerms: []
+ }, {
+ title: "fas fa-university",
+ searchTerms: [ "bank", "institution" ]
+ }, {
+ title: "fas fa-unlink",
+ searchTerms: [ "chain", "chain-broken", "remove" ]
+ }, {
+ title: "fas fa-unlock",
+ searchTerms: [ "admin", "lock", "password", "protect" ]
+ }, {
+ title: "fas fa-unlock-alt",
+ searchTerms: [ "admin", "lock", "password", "protect" ]
+ }, {
+ title: "fab fa-untappd",
+ searchTerms: []
+ }, {
+ title: "fas fa-upload",
+ searchTerms: [ "export", "publish" ]
+ }, {
+ title: "fab fa-usb",
+ searchTerms: []
+ }, {
+ title: "fas fa-user",
+ searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
+ }, {
+ title: "far fa-user",
+ searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
+ }, {
+ title: "fas fa-user-alt",
+ searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
+ }, {
+ title: "fas fa-user-alt-slash",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-astronaut",
+ searchTerms: [ "avatar", "clothing", "cosmonaut", "space", "suit" ]
+ }, {
+ title: "fas fa-user-check",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-circle",
+ searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
+ }, {
+ title: "far fa-user-circle",
+ searchTerms: [ "account", "avatar", "head", "human", "man", "person", "profile" ]
+ }, {
+ title: "fas fa-user-clock",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-cog",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-edit",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-friends",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-graduate",
+ searchTerms: [ "cap", "clothing", "commencement", "gown", "graduation", "student" ]
+ }, {
+ title: "fas fa-user-injured",
+ searchTerms: [ "cast", "ouch", "sling" ]
+ }, {
+ title: "fas fa-user-lock",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-md",
+ searchTerms: [ "doctor", "job", "medical", "nurse", "occupation", "profile" ]
+ }, {
+ title: "fas fa-user-minus",
+ searchTerms: [ "delete", "negative", "remove" ]
+ }, {
+ title: "fas fa-user-ninja",
+ searchTerms: [ "assassin", "avatar", "dangerous", "deadly", "sneaky" ]
+ }, {
+ title: "fas fa-user-plus",
+ searchTerms: [ "positive", "sign up", "signup" ]
+ }, {
+ title: "fas fa-user-secret",
+ searchTerms: [ "clothing", "coat", "hat", "incognito", "privacy", "spy", "whisper" ]
+ }, {
+ title: "fas fa-user-shield",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-slash",
+ searchTerms: [ "ban", "remove" ]
+ }, {
+ title: "fas fa-user-tag",
+ searchTerms: []
+ }, {
+ title: "fas fa-user-tie",
+ searchTerms: [ "avatar", "business", "clothing", "formal" ]
+ }, {
+ title: "fas fa-user-times",
+ searchTerms: [ "archive", "delete", "remove", "x" ]
+ }, {
+ title: "fas fa-users",
+ searchTerms: [ "people", "persons", "profiles" ]
+ }, {
+ title: "fas fa-users-cog",
+ searchTerms: []
+ }, {
+ title: "fab fa-ussunnah",
+ searchTerms: []
+ }, {
+ title: "fas fa-utensil-spoon",
+ searchTerms: [ "spoon" ]
+ }, {
+ title: "fas fa-utensils",
+ searchTerms: [ "cutlery", "dinner", "eat", "food", "knife", "restaurant", "spoon" ]
+ }, {
+ title: "fab fa-vaadin",
+ searchTerms: []
+ }, {
+ title: "fas fa-vector-square",
+ searchTerms: [ "anchors", "lines", "object" ]
+ }, {
+ title: "fas fa-venus",
+ searchTerms: [ "female" ]
+ }, {
+ title: "fas fa-venus-double",
+ searchTerms: []
+ }, {
+ title: "fas fa-venus-mars",
+ searchTerms: []
+ }, {
+ title: "fab fa-viacoin",
+ searchTerms: []
+ }, {
+ title: "fab fa-viadeo",
+ searchTerms: []
+ }, {
+ title: "fab fa-viadeo-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-vial",
+ searchTerms: [ "test tube" ]
+ }, {
+ title: "fas fa-vials",
+ searchTerms: [ "lab results", "test tubes" ]
+ }, {
+ title: "fab fa-viber",
+ searchTerms: []
+ }, {
+ title: "fas fa-video",
+ searchTerms: [ "camera", "film", "movie", "record", "video-camera" ]
+ }, {
+ title: "fas fa-video-slash",
+ searchTerms: []
+ }, {
+ title: "fas fa-vihara",
+ searchTerms: [ "buddhism", "buddhist", "building", "monastery" ]
+ }, {
+ title: "fab fa-vimeo",
+ searchTerms: []
+ }, {
+ title: "fab fa-vimeo-square",
+ searchTerms: []
+ }, {
+ title: "fab fa-vimeo-v",
+ searchTerms: [ "vimeo" ]
+ }, {
+ title: "fab fa-vine",
+ searchTerms: []
+ }, {
+ title: "fab fa-vk",
+ searchTerms: []
+ }, {
+ title: "fab fa-vnv",
+ searchTerms: []
+ }, {
+ title: "fas fa-volleyball-ball",
+ searchTerms: []
+ }, {
+ title: "fas fa-volume-down",
+ searchTerms: [ "audio", "lower", "music", "quieter", "sound", "speaker" ]
+ }, {
+ title: "fas fa-volume-mute",
+ searchTerms: []
+ }, {
+ title: "fas fa-volume-off",
+ searchTerms: [ "audio", "music", "mute", "sound" ]
+ }, {
+ title: "fas fa-volume-up",
+ searchTerms: [ "audio", "higher", "louder", "music", "sound", "speaker" ]
+ }, {
+ title: "fas fa-vote-yea",
+ searchTerms: [ "accept", "cast", "election", "politics", "positive", "yes" ]
+ }, {
+ title: "fas fa-vr-cardboard",
+ searchTerms: [ "google", "reality", "virtual" ]
+ }, {
+ title: "fab fa-vuejs",
+ searchTerms: []
+ }, {
+ title: "fas fa-walking",
+ searchTerms: []
+ }, {
+ title: "fas fa-wallet",
+ searchTerms: []
+ }, {
+ title: "fas fa-warehouse",
+ searchTerms: []
+ }, {
+ title: "fas fa-water",
+ searchTerms: []
+ }, {
+ title: "fab fa-weebly",
+ searchTerms: []
+ }, {
+ title: "fab fa-weibo",
+ searchTerms: []
+ }, {
+ title: "fas fa-weight",
+ searchTerms: [ "measurement", "scale", "weight" ]
+ }, {
+ title: "fas fa-weight-hanging",
+ searchTerms: [ "anvil", "heavy", "measurement" ]
+ }, {
+ title: "fab fa-weixin",
+ searchTerms: []
+ }, {
+ title: "fab fa-whatsapp",
+ searchTerms: []
+ }, {
+ title: "fab fa-whatsapp-square",
+ searchTerms: []
+ }, {
+ title: "fas fa-wheelchair",
+ searchTerms: [ "handicap", "person" ]
+ }, {
+ title: "fab fa-whmcs",
+ searchTerms: []
+ }, {
+ title: "fas fa-wifi",
+ searchTerms: []
+ }, {
+ title: "fab fa-wikipedia-w",
+ searchTerms: []
+ }, {
+ title: "fas fa-wind",
+ searchTerms: [ "air", "blow", "breeze", "fall", "seasonal" ]
+ }, {
+ title: "fas fa-window-close",
+ searchTerms: []
+ }, {
+ title: "far fa-window-close",
+ searchTerms: []
+ }, {
+ title: "fas fa-window-maximize",
+ searchTerms: []
+ }, {
+ title: "far fa-window-maximize",
+ searchTerms: []
+ }, {
+ title: "fas fa-window-minimize",
+ searchTerms: []
+ }, {
+ title: "far fa-window-minimize",
+ searchTerms: []
+ }, {
+ title: "fas fa-window-restore",
+ searchTerms: []
+ }, {
+ title: "far fa-window-restore",
+ searchTerms: []
+ }, {
+ title: "fab fa-windows",
+ searchTerms: [ "microsoft" ]
+ }, {
+ title: "fas fa-wine-bottle",
+ searchTerms: [ "alcohol", "beverage", "drink", "glass", "grapes" ]
+ }, {
+ title: "fas fa-wine-glass",
+ searchTerms: [ "alcohol", "beverage", "drink", "grapes" ]
+ }, {
+ title: "fas fa-wine-glass-alt",
+ searchTerms: [ "alcohol", "beverage", "drink", "grapes" ]
+ }, {
+ title: "fab fa-wix",
+ searchTerms: []
+ }, {
+ title: "fab fa-wizards-of-the-coast",
+ searchTerms: [ "Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop" ]
+ }, {
+ title: "fab fa-wolf-pack-battalion",
+ searchTerms: []
+ }, {
+ title: "fas fa-won-sign",
+ searchTerms: [ "krw" ]
+ }, {
+ title: "fab fa-wordpress",
+ searchTerms: []
+ }, {
+ title: "fab fa-wordpress-simple",
+ searchTerms: []
+ }, {
+ title: "fab fa-wpbeginner",
+ searchTerms: []
+ }, {
+ title: "fab fa-wpexplorer",
+ searchTerms: []
+ }, {
+ title: "fab fa-wpforms",
+ searchTerms: []
+ }, {
+ title: "fab fa-wpressr",
+ searchTerms: [ "rendact" ]
+ }, {
+ title: "fas fa-wrench",
+ searchTerms: [ "fix", "settings", "spanner", "tool", "update" ]
+ }, {
+ title: "fas fa-x-ray",
+ searchTerms: [ "radiological images", "radiology" ]
+ }, {
+ title: "fab fa-xbox",
+ searchTerms: []
+ }, {
+ title: "fab fa-xing",
+ searchTerms: []
+ }, {
+ title: "fab fa-xing-square",
+ searchTerms: []
+ }, {
+ title: "fab fa-y-combinator",
+ searchTerms: []
+ }, {
+ title: "fab fa-yahoo",
+ searchTerms: []
+ }, {
+ title: "fab fa-yandex",
+ searchTerms: []
+ }, {
+ title: "fab fa-yandex-international",
+ searchTerms: []
+ }, {
+ title: "fab fa-yelp",
+ searchTerms: []
+ }, {
+ title: "fas fa-yen-sign",
+ searchTerms: [ "jpy", "money" ]
+ }, {
+ title: "fas fa-yin-yang",
+ searchTerms: [ "daoism", "opposites", "taoism" ]
+ }, {
+ title: "fab fa-yoast",
+ searchTerms: []
+ }, {
+ title: "fab fa-youtube",
+ searchTerms: [ "film", "video", "youtube-play", "youtube-square" ]
+ }, {
+ title: "fab fa-youtube-square",
+ searchTerms: []
+ }, {
+ title: "fab fa-zhihu",
+ searchTerms: []
+ } ]
+ });
+});
\ No newline at end of file
diff --git a/octoprint_bedlevelvisualizer/static/js/jquery-ui.min.js b/octoprint_bedlevelvisualizer/static/js/jquery-ui.min.js
new file mode 100644
index 0000000..d3e8f68
--- /dev/null
+++ b/octoprint_bedlevelvisualizer/static/js/jquery-ui.min.js
@@ -0,0 +1,8 @@
+/*! jQuery UI - v1.12.1 - 2018-11-18
+* http://jqueryui.com
+* Includes: widget.js, data.js, disable-selection.js, scroll-parent.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){t.ui=t.ui||{},t.ui.version="1.12.1";var e=0,i=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},l=e.split(".")[0];e=e.split(".")[1];var h=l+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][h.toLowerCase()]=function(e){return!!t.data(e,h)},t[l]=t[l]||{},n=t[l][e],o=t[l][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:l,widgetName:e,widgetFullName:h}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var s,n,o=i.call(arguments,1),a=0,r=o.length;r>a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var s=!1;t(document).on("mouseup",function(){s=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!s){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,n=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return n&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),s=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,s=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),l=t.pageX,h=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left
i[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(l=this.originalPageX),"x"===a.axis&&(h=this.originalPageY)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)l=s.snapElements[d].left-s.margins.left,h=l+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,l-g>_||m>h+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(l-_),r=g>=Math.abs(h-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(l-m),r=g>=Math.abs(h-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))
+},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,o=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&n(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(o=!0,!1):void 0}),o?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var n=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,l=a+e.helperProportions.height,h=i.offset.left,c=i.offset.top,u=h+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=h&&u>=r&&a>=c&&d>=l;case"intersect":return o+e.helperProportions.width/2>h&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>l-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,h,i.proportions().width);case"touch":return(a>=c&&d>=a||l>=c&&d>=l||c>a&&l>d)&&(o>=h&&u>=o||r>=h&&u>=r||h>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&n(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,o,a,r=n(e,this,this.options.tolerance,i),l=!r&&this.isover?"isout":r&&!this.isover?"isover":null;l&&(this.options.greedy&&(o=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===o}),a.length&&(s=t(a[0]).droppable("instance"),s.greedyChild="isover"===l)),s&&"isover"===l&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[l]=!0,this["isout"===l?"isover":"isout"]=!1,this["isover"===l?"_over":"_out"].call(this,i),s&&"isout"===l&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t(""),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,l=this._change[o];return this._updatePrevProperties(),l?(i=l.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,l,h=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,l=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,h.animate||this.element.css(t.extend(a,{top:l,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!h.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth
t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&c&&(t.top=l-e.minHeight),n&&c&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,l={width:i.size.width-r,height:i.size.height-a},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(l,c&&h?{top:c,left:h}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,l=t(this).resizable("instance"),h=l.options,c=l.element,u=h.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(l.containerElement=t(d),/document/.test(u)||u===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=l._num(e.css("padding"+s))}),l.containerOffset=e.offset(),l.containerPosition=e.position(),l.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=l.containerOffset,n=l.containerSize.height,o=l.containerSize.width,a=l._hasScroll(d,"left")?d.scrollWidth:o,r=l._hasScroll(d)?d.scrollHeight:n,l.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,l=a.containerOffset,h=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=l),h.left<(a._helper?l.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-l.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?l.left:0),h.top<(a._helper?l.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-l.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?l.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-l.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-l.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),l=a.outerWidth()-e.sizeDiff.width,h=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,l="number"==typeof s.grid?[s.grid,s.grid]:s.grid,h=l[0]||1,c=l[1]||1,u=Math.round((n.width-o.width)/h)*h,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=l,_&&(p+=h),v&&(f+=c),g&&(p-=h),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-h)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-h>0?(i.size.width=p,i.position.left=a.left-u):(p=h-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t(""),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,l=e.pageY;return o>r&&(i=r,r=o,o=i),a>l&&(i=l,l=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:l-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),h=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?h=!(c.left>r||o>c.right||c.top>l||a>c.bottom):"fit"===n.tolerance&&(h=c.left>o&&r>c.right&&c.top>a&&l>c.bottom),h?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY
=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;
+this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,l=r+t.height,h=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+h>r&&l>s+h,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&l>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],l=[],h=this._connectWith();if(h&&e)for(s=h.length-1;s>=0;s--)for(o=t(h[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&l.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(l.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=l.length-1;s>=0;s--)l[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,l,h,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,h=r.length;h>s;s++)l=t(r[s]),l.data(this.widgetName+"-item",a),c.push({item:l,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t(" ",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,l,h,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(l=this.items[s].item.offset()[a],h=!1,e[u]-l>this.items[s][r]/2&&(h=!0),n>Math.abs(e[u]-l)&&(n=Math.abs(e[u]-l),o=this.items[s],this.direction=h?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.leftthis.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():l?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():l?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})});
\ No newline at end of file
diff --git a/octoprint_bedlevelvisualizer/static/js/knockout-sortable.js b/octoprint_bedlevelvisualizer/static/js/knockout-sortable.js
new file mode 100644
index 0000000..79e9cd2
--- /dev/null
+++ b/octoprint_bedlevelvisualizer/static/js/knockout-sortable.js
@@ -0,0 +1,486 @@
+;(function(factory) {
+ if (typeof define === "function" && define.amd) {
+ // AMD anonymous module
+ define(["knockout", "jquery", "jquery-ui/ui/widgets/sortable", "jquery-ui/ui/widgets/draggable", "jquery-ui/ui/widgets/droppable"], factory);
+ } else if (typeof require === "function" && typeof exports === "object" && typeof module === "object") {
+ // CommonJS module
+ var ko = require("knockout"),
+ jQuery = require("jquery");
+ require("jquery-ui/ui/widgets/sortable");
+ require("jquery-ui/ui/widgets/draggable");
+ require("jquery-ui/ui/widgets/droppable");
+ factory(ko, jQuery);
+ } else {
+ // No module loader (plain
+
+
+
+
+
+
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 1638c37..db84106 100644
--- a/setup.py
+++ b/setup.py
@@ -14,7 +14,7 @@
plugin_name = "Bed Visualizer"
# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
-plugin_version = "0.1.11"
+plugin_version = "0.1.12"
# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
# module
diff --git a/virtual_level_report_cartesian_Mesh_Bed_Level_data.gcode b/virtual_level_report_cartesian_Mesh_Bed_Level_data.gcode
new file mode 100644
index 0000000..f58765a
--- /dev/null
+++ b/virtual_level_report_cartesian_Mesh_Bed_Level_data.gcode
@@ -0,0 +1,12 @@
+@BEDLEVELVISUALIZER
+!!DEBUG:send Mesh Bed Level data:
+!!DEBUG:send 6 x 6 mesh. Z offset: 0.00000
+!!DEBUG:send Measured points:
+!!DEBUG:send 0 1 2 3 4 5
+!!DEBUG:send 0 +0.200 +0.093 +0.039 -0.005 -0.048 -0.072
+!!DEBUG:send 1 +0.176 +0.063 -0.018 -0.039 -0.048 -0.040
+!!DEBUG:send 2 +0.178 +0.059 -0.024 -0.040 -0.054 -0.047
+!!DEBUG:send 3 +0.206 +0.078 -0.008 -0.036 -0.064 -0.082
+!!DEBUG:send 4 +0.243 +0.098 -0.008 -0.064 -0.127 -0.164
+!!DEBUG:send 5 +0.249 +0.124 +0.001 -0.072 -0.159 -0.247
+!!DEBUG:send ok
\ No newline at end of file
diff --git a/virtual_level_report_cartesian_Mesh_Bed_Level_scad.gcode b/virtual_level_report_cartesian_Mesh_Bed_Level_scad.gcode
new file mode 100644
index 0000000..ec9571d
--- /dev/null
+++ b/virtual_level_report_cartesian_Mesh_Bed_Level_scad.gcode
@@ -0,0 +1,13 @@
+@BEDLEVELVISUALIZER
+!!DEBUG:send Mesh Bed Level data:
+!!DEBUG:send 6 x 6 mesh. Z offset: 0.00000
+!!DEBUG:send Measured points:
+!!DEBUG:send measured_z = [
+!!DEBUG:send [ +0.200, +0.093, +0.039, -0.005, -0.048, -0.072 ],
+!!DEBUG:send [ +0.176, +0.063, -0.018, -0.039, -0.048, -0.040 ],
+!!DEBUG:send [ +0.178, +0.059, -0.024, -0.040, -0.054, -0.047 ],
+!!DEBUG:send [ +0.206, +0.078, -0.008, -0.036, -0.064, -0.082 ],
+!!DEBUG:send [ +0.243, +0.098, -0.008, -0.064, -0.127, -0.164 ],
+!!DEBUG:send [ +0.249, +0.124, +0.001, -0.072, -0.159, -0.247 ]
+!!DEBUG:send ];
+!!DEBUG:send ok
\ No newline at end of file
diff --git a/virtual_level_report_klipper.gcode b/virtual_level_report_klipper.gcode
new file mode 100644
index 0000000..7b88792
--- /dev/null
+++ b/virtual_level_report_klipper.gcode
@@ -0,0 +1,20 @@
+@BEDLEVELVISUALIZER
+!!DEBUG:send // Mesh Leveling Probed Z positions:
+!!DEBUG:send // -0.187500 -0.115000 -0.052500
+!!DEBUG:send // -0.022500 0.012500 0.015000
+!!DEBUG:send // 0.067500 0.125000 0.147500
+!!DEBUG:send Mesh X,Y: 7,7
+!!DEBUG:send Search Height: 5
+!!DEBUG:send Mesh Average: 0.00
+!!DEBUG:send Mesh Range: min=-0.1875 max=0.1475
+!!DEBUG:send Interpolation Algorithm: lagrange
+!!DEBUG:send Measured points:
+!!DEBUG:send 0.067500 0.090556 0.109722 0.125000 0.136389 0.143889 0.147500
+!!DEBUG:send 0.045833 0.064321 0.078765 0.089167 0.095525 0.097840 0.096111
+!!DEBUG:send 0.015833 0.031728 0.043673 0.051667 0.055710 0.055802 0.051944
+!!DEBUG:send -0.022500 -0.007222 0.004444 0.012500 0.016944 0.017778 0.015000
+!!DEBUG:send -0.069167 -0.052531 -0.038920 -0.028333 -0.020772 -0.016235 -0.014722
+!!DEBUG:send -0.124167 -0.104198 -0.086420 -0.070833 -0.057438 -0.046235 -0.037222
+!!DEBUG:send -0.187500 -0.162222 -0.138056 -0.115000 -0.093056 -0.072222 -0.052500
+!!DEBUG:send
+!!DEBUG:send ok
\ No newline at end of file
diff --git a/virtual_level_report_repetier.gcode b/virtual_level_report_repetier.gcode
new file mode 100644
index 0000000..f177605
--- /dev/null
+++ b/virtual_level_report_repetier.gcode
@@ -0,0 +1,730 @@
+@BEDLEVELVISUALIZER
+!!DEBUG:send ok 57
+!!DEBUG:send ok 58
+!!DEBUG:send T:32.31 /0 B:79.96 /80 B@:255 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.22 /0 B:79.92 /80 B@:255 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z correction disabled
+!!DEBUG:send T:32.22 /0 B:80.07 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Reference Z for measurement:11.000
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.31 /0 B:80.03 /80 B@:0 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.22 /0 B:80.00 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.22 /0 B:80.03 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.31 /0 B:79.92 /80 B@:255 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.956 X:-12.00 Y:5.00
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.22 /0 B:79.96 /80 B@:255 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.22 /0 B:80.07 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.05 /0 B:80.07 /80 B@:0 @:0 T0:32.05 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.31 /0 B:79.96 /80 B@:255 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.921 X:-12.00 Y:28.12
+!!DEBUG:send T:32.14 /0 B:79.92 /80 B@:255 @:0 T0:32.14 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.14 /0 B:80.00 /80 B@:0 @:0 T0:32.14 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.14 /0 B:79.96 /80 B@:255 @:0 T0:32.14 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.39 /0 B:80.07 /80 B@:0 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.14 /0 B:79.96 /80 B@:255 @:0 T0:32.14 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.924 X:-12.00 Y:51.25
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.05 /0 B:80.00 /80 B@:0 @:0 T0:32.05 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.39 /0 B:79.96 /80 B@:255 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.05 /0 B:79.96 /80 B@:255 @:0 T0:32.05 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.31 /0 B:79.96 /80 B@:255 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.961 X:-12.00 Y:74.37
+!!DEBUG:send T:32.22 /0 B:79.96 /80 B@:255 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.14 /0 B:80.03 /80 B@:0 @:0 T0:32.14 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.31 /0 B:80.03 /80 B@:0 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.22 /0 B:79.96 /80 B@:255 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.968 X:-12.00 Y:97.50
+!!DEBUG:send T:32.14 /0 B:79.92 /80 B@:255 @:0 T0:32.14 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.31 /0 B:80.00 /80 B@:0 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.31 /0 B:80.00 /80 B@:0 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.22 /0 B:80.03 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.22 /0 B:80.07 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.003 X:-12.00 Y:120.63
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.05 /0 B:80.00 /80 B@:0 @:0 T0:32.05 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.48 /0 B:79.96 /80 B@:255 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.22 /0 B:80.03 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.48 /0 B:80.14 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:11.049 X:-12.00 Y:143.75
+!!DEBUG:send T:32.48 /0 B:80.07 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.31 /0 B:79.96 /80 B@:255 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.39 /0 B:80.00 /80 B@:0 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.31 /0 B:80.00 /80 B@:0 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.050 X:-12.00 Y:166.88
+!!DEBUG:send T:32.39 /0 B:80.10 /80 B@:0 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.56 /0 B:80.03 /80 B@:0 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.39 /0 B:79.96 /80 B@:255 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.39 /0 B:79.96 /80 B@:255 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.48 /0 B:80.00 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.012 X:-12.00 Y:190.00
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.31 /0 B:80.00 /80 B@:0 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.48 /0 B:79.96 /80 B@:255 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.31 /0 B:80.00 /80 B@:0 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.56 /0 B:79.92 /80 B@:255 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.969 X:10.63 Y:190.00
+!!DEBUG:send T:32.48 /0 B:80.07 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.22 /0 B:80.00 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.56 /0 B:80.00 /80 B@:0 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.39 /0 B:80.07 /80 B@:0 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.48 /0 B:80.07 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.060 X:10.62 Y:166.88
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.56 /0 B:79.96 /80 B@:255 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.31 /0 B:79.92 /80 B@:255 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.22 /0 B:80.00 /80 B@:0 @:0 T0:32.22 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.31 /0 B:80.03 /80 B@:0 @:0 T0:32.31 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:11.016 X:10.62 Y:143.75
+!!DEBUG:send T:32.48 /0 B:80.10 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.39 /0 B:80.03 /80 B@:0 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.39 /0 B:80.00 /80 B@:0 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.56 /0 B:79.92 /80 B@:255 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.982 X:10.62 Y:120.63
+!!DEBUG:send T:32.48 /0 B:80.00 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.56 /0 B:79.88 /80 B@:255 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.48 /0 B:80.07 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.48 /0 B:80.07 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.56 /0 B:80.10 /80 B@:0 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.980 X:10.62 Y:97.50
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.48 /0 B:80.00 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.48 /0 B:79.92 /80 B@:255 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.65 /0 B:79.96 /80 B@:255 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:80.07 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.970 X:10.63 Y:74.37
+!!DEBUG:send T:32.74 /0 B:79.96 /80 B@:255 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.65 /0 B:79.96 /80 B@:255 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.56 /0 B:79.96 /80 B@:255 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:80.03 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.962 X:10.63 Y:51.25
+!!DEBUG:send T:32.74 /0 B:80.00 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:80.03 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.82 /0 B:80.00 /80 B@:0 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.65 /0 B:79.96 /80 B@:255 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.65 /0 B:80.10 /80 B@:0 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.963 X:10.63 Y:28.12
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:80.00 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.65 /0 B:79.92 /80 B@:255 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.56 /0 B:79.92 /80 B@:255 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.48 /0 B:80.03 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.016 X:10.62 Y:5.00
+!!DEBUG:send T:32.65 /0 B:80.03 /80 B@:0 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:80.07 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.39 /0 B:79.96 /80 B@:255 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.39 /0 B:80.00 /80 B@:0 @:0 T0:32.39 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.032 X:33.25 Y:5.00
+!!DEBUG:send T:32.74 /0 B:80.03 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.65 /0 B:79.96 /80 B@:255 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.65 /0 B:80.00 /80 B@:0 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:80.03 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.56 /0 B:80.00 /80 B@:0 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:11.015 X:33.25 Y:28.12
+!!DEBUG:send T:32.56 /0 B:79.88 /80 B@:255 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.48 /0 B:79.96 /80 B@:255 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.56 /0 B:80.00 /80 B@:0 @:0 T0:32.56 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.48 /0 B:80.03 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.988 X:33.25 Y:51.25
+!!DEBUG:send T:32.65 /0 B:80.07 /80 B@:0 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:79.92 /80 B@:255 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.74 /0 B:79.96 /80 B@:255 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.82 /0 B:79.96 /80 B@:255 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.022 X:33.25 Y:74.37
+!!DEBUG:send T:32.74 /0 B:79.84 /80 B@:255 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.48 /0 B:80.00 /80 B@:0 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.48 /0 B:79.88 /80 B@:255 @:0 T0:32.48 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.65 /0 B:79.92 /80 B@:255 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.82 /0 B:80.03 /80 B@:0 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.988 X:33.25 Y:97.50
+!!DEBUG:send T:32.65 /0 B:80.03 /80 B@:0 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.65 /0 B:80.00 /80 B@:0 @:0 T0:32.65 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.82 /0 B:79.96 /80 B@:255 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.91 /0 B:80.00 /80 B@:0 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.002 X:33.25 Y:120.63
+!!DEBUG:send T:32.74 /0 B:80.03 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:80.10 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.74 /0 B:80.00 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.82 /0 B:80.00 /80 B@:0 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:80.07 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:11.047 X:33.25 Y:143.75
+!!DEBUG:send T:32.74 /0 B:80.07 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:79.96 /80 B@:255 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.74 /0 B:80.07 /80 B@:0 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.03 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.069 X:33.25 Y:166.88
+!!DEBUG:send T:32.74 /0 B:79.92 /80 B@:255 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.82 /0 B:79.96 /80 B@:255 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.82 /0 B:79.84 /80 B@:255 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.91 /0 B:80.00 /80 B@:0 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.108 X:33.25 Y:190.00
+!!DEBUG:send T:32.99 /0 B:80.10 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.82 /0 B:80.03 /80 B@:0 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.91 /0 B:79.96 /80 B@:255 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.08 /0 B:80.00 /80 B@:0 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.82 /0 B:79.96 /80 B@:255 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.094 X:55.88 Y:190.00
+!!DEBUG:send T:32.74 /0 B:79.96 /80 B@:255 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.07 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:80.14 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.91 /0 B:80.03 /80 B@:0 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.071 X:55.88 Y:166.88
+!!DEBUG:send T:33.16 /0 B:80.07 /80 B@:0 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.82 /0 B:80.03 /80 B@:0 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:80.00 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.10 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:80.07 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.024 X:55.87 Y:143.75
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:79.96 /80 B@:255 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.00 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.91 /0 B:79.96 /80 B@:255 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.16 /0 B:80.03 /80 B@:0 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.036 X:55.87 Y:120.63
+!!DEBUG:send T:33.08 /0 B:80.00 /80 B@:0 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.91 /0 B:79.96 /80 B@:255 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.91 /0 B:80.00 /80 B@:0 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.16 /0 B:80.03 /80 B@:0 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.004 X:55.87 Y:97.50
+!!DEBUG:send T:33.08 /0 B:79.96 /80 B@:255 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.16 /0 B:79.96 /80 B@:255 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:80.00 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.03 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.25 /0 B:80.10 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.038 X:55.88 Y:74.37
+!!DEBUG:send T:33.25 /0 B:80.00 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.25 /0 B:80.03 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.08 /0 B:79.92 /80 B@:255 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.08 /0 B:79.92 /80 B@:255 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.024 X:55.88 Y:51.25
+!!DEBUG:send T:32.91 /0 B:79.88 /80 B@:255 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.74 /0 B:79.92 /80 B@:255 @:0 T0:32.74 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:80.00 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.03 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.022 X:55.88 Y:28.12
+!!DEBUG:send T:33.08 /0 B:79.92 /80 B@:255 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.00 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.08 /0 B:79.96 /80 B@:255 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.08 /0 B:80.03 /80 B@:0 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.08 /0 B:80.14 /80 B@:0 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.065 X:55.88 Y:5.00
+!!DEBUG:send T:33.25 /0 B:80.00 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.08 /0 B:80.00 /80 B@:0 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:79.88 /80 B@:255 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.91 /0 B:80.03 /80 B@:0 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.072 X:78.50 Y:5.00
+!!DEBUG:send T:33.16 /0 B:80.03 /80 B@:0 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.03 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:80.00 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.82 /0 B:79.92 /80 B@:255 @:0 T0:32.82 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.25 /0 B:79.96 /80 B@:255 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:11.065 X:78.50 Y:28.12
+!!DEBUG:send T:32.91 /0 B:80.00 /80 B@:0 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.99 /0 B:80.07 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.16 /0 B:80.07 /80 B@:0 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.91 /0 B:80.03 /80 B@:0 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.018 X:78.50 Y:51.25
+!!DEBUG:send T:33.16 /0 B:79.88 /80 B@:255 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.08 /0 B:80.00 /80 B@:0 @:0 T0:33.08 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:32.99 /0 B:80.14 /80 B@:0 @:0 T0:32.99 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.25 /0 B:80.14 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.017 X:78.50 Y:74.37
+!!DEBUG:send T:33.25 /0 B:80.07 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.33 /0 B:79.96 /80 B@:255 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.16 /0 B:79.92 /80 B@:255 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.25 /0 B:80.00 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.33 /0 B:80.07 /80 B@:0 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.007 X:78.50 Y:97.50
+!!DEBUG:send T:33.25 /0 B:80.03 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:32.91 /0 B:80.14 /80 B@:0 @:0 T0:32.91 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.25 /0 B:79.92 /80 B@:255 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.07 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.017 X:78.50 Y:120.63
+!!DEBUG:send T:33.16 /0 B:80.00 /80 B@:0 @:0 T0:33.16 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.25 /0 B:80.03 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.33 /0 B:79.96 /80 B@:255 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.03 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.045 X:78.50 Y:143.75
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:79.96 /80 B@:255 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.33 /0 B:79.92 /80 B@:255 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.25 /0 B:80.00 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.33 /0 B:80.03 /80 B@:0 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.33 /0 B:79.96 /80 B@:255 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.049 X:78.50 Y:166.88
+!!DEBUG:send T:33.42 /0 B:79.92 /80 B@:255 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.25 /0 B:79.92 /80 B@:255 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.25 /0 B:80.07 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.59 /0 B:80.10 /80 B@:0 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.077 X:78.50 Y:190.00
+!!DEBUG:send T:33.42 /0 B:80.14 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.50 /0 B:80.00 /80 B@:0 @:0 T0:33.50 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.33 /0 B:79.96 /80 B@:255 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.25 /0 B:79.88 /80 B@:255 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.33 /0 B:80.07 /80 B@:0 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.024 X:101.13 Y:190.00
+!!DEBUG:send T:33.33 /0 B:80.03 /80 B@:0 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.33 /0 B:80.03 /80 B@:0 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.42 /0 B:79.92 /80 B@:255 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.50 /0 B:79.92 /80 B@:255 @:0 T0:33.50 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.995 X:101.13 Y:166.88
+!!DEBUG:send T:33.33 /0 B:79.96 /80 B@:255 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.03 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.25 /0 B:80.03 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.10 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.969 X:101.12 Y:143.75
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.00 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.50 /0 B:79.96 /80 B@:255 @:0 T0:33.50 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.00 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.33 /0 B:80.00 /80 B@:0 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.07 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.999 X:101.12 Y:120.63
+!!DEBUG:send T:33.25 /0 B:80.00 /80 B@:0 @:0 T0:33.25 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.50 /0 B:79.92 /80 B@:255 @:0 T0:33.50 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.33 /0 B:79.96 /80 B@:255 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.33 /0 B:80.00 /80 B@:0 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.976 X:101.12 Y:97.50
+!!DEBUG:send T:33.50 /0 B:80.03 /80 B@:0 @:0 T0:33.50 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.00 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.50 /0 B:80.00 /80 B@:0 @:0 T0:33.50 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.33 /0 B:79.88 /80 B@:255 @:0 T0:33.33 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.992 X:101.13 Y:74.37
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:79.92 /80 B@:255 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.42 /0 B:80.10 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.42 /0 B:80.10 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.42 /0 B:80.00 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.68 /0 B:80.03 /80 B@:0 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.960 X:101.13 Y:51.25
+!!DEBUG:send T:33.59 /0 B:79.96 /80 B@:255 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.59 /0 B:80.00 /80 B@:0 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.50 /0 B:80.10 /80 B@:0 @:0 T0:33.50 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.59 /0 B:80.00 /80 B@:0 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.020 X:101.13 Y:28.12
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.59 /0 B:79.96 /80 B@:255 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.68 /0 B:80.00 /80 B@:0 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.59 /0 B:80.00 /80 B@:0 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:79.96 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:11.078 X:101.13 Y:5.00
+!!DEBUG:send T:33.59 /0 B:80.03 /80 B@:0 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.85 /0 B:79.96 /80 B@:255 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.59 /0 B:80.03 /80 B@:0 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.68 /0 B:80.00 /80 B@:0 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:80.07 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.041 X:123.75 Y:5.00
+!!DEBUG:send T:33.76 /0 B:80.00 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.68 /0 B:79.96 /80 B@:255 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.59 /0 B:80.00 /80 B@:0 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.68 /0 B:80.07 /80 B@:0 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.017 X:123.75 Y:28.12
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.68 /0 B:79.96 /80 B@:255 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.68 /0 B:79.96 /80 B@:255 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:79.88 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:80.00 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.984 X:123.75 Y:51.25
+!!DEBUG:send T:33.42 /0 B:80.00 /80 B@:0 @:0 T0:33.42 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:79.92 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:79.96 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:80.03 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:79.92 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.979 X:123.75 Y:74.37
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:79.92 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.68 /0 B:80.00 /80 B@:0 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:80.07 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.85 /0 B:80.00 /80 B@:0 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.986 X:123.75 Y:97.50
+!!DEBUG:send T:34.02 /0 B:79.96 /80 B@:255 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.85 /0 B:79.92 /80 B@:255 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:80.03 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:80.10 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.974 X:123.75 Y:120.63
+!!DEBUG:send T:33.59 /0 B:80.00 /80 B@:0 @:0 T0:33.59 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.85 /0 B:79.96 /80 B@:255 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.85 /0 B:79.92 /80 B@:255 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.68 /0 B:80.07 /80 B@:0 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:80.07 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.984 X:123.75 Y:143.75
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.93 /0 B:80.00 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.02 /0 B:79.96 /80 B@:255 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.85 /0 B:79.96 /80 B@:255 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.93 /0 B:79.96 /80 B@:255 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.981 X:123.75 Y:166.88
+!!DEBUG:send T:33.93 /0 B:80.00 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.85 /0 B:80.10 /80 B@:0 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.93 /0 B:80.07 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:79.92 /80 B@:255 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.982 X:123.75 Y:190.00
+!!DEBUG:send T:33.68 /0 B:80.00 /80 B@:0 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.85 /0 B:79.96 /80 B@:255 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.85 /0 B:80.00 /80 B@:0 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.85 /0 B:80.03 /80 B@:0 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.02 /0 B:80.03 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.982 X:146.38 Y:190.00
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:79.92 /80 B@:255 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.93 /0 B:79.96 /80 B@:255 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.85 /0 B:79.92 /80 B@:255 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.85 /0 B:80.00 /80 B@:0 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.969 X:146.38 Y:166.88
+!!DEBUG:send T:33.76 /0 B:79.96 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:79.96 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:79.92 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.93 /0 B:80.07 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.950 X:146.37 Y:143.75
+!!DEBUG:send T:33.93 /0 B:79.96 /80 B@:255 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.85 /0 B:79.79 /80 B@:255 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.68 /0 B:79.88 /80 B@:255 @:0 T0:33.68 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:80.10 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:80.07 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.979 X:146.37 Y:120.63
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:80.07 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.76 /0 B:79.84 /80 B@:255 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:80.07 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.76 /0 B:80.10 /80 B@:0 @:0 T0:33.76 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.963 X:146.37 Y:97.50
+!!DEBUG:send T:33.85 /0 B:80.03 /80 B@:0 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.93 /0 B:80.00 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.93 /0 B:80.00 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.93 /0 B:79.96 /80 B@:255 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.979 X:146.38 Y:74.37
+!!DEBUG:send T:34.19 /0 B:80.03 /80 B@:0 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.93 /0 B:80.00 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.93 /0 B:79.96 /80 B@:255 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.93 /0 B:79.96 /80 B@:255 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.85 /0 B:80.03 /80 B@:0 @:0 T0:33.85 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send Z-probe:10.968 X:146.38 Y:51.25
+!!DEBUG:send T:34.02 /0 B:80.03 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:80.00 /80 B@:0 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.02 /0 B:79.96 /80 B@:255 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:80.03 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.017 X:146.38 Y:28.12
+!!DEBUG:send T:34.10 /0 B:80.00 /80 B@:0 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:79.88 /80 B@:255 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.02 /0 B:80.00 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:80.03 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.050 X:146.38 Y:5.00
+!!DEBUG:send T:34.02 /0 B:80.07 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.19 /0 B:80.07 /80 B@:0 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.19 /0 B:79.96 /80 B@:255 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:79.96 /80 B@:255 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:80.07 /80 B@:0 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.054 X:169.00 Y:5.00
+!!DEBUG:send T:34.02 /0 B:80.07 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:33.93 /0 B:80.00 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.19 /0 B:79.92 /80 B@:255 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:80.00 /80 B@:0 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:11.018 X:169.00 Y:28.12
+!!DEBUG:send T:34.02 /0 B:80.00 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.19 /0 B:79.92 /80 B@:255 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.93 /0 B:80.07 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:80.00 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.02 /0 B:79.88 /80 B@:255 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.993 X:169.00 Y:51.25
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:79.92 /80 B@:255 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:79.92 /80 B@:255 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:33.93 /0 B:80.10 /80 B@:0 @:0 T0:33.93 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:80.07 /80 B@:0 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.967 X:169.00 Y:74.37
+!!DEBUG:send T:34.10 /0 B:79.96 /80 B@:255 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.19 /0 B:80.07 /80 B@:0 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.19 /0 B:80.00 /80 B@:0 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.27 /0 B:79.96 /80 B@:255 @:0 T0:34.27 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.942 X:169.00 Y:97.50
+!!DEBUG:send T:34.27 /0 B:79.96 /80 B@:255 @:0 T0:34.27 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.19 /0 B:79.96 /80 B@:255 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.19 /0 B:79.96 /80 B@:255 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.19 /0 B:80.00 /80 B@:0 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:80.03 /80 B@:0 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.928 X:169.00 Y:120.63
+!!DEBUG:send T:34.10 /0 B:80.03 /80 B@:0 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:79.92 /80 B@:255 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.10 /0 B:79.92 /80 B@:255 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.19 /0 B:80.03 /80 B@:0 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.939 X:169.00 Y:143.75
+!!DEBUG:send T:34.36 /0 B:79.92 /80 B@:255 @:0 T0:34.36 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:80.03 /80 B@:0 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.27 /0 B:80.00 /80 B@:0 @:0 T0:34.27 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.36 /0 B:80.00 /80 B@:0 @:0 T0:34.36 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.956 X:169.00 Y:166.88
+!!DEBUG:send T:34.36 /0 B:80.03 /80 B@:0 @:0 T0:34.36 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.02 /0 B:80.00 /80 B@:0 @:0 T0:34.02 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.10 /0 B:79.84 /80 B@:255 @:0 T0:34.10 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send T:34.53 /0 B:80.03 /80 B@:0 @:0 T0:34.53 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send busy:processing
+!!DEBUG:send T:34.19 /0 B:79.96 /80 B@:255 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send Z-probe:10.933 X:169.00 Y:190.00
+!!DEBUG:send Info:Distortion correction matrix:
+!!DEBUG:send -52, 131, -462, -401, -330, -101, 76, 75, 287
+!!DEBUG:send -212, -257, -295, -305, -210, 22, 79, 133, 188
+!!DEBUG:send -209, -69, -202, -104, -192, 130, 68, 214, 261
+!!DEBUG:send -11, 76, -7, -153, -72, 6, 109, 89, 309
+!!DEBUG:send 137, 86, 51, -16, -30, 102, 59, 157, 248
+!!DEBUG:send 166, 129, -96, -163, -72, 32, 91, 90, 142
+!!DEBUG:send 324, 162, 52, -104, -76, 172, 70, 136, 30
+!!DEBUG:send 335, 156, -65, -96, -278, -86, -72, -73, -78
+!!DEBUG:send 187, -70, -137, -278, -306, -332, -176, -213, -232
+!!DEBUG:send G33 X-12.00 Y5.00 Z0.044
+!!DEBUG:send G33 X-12.00 Y28.12 Z0.079
+!!DEBUG:send G33 X-12.00 Y51.25 Z0.076
+!!DEBUG:send G33 X-12.00 Y74.37 Z0.039
+!!DEBUG:send G33 X-12.00 Y97.50 Z0.032
+!!DEBUG:send G33 X-12.00 Y120.62 Z-0.003
+!!DEBUG:send G33 X-12.00 Y143.75 Z-0.049
+!!DEBUG:send G33 X-12.00 Y166.88 Z-0.050
+!!DEBUG:send G33 X-12.00 Y190.00 Z-0.012
+!!DEBUG:send G33 X10.63 Y5.00 Z-0.016
+!!DEBUG:send G33 X10.63 Y28.12 Z0.037
+!!DEBUG:send G33 X10.63 Y51.25 Z0.038
+!!DEBUG:send G33 X10.63 Y74.37 Z0.030
+!!DEBUG:send G33 X10.63 Y97.50 Z0.020
+!!DEBUG:send G33 X10.63 Y120.62 Z0.018
+!!DEBUG:send G33 X10.63 Y143.75 Z-0.016
+!!DEBUG:send G33 X10.63 Y166.88 Z-0.060
+!!DEBUG:send G33 X10.63 Y190.00 Z0.031
+!!DEBUG:send G33 X33.25 Y5.00 Z-0.032
+!!DEBUG:send G33 X33.25 Y28.12 Z-0.015
+!!DEBUG:send G33 X33.25 Y51.25 Z0.012
+!!DEBUG:send G33 X33.25 Y74.37 Z-0.023
+!!DEBUG:send G33 X33.25 Y97.50 Z0.012
+!!DEBUG:send G33 X33.25 Y120.62 Z-0.002
+!!DEBUG:send G33 X33.25 Y143.75 Z-0.047
+!!DEBUG:send G33 X33.25 Y166.88 Z-0.069
+!!DEBUG:send G33 X33.25 Y190.00 Z-0.108
+!!DEBUG:send G33 X55.88 Y5.00 Z-0.065
+!!DEBUG:send G33 X55.88 Y28.12 Z-0.023
+!!DEBUG:send G33 X55.88 Y51.25 Z-0.024
+!!DEBUG:send G33 X55.88 Y74.37 Z-0.038
+!!DEBUG:send G33 X55.88 Y97.50 Z-0.004
+!!DEBUG:send G33 X55.88 Y120.62 Z-0.036
+!!DEBUG:send G33 X55.88 Y143.75 Z-0.024
+!!DEBUG:send G33 X55.88 Y166.88 Z-0.071
+!!DEBUG:send G33 X55.88 Y190.00 Z-0.094
+!!DEBUG:send G33 X78.50 Y5.00 Z-0.072
+!!DEBUG:send G33 X78.50 Y28.12 Z-0.065
+!!DEBUG:send G33 X78.50 Y51.25 Z-0.018
+!!DEBUG:send G33 X78.50 Y74.37 Z-0.017
+!!DEBUG:send G33 X78.50 Y97.50 Z-0.007
+!!DEBUG:send G33 X78.50 Y120.62 Z-0.017
+!!DEBUG:send G33 X78.50 Y143.75 Z-0.045
+!!DEBUG:send G33 X78.50 Y166.88 Z-0.049
+!!DEBUG:send G33 X78.50 Y190.00 Z-0.077
+!!DEBUG:send G33 X101.12 Y5.00 Z-0.078
+!!DEBUG:send G33 X101.12 Y28.12 Z-0.020
+!!DEBUG:send G33 X101.12 Y51.25 Z0.040
+!!DEBUG:send G33 X101.12 Y74.37 Z0.008
+!!DEBUG:send G33 X101.12 Y97.50 Z0.024
+!!DEBUG:send G33 X101.12 Y120.62 Z0.001
+!!DEBUG:send G33 X101.12 Y143.75 Z0.030
+!!DEBUG:send G33 X101.12 Y166.88 Z0.005
+!!DEBUG:send G33 X101.12 Y190.00 Z-0.024
+!!DEBUG:send G33 X123.75 Y5.00 Z-0.041
+!!DEBUG:send G33 X123.75 Y28.12 Z-0.017
+!!DEBUG:send G33 X123.75 Y51.25 Z0.016
+!!DEBUG:send G33 X123.75 Y74.37 Z0.021
+!!DEBUG:send G33 X123.75 Y97.50 Z0.014
+!!DEBUG:send G33 X123.75 Y120.62 Z0.026
+!!DEBUG:send G33 X123.75 Y143.75 Z0.016
+!!DEBUG:send G33 X123.75 Y166.88 Z0.019
+!!DEBUG:send G33 X123.75 Y190.00 Z0.018
+!!DEBUG:send G33 X146.38 Y5.00 Z-0.050
+!!DEBUG:send G33 X146.38 Y28.12 Z-0.017
+!!DEBUG:send G33 X146.38 Y51.25 Z0.032
+!!DEBUG:send G33 X146.38 Y74.37 Z0.021
+!!DEBUG:send G33 X146.38 Y97.50 Z0.037
+!!DEBUG:send G33 X146.38 Y120.62 Z0.021
+!!DEBUG:send G33 X146.38 Y143.75 Z0.050
+!!DEBUG:send G33 X146.38 Y166.88 Z0.031
+!!DEBUG:send G33 X146.38 Y190.00 Z0.018
+!!DEBUG:send G33 X169.00 Y5.00 Z-0.054
+!!DEBUG:send G33 X169.00 Y28.12 Z-0.018
+!!DEBUG:send G33 X169.00 Y51.25 Z0.007
+!!DEBUG:send G33 X169.00 Y74.37 Z0.033
+!!DEBUG:send G33 X169.00 Y97.50 Z0.058
+!!DEBUG:send G33 X169.00 Y120.62 Z0.072
+!!DEBUG:send G33 X169.00 Y143.75 Z0.061
+!!DEBUG:send G33 X169.00 Y166.88 Z0.044
+!!DEBUG:send G33 X169.00 Y190.00 Z0.067
+!!DEBUG:send Z correction enabled
+!!DEBUG:send T:34.19 /0 B:79.96 /80 B@:255 @:0 T0:34.19 /0 @0:0 T1:-20.00 /0 @1:0
+!!DEBUG:send ok 59
\ No newline at end of file
diff --git a/virtual_level_report_repetier_G33_L0.gcode b/virtual_level_report_repetier_G33_L0.gcode
new file mode 100644
index 0000000..dd2224f
--- /dev/null
+++ b/virtual_level_report_repetier_G33_L0.gcode
@@ -0,0 +1,115 @@
+G28
+M300 S392 P250
+G1 Y0 S1
+G1 Y100 S0
+G1 Z40
+M140 S80
+M190 S80
+G1 X0 Y0
+M300 S392 P250
+G32 S2
+G1 X150 Y150
+M300 S392 P250
+@BEDLEVELVISUALIZER
+G33
+!!DEBUG:send FIRMWARE_NAME:Repetier_1.0.3 COMPILED:Jul 13 2019 FIRMWARE_URL:https://github.com/repetier/Repetier-Firmware/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:Core_XY EXTRUDER_COUNT:2 REPETIER_PROTOCOL:3
+!!DEBUG:send Cap:PROGRESS:1
+!!DEBUG:send Cap:AUTOREPORT_TEMP:1
+!!DEBUG:send Cap:EEPROM:1
+!!DEBUG:send Cap:AUTOLEVEL:1
+!!DEBUG:send Cap:Z_PROBE:1
+!!DEBUG:send Cap:SOFTWARE_POWER:0
+!!DEBUG:send Cap:TOGGLE_LIGHTS:0
+!!DEBUG:send Cap:PAUSESTOP:1
+!!DEBUG:send Cap:PREHEAT:1
+!!DEBUG:send Printed filament:4167.94m Printing time:40 days 19 hours 1 min
+!!DEBUG:send PrinterMode:FFF
+!!DEBUG:send ok 7
+!!DEBUG:send G33 X-12.00 Y5.00 Z0.085
+!!DEBUG:send G33 X-12.00 Y28.12 Z0.122
+!!DEBUG:send G33 X-12.00 Y51.25 Z0.108
+!!DEBUG:send G33 X-12.00 Y74.37 Z0.107
+!!DEBUG:send G33 X-12.00 Y97.50 Z0.089
+!!DEBUG:send G33 X-12.00 Y120.62 Z0.074
+!!DEBUG:send G33 X-12.00 Y143.75 Z0.047
+!!DEBUG:send G33 X-12.00 Y166.88 Z0.030
+!!DEBUG:send G33 X-12.00 Y190.00 Z-0.036
+!!DEBUG:send G33 X10.63 Y5.00 Z0.050
+!!DEBUG:send G33 X10.63 Y28.12 Z0.098
+!!DEBUG:send G33 X10.63 Y51.25 Z0.071
+!!DEBUG:send G33 X10.63 Y74.37 Z0.087
+!!DEBUG:send G33 X10.63 Y97.50 Z0.067
+!!DEBUG:send G33 X10.63 Y120.62 Z0.061
+!!DEBUG:send G33 X10.63 Y143.75 Z0.040
+!!DEBUG:send G33 X10.63 Y166.88 Z0.000
+!!DEBUG:send G33 X10.63 Y190.00 Z-0.032
+!!DEBUG:send G33 X33.25 Y5.00 Z0.022
+!!DEBUG:send G33 X33.25 Y28.12 Z0.024
+!!DEBUG:send G33 X33.25 Y51.25 Z0.071
+!!DEBUG:send G33 X33.25 Y74.37 Z0.035
+!!DEBUG:send G33 X33.25 Y97.50 Z0.050
+!!DEBUG:send G33 X33.25 Y120.62 Z0.048
+!!DEBUG:send G33 X33.25 Y143.75 Z0.011
+!!DEBUG:send G33 X33.25 Y166.88 Z-0.019
+!!DEBUG:send G33 X33.25 Y190.00 Z-0.050
+!!DEBUG:send G33 X55.88 Y5.00 Z-0.038
+!!DEBUG:send G33 X55.88 Y28.12 Z-0.001
+!!DEBUG:send G33 X55.88 Y51.25 Z0.021
+!!DEBUG:send G33 X55.88 Y74.37 Z0.009
+!!DEBUG:send G33 X55.88 Y97.50 Z0.027
+!!DEBUG:send G33 X55.88 Y120.62 Z0.001
+!!DEBUG:send G33 X55.88 Y143.75 Z-0.000
+!!DEBUG:send G33 X55.88 Y166.88 Z-0.030
+!!DEBUG:send G33 X55.88 Y190.00 Z-0.053
+!!DEBUG:send G33 X78.50 Y5.00 Z-0.021
+!!DEBUG:send G33 X78.50 Y28.12 Z-0.023
+!!DEBUG:send G33 X78.50 Y51.25 Z0.011
+!!DEBUG:send G33 X78.50 Y74.37 Z0.018
+!!DEBUG:send G33 X78.50 Y97.50 Z0.017
+!!DEBUG:send G33 X78.50 Y120.62 Z0.009
+!!DEBUG:send G33 X78.50 Y143.75 Z-0.006
+!!DEBUG:send G33 X78.50 Y166.88 Z0.003
+!!DEBUG:send G33 X78.50 Y190.00 Z-0.041
+!!DEBUG:send G33 X101.12 Y5.00 Z-0.042
+!!DEBUG:send G33 X101.12 Y28.12 Z-0.029
+!!DEBUG:send G33 X101.12 Y51.25 Z0.041
+!!DEBUG:send G33 X101.12 Y74.37 Z0.024
+!!DEBUG:send G33 X101.12 Y97.50 Z0.019
+!!DEBUG:send G33 X101.12 Y120.62 Z0.031
+!!DEBUG:send G33 X101.12 Y143.75 Z0.043
+!!DEBUG:send G33 X101.12 Y166.88 Z0.019
+!!DEBUG:send G33 X101.12 Y190.00 Z-0.005
+!!DEBUG:send G33 X123.75 Y5.00 Z-0.046
+!!DEBUG:send G33 X123.75 Y28.12 Z-0.040
+!!DEBUG:send G33 X123.75 Y51.25 Z0.017
+!!DEBUG:send G33 X123.75 Y74.37 Z0.021
+!!DEBUG:send G33 X123.75 Y97.50 Z0.003
+!!DEBUG:send G33 X123.75 Y120.62 Z0.029
+!!DEBUG:send G33 X123.75 Y143.75 Z0.010
+!!DEBUG:send G33 X123.75 Y166.88 Z0.029
+!!DEBUG:send G33 X123.75 Y190.00 Z0.019
+!!DEBUG:send G33 X146.38 Y5.00 Z-0.071
+!!DEBUG:send G33 X146.38 Y28.12 Z-0.038
+!!DEBUG:send G33 X146.38 Y51.25 Z0.014
+!!DEBUG:send G33 X146.38 Y74.37 Z0.015
+!!DEBUG:send G33 X146.38 Y97.50 Z0.017
+!!DEBUG:send G33 X146.38 Y120.62 Z0.024
+!!DEBUG:send G33 X146.38 Y143.75 Z0.038
+!!DEBUG:send G33 X146.38 Y166.88 Z0.013
+!!DEBUG:send G33 X146.38 Y190.00 Z0.002
+!!DEBUG:send G33 X169.00 Y5.00 Z-0.079
+!!DEBUG:send G33 X169.00 Y28.12 Z-0.043
+!!DEBUG:send G33 X169.00 Y51.25 Z-0.017
+!!DEBUG:send G33 X169.00 Y74.37 Z0.015
+!!DEBUG:send G33 X169.00 Y97.50 Z0.023
+!!DEBUG:send G33 X169.00 Y120.62 Z0.051
+!!DEBUG:send G33 X169.00 Y143.75 Z0.036
+!!DEBUG:send G33 X169.00 Y166.88 Z0.043
+!!DEBUG:send G33 X169.00 Y190.00 Z0.032
+!!DEBUG:send ok 8
+M500
+M140 S0
+M300 S392 P250
+G1 X348
+G1 Y2
+G28 X Y
\ No newline at end of file
diff --git a/virtual_level_report_repetier_distortion_correction_matrix.gcode b/virtual_level_report_repetier_distortion_correction_matrix.gcode
new file mode 100644
index 0000000..19c1f24
--- /dev/null
+++ b/virtual_level_report_repetier_distortion_correction_matrix.gcode
@@ -0,0 +1,12 @@
+@BEDLEVELVISUALIZER
+!!DEBUG:send Info:Distortion correction matrix:
+!!DEBUG:send 1218, -449, -571, -530, -445, -273, -167, -137, -147
+!!DEBUG:send -305, -340, -297, -272, -119, -105, 38, 1, -8
+!!DEBUG:send -190, -149, -301, -164, -155, 14, 93, 91, 101
+!!DEBUG:send 4, -26, -24, -109, 23, -6, 114, 198, 235
+!!DEBUG:send -8, -80, 25, -113, -72, 13, 179, 172, 328
+!!DEBUG:send 71, 108, 18, 74, 20, -16, 300, 206, 249
+!!DEBUG:send 386, 179, 131, 21, 34, 61, 156, 159, 127
+!!DEBUG:send 105, 256, -147, 17, -115, -103, 139, 66, 83
+!!DEBUG:send 41, -109, -103, -300, -250, -158, -95, -91, -33
+!!DEBUG:send ok
\ No newline at end of file