Best JavaScript code snippet using fast-check-monorepo
fontawesome-iconpicker.min.js
Source:fontawesome-iconpicker.min.js
1/*!2 * Font Awesome Icon Picker3 * https://farbelous.github.io/fontawesome-iconpicker/4 *5 * @author Javi Aguilar, itsjavi.com6 * @license MIT License7 * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE8 */9!function (e) {10 "function" == typeof define && define.amd ? define(["jquery"], e) : e(jQuery)11}(function (j) {12 j.ui = j.ui || {};13 j.ui.version = "1.12.1";14 !function () {15 var r, y = Math.max, x = Math.abs, s = /left|center|right/, i = /top|center|bottom/,16 c = /[\+\-]\d+(\.[\d]+)?%?/, f = /^\w+/, l = /%$/, o = j.fn.pos;17 function q(e, a, t) {18 return [parseFloat(e[0]) * (l.test(e[0]) ? a / 100 : 1), parseFloat(e[1]) * (l.test(e[1]) ? t / 100 : 1)]19 }20 function C(e, a) {21 return parseInt(j.css(e, a), 10) || 022 }23 j.pos = {24 scrollbarWidth: function () {25 if (void 0 !== r) return r;26 var e, a,27 t = j("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),28 s = t.children()[0];29 return j("body").append(t), e = s.offsetWidth, t.css("overflow", "scroll"), e === (a = s.offsetWidth) && (a = t[0].clientWidth), t.remove(), r = e - a30 }, getScrollInfo: function (e) {31 var a = e.isWindow || e.isDocument ? "" : e.element.css("overflow-x"),32 t = e.isWindow || e.isDocument ? "" : e.element.css("overflow-y"),33 s = "scroll" === a || "auto" === a && e.width < e.element[0].scrollWidth;34 return {35 width: "scroll" === t || "auto" === t && e.height < e.element[0].scrollHeight ? j.pos.scrollbarWidth() : 0,36 height: s ? j.pos.scrollbarWidth() : 037 }38 }, getWithinInfo: function (e) {39 var a = j(e || window), t = j.isWindow(a[0]), s = !!a[0] && 9 === a[0].nodeType;40 return {41 element: a,42 isWindow: t,43 isDocument: s,44 offset: !t && !s ? j(e).offset() : {left: 0, top: 0},45 scrollLeft: a.scrollLeft(),46 scrollTop: a.scrollTop(),47 width: a.outerWidth(),48 height: a.outerHeight()49 }50 }51 }, j.fn.pos = function (h) {52 if (!h || !h.of) return o.apply(this, arguments);53 h = j.extend({}, h);54 var m, p, d, T, u, e, a, t, g = j(h.of), b = j.pos.getWithinInfo(h.within), k = j.pos.getScrollInfo(b),55 w = (h.collision || "flip").split(" "), v = {};56 return e = 9 === (t = (a = g)[0]).nodeType ? {57 width: a.width(),58 height: a.height(),59 offset: {top: 0, left: 0}60 } : j.isWindow(t) ? {61 width: a.width(),62 height: a.height(),63 offset: {top: a.scrollTop(), left: a.scrollLeft()}64 } : t.preventDefault ? {65 width: 0,66 height: 0,67 offset: {top: t.pageY, left: t.pageX}68 } : {69 width: a.outerWidth(),70 height: a.outerHeight(),71 offset: a.offset()72 }, g[0].preventDefault && (h.at = "left top"), p = e.width, d = e.height, T = e.offset, u = j.extend({}, T), j.each(["my", "at"], function () {73 var e, a, t = (h[this] || "").split(" ");74 1 === t.length && (t = s.test(t[0]) ? t.concat(["center"]) : i.test(t[0]) ? ["center"].concat(t) : ["center", "center"]), t[0] = s.test(t[0]) ? t[0] : "center", t[1] = i.test(t[1]) ? t[1] : "center", e = c.exec(t[0]), a = c.exec(t[1]), v[this] = [e ? e[0] : 0, a ? a[0] : 0], h[this] = [f.exec(t[0])[0], f.exec(t[1])[0]]75 }), 1 === w.length && (w[1] = w[0]), "right" === h.at[0] ? u.left += p : "center" === h.at[0] && (u.left += p / 2), "bottom" === h.at[1] ? u.top += d : "center" === h.at[1] && (u.top += d / 2), m = q(v.at, p, d), u.left += m[0], u.top += m[1], this.each(function () {76 var t, e, c = j(this), f = c.outerWidth(), l = c.outerHeight(), a = C(this, "marginLeft"),77 s = C(this, "marginTop"), r = f + a + C(this, "marginRight") + k.width,78 i = l + s + C(this, "marginBottom") + k.height, o = j.extend({}, u),79 n = q(v.my, c.outerWidth(), c.outerHeight());80 "right" === h.my[0] ? o.left -= f : "center" === h.my[0] && (o.left -= f / 2), "bottom" === h.my[1] ? o.top -= l : "center" === h.my[1] && (o.top -= l / 2), o.left += n[0], o.top += n[1], t = {81 marginLeft: a,82 marginTop: s83 }, j.each(["left", "top"], function (e, a) {84 j.ui.pos[w[e]] && j.ui.pos[w[e]][a](o, {85 targetWidth: p,86 targetHeight: d,87 elemWidth: f,88 elemHeight: l,89 collisionPosition: t,90 collisionWidth: r,91 collisionHeight: i,92 offset: [m[0] + n[0], m[1] + n[1]],93 my: h.my,94 at: h.at,95 within: b,96 elem: c97 })98 }), h.using && (e = function (e) {99 var a = T.left - o.left, t = a + p - f, s = T.top - o.top, r = s + d - l, i = {100 target: {element: g, left: T.left, top: T.top, width: p, height: d},101 element: {element: c, left: o.left, top: o.top, width: f, height: l},102 horizontal: t < 0 ? "left" : 0 < a ? "right" : "center",103 vertical: r < 0 ? "top" : 0 < s ? "bottom" : "middle"104 };105 p < f && x(a + t) < p && (i.horizontal = "center"), d < l && x(s + r) < d && (i.vertical = "middle"), y(x(a), x(t)) > y(x(s), x(r)) ? i.important = "horizontal" : i.important = "vertical", h.using.call(this, e, i)106 }), c.offset(j.extend(o, {using: e}))107 })108 }, j.ui.pos = {109 _trigger: function (e, a, t, s) {110 a.elem && a.elem.trigger({type: t, position: e, positionData: a, triggered: s})111 }, fit: {112 left: function (e, a) {113 j.ui.pos._trigger(e, a, "posCollide", "fitLeft");114 var t, s = a.within, r = s.isWindow ? s.scrollLeft : s.offset.left, i = s.width,115 c = e.left - a.collisionPosition.marginLeft, f = r - c, l = c + a.collisionWidth - i - r;116 a.collisionWidth > i ? 0 < f && l <= 0 ? (t = e.left + f + a.collisionWidth - i - r, e.left += f - t) : e.left = 0 < l && f <= 0 ? r : l < f ? r + i - a.collisionWidth : r : 0 < f ? e.left += f : 0 < l ? e.left -= l : e.left = y(e.left - c, e.left), j.ui.pos._trigger(e, a, "posCollided", "fitLeft")117 }, top: function (e, a) {118 j.ui.pos._trigger(e, a, "posCollide", "fitTop");119 var t, s = a.within, r = s.isWindow ? s.scrollTop : s.offset.top, i = a.within.height,120 c = e.top - a.collisionPosition.marginTop, f = r - c, l = c + a.collisionHeight - i - r;121 a.collisionHeight > i ? 0 < f && l <= 0 ? (t = e.top + f + a.collisionHeight - i - r, e.top += f - t) : e.top = 0 < l && f <= 0 ? r : l < f ? r + i - a.collisionHeight : r : 0 < f ? e.top += f : 0 < l ? e.top -= l : e.top = y(e.top - c, e.top), j.ui.pos._trigger(e, a, "posCollided", "fitTop")122 }123 }, flip: {124 left: function (e, a) {125 j.ui.pos._trigger(e, a, "posCollide", "flipLeft");126 var t, s, r = a.within, i = r.offset.left + r.scrollLeft, c = r.width,127 f = r.isWindow ? r.scrollLeft : r.offset.left, l = e.left - a.collisionPosition.marginLeft,128 o = l - f, n = l + a.collisionWidth - c - f,129 h = "left" === a.my[0] ? -a.elemWidth : "right" === a.my[0] ? a.elemWidth : 0,130 m = "left" === a.at[0] ? a.targetWidth : "right" === a.at[0] ? -a.targetWidth : 0,131 p = -2 * a.offset[0];132 o < 0 ? ((t = e.left + h + m + p + a.collisionWidth - c - i) < 0 || t < x(o)) && (e.left += h + m + p) : 0 < n && (0 < (s = e.left - a.collisionPosition.marginLeft + h + m + p - f) || x(s) < n) && (e.left += h + m + p), j.ui.pos._trigger(e, a, "posCollided", "flipLeft")133 }, top: function (e, a) {134 j.ui.pos._trigger(e, a, "posCollide", "flipTop");135 var t, s, r = a.within, i = r.offset.top + r.scrollTop, c = r.height,136 f = r.isWindow ? r.scrollTop : r.offset.top, l = e.top - a.collisionPosition.marginTop,137 o = l - f, n = l + a.collisionHeight - c - f,138 h = "top" === a.my[1] ? -a.elemHeight : "bottom" === a.my[1] ? a.elemHeight : 0,139 m = "top" === a.at[1] ? a.targetHeight : "bottom" === a.at[1] ? -a.targetHeight : 0,140 p = -2 * a.offset[1];141 o < 0 ? ((s = e.top + h + m + p + a.collisionHeight - c - i) < 0 || s < x(o)) && (e.top += h + m + p) : 0 < n && (0 < (t = e.top - a.collisionPosition.marginTop + h + m + p - f) || x(t) < n) && (e.top += h + m + p), j.ui.pos._trigger(e, a, "posCollided", "flipTop")142 }143 }, flipfit: {144 left: function () {145 j.ui.pos.flip.left.apply(this, arguments), j.ui.pos.fit.left.apply(this, arguments)146 }, top: function () {147 j.ui.pos.flip.top.apply(this, arguments), j.ui.pos.fit.top.apply(this, arguments)148 }149 }150 }, function () {151 var e, a, t, s, r, i = document.getElementsByTagName("body")[0], c = document.createElement("div");152 for (r in e = document.createElement(i ? "div" : "body"), t = {153 visibility: "hidden",154 width: 0,155 height: 0,156 border: 0,157 margin: 0,158 background: "none"159 }, i && j.extend(t, {position: "absolute", left: "-1000px", top: "-1000px"}), t) e.style[r] = t[r];160 e.appendChild(c), (a = i || document.documentElement).insertBefore(e, a.firstChild), c.style.cssText = "position: absolute; left: 10.7432222px;", s = j(c).offset().left, j.support.offsetFractions = 10 < s && s < 11, e.innerHTML = "", a.removeChild(e)161 }()162 }();163 j.ui.position164}), function (e) {165 "use strict";166 "function" == typeof define && define.amd ? define(["jquery"], e) : window.jQuery && !window.jQuery.fn.iconpicker && e(window.jQuery)167}(function (l) {168 "use strict";169 var t = function (e) {170 return !1 === e || "" === e || null == e171 }, s = function (e) {172 return 0 < l(e).length173 }, r = function (e) {174 return "string" == typeof e || e instanceof String175 }, i = function (e, a) {176 return -1 !== l.inArray(e, a)177 }, c = function (e, a) {178 this._id = c._idCounter++, this.element = l(e).addClass("iconpicker-element"), this._trigger("iconpickerCreate", {iconpickerValue: this.iconpickerValue}), this.options = l.extend({}, c.defaultOptions, this.element.data(), a), this.options.templates = l.extend({}, c.defaultOptions.templates, this.options.templates), this.options.originalPlacement = this.options.placement, this.container = !!s(this.options.container) && l(this.options.container), !1 === this.container && (this.element.is(".dropdown-toggle") ? this.container = l("~ .dropdown-menu:first", this.element) : this.container = this.element.is("input,textarea,button,.btn") ? this.element.parent() : this.element), this.container.addClass("iconpicker-container"), this.isDropdownMenu() && (this.options.placement = "inline"), this.input = !!this.element.is("input,textarea") && this.element.addClass("iconpicker-input"), !1 === this.input && (this.input = this.container.find(this.options.input), this.input.is("input,textarea") || (this.input = !1)), this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component), 0 === this.component.length ? this.component = !1 : this.component.find("i").addClass("iconpicker-component"), this._createPopover(), this._createIconpicker(), 0 === this.getAcceptButton().length && (this.options.mustAccept = !1), this.isInputGroup() ? this.container.parent().append(this.popover) : this.container.append(this.popover), this._bindElementEvents(), this._bindWindowEvents(), this.update(this.options.selected), this.isInline() && this.show(), this._trigger("iconpickerCreated", {iconpickerValue: this.iconpickerValue})179 };180 c._idCounter = 0, c.defaultOptions = {181 title: !1,182 selected: !1,183 defaultValue: !1,184 placement: "bottom",185 collision: "none",186 animation: !0,187 hideOnSelect: !1,188 showFooter: !1,189 searchInFooter: !1,190 mustAccept: !1,191 selectedCustomClass: "bg-primary",192 icons: [],193 fullClassFormatter: function (e) {194 return e195 },196 input: "input,.iconpicker-input",197 inputSearch: !1,198 container: !1,199 component: ".input-group-addon,.iconpicker-component",200 templates: {201 popover: '<div class="iconpicker-popover popover"><div class="arrow"></div><div class="popover-title"></div><div class="popover-content"></div></div>',202 footer: '<div class="popover-footer"></div>',203 buttons: '<button class="iconpicker-btn iconpicker-btn-cancel btn btn-default btn-sm">Cancel</button> <button class="iconpicker-btn iconpicker-btn-accept btn btn-primary btn-sm">Accept</button>',204 search: '<input type="search" class="form-control iconpicker-search" placeholder="Type to filter" />',205 iconpicker: '<div class="iconpicker"><div class="iconpicker-items"></div></div>',206 iconpickerItem: '<a role="button" href="javascript:;" class="iconpicker-item"><i></i></a>'207 }208 }, c.batch = function (e, a) {209 var t = Array.prototype.slice.call(arguments, 2);210 return l(e).each(function () {211 var e = l(this).data("iconpicker");212 e && e[a].apply(e, t)213 })214 }, c.prototype = {215 constructor: c, options: {}, _id: 0, _trigger: function (e, a) {216 a = a || {}, this.element.trigger(l.extend({type: e, iconpickerInstance: this}, a))217 }, _createPopover: function () {218 this.popover = l(this.options.templates.popover);219 var e = this.popover.find(".popover-title");220 if (this.options.title && e.append(l('<div class="popover-title-text">' + this.options.title + "</div>")), this.hasSeparatedSearchInput() && !this.options.searchInFooter ? e.append(this.options.templates.search) : this.options.title || e.remove(), this.options.showFooter && !t(this.options.templates.footer)) {221 var a = l(this.options.templates.footer);222 this.hasSeparatedSearchInput() && this.options.searchInFooter && a.append(l(this.options.templates.search)), t(this.options.templates.buttons) || a.append(l(this.options.templates.buttons)), this.popover.append(a)223 }224 return !0 === this.options.animation && this.popover.addClass("fade"), this.popover225 }, _createIconpicker: function () {226 var t = this;227 this.iconpicker = l(this.options.templates.iconpicker);228 var e = function (e) {229 var a = l(this);230 a.is("i") && (a = a.parent()), t._trigger("iconpickerSelect", {231 iconpickerItem: a,232 iconpickerValue: t.iconpickerValue233 }), !1 === t.options.mustAccept ? (t.update(a.data("iconpickerValue")), t._trigger("iconpickerSelected", {234 iconpickerItem: this,235 iconpickerValue: t.iconpickerValue236 })) : t.update(a.data("iconpickerValue"), !0), t.options.hideOnSelect && !1 === t.options.mustAccept && t.hide()237 }, a = l(this.options.templates.iconpickerItem), s = [];238 for (var r in this.options.icons) if ("string" == typeof this.options.icons[r].title) {239 var i = a.clone();240 if (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), 0 < this.options.icons[r].searchTerms.length) {241 for (var c = "", f = 0; f < this.options.icons[r].searchTerms.length; f++) c = c + this.options.icons[r].searchTerms[f] + " ";242 i.attr("data-search-terms", c)243 }244 s.push(i)245 }246 return this.iconpicker.find(".iconpicker-items").append(s), this.popover.find(".popover-content").append(this.iconpicker), this.iconpicker247 }, _isEventInsideIconpicker: function (e) {248 var a = l(e.target);249 return !((!a.hasClass("iconpicker-element") || a.hasClass("iconpicker-element") && !a.is(this.element)) && 0 === a.parents(".iconpicker-popover").length)250 }, _bindElementEvents: function () {251 var a = this;252 this.getSearchInput().on("keyup.iconpicker", function () {253 a.filter(l(this).val().toLowerCase())254 }), this.getAcceptButton().on("click.iconpicker", function () {255 var e = a.iconpicker.find(".iconpicker-selected").get(0);256 a.update(a.iconpickerValue), a._trigger("iconpickerSelected", {257 iconpickerItem: e,258 iconpickerValue: a.iconpickerValue259 }), a.isInline() || a.hide()260 }), this.getCancelButton().on("click.iconpicker", function () {261 a.isInline() || a.hide()262 }), this.element.on("focus.iconpicker", function (e) {263 a.show(), e.stopPropagation()264 }), this.hasComponent() && this.component.on("click.iconpicker", function () {265 a.toggle()266 }), this.hasInput() && this.input.on("keyup.iconpicker", function (e) {267 i(e.keyCode, [38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86]) ? a._updateFormGroupStatus(!1 !== a.getValid(this.value)) : a.update(), !0 === a.options.inputSearch && a.filter(l(this).val().toLowerCase())268 })269 }, _bindWindowEvents: function () {270 var e = l(window.document), a = this, t = ".iconpicker.inst" + this._id;271 l(window).on("resize.iconpicker" + t + " orientationchange.iconpicker" + t, function (e) {272 a.popover.hasClass("in") && a.updatePlacement()273 }), a.isInline() || e.on("mouseup" + t, function (e) {274 a._isEventInsideIconpicker(e) || a.isInline() || a.hide()275 })276 }, _unbindElementEvents: function () {277 this.popover.off(".iconpicker"), this.element.off(".iconpicker"), this.hasInput() && this.input.off(".iconpicker"), this.hasComponent() && this.component.off(".iconpicker"), this.hasContainer() && this.container.off(".iconpicker")278 }, _unbindWindowEvents: function () {279 l(window).off(".iconpicker.inst" + this._id), l(window.document).off(".iconpicker.inst" + this._id)280 }, updatePlacement: function (e, a) {281 e = e || this.options.placement, this.options.placement = e, a = !0 === (a = a || this.options.collision) ? "flip" : a;282 var t = {283 at: "right bottom",284 my: "right top",285 of: this.hasInput() && !this.isInputGroup() ? this.input : this.container,286 collision: !0 === a ? "flip" : a,287 within: window288 };289 if (this.popover.removeClass("inline topLeftCorner topLeft top topRight topRightCorner rightTop right rightBottom bottomRight bottomRightCorner bottom bottomLeft bottomLeftCorner leftBottom left leftTop"), "object" == typeof e) return this.popover.pos(l.extend({}, t, e));290 switch (e) {291 case"inline":292 t = !1;293 break;294 case"topLeftCorner":295 t.my = "right bottom", t.at = "left top";296 break;297 case"topLeft":298 t.my = "left bottom", t.at = "left top";299 break;300 case"top":301 t.my = "center bottom", t.at = "center top";302 break;303 case"topRight":304 t.my = "right bottom", t.at = "right top";305 break;306 case"topRightCorner":307 t.my = "left bottom", t.at = "right top";308 break;309 case"rightTop":310 t.my = "left bottom", t.at = "right center";311 break;312 case"right":313 t.my = "left center", t.at = "right center";314 break;315 case"rightBottom":316 t.my = "left top", t.at = "right center";317 break;318 case"bottomRightCorner":319 t.my = "left top", t.at = "right bottom";320 break;321 case"bottomRight":322 t.my = "right top", t.at = "right bottom";323 break;324 case"bottom":325 t.my = "center top", t.at = "center bottom";326 break;327 case"bottomLeft":328 t.my = "left top", t.at = "left bottom";329 break;330 case"bottomLeftCorner":331 t.my = "right top", t.at = "left bottom";332 break;333 case"leftBottom":334 t.my = "right top", t.at = "left center";335 break;336 case"left":337 t.my = "right center", t.at = "left center";338 break;339 case"leftTop":340 t.my = "right bottom", t.at = "left center";341 break;342 default:343 return !1344 }345 return this.popover.css({display: "inline" === this.options.placement ? "" : "block"}), !1 !== t ? this.popover.pos(t).css("maxWidth", l(window).width() - this.container.offset().left - 5) : this.popover.css({346 top: "auto",347 right: "auto",348 bottom: "auto",349 left: "auto",350 maxWidth: "none"351 }), this.popover.addClass(this.options.placement), !0352 }, _updateComponents: function () {353 if (this.iconpicker.find(".iconpicker-item.iconpicker-selected").removeClass("iconpicker-selected " + this.options.selectedCustomClass), this.iconpickerValue && this.iconpicker.find("." + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, ".")).parent().addClass("iconpicker-selected " + this.options.selectedCustomClass), this.hasComponent()) {354 var e = this.component.find("i");355 0 < e.length ? e.attr("class", this.options.fullClassFormatter(this.iconpickerValue)) : this.component.html(this.getHtml())356 }357 }, _updateFormGroupStatus: function (e) {358 return !!this.hasInput() && (!1 !== e ? this.input.parents(".form-group:first").removeClass("has-error") : this.input.parents(".form-group:first").addClass("has-error"), !0)359 }, getValid: function (e) {360 r(e) || (e = "");361 var a = "" === e;362 e = l.trim(e);363 for (var t = !1, s = 0; s < this.options.icons.length; s++) if (this.options.icons[s].title === e) {364 t = !0;365 break366 }367 return !(!t && !a) && e368 }, setValue: function (e) {369 var a = this.getValid(e);370 return !1 !== a ? (this.iconpickerValue = a, this._trigger("iconpickerSetValue", {iconpickerValue: a}), this.iconpickerValue) : (this._trigger("iconpickerInvalid", {iconpickerValue: e}), !1)371 }, getHtml: function () {372 return '<i class="' + this.options.fullClassFormatter(this.iconpickerValue) + '"></i>'373 }, setSourceValue: function (e) {374 return !1 !== (e = this.setValue(e)) && "" !== e && (this.hasInput() ? this.input.val(this.iconpickerValue) : this.element.data("iconpickerValue", this.iconpickerValue), this._trigger("iconpickerSetSourceValue", {iconpickerValue: e})), e375 }, getSourceValue: function (e) {376 var a = e = e || this.options.defaultValue;377 return void 0 !== (a = this.hasInput() ? this.input.val() : this.element.data("iconpickerValue")) && "" !== a && null !== a && !1 !== a || (a = e), a378 }, hasInput: function () {379 return !1 !== this.input380 }, isInputSearch: function () {381 return this.hasInput() && !0 === this.options.inputSearch382 }, isInputGroup: function () {383 return this.container.is(".input-group")384 }, isDropdownMenu: function () {385 return this.container.is(".dropdown-menu")386 }, hasSeparatedSearchInput: function () {387 return !1 !== this.options.templates.search && !this.isInputSearch()388 }, hasComponent: function () {389 return !1 !== this.component390 }, hasContainer: function () {391 return !1 !== this.container392 }, getAcceptButton: function () {393 return this.popover.find(".iconpicker-btn-accept")394 }, getCancelButton: function () {395 return this.popover.find(".iconpicker-btn-cancel")396 }, getSearchInput: function () {397 return this.popover.find(".iconpicker-search")398 }, filter: function (s) {399 if (t(s)) return this.iconpicker.find(".iconpicker-item").show(), l(!1);400 var r = [];401 return this.iconpicker.find(".iconpicker-item").each(function () {402 var e = l(this), a = e.attr("title").toLowerCase();403 a = a + " " + (e.attr("data-search-terms") ? e.attr("data-search-terms").toLowerCase() : "");404 var t = !1;405 try {406 t = new RegExp("(^|\\W)" + s, "g")407 } catch (e) {408 t = !1409 }410 !1 !== t && a.match(t) ? (r.push(e), e.show()) : e.hide()411 }), r412 }, show: function () {413 if (this.popover.hasClass("in")) return !1;414 l.iconpicker.batch(l(".iconpicker-popover.in:not(.inline)").not(this.popover), "hide"), this._trigger("iconpickerShow", {iconpickerValue: this.iconpickerValue}), this.updatePlacement(), this.popover.addClass("in"), setTimeout(l.proxy(function () {415 this.popover.css("display", this.isInline() ? "" : "block"), this._trigger("iconpickerShown", {iconpickerValue: this.iconpickerValue})416 }, this), this.options.animation ? 300 : 1)417 }, hide: function () {418 if (!this.popover.hasClass("in")) return !1;419 this._trigger("iconpickerHide", {iconpickerValue: this.iconpickerValue}), this.popover.removeClass("in"), setTimeout(l.proxy(function () {420 this.popover.css("display", "none"), this.getSearchInput().val(""), this.filter(""), this._trigger("iconpickerHidden", {iconpickerValue: this.iconpickerValue})421 }, this), this.options.animation ? 300 : 1)422 }, toggle: function () {423 this.popover.is(":visible") ? this.hide() : this.show(!0)424 }, update: function (e, a) {425 return e = e || this.getSourceValue(this.iconpickerValue), this._trigger("iconpickerUpdate", {iconpickerValue: this.iconpickerValue}), !0 === a ? e = this.setValue(e) : (e = this.setSourceValue(e), this._updateFormGroupStatus(!1 !== e)), !1 !== e && this._updateComponents(), this._trigger("iconpickerUpdated", {iconpickerValue: this.iconpickerValue}), e426 }, destroy: function () {427 this._trigger("iconpickerDestroy", {iconpickerValue: this.iconpickerValue}), this.element.removeData("iconpicker").removeData("iconpickerValue").removeClass("iconpicker-element"), this._unbindElementEvents(), this._unbindWindowEvents(), l(this.popover).remove(), this._trigger("iconpickerDestroyed", {iconpickerValue: this.iconpickerValue})428 }, disable: function () {429 return !!this.hasInput() && (this.input.prop("disabled", !0), !0)430 }, enable: function () {431 return !!this.hasInput() && (this.input.prop("disabled", !1), !0)432 }, isDisabled: function () {433 return !!this.hasInput() && !0 === this.input.prop("disabled")434 }, isInline: function () {435 return "inline" === this.options.placement || this.popover.hasClass("inline")436 }437 }, l.iconpicker = c, l.fn.iconpicker = function (a) {438 return this.each(function () {439 var e = l(this);440 e.data("iconpicker") || e.data("iconpicker", new c(this, "object" == typeof a ? a : {}))441 })442 }, c.defaultOptions = l.extend(c.defaultOptions, {443 icons: [444 {445 title: "flaticon-analytics",446 searchTerms: ['analytics','flaticon']447 },448 {449 title: "flaticon-worldwide",450 searchTerms: ['worldwide','flaticon']451 },452 {453 title: "flaticon-internet",454 searchTerms: ['internet','flaticon']455 },456 {457 title: "flaticon-handshake",458 searchTerms: ['handshake','flaticon']459 },460 {461 title: "flaticon-file",462 searchTerms: ['file','flaticon']463 },464 {465 title: "flaticon-contract",466 searchTerms: ['contract','flaticon']467 },468 {469 title: "flaticon-business-and-finance",470 searchTerms: ['business','finance','flaticon']471 },472 {473 title: "flaticon-creative",474 searchTerms: ['creative','flaticon']475 },476 {477 title: "flaticon-pie-chart",478 searchTerms: ['pie-chart','flaticon']479 },480 {481 title: "flaticon-money-bag",482 searchTerms: ['money-bag','flaticon']483 },484 {485 title: "flaticon-money",486 searchTerms: ['money','flaticon']487 },488 {489 title: "flaticon-quote",490 searchTerms: ['quote','flaticon']491 },492 {493 title: "flaticon-left-quote",494 searchTerms: ['left-quote','flaticon']495 },496 {497 title: "flaticon-mail",498 searchTerms: ['mail','flaticon']499 },500 {501 title: "flaticon-envelope",502 searchTerms: ['envelope','flaticon']503 },504 {505 title: "flaticon-email",506 searchTerms: ['email','flaticon']507 },508 {509 title: "flaticon-call",510 searchTerms: ['call','flaticon']511 },512 {513 title: "flaticon-phone-call",514 searchTerms: ['phone-call','flaticon']515 },516 {517 title: "fab fa-500px",518 searchTerms: []519 },520 {521 title: "fab fa-accessible-icon",522 searchTerms: ["accessibility", "handicap", "person", "wheelchair", "wheelchair-alt"]523 }, {title: "fab fa-accusoft", searchTerms: []}, {524 title: "fab fa-acquisitions-incorporated",525 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop"]526 }, {title: "fas fa-ad", searchTerms: []}, {527 title: "fas fa-address-book",528 searchTerms: []529 }, {title: "far fa-address-book", searchTerms: []}, {530 title: "fas fa-address-card",531 searchTerms: []532 }, {title: "far fa-address-card", searchTerms: []}, {533 title: "fas fa-adjust",534 searchTerms: ["contrast"]535 }, {title: "fab fa-adn", searchTerms: []}, {536 title: "fab fa-adversal",537 searchTerms: []538 }, {title: "fab fa-affiliatetheme", searchTerms: []}, {539 title: "fas fa-air-freshener",540 searchTerms: []541 }, {title: "fab fa-algolia", searchTerms: []}, {542 title: "fas fa-align-center",543 searchTerms: ["middle", "text"]544 }, {title: "fas fa-align-justify", searchTerms: ["text"]}, {545 title: "fas fa-align-left",546 searchTerms: ["text"]547 }, {title: "fas fa-align-right", searchTerms: ["text"]}, {548 title: "fab fa-alipay",549 searchTerms: []550 }, {551 title: "fas fa-allergies",552 searchTerms: ["freckles", "hand", "intolerances", "pox", "spots"]553 }, {title: "fab fa-amazon", searchTerms: []}, {554 title: "fab fa-amazon-pay",555 searchTerms: []556 }, {557 title: "fas fa-ambulance",558 searchTerms: ["help", "machine", "support", "vehicle"]559 }, {title: "fas fa-american-sign-language-interpreting", searchTerms: []}, {560 title: "fab fa-amilia",561 searchTerms: []562 }, {title: "fas fa-anchor", searchTerms: ["link"]}, {563 title: "fab fa-android",564 searchTerms: ["robot"]565 }, {title: "fab fa-angellist", searchTerms: []}, {566 title: "fas fa-angle-double-down",567 searchTerms: ["arrows"]568 }, {569 title: "fas fa-angle-double-left",570 searchTerms: ["arrows", "back", "laquo", "previous", "quote"]571 }, {572 title: "fas fa-angle-double-right",573 searchTerms: ["arrows", "forward", "next", "quote", "raquo"]574 }, {title: "fas fa-angle-double-up", searchTerms: ["arrows"]}, {575 title: "fas fa-angle-down",576 searchTerms: ["arrow"]577 }, {title: "fas fa-angle-left", searchTerms: ["arrow", "back", "previous"]}, {578 title: "fas fa-angle-right",579 searchTerms: ["arrow", "forward", "next"]580 }, {title: "fas fa-angle-up", searchTerms: ["arrow"]}, {581 title: "fas fa-angry",582 searchTerms: ["disapprove", "emoticon", "face", "mad", "upset"]583 }, {584 title: "far fa-angry",585 searchTerms: ["disapprove", "emoticon", "face", "mad", "upset"]586 }, {title: "fab fa-angrycreative", searchTerms: []}, {587 title: "fab fa-angular",588 searchTerms: []589 }, {590 title: "fas fa-ankh",591 searchTerms: ["amulet", "copper", "coptic christianity", "copts", "crux ansata", "egyptian", "venus"]592 }, {title: "fab fa-app-store", searchTerms: []}, {593 title: "fab fa-app-store-ios",594 searchTerms: []595 }, {title: "fab fa-apper", searchTerms: []}, {596 title: "fab fa-apple",597 searchTerms: ["food", "fruit", "mac", "osx"]598 }, {599 title: "fas fa-apple-alt",600 searchTerms: ["fall", "food", "fruit", "fuji", "macintosh", "seasonal"]601 }, {title: "fab fa-apple-pay", searchTerms: []}, {602 title: "fas fa-archive",603 searchTerms: ["box", "package", "storage"]604 }, {605 title: "fas fa-archway",606 searchTerms: ["arc", "monument", "road", "street"]607 }, {608 title: "fas fa-arrow-alt-circle-down",609 searchTerms: ["arrow-circle-o-down", "download"]610 }, {611 title: "far fa-arrow-alt-circle-down",612 searchTerms: ["arrow-circle-o-down", "download"]613 }, {614 title: "fas fa-arrow-alt-circle-left",615 searchTerms: ["arrow-circle-o-left", "back", "previous"]616 }, {617 title: "far fa-arrow-alt-circle-left",618 searchTerms: ["arrow-circle-o-left", "back", "previous"]619 }, {620 title: "fas fa-arrow-alt-circle-right",621 searchTerms: ["arrow-circle-o-right", "forward", "next"]622 }, {623 title: "far fa-arrow-alt-circle-right",624 searchTerms: ["arrow-circle-o-right", "forward", "next"]625 }, {626 title: "fas fa-arrow-alt-circle-up",627 searchTerms: ["arrow-circle-o-up"]628 }, {629 title: "far fa-arrow-alt-circle-up",630 searchTerms: ["arrow-circle-o-up"]631 }, {title: "fas fa-arrow-circle-down", searchTerms: ["download"]}, {632 title: "fas fa-arrow-circle-left",633 searchTerms: ["back", "previous"]634 }, {title: "fas fa-arrow-circle-right", searchTerms: ["forward", "next"]}, {635 title: "fas fa-arrow-circle-up",636 searchTerms: []637 }, {title: "fas fa-arrow-down", searchTerms: ["download"]}, {638 title: "fas fa-arrow-left",639 searchTerms: ["back", "previous"]640 }, {title: "fas fa-arrow-right", searchTerms: ["forward", "next"]}, {641 title: "fas fa-arrow-up",642 searchTerms: []643 }, {644 title: "fas fa-arrows-alt",645 searchTerms: ["arrow", "arrows", "bigger", "enlarge", "expand", "fullscreen", "move", "position", "reorder", "resize"]646 }, {title: "fas fa-arrows-alt-h", searchTerms: ["arrows-h", "resize"]}, {647 title: "fas fa-arrows-alt-v",648 searchTerms: ["arrows-v", "resize"]649 }, {title: "fas fa-assistive-listening-systems", searchTerms: []}, {650 title: "fas fa-asterisk",651 searchTerms: ["details"]652 }, {title: "fab fa-asymmetrik", searchTerms: []}, {653 title: "fas fa-at",654 searchTerms: ["e-mail", "email"]655 }, {656 title: "fas fa-atlas",657 searchTerms: ["book", "directions", "geography", "map", "wayfinding"]658 }, {title: "fas fa-atom", searchTerms: ["atheism", "chemistry", "science"]}, {659 title: "fab fa-audible",660 searchTerms: []661 }, {title: "fas fa-audio-description", searchTerms: []}, {662 title: "fab fa-autoprefixer",663 searchTerms: []664 }, {title: "fab fa-avianex", searchTerms: []}, {665 title: "fab fa-aviato",666 searchTerms: []667 }, {668 title: "fas fa-award",669 searchTerms: ["honor", "praise", "prize", "recognition", "ribbon"]670 }, {title: "fab fa-aws", searchTerms: []}, {671 title: "fas fa-backspace",672 searchTerms: ["command", "delete", "keyboard", "undo"]673 }, {title: "fas fa-backward", searchTerms: ["previous", "rewind"]}, {674 title: "fas fa-balance-scale",675 searchTerms: ["balanced", "justice", "legal", "measure", "weight"]676 }, {677 title: "fas fa-ban",678 searchTerms: ["abort", "ban", "block", "cancel", "delete", "hide", "prohibit", "remove", "stop", "trash"]679 }, {title: "fas fa-band-aid", searchTerms: ["bandage", "boo boo", "ouch"]}, {680 title: "fab fa-bandcamp",681 searchTerms: []682 }, {title: "fas fa-barcode", searchTerms: ["scan"]}, {683 title: "fas fa-bars",684 searchTerms: ["checklist", "drag", "hamburger", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "todo", "ul"]685 }, {title: "fas fa-baseball-ball", searchTerms: []}, {686 title: "fas fa-basketball-ball",687 searchTerms: []688 }, {title: "fas fa-bath", searchTerms: []}, {689 title: "fas fa-battery-empty",690 searchTerms: ["power", "status"]691 }, {title: "fas fa-battery-full", searchTerms: ["power", "status"]}, {692 title: "fas fa-battery-half",693 searchTerms: ["power", "status"]694 }, {title: "fas fa-battery-quarter", searchTerms: ["power", "status"]}, {695 title: "fas fa-battery-three-quarters",696 searchTerms: ["power", "status"]697 }, {title: "fas fa-bed", searchTerms: ["lodging", "sleep", "travel"]}, {698 title: "fas fa-beer",699 searchTerms: ["alcohol", "bar", "beverage", "drink", "liquor", "mug", "stein"]700 }, {title: "fab fa-behance", searchTerms: []}, {701 title: "fab fa-behance-square",702 searchTerms: []703 }, {title: "fas fa-bell", searchTerms: ["alert", "notification", "reminder"]}, {704 title: "far fa-bell",705 searchTerms: ["alert", "notification", "reminder"]706 }, {title: "fas fa-bell-slash", searchTerms: []}, {707 title: "far fa-bell-slash",708 searchTerms: []709 }, {710 title: "fas fa-bezier-curve",711 searchTerms: ["curves", "illustrator", "lines", "path", "vector"]712 }, {title: "fas fa-bible", searchTerms: ["book", "catholicism", "christianity"]}, {713 title: "fas fa-bicycle",714 searchTerms: ["bike", "gears", "transportation", "vehicle"]715 }, {title: "fab fa-bimobject", searchTerms: []}, {716 title: "fas fa-binoculars",717 searchTerms: []718 }, {title: "fas fa-birthday-cake", searchTerms: []}, {719 title: "fab fa-bitbucket",720 searchTerms: ["bitbucket-square", "git"]721 }, {title: "fab fa-bitcoin", searchTerms: []}, {722 title: "fab fa-bity",723 searchTerms: []724 }, {title: "fab fa-black-tie", searchTerms: []}, {725 title: "fab fa-blackberry",726 searchTerms: []727 }, {title: "fas fa-blender", searchTerms: []}, {728 title: "fas fa-blender-phone",729 searchTerms: ["appliance", "fantasy", "silly"]730 }, {title: "fas fa-blind", searchTerms: []}, {731 title: "fab fa-blogger",732 searchTerms: []733 }, {title: "fab fa-blogger-b", searchTerms: []}, {734 title: "fab fa-bluetooth",735 searchTerms: []736 }, {title: "fab fa-bluetooth-b", searchTerms: []}, {737 title: "fas fa-bold",738 searchTerms: []739 }, {title: "fas fa-bolt", searchTerms: ["electricity", "lightning", "weather", "zap"]}, {740 title: "fas fa-bomb",741 searchTerms: []742 }, {title: "fas fa-bone", searchTerms: []}, {743 title: "fas fa-bong",744 searchTerms: ["aparatus", "cannabis", "marijuana", "pipe", "smoke", "smoking"]745 }, {title: "fas fa-book", searchTerms: ["documentation", "read"]}, {746 title: "fas fa-book-dead",747 searchTerms: ["Dungeons & Dragons", "crossbones", "d&d", "dark arts", "death", "dnd", "documentation", "evil", "fantasy", "halloween", "holiday", "read", "skull", "spell"]748 }, {749 title: "fas fa-book-open",750 searchTerms: ["flyer", "notebook", "open book", "pamphlet", "reading"]751 }, {title: "fas fa-book-reader", searchTerms: ["library"]}, {752 title: "fas fa-bookmark",753 searchTerms: ["save"]754 }, {title: "far fa-bookmark", searchTerms: ["save"]}, {755 title: "fas fa-bowling-ball",756 searchTerms: []757 }, {title: "fas fa-box", searchTerms: ["package"]}, {758 title: "fas fa-box-open",759 searchTerms: []760 }, {title: "fas fa-boxes", searchTerms: []}, {title: "fas fa-braille", searchTerms: []}, {761 title: "fas fa-brain",762 searchTerms: ["cerebellum", "gray matter", "intellect", "medulla oblongata", "mind", "noodle", "wit"]763 }, {764 title: "fas fa-briefcase",765 searchTerms: ["bag", "business", "luggage", "office", "work"]766 }, {title: "fas fa-briefcase-medical", searchTerms: ["health briefcase"]}, {767 title: "fas fa-broadcast-tower",768 searchTerms: ["airwaves", "radio", "waves"]769 }, {770 title: "fas fa-broom",771 searchTerms: ["clean", "firebolt", "fly", "halloween", "holiday", "nimbus 2000", "quidditch", "sweep", "witch"]772 }, {title: "fas fa-brush", searchTerms: ["bristles", "color", "handle", "painting"]}, {773 title: "fab fa-btc",774 searchTerms: []775 }, {title: "fas fa-bug", searchTerms: ["insect", "report"]}, {776 title: "fas fa-building",777 searchTerms: ["apartment", "business", "company", "office", "work"]778 }, {779 title: "far fa-building",780 searchTerms: ["apartment", "business", "company", "office", "work"]781 }, {782 title: "fas fa-bullhorn",783 searchTerms: ["announcement", "broadcast", "louder", "megaphone", "share"]784 }, {title: "fas fa-bullseye", searchTerms: ["target"]}, {785 title: "fas fa-burn",786 searchTerms: ["energy"]787 }, {title: "fab fa-buromobelexperte", searchTerms: []}, {788 title: "fas fa-bus",789 searchTerms: ["machine", "public transportation", "transportation", "vehicle"]790 }, {791 title: "fas fa-bus-alt",792 searchTerms: ["machine", "public transportation", "transportation", "vehicle"]793 }, {794 title: "fas fa-business-time",795 searchTerms: ["briefcase", "business socks", "clock", "flight of the conchords", "wednesday"]796 }, {title: "fab fa-buysellads", searchTerms: []}, {797 title: "fas fa-calculator",798 searchTerms: []799 }, {800 title: "fas fa-calendar",801 searchTerms: ["calendar-o", "date", "event", "schedule", "time", "when"]802 }, {803 title: "far fa-calendar",804 searchTerms: ["calendar-o", "date", "event", "schedule", "time", "when"]805 }, {806 title: "fas fa-calendar-alt",807 searchTerms: ["calendar", "date", "event", "schedule", "time", "when"]808 }, {809 title: "far fa-calendar-alt",810 searchTerms: ["calendar", "date", "event", "schedule", "time", "when"]811 }, {812 title: "fas fa-calendar-check",813 searchTerms: ["accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo"]814 }, {815 title: "far fa-calendar-check",816 searchTerms: ["accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo"]817 }, {818 title: "fas fa-calendar-minus",819 searchTerms: ["delete", "negative", "remove"]820 }, {821 title: "far fa-calendar-minus",822 searchTerms: ["delete", "negative", "remove"]823 }, {824 title: "fas fa-calendar-plus",825 searchTerms: ["add", "create", "new", "positive"]826 }, {827 title: "far fa-calendar-plus",828 searchTerms: ["add", "create", "new", "positive"]829 }, {830 title: "fas fa-calendar-times",831 searchTerms: ["archive", "delete", "remove", "x"]832 }, {title: "far fa-calendar-times", searchTerms: ["archive", "delete", "remove", "x"]}, {833 title: "fas fa-camera",834 searchTerms: ["photo", "picture", "record"]835 }, {title: "fas fa-camera-retro", searchTerms: ["photo", "picture", "record"]}, {836 title: "fas fa-campground",837 searchTerms: ["camping", "fall", "outdoors", "seasonal", "tent"]838 }, {839 title: "fas fa-cannabis",840 searchTerms: ["bud", "chronic", "drugs", "endica", "endo", "ganja", "marijuana", "mary jane", "pot", "reefer", "sativa", "spliff", "weed", "whacky-tabacky"]841 }, {title: "fas fa-capsules", searchTerms: ["drugs", "medicine"]}, {842 title: "fas fa-car",843 searchTerms: ["machine", "transportation", "vehicle"]844 }, {title: "fas fa-car-alt", searchTerms: []}, {845 title: "fas fa-car-battery",846 searchTerms: []847 }, {title: "fas fa-car-crash", searchTerms: []}, {848 title: "fas fa-car-side",849 searchTerms: []850 }, {851 title: "fas fa-caret-down",852 searchTerms: ["arrow", "dropdown", "menu", "more", "triangle down"]853 }, {854 title: "fas fa-caret-left",855 searchTerms: ["arrow", "back", "previous", "triangle left"]856 }, {857 title: "fas fa-caret-right",858 searchTerms: ["arrow", "forward", "next", "triangle right"]859 }, {860 title: "fas fa-caret-square-down",861 searchTerms: ["caret-square-o-down", "dropdown", "menu", "more"]862 }, {863 title: "far fa-caret-square-down",864 searchTerms: ["caret-square-o-down", "dropdown", "menu", "more"]865 }, {866 title: "fas fa-caret-square-left",867 searchTerms: ["back", "caret-square-o-left", "previous"]868 }, {869 title: "far fa-caret-square-left",870 searchTerms: ["back", "caret-square-o-left", "previous"]871 }, {872 title: "fas fa-caret-square-right",873 searchTerms: ["caret-square-o-right", "forward", "next"]874 }, {875 title: "far fa-caret-square-right",876 searchTerms: ["caret-square-o-right", "forward", "next"]877 }, {title: "fas fa-caret-square-up", searchTerms: ["caret-square-o-up"]}, {878 title: "far fa-caret-square-up",879 searchTerms: ["caret-square-o-up"]880 }, {title: "fas fa-caret-up", searchTerms: ["arrow", "triangle up"]}, {881 title: "fas fa-cart-arrow-down",882 searchTerms: ["shopping"]883 }, {884 title: "fas fa-cart-plus",885 searchTerms: ["add", "create", "new", "positive", "shopping"]886 }, {887 title: "fas fa-cat",888 searchTerms: ["feline", "halloween", "holiday", "kitten", "kitty", "meow", "pet"]889 }, {title: "fab fa-cc-amazon-pay", searchTerms: []}, {890 title: "fab fa-cc-amex",891 searchTerms: ["amex"]892 }, {title: "fab fa-cc-apple-pay", searchTerms: []}, {893 title: "fab fa-cc-diners-club",894 searchTerms: []895 }, {title: "fab fa-cc-discover", searchTerms: []}, {896 title: "fab fa-cc-jcb",897 searchTerms: []898 }, {title: "fab fa-cc-mastercard", searchTerms: []}, {899 title: "fab fa-cc-paypal",900 searchTerms: []901 }, {title: "fab fa-cc-stripe", searchTerms: []}, {902 title: "fab fa-cc-visa",903 searchTerms: []904 }, {title: "fab fa-centercode", searchTerms: []}, {905 title: "fas fa-certificate",906 searchTerms: ["badge", "star"]907 }, {title: "fas fa-chair", searchTerms: ["furniture", "seat"]}, {908 title: "fas fa-chalkboard",909 searchTerms: ["blackboard", "learning", "school", "teaching", "whiteboard", "writing"]910 }, {911 title: "fas fa-chalkboard-teacher",912 searchTerms: ["blackboard", "instructor", "learning", "professor", "school", "whiteboard", "writing"]913 }, {title: "fas fa-charging-station", searchTerms: []}, {914 title: "fas fa-chart-area",915 searchTerms: ["analytics", "area-chart", "graph"]916 }, {title: "fas fa-chart-bar", searchTerms: ["analytics", "bar-chart", "graph"]}, {917 title: "far fa-chart-bar",918 searchTerms: ["analytics", "bar-chart", "graph"]919 }, {920 title: "fas fa-chart-line",921 searchTerms: ["activity", "analytics", "dashboard", "graph", "line-chart"]922 }, {title: "fas fa-chart-pie", searchTerms: ["analytics", "graph", "pie-chart"]}, {923 title: "fas fa-check",924 searchTerms: ["accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo", "yes"]925 }, {926 title: "fas fa-check-circle",927 searchTerms: ["accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes"]928 }, {929 title: "far fa-check-circle",930 searchTerms: ["accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes"]931 }, {932 title: "fas fa-check-double",933 searchTerms: ["accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo"]934 }, {935 title: "fas fa-check-square",936 searchTerms: ["accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes"]937 }, {938 title: "far fa-check-square",939 searchTerms: ["accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes"]940 }, {title: "fas fa-chess", searchTerms: []}, {941 title: "fas fa-chess-bishop",942 searchTerms: []943 }, {title: "fas fa-chess-board", searchTerms: []}, {944 title: "fas fa-chess-king",945 searchTerms: []946 }, {title: "fas fa-chess-knight", searchTerms: []}, {947 title: "fas fa-chess-pawn",948 searchTerms: []949 }, {title: "fas fa-chess-queen", searchTerms: []}, {950 title: "fas fa-chess-rook",951 searchTerms: []952 }, {953 title: "fas fa-chevron-circle-down",954 searchTerms: ["arrow", "dropdown", "menu", "more"]955 }, {956 title: "fas fa-chevron-circle-left",957 searchTerms: ["arrow", "back", "previous"]958 }, {959 title: "fas fa-chevron-circle-right",960 searchTerms: ["arrow", "forward", "next"]961 }, {title: "fas fa-chevron-circle-up", searchTerms: ["arrow"]}, {962 title: "fas fa-chevron-down",963 searchTerms: []964 }, {title: "fas fa-chevron-left", searchTerms: ["back", "bracket", "previous"]}, {965 title: "fas fa-chevron-right",966 searchTerms: ["bracket", "forward", "next"]967 }, {title: "fas fa-chevron-up", searchTerms: []}, {968 title: "fas fa-child",969 searchTerms: []970 }, {title: "fab fa-chrome", searchTerms: ["browser"]}, {971 title: "fas fa-church",972 searchTerms: ["building", "community", "religion"]973 }, {title: "fas fa-circle", searchTerms: ["circle-thin", "dot", "notification"]}, {974 title: "far fa-circle",975 searchTerms: ["circle-thin", "dot", "notification"]976 }, {title: "fas fa-circle-notch", searchTerms: ["circle-o-notch"]}, {977 title: "fas fa-city",978 searchTerms: ["buildings", "busy", "skyscrapers", "urban", "windows"]979 }, {title: "fas fa-clipboard", searchTerms: ["paste"]}, {980 title: "far fa-clipboard",981 searchTerms: ["paste"]982 }, {983 title: "fas fa-clipboard-check",984 searchTerms: ["accept", "agree", "confirm", "done", "ok", "select", "success", "todo", "yes"]985 }, {986 title: "fas fa-clipboard-list",987 searchTerms: ["checklist", "completed", "done", "finished", "intinerary", "ol", "schedule", "todo", "ul"]988 }, {989 title: "fas fa-clock",990 searchTerms: ["date", "late", "schedule", "timer", "timestamp", "watch"]991 }, {992 title: "far fa-clock",993 searchTerms: ["date", "late", "schedule", "timer", "timestamp", "watch"]994 }, {title: "fas fa-clone", searchTerms: ["copy", "duplicate"]}, {995 title: "far fa-clone",996 searchTerms: ["copy", "duplicate"]997 }, {title: "fas fa-closed-captioning", searchTerms: ["cc"]}, {998 title: "far fa-closed-captioning",999 searchTerms: ["cc"]1000 }, {title: "fas fa-cloud", searchTerms: ["save"]}, {1001 title: "fas fa-cloud-download-alt",1002 searchTerms: ["import"]1003 }, {title: "fas fa-cloud-meatball", searchTerms: []}, {1004 title: "fas fa-cloud-moon",1005 searchTerms: ["crescent", "evening", "halloween", "holiday", "lunar", "night", "sky"]1006 }, {title: "fas fa-cloud-moon-rain", searchTerms: []}, {1007 title: "fas fa-cloud-rain",1008 searchTerms: ["precipitation"]1009 }, {1010 title: "fas fa-cloud-showers-heavy",1011 searchTerms: ["precipitation", "rain", "storm"]1012 }, {1013 title: "fas fa-cloud-sun",1014 searchTerms: ["day", "daytime", "fall", "outdoors", "seasonal"]1015 }, {title: "fas fa-cloud-sun-rain", searchTerms: []}, {1016 title: "fas fa-cloud-upload-alt",1017 searchTerms: ["cloud-upload"]1018 }, {title: "fab fa-cloudscale", searchTerms: []}, {1019 title: "fab fa-cloudsmith",1020 searchTerms: []1021 }, {title: "fab fa-cloudversify", searchTerms: []}, {1022 title: "fas fa-cocktail",1023 searchTerms: ["alcohol", "beverage", "drink"]1024 }, {title: "fas fa-code", searchTerms: ["brackets", "html"]}, {1025 title: "fas fa-code-branch",1026 searchTerms: ["branch", "code-fork", "fork", "git", "github", "rebase", "svn", "vcs", "version"]1027 }, {title: "fab fa-codepen", searchTerms: []}, {1028 title: "fab fa-codiepie",1029 searchTerms: []1030 }, {1031 title: "fas fa-coffee",1032 searchTerms: ["beverage", "breakfast", "cafe", "drink", "fall", "morning", "mug", "seasonal", "tea"]1033 }, {title: "fas fa-cog", searchTerms: ["settings"]}, {1034 title: "fas fa-cogs",1035 searchTerms: ["gears", "settings"]1036 }, {title: "fas fa-coins", searchTerms: []}, {1037 title: "fas fa-columns",1038 searchTerms: ["dashboard", "panes", "split"]1039 }, {1040 title: "fas fa-comment",1041 searchTerms: ["bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1042 }, {1043 title: "far fa-comment",1044 searchTerms: ["bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1045 }, {1046 title: "fas fa-comment-alt",1047 searchTerms: ["bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1048 }, {1049 title: "far fa-comment-alt",1050 searchTerms: ["bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1051 }, {title: "fas fa-comment-dollar", searchTerms: []}, {1052 title: "fas fa-comment-dots",1053 searchTerms: []1054 }, {title: "far fa-comment-dots", searchTerms: []}, {1055 title: "fas fa-comment-slash",1056 searchTerms: []1057 }, {1058 title: "fas fa-comments",1059 searchTerms: ["bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1060 }, {1061 title: "far fa-comments",1062 searchTerms: ["bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1063 }, {title: "fas fa-comments-dollar", searchTerms: []}, {1064 title: "fas fa-compact-disc",1065 searchTerms: ["bluray", "cd", "disc", "media"]1066 }, {1067 title: "fas fa-compass",1068 searchTerms: ["directory", "location", "menu", "safari"]1069 }, {1070 title: "far fa-compass",1071 searchTerms: ["directory", "location", "menu", "safari"]1072 }, {1073 title: "fas fa-compress",1074 searchTerms: ["collapse", "combine", "contract", "merge", "smaller"]1075 }, {1076 title: "fas fa-concierge-bell",1077 searchTerms: ["attention", "hotel", "service", "support"]1078 }, {title: "fab fa-connectdevelop", searchTerms: []}, {1079 title: "fab fa-contao",1080 searchTerms: []1081 }, {1082 title: "fas fa-cookie",1083 searchTerms: ["baked good", "chips", "food", "snack", "sweet", "treat"]1084 }, {1085 title: "fas fa-cookie-bite",1086 searchTerms: ["baked good", "bitten", "chips", "eating", "food", "snack", "sweet", "treat"]1087 }, {title: "fas fa-copy", searchTerms: ["clone", "duplicate", "file", "files-o"]}, {1088 title: "far fa-copy",1089 searchTerms: ["clone", "duplicate", "file", "files-o"]1090 }, {title: "fas fa-copyright", searchTerms: []}, {1091 title: "far fa-copyright",1092 searchTerms: []1093 }, {title: "fas fa-couch", searchTerms: ["furniture", "sofa"]}, {1094 title: "fab fa-cpanel",1095 searchTerms: []1096 }, {title: "fab fa-creative-commons", searchTerms: []}, {1097 title: "fab fa-creative-commons-by",1098 searchTerms: []1099 }, {title: "fab fa-creative-commons-nc", searchTerms: []}, {1100 title: "fab fa-creative-commons-nc-eu",1101 searchTerms: []1102 }, {title: "fab fa-creative-commons-nc-jp", searchTerms: []}, {1103 title: "fab fa-creative-commons-nd",1104 searchTerms: []1105 }, {title: "fab fa-creative-commons-pd", searchTerms: []}, {1106 title: "fab fa-creative-commons-pd-alt",1107 searchTerms: []1108 }, {title: "fab fa-creative-commons-remix", searchTerms: []}, {1109 title: "fab fa-creative-commons-sa",1110 searchTerms: []1111 }, {1112 title: "fab fa-creative-commons-sampling",1113 searchTerms: []1114 }, {title: "fab fa-creative-commons-sampling-plus", searchTerms: []}, {1115 title: "fab fa-creative-commons-share",1116 searchTerms: []1117 }, {title: "fab fa-creative-commons-zero", searchTerms: []}, {1118 title: "fas fa-credit-card",1119 searchTerms: ["buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase"]1120 }, {1121 title: "far fa-credit-card",1122 searchTerms: ["buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase"]1123 }, {1124 title: "fab fa-critical-role",1125 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop"]1126 }, {title: "fas fa-crop", searchTerms: ["design"]}, {1127 title: "fas fa-crop-alt",1128 searchTerms: []1129 }, {title: "fas fa-cross", searchTerms: ["catholicism", "christianity"]}, {1130 title: "fas fa-crosshairs",1131 searchTerms: ["gpd", "picker", "position"]1132 }, {1133 title: "fas fa-crow",1134 searchTerms: ["bird", "bullfrog", "fauna", "halloween", "holiday", "toad"]1135 }, {title: "fas fa-crown", searchTerms: []}, {1136 title: "fab fa-css3",1137 searchTerms: ["code"]1138 }, {title: "fab fa-css3-alt", searchTerms: []}, {1139 title: "fas fa-cube",1140 searchTerms: ["package"]1141 }, {title: "fas fa-cubes", searchTerms: ["packages"]}, {1142 title: "fas fa-cut",1143 searchTerms: ["scissors"]1144 }, {title: "fab fa-cuttlefish", searchTerms: []}, {1145 title: "fab fa-d-and-d",1146 searchTerms: []1147 }, {1148 title: "fab fa-d-and-d-beyond",1149 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "gaming", "tabletop"]1150 }, {title: "fab fa-dashcube", searchTerms: []}, {1151 title: "fas fa-database",1152 searchTerms: []1153 }, {title: "fas fa-deaf", searchTerms: []}, {1154 title: "fab fa-delicious",1155 searchTerms: []1156 }, {1157 title: "fas fa-democrat",1158 searchTerms: ["american", "democratic party", "donkey", "election", "left", "left-wing", "liberal", "politics", "usa"]1159 }, {title: "fab fa-deploydog", searchTerms: []}, {1160 title: "fab fa-deskpro",1161 searchTerms: []1162 }, {1163 title: "fas fa-desktop",1164 searchTerms: ["computer", "cpu", "demo", "desktop", "device", "machine", "monitor", "pc", "screen"]1165 }, {title: "fab fa-dev", searchTerms: []}, {1166 title: "fab fa-deviantart",1167 searchTerms: []1168 }, {1169 title: "fas fa-dharmachakra",1170 searchTerms: ["buddhism", "buddhist", "wheel of dharma"]1171 }, {title: "fas fa-diagnoses", searchTerms: []}, {1172 title: "fas fa-dice",1173 searchTerms: ["chance", "gambling", "game", "roll"]1174 }, {1175 title: "fas fa-dice-d20",1176 searchTerms: ["Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll"]1177 }, {1178 title: "fas fa-dice-d6",1179 searchTerms: ["Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll"]1180 }, {title: "fas fa-dice-five", searchTerms: ["chance", "gambling", "game", "roll"]}, {1181 title: "fas fa-dice-four",1182 searchTerms: ["chance", "gambling", "game", "roll"]1183 }, {title: "fas fa-dice-one", searchTerms: ["chance", "gambling", "game", "roll"]}, {1184 title: "fas fa-dice-six",1185 searchTerms: ["chance", "gambling", "game", "roll"]1186 }, {title: "fas fa-dice-three", searchTerms: ["chance", "gambling", "game", "roll"]}, {1187 title: "fas fa-dice-two",1188 searchTerms: ["chance", "gambling", "game", "roll"]1189 }, {title: "fab fa-digg", searchTerms: []}, {1190 title: "fab fa-digital-ocean",1191 searchTerms: []1192 }, {title: "fas fa-digital-tachograph", searchTerms: []}, {1193 title: "fas fa-directions",1194 searchTerms: []1195 }, {title: "fab fa-discord", searchTerms: []}, {1196 title: "fab fa-discourse",1197 searchTerms: []1198 }, {title: "fas fa-divide", searchTerms: []}, {1199 title: "fas fa-dizzy",1200 searchTerms: ["dazed", "disapprove", "emoticon", "face"]1201 }, {title: "far fa-dizzy", searchTerms: ["dazed", "disapprove", "emoticon", "face"]}, {1202 title: "fas fa-dna",1203 searchTerms: ["double helix", "helix"]1204 }, {title: "fab fa-dochub", searchTerms: []}, {title: "fab fa-docker", searchTerms: []}, {1205 title: "fas fa-dog",1206 searchTerms: ["canine", "fauna", "mammmal", "pet", "pooch", "puppy", "woof"]1207 }, {1208 title: "fas fa-dollar-sign",1209 searchTerms: ["$", "dollar-sign", "money", "price", "usd"]1210 }, {title: "fas fa-dolly", searchTerms: []}, {1211 title: "fas fa-dolly-flatbed",1212 searchTerms: []1213 }, {title: "fas fa-donate", searchTerms: ["generosity", "give"]}, {1214 title: "fas fa-door-closed",1215 searchTerms: []1216 }, {title: "fas fa-door-open", searchTerms: []}, {1217 title: "fas fa-dot-circle",1218 searchTerms: ["bullseye", "notification", "target"]1219 }, {title: "far fa-dot-circle", searchTerms: ["bullseye", "notification", "target"]}, {1220 title: "fas fa-dove",1221 searchTerms: ["bird", "fauna", "flying", "peace"]1222 }, {title: "fas fa-download", searchTerms: ["import"]}, {1223 title: "fab fa-draft2digital",1224 searchTerms: []1225 }, {1226 title: "fas fa-drafting-compass",1227 searchTerms: ["mechanical drawing", "plot", "plotting"]1228 }, {1229 title: "fas fa-dragon",1230 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy"]1231 }, {title: "fas fa-draw-polygon", searchTerms: []}, {1232 title: "fab fa-dribbble",1233 searchTerms: []1234 }, {title: "fab fa-dribbble-square", searchTerms: []}, {1235 title: "fab fa-dropbox",1236 searchTerms: []1237 }, {1238 title: "fas fa-drum",1239 searchTerms: ["instrument", "music", "percussion", "snare", "sound"]1240 }, {1241 title: "fas fa-drum-steelpan",1242 searchTerms: ["calypso", "instrument", "music", "percussion", "reggae", "snare", "sound", "steel", "tropical"]1243 }, {title: "fas fa-drumstick-bite", searchTerms: []}, {1244 title: "fab fa-drupal",1245 searchTerms: []1246 }, {1247 title: "fas fa-dumbbell",1248 searchTerms: ["exercise", "gym", "strength", "weight", "weight-lifting"]1249 }, {1250 title: "fas fa-dungeon",1251 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "door", "entrance", "fantasy", "gate"]1252 }, {title: "fab fa-dyalog", searchTerms: []}, {1253 title: "fab fa-earlybirds",1254 searchTerms: []1255 }, {title: "fab fa-ebay", searchTerms: []}, {1256 title: "fab fa-edge",1257 searchTerms: ["browser", "ie"]1258 }, {title: "fas fa-edit", searchTerms: ["edit", "pen", "pencil", "update", "write"]}, {1259 title: "far fa-edit",1260 searchTerms: ["edit", "pen", "pencil", "update", "write"]1261 }, {title: "fas fa-eject", searchTerms: []}, {1262 title: "fab fa-elementor",1263 searchTerms: []1264 }, {1265 title: "fas fa-ellipsis-h",1266 searchTerms: ["dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul"]1267 }, {1268 title: "fas fa-ellipsis-v",1269 searchTerms: ["dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul"]1270 }, {title: "fab fa-ello", searchTerms: []}, {title: "fab fa-ember", searchTerms: []}, {1271 title: "fab fa-empire",1272 searchTerms: []1273 }, {1274 title: "fas fa-envelope",1275 searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1276 }, {1277 title: "far fa-envelope",1278 searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1279 }, {1280 title: "fas fa-envelope-open",1281 searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1282 }, {1283 title: "far fa-envelope-open",1284 searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1285 }, {title: "fas fa-envelope-open-text", searchTerms: []}, {1286 title: "fas fa-envelope-square",1287 searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1288 }, {title: "fab fa-envira", searchTerms: ["leaf"]}, {1289 title: "fas fa-equals",1290 searchTerms: []1291 }, {title: "fas fa-eraser", searchTerms: ["delete", "remove"]}, {1292 title: "fab fa-erlang",1293 searchTerms: []1294 }, {title: "fab fa-ethereum", searchTerms: []}, {1295 title: "fab fa-etsy",1296 searchTerms: []1297 }, {title: "fas fa-euro-sign", searchTerms: ["eur"]}, {1298 title: "fas fa-exchange-alt",1299 searchTerms: ["arrow", "arrows", "exchange", "reciprocate", "return", "swap", "transfer"]1300 }, {1301 title: "fas fa-exclamation",1302 searchTerms: ["alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning"]1303 }, {1304 title: "fas fa-exclamation-circle",1305 searchTerms: ["alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning"]1306 }, {1307 title: "fas fa-exclamation-triangle",1308 searchTerms: ["alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning"]1309 }, {title: "fas fa-expand", searchTerms: ["bigger", "enlarge", "resize"]}, {1310 title: "fas fa-expand-arrows-alt",1311 searchTerms: ["arrows-alt", "bigger", "enlarge", "move", "resize"]1312 }, {title: "fab fa-expeditedssl", searchTerms: []}, {1313 title: "fas fa-external-link-alt",1314 searchTerms: ["external-link", "new", "open"]1315 }, {1316 title: "fas fa-external-link-square-alt",1317 searchTerms: ["external-link-square", "new", "open"]1318 }, {1319 title: "fas fa-eye",1320 searchTerms: ["optic", "see", "seen", "show", "sight", "views", "visible"]1321 }, {1322 title: "far fa-eye",1323 searchTerms: ["optic", "see", "seen", "show", "sight", "views", "visible"]1324 }, {title: "fas fa-eye-dropper", searchTerms: ["eyedropper"]}, {1325 title: "fas fa-eye-slash",1326 searchTerms: ["blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity"]1327 }, {1328 title: "far fa-eye-slash",1329 searchTerms: ["blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity"]1330 }, {1331 title: "fab fa-facebook",1332 searchTerms: ["facebook-official", "social network"]1333 }, {title: "fab fa-facebook-f", searchTerms: ["facebook"]}, {1334 title: "fab fa-facebook-messenger",1335 searchTerms: []1336 }, {title: "fab fa-facebook-square", searchTerms: ["social network"]}, {1337 title: "fab fa-fantasy-flight-games",1338 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop"]1339 }, {1340 title: "fas fa-fast-backward",1341 searchTerms: ["beginning", "first", "previous", "rewind", "start"]1342 }, {title: "fas fa-fast-forward", searchTerms: ["end", "last", "next"]}, {1343 title: "fas fa-fax",1344 searchTerms: []1345 }, {title: "fas fa-feather", searchTerms: ["bird", "light", "plucked", "quill"]}, {1346 title: "fas fa-feather-alt",1347 searchTerms: ["bird", "light", "plucked", "quill"]1348 }, {1349 title: "fas fa-female",1350 searchTerms: ["human", "person", "profile", "user", "woman"]1351 }, {1352 title: "fas fa-fighter-jet",1353 searchTerms: ["airplane", "fast", "fly", "goose", "maverick", "plane", "quick", "top gun", "transportation", "travel"]1354 }, {title: "fas fa-file", searchTerms: ["document", "new", "page", "pdf", "resume"]}, {1355 title: "far fa-file",1356 searchTerms: ["document", "new", "page", "pdf", "resume"]1357 }, {1358 title: "fas fa-file-alt",1359 searchTerms: ["document", "file-text", "invoice", "new", "page", "pdf"]1360 }, {1361 title: "far fa-file-alt",1362 searchTerms: ["document", "file-text", "invoice", "new", "page", "pdf"]1363 }, {1364 title: "fas fa-file-archive",1365 searchTerms: [".zip", "bundle", "compress", "compression", "download", "zip"]1366 }, {1367 title: "far fa-file-archive",1368 searchTerms: [".zip", "bundle", "compress", "compression", "download", "zip"]1369 }, {title: "fas fa-file-audio", searchTerms: []}, {1370 title: "far fa-file-audio",1371 searchTerms: []1372 }, {title: "fas fa-file-code", searchTerms: []}, {1373 title: "far fa-file-code",1374 searchTerms: []1375 }, {1376 title: "fas fa-file-contract",1377 searchTerms: ["agreement", "binding", "document", "legal", "signature"]1378 }, {title: "fas fa-file-csv", searchTerms: ["spreadsheets"]}, {1379 title: "fas fa-file-download",1380 searchTerms: []1381 }, {title: "fas fa-file-excel", searchTerms: []}, {1382 title: "far fa-file-excel",1383 searchTerms: []1384 }, {title: "fas fa-file-export", searchTerms: []}, {1385 title: "fas fa-file-image",1386 searchTerms: []1387 }, {title: "far fa-file-image", searchTerms: []}, {1388 title: "fas fa-file-import",1389 searchTerms: []1390 }, {1391 title: "fas fa-file-invoice",1392 searchTerms: ["bill", "document", "receipt"]1393 }, {1394 title: "fas fa-file-invoice-dollar",1395 searchTerms: ["$", "bill", "document", "dollar-sign", "money", "receipt", "usd"]1396 }, {title: "fas fa-file-medical", searchTerms: []}, {1397 title: "fas fa-file-medical-alt",1398 searchTerms: []1399 }, {title: "fas fa-file-pdf", searchTerms: []}, {1400 title: "far fa-file-pdf",1401 searchTerms: []1402 }, {title: "fas fa-file-powerpoint", searchTerms: []}, {1403 title: "far fa-file-powerpoint",1404 searchTerms: []1405 }, {1406 title: "fas fa-file-prescription",1407 searchTerms: ["drugs", "medical", "medicine", "rx"]1408 }, {1409 title: "fas fa-file-signature",1410 searchTerms: ["John Hancock", "contract", "document", "name"]1411 }, {title: "fas fa-file-upload", searchTerms: []}, {1412 title: "fas fa-file-video",1413 searchTerms: []1414 }, {title: "far fa-file-video", searchTerms: []}, {1415 title: "fas fa-file-word",1416 searchTerms: []1417 }, {title: "far fa-file-word", searchTerms: []}, {1418 title: "fas fa-fill",1419 searchTerms: ["bucket", "color", "paint", "paint bucket"]1420 }, {1421 title: "fas fa-fill-drip",1422 searchTerms: ["bucket", "color", "drop", "paint", "paint bucket", "spill"]1423 }, {title: "fas fa-film", searchTerms: ["movie"]}, {1424 title: "fas fa-filter",1425 searchTerms: ["funnel", "options"]1426 }, {1427 title: "fas fa-fingerprint",1428 searchTerms: ["human", "id", "identification", "lock", "smudge", "touch", "unique", "unlock"]1429 }, {1430 title: "fas fa-fire",1431 searchTerms: ["caliente", "flame", "heat", "hot", "popular"]1432 }, {title: "fas fa-fire-extinguisher", searchTerms: []}, {1433 title: "fab fa-firefox",1434 searchTerms: ["browser"]1435 }, {title: "fas fa-first-aid", searchTerms: []}, {1436 title: "fab fa-first-order",1437 searchTerms: []1438 }, {title: "fab fa-first-order-alt", searchTerms: []}, {1439 title: "fab fa-firstdraft",1440 searchTerms: []1441 }, {title: "fas fa-fish", searchTerms: ["fauna", "gold", "swimming"]}, {1442 title: "fas fa-fist-raised",1443 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "hand", "ki", "monk", "resist", "strength", "unarmed combat"]1444 }, {1445 title: "fas fa-flag",1446 searchTerms: ["country", "notice", "notification", "notify", "pole", "report", "symbol"]1447 }, {1448 title: "far fa-flag",1449 searchTerms: ["country", "notice", "notification", "notify", "pole", "report", "symbol"]1450 }, {1451 title: "fas fa-flag-checkered",1452 searchTerms: ["notice", "notification", "notify", "pole", "racing", "report", "symbol"]1453 }, {1454 title: "fas fa-flag-usa",1455 searchTerms: ["betsy ross", "country", "old glory", "stars", "stripes", "symbol"]1456 }, {title: "fas fa-flask", searchTerms: ["beaker", "experimental", "labs", "science"]}, {1457 title: "fab fa-flickr",1458 searchTerms: []1459 }, {title: "fab fa-flipboard", searchTerms: []}, {1460 title: "fas fa-flushed",1461 searchTerms: ["embarrassed", "emoticon", "face"]1462 }, {title: "far fa-flushed", searchTerms: ["embarrassed", "emoticon", "face"]}, {1463 title: "fab fa-fly",1464 searchTerms: []1465 }, {title: "fas fa-folder", searchTerms: []}, {1466 title: "far fa-folder",1467 searchTerms: []1468 }, {1469 title: "fas fa-folder-minus",1470 searchTerms: ["archive", "delete", "negative", "remove"]1471 }, {title: "fas fa-folder-open", searchTerms: []}, {1472 title: "far fa-folder-open",1473 searchTerms: []1474 }, {title: "fas fa-folder-plus", searchTerms: ["add", "create", "new", "positive"]}, {1475 title: "fas fa-font",1476 searchTerms: ["text"]1477 }, {title: "fab fa-font-awesome", searchTerms: ["meanpath"]}, {1478 title: "fab fa-font-awesome-alt",1479 searchTerms: []1480 }, {title: "fab fa-font-awesome-flag", searchTerms: []}, {1481 title: "far fa-font-awesome-logo-full",1482 searchTerms: []1483 }, {title: "fas fa-font-awesome-logo-full", searchTerms: []}, {1484 title: "fab fa-font-awesome-logo-full",1485 searchTerms: []1486 }, {title: "fab fa-fonticons", searchTerms: []}, {1487 title: "fab fa-fonticons-fi",1488 searchTerms: []1489 }, {title: "fas fa-football-ball", searchTerms: ["fall", "pigskin", "seasonal"]}, {1490 title: "fab fa-fort-awesome",1491 searchTerms: ["castle"]1492 }, {title: "fab fa-fort-awesome-alt", searchTerms: ["castle"]}, {1493 title: "fab fa-forumbee",1494 searchTerms: []1495 }, {title: "fas fa-forward", searchTerms: ["forward", "next"]}, {1496 title: "fab fa-foursquare",1497 searchTerms: []1498 }, {title: "fab fa-free-code-camp", searchTerms: []}, {1499 title: "fab fa-freebsd",1500 searchTerms: []1501 }, {1502 title: "fas fa-frog",1503 searchTerms: ["amphibian", "bullfrog", "fauna", "hop", "kermit", "kiss", "prince", "ribbit", "toad", "wart"]1504 }, {1505 title: "fas fa-frown",1506 searchTerms: ["disapprove", "emoticon", "face", "rating", "sad"]1507 }, {1508 title: "far fa-frown",1509 searchTerms: ["disapprove", "emoticon", "face", "rating", "sad"]1510 }, {1511 title: "fas fa-frown-open",1512 searchTerms: ["disapprove", "emoticon", "face", "rating", "sad"]1513 }, {1514 title: "far fa-frown-open",1515 searchTerms: ["disapprove", "emoticon", "face", "rating", "sad"]1516 }, {title: "fab fa-fulcrum", searchTerms: []}, {1517 title: "fas fa-funnel-dollar",1518 searchTerms: []1519 }, {title: "fas fa-futbol", searchTerms: ["ball", "football", "soccer"]}, {1520 title: "far fa-futbol",1521 searchTerms: ["ball", "football", "soccer"]1522 }, {1523 title: "fab fa-galactic-republic",1524 searchTerms: ["politics", "star wars"]1525 }, {title: "fab fa-galactic-senate", searchTerms: ["star wars"]}, {1526 title: "fas fa-gamepad",1527 searchTerms: ["controller"]1528 }, {title: "fas fa-gas-pump", searchTerms: []}, {1529 title: "fas fa-gavel",1530 searchTerms: ["hammer", "judge", "lawyer", "opinion"]1531 }, {title: "fas fa-gem", searchTerms: ["diamond"]}, {1532 title: "far fa-gem",1533 searchTerms: ["diamond"]1534 }, {title: "fas fa-genderless", searchTerms: []}, {1535 title: "fab fa-get-pocket",1536 searchTerms: []1537 }, {title: "fab fa-gg", searchTerms: []}, {title: "fab fa-gg-circle", searchTerms: []}, {1538 title: "fas fa-ghost",1539 searchTerms: ["apparition", "blinky", "clyde", "floating", "halloween", "holiday", "inky", "pinky", "spirit"]1540 }, {1541 title: "fas fa-gift",1542 searchTerms: ["generosity", "giving", "party", "present", "wrapped"]1543 }, {title: "fab fa-git", searchTerms: []}, {1544 title: "fab fa-git-square",1545 searchTerms: []1546 }, {title: "fab fa-github", searchTerms: ["octocat"]}, {1547 title: "fab fa-github-alt",1548 searchTerms: ["octocat"]1549 }, {title: "fab fa-github-square", searchTerms: ["octocat"]}, {1550 title: "fab fa-gitkraken",1551 searchTerms: []1552 }, {title: "fab fa-gitlab", searchTerms: ["Axosoft"]}, {1553 title: "fab fa-gitter",1554 searchTerms: []1555 }, {1556 title: "fas fa-glass-martini",1557 searchTerms: ["alcohol", "bar", "beverage", "drink", "glass", "liquor", "martini"]1558 }, {title: "fas fa-glass-martini-alt", searchTerms: []}, {1559 title: "fas fa-glasses",1560 searchTerms: ["foureyes", "hipster", "nerd", "reading", "sight", "spectacles"]1561 }, {title: "fab fa-glide", searchTerms: []}, {title: "fab fa-glide-g", searchTerms: []}, {1562 title: "fas fa-globe",1563 searchTerms: ["all", "coordinates", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world"]1564 }, {1565 title: "fas fa-globe-africa",1566 searchTerms: ["all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world"]1567 }, {1568 title: "fas fa-globe-americas",1569 searchTerms: ["all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world"]1570 }, {1571 title: "fas fa-globe-asia",1572 searchTerms: ["all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world"]1573 }, {title: "fab fa-gofore", searchTerms: []}, {1574 title: "fas fa-golf-ball",1575 searchTerms: []1576 }, {title: "fab fa-goodreads", searchTerms: []}, {1577 title: "fab fa-goodreads-g",1578 searchTerms: []1579 }, {title: "fab fa-google", searchTerms: []}, {1580 title: "fab fa-google-drive",1581 searchTerms: []1582 }, {title: "fab fa-google-play", searchTerms: []}, {1583 title: "fab fa-google-plus",1584 searchTerms: ["google-plus-circle", "google-plus-official"]1585 }, {1586 title: "fab fa-google-plus-g",1587 searchTerms: ["google-plus", "social network"]1588 }, {title: "fab fa-google-plus-square", searchTerms: ["social network"]}, {1589 title: "fab fa-google-wallet",1590 searchTerms: []1591 }, {1592 title: "fas fa-gopuram",1593 searchTerms: ["building", "entrance", "hinduism", "temple", "tower"]1594 }, {title: "fas fa-graduation-cap", searchTerms: ["learning", "school", "student"]}, {1595 title: "fab fa-gratipay",1596 searchTerms: ["favorite", "heart", "like", "love"]1597 }, {title: "fab fa-grav", searchTerms: []}, {1598 title: "fas fa-greater-than",1599 searchTerms: []1600 }, {title: "fas fa-greater-than-equal", searchTerms: []}, {1601 title: "fas fa-grimace",1602 searchTerms: ["cringe", "emoticon", "face"]1603 }, {title: "far fa-grimace", searchTerms: ["cringe", "emoticon", "face"]}, {1604 title: "fas fa-grin",1605 searchTerms: ["emoticon", "face", "laugh", "smile"]1606 }, {title: "far fa-grin", searchTerms: ["emoticon", "face", "laugh", "smile"]}, {1607 title: "fas fa-grin-alt",1608 searchTerms: ["emoticon", "face", "laugh", "smile"]1609 }, {title: "far fa-grin-alt", searchTerms: ["emoticon", "face", "laugh", "smile"]}, {1610 title: "fas fa-grin-beam",1611 searchTerms: ["emoticon", "face", "laugh", "smile"]1612 }, {1613 title: "far fa-grin-beam",1614 searchTerms: ["emoticon", "face", "laugh", "smile"]1615 }, {1616 title: "fas fa-grin-beam-sweat",1617 searchTerms: ["emoticon", "face", "smile"]1618 }, {title: "far fa-grin-beam-sweat", searchTerms: ["emoticon", "face", "smile"]}, {1619 title: "fas fa-grin-hearts",1620 searchTerms: ["emoticon", "face", "love", "smile"]1621 }, {1622 title: "far fa-grin-hearts",1623 searchTerms: ["emoticon", "face", "love", "smile"]1624 }, {1625 title: "fas fa-grin-squint",1626 searchTerms: ["emoticon", "face", "laugh", "smile"]1627 }, {1628 title: "far fa-grin-squint",1629 searchTerms: ["emoticon", "face", "laugh", "smile"]1630 }, {1631 title: "fas fa-grin-squint-tears",1632 searchTerms: ["emoticon", "face", "happy", "smile"]1633 }, {1634 title: "far fa-grin-squint-tears",1635 searchTerms: ["emoticon", "face", "happy", "smile"]1636 }, {title: "fas fa-grin-stars", searchTerms: ["emoticon", "face", "star-struck"]}, {1637 title: "far fa-grin-stars",1638 searchTerms: ["emoticon", "face", "star-struck"]1639 }, {title: "fas fa-grin-tears", searchTerms: ["LOL", "emoticon", "face"]}, {1640 title: "far fa-grin-tears",1641 searchTerms: ["LOL", "emoticon", "face"]1642 }, {title: "fas fa-grin-tongue", searchTerms: ["LOL", "emoticon", "face"]}, {1643 title: "far fa-grin-tongue",1644 searchTerms: ["LOL", "emoticon", "face"]1645 }, {1646 title: "fas fa-grin-tongue-squint",1647 searchTerms: ["LOL", "emoticon", "face"]1648 }, {1649 title: "far fa-grin-tongue-squint",1650 searchTerms: ["LOL", "emoticon", "face"]1651 }, {1652 title: "fas fa-grin-tongue-wink",1653 searchTerms: ["LOL", "emoticon", "face"]1654 }, {title: "far fa-grin-tongue-wink", searchTerms: ["LOL", "emoticon", "face"]}, {1655 title: "fas fa-grin-wink",1656 searchTerms: ["emoticon", "face", "flirt", "laugh", "smile"]1657 }, {1658 title: "far fa-grin-wink",1659 searchTerms: ["emoticon", "face", "flirt", "laugh", "smile"]1660 }, {1661 title: "fas fa-grip-horizontal",1662 searchTerms: ["affordance", "drag", "drop", "grab", "handle"]1663 }, {1664 title: "fas fa-grip-vertical",1665 searchTerms: ["affordance", "drag", "drop", "grab", "handle"]1666 }, {title: "fab fa-gripfire", searchTerms: []}, {title: "fab fa-grunt", searchTerms: []}, {1667 title: "fab fa-gulp",1668 searchTerms: []1669 }, {title: "fas fa-h-square", searchTerms: ["hospital", "hotel"]}, {1670 title: "fab fa-hacker-news",1671 searchTerms: []1672 }, {title: "fab fa-hacker-news-square", searchTerms: []}, {1673 title: "fab fa-hackerrank",1674 searchTerms: []1675 }, {1676 title: "fas fa-hammer",1677 searchTerms: ["admin", "fix", "repair", "settings", "tool"]1678 }, {1679 title: "fas fa-hamsa",1680 searchTerms: ["amulet", "christianity", "islam", "jewish", "judaism", "muslim", "protection"]1681 }, {title: "fas fa-hand-holding", searchTerms: []}, {1682 title: "fas fa-hand-holding-heart",1683 searchTerms: []1684 }, {1685 title: "fas fa-hand-holding-usd",1686 searchTerms: ["$", "dollar sign", "donation", "giving", "money", "price"]1687 }, {title: "fas fa-hand-lizard", searchTerms: []}, {1688 title: "far fa-hand-lizard",1689 searchTerms: []1690 }, {title: "fas fa-hand-paper", searchTerms: ["stop"]}, {1691 title: "far fa-hand-paper",1692 searchTerms: ["stop"]1693 }, {title: "fas fa-hand-peace", searchTerms: []}, {1694 title: "far fa-hand-peace",1695 searchTerms: []1696 }, {1697 title: "fas fa-hand-point-down",1698 searchTerms: ["finger", "hand-o-down", "point"]1699 }, {1700 title: "far fa-hand-point-down",1701 searchTerms: ["finger", "hand-o-down", "point"]1702 }, {1703 title: "fas fa-hand-point-left",1704 searchTerms: ["back", "finger", "hand-o-left", "left", "point", "previous"]1705 }, {1706 title: "far fa-hand-point-left",1707 searchTerms: ["back", "finger", "hand-o-left", "left", "point", "previous"]1708 }, {1709 title: "fas fa-hand-point-right",1710 searchTerms: ["finger", "forward", "hand-o-right", "next", "point", "right"]1711 }, {1712 title: "far fa-hand-point-right",1713 searchTerms: ["finger", "forward", "hand-o-right", "next", "point", "right"]1714 }, {1715 title: "fas fa-hand-point-up",1716 searchTerms: ["finger", "hand-o-up", "point"]1717 }, {1718 title: "far fa-hand-point-up",1719 searchTerms: ["finger", "hand-o-up", "point"]1720 }, {title: "fas fa-hand-pointer", searchTerms: ["select"]}, {1721 title: "far fa-hand-pointer",1722 searchTerms: ["select"]1723 }, {title: "fas fa-hand-rock", searchTerms: []}, {1724 title: "far fa-hand-rock",1725 searchTerms: []1726 }, {title: "fas fa-hand-scissors", searchTerms: []}, {1727 title: "far fa-hand-scissors",1728 searchTerms: []1729 }, {title: "fas fa-hand-spock", searchTerms: []}, {1730 title: "far fa-hand-spock",1731 searchTerms: []1732 }, {title: "fas fa-hands", searchTerms: []}, {1733 title: "fas fa-hands-helping",1734 searchTerms: ["aid", "assistance", "partnership", "volunteering"]1735 }, {title: "fas fa-handshake", searchTerms: ["greeting", "partnership"]}, {1736 title: "far fa-handshake",1737 searchTerms: ["greeting", "partnership"]1738 }, {1739 title: "fas fa-hanukiah",1740 searchTerms: ["candle", "hanukkah", "jewish", "judaism", "light"]1741 }, {title: "fas fa-hashtag", searchTerms: []}, {1742 title: "fas fa-hat-wizard",1743 searchTerms: ["Dungeons & Dragons", "buckle", "cloth", "clothing", "d&d", "dnd", "fantasy", "halloween", "holiday", "mage", "magic", "pointy", "witch"]1744 }, {title: "fas fa-haykal", searchTerms: ["bahai", "bahá'Ã", "star"]}, {1745 title: "fas fa-hdd",1746 searchTerms: ["cpu", "hard drive", "harddrive", "machine", "save", "storage"]1747 }, {1748 title: "far fa-hdd",1749 searchTerms: ["cpu", "hard drive", "harddrive", "machine", "save", "storage"]1750 }, {title: "fas fa-heading", searchTerms: ["header"]}, {1751 title: "fas fa-headphones",1752 searchTerms: ["audio", "listen", "music", "sound", "speaker"]1753 }, {1754 title: "fas fa-headphones-alt",1755 searchTerms: ["audio", "listen", "music", "sound", "speaker"]1756 }, {1757 title: "fas fa-headset",1758 searchTerms: ["audio", "gamer", "gaming", "listen", "live chat", "microphone", "shot caller", "sound", "support", "telemarketer"]1759 }, {title: "fas fa-heart", searchTerms: ["favorite", "like", "love"]}, {1760 title: "far fa-heart",1761 searchTerms: ["favorite", "like", "love"]1762 }, {title: "fas fa-heartbeat", searchTerms: ["ekg", "lifeline", "vital signs"]}, {1763 title: "fas fa-helicopter",1764 searchTerms: ["airwolf", "apache", "chopper", "flight", "fly"]1765 }, {1766 title: "fas fa-highlighter",1767 searchTerms: ["edit", "marker", "sharpie", "update", "write"]1768 }, {1769 title: "fas fa-hiking",1770 searchTerms: ["activity", "backpack", "fall", "fitness", "outdoors", "seasonal", "walking"]1771 }, {title: "fas fa-hippo", searchTerms: ["fauna", "hungry", "mammmal"]}, {1772 title: "fab fa-hips",1773 searchTerms: []1774 }, {title: "fab fa-hire-a-helper", searchTerms: []}, {1775 title: "fas fa-history",1776 searchTerms: []1777 }, {title: "fas fa-hockey-puck", searchTerms: []}, {1778 title: "fas fa-home",1779 searchTerms: ["house", "main"]1780 }, {title: "fab fa-hooli", searchTerms: []}, {1781 title: "fab fa-hornbill",1782 searchTerms: []1783 }, {title: "fas fa-horse", searchTerms: ["equus", "fauna", "mammmal", "neigh"]}, {1784 title: "fas fa-hospital",1785 searchTerms: ["building", "emergency room", "medical center"]1786 }, {1787 title: "far fa-hospital",1788 searchTerms: ["building", "emergency room", "medical center"]1789 }, {1790 title: "fas fa-hospital-alt",1791 searchTerms: ["building", "emergency room", "medical center"]1792 }, {title: "fas fa-hospital-symbol", searchTerms: []}, {1793 title: "fas fa-hot-tub",1794 searchTerms: []1795 }, {title: "fas fa-hotel", searchTerms: ["building", "lodging"]}, {1796 title: "fab fa-hotjar",1797 searchTerms: []1798 }, {title: "fas fa-hourglass", searchTerms: []}, {1799 title: "far fa-hourglass",1800 searchTerms: []1801 }, {title: "fas fa-hourglass-end", searchTerms: []}, {1802 title: "fas fa-hourglass-half",1803 searchTerms: []1804 }, {title: "fas fa-hourglass-start", searchTerms: []}, {1805 title: "fas fa-house-damage",1806 searchTerms: ["devastation", "home"]1807 }, {title: "fab fa-houzz", searchTerms: []}, {1808 title: "fas fa-hryvnia",1809 searchTerms: ["money"]1810 }, {title: "fab fa-html5", searchTerms: []}, {1811 title: "fab fa-hubspot",1812 searchTerms: []1813 }, {title: "fas fa-i-cursor", searchTerms: []}, {1814 title: "fas fa-id-badge",1815 searchTerms: []1816 }, {title: "far fa-id-badge", searchTerms: []}, {1817 title: "fas fa-id-card",1818 searchTerms: ["document", "identification", "issued"]1819 }, {1820 title: "far fa-id-card",1821 searchTerms: ["document", "identification", "issued"]1822 }, {title: "fas fa-id-card-alt", searchTerms: ["demographics"]}, {1823 title: "fas fa-image",1824 searchTerms: ["album", "photo", "picture"]1825 }, {title: "far fa-image", searchTerms: ["album", "photo", "picture"]}, {1826 title: "fas fa-images",1827 searchTerms: ["album", "photo", "picture"]1828 }, {title: "far fa-images", searchTerms: ["album", "photo", "picture"]}, {1829 title: "fab fa-imdb",1830 searchTerms: []1831 }, {title: "fas fa-inbox", searchTerms: []}, {1832 title: "fas fa-indent",1833 searchTerms: []1834 }, {title: "fas fa-industry", searchTerms: ["factory", "manufacturing"]}, {1835 title: "fas fa-infinity",1836 searchTerms: []1837 }, {1838 title: "fas fa-info",1839 searchTerms: ["details", "help", "information", "more"]1840 }, {1841 title: "fas fa-info-circle",1842 searchTerms: ["details", "help", "information", "more"]1843 }, {title: "fab fa-instagram", searchTerms: []}, {1844 title: "fab fa-internet-explorer",1845 searchTerms: ["browser", "ie"]1846 }, {title: "fab fa-ioxhost", searchTerms: []}, {1847 title: "fas fa-italic",1848 searchTerms: ["italics"]1849 }, {title: "fab fa-itunes", searchTerms: []}, {1850 title: "fab fa-itunes-note",1851 searchTerms: []1852 }, {title: "fab fa-java", searchTerms: []}, {1853 title: "fas fa-jedi",1854 searchTerms: ["star wars"]1855 }, {title: "fab fa-jedi-order", searchTerms: ["star wars"]}, {1856 title: "fab fa-jenkins",1857 searchTerms: []1858 }, {title: "fab fa-joget", searchTerms: []}, {1859 title: "fas fa-joint",1860 searchTerms: ["blunt", "cannabis", "doobie", "drugs", "marijuana", "roach", "smoke", "smoking", "spliff"]1861 }, {title: "fab fa-joomla", searchTerms: []}, {1862 title: "fas fa-journal-whills",1863 searchTerms: ["book", "jedi", "star wars", "the force"]1864 }, {title: "fab fa-js", searchTerms: []}, {1865 title: "fab fa-js-square",1866 searchTerms: []1867 }, {title: "fab fa-jsfiddle", searchTerms: []}, {1868 title: "fas fa-kaaba",1869 searchTerms: ["building", "cube", "islam", "muslim"]1870 }, {title: "fab fa-kaggle", searchTerms: []}, {1871 title: "fas fa-key",1872 searchTerms: ["password", "unlock"]1873 }, {title: "fab fa-keybase", searchTerms: []}, {1874 title: "fas fa-keyboard",1875 searchTerms: ["input", "type"]1876 }, {title: "far fa-keyboard", searchTerms: ["input", "type"]}, {1877 title: "fab fa-keycdn",1878 searchTerms: []1879 }, {title: "fas fa-khanda", searchTerms: ["chakkar", "sikh", "sikhism", "sword"]}, {1880 title: "fab fa-kickstarter",1881 searchTerms: []1882 }, {title: "fab fa-kickstarter-k", searchTerms: []}, {1883 title: "fas fa-kiss",1884 searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1885 }, {1886 title: "far fa-kiss",1887 searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1888 }, {1889 title: "fas fa-kiss-beam",1890 searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1891 }, {1892 title: "far fa-kiss-beam",1893 searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1894 }, {1895 title: "fas fa-kiss-wink-heart",1896 searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1897 }, {1898 title: "far fa-kiss-wink-heart",1899 searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1900 }, {title: "fas fa-kiwi-bird", searchTerms: ["bird", "fauna"]}, {1901 title: "fab fa-korvue",1902 searchTerms: []1903 }, {1904 title: "fas fa-landmark",1905 searchTerms: ["building", "historic", "memoroable", "politics"]1906 }, {1907 title: "fas fa-language",1908 searchTerms: ["dialect", "idiom", "localize", "speech", "translate", "vernacular"]1909 }, {1910 title: "fas fa-laptop",1911 searchTerms: ["computer", "cpu", "dell", "demo", "device", "dude you're getting", "mac", "macbook", "machine", "pc"]1912 }, {title: "fas fa-laptop-code", searchTerms: []}, {1913 title: "fab fa-laravel",1914 searchTerms: []1915 }, {title: "fab fa-lastfm", searchTerms: []}, {1916 title: "fab fa-lastfm-square",1917 searchTerms: []1918 }, {title: "fas fa-laugh", searchTerms: ["LOL", "emoticon", "face", "laugh"]}, {1919 title: "far fa-laugh",1920 searchTerms: ["LOL", "emoticon", "face", "laugh"]1921 }, {title: "fas fa-laugh-beam", searchTerms: ["LOL", "emoticon", "face"]}, {1922 title: "far fa-laugh-beam",1923 searchTerms: ["LOL", "emoticon", "face"]1924 }, {title: "fas fa-laugh-squint", searchTerms: ["LOL", "emoticon", "face"]}, {1925 title: "far fa-laugh-squint",1926 searchTerms: ["LOL", "emoticon", "face"]1927 }, {title: "fas fa-laugh-wink", searchTerms: ["LOL", "emoticon", "face"]}, {1928 title: "far fa-laugh-wink",1929 searchTerms: ["LOL", "emoticon", "face"]1930 }, {title: "fas fa-layer-group", searchTerms: ["layers"]}, {1931 title: "fas fa-leaf",1932 searchTerms: ["eco", "flora", "nature", "plant"]1933 }, {title: "fab fa-leanpub", searchTerms: []}, {1934 title: "fas fa-lemon",1935 searchTerms: ["food"]1936 }, {title: "far fa-lemon", searchTerms: ["food"]}, {1937 title: "fab fa-less",1938 searchTerms: []1939 }, {title: "fas fa-less-than", searchTerms: []}, {1940 title: "fas fa-less-than-equal",1941 searchTerms: []1942 }, {title: "fas fa-level-down-alt", searchTerms: ["level-down"]}, {1943 title: "fas fa-level-up-alt",1944 searchTerms: ["level-up"]1945 }, {title: "fas fa-life-ring", searchTerms: ["support"]}, {1946 title: "far fa-life-ring",1947 searchTerms: ["support"]1948 }, {title: "fas fa-lightbulb", searchTerms: ["idea", "inspiration"]}, {1949 title: "far fa-lightbulb",1950 searchTerms: ["idea", "inspiration"]1951 }, {title: "fab fa-line", searchTerms: []}, {1952 title: "fas fa-link",1953 searchTerms: ["chain"]1954 }, {title: "fab fa-linkedin", searchTerms: ["linkedin-square"]}, {1955 title: "fab fa-linkedin-in",1956 searchTerms: ["linkedin"]1957 }, {title: "fab fa-linode", searchTerms: []}, {1958 title: "fab fa-linux",1959 searchTerms: ["tux"]1960 }, {title: "fas fa-lira-sign", searchTerms: ["try", "turkish"]}, {1961 title: "fas fa-list",1962 searchTerms: ["checklist", "completed", "done", "finished", "ol", "todo", "ul"]1963 }, {1964 title: "fas fa-list-alt",1965 searchTerms: ["checklist", "completed", "done", "finished", "ol", "todo", "ul"]1966 }, {1967 title: "far fa-list-alt",1968 searchTerms: ["checklist", "completed", "done", "finished", "ol", "todo", "ul"]1969 }, {1970 title: "fas fa-list-ol",1971 searchTerms: ["checklist", "list", "numbers", "ol", "todo", "ul"]1972 }, {1973 title: "fas fa-list-ul",1974 searchTerms: ["checklist", "list", "ol", "todo", "ul"]1975 }, {1976 title: "fas fa-location-arrow",1977 searchTerms: ["address", "coordinates", "gps", "location", "map", "place", "where"]1978 }, {title: "fas fa-lock", searchTerms: ["admin", "protect", "security"]}, {1979 title: "fas fa-lock-open",1980 searchTerms: ["admin", "lock", "open", "password", "protect"]1981 }, {1982 title: "fas fa-long-arrow-alt-down",1983 searchTerms: ["long-arrow-down"]1984 }, {1985 title: "fas fa-long-arrow-alt-left",1986 searchTerms: ["back", "long-arrow-left", "previous"]1987 }, {1988 title: "fas fa-long-arrow-alt-right",1989 searchTerms: ["long-arrow-right"]1990 }, {title: "fas fa-long-arrow-alt-up", searchTerms: ["long-arrow-up"]}, {1991 title: "fas fa-low-vision",1992 searchTerms: []1993 }, {title: "fas fa-luggage-cart", searchTerms: []}, {1994 title: "fab fa-lyft",1995 searchTerms: []1996 }, {title: "fab fa-magento", searchTerms: []}, {1997 title: "fas fa-magic",1998 searchTerms: ["autocomplete", "automatic", "mage", "magic", "spell", "witch", "wizard"]1999 }, {title: "fas fa-magnet", searchTerms: []}, {2000 title: "fas fa-mail-bulk",2001 searchTerms: []2002 }, {title: "fab fa-mailchimp", searchTerms: []}, {2003 title: "fas fa-male",2004 searchTerms: ["human", "man", "person", "profile", "user"]2005 }, {title: "fab fa-mandalorian", searchTerms: []}, {2006 title: "fas fa-map",2007 searchTerms: ["coordinates", "location", "paper", "place", "travel"]2008 }, {2009 title: "far fa-map",2010 searchTerms: ["coordinates", "location", "paper", "place", "travel"]2011 }, {2012 title: "fas fa-map-marked",2013 searchTerms: ["address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where"]2014 }, {2015 title: "fas fa-map-marked-alt",2016 searchTerms: ["address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where"]2017 }, {2018 title: "fas fa-map-marker",2019 searchTerms: ["address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where"]2020 }, {2021 title: "fas fa-map-marker-alt",2022 searchTerms: ["address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where"]2023 }, {2024 title: "fas fa-map-pin",2025 searchTerms: ["address", "coordinates", "gps", "localize", "location", "map", "marker", "place", "position", "travel", "where"]2026 }, {title: "fas fa-map-signs", searchTerms: []}, {2027 title: "fab fa-markdown",2028 searchTerms: []2029 }, {title: "fas fa-marker", searchTerms: ["edit", "sharpie", "update", "write"]}, {2030 title: "fas fa-mars",2031 searchTerms: ["male"]2032 }, {title: "fas fa-mars-double", searchTerms: []}, {2033 title: "fas fa-mars-stroke",2034 searchTerms: []2035 }, {title: "fas fa-mars-stroke-h", searchTerms: []}, {2036 title: "fas fa-mars-stroke-v",2037 searchTerms: []2038 }, {2039 title: "fas fa-mask",2040 searchTerms: ["costume", "disguise", "halloween", "holiday", "secret", "super hero"]2041 }, {title: "fab fa-mastodon", searchTerms: []}, {2042 title: "fab fa-maxcdn",2043 searchTerms: []2044 }, {title: "fas fa-medal", searchTerms: []}, {2045 title: "fab fa-medapps",2046 searchTerms: []2047 }, {title: "fab fa-medium", searchTerms: []}, {2048 title: "fab fa-medium-m",2049 searchTerms: []2050 }, {2051 title: "fas fa-medkit",2052 searchTerms: ["first aid", "firstaid", "health", "help", "support"]2053 }, {title: "fab fa-medrt", searchTerms: []}, {2054 title: "fab fa-meetup",2055 searchTerms: []2056 }, {title: "fab fa-megaport", searchTerms: []}, {2057 title: "fas fa-meh",2058 searchTerms: ["emoticon", "face", "neutral", "rating"]2059 }, {title: "far fa-meh", searchTerms: ["emoticon", "face", "neutral", "rating"]}, {2060 title: "fas fa-meh-blank",2061 searchTerms: ["emoticon", "face", "neutral", "rating"]2062 }, {2063 title: "far fa-meh-blank",2064 searchTerms: ["emoticon", "face", "neutral", "rating"]2065 }, {2066 title: "fas fa-meh-rolling-eyes",2067 searchTerms: ["emoticon", "face", "neutral", "rating"]2068 }, {2069 title: "far fa-meh-rolling-eyes",2070 searchTerms: ["emoticon", "face", "neutral", "rating"]2071 }, {title: "fas fa-memory", searchTerms: ["DIMM", "RAM"]}, {2072 title: "fas fa-menorah",2073 searchTerms: ["candle", "hanukkah", "jewish", "judaism", "light"]2074 }, {title: "fas fa-mercury", searchTerms: ["transgender"]}, {2075 title: "fas fa-meteor",2076 searchTerms: []2077 }, {title: "fas fa-microchip", searchTerms: ["cpu", "processor"]}, {2078 title: "fas fa-microphone",2079 searchTerms: ["record", "sound", "voice"]2080 }, {2081 title: "fas fa-microphone-alt",2082 searchTerms: ["record", "sound", "voice"]2083 }, {2084 title: "fas fa-microphone-alt-slash",2085 searchTerms: ["disable", "mute", "record", "sound", "voice"]2086 }, {2087 title: "fas fa-microphone-slash",2088 searchTerms: ["disable", "mute", "record", "sound", "voice"]2089 }, {title: "fas fa-microscope", searchTerms: []}, {2090 title: "fab fa-microsoft",2091 searchTerms: []2092 }, {2093 title: "fas fa-minus",2094 searchTerms: ["collapse", "delete", "hide", "minify", "negative", "remove", "trash"]2095 }, {2096 title: "fas fa-minus-circle",2097 searchTerms: ["delete", "hide", "negative", "remove", "trash"]2098 }, {2099 title: "fas fa-minus-square",2100 searchTerms: ["collapse", "delete", "hide", "minify", "negative", "remove", "trash"]2101 }, {2102 title: "far fa-minus-square",2103 searchTerms: ["collapse", "delete", "hide", "minify", "negative", "remove", "trash"]2104 }, {title: "fab fa-mix", searchTerms: []}, {title: "fab fa-mixcloud", searchTerms: []}, {2105 title: "fab fa-mizuni",2106 searchTerms: []2107 }, {2108 title: "fas fa-mobile",2109 searchTerms: ["apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text"]2110 }, {2111 title: "fas fa-mobile-alt",2112 searchTerms: ["apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text"]2113 }, {title: "fab fa-modx", searchTerms: []}, {2114 title: "fab fa-monero",2115 searchTerms: []2116 }, {2117 title: "fas fa-money-bill",2118 searchTerms: ["buy", "cash", "checkout", "money", "payment", "price", "purchase"]2119 }, {2120 title: "fas fa-money-bill-alt",2121 searchTerms: ["buy", "cash", "checkout", "money", "payment", "price", "purchase"]2122 }, {2123 title: "far fa-money-bill-alt",2124 searchTerms: ["buy", "cash", "checkout", "money", "payment", "price", "purchase"]2125 }, {title: "fas fa-money-bill-wave", searchTerms: []}, {2126 title: "fas fa-money-bill-wave-alt",2127 searchTerms: []2128 }, {title: "fas fa-money-check", searchTerms: ["bank check", "cheque"]}, {2129 title: "fas fa-money-check-alt",2130 searchTerms: ["bank check", "cheque"]2131 }, {title: "fas fa-monument", searchTerms: ["building", "historic", "memoroable"]}, {2132 title: "fas fa-moon",2133 searchTerms: ["contrast", "crescent", "darker", "lunar", "night"]2134 }, {2135 title: "far fa-moon",2136 searchTerms: ["contrast", "crescent", "darker", "lunar", "night"]2137 }, {2138 title: "fas fa-mortar-pestle",2139 searchTerms: ["crush", "culinary", "grind", "medical", "mix", "spices"]2140 }, {title: "fas fa-mosque", searchTerms: ["building", "islam", "muslim"]}, {2141 title: "fas fa-motorcycle",2142 searchTerms: ["bike", "machine", "transportation", "vehicle"]2143 }, {title: "fas fa-mountain", searchTerms: []}, {2144 title: "fas fa-mouse-pointer",2145 searchTerms: ["select"]2146 }, {title: "fas fa-music", searchTerms: ["note", "sound"]}, {2147 title: "fab fa-napster",2148 searchTerms: []2149 }, {title: "fab fa-neos", searchTerms: []}, {2150 title: "fas fa-network-wired",2151 searchTerms: []2152 }, {title: "fas fa-neuter", searchTerms: []}, {2153 title: "fas fa-newspaper",2154 searchTerms: ["article", "press"]2155 }, {title: "far fa-newspaper", searchTerms: ["article", "press"]}, {2156 title: "fab fa-nimblr",2157 searchTerms: []2158 }, {title: "fab fa-nintendo-switch", searchTerms: []}, {2159 title: "fab fa-node",2160 searchTerms: []2161 }, {title: "fab fa-node-js", searchTerms: []}, {2162 title: "fas fa-not-equal",2163 searchTerms: []2164 }, {title: "fas fa-notes-medical", searchTerms: []}, {2165 title: "fab fa-npm",2166 searchTerms: []2167 }, {title: "fab fa-ns8", searchTerms: []}, {2168 title: "fab fa-nutritionix",2169 searchTerms: []2170 }, {title: "fas fa-object-group", searchTerms: ["design"]}, {2171 title: "far fa-object-group",2172 searchTerms: ["design"]2173 }, {title: "fas fa-object-ungroup", searchTerms: ["design"]}, {2174 title: "far fa-object-ungroup",2175 searchTerms: ["design"]2176 }, {title: "fab fa-odnoklassniki", searchTerms: []}, {2177 title: "fab fa-odnoklassniki-square",2178 searchTerms: []2179 }, {title: "fas fa-oil-can", searchTerms: []}, {2180 title: "fab fa-old-republic",2181 searchTerms: ["politics", "star wars"]2182 }, {title: "fas fa-om", searchTerms: ["buddhism", "hinduism", "jainism", "mantra"]}, {2183 title: "fab fa-opencart",2184 searchTerms: []2185 }, {title: "fab fa-openid", searchTerms: []}, {2186 title: "fab fa-opera",2187 searchTerms: []2188 }, {title: "fab fa-optin-monster", searchTerms: []}, {2189 title: "fab fa-osi",2190 searchTerms: []2191 }, {title: "fas fa-otter", searchTerms: ["fauna", "mammmal"]}, {2192 title: "fas fa-outdent",2193 searchTerms: []2194 }, {title: "fab fa-page4", searchTerms: []}, {2195 title: "fab fa-pagelines",2196 searchTerms: ["eco", "flora", "leaf", "leaves", "nature", "plant", "tree"]2197 }, {title: "fas fa-paint-brush", searchTerms: []}, {2198 title: "fas fa-paint-roller",2199 searchTerms: ["brush", "painting", "tool"]2200 }, {title: "fas fa-palette", searchTerms: ["colors", "painting"]}, {2201 title: "fab fa-palfed",2202 searchTerms: []2203 }, {title: "fas fa-pallet", searchTerms: []}, {2204 title: "fas fa-paper-plane",2205 searchTerms: []2206 }, {title: "far fa-paper-plane", searchTerms: []}, {2207 title: "fas fa-paperclip",2208 searchTerms: ["attachment"]2209 }, {2210 title: "fas fa-parachute-box",2211 searchTerms: ["aid", "assistance", "rescue", "supplies"]2212 }, {title: "fas fa-paragraph", searchTerms: []}, {2213 title: "fas fa-parking",2214 searchTerms: []2215 }, {2216 title: "fas fa-passport",2217 searchTerms: ["document", "identification", "issued"]2218 }, {2219 title: "fas fa-pastafarianism",2220 searchTerms: ["agnosticism", "atheism", "flying spaghetti monster", "fsm"]2221 }, {title: "fas fa-paste", searchTerms: ["clipboard", "copy"]}, {2222 title: "fab fa-patreon",2223 searchTerms: []2224 }, {title: "fas fa-pause", searchTerms: ["wait"]}, {2225 title: "fas fa-pause-circle",2226 searchTerms: []2227 }, {title: "far fa-pause-circle", searchTerms: []}, {2228 title: "fas fa-paw",2229 searchTerms: ["animal", "pet"]2230 }, {title: "fab fa-paypal", searchTerms: []}, {title: "fas fa-peace", searchTerms: []}, {2231 title: "fas fa-pen",2232 searchTerms: ["design", "edit", "update", "write"]2233 }, {title: "fas fa-pen-alt", searchTerms: ["design", "edit", "update", "write"]}, {2234 title: "fas fa-pen-fancy",2235 searchTerms: ["design", "edit", "fountain pen", "update", "write"]2236 }, {2237 title: "fas fa-pen-nib",2238 searchTerms: ["design", "edit", "fountain pen", "update", "write"]2239 }, {2240 title: "fas fa-pen-square",2241 searchTerms: ["edit", "pencil-square", "update", "write"]2242 }, {2243 title: "fas fa-pencil-alt",2244 searchTerms: ["design", "edit", "pencil", "update", "write"]2245 }, {title: "fas fa-pencil-ruler", searchTerms: []}, {2246 title: "fab fa-penny-arcade",2247 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "pax", "tabletop"]2248 }, {title: "fas fa-people-carry", searchTerms: ["movers"]}, {2249 title: "fas fa-percent",2250 searchTerms: []2251 }, {title: "fas fa-percentage", searchTerms: []}, {2252 title: "fab fa-periscope",2253 searchTerms: []2254 }, {2255 title: "fas fa-person-booth",2256 searchTerms: ["changing", "changing room", "election", "human", "person", "vote", "voting"]2257 }, {title: "fab fa-phabricator", searchTerms: []}, {2258 title: "fab fa-phoenix-framework",2259 searchTerms: []2260 }, {title: "fab fa-phoenix-squadron", searchTerms: []}, {2261 title: "fas fa-phone",2262 searchTerms: ["call", "earphone", "number", "support", "telephone", "voice"]2263 }, {title: "fas fa-phone-slash", searchTerms: []}, {2264 title: "fas fa-phone-square",2265 searchTerms: ["call", "number", "support", "telephone", "voice"]2266 }, {title: "fas fa-phone-volume", searchTerms: ["telephone", "volume-control-phone"]}, {2267 title: "fab fa-php",2268 searchTerms: []2269 }, {title: "fab fa-pied-piper", searchTerms: []}, {2270 title: "fab fa-pied-piper-alt",2271 searchTerms: []2272 }, {title: "fab fa-pied-piper-hat", searchTerms: ["clothing"]}, {2273 title: "fab fa-pied-piper-pp",2274 searchTerms: []2275 }, {title: "fas fa-piggy-bank", searchTerms: ["save", "savings"]}, {2276 title: "fas fa-pills",2277 searchTerms: ["drugs", "medicine"]2278 }, {title: "fab fa-pinterest", searchTerms: []}, {2279 title: "fab fa-pinterest-p",2280 searchTerms: []2281 }, {title: "fab fa-pinterest-square", searchTerms: []}, {2282 title: "fas fa-place-of-worship",2283 searchTerms: []2284 }, {2285 title: "fas fa-plane",2286 searchTerms: ["airplane", "destination", "fly", "location", "mode", "travel", "trip"]2287 }, {2288 title: "fas fa-plane-arrival",2289 searchTerms: ["airplane", "arriving", "destination", "fly", "land", "landing", "location", "mode", "travel", "trip"]2290 }, {2291 title: "fas fa-plane-departure",2292 searchTerms: ["airplane", "departing", "destination", "fly", "location", "mode", "take off", "taking off", "travel", "trip"]2293 }, {title: "fas fa-play", searchTerms: ["music", "playing", "sound", "start"]}, {2294 title: "fas fa-play-circle",2295 searchTerms: ["playing", "start"]2296 }, {title: "far fa-play-circle", searchTerms: ["playing", "start"]}, {2297 title: "fab fa-playstation",2298 searchTerms: []2299 }, {title: "fas fa-plug", searchTerms: ["connect", "online", "power"]}, {2300 title: "fas fa-plus",2301 searchTerms: ["add", "create", "expand", "new", "positive"]2302 }, {2303 title: "fas fa-plus-circle",2304 searchTerms: ["add", "create", "expand", "new", "positive"]2305 }, {2306 title: "fas fa-plus-square",2307 searchTerms: ["add", "create", "expand", "new", "positive"]2308 }, {2309 title: "far fa-plus-square",2310 searchTerms: ["add", "create", "expand", "new", "positive"]2311 }, {title: "fas fa-podcast", searchTerms: []}, {2312 title: "fas fa-poll",2313 searchTerms: ["results", "survey", "vote", "voting"]2314 }, {title: "fas fa-poll-h", searchTerms: ["results", "survey", "vote", "voting"]}, {2315 title: "fas fa-poo",2316 searchTerms: []2317 }, {title: "fas fa-poo-storm", searchTerms: ["mess", "poop", "shit"]}, {2318 title: "fas fa-poop",2319 searchTerms: []2320 }, {title: "fas fa-portrait", searchTerms: []}, {2321 title: "fas fa-pound-sign",2322 searchTerms: ["gbp"]2323 }, {title: "fas fa-power-off", searchTerms: ["on", "reboot", "restart"]}, {2324 title: "fas fa-pray",2325 searchTerms: []2326 }, {title: "fas fa-praying-hands", searchTerms: []}, {2327 title: "fas fa-prescription",2328 searchTerms: ["drugs", "medical", "medicine", "rx"]2329 }, {2330 title: "fas fa-prescription-bottle",2331 searchTerms: ["drugs", "medical", "medicine", "rx"]2332 }, {2333 title: "fas fa-prescription-bottle-alt",2334 searchTerms: ["drugs", "medical", "medicine", "rx"]2335 }, {title: "fas fa-print", searchTerms: []}, {2336 title: "fas fa-procedures",2337 searchTerms: []2338 }, {title: "fab fa-product-hunt", searchTerms: []}, {2339 title: "fas fa-project-diagram",2340 searchTerms: []2341 }, {title: "fab fa-pushed", searchTerms: []}, {2342 title: "fas fa-puzzle-piece",2343 searchTerms: ["add-on", "addon", "section"]2344 }, {title: "fab fa-python", searchTerms: []}, {title: "fab fa-qq", searchTerms: []}, {2345 title: "fas fa-qrcode",2346 searchTerms: ["scan"]2347 }, {2348 title: "fas fa-question",2349 searchTerms: ["help", "information", "support", "unknown"]2350 }, {2351 title: "fas fa-question-circle",2352 searchTerms: ["help", "information", "support", "unknown"]2353 }, {2354 title: "far fa-question-circle",2355 searchTerms: ["help", "information", "support", "unknown"]2356 }, {title: "fas fa-quidditch", searchTerms: []}, {2357 title: "fab fa-quinscape",2358 searchTerms: []2359 }, {title: "fab fa-quora", searchTerms: []}, {2360 title: "fas fa-quote-left",2361 searchTerms: []2362 }, {title: "fas fa-quote-right", searchTerms: []}, {2363 title: "fas fa-quran",2364 searchTerms: ["book", "islam", "muslim"]2365 }, {title: "fab fa-r-project", searchTerms: []}, {2366 title: "fas fa-rainbow",2367 searchTerms: []2368 }, {title: "fas fa-random", searchTerms: ["shuffle", "sort"]}, {2369 title: "fab fa-ravelry",2370 searchTerms: []2371 }, {title: "fab fa-react", searchTerms: []}, {2372 title: "fab fa-reacteurope",2373 searchTerms: []2374 }, {title: "fab fa-readme", searchTerms: []}, {2375 title: "fab fa-rebel",2376 searchTerms: []2377 }, {title: "fas fa-receipt", searchTerms: ["check", "invoice", "table"]}, {2378 title: "fas fa-recycle",2379 searchTerms: []2380 }, {title: "fab fa-red-river", searchTerms: []}, {2381 title: "fab fa-reddit",2382 searchTerms: []2383 }, {title: "fab fa-reddit-alien", searchTerms: []}, {2384 title: "fab fa-reddit-square",2385 searchTerms: []2386 }, {title: "fas fa-redo", searchTerms: ["forward", "refresh", "reload", "repeat"]}, {2387 title: "fas fa-redo-alt",2388 searchTerms: ["forward", "refresh", "reload", "repeat"]2389 }, {title: "fas fa-registered", searchTerms: []}, {2390 title: "far fa-registered",2391 searchTerms: []2392 }, {title: "fab fa-renren", searchTerms: []}, {2393 title: "fas fa-reply",2394 searchTerms: []2395 }, {title: "fas fa-reply-all", searchTerms: []}, {2396 title: "fab fa-replyd",2397 searchTerms: []2398 }, {2399 title: "fas fa-republican",2400 searchTerms: ["american", "conservative", "election", "elephant", "politics", "republican party", "right", "right-wing", "usa"]2401 }, {title: "fab fa-researchgate", searchTerms: []}, {2402 title: "fab fa-resolving",2403 searchTerms: []2404 }, {title: "fas fa-retweet", searchTerms: ["refresh", "reload", "share", "swap"]}, {2405 title: "fab fa-rev",2406 searchTerms: []2407 }, {title: "fas fa-ribbon", searchTerms: ["badge", "cause", "lapel", "pin"]}, {2408 title: "fas fa-ring",2409 searchTerms: ["Dungeons & Dragons", "Gollum", "band", "binding", "d&d", "dnd", "fantasy", "jewelry", "precious"]2410 }, {title: "fas fa-road", searchTerms: ["street"]}, {2411 title: "fas fa-robot",2412 searchTerms: []2413 }, {title: "fas fa-rocket", searchTerms: ["app"]}, {2414 title: "fab fa-rocketchat",2415 searchTerms: []2416 }, {title: "fab fa-rockrms", searchTerms: []}, {title: "fas fa-route", searchTerms: []}, {2417 title: "fas fa-rss",2418 searchTerms: ["blog"]2419 }, {title: "fas fa-rss-square", searchTerms: ["blog", "feed"]}, {2420 title: "fas fa-ruble-sign",2421 searchTerms: ["rub"]2422 }, {title: "fas fa-ruler", searchTerms: []}, {2423 title: "fas fa-ruler-combined",2424 searchTerms: []2425 }, {title: "fas fa-ruler-horizontal", searchTerms: []}, {2426 title: "fas fa-ruler-vertical",2427 searchTerms: []2428 }, {title: "fas fa-running", searchTerms: ["jog", "sprint"]}, {2429 title: "fas fa-rupee-sign",2430 searchTerms: ["indian", "inr"]2431 }, {title: "fas fa-sad-cry", searchTerms: ["emoticon", "face", "tear", "tears"]}, {2432 title: "far fa-sad-cry",2433 searchTerms: ["emoticon", "face", "tear", "tears"]2434 }, {title: "fas fa-sad-tear", searchTerms: ["emoticon", "face", "tear", "tears"]}, {2435 title: "far fa-sad-tear",2436 searchTerms: ["emoticon", "face", "tear", "tears"]2437 }, {title: "fab fa-safari", searchTerms: ["browser"]}, {2438 title: "fab fa-sass",2439 searchTerms: []2440 }, {title: "fas fa-save", searchTerms: ["floppy", "floppy-o"]}, {2441 title: "far fa-save",2442 searchTerms: ["floppy", "floppy-o"]2443 }, {title: "fab fa-schlix", searchTerms: []}, {2444 title: "fas fa-school",2445 searchTerms: []2446 }, {2447 title: "fas fa-screwdriver",2448 searchTerms: ["admin", "fix", "repair", "settings", "tool"]2449 }, {title: "fab fa-scribd", searchTerms: []}, {2450 title: "fas fa-scroll",2451 searchTerms: ["Dungeons & Dragons", "announcement", "d&d", "dnd", "fantasy", "paper"]2452 }, {2453 title: "fas fa-search",2454 searchTerms: ["bigger", "enlarge", "magnify", "preview", "zoom"]2455 }, {title: "fas fa-search-dollar", searchTerms: []}, {2456 title: "fas fa-search-location",2457 searchTerms: []2458 }, {2459 title: "fas fa-search-minus",2460 searchTerms: ["minify", "negative", "smaller", "zoom", "zoom out"]2461 }, {2462 title: "fas fa-search-plus",2463 searchTerms: ["bigger", "enlarge", "magnify", "positive", "zoom", "zoom in"]2464 }, {title: "fab fa-searchengin", searchTerms: []}, {2465 title: "fas fa-seedling",2466 searchTerms: []2467 }, {title: "fab fa-sellcast", searchTerms: ["eercast"]}, {2468 title: "fab fa-sellsy",2469 searchTerms: []2470 }, {title: "fas fa-server", searchTerms: ["cpu"]}, {2471 title: "fab fa-servicestack",2472 searchTerms: []2473 }, {title: "fas fa-shapes", searchTerms: ["circle", "square", "triangle"]}, {2474 title: "fas fa-share",2475 searchTerms: []2476 }, {title: "fas fa-share-alt", searchTerms: []}, {2477 title: "fas fa-share-alt-square",2478 searchTerms: []2479 }, {title: "fas fa-share-square", searchTerms: ["send", "social"]}, {2480 title: "far fa-share-square",2481 searchTerms: ["send", "social"]2482 }, {title: "fas fa-shekel-sign", searchTerms: ["ils"]}, {2483 title: "fas fa-shield-alt",2484 searchTerms: ["achievement", "award", "block", "defend", "security", "winner"]2485 }, {title: "fas fa-ship", searchTerms: ["boat", "sea"]}, {2486 title: "fas fa-shipping-fast",2487 searchTerms: []2488 }, {title: "fab fa-shirtsinbulk", searchTerms: []}, {2489 title: "fas fa-shoe-prints",2490 searchTerms: ["feet", "footprints", "steps"]2491 }, {title: "fas fa-shopping-bag", searchTerms: []}, {2492 title: "fas fa-shopping-basket",2493 searchTerms: []2494 }, {2495 title: "fas fa-shopping-cart",2496 searchTerms: ["buy", "checkout", "payment", "purchase"]2497 }, {title: "fab fa-shopware", searchTerms: []}, {2498 title: "fas fa-shower",2499 searchTerms: []2500 }, {2501 title: "fas fa-shuttle-van",2502 searchTerms: ["machine", "public-transportation", "transportation", "vehicle"]2503 }, {title: "fas fa-sign", searchTerms: []}, {2504 title: "fas fa-sign-in-alt",2505 searchTerms: ["arrow", "enter", "join", "log in", "login", "sign in", "sign up", "sign-in", "signin", "signup"]2506 }, {title: "fas fa-sign-language", searchTerms: []}, {2507 title: "fas fa-sign-out-alt",2508 searchTerms: ["arrow", "exit", "leave", "log out", "logout", "sign-out"]2509 }, {title: "fas fa-signal", searchTerms: ["bars", "graph", "online", "status"]}, {2510 title: "fas fa-signature",2511 searchTerms: ["John Hancock", "cursive", "name", "writing"]2512 }, {title: "fab fa-simplybuilt", searchTerms: []}, {2513 title: "fab fa-sistrix",2514 searchTerms: []2515 }, {2516 title: "fas fa-sitemap",2517 searchTerms: ["directory", "hierarchy", "ia", "information architecture", "organization"]2518 }, {title: "fab fa-sith", searchTerms: []}, {2519 title: "fas fa-skull",2520 searchTerms: ["bones", "skeleton", "yorick"]2521 }, {2522 title: "fas fa-skull-crossbones",2523 searchTerms: ["Dungeons & Dragons", "alert", "bones", "d&d", "danger", "dead", "deadly", "death", "dnd", "fantasy", "halloween", "holiday", "jolly-roger", "pirate", "poison", "skeleton", "warning"]2524 }, {title: "fab fa-skyatlas", searchTerms: []}, {2525 title: "fab fa-skype",2526 searchTerms: []2527 }, {title: "fab fa-slack", searchTerms: ["anchor", "hash", "hashtag"]}, {2528 title: "fab fa-slack-hash",2529 searchTerms: ["anchor", "hash", "hashtag"]2530 }, {title: "fas fa-slash", searchTerms: []}, {2531 title: "fas fa-sliders-h",2532 searchTerms: ["settings", "sliders"]2533 }, {title: "fab fa-slideshare", searchTerms: []}, {2534 title: "fas fa-smile",2535 searchTerms: ["approve", "emoticon", "face", "happy", "rating", "satisfied"]2536 }, {2537 title: "far fa-smile",2538 searchTerms: ["approve", "emoticon", "face", "happy", "rating", "satisfied"]2539 }, {2540 title: "fas fa-smile-beam",2541 searchTerms: ["emoticon", "face", "happy", "positive"]2542 }, {2543 title: "far fa-smile-beam",2544 searchTerms: ["emoticon", "face", "happy", "positive"]2545 }, {title: "fas fa-smile-wink", searchTerms: ["emoticon", "face", "happy"]}, {2546 title: "far fa-smile-wink",2547 searchTerms: ["emoticon", "face", "happy"]2548 }, {title: "fas fa-smog", searchTerms: ["dragon"]}, {2549 title: "fas fa-smoking",2550 searchTerms: ["cigarette", "nicotine", "smoking status"]2551 }, {title: "fas fa-smoking-ban", searchTerms: ["no smoking", "non-smoking"]}, {2552 title: "fab fa-snapchat",2553 searchTerms: []2554 }, {title: "fab fa-snapchat-ghost", searchTerms: []}, {2555 title: "fab fa-snapchat-square",2556 searchTerms: []2557 }, {2558 title: "fas fa-snowflake",2559 searchTerms: ["precipitation", "seasonal", "winter"]2560 }, {title: "far fa-snowflake", searchTerms: ["precipitation", "seasonal", "winter"]}, {2561 title: "fas fa-socks",2562 searchTerms: ["business socks", "business time", "flight of the conchords", "wednesday"]2563 }, {2564 title: "fas fa-solar-panel",2565 searchTerms: ["clean", "eco-friendly", "energy", "green", "sun"]2566 }, {title: "fas fa-sort", searchTerms: ["order"]}, {2567 title: "fas fa-sort-alpha-down",2568 searchTerms: ["sort-alpha-asc"]2569 }, {title: "fas fa-sort-alpha-up", searchTerms: ["sort-alpha-desc"]}, {2570 title: "fas fa-sort-amount-down",2571 searchTerms: ["sort-amount-asc"]2572 }, {title: "fas fa-sort-amount-up", searchTerms: ["sort-amount-desc"]}, {2573 title: "fas fa-sort-down",2574 searchTerms: ["arrow", "descending", "sort-desc"]2575 }, {2576 title: "fas fa-sort-numeric-down",2577 searchTerms: ["numbers", "sort-numeric-asc"]2578 }, {title: "fas fa-sort-numeric-up", searchTerms: ["numbers", "sort-numeric-desc"]}, {2579 title: "fas fa-sort-up",2580 searchTerms: ["arrow", "ascending", "sort-asc"]2581 }, {title: "fab fa-soundcloud", searchTerms: []}, {2582 title: "fas fa-spa",2583 searchTerms: ["flora", "mindfullness", "plant", "wellness"]2584 }, {2585 title: "fas fa-space-shuttle",2586 searchTerms: ["astronaut", "machine", "nasa", "rocket", "transportation"]2587 }, {title: "fab fa-speakap", searchTerms: []}, {2588 title: "fas fa-spider",2589 searchTerms: ["arachnid", "bug", "charlotte", "crawl", "eight", "halloween", "holiday"]2590 }, {title: "fas fa-spinner", searchTerms: ["loading", "progress"]}, {2591 title: "fas fa-splotch",2592 searchTerms: []2593 }, {title: "fab fa-spotify", searchTerms: []}, {2594 title: "fas fa-spray-can",2595 searchTerms: []2596 }, {title: "fas fa-square", searchTerms: ["block", "box"]}, {2597 title: "far fa-square",2598 searchTerms: ["block", "box"]2599 }, {title: "fas fa-square-full", searchTerms: []}, {2600 title: "fas fa-square-root-alt",2601 searchTerms: []2602 }, {title: "fab fa-squarespace", searchTerms: []}, {2603 title: "fab fa-stack-exchange",2604 searchTerms: []2605 }, {title: "fab fa-stack-overflow", searchTerms: []}, {2606 title: "fas fa-stamp",2607 searchTerms: []2608 }, {2609 title: "fas fa-star",2610 searchTerms: ["achievement", "award", "favorite", "important", "night", "rating", "score"]2611 }, {2612 title: "far fa-star",2613 searchTerms: ["achievement", "award", "favorite", "important", "night", "rating", "score"]2614 }, {title: "fas fa-star-and-crescent", searchTerms: ["islam", "muslim"]}, {2615 title: "fas fa-star-half",2616 searchTerms: ["achievement", "award", "rating", "score", "star-half-empty", "star-half-full"]2617 }, {2618 title: "far fa-star-half",2619 searchTerms: ["achievement", "award", "rating", "score", "star-half-empty", "star-half-full"]2620 }, {2621 title: "fas fa-star-half-alt",2622 searchTerms: ["achievement", "award", "rating", "score", "star-half-empty", "star-half-full"]2623 }, {title: "fas fa-star-of-david", searchTerms: ["jewish", "judaism"]}, {2624 title: "fas fa-star-of-life",2625 searchTerms: []2626 }, {title: "fab fa-staylinked", searchTerms: []}, {2627 title: "fab fa-steam",2628 searchTerms: []2629 }, {title: "fab fa-steam-square", searchTerms: []}, {2630 title: "fab fa-steam-symbol",2631 searchTerms: []2632 }, {2633 title: "fas fa-step-backward",2634 searchTerms: ["beginning", "first", "previous", "rewind", "start"]2635 }, {title: "fas fa-step-forward", searchTerms: ["end", "last", "next"]}, {2636 title: "fas fa-stethoscope",2637 searchTerms: []2638 }, {title: "fab fa-sticker-mule", searchTerms: []}, {2639 title: "fas fa-sticky-note",2640 searchTerms: []2641 }, {title: "far fa-sticky-note", searchTerms: []}, {2642 title: "fas fa-stop",2643 searchTerms: ["block", "box", "square"]2644 }, {title: "fas fa-stop-circle", searchTerms: []}, {2645 title: "far fa-stop-circle",2646 searchTerms: []2647 }, {title: "fas fa-stopwatch", searchTerms: ["time"]}, {2648 title: "fas fa-store",2649 searchTerms: []2650 }, {title: "fas fa-store-alt", searchTerms: []}, {2651 title: "fab fa-strava",2652 searchTerms: []2653 }, {title: "fas fa-stream", searchTerms: []}, {2654 title: "fas fa-street-view",2655 searchTerms: ["map"]2656 }, {title: "fas fa-strikethrough", searchTerms: []}, {2657 title: "fab fa-stripe",2658 searchTerms: []2659 }, {title: "fab fa-stripe-s", searchTerms: []}, {2660 title: "fas fa-stroopwafel",2661 searchTerms: ["dessert", "food", "sweets", "waffle"]2662 }, {title: "fab fa-studiovinari", searchTerms: []}, {2663 title: "fab fa-stumbleupon",2664 searchTerms: []2665 }, {title: "fab fa-stumbleupon-circle", searchTerms: []}, {2666 title: "fas fa-subscript",2667 searchTerms: []2668 }, {2669 title: "fas fa-subway",2670 searchTerms: ["machine", "railway", "train", "transportation", "vehicle"]2671 }, {2672 title: "fas fa-suitcase",2673 searchTerms: ["baggage", "luggage", "move", "suitcase", "travel", "trip"]2674 }, {title: "fas fa-suitcase-rolling", searchTerms: []}, {2675 title: "fas fa-sun",2676 searchTerms: ["brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather"]2677 }, {2678 title: "far fa-sun",2679 searchTerms: ["brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather"]2680 }, {title: "fab fa-superpowers", searchTerms: []}, {2681 title: "fas fa-superscript",2682 searchTerms: ["exponential"]2683 }, {title: "fab fa-supple", searchTerms: []}, {2684 title: "fas fa-surprise",2685 searchTerms: ["emoticon", "face", "shocked"]2686 }, {title: "far fa-surprise", searchTerms: ["emoticon", "face", "shocked"]}, {2687 title: "fas fa-swatchbook",2688 searchTerms: []2689 }, {2690 title: "fas fa-swimmer",2691 searchTerms: ["athlete", "head", "man", "person", "water"]2692 }, {title: "fas fa-swimming-pool", searchTerms: ["ladder", "recreation", "water"]}, {2693 title: "fas fa-synagogue",2694 searchTerms: ["building", "jewish", "judaism", "star of david", "temple"]2695 }, {2696 title: "fas fa-sync",2697 searchTerms: ["exchange", "refresh", "reload", "rotate", "swap"]2698 }, {title: "fas fa-sync-alt", searchTerms: ["refresh", "reload", "rotate"]}, {2699 title: "fas fa-syringe",2700 searchTerms: ["immunizations", "needle"]2701 }, {title: "fas fa-table", searchTerms: ["data", "excel", "spreadsheet"]}, {2702 title: "fas fa-table-tennis",2703 searchTerms: []2704 }, {2705 title: "fas fa-tablet",2706 searchTerms: ["apple", "device", "ipad", "kindle", "screen"]2707 }, {2708 title: "fas fa-tablet-alt",2709 searchTerms: ["apple", "device", "ipad", "kindle", "screen"]2710 }, {title: "fas fa-tablets", searchTerms: ["drugs", "medicine"]}, {2711 title: "fas fa-tachometer-alt",2712 searchTerms: ["dashboard", "tachometer"]2713 }, {title: "fas fa-tag", searchTerms: ["label"]}, {2714 title: "fas fa-tags",2715 searchTerms: ["labels"]2716 }, {title: "fas fa-tape", searchTerms: []}, {2717 title: "fas fa-tasks",2718 searchTerms: ["downloading", "downloads", "loading", "progress", "settings"]2719 }, {2720 title: "fas fa-taxi",2721 searchTerms: ["cab", "cabbie", "car", "car service", "lyft", "machine", "transportation", "uber", "vehicle"]2722 }, {title: "fab fa-teamspeak", searchTerms: []}, {2723 title: "fas fa-teeth",2724 searchTerms: []2725 }, {title: "fas fa-teeth-open", searchTerms: []}, {2726 title: "fab fa-telegram",2727 searchTerms: []2728 }, {title: "fab fa-telegram-plane", searchTerms: []}, {2729 title: "fas fa-temperature-high",2730 searchTerms: ["mercury", "thermometer", "warm"]2731 }, {2732 title: "fas fa-temperature-low",2733 searchTerms: ["cool", "mercury", "thermometer"]2734 }, {title: "fab fa-tencent-weibo", searchTerms: []}, {2735 title: "fas fa-terminal",2736 searchTerms: ["code", "command", "console", "prompt"]2737 }, {title: "fas fa-text-height", searchTerms: []}, {2738 title: "fas fa-text-width",2739 searchTerms: []2740 }, {title: "fas fa-th", searchTerms: ["blocks", "boxes", "grid", "squares"]}, {2741 title: "fas fa-th-large",2742 searchTerms: ["blocks", "boxes", "grid", "squares"]2743 }, {2744 title: "fas fa-th-list",2745 searchTerms: ["checklist", "completed", "done", "finished", "ol", "todo", "ul"]2746 }, {title: "fab fa-the-red-yeti", searchTerms: []}, {2747 title: "fas fa-theater-masks",2748 searchTerms: []2749 }, {title: "fab fa-themeco", searchTerms: []}, {2750 title: "fab fa-themeisle",2751 searchTerms: []2752 }, {2753 title: "fas fa-thermometer",2754 searchTerms: ["mercury", "status", "temperature"]2755 }, {2756 title: "fas fa-thermometer-empty",2757 searchTerms: ["mercury", "status", "temperature"]2758 }, {2759 title: "fas fa-thermometer-full",2760 searchTerms: ["fever", "mercury", "status", "temperature"]2761 }, {2762 title: "fas fa-thermometer-half",2763 searchTerms: ["mercury", "status", "temperature"]2764 }, {2765 title: "fas fa-thermometer-quarter",2766 searchTerms: ["mercury", "status", "temperature"]2767 }, {2768 title: "fas fa-thermometer-three-quarters",2769 searchTerms: ["mercury", "status", "temperature"]2770 }, {title: "fab fa-think-peaks", searchTerms: []}, {2771 title: "fas fa-thumbs-down",2772 searchTerms: ["disagree", "disapprove", "dislike", "hand", "thumbs-o-down"]2773 }, {2774 title: "far fa-thumbs-down",2775 searchTerms: ["disagree", "disapprove", "dislike", "hand", "thumbs-o-down"]2776 }, {2777 title: "fas fa-thumbs-up",2778 searchTerms: ["agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude"]2779 }, {2780 title: "far fa-thumbs-up",2781 searchTerms: ["agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude"]2782 }, {2783 title: "fas fa-thumbtack",2784 searchTerms: ["coordinates", "location", "marker", "pin", "thumb-tack"]2785 }, {title: "fas fa-ticket-alt", searchTerms: ["ticket"]}, {2786 title: "fas fa-times",2787 searchTerms: ["close", "cross", "error", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x"]2788 }, {2789 title: "fas fa-times-circle",2790 searchTerms: ["close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x"]2791 }, {2792 title: "far fa-times-circle",2793 searchTerms: ["close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x"]2794 }, {2795 title: "fas fa-tint",2796 searchTerms: ["drop", "droplet", "raindrop", "waterdrop"]2797 }, {title: "fas fa-tint-slash", searchTerms: []}, {2798 title: "fas fa-tired",2799 searchTerms: ["emoticon", "face", "grumpy"]2800 }, {title: "far fa-tired", searchTerms: ["emoticon", "face", "grumpy"]}, {2801 title: "fas fa-toggle-off",2802 searchTerms: ["switch"]2803 }, {title: "fas fa-toggle-on", searchTerms: ["switch"]}, {2804 title: "fas fa-toilet-paper",2805 searchTerms: ["bathroom", "halloween", "holiday", "lavatory", "prank", "restroom", "roll"]2806 }, {2807 title: "fas fa-toolbox",2808 searchTerms: ["admin", "container", "fix", "repair", "settings", "tools"]2809 }, {2810 title: "fas fa-tooth",2811 searchTerms: ["bicuspid", "dental", "molar", "mouth", "teeth"]2812 }, {title: "fas fa-torah", searchTerms: ["book", "jewish", "judaism"]}, {2813 title: "fas fa-torii-gate",2814 searchTerms: ["building", "shintoism"]2815 }, {title: "fas fa-tractor", searchTerms: []}, {2816 title: "fab fa-trade-federation",2817 searchTerms: []2818 }, {title: "fas fa-trademark", searchTerms: []}, {2819 title: "fas fa-traffic-light",2820 searchTerms: []2821 }, {title: "fas fa-train", searchTerms: ["bullet", "locomotive", "railway"]}, {2822 title: "fas fa-transgender",2823 searchTerms: ["intersex"]2824 }, {title: "fas fa-transgender-alt", searchTerms: []}, {2825 title: "fas fa-trash",2826 searchTerms: ["delete", "garbage", "hide", "remove"]2827 }, {2828 title: "fas fa-trash-alt",2829 searchTerms: ["delete", "garbage", "hide", "remove", "trash", "trash-o"]2830 }, {2831 title: "far fa-trash-alt",2832 searchTerms: ["delete", "garbage", "hide", "remove", "trash", "trash-o"]2833 }, {2834 title: "fas fa-tree",2835 searchTerms: ["bark", "fall", "flora", "forest", "nature", "plant", "seasonal"]2836 }, {title: "fab fa-trello", searchTerms: []}, {2837 title: "fab fa-tripadvisor",2838 searchTerms: []2839 }, {2840 title: "fas fa-trophy",2841 searchTerms: ["achievement", "award", "cup", "game", "winner"]2842 }, {title: "fas fa-truck", searchTerms: ["delivery", "shipping"]}, {2843 title: "fas fa-truck-loading",2844 searchTerms: []2845 }, {title: "fas fa-truck-monster", searchTerms: []}, {2846 title: "fas fa-truck-moving",2847 searchTerms: []2848 }, {title: "fas fa-truck-pickup", searchTerms: []}, {2849 title: "fas fa-tshirt",2850 searchTerms: ["cloth", "clothing"]2851 }, {title: "fas fa-tty", searchTerms: []}, {2852 title: "fab fa-tumblr",2853 searchTerms: []2854 }, {title: "fab fa-tumblr-square", searchTerms: []}, {2855 title: "fas fa-tv",2856 searchTerms: ["computer", "display", "monitor", "television"]2857 }, {title: "fab fa-twitch", searchTerms: []}, {2858 title: "fab fa-twitter",2859 searchTerms: ["social network", "tweet"]2860 }, {title: "fab fa-twitter-square", searchTerms: ["social network", "tweet"]}, {2861 title: "fab fa-typo3",2862 searchTerms: []2863 }, {title: "fab fa-uber", searchTerms: []}, {title: "fab fa-uikit", searchTerms: []}, {2864 title: "fas fa-umbrella",2865 searchTerms: ["protection", "rain"]2866 }, {2867 title: "fas fa-umbrella-beach",2868 searchTerms: ["protection", "recreation", "sun"]2869 }, {title: "fas fa-underline", searchTerms: []}, {2870 title: "fas fa-undo",2871 searchTerms: ["back", "control z", "exchange", "oops", "return", "rotate", "swap"]2872 }, {2873 title: "fas fa-undo-alt",2874 searchTerms: ["back", "control z", "exchange", "oops", "return", "swap"]2875 }, {title: "fab fa-uniregistry", searchTerms: []}, {2876 title: "fas fa-universal-access",2877 searchTerms: []2878 }, {title: "fas fa-university", searchTerms: ["bank", "institution"]}, {2879 title: "fas fa-unlink",2880 searchTerms: ["chain", "chain-broken", "remove"]2881 }, {title: "fas fa-unlock", searchTerms: ["admin", "lock", "password", "protect"]}, {2882 title: "fas fa-unlock-alt",2883 searchTerms: ["admin", "lock", "password", "protect"]2884 }, {title: "fab fa-untappd", searchTerms: []}, {2885 title: "fas fa-upload",2886 searchTerms: ["export", "publish"]2887 }, {title: "fab fa-usb", searchTerms: []}, {2888 title: "fas fa-user",2889 searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2890 }, {2891 title: "far fa-user",2892 searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2893 }, {2894 title: "fas fa-user-alt",2895 searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2896 }, {title: "fas fa-user-alt-slash", searchTerms: []}, {2897 title: "fas fa-user-astronaut",2898 searchTerms: ["avatar", "clothing", "cosmonaut", "space", "suit"]2899 }, {title: "fas fa-user-check", searchTerms: []}, {2900 title: "fas fa-user-circle",2901 searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2902 }, {2903 title: "far fa-user-circle",2904 searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2905 }, {title: "fas fa-user-clock", searchTerms: []}, {2906 title: "fas fa-user-cog",2907 searchTerms: []2908 }, {title: "fas fa-user-edit", searchTerms: []}, {2909 title: "fas fa-user-friends",2910 searchTerms: []2911 }, {2912 title: "fas fa-user-graduate",2913 searchTerms: ["cap", "clothing", "commencement", "gown", "graduation", "student"]2914 }, {title: "fas fa-user-injured", searchTerms: ["cast", "ouch", "sling"]}, {2915 title: "fas fa-user-lock",2916 searchTerms: []2917 }, {2918 title: "fas fa-user-md",2919 searchTerms: ["doctor", "job", "medical", "nurse", "occupation", "profile"]2920 }, {title: "fas fa-user-minus", searchTerms: ["delete", "negative", "remove"]}, {2921 title: "fas fa-user-ninja",2922 searchTerms: ["assassin", "avatar", "dangerous", "deadly", "sneaky"]2923 }, {title: "fas fa-user-plus", searchTerms: ["positive", "sign up", "signup"]}, {2924 title: "fas fa-user-secret",2925 searchTerms: ["clothing", "coat", "hat", "incognito", "privacy", "spy", "whisper"]2926 }, {title: "fas fa-user-shield", searchTerms: []}, {2927 title: "fas fa-user-slash",2928 searchTerms: ["ban", "remove"]2929 }, {title: "fas fa-user-tag", searchTerms: []}, {2930 title: "fas fa-user-tie",2931 searchTerms: ["avatar", "business", "clothing", "formal"]2932 }, {title: "fas fa-user-times", searchTerms: ["archive", "delete", "remove", "x"]}, {2933 title: "fas fa-users",2934 searchTerms: ["people", "persons", "profiles"]2935 }, {title: "fas fa-users-cog", searchTerms: []}, {2936 title: "fab fa-ussunnah",2937 searchTerms: []2938 }, {title: "fas fa-utensil-spoon", searchTerms: ["spoon"]}, {2939 title: "fas fa-utensils",2940 searchTerms: ["cutlery", "dinner", "eat", "food", "knife", "restaurant", "spoon"]2941 }, {title: "fab fa-vaadin", searchTerms: []}, {2942 title: "fas fa-vector-square",2943 searchTerms: ["anchors", "lines", "object"]2944 }, {title: "fas fa-venus", searchTerms: ["female"]}, {2945 title: "fas fa-venus-double",2946 searchTerms: []2947 }, {title: "fas fa-venus-mars", searchTerms: []}, {2948 title: "fab fa-viacoin",2949 searchTerms: []2950 }, {title: "fab fa-viadeo", searchTerms: []}, {2951 title: "fab fa-viadeo-square",2952 searchTerms: []2953 }, {title: "fas fa-vial", searchTerms: ["test tube"]}, {2954 title: "fas fa-vials",2955 searchTerms: ["lab results", "test tubes"]2956 }, {title: "fab fa-viber", searchTerms: []}, {2957 title: "fas fa-video",2958 searchTerms: ["camera", "film", "movie", "record", "video-camera"]2959 }, {title: "fas fa-video-slash", searchTerms: []}, {2960 title: "fas fa-vihara",2961 searchTerms: ["buddhism", "buddhist", "building", "monastery"]2962 }, {title: "fab fa-vimeo", searchTerms: []}, {2963 title: "fab fa-vimeo-square",2964 searchTerms: []2965 }, {title: "fab fa-vimeo-v", searchTerms: ["vimeo"]}, {2966 title: "fab fa-vine",2967 searchTerms: []2968 }, {title: "fab fa-vk", searchTerms: []}, {2969 title: "fab fa-vnv",2970 searchTerms: []2971 }, {title: "fas fa-volleyball-ball", searchTerms: []}, {2972 title: "fas fa-volume-down",2973 searchTerms: ["audio", "lower", "music", "quieter", "sound", "speaker"]2974 }, {title: "fas fa-volume-mute", searchTerms: []}, {2975 title: "fas fa-volume-off",2976 searchTerms: ["audio", "music", "mute", "sound"]2977 }, {2978 title: "fas fa-volume-up",2979 searchTerms: ["audio", "higher", "louder", "music", "sound", "speaker"]2980 }, {2981 title: "fas fa-vote-yea",2982 searchTerms: ["accept", "cast", "election", "politics", "positive", "yes"]2983 }, {title: "fas fa-vr-cardboard", searchTerms: ["google", "reality", "virtual"]}, {2984 title: "fab fa-vuejs",2985 searchTerms: []2986 }, {title: "fas fa-walking", searchTerms: []}, {2987 title: "fas fa-wallet",2988 searchTerms: []2989 }, {title: "fas fa-warehouse", searchTerms: []}, {2990 title: "fas fa-water",2991 searchTerms: []2992 }, {title: "fab fa-weebly", searchTerms: []}, {title: "fab fa-weibo", searchTerms: []}, {2993 title: "fas fa-weight",2994 searchTerms: ["measurement", "scale", "weight"]2995 }, {title: "fas fa-weight-hanging", searchTerms: ["anvil", "heavy", "measurement"]}, {2996 title: "fab fa-weixin",2997 searchTerms: []2998 }, {title: "fab fa-whatsapp", searchTerms: []}, {2999 title: "fab fa-whatsapp-square",3000 searchTerms: []3001 }, {title: "fas fa-wheelchair", searchTerms: ["handicap", "person"]}, {3002 title: "fab fa-whmcs",3003 searchTerms: []3004 }, {title: "fas fa-wifi", searchTerms: []}, {3005 title: "fab fa-wikipedia-w",3006 searchTerms: []3007 }, {3008 title: "fas fa-wind",3009 searchTerms: ["air", "blow", "breeze", "fall", "seasonal"]3010 }, {title: "fas fa-window-close", searchTerms: []}, {3011 title: "far fa-window-close",3012 searchTerms: []3013 }, {title: "fas fa-window-maximize", searchTerms: []}, {3014 title: "far fa-window-maximize",3015 searchTerms: []3016 }, {title: "fas fa-window-minimize", searchTerms: []}, {3017 title: "far fa-window-minimize",3018 searchTerms: []3019 }, {title: "fas fa-window-restore", searchTerms: []}, {3020 title: "far fa-window-restore",3021 searchTerms: []3022 }, {title: "fab fa-windows", searchTerms: ["microsoft"]}, {3023 title: "fas fa-wine-bottle",3024 searchTerms: ["alcohol", "beverage", "drink", "glass", "grapes"]3025 }, {3026 title: "fas fa-wine-glass",3027 searchTerms: ["alcohol", "beverage", "drink", "grapes"]3028 }, {3029 title: "fas fa-wine-glass-alt",3030 searchTerms: ["alcohol", "beverage", "drink", "grapes"]3031 }, {title: "fab fa-wix", searchTerms: []}, {3032 title: "fab fa-wizards-of-the-coast",3033 searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop"]3034 }, {title: "fab fa-wolf-pack-battalion", searchTerms: []}, {3035 title: "fas fa-won-sign",3036 searchTerms: ["krw"]3037 }, {title: "fab fa-wordpress", searchTerms: []}, {3038 title: "fab fa-wordpress-simple",3039 searchTerms: []3040 }, {title: "fab fa-wpbeginner", searchTerms: []}, {3041 title: "fab fa-wpexplorer",3042 searchTerms: []3043 }, {title: "fab fa-wpforms", searchTerms: []}, {3044 title: "fab fa-wpressr",3045 searchTerms: ["rendact"]3046 }, {3047 title: "fas fa-wrench",3048 searchTerms: ["fix", "settings", "spanner", "tool", "update"]3049 }, {title: "fas fa-x-ray", searchTerms: ["radiological images", "radiology"]}, {3050 title: "fab fa-xbox",3051 searchTerms: []3052 }, {title: "fab fa-xing", searchTerms: []}, {3053 title: "fab fa-xing-square",3054 searchTerms: []3055 }, {title: "fab fa-y-combinator", searchTerms: []}, {3056 title: "fab fa-yahoo",3057 searchTerms: []3058 }, {title: "fab fa-yandex", searchTerms: []}, {3059 title: "fab fa-yandex-international",3060 searchTerms: []3061 }, {title: "fab fa-yelp", searchTerms: []}, {3062 title: "fas fa-yen-sign",3063 searchTerms: ["jpy", "money"]3064 }, {title: "fas fa-yin-yang", searchTerms: ["daoism", "opposites", "taoism"]}, {3065 title: "fab fa-yoast",3066 searchTerms: []3067 }, {3068 title: "fab fa-youtube",3069 searchTerms: ["film", "video", "youtube-play", "youtube-square"]3070 }, {title: "fab fa-youtube-square", searchTerms: []}, {title: "fab fa-zhihu", searchTerms: []}]3071 })...
AdvancedSearchController.js
Source:AdvancedSearchController.js
1/*2 * Copyright (C) 2011 Google Inc. All rights reserved.3 *4 * Redistribution and use in source and binary forms, with or without5 * modification, are permitted provided that the following conditions are6 * met:7 *8 * 1. Redistributions of source code must retain the above copyright9 * notice, this list of conditions and the following disclaimer.10 *11 * 2. Redistributions in binary form must reproduce the above12 * copyright notice, this list of conditions and the following disclaimer13 * in the documentation and/or other materials provided with the14 * distribution.15 *16 * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC.20 * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.27 */28/**29 * @constructor30 */31WebInspector.AdvancedSearchController = function()32{33 this._shortcut = WebInspector.AdvancedSearchController.createShortcut();34 this._searchId = 0;35 36 WebInspector.settings.advancedSearchConfig = WebInspector.settings.createSetting("advancedSearchConfig", new WebInspector.SearchConfig("", true, false));37 38 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, this._frameNavigated, this);39}40WebInspector.AdvancedSearchController.createShortcut = function()41{42 if (WebInspector.isMac())43 return WebInspector.KeyboardShortcut.makeDescriptor("f", WebInspector.KeyboardShortcut.Modifiers.Meta | WebInspector.KeyboardShortcut.Modifiers.Alt);44 else45 return WebInspector.KeyboardShortcut.makeDescriptor("f", WebInspector.KeyboardShortcut.Modifiers.Ctrl | WebInspector.KeyboardShortcut.Modifiers.Shift);46}47WebInspector.AdvancedSearchController.prototype = {48 /**49 * @param {Event} event50 */51 handleShortcut: function(event)52 {53 if (WebInspector.KeyboardShortcut.makeKeyFromEvent(event) === this._shortcut.key) {54 this.show();55 event.handled = true;56 }57 },58 _frameNavigated: function()59 {60 this.resetSearch();61 },62 /**63 * @param {WebInspector.SearchScope} searchScope64 */65 registerSearchScope: function(searchScope)66 {67 // FIXME: implement multiple search scopes.68 this._searchScope = searchScope;69 },70 show: function()71 {72 if (!this._searchView)73 this._searchView = new WebInspector.SearchView(this);74 75 if (this._searchView.isShowing())76 this._searchView.focus();77 else78 WebInspector.showViewInDrawer(this._searchView);79 },80 close: function()81 {82 this.stopSearch();83 WebInspector.closeDrawerView();84 },85 /**86 * @param {number} searchId87 * @param {Object} searchResult88 */89 _onSearchResult: function(searchId, searchResult)90 {91 if (searchId !== this._searchId)92 return;93 this._searchView.addSearchResult(searchResult);94 if (!searchResult.searchMatches.length)95 return;96 97 if (!this._searchResultsPane) 98 this._searchResultsPane = this._currentSearchScope.createSearchResultsPane(this._searchConfig); 99 this._searchView.resultsPane = this._searchResultsPane; 100 this._searchResultsPane.addSearchResult(searchResult);101 },102 103 /**104 * @param {number} searchId105 * @param {boolean} finished106 */107 _onSearchFinished: function(searchId, finished)108 {109 if (searchId !== this._searchId)110 return;111 if (!this._searchResultsPane)112 this._searchView.nothingFound();113 114 this._searchView.searchFinished(finished);115 },116 117 /**118 * @param {WebInspector.SearchConfig} searchConfig119 */120 startSearch: function(searchConfig)121 {122 this.resetSearch();123 ++this._searchId;124 this._searchConfig = searchConfig;125 // FIXME: this._currentSearchScope should be initialized based on searchConfig126 this._currentSearchScope = this._searchScope;127 var totalSearchResultsCount = this._currentSearchScope.performSearch(searchConfig, this._onSearchResult.bind(this, this._searchId), this._onSearchFinished.bind(this, this._searchId));128 this._searchView.searchStarted(totalSearchResultsCount);129 },130 131 resetSearch: function()132 {133 this.stopSearch();134 if (this._searchResultsPane) {135 this._searchView.resetResults();136 delete this._searchResultsPane;137 }138 },139 140 stopSearch: function()141 {142 if (this._currentSearchScope)143 this._currentSearchScope.stopSearch();144 }145}146/**147 * @constructor148 * @extends {WebInspector.View}149 * @param {WebInspector.AdvancedSearchController} controller150 */151WebInspector.SearchView = function(controller)152{153 WebInspector.View.call(this);154 this.registerRequiredCSS("textViewer.css");155 156 this._controller = controller;157 this.element.className = "search-view";158 this._searchPanelElement = this.element.createChild("div");159 this._searchPanelElement.tabIndex = 0;160 this._searchPanelElement.className = "search-panel";161 this._searchPanelElement.addEventListener("keydown", this._onKeyDown.bind(this), false);162 163 this._searchResultsElement = this.element.createChild("div");164 this._searchResultsElement.className = "search-results";165 166 this._search = this._searchPanelElement.createChild("input");167 this._search.setAttribute("type", "search");168 this._search.addStyleClass("search-config-search");169 this._search.setAttribute("results", "0");170 this._search.setAttribute("size", 20);171 this._ignoreCaseLabel = this._searchPanelElement.createChild("label");172 this._ignoreCaseLabel.addStyleClass("search-config-label");173 this._ignoreCaseCheckbox = this._ignoreCaseLabel.createChild("input");174 this._ignoreCaseCheckbox.setAttribute("type", "checkbox");175 this._ignoreCaseCheckbox.addStyleClass("search-config-checkbox");176 this._ignoreCaseLabel.appendChild(document.createTextNode(WebInspector.UIString("Ignore case")));177 178 this._regexLabel = this._searchPanelElement.createChild("label");179 this._regexLabel.addStyleClass("search-config-label");180 this._regexCheckbox = this._regexLabel.createChild("input");181 this._regexCheckbox.setAttribute("type", "checkbox");182 this._regexCheckbox.addStyleClass("search-config-checkbox");183 this._regexLabel.appendChild(document.createTextNode(WebInspector.UIString("Regular expression")));184 185 this._searchDoneButton = this._searchPanelElement.createChild("button");186 this._searchDoneButton.textContent = WebInspector.UIString("Close");187 this._searchDoneButton.addStyleClass("search-close-button");188 this._searchDoneButton.addEventListener("click", this._closeButtonPressed.bind(this));189 190 this._searchStatusBarElement = document.createElement("div");191 this._searchStatusBarElement.className = "search-status-bar-item";192 this._searchMessageElement = this._searchStatusBarElement.createChild("div");193 this._searchMessageElement.className = "search-status-bar-message";194 this._searchProgressElement = document.createElement("progress");195 this._searchProgressElement.className = "search-status-bar-progress";196 197 this._searchStopButtonItem = document.createElement("div");198 this._searchStopButtonItem.className = "search-status-bar-stop-button-item";199 this._searchStopStatusBarButton = new WebInspector.StatusBarButton(WebInspector.UIString("Stop search"), "search-status-bar-stop-button");200 this._searchStopButtonItem.appendChild(this._searchStopStatusBarButton.element);201 this._searchStopStatusBarButton.addEventListener("click", this._searchStopButtonPressed, this);202 203 this._searchResultsMessageElement = document.createElement("span");204 this._searchResultsMessageElement.className = "search-results-status-bar-message";205 this._load();206}207// Number of recent search queries to store.208WebInspector.SearchView.maxQueriesCount = 20;209WebInspector.SearchView.prototype = {210 /**211 * @return {Array.<Element>}212 */213 get statusBarItems()214 {215 return [this._searchStatusBarElement];216 },217 /**218 * @return {Element}219 */220 get counterElement()221 {222 return this._searchResultsMessageElement;223 },224 /**225 * @return {WebInspector.SearchConfig}226 */227 get searchConfig()228 {229 return new WebInspector.SearchConfig(this._search.value, this._ignoreCaseCheckbox.checked, this._regexCheckbox.checked);230 },231 232 /**233 * @type {WebInspector.SearchResultsPane}234 */235 set resultsPane(resultsPane)236 {237 this.resetResults();238 this._searchResultsElement.appendChild(resultsPane.element);239 },240 241 /**242 * @param {number} totalSearchResultsCount243 */244 searchStarted: function(totalSearchResultsCount)245 {246 this.resetResults();247 this._resetCounters();248 249 this._totalSearchResultsCount = totalSearchResultsCount;250 this._searchMessageElement.textContent = WebInspector.UIString("Searching...");251 this._searchStatusBarElement.appendChild(this._searchProgressElement);252 this._searchStatusBarElement.appendChild(this._searchStopButtonItem);253 this._updateSearchProgress();254 255 this._updateSearchResultsMessage();256 257 if (!this._searchingView)258 this._searchingView = new WebInspector.EmptyView(WebInspector.UIString("Searching..."));259 this._searchingView.show(this._searchResultsElement);260 },261 _updateSearchResultsMessage: function()262 {263 if (this._searchMatchesCount && this._searchResultsCount)264 this._searchResultsMessageElement.textContent = WebInspector.UIString("Found %d matches in %d files.", this._searchMatchesCount, this._nonEmptySearchResultsCount);265 else266 this._searchResultsMessageElement.textContent = "";267 },268 _updateSearchProgress: function()269 {270 this._searchProgressElement.setAttribute("max", this._totalSearchResultsCount);271 this._searchProgressElement.setAttribute("value", this._searchResultsCount);272 },273 resetResults: function()274 {275 if (this._searchingView)276 this._searchingView.detach();277 if (this._notFoundView)278 this._notFoundView.detach();279 this._searchResultsElement.removeChildren();280 },281 _resetCounters: function()282 {283 this._searchMatchesCount = 0;284 this._searchResultsCount = 0;285 this._nonEmptySearchResultsCount = 0;286 },287 nothingFound: function()288 {289 this.resetResults();290 if (!this._notFoundView)291 this._notFoundView = new WebInspector.EmptyView(WebInspector.UIString("No matches found."));292 this._notFoundView.show(this._searchResultsElement);293 this._searchResultsMessageElement.textContent = WebInspector.UIString("No matches found.");294 },295 /**296 * @param {Object} searchResult297 */298 addSearchResult: function(searchResult)299 {300 this._searchMatchesCount += searchResult.searchMatches.length;301 this._searchResultsCount++;302 if (searchResult.searchMatches.length)303 this._nonEmptySearchResultsCount++;304 this._updateSearchResultsMessage();305 this._updateSearchProgress();306 },307 /**308 * @param {boolean} finished309 */310 searchFinished: function(finished)311 {312 this._searchMessageElement.textContent = finished ? WebInspector.UIString("Search finished.") : WebInspector.UIString("Search interrupted.");313 this._searchStatusBarElement.removeChild(this._searchProgressElement);314 this._searchStatusBarElement.removeChild(this._searchStopButtonItem);315 },316 focus: function()317 {318 WebInspector.setCurrentFocusElement(this._search);319 this._search.select();320 },321 wasShown: function()322 {323 this.focus();324 },325 wasHidden: function()326 {327 this._controller.stopSearch();328 },329 /**330 * @param {Event} event331 */332 _onKeyDown: function(event)333 {334 switch (event.keyCode) {335 case WebInspector.KeyboardShortcut.Keys.Enter.code:336 this._onAction();337 break;338 case WebInspector.KeyboardShortcut.Keys.Esc.code:339 this._controller.close();340 event.consume(true);341 break;342 } 343 },344 345 _save: function()346 {347 var searchConfig = new WebInspector.SearchConfig(this.searchConfig.query, this.searchConfig.ignoreCase, this.searchConfig.isRegex); 348 WebInspector.settings.advancedSearchConfig.set(searchConfig);349 },350 351 _load: function()352 {353 var searchConfig = WebInspector.settings.advancedSearchConfig.get();354 this._search.value = searchConfig.query;355 this._ignoreCaseCheckbox.checked = searchConfig.ignoreCase;356 this._regexCheckbox.checked = searchConfig.isRegex;357 },358 _closeButtonPressed: function()359 {360 this._controller.close();361 },362 _searchStopButtonPressed: function()363 {364 this._controller.stopSearch();365 this.focus();366 },367 368 _onAction: function()369 {370 if (!this.searchConfig.query || !this.searchConfig.query.length)371 return;372 373 this._save();374 this._controller.startSearch(this.searchConfig);375 }376}377WebInspector.SearchView.prototype.__proto__ = WebInspector.View.prototype;378/**379 * @constructor380 * @param {string} query381 * @param {boolean} ignoreCase382 * @param {boolean} isRegex383 */384WebInspector.SearchConfig = function(query, ignoreCase, isRegex)385{386 this.query = query;387 this.ignoreCase = ignoreCase;388 this.isRegex = isRegex;389}390/**391 * @interface392 */393WebInspector.SearchScope = function()394{395}396WebInspector.SearchScope.prototype = {397 /**398 * @param {WebInspector.SearchConfig} searchConfig399 * @param {function(Object)} searchResultCallback400 * @param {function(boolean)} searchFinishedCallback401 */402 performSearch: function(searchConfig, searchResultCallback, searchFinishedCallback) { },403 stopSearch: function() { },404 405 /**406 * @param {WebInspector.SearchConfig} searchConfig407 * @return {WebInspector.SearchResultsPane}408 */409 createSearchResultsPane: function(searchConfig) { }410}411/**412 * @constructor413 * @param {WebInspector.SearchConfig} searchConfig414 */415WebInspector.SearchResultsPane = function(searchConfig)416{417 this._searchConfig = searchConfig;418 this.element = document.createElement("div");419}420WebInspector.SearchResultsPane.prototype = {421 /**422 * @return {WebInspector.SearchConfig}423 */424 get searchConfig()425 {426 return this._searchConfig;427 },428 /**429 * @param {Object} searchResult430 */431 addSearchResult: function(searchResult) { }432}433/**434 * @constructor435 * @extends {WebInspector.SearchResultsPane} 436 * @param {WebInspector.SearchConfig} searchConfig437 */438WebInspector.FileBasedSearchResultsPane = function(searchConfig)439{440 WebInspector.SearchResultsPane.call(this, searchConfig);441 442 this._searchResults = [];443 this.element.id ="search-results-pane-file-based";444 445 this._treeOutlineElement = document.createElement("ol");446 this._treeOutlineElement.className = "outline-disclosure";447 this._treeOutlineElement.addStyleClass("search-results-outline-disclosure");448 this.element.appendChild(this._treeOutlineElement);449 this._treeOutline = new TreeOutline(this._treeOutlineElement);450 451 this._matchesExpandedCount = 0;452}453WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount = 20;454WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce = 20;455WebInspector.FileBasedSearchResultsPane.prototype = {456 /**457 * @param {Object} file458 * @param {number} lineNumber459 * @param {number} columnNumber460 * @return {Element}461 */462 createAnchor: function(file, lineNumber, columnNumber) { },463 /**464 * @param {Object} file465 * @return {string}466 */467 fileName: function(file) { },468 /**469 * @param {Object} searchResult470 */471 addSearchResult: function(searchResult)472 {473 this._searchResults.push(searchResult);474 var file = searchResult.file;475 var fileName = this.fileName(file);476 var searchMatches = searchResult.searchMatches;477 var fileTreeElement = this._addFileTreeElement(fileName, searchMatches.length, this._searchResults.length - 1);478 },479 /**480 * @param {Object} searchResult481 * @param {TreeElement} fileTreeElement482 */483 _fileTreeElementExpanded: function(searchResult, fileTreeElement)484 {485 if (fileTreeElement._initialized)486 return;487 488 var toIndex = Math.min(searchResult.searchMatches.length, WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce);489 if (toIndex < searchResult.searchMatches.length) {490 this._appendSearchMatches(fileTreeElement, searchResult, 0, toIndex - 1);491 this._appendShowMoreMatchesElement(fileTreeElement, searchResult, toIndex - 1);492 } else493 this._appendSearchMatches(fileTreeElement, searchResult, 0, toIndex);494 495 fileTreeElement._initialized = true;496 },497 /**498 * @param {TreeElement} fileTreeElement499 * @param {Object} searchResult500 * @param {number} fromIndex501 * @param {number} toIndex502 */503 _appendSearchMatches: function(fileTreeElement, searchResult, fromIndex, toIndex)504 {505 var file = searchResult.file;506 var fileName = this.fileName(file);507 var searchMatches = searchResult.searchMatches;508 509 var regex = createSearchRegex(this._searchConfig.query, !this._searchConfig.ignoreCase, this._searchConfig.isRegex);510 for (var i = fromIndex; i < toIndex; ++i) {511 var lineNumber = searchMatches[i].lineNumber;512 var lineContent = searchMatches[i].lineContent;513 var matchRanges = this._regexMatchRanges(lineContent, regex);514 515 var anchor = this.createAnchor(file, lineNumber, matchRanges[0].offset);516 517 var numberString = numberToStringWithSpacesPadding(lineNumber + 1, 4);518 var lineNumberSpan = document.createElement("span");519 lineNumberSpan.addStyleClass("webkit-line-number");520 lineNumberSpan.addStyleClass("search-match-line-number");521 lineNumberSpan.textContent = numberString;522 anchor.appendChild(lineNumberSpan);523 524 var contentSpan = this._createContentSpan(lineContent, matchRanges);525 anchor.appendChild(contentSpan);526 527 var searchMatchElement = new TreeElement("", null, false);528 fileTreeElement.appendChild(searchMatchElement);529 searchMatchElement.listItemElement.className = "search-match";530 searchMatchElement.listItemElement.appendChild(anchor);531 }532 },533 /**534 * @param {TreeElement} fileTreeElement535 * @param {Object} searchResult536 * @param {number} startMatchIndex537 */538 _appendShowMoreMatchesElement: function(fileTreeElement, searchResult, startMatchIndex)539 {540 var matchesLeftCount = searchResult.searchMatches.length - startMatchIndex;541 var showMoreMatchesText = WebInspector.UIString("Show all matches (%d more).", matchesLeftCount);542 var showMoreMatchesElement = new TreeElement(showMoreMatchesText, null, false);543 fileTreeElement.appendChild(showMoreMatchesElement);544 showMoreMatchesElement.listItemElement.addStyleClass("show-more-matches");545 showMoreMatchesElement.onselect = this._showMoreMatchesElementSelected.bind(this, searchResult, startMatchIndex);546 },547 /**548 * @param {Object} searchResult549 * @param {number} startMatchIndex550 * @param {TreeElement} showMoreMatchesElement551 */552 _showMoreMatchesElementSelected: function(searchResult, startMatchIndex, showMoreMatchesElement)553 {554 var fileTreeElement = showMoreMatchesElement.parent;555 fileTreeElement.removeChild(showMoreMatchesElement);556 this._appendSearchMatches(fileTreeElement, searchResult, startMatchIndex, searchResult.searchMatches.length);557 },558 /**559 * @param {string} fileName560 * @param {number} searchMatchesCount561 * @param {number} searchResultIndex562 */563 _addFileTreeElement: function(fileName, searchMatchesCount, searchResultIndex)564 {565 var fileTreeElement = new TreeElement("", null, true);566 fileTreeElement.toggleOnClick = true;567 fileTreeElement.selectable = false;568 this._treeOutline.appendChild(fileTreeElement);569 fileTreeElement.listItemElement.addStyleClass("search-result");570 var fileNameSpan = document.createElement("span");571 fileNameSpan.className = "search-result-file-name";572 fileNameSpan.textContent = fileName;573 fileTreeElement.listItemElement.appendChild(fileNameSpan);574 var matchesCountSpan = document.createElement("span");575 matchesCountSpan.className = "search-result-matches-count";576 if (searchMatchesCount === 1)577 matchesCountSpan.textContent = WebInspector.UIString("(%d match)", searchMatchesCount);578 else579 matchesCountSpan.textContent = WebInspector.UIString("(%d matches)", searchMatchesCount);580 581 fileTreeElement.listItemElement.appendChild(matchesCountSpan);582 583 var searchResult = this._searchResults[searchResultIndex];584 fileTreeElement.onexpand = this._fileTreeElementExpanded.bind(this, searchResult);585 // Expand until at least certain amount of matches is expanded.586 if (this._matchesExpandedCount < WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount)587 fileTreeElement.expand();588 this._matchesExpandedCount += searchResult.searchMatches.length;589 return fileTreeElement; 590 },591 /**592 * @param {string} lineContent593 * @param {RegExp} regex594 * @return {Array.<Object>}595 */596 _regexMatchRanges: function(lineContent, regex)597 {598 regex.lastIndex = 0;599 var match;600 var offset = 0;601 var matchRanges = [];602 while ((regex.lastIndex < lineContent.length) && (match = regex.exec(lineContent)))603 matchRanges.push({ offset: match.index, length: match[0].length });604 605 return matchRanges;606 },607 608 /**609 * @param {string} lineContent610 * @param {Array.<Object>} matchRanges611 */612 _createContentSpan: function(lineContent, matchRanges)613 {614 var contentSpan = document.createElement("span");615 contentSpan.className = "search-match-content";616 contentSpan.textContent = lineContent;617 WebInspector.highlightRangesWithStyleClass(contentSpan, matchRanges, "highlighted-match");618 return contentSpan;619 }620}621WebInspector.FileBasedSearchResultsPane.prototype.__proto__ = WebInspector.SearchResultsPane.prototype;622/**623 * @constructor624 * @param {Object} file625 * @param {Array.<Object>} searchMatches626 */627WebInspector.FileBasedSearchResultsPane.SearchResult = function(file, searchMatches) {628 this.file = file;629 this.searchMatches = searchMatches;630}631/**632 * @type {WebInspector.AdvancedSearchController}633 */...
views.py
Source:views.py
1import os23from api.utils import Documen_job4import operator5BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))6import pandas as pd7from django.db.models import Q8from django.shortcuts import render, redirect9from django.http import HttpResponse10from django.views import View11from django.http import JsonResponse12from collector.models import Innovation13from searchBar.models import SearchResult, KeywordSearch, Category, Keyword_category, company_info14import json15import csv16import wget17from datetime import datetime as dt1819my_api_key = ''20my_cse_id = ''212223# Create your views here.24class SearchView(View):25 template_name = "searchBar/searchBar.html"26 Return_template = "searchBar/searchResult.html"2728 def get(self, request):29 if request.user.is_authenticated:30 user = request.user.username31 category_result = Category.objects.all()32 return render(request, self.template_name, {'user': user, 'category_result': category_result})3334 def post(self, request):35 if request.user.is_authenticated:36 user = request.user.username37 if 'search' in request.POST:38 for type in request.POST.getlist('type'):39 for Key_word in request.POST.getlist('Search_Anything'):40 Description = request.POST.get('Desc_Search')41 filter_type = type42 store_Keyword = KeywordSearch(keyWord=Key_word, description=Description, filter=filter_type, status=4)43 store_Keyword.save()44 categories = request.POST.getlist('category')45 categories.append('OTHERS')46 for category in categories:47 store_category = Keyword_category(name=category.upper(), keywordId=store_Keyword)48 store_category.save()49 """Run BackGround Job For Panding Task"""50 Keyword_result = KeywordSearch.objects.filter(status=4).values()51 for filter in Keyword_result:52 del filter["created_at"]53 del filter["updated_at"]54 keyword_searchId = KeywordSearch.objects.get(pk=filter['id'])55 keyword_searchId.status = 056 keyword_searchId.save()57 create_lists = [filter]58 Documen_job(create_lists)59 return redirect("searchResult")6061class SearchResultView(View):62 template_name = "searchBar/searchResult.html"6364 def get(self, request):65 if request.user.is_authenticated:66 user = request.user.username67 Keyword_result = KeywordSearch.objects.all().order_by('id')68 final_result = []69 for result in Keyword_result:7071 types_of_text = SearchResult.objects.filter(keywordId_id=result.id).values_list('type_of_text',72 flat=True).distinct()73 total_company_result = company_info.objects.filter(keywordId=result.id).values_list('company_url',74 flat=True).distinct()75 total_stored_result = SearchResult.objects.filter(keywordId_id=result.id).values_list('url',76 flat=True).distinct()77 78 result.total_stored_result = len(total_stored_result) + len(total_company_result)7980 if result.total_crawled_result is not None:81 result.total_crawled_result -= len(total_company_result)82 83 r = list(types_of_text[:1])84 if r:85 result.types_of_text = r[0]86 else:87 result.types_of_text = "TECHNOLOGY"88 if result.status == 0:89 result.status = 'Pending'90 elif result.status == 1:91 result.status = 'Running'92 elif result.status == 2:93 result.status = 'Completed'94 result.total_crawled_result = result.total_stored_result95 final_result.append(result)96 return render(request, self.template_name, {'params': final_result})9798 def post(self, request):99100 if 'load' in request.POST:101 Keyword_result = KeywordSearch.objects.filter(status=0).values()102 # print(Keyword_result)103 keywords_data = []104 for filter in Keyword_result:105 if filter['filter'] == 'Document':106 pass107 # document_Crawl(Keyword_result)108 elif filter['filter'] == 'Website':109 keywords_data.append(filter)110 # test_crawl(keywords_data)111 Documen_job(keywords_data)112 return redirect("searchResult")113 else:114 selected_tests = request.POST['test_list_ids']115 selected_tests = json.loads(selected_tests)116 for i, test in enumerate(selected_tests):117 delete_records = KeywordSearch.objects.get(id=test)118 delete_records.delete()119 return HttpResponse("success")120121class result(View):122 def get(self, request):123 searches = request.GET['search']124 matches = Innovation.objects.all().order_by("title").filter(Q(title__contains=searches)).values()125 return JsonResponse({"models_to_return": list(matches)})126127128class updateResult(View):129 def get(self, request):130 Keyword_result = KeywordSearch.objects.all().values()131 object_result = []132133 for result in Keyword_result:134 if result['status'] == 0:135 result['status'] = 'Pending'136 elif result['status'] == 1:137 result['status'] = 'Running'138 elif result['status'] == 2:139 result['status'] = 'Completed'140 object_result.append(result)141 return JsonResponse({"models_to_return": list(object_result)})142143144class filterResult(View):145 template_name = "searchBar/searchResult.html"146147 def get(self, request, status_id):148 result_list = KeywordSearch.objects.filter(status=status_id).values()149 final_result = []150 for result in result_list:151 if result['status'] == 0:152 result['status'] = 'Pending'153 elif result['status'] == 1:154 result['status'] = 'Running'155 elif result['status'] == 2:156 result['status'] = 'Completed'157 final_result.append(result)158 return render(request, self.template_name, {'params': final_result})159160161"""New Overview page Response"""162163164class SearchListView(View):165 template_name1 = "searchBar/searchList.html"166 template_name2 = "searchBar/weboverview_ref.html"167168 def get(self, request, search_id):169 keywordSearchResult = KeywordSearch.objects.get(id=search_id)170 """Get All Type Of Url_extension"""171 extract_url_extension_type = SearchResult.objects.filter(keywordId_id=search_id).values_list(172 'url_extension_type', flat=True).distinct()173 """Get Keyword_Id To find Results"""174 SearchResults = SearchResult.objects.filter(keywordId_id=search_id).values()175 """Get Type_of_text"""176 types_of_text = SearchResult.objects.filter(keywordId_id=search_id).values_list('type_of_text',177 flat=True).distinct()178 custom_result = {}179180 for filter in extract_url_extension_type:181 filterResults = SearchResult.objects.filter(182 Q(keywordId_id=search_id) & Q(url_extension_type=filter)).values()183 custom_result[filter] = filterResults184 """ Finding Company_Info Witch Stores From Google Map Api"""185 company_data = company_info.objects.filter(keywordId_id=search_id).values()186 return render(request, self.template_name2,187 {'result': SearchResults, 'finalResult': custom_result, 'keywordSearch': keywordSearchResult,188 'types_of_text': types_of_text, 'url_extension': extract_url_extension_type, 'select_type': '',189 'company_details': company_data})190191192"""Replica"""193194195class SearchListTypeView(View):196 template_name1 = "searchBar/searchList.html"197 template_name2 = "searchBar/weboverview_ref.html"198199 def get(self, request, search_id, type):200 keywordSearchResult = KeywordSearch.objects.get(id=search_id)201 desc_is_null = False202 if not keywordSearchResult.description:203 desc_is_null = True204 """Get All Type Of Url_extension"""205 extract_url_extension_type = SearchResult.objects.filter(keywordId_id=search_id).values_list(206 'url_extension_type', flat=True).distinct()207 """Get Keyword_Id To find Results"""208 SearchResults = SearchResult.objects.filter(keywordId_id=search_id).values()209 """Get Type_of_text"""210 types_of_text = SearchResult.objects.filter(keywordId_id=search_id).values_list('type_of_text',211 flat=True).distinct()212213 custom_result = {}214 for filter in extract_url_extension_type:215 filterResults = SearchResult.objects.filter(216 Q(keywordId_id=search_id) & Q(url_extension_type=filter) & Q(type_of_text=type)).order_by(217 '-matched_similarity').values()218 custom_result[filter] = filterResults219 """Finding Company_Info Witch Stores From Google Map Api"""220 company_data = company_info.objects.filter(keywordId_id=search_id).order_by('-matched_similarity').values()221222 return render(request, self.template_name2,223 {'result': SearchResults, 'finalResult': custom_result, 'keywordSearch': keywordSearchResult,224 'types_of_text': types_of_text, 'url_extension': extract_url_extension_type,225 'select_type': type, 'company_details': company_data, 'desc_is_null': desc_is_null})226227228"""Old_Overview page Response"""229230231# class SearchListView(View):232# template_name1 = "searchBar/searchList.html"233# template_name2 = "searchBar/weboverview.html"234#235# def get(self, request, search_id):236# keywordSearchResult = KeywordSearch.objects.get(id=search_id)237# SearchResults = SearchResult.objects.filter(keywordId_id=search_id).values()238# return render(request, self.template_name2, {'result': SearchResults, 'keywordSearch': keywordSearchResult})239240241class ExportCsvView(View):242243 def post(self, request):244 fileName = request.POST['filename'] + '.csv'245 filePath = 'media/' + fileName246 search_id = request.POST['search_id']247 company_search_id = request.POST['company_startup_id']248 check_all_ids = request.POST['check_all_ids']249 search_ids = json.loads(search_id)250 allcheck_ids = json.loads(check_all_ids)251 print(allcheck_ids)252 company_search_ids = json.loads(company_search_id)253254 """Extracting_data For all checked_id with Type"""255 search_result_id_list = []256 for allcheck_id in allcheck_ids:257 SearchResults = SearchResult.objects.filter(keywordId=allcheck_id['keyword_id'],258 url_extension_type=allcheck_id['type'],type_of_text=allcheck_id['types_of_text'],).values_list('id',259 flat=True).distinct().order_by('-matched_similarity')260 for id in SearchResults:261 search_result_id_list.append(id)262 """combine Two search id least"""263 all_searchid = search_result_id_list + search_ids264 """Removing same Id's from list and creating Final list of id's"""265 final_search_ids = []266 for id in all_searchid:267 if int(id) not in final_search_ids:268 final_search_ids.append(id)269 """Writing the csv file"""270 with open(filePath, 'w', newline='') as file:271 writer = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC, delimiter=';')272 writer.writerow(273 ["Title", "URL", "Description", "Type", "Category", "Subcategory", "Rating"])274 275 276 for ids in final_search_ids:277 searchResult = SearchResult.objects.get(pk=ids)278 keywordSearchResult = KeywordSearch.objects.get(pk=searchResult.keywordId_id)279 writer.writerow(280 [searchResult.title, searchResult.url, searchResult.description, keywordSearchResult.filter,281 searchResult.type_of_text, searchResult.url_extension_type, searchResult.matched_similarity])282 283 284 for company_id in company_search_ids:285 searchResult = SearchResult.objects.get(pk=company_id)286 keywordSearchResult = KeywordSearch.objects.get(pk=searchResult.keywordId_id)287 company_details = company_info.objects.get(searchResultId=company_id)288 writer.writerow(289 [company_details.company_name, company_details.company_url, searchResult.description,290 keywordSearchResult.filter,291 searchResult.type_of_text,"COMPANY / STARTUP" , keywordSearchResult.spin])292293 294 return JsonResponse({"filePath": filePath, "fileName": fileName})295296297class DownloadServerView(View):298299 def post(self, request):300 test = '%d%m%Y'301 dte = dt.now().strftime(test)302 fileName = "innovation{}.xlsx".format(dte)303 filePath = 'media/searchresult/' + fileName304 search_id = request.POST['search_id']305 search_ids = json.loads(search_id)306307 with open(filePath, 'w') as file:308 writer = csv.writer(file, )309 writer.writerow(["Title", "URL", "Description"])310 for ids in search_ids:311 searchResult = SearchResult.objects.get(pk=ids)312 writer.writerow([searchResult.title, searchResult.url, searchResult.description])313 return JsonResponse({"filePath": filePath, "fileName": fileName})314315316class DownloadLocallyView(View):317318 def post(self, request):319 innvoation_id = request.POST['innvoation_id']320 # fileName = "innovation{}.xlsx".format(innvoation_id)321 fileName = "innovation_{}.xlsx".format(innvoation_id)322 filePath = 'media/downloadLocally/' + fileName323 search_id = request.POST['search_id']324 search_ids = json.loads(search_id)325 if len(search_id) > 2:326 with open(filePath, 'w') as file:327 writer = csv.writer(file, )328 writer.writerow(["Title", "URL", "Description"])329 # data showing based on search ids330 for ids in search_ids:331 searchResult = SearchResult.objects.get(pk=ids)332 writer.writerow([searchResult.title, searchResult.url, searchResult.description])333334 else:335 with open(filePath, 'w') as file:336 # data showing based on innovation id337 writer = csv.writer(file, )338 writer.writerow(["Title", "URL", "Description"])339 searchResultData = SearchResult.objects.filter(keywordId_id=innvoation_id)340 for search in searchResultData:341 writer.writerow([search.title, search.url, search.description])342343 return JsonResponse({"filePath": filePath, "fileName": fileName})344345346class DownloadFile(View):347348 def post(self, request):349 url = request.POST['linkUrls']350 fileName = request.POST['fileName'];351 filePath = 'media/downloadFileTempLocally/' + request.POST['fileName']352 wget.download(url, filePath)353 return JsonResponse({"filePath": filePath, "fileName": fileName})354355356def delete_duplicate_link(search_id):357 keywordSearchResult = KeywordSearch.objects.get(id=search_id)358 SearchResults = SearchResult.objects.filter(keywordId_id=search_id).values()359 y = []360 t = []361 z = []362 for a in SearchResults:363 if not a["url"] in y:364 y.append(a["url"])365 else:366 t.append(a["url"])367 z.append(a["id"])368 urldel = SearchResult.objects.get(id=a["id"])369 urldel.delete()370
...
test_search.py
Source:test_search.py
...70 'time-ms': 2,71 'cpu-time-ms': 072 }73 }74 def test_cloudsearch_qsearch(self):75 search = SearchConnection(endpoint=HOSTNAME)76 search.search(q='Test')77 args = self.get_args(HTTPretty.last_request.raw_requestline)78 self.assertEqual(args[b'q'], [b"Test"])79 self.assertEqual(args[b'start'], [b"0"])80 self.assertEqual(args[b'size'], [b"10"])81 def test_cloudsearch_bqsearch(self):82 search = SearchConnection(endpoint=HOSTNAME)83 search.search(bq="'Test'")84 args = self.get_args(HTTPretty.last_request.raw_requestline)85 self.assertEqual(args[b'bq'], [b"'Test'"])86 def test_cloudsearch_search_details(self):87 search = SearchConnection(endpoint=HOSTNAME)88 search.search(q='Test', size=50, start=20)89 args = self.get_args(HTTPretty.last_request.raw_requestline)90 self.assertEqual(args[b'q'], [b"Test"])91 self.assertEqual(args[b'size'], [b"50"])92 self.assertEqual(args[b'start'], [b"20"])93 def test_cloudsearch_facet_single(self):94 search = SearchConnection(endpoint=HOSTNAME)95 search.search(q='Test', facet=["Author"])96 args = self.get_args(HTTPretty.last_request.raw_requestline)97 self.assertEqual(args[b'facet'], [b"Author"])98 def test_cloudsearch_facet_multiple(self):99 search = SearchConnection(endpoint=HOSTNAME)100 search.search(q='Test', facet=["author", "cat"])101 args = self.get_args(HTTPretty.last_request.raw_requestline)102 self.assertEqual(args[b'facet'], [b"author,cat"])103 def test_cloudsearch_facet_constraint_single(self):104 search = SearchConnection(endpoint=HOSTNAME)105 search.search(106 q='Test',107 facet_constraints={'author': "'John Smith','Mark Smith'"})108 args = self.get_args(HTTPretty.last_request.raw_requestline)109 self.assertEqual(args[b'facet-author-constraints'],110 [b"'John Smith','Mark Smith'"])111 def test_cloudsearch_facet_constraint_multiple(self):112 search = SearchConnection(endpoint=HOSTNAME)113 search.search(114 q='Test',115 facet_constraints={'author': "'John Smith','Mark Smith'",116 'category': "'News','Reviews'"})117 args = self.get_args(HTTPretty.last_request.raw_requestline)118 self.assertEqual(args[b'facet-author-constraints'],119 [b"'John Smith','Mark Smith'"])120 self.assertEqual(args[b'facet-category-constraints'],121 [b"'News','Reviews'"])122 def test_cloudsearch_facet_sort_single(self):123 search = SearchConnection(endpoint=HOSTNAME)124 search.search(q='Test', facet_sort={'author': 'alpha'})125 args = self.get_args(HTTPretty.last_request.raw_requestline)126 self.assertEqual(args[b'facet-author-sort'], [b'alpha'])127 def test_cloudsearch_facet_sort_multiple(self):128 search = SearchConnection(endpoint=HOSTNAME)129 search.search(q='Test', facet_sort={'author': 'alpha',130 'cat': 'count'})131 args = self.get_args(HTTPretty.last_request.raw_requestline)132 self.assertEqual(args[b'facet-author-sort'], [b'alpha'])133 self.assertEqual(args[b'facet-cat-sort'], [b'count'])134 def test_cloudsearch_top_n_single(self):135 search = SearchConnection(endpoint=HOSTNAME)136 search.search(q='Test', facet_top_n={'author': 5})137 args = self.get_args(HTTPretty.last_request.raw_requestline)138 self.assertEqual(args[b'facet-author-top-n'], [b'5'])139 def test_cloudsearch_top_n_multiple(self):140 search = SearchConnection(endpoint=HOSTNAME)141 search.search(q='Test', facet_top_n={'author': 5, 'cat': 10})142 args = self.get_args(HTTPretty.last_request.raw_requestline)143 self.assertEqual(args[b'facet-author-top-n'], [b'5'])144 self.assertEqual(args[b'facet-cat-top-n'], [b'10'])145 def test_cloudsearch_rank_single(self):146 search = SearchConnection(endpoint=HOSTNAME)147 search.search(q='Test', rank=["date"])148 args = self.get_args(HTTPretty.last_request.raw_requestline)149 self.assertEqual(args[b'rank'], [b'date'])150 def test_cloudsearch_rank_multiple(self):151 search = SearchConnection(endpoint=HOSTNAME)152 search.search(q='Test', rank=["date", "score"])153 args = self.get_args(HTTPretty.last_request.raw_requestline)154 self.assertEqual(args[b'rank'], [b'date,score'])155 def test_cloudsearch_result_fields_single(self):156 search = SearchConnection(endpoint=HOSTNAME)157 search.search(q='Test', return_fields=['author'])158 args = self.get_args(HTTPretty.last_request.raw_requestline)159 self.assertEqual(args[b'return-fields'], [b'author'])160 def test_cloudsearch_result_fields_multiple(self):161 search = SearchConnection(endpoint=HOSTNAME)162 search.search(q='Test', return_fields=['author', 'title'])163 args = self.get_args(HTTPretty.last_request.raw_requestline)164 self.assertEqual(args[b'return-fields'], [b'author,title'])165 def test_cloudsearch_t_field_single(self):166 search = SearchConnection(endpoint=HOSTNAME)167 search.search(q='Test', t={'year': '2001..2007'})168 args = self.get_args(HTTPretty.last_request.raw_requestline)169 self.assertEqual(args[b't-year'], [b'2001..2007'])170 def test_cloudsearch_t_field_multiple(self):171 search = SearchConnection(endpoint=HOSTNAME)172 search.search(q='Test', t={'year': '2001..2007', 'score': '10..50'})173 args = self.get_args(HTTPretty.last_request.raw_requestline)174 self.assertEqual(args[b't-year'], [b'2001..2007'])175 self.assertEqual(args[b't-score'], [b'10..50'])176 def test_cloudsearch_results_meta(self):177 """Check returned metadata is parsed correctly"""178 search = SearchConnection(endpoint=HOSTNAME)179 results = search.search(q='Test')180 # These rely on the default response which is fed into HTTPretty181 self.assertEqual(results.rank, "-text_relevance")182 self.assertEqual(results.match_expression, "Test")183 def test_cloudsearch_results_info(self):184 """Check num_pages_needed is calculated correctly"""185 search = SearchConnection(endpoint=HOSTNAME)186 results = search.search(q='Test')187 # This relies on the default response which is fed into HTTPretty188 self.assertEqual(results.num_pages_needed, 3.0)189 def test_cloudsearch_results_matched(self):190 """191 Check that information objects are passed back through the API192 correctly.193 """194 search = SearchConnection(endpoint=HOSTNAME)195 query = search.build_query(q='Test')196 results = search(query)197 self.assertEqual(results.search_service, search)198 self.assertEqual(results.query, query)199 def test_cloudsearch_results_hits(self):200 """Check that documents are parsed properly from AWS"""201 search = SearchConnection(endpoint=HOSTNAME)202 results = search.search(q='Test')203 hits = list(map(lambda x: x['id'], results.docs))204 # This relies on the default response which is fed into HTTPretty205 self.assertEqual(206 hits, ["12341", "12342", "12343", "12344",207 "12345", "12346", "12347"])208 def test_cloudsearch_results_iterator(self):209 """Check the results iterator"""210 search = SearchConnection(endpoint=HOSTNAME)211 results = search.search(q='Test')212 results_correct = iter(["12341", "12342", "12343", "12344",213 "12345", "12346", "12347"])214 for x in results:215 self.assertEqual(x['id'], next(results_correct))216 def test_cloudsearch_results_internal_consistancy(self):217 """Check the documents length matches the iterator details"""218 search = SearchConnection(endpoint=HOSTNAME)219 results = search.search(q='Test')220 self.assertEqual(len(results), len(results.docs))221 def test_cloudsearch_search_nextpage(self):222 """Check next page query is correct"""223 search = SearchConnection(endpoint=HOSTNAME)224 query1 = search.build_query(q='Test')225 query2 = search.build_query(q='Test')226 results = search(query2)227 self.assertEqual(results.next_page().query.start,228 query1.start + query1.size)229 self.assertEqual(query1.q, query2.q)230class CloudSearchSearchFacetTest(CloudSearchSearchBaseTest):231 response = {232 'rank': '-text_relevance',233 'match-expr': "Test",234 'hits': {235 'found': 30,236 'start': 0,237 'hit': CloudSearchSearchBaseTest.hits238 },239 'info': {240 'rid': 'b7c167f6c2da6d93531b9a7b314ad030b3a74803b4b7797edb905ba5a6a08',241 'time-ms': 2,242 'cpu-time-ms': 0243 },244 'facets': {245 'tags': {},246 'animals': {'constraints': [{'count': '2', 'value': 'fish'}, {'count': '1', 'value': 'lions'}]},247 }248 }249 def test_cloudsearch_search_facets(self):250 #self.response['facets'] = {'tags': {}}251 search = SearchConnection(endpoint=HOSTNAME)252 results = search.search(q='Test', facet=['tags'])253 self.assertTrue('tags' not in results.facets)254 self.assertEqual(results.facets['animals'], {u'lions': u'1', u'fish': u'2'})255class CloudSearchNonJsonTest(CloudSearchSearchBaseTest):256 response = b'<html><body><h1>500 Internal Server Error</h1></body></html>'257 response_status = 500258 content_type = 'text/xml'259 def test_response(self):260 search = SearchConnection(endpoint=HOSTNAME)261 with self.assertRaises(SearchServiceException):262 search.search(q='Test')263class CloudSearchUnauthorizedTest(CloudSearchSearchBaseTest):264 response = b'<html><body><h1>403 Forbidden</h1>foo bar baz</body></html>'265 response_status = 403266 content_type = 'text/html'267 def test_response(self):268 search = SearchConnection(endpoint=HOSTNAME)269 with self.assertRaisesRegexp(SearchServiceException, 'foo bar baz'):270 search.search(q='Test')271class FakeResponse(object):272 status_code = 405273 content = b''274class CloudSearchConnectionTest(unittest.TestCase):275 cloudsearch = True276 def setUp(self):277 super(CloudSearchConnectionTest, self).setUp()278 self.conn = SearchConnection(279 endpoint='test-domain.cloudsearch.amazonaws.com'280 )281 def test_expose_additional_error_info(self):282 mpo = mock.patch.object283 fake = FakeResponse()284 fake.content = b'Nopenopenope'285 # First, in the case of a non-JSON, non-403 error.286 with mpo(requests, 'get', return_value=fake) as mock_request:287 with self.assertRaises(SearchServiceException) as cm:288 self.conn.search(q='not_gonna_happen')289 self.assertTrue('non-json response' in str(cm.exception))290 self.assertTrue('Nopenopenope' in str(cm.exception))291 # Then with JSON & an 'error' key within.292 fake.content = json.dumps({293 'error': "Something went wrong. Oops."294 }).encode('utf-8')295 with mpo(requests, 'get', return_value=fake) as mock_request:296 with self.assertRaises(SearchServiceException) as cm:297 self.conn.search(q='no_luck_here')298 self.assertTrue('Unknown error' in str(cm.exception))...
SearchView.js
Source:SearchView.js
1// Copyright 2014 The Chromium Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4Search.SearchView = class extends UI.VBox {5 /**6 * @param {string} settingKey7 */8 constructor(settingKey) {9 super(true);10 this.setMinimumSize(0, 40);11 this.registerRequiredCSS('search/searchView.css');12 this._focusOnShow = false;13 this._isIndexing = false;14 this._searchId = 1;15 this._searchMatchesCount = 0;16 this._searchResultsCount = 0;17 this._nonEmptySearchResultsCount = 0;18 /** @type {?UI.Widget} */19 this._searchingView = null;20 /** @type {?UI.Widget} */21 this._notFoundView = null;22 /** @type {?Search.SearchConfig} */23 this._searchConfig = null;24 /** @type {?Search.SearchConfig} */25 this._pendingSearchConfig = null;26 /** @type {?Search.SearchResultsPane} */27 this._searchResultsPane = null;28 /** @type {?UI.ProgressIndicator} */29 this._progressIndicator = null;30 /** @type {?UI.Widget} */31 this._visiblePane = null;32 this.contentElement.classList.add('search-view');33 this._searchPanelElement = this.contentElement.createChild('div', 'search-drawer-header');34 this._searchPanelElement.addEventListener('keydown', this._onKeyDown.bind(this), false);35 this._searchResultsElement = this.contentElement.createChild('div');36 this._searchResultsElement.className = 'search-results';37 const searchContainer = createElement('div');38 searchContainer.style.flex = 'auto';39 searchContainer.style.justifyContent = 'start';40 searchContainer.style.maxWidth = '300px';41 this._search = UI.HistoryInput.create();42 searchContainer.appendChild(this._search);43 this._search.placeholder = Common.UIString('Search');44 this._search.setAttribute('type', 'text');45 this._search.setAttribute('results', '0');46 this._search.setAttribute('size', 42);47 const searchItem = new UI.ToolbarItem(searchContainer);48 const toolbar = new UI.Toolbar('search-toolbar', this._searchPanelElement);49 this._matchCaseButton = Search.SearchView._appendToolbarToggle(toolbar, 'Aa', Common.UIString('Match Case'));50 this._regexButton =51 Search.SearchView._appendToolbarToggle(toolbar, '.*', Common.UIString('Use Regular Expression'));52 toolbar.appendToolbarItem(searchItem);53 const refreshButton = new UI.ToolbarButton(Common.UIString('Refresh'), 'largeicon-refresh');54 const clearButton = new UI.ToolbarButton(Common.UIString('Clear'), 'largeicon-clear');55 toolbar.appendToolbarItem(refreshButton);56 toolbar.appendToolbarItem(clearButton);57 refreshButton.addEventListener(UI.ToolbarButton.Events.Click, this._onAction.bind(this));58 clearButton.addEventListener(UI.ToolbarButton.Events.Click, () => {59 this._resetSearch();60 this._onSearchInputClear();61 });62 const searchStatusBarElement = this.contentElement.createChild('div', 'search-toolbar-summary');63 this._searchMessageElement = searchStatusBarElement.createChild('div', 'search-message');64 this._searchProgressPlaceholderElement = searchStatusBarElement.createChild('div', 'flex-centered');65 this._searchResultsMessageElement = searchStatusBarElement.createChild('div', 'search-message');66 this._advancedSearchConfig = Common.settings.createLocalSetting(67 settingKey + 'SearchConfig', new Search.SearchConfig('', true, false).toPlainObject());68 this._load();69 /** @type {?Search.SearchScope} */70 this._searchScope = null;71 }72 /**73 * @param {!UI.Toolbar} toolbar74 * @param {string} text75 * @param {string} tooltip76 * @return {!UI.ToolbarToggle}77 */78 static _appendToolbarToggle(toolbar, text, tooltip) {79 const toggle = new UI.ToolbarToggle(tooltip);80 toggle.setText(text);81 toggle.addEventListener(UI.ToolbarButton.Events.Click, () => toggle.setToggled(!toggle.toggled()));82 toolbar.appendToolbarItem(toggle);83 return toggle;84 }85 /**86 * @return {!Search.SearchConfig}87 */88 _buildSearchConfig() {89 return new Search.SearchConfig(this._search.value, !this._matchCaseButton.toggled(), this._regexButton.toggled());90 }91 /**92 * @protected93 * @param {string} queryCandidate94 * @param {boolean=} searchImmediately95 */96 async toggle(queryCandidate, searchImmediately) {97 if (queryCandidate)98 this._search.value = queryCandidate;99 if (this.isShowing())100 this.focus();101 else102 this._focusOnShow = true;103 this._initScope();104 if (searchImmediately)105 this._onAction();106 else107 this._startIndexing();108 }109 /**110 * @protected111 * @return {!Search.SearchScope}112 */113 createScope() {114 throw new Error('Not implemented');115 }116 _initScope() {117 this._searchScope = this.createScope();118 }119 /**120 * @override121 */122 wasShown() {123 if (this._focusOnShow) {124 this.focus();125 this._focusOnShow = false;126 }127 }128 _onIndexingFinished() {129 const finished = !this._progressIndicator.isCanceled();130 this._progressIndicator.done();131 this._progressIndicator = null;132 this._isIndexing = false;133 this._indexingFinished(finished);134 if (!finished)135 this._pendingSearchConfig = null;136 if (!this._pendingSearchConfig)137 return;138 const searchConfig = this._pendingSearchConfig;139 this._pendingSearchConfig = null;140 this._innerStartSearch(searchConfig);141 }142 _startIndexing() {143 this._isIndexing = true;144 if (this._progressIndicator)145 this._progressIndicator.done();146 this._progressIndicator = new UI.ProgressIndicator();147 this._searchMessageElement.textContent = Common.UIString('Indexing\u2026');148 this._progressIndicator.show(this._searchProgressPlaceholderElement);149 this._searchScope.performIndexing(150 new Common.ProgressProxy(this._progressIndicator, this._onIndexingFinished.bind(this)));151 }152 _onSearchInputClear() {153 this._search.value = '';154 this.focus();155 }156 /**157 * @param {number} searchId158 * @param {!Search.SearchResult} searchResult159 */160 _onSearchResult(searchId, searchResult) {161 if (searchId !== this._searchId || !this._progressIndicator)162 return;163 if (this._progressIndicator && this._progressIndicator.isCanceled()) {164 this._onIndexingFinished();165 return;166 }167 this._addSearchResult(searchResult);168 if (!searchResult.matchesCount())169 return;170 if (!this._searchResultsPane) {171 this._searchResultsPane = new Search.SearchResultsPane(/** @type {!Search.SearchConfig} */ (this._searchConfig));172 this._showPane(this._searchResultsPane);173 }174 this._searchResultsPane.addSearchResult(searchResult);175 }176 /**177 * @param {number} searchId178 * @param {boolean} finished179 */180 _onSearchFinished(searchId, finished) {181 if (searchId !== this._searchId || !this._progressIndicator)182 return;183 if (!this._searchResultsPane)184 this._nothingFound();185 this._searchFinished(finished);186 this._searchConfig = null;187 }188 /**189 * @param {!Search.SearchConfig} searchConfig190 */191 async _start