zigbee2mqtt-frontend 0.7.5 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/assets/{Availability-ea995265.js → Availability-7d1ad67a.js} +1 -1
- package/dist/assets/Availability-7d1ad67a.js.br +0 -0
- package/dist/assets/CodeEditor-162d545c.js +26 -0
- package/dist/assets/CodeEditor-162d545c.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-020b39b8.js +1 -0
- package/dist/assets/ConnectedDevicePage-020b39b8.js.br +0 -0
- package/dist/assets/{ConnectedMap-8e9df41d.js → ConnectedMap-d32cda0c.js} +1 -1
- package/dist/assets/ConnectedMap-d32cda0c.js.br +0 -0
- package/dist/assets/{Dashboard-da847986.js → Dashboard-f146f49a.js} +1 -1
- package/dist/assets/Dashboard-f146f49a.js.br +0 -0
- package/dist/assets/{DashboardDevice-729bd8ca.js → DashboardDevice-fd421c8c.js} +1 -1
- package/dist/assets/DashboardDevice-fd421c8c.js.br +0 -0
- package/dist/assets/{DashboardFeatureWrapper-9ec37019.js → DashboardFeatureWrapper-8ac440be.js} +1 -1
- package/dist/assets/DashboardFeatureWrapper-8ac440be.js.br +0 -0
- package/dist/assets/{DeviceImage-66f70063.js → DeviceImage-48997860.js} +1 -1
- package/dist/assets/DeviceImage-48997860.js.br +0 -0
- package/dist/assets/{GroupPage-c80cd21b.js → GroupPage-10f47920.js} +1 -1
- package/dist/assets/GroupPage-10f47920.js.br +0 -0
- package/dist/assets/{ReactTableCom-1c36e1db.js → ReactTableCom-b480890d.js} +1 -1
- package/dist/assets/ReactTableCom-b480890d.js.br +0 -0
- package/dist/assets/{RecallRemove-ea02e389.js → RecallRemove-06f1f30a.js} +1 -1
- package/dist/assets/RecallRemove-06f1f30a.js.br +0 -0
- package/dist/assets/{_baseSet-f94f15e8.js → _baseSet-74ca6149.js} +1 -1
- package/dist/assets/{_getAllKeysIn-a7208d0f.js → _getAllKeysIn-ace9893e.js} +1 -1
- package/dist/assets/{bootstrap-5.esm-ff1b56af.js → bootstrap-5.esm-bb33d65c.js} +1 -1
- package/dist/assets/bootstrap-5.esm-bb33d65c.js.br +0 -0
- package/dist/assets/fa-brands-400-bc844b5b.ttf +0 -0
- package/dist/assets/fa-brands-400-c411f119.woff2 +0 -0
- package/dist/assets/fa-regular-400-64f9fb62.ttf +0 -0
- package/dist/assets/fa-regular-400-c732f106.woff2 +0 -0
- package/dist/assets/fa-solid-900-1f0189e0.woff2 +0 -0
- package/dist/assets/fa-solid-900-31f099c1.ttf +0 -0
- package/dist/assets/fa-v4compatibility-2aca24b3.woff2 +0 -0
- package/dist/assets/fa-v4compatibility-a6274a12.ttf +0 -0
- package/dist/assets/index-0f5e7faa.css +5 -0
- package/dist/assets/index-0f5e7faa.css.br +0 -0
- package/dist/assets/{index-ed7c8a41.js → index-3b9ed763.js} +1 -1
- package/dist/assets/index-3b9ed763.js.br +0 -0
- package/dist/assets/{index-f121818a.js → index-51f2b290.js} +1 -1
- package/dist/assets/index-51f2b290.js.br +0 -0
- package/dist/assets/{index-b2de2657.js → index-53072883.js} +1 -1
- package/dist/assets/index-53072883.js.br +0 -0
- package/dist/assets/index-5d073519.js +1 -0
- package/dist/assets/index-5d073519.js.br +0 -0
- package/dist/assets/{index-72a1e3cc.js → index-860ee670.js} +1 -1
- package/dist/assets/index-860ee670.js.br +0 -0
- package/dist/assets/{index-1b114912.js → index-8e5ef2b0.js} +1 -1
- package/dist/assets/{index-afca9ace.js → index-8f39548e.js} +1 -1
- package/dist/assets/index-8f39548e.js.br +0 -0
- package/dist/assets/{index-caf43355.js → index-b3404931.js} +2 -2
- package/dist/assets/index-b3404931.js.br +0 -0
- package/dist/assets/{index-a73334eb.js → index-c8da3237.js} +1 -1
- package/dist/assets/index-c8da3237.js.br +0 -0
- package/dist/assets/{index-6f55efcd.js → index-df1b6001.js} +54 -54
- package/dist/assets/index-df1b6001.js.br +0 -0
- package/dist/assets/{intersection-62601d15.js → intersection-c3d96feb.js} +1 -1
- package/dist/assets/intersection-c3d96feb.js.br +0 -0
- package/dist/assets/{isEqual-0689f192.js → isEqual-d6e4d58f.js} +1 -1
- package/dist/assets/{jszip.min-3e1aa67f.js → jszip.min-467e2c1e.js} +1 -1
- package/dist/assets/jszip.min-467e2c1e.js.br +0 -0
- package/dist/assets/{persist-86b6ee4d.js → persist-44dd6f07.js} +1 -1
- package/dist/assets/persist-44dd6f07.js.br +0 -0
- package/dist/assets/{rjsf-translation-fields-6c5e3fa7.js → rjsf-translation-fields-3cb3ae9d.js} +1 -1
- package/dist/assets/{spinner-6dd6f61f.js → spinner-350c4bef.js} +1 -1
- package/dist/assets/{vendor-links-5e39df0f.js → vendor-links-50c24297.js} +1 -1
- package/dist/assets/vendor-links-50c24297.js.br +0 -0
- package/dist/index.html +2 -2
- package/dist/index.html.br +0 -0
- package/package.json +6 -6
- package/dist/assets/Availability-ea995265.js.br +0 -0
- package/dist/assets/CodeEditor-b2b42cbe.js +0 -28
- package/dist/assets/CodeEditor-b2b42cbe.js.br +0 -0
- package/dist/assets/ConnectedDevicePage-4eb4fbd7.js +0 -1
- package/dist/assets/ConnectedDevicePage-4eb4fbd7.js.br +0 -0
- package/dist/assets/ConnectedMap-8e9df41d.js.br +0 -0
- package/dist/assets/Dashboard-da847986.js.br +0 -0
- package/dist/assets/DashboardDevice-729bd8ca.js.br +0 -0
- package/dist/assets/DashboardFeatureWrapper-9ec37019.js.br +0 -0
- package/dist/assets/DeviceImage-66f70063.js.br +0 -0
- package/dist/assets/GroupPage-c80cd21b.js.br +0 -0
- package/dist/assets/ReactTableCom-1c36e1db.js.br +0 -0
- package/dist/assets/RecallRemove-ea02e389.js.br +0 -0
- package/dist/assets/bootstrap-5.esm-ff1b56af.js.br +0 -0
- package/dist/assets/fa-brands-400-003f1154.ttf +0 -0
- package/dist/assets/fa-brands-400-faae6fc0.woff2 +0 -0
- package/dist/assets/fa-regular-400-7d81a1a7.ttf +0 -0
- package/dist/assets/fa-regular-400-9169d8be.woff2 +0 -0
- package/dist/assets/fa-solid-900-886c8611.woff2 +0 -0
- package/dist/assets/fa-solid-900-cea79b34.ttf +0 -0
- package/dist/assets/fa-v4compatibility-335fd7d9.woff2 +0 -0
- package/dist/assets/fa-v4compatibility-455e8e72.ttf +0 -0
- package/dist/assets/index-654e4a69.css +0 -5
- package/dist/assets/index-654e4a69.css.br +0 -0
- package/dist/assets/index-6f55efcd.js.br +0 -0
- package/dist/assets/index-72a1e3cc.js.br +0 -0
- package/dist/assets/index-a73334eb.js.br +0 -0
- package/dist/assets/index-afca9ace.js.br +0 -0
- package/dist/assets/index-b2de2657.js.br +0 -0
- package/dist/assets/index-caf43355.js.br +0 -0
- package/dist/assets/index-e9af120b.js +0 -1
- package/dist/assets/index-e9af120b.js.br +0 -0
- package/dist/assets/index-ed7c8a41.js.br +0 -0
- package/dist/assets/index-f121818a.js.br +0 -0
- package/dist/assets/intersection-62601d15.js.br +0 -0
- package/dist/assets/jszip.min-3e1aa67f.js.br +0 -0
- package/dist/assets/persist-86b6ee4d.js.br +0 -0
- package/dist/assets/vendor-links-5e39df0f.js.br +0 -0
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
import{w as C,r as f,j as e,D as P,N as G,e as X,u as N,M as Z,f as ee,h as se,k as te,B as j,c as S,a as A,i as L,C as U,b as ne,E as T,d as ie,G as H,m as R,p as re,H as oe,x as ce,_ as ae,R as z,A as le,z as de,n as ue}from"./index-6f55efcd.js";import{F as me,a as he,b as pe,w as ve,T as ge}from"./bootstrap-5.esm-ff1b56af.js";import{D as xe,a as fe,A as be}from"./Availability-ea995265.js";import{D as je}from"./DeviceImage-66f70063.js";import{V as Ne,M as _e}from"./vendor-links-5e39df0f.js";import{L as Ce,D as F,P as Se}from"./index-72a1e3cc.js";import{E as y,D as Ae,A as Ie,R as we}from"./RecallRemove-ea02e389.js";import{F as Re,a as V,T as Ee}from"./DashboardFeatureWrapper-9ec37019.js";import{T as ke,D as Pe}from"./rjsf-translation-fields-6c5e3fa7.js";import{L as ye,A as Oe}from"./index-a73334eb.js";import"./_getAllKeysIn-a7208d0f.js";import"./isEqual-0689f192.js";import"./intersection-62601d15.js";import"./index-1b114912.js";import"./powerSourceTypeToTranslationKey-452dac81.js";import"./_baseSet-f94f15e8.js";const W={"device-pic":"_device-pic_iu1xf_1","small-nav":"_small-nav_iu1xf_5"};function $e(s){const{allDevices:t,currentDevice:n,tab:r="info",t:i}=s,[o,c]=f.useState(""),a=Object.values(t).filter(d=>d.friendly_name.toLowerCase().includes(o.toLowerCase())&&d.ieee_address!==n.ieee_address);return e.jsx("h1",{className:"h3",children:e.jsxs(P,{children:[e.jsxs(P.Toggle,{"aria-label":i("select_a_device"),variant:"",size:"lg",children:[n.friendly_name," "]}),e.jsxs(P.Menu,{children:[e.jsx(me.Control,{autoFocus:!0,className:"mx-3 my-2 w-auto",placeholder:i("type_to_filter"),onChange:d=>c(d.target.value),value:o}),e.jsx(Me,{devices:a,currentDevice:n,tab:r,setSearchTerm:c})]})]})})}const Be=C("devicePage")($e);function Me({devices:s,currentDevice:t,tab:n,setSearchTerm:r}){return e.jsx(e.Fragment,{children:Object.values(s).map(i=>e.jsx(P.Item,{active:t.ieee_address===i.ieee_address,href:`#/device/${i.ieee_address}/${n}`,onClick:()=>r(""),children:i.friendly_name},i.ieee_address))})}const Le=s=>[{translationKey:"about",url:`/device/${s}/info`},{translationKey:"exposes",url:`/device/${s}/exposes`},{translationKey:"bind",url:`/device/${s}/bind`},{translationKey:"reporting",url:`/device/${s}/reporting`},{translationKey:"settings",url:`/device/${s}/settings`},{translationKey:"settings_specific",url:`/device/${s}/settings-specific`},{translationKey:"state",url:`/device/${s}/state`},{translationKey:"clusters",url:`/device/${s}/clusters`},{translationKey:"scene",url:`/device/${s}/scene`},{translationKey:"dev_console",url:`/device/${s}/dev-console`}],Ue=G.create(s=>{const t=X(),{device:n,setDeviceDescription:r}=s,[i,o]=f.useState(n.description),{t:c}=N(["zigbee","common"]),a=async()=>{await r(n.friendly_name,i),t.remove()};return e.jsxs(Z,{isOpen:t.visible,children:[e.jsxs(ee,{children:[e.jsx("h3",{children:c("update_description")}),e.jsx("small",{children:n.friendly_name})]}),e.jsx(se,{children:e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:c("description")}),e.jsx("textarea",{rows:3,onChange:d=>o(d.target.value),className:"form-control",value:i})]})})})}),e.jsxs(te,{children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:t.remove,children:c("common:close")}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:a,children:c("zigbee:save_description")})]})]})}),Fe=s=>{const{device:t,setDeviceDescription:n}=s,{t:r}=N(["zigbee","common"]);return e.jsx(j,{className:"btn btn-link btn-sm d-md-inline-block mx-1",onClick:()=>G.show(Ue,{device:t,setDeviceDescription:n}),title:r("edit_description"),children:e.jsx("i",{className:"fa fa-edit"})})},Ke=/\[(.*?)]\((.*?)\)/;class De extends f.Component{render(){var x;const{device:t,deviceStates:n,bridgeInfo:r,availability:i,t:o}=this.props,{configureDevice:c,renameDevice:a,removeDevice:d,setDeviceDescription:u,interviewDevice:h}=this.props,m=!!((x=r.config)!=null&&x.homeassistant),v=n[t.friendly_name]??{},g=[{translationKey:"friendly_name",render:l=>e.jsxs("dd",{className:"col-12 col-md-7",children:[e.jsx("strong",{children:l.friendly_name}),e.jsx(fe,{device:l,renameDevice:a,homeassistantEnabled:m,style:"link"})]})},{translationKey:"zigbee:description",render:l=>e.jsxs("dd",{className:"col-12 col-md-7",children:[e.jsx("pre",{style:{display:"inline"},children:l.description}),e.jsx(Fe,{device:l,setDeviceDescription:u,style:"link"})]})},{translationKey:"last_seen",render:(l,p,b)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(Ce,{lastSeenType:b.config.advanced.last_seen,state:p})})},{translationKey:"avaliability:avaliability",render:(l,p,b,I)=>{var k;const{config:_}=b,M=!!_.availability,O=((k=_.devices[l.ieee_address])==null?void 0:k.availability)!==!1;return e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(be,{availability:I,disabled:L(l,_),availabilityFeatureEnabled:M,availabilityEnabledForDevice:O})})}},{key:"type",translationKey:"device_type"},{key:"model_id",translationKey:"zigbee_model"},{key:"manufacturer",translationKey:"zigbee_manufacturer"},{key:"definition.description",translationKey:"description",if:"supported",render:l=>{var I,_;const p=Ke.exec((I=l.definition)==null?void 0:I.description);let b=e.jsx("span",{children:(_=l.definition)==null?void 0:_.description});if(p){const[M,O,k]=p;b=e.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:k,children:O})}return e.jsx("dd",{className:"col-12 col-md-7",children:b})}},{render:(l,p,b,I,_)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsxs("p",{className:ne("mb-0","font-weight-bold",{"text-danger":!l.supported,"text-success":l.supported}),children:[e.jsx(F,{name:"supported",value:l.supported}),!l.supported&&e.jsxs(e.Fragment,{children:[" ",e.jsxs("a",{target:"_blank",rel:"noopener noreferrer",href:T,children:["(",_("how_to_add_support"),")"]})]})]})}),translationKey:"support_status"},{key:"ieee_address",translationKey:"ieee_address"},{key:"network_address",translationKey:"network_address",render:l=>e.jsxs("dd",{className:"col-12 col-md-7",children:[e.jsx("abbr",{title:o("network_address_hex"),children:ie(l.network_address)})," / ",e.jsx("abbr",{title:o("network_address_dec"),children:l.network_address})]})},{key:"date_code",translationKey:"firmware_build_date",if:"date_code"},{key:"software_build_id",translationKey:"firmware_version",if:"software_build_id"},{key:"definition.vendor",translationKey:"manufacturer",if:"supported",render:l=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(Ne,{device:l})})},{key:"definition.model",translationKey:"model",if:"supported",render:l=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(_e,{device:l})})},{translationKey:"power",render:(l,p)=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(Se,{showLevel:!0,device:l,deviceState:p})})},{translationKey:"interview_completed",render:l=>e.jsx("dd",{className:"col-12 col-md-7",children:e.jsx(F,{name:"interview_completed",value:l.interview_completed})})}];return e.jsxs(f.Fragment,{children:[e.jsx("div",{className:"d-flex justify-content-center",children:e.jsx(je,{className:`card-img-top w-auto ${W["device-pic"]}`,device:t,deviceStatus:v,disabled:L(t,r.config)})}),e.jsx("dl",{className:"row",children:g.filter(l=>l.if===void 0||U(t,l.if,!1)).map(l=>e.jsxs(f.Fragment,{children:[e.jsx("dt",{className:"col-12 col-md-5",children:o(l.translationKey)}),l.render?l.render(t,v,r,i[t.friendly_name]??"offline",o):e.jsx("dd",{className:"col-12 col-md-7",children:U(t,l.key)})]},l.translationKey))}),e.jsx(xe,{device:t,state:v,homeassistantEnabled:m,configureDevice:c,renameDevice:a,removeDevice:d,setDeviceDescription:u,interviewDevice:h})]})}}const Ge=["deviceStates","bridgeInfo","availability"],Te=C("zigbee")(S(Ge,A)(De)),He=Te,$={genPowerCfg:"PowerCfg",genScenes:"Scenes",genOnOff:"OnOff",genLevelCtrl:"LevelCtrl",lightingColorCtrl:"LColorCtrl",closuresWindowCovering:"Closures",genMultistateInput:"MultistateInput",genGroups:"Groups",genOta:"Ota",touchlink:"Touchlink",genIdentify:"Identify",msTemperatureMeasurement:"Temperature",msIlluminanceMeasurement:"Illuminance",msRelativeHumidity:"Humidity",msPressureMeasurement:"Pressure",msSoilMoisture:"Soil Moisture"};var E=(s=>(s[s.MULTIPLE=0]="MULTIPLE",s[s.SINGLE=1]="SINGLE",s))(E||{});function q(s){return s.length>0&&typeof s[0]!="string"}function ze(s){const[t]=f.useState(H(5)),{clusters:n=[],onChange:r,label:i,value:o,disabled:c}=s;let a=[];const d=u=>{const{checked:h,name:m}=u.target;let v=[...o];h?v.push(m):v=v.filter(g=>g!==m),r(v)};return q(n)?console.warn("Not implemented"):a=[...n].sort((u,h)=>u.toString().localeCompare(h.toString())).map(u=>e.jsxs("div",{className:"form-check form-check-inline",children:[e.jsx("input",{className:"form-check-input",type:"checkbox",checked:o.includes(u),name:u,id:`${t}_${u}`,value:u,onChange:d,disabled:c}),e.jsx("label",{className:"form-check-label",htmlFor:`${t}_${u}`,title:u,children:$[u]??u})]},u)),e.jsxs("div",{className:"form-group",children:[i&&e.jsx("label",{className:"form-label",children:i}),e.jsx("div",{className:"form-control border-0",children:a})]})}function Ve(s){const[t]=f.useState(H(5)),{clusters:n=[],onChange:r,value:i,label:o,disabled:c,...a}=s,{t:d}=N(["zigbee","common"]),u=[e.jsx("option",{hidden:!0,children:d("select_cluster")},"hidden")],h=m=>{r(m.target.value)};return q(n)?n.forEach(m=>{const v=m.clusters.map(g=>e.jsx("option",{value:g,children:$[g]??g},g));v.length===0&&v.push(e.jsx("option",{disabled:!0,children:d("none")},"none")),u.push(e.jsx("optgroup",{label:d(m.name),children:v},m.name))}):n.forEach(m=>{u.push(e.jsx("option",{value:m,children:$[m]??m},m))}),e.jsxs("div",{className:"form-group",children:[o&&e.jsx("label",{htmlFor:t,className:"form-label",children:o}),e.jsx("select",{id:t,value:i,className:"form-select",onChange:h,disabled:c,...a,children:u})]})}function B(s){const{pickerType:t,onChange:n,clusters:r,value:i,label:o,disabled:c,...a}=s;return t===E.MULTIPLE?e.jsx(ze,{onChange:n,clusters:r,value:i,disabled:c,label:o,...a}):e.jsx(Ve,{onChange:n,clusters:r,value:i,disabled:c,label:o,...a})}const We=(s,t,n)=>{var r;return s.target.type==="group"?n.find(i=>i.id===s.target.id):t[(r=s.target)==null?void 0:r.ieee_address]};class qe extends f.Component{constructor(){super(...arguments),this.state={stateRule:{}},this.setSourceEp=t=>{const{stateRule:n}=this.state;n.source.endpoint=t,this.setState({stateRule:n})},this.setDestination=(t,n)=>{const{stateRule:r}=this.state;if(n==="device"){const i=R(t);r.target.ieee_address=t.ieee_address,r.target.type="endpoint",r.target.endpoint=i[0],delete r.target.id}else n==="group"&&(r.target.id=t.id,r.target.type="group",delete r.target.ieee_address);r.clusters=[],this.setState({stateRule:r})},this.setDestinationEp=t=>{const{stateRule:n}=this.state;n.target.endpoint=t,n.clusters=[],this.setState({stateRule:n})},this.setClusters=t=>{const{stateRule:n}=this.state;n.clusters=t,this.setState({stateRule:n})},this.onBindOrUnBindClick=t=>{const{onUnBind:n,onBind:r}=this.props,{from:i,to:o,clusters:c}=this.getBidingParams();t=="Bind"?r({from:i,to:o,clusters:c}):n({from:i,to:o,clusters:c})}}static getDerivedStateFromProps(t,n){const{rule:r}=t;return{stateRule:r}}getBidingParams(){var a;const{device:t,groups:n,devices:r}=this.props,{stateRule:i}=this.state,o=`${t.friendly_name}/${i.source.endpoint}`;let c="";if(i.target.type==="group")c=`${n.find(u=>u.id===i.target.id).friendly_name}`;else if(i.target.type==="endpoint"){const d=r[(a=i.target)==null?void 0:a.ieee_address];d.type==="Coordinator"?c=`${d.friendly_name}`:c=`${d.friendly_name}/${i.target.endpoint}`}return{from:o,to:c,clusters:i.clusters}}isValidRule(){const{stateRule:t}=this.state;let n;return t.target.type=="endpoint"?n=t.source.endpoint&&t.target.ieee_address&&t.target.endpoint&&t.clusters.length>0:t.target.type=="group"&&(n=t.source.endpoint&&t.target.id&&t.clusters.length>0),!!n}render(){const{devices:t,groups:n,device:r,t:i}=this.props,{stateRule:o}=this.state,c=R(r),a=We(o,t,n),d=R(a),u=new Set(o.clusters),h=r.endpoints[o.source.endpoint],m=o.target.type==="endpoint"&&o.target.endpoint?a==null?void 0:a.endpoints[o.target.endpoint]:void 0,v=o.target.type==="group"||(a==null?void 0:a.type)=="Coordinator";if(h&&(m||v))for(const g of[...h.clusters.input,...h.clusters.output]){const x=h.clusters.input.includes(g)&&(m==null?void 0:m.clusters.output.includes(g)),l=h.clusters.output.includes(g)&&(m==null?void 0:m.clusters.input.includes(g));(x||l||v)&&u.add(g)}return e.jsxs("div",{className:"row pb-2 border-bottom",children:[e.jsx("div",{className:"col-md-2",children:e.jsx(y,{label:i("source_endpoint"),disabled:!o.isNew,values:c,value:o.source.endpoint,onChange:this.setSourceEp})}),e.jsx("div",{className:"col-md-2",children:e.jsx(Ae,{label:i("destination"),disabled:!o.isNew,value:o.target.ieee_address||o.target.id,devices:t,groups:n,onChange:this.setDestination})}),e.jsx("div",{className:"col-md-2",children:o.target.type==="endpoint"?e.jsx(y,{label:i("destination_endpoint"),disabled:!o.isNew,values:d,value:o.target.endpoint,onChange:this.setDestinationEp}):null}),e.jsx("div",{className:"col-md-4",children:e.jsx(B,{label:i("clusters"),pickerType:E.MULTIPLE,clusters:Array.from(u),value:o.clusters,onChange:this.setClusters})}),e.jsx("div",{className:"col-md-2",children:e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:"Actions"}),e.jsx("div",{className:"form-control border-0",children:e.jsxs("div",{className:"btn-group btn-group-sm",children:[e.jsxs(j,{item:"Bind",disabled:!this.isValidRule(),title:i("bind"),className:"btn btn-primary",onClick:this.onBindOrUnBindClick,children:[i("bind")," ",e.jsx("i",{className:"fa fa-heart"})]}),e.jsxs(j,{item:"Unbind",disabled:!o.isNew&&!this.isValidRule(),title:i("unbind"),className:"btn btn-danger",onClick:this.onBindOrUnBindClick,children:[e.jsx("i",{className:"fa fa-heart-broken"})," ",i("unbind")]})]})})]})})]})}}const Je=C(["common","zigbee"])(qe),Ye=s=>`${s.source.endpoint}-${s.isNew}${s.source.ieee_address}-${s.target.id}-${s.target.ieee_address}-${s.clusters.join("-")}`,Qe=s=>{const t={};return Object.entries(s.endpoints).forEach(([n,r])=>{r.bindings.forEach(i=>{let o=i.target.id??`${i.target.ieee_address}-${i.target.endpoint}`;o=`${o}-${n}`,t[o]?t[o].clusters.push(i.cluster):t[o]={source:{ieee_address:s.ieee_address,endpoint:n},target:i.target,clusters:[i.cluster]}})}),Object.values(t)};function Xe(s){const{device:t,devices:n,groups:r,removeBind:i,addBind:o}=s,[c]=f.useState({isNew:Date.now(),target:{},source:{ieee_address:t.ieee_address,endpoint:""},clusters:[]}),a=f.useMemo(()=>Qe(t),[t]);return e.jsx("div",{className:"container-fluid",children:[...a,c].map((d,u)=>e.jsx(Je,{rule:d,groups:r,onUnBind:i,onBind:o,device:t,idx:u,devices:n},Ye(d)))})}const Ze=["devices","groups"],es=S(Ze,A)(Xe),ss=es;var ts=he,ns=pe,is=ns(function(s,t,n){ts(s,t,n)}),rs=is;const J=re(rs);function Y(s){const{cluster:t,device:n,onChange:r,label:i,value:o,clusters:c,...a}=s,{bridgeDefinitions:d}=oe.getState(),{t:u}=N("zigbee"),h=x=>{const{value:l}=x.target,b=m(t)[l];b&&r(l,b)},m=x=>{const l=c??d;if(l.hasOwnProperty("clusters")&&l.clusters.hasOwnProperty(x)){const p=l.clusters[x];if(p&&Object.keys(p).length!==0)return p.attributes}else if(l.hasOwnProperty("custom_clusters")&&l.custom_clusters.hasOwnProperty(n.ieee_address)&&l.custom_clusters[n.ieee_address].hasOwnProperty(x)){const p=l.custom_clusters[n.ieee_address][x];if(p&&Object.keys(p).length!==0)return p.attributes}return[]},v=Object.keys(m(t));o!==void 0&&!v.includes(o)&&v.push(o);const g=v.map(x=>e.jsx("option",{value:x,children:x},x));return g.unshift(e.jsx("option",{hidden:!0,children:u("select_attribute")},"none")),e.jsxs("div",{className:"form-group",children:[i&&e.jsx("label",{className:"form-label",children:i}),e.jsx("select",{disabled:v.length===0,className:"form-control",onChange:h,value:o,...a,children:g})]})}const os=(s,t,n)=>{let r=[],i=[];n&&!i.includes(n)&&i.push(n);const o=s.endpoints[t];return o&&(i=i.concat(o.clusters.output),r=[...o.clusters.input],r=r.filter(c=>!i.includes(c))),[{name:"available",clusters:i},{name:"possible",clusters:r}]},cs=["maximum_report_interval","minimum_report_interval","reportable_change","endpoint","cluster","attribute"],as=s=>cs.every(t=>s[t]!==void 0&&s[t]!=="");function K(s){const{onChange:t,label:n,value:r,name:i}=s;return e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label text-nowrap",children:n}),e.jsx("input",{onChange:t,value:r,required:!0,type:"number",name:i,className:"form-control"})]})}class ls extends f.Component{constructor(){super(...arguments),this.state={stateRule:{}},this.setSourceEp=t=>{const{stateRule:n}=this.state;n.endpoint=t,this.setState({stateRule:n})},this.setCluster=t=>{const{stateRule:n}=this.state;n.cluster=t,this.setState({stateRule:n})},this.setAttribute=t=>{const{stateRule:n}=this.state;n.attribute=t,this.setState({stateRule:n})},this.changeHandlerNumber=t=>{const{stateRule:n}=this.state,{name:r,valueAsNumber:i}=t.target;Number.isNaN(i)||(n[r]=i),this.setState({stateRule:n})},this.applyRule=()=>{const{onApply:t}=this.props,{stateRule:n}=this.state;t(n)},this.disableRule=()=>{const{onApply:t}=this.props,{stateRule:n}=this.state;t({...n,maximum_report_interval:65535})}}static getDerivedStateFromProps(t,n){const{rule:r}=t,{stateRule:i}=n;return{stateRule:J({},r,i)}}render(){const{rule:t,device:n,t:r}=this.props,{stateRule:i}=this.state,o=R(n);return e.jsxs("div",{className:"row pb-2 border-bottom",children:[e.jsx("div",{className:"col-md-2",children:e.jsx(y,{label:r("endpoint"),disabled:!t.isNew,values:o,value:i.endpoint,onChange:this.setSourceEp})}),e.jsx("div",{className:"col-md-2",children:e.jsx(B,{label:r("cluster"),disabled:!i.endpoint,pickerType:E.SINGLE,clusters:os(n,i.endpoint,i.cluster),value:i.cluster,onChange:this.setCluster})}),e.jsx("div",{className:"col-md-2",children:e.jsx(Y,{label:r("attribute"),disabled:!i.cluster,value:i.attribute,cluster:i.cluster,device:n,onChange:this.setAttribute})}),e.jsx("div",{className:"col-md-2",children:e.jsx(K,{onChange:this.changeHandlerNumber,value:i.minimum_report_interval,name:"minimum_report_interval",label:r("min_rep_interval")})}),e.jsx("div",{className:"col-md-1",children:e.jsx(K,{onChange:this.changeHandlerNumber,value:i.maximum_report_interval,name:"maximum_report_interval",label:r("max_rep_interval")})}),e.jsx("div",{className:"col-md-1",children:e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label text-nowrap",children:r("min_rep_change")}),e.jsx("input",{onChange:this.changeHandlerNumber,value:i.reportable_change,required:!0,type:"number",name:"reportable_change",className:"form-control"})]})}),e.jsx("div",{className:"col-md-2",children:e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:r("actions")}),e.jsx("div",{className:"form-group",children:e.jsxs("div",{className:"btn-group",role:"group","aria-label":"Basic example",children:[e.jsx(j,{disabled:!as(i),className:"btn btn-primary",onClick:this.applyRule,children:r("common:apply")}),i.isNew?null:e.jsx(j,{prompt:!0,className:"btn btn-danger",onClick:this.disableRule,children:r("common:disable")})]})})]})})]})}}const ds=C(["zigbee","common"])(ls),us=s=>{const t=[];return Object.entries(s.endpoints).forEach(([n,r])=>{r.configured_reportings.forEach(i=>{t.push({...i,endpoint:n})})}),t},ms=s=>`${s.isNew}${s.endpoint}${s.cluster}-${s.attribute}`;function hs(s){const{configureReport:t,device:n}=s,[r]=f.useState({isNew:Date.now(),reportable_change:0,minimum_report_interval:60,maximum_report_interval:3600,endpoint:"",cluster:"",attribute:""}),i=c=>{const{cluster:a,endpoint:d,attribute:u,minimum_report_interval:h,maximum_report_interval:m,reportable_change:v}=c;t(`${n.friendly_name}/${d}`,{cluster:a,attribute:u,minimum_report_interval:h,maximum_report_interval:m,reportable_change:v})},o=f.useMemo(()=>us(n),[n]);return e.jsx("div",{className:"container-fluid",children:[...o,r].map(c=>e.jsx(ds,{rule:c,device:n,onApply:i},ms(c)))})}const ps=["devices","groups"],vs=S(ps,A)(hs),gs=vs;function xs(s){const{device:t,deviceStates:n}=s,r=n[t.friendly_name]??{};return e.jsx("pre",{children:JSON.stringify(r,null,4)})}const fs=["deviceStates"],bs=S(fs,A)(xs),js=bs;function Ns(s){var a,d;const{device:t,deviceStates:n,setDeviceState:r,getDeviceState:i}=s,{t:o}=N(["exposes"]),c=n[t.friendly_name]??{};return(d=(a=t.definition)==null?void 0:a.exposes)!=null&&d.length?e.jsx(Re,{feature:{features:t.definition.exposes,type:"composite"},device:t,deviceState:c,onChange:async(u,h)=>{await r(t.friendly_name,h)},onRead:async(u,h)=>{await i(t.friendly_name,h)},parentFeatures:[],featureWrapperClass:V}):o("empty_exposes_definition")}const _s=["deviceStates"],Cs=S(_s,A)(Ns),Ss=Cs,As="_tree_k0evw_1",Is={tree:As},D=s=>{const{label:t,clusters:n}=s;return n.length?e.jsxs("li",{children:[e.jsx("span",{children:t}),e.jsx("ul",{children:n.map(r=>e.jsx("li",{children:e.jsx("span",{children:r})},r))})]}):null};function ws(s){const{t}=N("zigbee"),{device:n}=s;return e.jsx("dl",{className:`${Is.tree} row`,children:e.jsx("ul",{children:e.jsxs("li",{children:[e.jsx("span",{children:n.ieee_address}),e.jsx("ul",{children:Object.entries(n.endpoints).map(([r,i])=>e.jsxs("li",{children:[e.jsxs("span",{children:[t("endpoint")," ",e.jsx("strong",{children:r})]}),e.jsxs("ul",{children:[e.jsx(D,{label:t("output_clusters"),clusters:i.clusters.output}),e.jsx(D,{label:t("input_clusters"),clusters:i.clusters.input})]})]},r))})]})})})}const Rs=ve(ge),Es=s=>{const{docsUrl:t}=s,{t:n}=N("common");return e.jsx("div",{className:"card alert alert-info",role:"alert",children:e.jsxs("div",{className:"card-body",children:[e.jsx("i",{className:"fa-solid fa-circle-info fa-2xl me-2"}),e.jsx("a",{href:t,target:"_blank",rel:"noreferrer",className:"alert-link align-middle",children:n("read_the_docs_info")})]})})},ks={"ui:order":["friendly_name","disabled","retain","retention","qos","filtered_attributes","*"]};class Ps extends f.Component{constructor(){super(...arguments),this.state={newSetting:{key:"",value:"",type:""},updatedDeviceConfig:{}},this.updateConfig=async t=>{const{formData:n}=t,{data:r}=this.getSchemaAndConfig(),{setDeviceOptions:i,device:o}=this.props,c=ce(r,n);await i(o.ieee_address,c),this.setState({updatedDeviceConfig:{}})}}getGenericDeviceSettingsSchema(){var n;const{bridgeInfo:{config_schema:t={}}}=this.props;return((n=t.definitions)==null?void 0:n.device)??{properties:{}}}getDeviceConfig(){const{bridgeInfo:{config:t},device:n}=this.props,{updatedDeviceConfig:r}=this.state;return J({},t==null?void 0:t.device_options,t==null?void 0:t.devices[n.ieee_address],r)}getSchemaAndConfig(){const t=this.getGenericDeviceSettingsSchema(),n=this.getDeviceConfig();return{schema:t,data:n,uiSchema:ks}}render(){const{schema:t,data:n,uiSchema:r}=this.getSchemaAndConfig();return e.jsxs(e.Fragment,{children:[e.jsx(Es,{docsUrl:"https://www.zigbee2mqtt.io/guide/configuration/devices-groups.html#common-device-options"}),e.jsx(Rs,{schema:t,formData:n,onSubmit:this.updateConfig,uiSchema:r,fields:{TitleField:ke,DescriptionField:Pe}})]})}}function ys(s){const{sceneStore:t,sceneRecall:n,sceneRemove:r,sceneRemoveAll:i,setDeviceState:o,device:c,deviceState:a}=s;return e.jsxs("div",{className:"row",children:[e.jsx("div",{className:"col-12 col-sm-6 col-xxl-6 d-flex",children:e.jsx("div",{className:"card flex-fill",children:e.jsx("div",{className:"card-body py-4",children:e.jsx(Ie,{sceneStore:t,target:c,deviceState:a,setDeviceState:o})})})}),e.jsx("div",{className:"col-12 col-sm-6 col-xxl-6 d-flex",children:e.jsx("div",{className:"card flex-fill",children:e.jsx("div",{className:"card-body py-4",children:e.jsx(we,{sceneStore:t,sceneRecall:n,sceneRemove:r,sceneRemoveAll:i,target:c,deviceState:a})})})})]})}const Os=[],$s=S(Os,A)(ys),Bs=$s;function Ms(s){var c,a;const{device:t,bridgeInfo:{config:n},setDeviceOptions:r}=s,{t:i}=N(["exposes"]),o=n.devices[t.ieee_address]??{};return(a=(c=t.definition)==null?void 0:c.options)!=null&&a.length?e.jsx(Ee,{showEndpointLabels:!0,feature:{features:t.definition.options},type:"composite",device:t,deviceState:o,onChange:async(d,u)=>{await r(t.ieee_address,u)},featureWrapperClass:V}):i("empty_exposes_definition")}const Ls=["bridgeInfo"],Us=S(Ls,A)(Ms),Fs=Us;function Q(s){const{logs:t,filterFn:n}=s,r=t.filter(n),i=r.length>0?r[r.length-1]:null,o=[];return i&&o.push(e.jsx(ye,{log:i,search:"",logLevel:Oe},"log")),e.jsx(e.Fragment,{children:o})}const Ks=s=>{const{executeCommand:t,device:n,logs:r}=s,{t:i}=N("zigbee"),[o,c]=f.useState(1),[a,d]=f.useState(""),[u,h]=f.useState(""),[m,v]=f.useState(JSON.stringify({},null,2)),g=()=>{let p=!0;try{JSON.parse(m)}catch{p=!1}return p&&!isNaN(parseInt(a))&&!isNaN(parseInt(u))},x=()=>{t(n.friendly_name,o,parseInt(a),parseInt(u),JSON.parse(m))},l=p=>p.message.startsWith("Invoked ");return e.jsxs("div",{children:[e.jsxs("div",{className:"row mb-3",children:[e.jsx("div",{className:"col-4 col-sm-3",children:e.jsxs("div",{className:"form-group",children:[e.jsx("label",{className:"form-label",children:i("endpoint")}),e.jsx("input",{type:"number",min:"1",max:"255",value:o,onChange:p=>c(p.target.valueAsNumber),className:"form-control"})]})}),e.jsx("div",{className:"col-4 col-sm-3",children:e.jsxs("div",{className:"col-auto",children:[e.jsx("label",{className:"form-label",children:i("cluster")}),e.jsx("input",{type:"text",value:a,placeholder:"example: 0x0001, 1, 123",onChange:p=>d(p.target.value),className:"form-control"})]})}),e.jsx("div",{className:"col-4 col-sm-3",children:e.jsxs("div",{className:"col-auto",children:[e.jsx("label",{className:"form-label",children:i("command")}),e.jsx("input",{type:"text",value:u,placeholder:"example: 0x0001, 1, 123",onChange:p=>h(p.target.value),className:"form-control"})]})})]}),e.jsx("div",{className:"row mb-3 ",children:e.jsx("div",{className:"col-9 col-sm-9",children:e.jsxs("div",{className:"col-auto",children:[e.jsx("label",{className:"form-label",children:i("payload")}),e.jsx("textarea",{rows:3,value:m,onChange:p=>v(p.target.value),className:"form-control"})]})})}),e.jsx("div",{className:"row",children:e.jsx("div",{className:"btn-group col col-3",children:e.jsx("button",{onClick:x,disabled:!g(),type:"button",className:"btn btn-success",children:i("execute")})})}),e.jsx("div",{className:"row",children:e.jsx(Q,{logs:r,filterFn:l})})]})},Ds=f.lazy(()=>ae(()=>import("./CodeEditor-b2b42cbe.js"),["./CodeEditor-b2b42cbe.js","./index-6f55efcd.js","./index-654e4a69.css","./extends-98964cd2.js"],import.meta.url));class Gs extends z.Component{constructor(){super(...arguments),this.onGenerateExternalDefinitionClick=()=>{const{generateExternalDefinition:t,device:n}=this.props;t(n.ieee_address)}}render(){const{t,generatedExternalDefinitions:n,device:r,theme:i}=this.props,o=n[r.ieee_address];return o?e.jsxs(e.Fragment,{children:[t("generated_external_definition")," (",e.jsx("a",{href:T,target:"_blank",rel:"noreferrer",children:t("documentation")}),")",e.jsx(Ds,{value:o,theme:i})]}):e.jsx(j,{className:"btn btn-primary",onClick:this.onGenerateExternalDefinitionClick,children:t("generate_external_definition")})}}const Ts=C(["devConsole","common"])(Gs);var w=(s=>(s[s.NO_DATA=0]="NO_DATA",s[s.DATA8=8]="DATA8",s[s.DATA16=9]="DATA16",s[s.DATA24=10]="DATA24",s[s.DATA32=11]="DATA32",s[s.DATA40=12]="DATA40",s[s.DATA48=13]="DATA48",s[s.DATA56=14]="DATA56",s[s.DATA64=15]="DATA64",s[s.BOOLEAN=16]="BOOLEAN",s[s.BITMAP8=24]="BITMAP8",s[s.BITMAP16=25]="BITMAP16",s[s.BITMAP24=26]="BITMAP24",s[s.BITMAP32=27]="BITMAP32",s[s.BITMAP40=28]="BITMAP40",s[s.BITMAP48=29]="BITMAP48",s[s.BITMAP56=30]="BITMAP56",s[s.BITMAP64=31]="BITMAP64",s[s.UINT8=32]="UINT8",s[s.UINT16=33]="UINT16",s[s.UINT24=34]="UINT24",s[s.UINT32=35]="UINT32",s[s.UINT40=36]="UINT40",s[s.UINT48=37]="UINT48",s[s.UINT56=38]="UINT56",s[s.UINT64=39]="UINT64",s[s.INT8=40]="INT8",s[s.INT16=41]="INT16",s[s.INT24=42]="INT24",s[s.INT32=43]="INT32",s[s.INT40=44]="INT40",s[s.INT48=45]="INT48",s[s.INT56=46]="INT56",s[s.INT64=47]="INT64",s[s.ENUM8=48]="ENUM8",s[s.ENUM16=49]="ENUM16",s[s.SEMI_PREC=56]="SEMI_PREC",s[s.SINGLE_PREC=57]="SINGLE_PREC",s[s.DOUBLE_PREC=58]="DOUBLE_PREC",s[s.OCTET_STR=65]="OCTET_STR",s[s.CHAR_STR=66]="CHAR_STR",s[s.LONG_OCTET_STR=67]="LONG_OCTET_STR",s[s.LONG_CHAR_STR=68]="LONG_CHAR_STR",s[s.ARRAY=72]="ARRAY",s[s.STRUCT=76]="STRUCT",s[s.SET=80]="SET",s[s.BAG=81]="BAG",s[s.TOD=224]="TOD",s[s.DATE=225]="DATE",s[s.UTC=226]="UTC",s[s.CLUSTER_ID=232]="CLUSTER_ID",s[s.ATTR_ID=233]="ATTR_ID",s[s.BAC_OID=234]="BAC_OID",s[s.IEEE_ADDR=240]="IEEE_ADDR",s[s.SEC_KEY=241]="SEC_KEY",s[s.UNKNOWN=255]="UNKNOWN",s))(w||{});const Hs=["Read result of","Publish 'set' 'read' to","Publish 'set' 'write' to","Wrote "];class zs extends z.Component{constructor(t){super(t),this.onEndpointChange=o=>{this.setState({attributes:[],cluster:"",endpoint:o})},this.onClusterChange=o=>{this.setState({attributes:[],cluster:o})},this.onAttributeSelect=(o,c)=>{const{attributes:a}=this.state;if(!a.find(d=>d.attribute===o)){const d=a.concat([{attribute:o,definition:c}]);this.setState({attributes:d})}},this.onAttributeDelete=o=>{const{attributes:c}=this.state,a=c.filter(d=>d.attribute!==o);this.setState({attributes:a})},this.onReadClick=()=>{const{readDeviceAttributes:o,device:c}=this.props,{cluster:a,attributes:d,endpoint:u}=this.state;o(c.friendly_name,u,a,d.map(h=>h.attribute),{})},this.onWriteClick=()=>{const{writeDeviceAttributes:o,device:c}=this.props,{cluster:a,attributes:d,endpoint:u}=this.state;o(c.friendly_name,u,a,d,{})},this.onAttributeValueChange=(o,c)=>{const{attributes:a}=this.state,d=[...a],u=d.find(h=>h.attribute===o);u&&(u.value=c),this.setState({attributes:d})};const{device:n,clusters:r}=t,i=Object.keys(n.endpoints)[0];this.state={endpoint:i,cluster:"",attributes:[]}}renderSelectedAttribute(){const{attributes:t}=this.state;return t.map(({attribute:n,value:r="",definition:i})=>e.jsx("div",{className:"row mb-1",children:e.jsx("div",{className:"col-3",children:e.jsxs("div",{className:"row",children:[e.jsx("div",{className:"col-6",children:n}),e.jsx("div",{className:"col-3",children:e.jsx(Vs,{value:r,attribute:n,definition:i,onChange:this.onAttributeValueChange,"data-testid":"attribute-value-input"})}),e.jsx("div",{className:"col-2",children:e.jsx(j,{className:"btn btn-danger btn-sm",item:n,"data-testid":"remove-attribute",onClick:this.onAttributeDelete,children:e.jsx("i",{className:"fas fa-trash"})})})]})})},n))}render(){const{cluster:t,attributes:n,endpoint:r}=this.state,i=n.length===0,o=t==="",{t:c,device:a,clusters:d}=this.props,u=R(a),h=m=>Hs.some(v=>m.message.startsWith(v));return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-3 row",children:[e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(y,{"data-testid":"endpoint-picker",label:c("zigbee:endpoint"),values:u,value:r,onChange:this.onEndpointChange})}),e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(B,{"data-testid":"cluster-picker",label:c("cluster"),pickerType:E.SINGLE,clusters:a.endpoints[r].clusters.input,value:t,onChange:this.onClusterChange})}),e.jsx("div",{className:"col-6 col-sm-3",children:e.jsx(Y,{"data-testid":"attribute-picker",label:c("attribute"),value:"",cluster:t,device:a,clusters:d,onChange:this.onAttributeSelect})})]}),e.jsx("div",{className:"mb-3 row","data-testid":"selected-attribute",children:this.renderSelectedAttribute()}),e.jsx("div",{className:"mb-3 row",children:e.jsxs("div",{className:"btn-group col col-3",role:"group",children:[e.jsx(j,{disabled:i||o,className:"btn btn-success me-2","data-testid":"read-attribute",onClick:this.onReadClick,children:c("read")}),e.jsx(j,{disabled:i||o,className:"btn btn-danger","data-testid":"write-attribute",onClick:this.onWriteClick,children:c("write")})]})}),e.jsx(Q,{logs:this.props.logs,filterFn:h})]})}}function Vs(s){const{value:t,onChange:n,attribute:r,definition:i,...o}=s,a={[w.CHAR_STR]:"string",[w.LONG_CHAR_STR]:"string",[w.OCTET_STR]:"string",[w.LONG_OCTET_STR]:"string"}[i.type]??"number",d=u=>{const h=a==="number"?u.target.valueAsNumber:u.target.value;n(r,h)};return e.jsx("input",{className:"form-control",type:a,value:t,onChange:d,...o})}const Ws=C(["devConsole","common"])(zs);class qs extends f.Component{render(){return e.jsxs("div",{children:[e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsx(Ts,{theme:this.props.theme,device:this.props.device,generateExternalDefinition:this.props.generateExternalDefinition,generatedExternalDefinitions:this.props.generatedExternalDefinitions})})}),e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsx(Ws,{theme:this.props.theme,device:this.props.device,logs:this.props.logs,i18n:this.props.i18n,readDeviceAttributes:this.props.readDeviceAttributes,writeDeviceAttributes:this.props.writeDeviceAttributes})})}),e.jsx("div",{className:"card",children:e.jsx("div",{className:"card-body",children:e.jsx(Ks,{device:this.props.device,logs:this.props.logs,executeCommand:this.props.executeCommand})})})]})}}const Js=C(["devConsole","common"])(qs);function Ys(s){const{match:t,devices:n,logs:r}=s,{readDeviceAttributes:i,writeDeviceAttributes:o,setDeviceOptions:c,executeCommand:a,generateExternalDefinition:d,bridgeInfo:u,deviceStates:h,generatedExternalDefinitions:m,theme:v}=s,{tab:g,dev:x}=t.params,l=n[x],p=h[l.friendly_name]??{};switch(g){case"info":return e.jsx(He,{device:l});case"bind":return e.jsx(ss,{device:l});case"state":return e.jsx(js,{device:l});case"exposes":return e.jsx(Ss,{device:l});case"clusters":return e.jsx(ws,{device:l});case"reporting":return e.jsx(gs,{device:l});case"settings":return e.jsx(Ps,{device:l,setDeviceOptions:c,bridgeInfo:u});case"settings-specific":return e.jsx(Fs,{device:l,setDeviceOptions:c,bridgeInfo:u});case"dev-console":return e.jsx(Js,{device:l,logs:r,readDeviceAttributes:i,writeDeviceAttributes:o,generateExternalDefinition:d,generatedExternalDefinitions:m,executeCommand:a,theme:v});case"scene":return e.jsx(Bs,{device:l,deviceState:p});default:return e.jsx(le,{to:`/device/${x}/info`})}}function Qs(s){const{devices:t,match:n,t:r}=s,{dev:i,tab:o}=n.params,c=t[i];if(!c)return e.jsx("div",{className:"h-100 d-flex justify-content-center align-items-center",children:r("unknown_device")});const a=Le(i);return e.jsxs(e.Fragment,{children:[e.jsx(Be,{allDevices:t,currentDevice:c,tab:o}),e.jsxs("div",{className:"tab",children:[e.jsx("ul",{className:"nav nav-tabs",children:a.map(d=>e.jsx("li",{className:"nav-item",children:e.jsx(de,{activeClassName:"active",className:`nav-link ${W["small-nav"]}`,to:d.url,children:r(d.translationKey)})},d.translationKey))}),e.jsx("div",{className:"tab-content",children:e.jsx("div",{className:"tab-pane fade show active",children:e.jsx(Ys,{...s})})})]})]})}const pt=C("devicePage")(S(["devices","deviceStates","logs","bridgeInfo","generatedExternalDefinitions","theme"],A)(ue(Qs)));export{pt as ConnectedDevicePage};
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,5 +0,0 @@
|
|
1
|
-
.rnc__notification-container--bottom-center,.rnc__notification-container--bottom-full,.rnc__notification-container--bottom-left,.rnc__notification-container--bottom-right,.rnc__notification-container--center,.rnc__notification-container--top-center,.rnc__notification-container--top-full,.rnc__notification-container--top-left,.rnc__notification-container--top-right{min-width:325px;pointer-events:all;position:absolute}.rnc__notification-container--bottom-center,.rnc__notification-container--center,.rnc__notification-container--top-center{align-items:center;display:flex;flex-direction:column;justify-content:center;left:calc(50% - 175px);max-width:350px}.rnc__notification-container--center{height:100%;pointer-events:none;top:20px}.rnc__notification-container--bottom-full,.rnc__notification-container--top-full{min-width:100%;width:100%}.rnc__notification-container--bottom-full{bottom:0}.rnc__util--flex-center{align-items:center;display:flex;flex-direction:column;justify-content:center;min-width:325px;pointer-events:all}.rnc__notification-container--top-center{top:20px}.rnc__notification-container--bottom-center{bottom:20px}.rnc__notification-container--top-left{left:20px;top:20px}.rnc__notification-container--top-right{right:20px;top:20px}.rnc__notification-container--bottom-left{bottom:20px;left:20px}.rnc__notification-container--bottom-right{bottom:20px;right:20px}.rnc__notification-container--mobile-bottom,.rnc__notification-container--mobile-top{pointer-events:all;position:absolute}.rnc__notification-container--mobile-top{left:20px;right:20px;top:20px}.rnc__notification-container--mobile-bottom{bottom:20px;left:20px;margin-bottom:-15px;right:20px}.rnc__notification-item--default{background-color:#007bff;border-left:8px solid #0562c7}.rnc__notification-item--default .rnc__notification-timer{background-color:#007bff}.rnc__notification-item--default .rnc__notification-timer-filler{background-color:#fff}.rnc__notification-item--default .rnc__notification-close-mark{background-color:#007bff}.rnc__notification-item--success{background-color:#28a745;border-left:8px solid #1f8838}.rnc__notification-item--success .rnc__notification-timer{background-color:#28a745}.rnc__notification-item--success .rnc__notification-timer-filler{background-color:#fff}.rnc__notification-item--success .rnc__notification-close-mark{background-color:#28a745}.rnc__notification-item--danger{background-color:#dc3545;border-left:8px solid #bd1120}.rnc__notification-item--danger .rnc__notification-timer{background-color:#dc3545}.rnc__notification-item--danger .rnc__notification-timer-filler{background-color:#fff}.rnc__notification-item--danger .rnc__notification-close-mark{background-color:#dc3545}.rnc__notification-item--info{background-color:#17a2b8;border-left:8px solid #138b9e}.rnc__notification-item--info .rnc__notification-timer{background-color:#17a2b8}.rnc__notification-item--info .rnc__notification-timer-filler{background-color:#fff}.rnc__notification-item--info .rnc__notification-close-mark{background-color:#17a2b8}.rnc__notification-item--warning{background-color:#eab000;border-left:8px solid #ce9c09}.rnc__notification-item--warning .rnc__notification-timer{background-color:#eab000}.rnc__notification-item--warning .rnc__notification-timer-filler{background-color:#fff}.rnc__notification-item--warning .rnc__notification-close-mark{background-color:#eab000}.rnc__notification-item--awesome{background-color:#685dc3;border-left:8px solid #4c3fb1}.rnc__notification-item--awesome .rnc__notification-timer{background-color:#685dc3}.rnc__notification-item--awesome .rnc__notification-timer-filler{background-color:#fff}.rnc__notification-item--awesome .rnc__notification-close-mark{background-color:#685dc3}@keyframes timer{0%{width:100%}to{width:0}}.rnc__base{height:100%;pointer-events:none;position:fixed;width:100%;z-index:9000}.rnc__notification-item{border-radius:3px;box-shadow:1px 3px 4px #0003;cursor:pointer;display:flex;margin-bottom:15px;position:relative}.rnc__notification-container--bottom-full .rnc__notification-item,.rnc__notification-container--top-full .rnc__notification-item{border-radius:0;margin-bottom:0}.rnc__notification-container--bottom-full .rnc__notification,.rnc__notification-container--top-full .rnc__notification{width:100%!important}.rnc__notification-timer{margin-top:10px;width:100%}.rnc__notification-timer,.rnc__notification-timer-filler{border-radius:5px;height:3px}.rnc__notification-title{color:#fff;font-size:14px;font-weight:700;margin-bottom:5px;margin-top:5px}.rnc__notification-message{word-wrap:break-word;color:#fff;font-size:14px;line-height:150%;margin-bottom:0;margin-top:0;max-width:calc(100% - 15px)}.rnc__notification-content{display:inline-block;padding:8px 15px;width:100%}.rnc__notification-close-mark{border-radius:50%;display:inline-block;height:18px;position:absolute;right:10px;top:10px;width:18px}.rnc__notification-close-mark:after{color:#fff;content:"×";font-size:12px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.rnc__notification-container--mobile-bottom .notification,.rnc__notification-container--mobile-bottom .rnc__notification-item,.rnc__notification-container--mobile-top .notification,.rnc__notification-container--mobile-top .rnc__notification-item{max-width:100%;width:100%}.rnc__notification-container--bottom-right .notification,.rnc__notification-container--top-right .notification{margin-left:auto}.rnc__notification-container--bottom-left .notification,.rnc__notification-container--top-left .notification{margin-right:auto}.rnc__notification-container--mobile-bottom .notification,.rnc__notification-container--mobile-top .notification{margin-left:auto;margin-right:auto}/*!
|
2
|
-
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
3
|
-
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
4
|
-
* Copyright 2023 Fonticons, Inc.
|
5
|
-
*/.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-classic,.fa-sharp,.fas,.fa-solid,.far,.fa-regular,.fab,.fa-brands{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fab,.fa-brands{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-fill-drip:before{content:""}.fa-arrows-to-circle:before{content:""}.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-at:before{content:"@"}.fa-trash-can:before{content:""}.fa-trash-alt:before{content:""}.fa-text-height:before{content:""}.fa-user-xmark:before{content:""}.fa-user-times:before{content:""}.fa-stethoscope:before{content:""}.fa-message:before{content:""}.fa-comment-alt:before{content:""}.fa-info:before{content:""}.fa-down-left-and-up-right-to-center:before{content:""}.fa-compress-alt:before{content:""}.fa-explosion:before{content:""}.fa-file-lines:before{content:""}.fa-file-alt:before{content:""}.fa-file-text:before{content:""}.fa-wave-square:before{content:""}.fa-ring:before{content:""}.fa-building-un:before{content:""}.fa-dice-three:before{content:""}.fa-calendar-days:before{content:""}.fa-calendar-alt:before{content:""}.fa-anchor-circle-check:before{content:""}.fa-building-circle-arrow-right:before{content:""}.fa-volleyball:before{content:""}.fa-volleyball-ball:before{content:""}.fa-arrows-up-to-line:before{content:""}.fa-sort-down:before{content:""}.fa-sort-desc:before{content:""}.fa-circle-minus:before{content:""}.fa-minus-circle:before{content:""}.fa-door-open:before{content:""}.fa-right-from-bracket:before{content:""}.fa-sign-out-alt:before{content:""}.fa-atom:before{content:""}.fa-soap:before{content:""}.fa-icons:before{content:""}.fa-heart-music-camera-bolt:before{content:""}.fa-microphone-lines-slash:before{content:""}.fa-microphone-alt-slash:before{content:""}.fa-bridge-circle-check:before{content:""}.fa-pump-medical:before{content:""}.fa-fingerprint:before{content:""}.fa-hand-point-right:before{content:""}.fa-magnifying-glass-location:before{content:""}.fa-search-location:before{content:""}.fa-forward-step:before{content:""}.fa-step-forward:before{content:""}.fa-face-smile-beam:before{content:""}.fa-smile-beam:before{content:""}.fa-flag-checkered:before{content:""}.fa-football:before{content:""}.fa-football-ball:before{content:""}.fa-school-circle-exclamation:before{content:""}.fa-crop:before{content:""}.fa-angles-down:before{content:""}.fa-angle-double-down:before{content:""}.fa-users-rectangle:before{content:""}.fa-people-roof:before{content:""}.fa-people-line:before{content:""}.fa-beer-mug-empty:before{content:""}.fa-beer:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-arrow-up-long:before{content:""}.fa-long-arrow-up:before{content:""}.fa-fire-flame-simple:before{content:""}.fa-burn:before{content:""}.fa-person:before{content:""}.fa-male:before{content:""}.fa-laptop:before{content:""}.fa-file-csv:before{content:""}.fa-menorah:before{content:""}.fa-truck-plane:before{content:""}.fa-record-vinyl:before{content:""}.fa-face-grin-stars:before{content:""}.fa-grin-stars:before{content:""}.fa-bong:before{content:""}.fa-spaghetti-monster-flying:before{content:""}.fa-pastafarianism:before{content:""}.fa-arrow-down-up-across-line:before{content:""}.fa-spoon:before{content:""}.fa-utensil-spoon:before{content:""}.fa-jar-wheat:before{content:""}.fa-envelopes-bulk:before{content:""}.fa-mail-bulk:before{content:""}.fa-file-circle-exclamation:before{content:""}.fa-circle-h:before{content:""}.fa-hospital-symbol:before{content:""}.fa-pager:before{content:""}.fa-address-book:before{content:""}.fa-contact-book:before{content:""}.fa-strikethrough:before{content:""}.fa-k:before{content:"K"}.fa-landmark-flag:before{content:""}.fa-pencil:before{content:""}.fa-pencil-alt:before{content:""}.fa-backward:before{content:""}.fa-caret-right:before{content:""}.fa-comments:before{content:""}.fa-paste:before{content:""}.fa-file-clipboard:before{content:""}.fa-code-pull-request:before{content:""}.fa-clipboard-list:before{content:""}.fa-truck-ramp-box:before{content:""}.fa-truck-loading:before{content:""}.fa-user-check:before{content:""}.fa-vial-virus:before{content:""}.fa-sheet-plastic:before{content:""}.fa-blog:before{content:""}.fa-user-ninja:before{content:""}.fa-person-arrow-up-from-line:before{content:""}.fa-scroll-torah:before{content:""}.fa-torah:before{content:""}.fa-broom-ball:before{content:""}.fa-quidditch:before{content:""}.fa-quidditch-broom-ball:before{content:""}.fa-toggle-off:before{content:""}.fa-box-archive:before{content:""}.fa-archive:before{content:""}.fa-person-drowning:before{content:""}.fa-arrow-down-9-1:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-sort-numeric-down-alt:before{content:""}.fa-face-grin-tongue-squint:before{content:""}.fa-grin-tongue-squint:before{content:""}.fa-spray-can:before{content:""}.fa-truck-monster:before{content:""}.fa-w:before{content:"W"}.fa-earth-africa:before{content:""}.fa-globe-africa:before{content:""}.fa-rainbow:before{content:""}.fa-circle-notch:before{content:""}.fa-tablet-screen-button:before{content:""}.fa-tablet-alt:before{content:""}.fa-paw:before{content:""}.fa-cloud:before{content:""}.fa-trowel-bricks:before{content:""}.fa-face-flushed:before{content:""}.fa-flushed:before{content:""}.fa-hospital-user:before{content:""}.fa-tent-arrow-left-right:before{content:""}.fa-gavel:before{content:""}.fa-legal:before{content:""}.fa-binoculars:before{content:""}.fa-microphone-slash:before{content:""}.fa-box-tissue:before{content:""}.fa-motorcycle:before{content:""}.fa-bell-concierge:before{content:""}.fa-concierge-bell:before{content:""}.fa-pen-ruler:before{content:""}.fa-pencil-ruler:before{content:""}.fa-people-arrows:before{content:""}.fa-people-arrows-left-right:before{content:""}.fa-mars-and-venus-burst:before{content:""}.fa-square-caret-right:before{content:""}.fa-caret-square-right:before{content:""}.fa-scissors:before{content:""}.fa-cut:before{content:""}.fa-sun-plant-wilt:before{content:""}.fa-toilets-portable:before{content:""}.fa-hockey-puck:before{content:""}.fa-table:before{content:""}.fa-magnifying-glass-arrow-right:before{content:""}.fa-tachograph-digital:before{content:""}.fa-digital-tachograph:before{content:""}.fa-users-slash:before{content:""}.fa-clover:before{content:""}.fa-reply:before{content:""}.fa-mail-reply:before{content:""}.fa-star-and-crescent:before{content:""}.fa-house-fire:before{content:""}.fa-square-minus:before{content:""}.fa-minus-square:before{content:""}.fa-helicopter:before{content:""}.fa-compass:before{content:""}.fa-square-caret-down:before{content:""}.fa-caret-square-down:before{content:""}.fa-file-circle-question:before{content:""}.fa-laptop-code:before{content:""}.fa-swatchbook:before{content:""}.fa-prescription-bottle:before{content:""}.fa-bars:before{content:""}.fa-navicon:before{content:""}.fa-people-group:before{content:""}.fa-hourglass-end:before{content:""}.fa-hourglass-3:before{content:""}.fa-heart-crack:before{content:""}.fa-heart-broken:before{content:""}.fa-square-up-right:before{content:""}.fa-external-link-square-alt:before{content:""}.fa-face-kiss-beam:before{content:""}.fa-kiss-beam:before{content:""}.fa-film:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-people-robbery:before{content:""}.fa-lightbulb:before{content:""}.fa-caret-left:before{content:""}.fa-circle-exclamation:before{content:""}.fa-exclamation-circle:before{content:""}.fa-school-circle-xmark:before{content:""}.fa-arrow-right-from-bracket:before{content:""}.fa-sign-out:before{content:""}.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-unlock-keyhole:before{content:""}.fa-unlock-alt:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-headphones-simple:before{content:""}.fa-headphones-alt:before{content:""}.fa-sitemap:before{content:""}.fa-circle-dollar-to-slot:before{content:""}.fa-donate:before{content:""}.fa-memory:before{content:""}.fa-road-spikes:before{content:""}.fa-fire-burner:before{content:""}.fa-flag:before{content:""}.fa-hanukiah:before{content:""}.fa-feather:before{content:""}.fa-volume-low:before{content:""}.fa-volume-down:before{content:""}.fa-comment-slash:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-compress:before{content:""}.fa-wheat-awn:before{content:""}.fa-wheat-alt:before{content:""}.fa-ankh:before{content:""}.fa-hands-holding-child:before{content:""}.fa-asterisk:before{content:"*"}.fa-square-check:before{content:""}.fa-check-square:before{content:""}.fa-peseta-sign:before{content:""}.fa-heading:before{content:""}.fa-header:before{content:""}.fa-ghost:before{content:""}.fa-list:before{content:""}.fa-list-squares:before{content:""}.fa-square-phone-flip:before{content:""}.fa-phone-square-alt:before{content:""}.fa-cart-plus:before{content:""}.fa-gamepad:before{content:""}.fa-circle-dot:before{content:""}.fa-dot-circle:before{content:""}.fa-face-dizzy:before{content:""}.fa-dizzy:before{content:""}.fa-egg:before{content:""}.fa-house-medical-circle-xmark:before{content:""}.fa-campground:before{content:""}.fa-folder-plus:before{content:""}.fa-futbol:before{content:""}.fa-futbol-ball:before{content:""}.fa-soccer-ball:before{content:""}.fa-paintbrush:before{content:""}.fa-paint-brush:before{content:""}.fa-lock:before{content:""}.fa-gas-pump:before{content:""}.fa-hot-tub-person:before{content:""}.fa-hot-tub:before{content:""}.fa-map-location:before{content:""}.fa-map-marked:before{content:""}.fa-house-flood-water:before{content:""}.fa-tree:before{content:""}.fa-bridge-lock:before{content:""}.fa-sack-dollar:before{content:""}.fa-pen-to-square:before{content:""}.fa-edit:before{content:""}.fa-car-side:before{content:""}.fa-share-nodes:before{content:""}.fa-share-alt:before{content:""}.fa-heart-circle-minus:before{content:""}.fa-hourglass-half:before{content:""}.fa-hourglass-2:before{content:""}.fa-microscope:before{content:""}.fa-sink:before{content:""}.fa-bag-shopping:before{content:""}.fa-shopping-bag:before{content:""}.fa-arrow-down-z-a:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-alpha-down-alt:before{content:""}.fa-mitten:before{content:""}.fa-person-rays:before{content:""}.fa-users:before{content:""}.fa-eye-slash:before{content:""}.fa-flask-vial:before{content:""}.fa-hand:before{content:""}.fa-hand-paper:before{content:""}.fa-om:before{content:""}.fa-worm:before{content:""}.fa-house-circle-xmark:before{content:""}.fa-plug:before{content:""}.fa-chevron-up:before{content:""}.fa-hand-spock:before{content:""}.fa-stopwatch:before{content:""}.fa-face-kiss:before{content:""}.fa-kiss:before{content:""}.fa-bridge-circle-xmark:before{content:""}.fa-face-grin-tongue:before{content:""}.fa-grin-tongue:before{content:""}.fa-chess-bishop:before{content:""}.fa-face-grin-wink:before{content:""}.fa-grin-wink:before{content:""}.fa-ear-deaf:before{content:""}.fa-deaf:before{content:""}.fa-deafness:before{content:""}.fa-hard-of-hearing:before{content:""}.fa-road-circle-check:before{content:""}.fa-dice-five:before{content:""}.fa-square-rss:before{content:""}.fa-rss-square:before{content:""}.fa-land-mine-on:before{content:""}.fa-i-cursor:before{content:""}.fa-stamp:before{content:""}.fa-stairs:before{content:""}.fa-i:before{content:"I"}.fa-hryvnia-sign:before{content:""}.fa-hryvnia:before{content:""}.fa-pills:before{content:""}.fa-face-grin-wide:before{content:""}.fa-grin-alt:before{content:""}.fa-tooth:before{content:""}.fa-v:before{content:"V"}.fa-bangladeshi-taka-sign:before{content:""}.fa-bicycle:before{content:""}.fa-staff-snake:before{content:""}.fa-rod-asclepius:before{content:""}.fa-rod-snake:before{content:""}.fa-staff-aesculapius:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-truck-medical:before{content:""}.fa-ambulance:before{content:""}.fa-wheat-awn-circle-exclamation:before{content:""}.fa-snowman:before{content:""}.fa-mortar-pestle:before{content:""}.fa-road-barrier:before{content:""}.fa-school:before{content:""}.fa-igloo:before{content:""}.fa-joint:before{content:""}.fa-angle-right:before{content:""}.fa-horse:before{content:""}.fa-q:before{content:"Q"}.fa-g:before{content:"G"}.fa-notes-medical:before{content:""}.fa-temperature-half:before{content:""}.fa-temperature-2:before{content:""}.fa-thermometer-2:before{content:""}.fa-thermometer-half:before{content:""}.fa-dong-sign:before{content:""}.fa-capsules:before{content:""}.fa-poo-storm:before{content:""}.fa-poo-bolt:before{content:""}.fa-face-frown-open:before{content:""}.fa-frown-open:before{content:""}.fa-hand-point-up:before{content:""}.fa-money-bill:before{content:""}.fa-bookmark:before{content:""}.fa-align-justify:before{content:""}.fa-umbrella-beach:before{content:""}.fa-helmet-un:before{content:""}.fa-bullseye:before{content:""}.fa-bacon:before{content:""}.fa-hand-point-down:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-folder:before{content:""}.fa-folder-blank:before{content:""}.fa-file-waveform:before{content:""}.fa-file-medical-alt:before{content:""}.fa-radiation:before{content:""}.fa-chart-simple:before{content:""}.fa-mars-stroke:before{content:""}.fa-vial:before{content:""}.fa-gauge:before{content:""}.fa-dashboard:before{content:""}.fa-gauge-med:before{content:""}.fa-tachometer-alt-average:before{content:""}.fa-wand-magic-sparkles:before{content:""}.fa-magic-wand-sparkles:before{content:""}.fa-e:before{content:"E"}.fa-pen-clip:before{content:""}.fa-pen-alt:before{content:""}.fa-bridge-circle-exclamation:before{content:""}.fa-user:before{content:""}.fa-school-circle-check:before{content:""}.fa-dumpster:before{content:""}.fa-van-shuttle:before{content:""}.fa-shuttle-van:before{content:""}.fa-building-user:before{content:""}.fa-square-caret-left:before{content:""}.fa-caret-square-left:before{content:""}.fa-highlighter:before{content:""}.fa-key:before{content:""}.fa-bullhorn:before{content:""}.fa-globe:before{content:""}.fa-synagogue:before{content:""}.fa-person-half-dress:before{content:""}.fa-road-bridge:before{content:""}.fa-location-arrow:before{content:""}.fa-c:before{content:"C"}.fa-tablet-button:before{content:""}.fa-building-lock:before{content:""}.fa-pizza-slice:before{content:""}.fa-money-bill-wave:before{content:""}.fa-chart-area:before{content:""}.fa-area-chart:before{content:""}.fa-house-flag:before{content:""}.fa-person-circle-minus:before{content:""}.fa-ban:before{content:""}.fa-cancel:before{content:""}.fa-camera-rotate:before{content:""}.fa-spray-can-sparkles:before{content:""}.fa-air-freshener:before{content:""}.fa-star:before{content:""}.fa-repeat:before{content:""}.fa-cross:before{content:""}.fa-box:before{content:""}.fa-venus-mars:before{content:""}.fa-arrow-pointer:before{content:""}.fa-mouse-pointer:before{content:""}.fa-maximize:before{content:""}.fa-expand-arrows-alt:before{content:""}.fa-charging-station:before{content:""}.fa-shapes:before{content:""}.fa-triangle-circle-square:before{content:""}.fa-shuffle:before{content:""}.fa-random:before{content:""}.fa-person-running:before{content:""}.fa-running:before{content:""}.fa-mobile-retro:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-spider:before{content:""}.fa-hands-bound:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-plane-circle-exclamation:before{content:""}.fa-x-ray:before{content:""}.fa-spell-check:before{content:""}.fa-slash:before{content:""}.fa-computer-mouse:before{content:""}.fa-mouse:before{content:""}.fa-arrow-right-to-bracket:before{content:""}.fa-sign-in:before{content:""}.fa-shop-slash:before{content:""}.fa-store-alt-slash:before{content:""}.fa-server:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-shop-lock:before{content:""}.fa-hourglass-start:before{content:""}.fa-hourglass-1:before{content:""}.fa-blender-phone:before{content:""}.fa-building-wheat:before{content:""}.fa-person-breastfeeding:before{content:""}.fa-right-to-bracket:before{content:""}.fa-sign-in-alt:before{content:""}.fa-venus:before{content:""}.fa-passport:before{content:""}.fa-heart-pulse:before{content:""}.fa-heartbeat:before{content:""}.fa-people-carry-box:before{content:""}.fa-people-carry:before{content:""}.fa-temperature-high:before{content:""}.fa-microchip:before{content:""}.fa-crown:before{content:""}.fa-weight-hanging:before{content:""}.fa-xmarks-lines:before{content:""}.fa-file-prescription:before{content:""}.fa-weight-scale:before{content:""}.fa-weight:before{content:""}.fa-user-group:before{content:""}.fa-user-friends:before{content:""}.fa-arrow-up-a-z:before{content:""}.fa-sort-alpha-up:before{content:""}.fa-chess-knight:before{content:""}.fa-face-laugh-squint:before{content:""}.fa-laugh-squint:before{content:""}.fa-wheelchair:before{content:""}.fa-circle-arrow-up:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-toggle-on:before{content:""}.fa-person-walking:before{content:""}.fa-walking:before{content:""}.fa-l:before{content:"L"}.fa-fire:before{content:""}.fa-bed-pulse:before{content:""}.fa-procedures:before{content:""}.fa-shuttle-space:before{content:""}.fa-space-shuttle:before{content:""}.fa-face-laugh:before{content:""}.fa-laugh:before{content:""}.fa-folder-open:before{content:""}.fa-heart-circle-plus:before{content:""}.fa-code-fork:before{content:""}.fa-city:before{content:""}.fa-microphone-lines:before{content:""}.fa-microphone-alt:before{content:""}.fa-pepper-hot:before{content:""}.fa-unlock:before{content:""}.fa-colon-sign:before{content:""}.fa-headset:before{content:""}.fa-store-slash:before{content:""}.fa-road-circle-xmark:before{content:""}.fa-user-minus:before{content:""}.fa-mars-stroke-up:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-champagne-glasses:before{content:""}.fa-glass-cheers:before{content:""}.fa-clipboard:before{content:""}.fa-house-circle-exclamation:before{content:""}.fa-file-arrow-up:before{content:""}.fa-file-upload:before{content:""}.fa-wifi:before{content:""}.fa-wifi-3:before{content:""}.fa-wifi-strong:before{content:""}.fa-bath:before{content:""}.fa-bathtub:before{content:""}.fa-underline:before{content:""}.fa-user-pen:before{content:""}.fa-user-edit:before{content:""}.fa-signature:before{content:""}.fa-stroopwafel:before{content:""}.fa-bold:before{content:""}.fa-anchor-lock:before{content:""}.fa-building-ngo:before{content:""}.fa-manat-sign:before{content:""}.fa-not-equal:before{content:""}.fa-border-top-left:before{content:""}.fa-border-style:before{content:""}.fa-map-location-dot:before{content:""}.fa-map-marked-alt:before{content:""}.fa-jedi:before{content:""}.fa-square-poll-vertical:before{content:""}.fa-poll:before{content:""}.fa-mug-hot:before{content:""}.fa-car-battery:before{content:""}.fa-battery-car:before{content:""}.fa-gift:before{content:""}.fa-dice-two:before{content:""}.fa-chess-queen:before{content:""}.fa-glasses:before{content:""}.fa-chess-board:before{content:""}.fa-building-circle-check:before{content:""}.fa-person-chalkboard:before{content:""}.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-hand-back-fist:before{content:""}.fa-hand-rock:before{content:""}.fa-square-caret-up:before{content:""}.fa-caret-square-up:before{content:""}.fa-cloud-showers-water:before{content:""}.fa-chart-bar:before{content:""}.fa-bar-chart:before{content:""}.fa-hands-bubbles:before{content:""}.fa-hands-wash:before{content:""}.fa-less-than-equal:before{content:""}.fa-train:before{content:""}.fa-eye-low-vision:before{content:""}.fa-low-vision:before{content:""}.fa-crow:before{content:""}.fa-sailboat:before{content:""}.fa-window-restore:before{content:""}.fa-square-plus:before{content:""}.fa-plus-square:before{content:""}.fa-torii-gate:before{content:""}.fa-frog:before{content:""}.fa-bucket:before{content:""}.fa-image:before{content:""}.fa-microphone:before{content:""}.fa-cow:before{content:""}.fa-caret-up:before{content:""}.fa-screwdriver:before{content:""}.fa-folder-closed:before{content:""}.fa-house-tsunami:before{content:""}.fa-square-nfi:before{content:""}.fa-arrow-up-from-ground-water:before{content:""}.fa-martini-glass:before{content:""}.fa-glass-martini-alt:before{content:""}.fa-rotate-left:before{content:""}.fa-rotate-back:before{content:""}.fa-rotate-backward:before{content:""}.fa-undo-alt:before{content:""}.fa-table-columns:before{content:""}.fa-columns:before{content:""}.fa-lemon:before{content:""}.fa-head-side-mask:before{content:""}.fa-handshake:before{content:""}.fa-gem:before{content:""}.fa-dolly:before{content:""}.fa-dolly-box:before{content:""}.fa-smoking:before{content:""}.fa-minimize:before{content:""}.fa-compress-arrows-alt:before{content:""}.fa-monument:before{content:""}.fa-snowplow:before{content:""}.fa-angles-right:before{content:""}.fa-angle-double-right:before{content:""}.fa-cannabis:before{content:""}.fa-circle-play:before{content:""}.fa-play-circle:before{content:""}.fa-tablets:before{content:""}.fa-ethernet:before{content:""}.fa-euro-sign:before{content:""}.fa-eur:before{content:""}.fa-euro:before{content:""}.fa-chair:before{content:""}.fa-circle-check:before{content:""}.fa-check-circle:before{content:""}.fa-circle-stop:before{content:""}.fa-stop-circle:before{content:""}.fa-compass-drafting:before{content:""}.fa-drafting-compass:before{content:""}.fa-plate-wheat:before{content:""}.fa-icicles:before{content:""}.fa-person-shelter:before{content:""}.fa-neuter:before{content:""}.fa-id-badge:before{content:""}.fa-marker:before{content:""}.fa-face-laugh-beam:before{content:""}.fa-laugh-beam:before{content:""}.fa-helicopter-symbol:before{content:""}.fa-universal-access:before{content:""}.fa-circle-chevron-up:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-lari-sign:before{content:""}.fa-volcano:before{content:""}.fa-person-walking-dashed-line-arrow-right:before{content:""}.fa-sterling-sign:before{content:""}.fa-gbp:before{content:""}.fa-pound-sign:before{content:""}.fa-viruses:before{content:""}.fa-square-person-confined:before{content:""}.fa-user-tie:before{content:""}.fa-arrow-down-long:before{content:""}.fa-long-arrow-down:before{content:""}.fa-tent-arrow-down-to-line:before{content:""}.fa-certificate:before{content:""}.fa-reply-all:before{content:""}.fa-mail-reply-all:before{content:""}.fa-suitcase:before{content:""}.fa-person-skating:before{content:""}.fa-skating:before{content:""}.fa-filter-circle-dollar:before{content:""}.fa-funnel-dollar:before{content:""}.fa-camera-retro:before{content:""}.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-file-import:before{content:""}.fa-arrow-right-to-file:before{content:""}.fa-square-arrow-up-right:before{content:""}.fa-external-link-square:before{content:""}.fa-box-open:before{content:""}.fa-scroll:before{content:""}.fa-spa:before{content:""}.fa-location-pin-lock:before{content:""}.fa-pause:before{content:""}.fa-hill-avalanche:before{content:""}.fa-temperature-empty:before{content:""}.fa-temperature-0:before{content:""}.fa-thermometer-0:before{content:""}.fa-thermometer-empty:before{content:""}.fa-bomb:before{content:""}.fa-registered:before{content:""}.fa-address-card:before{content:""}.fa-contact-card:before{content:""}.fa-vcard:before{content:""}.fa-scale-unbalanced-flip:before{content:""}.fa-balance-scale-right:before{content:""}.fa-subscript:before{content:""}.fa-diamond-turn-right:before{content:""}.fa-directions:before{content:""}.fa-burst:before{content:""}.fa-house-laptop:before{content:""}.fa-laptop-house:before{content:""}.fa-face-tired:before{content:""}.fa-tired:before{content:""}.fa-money-bills:before{content:""}.fa-smog:before{content:""}.fa-crutch:before{content:""}.fa-cloud-arrow-up:before{content:""}.fa-cloud-upload:before{content:""}.fa-cloud-upload-alt:before{content:""}.fa-palette:before{content:""}.fa-arrows-turn-right:before{content:""}.fa-vest:before{content:""}.fa-ferry:before{content:""}.fa-arrows-down-to-people:before{content:""}.fa-seedling:before{content:""}.fa-sprout:before{content:""}.fa-left-right:before{content:""}.fa-arrows-alt-h:before{content:""}.fa-boxes-packing:before{content:""}.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-group-arrows-rotate:before{content:""}.fa-bowl-food:before{content:""}.fa-candy-cane:before{content:""}.fa-arrow-down-wide-short:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-down:before{content:""}.fa-cloud-bolt:before{content:""}.fa-thunderstorm:before{content:""}.fa-text-slash:before{content:""}.fa-remove-format:before{content:""}.fa-face-smile-wink:before{content:""}.fa-smile-wink:before{content:""}.fa-file-word:before{content:""}.fa-file-powerpoint:before{content:""}.fa-arrows-left-right:before{content:""}.fa-arrows-h:before{content:""}.fa-house-lock:before{content:""}.fa-cloud-arrow-down:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-download-alt:before{content:""}.fa-children:before{content:""}.fa-chalkboard:before{content:""}.fa-blackboard:before{content:""}.fa-user-large-slash:before{content:""}.fa-user-alt-slash:before{content:""}.fa-envelope-open:before{content:""}.fa-handshake-simple-slash:before{content:""}.fa-handshake-alt-slash:before{content:""}.fa-mattress-pillow:before{content:""}.fa-guarani-sign:before{content:""}.fa-arrows-rotate:before{content:""}.fa-refresh:before{content:""}.fa-sync:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-greater-than-equal:before{content:""}.fa-shield-halved:before{content:""}.fa-shield-alt:before{content:""}.fa-book-atlas:before{content:""}.fa-atlas:before{content:""}.fa-virus:before{content:""}.fa-envelope-circle-check:before{content:""}.fa-layer-group:before{content:""}.fa-arrows-to-dot:before{content:""}.fa-archway:before{content:""}.fa-heart-circle-check:before{content:""}.fa-house-chimney-crack:before{content:""}.fa-house-damage:before{content:""}.fa-file-zipper:before{content:""}.fa-file-archive:before{content:""}.fa-square:before{content:""}.fa-martini-glass-empty:before{content:""}.fa-glass-martini:before{content:""}.fa-couch:before{content:""}.fa-cedi-sign:before{content:""}.fa-italic:before{content:""}.fa-church:before{content:""}.fa-comments-dollar:before{content:""}.fa-democrat:before{content:""}.fa-z:before{content:"Z"}.fa-person-skiing:before{content:""}.fa-skiing:before{content:""}.fa-road-lock:before{content:""}.fa-a:before{content:"A"}.fa-temperature-arrow-down:before{content:""}.fa-temperature-down:before{content:""}.fa-feather-pointed:before{content:""}.fa-feather-alt:before{content:""}.fa-p:before{content:"P"}.fa-snowflake:before{content:""}.fa-newspaper:before{content:""}.fa-rectangle-ad:before{content:""}.fa-ad:before{content:""}.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-locust:before{content:""}.fa-sort:before{content:""}.fa-unsorted:before{content:""}.fa-list-ol:before{content:""}.fa-list-1-2:before{content:""}.fa-list-numeric:before{content:""}.fa-person-dress-burst:before{content:""}.fa-money-check-dollar:before{content:""}.fa-money-check-alt:before{content:""}.fa-vector-square:before{content:""}.fa-bread-slice:before{content:""}.fa-language:before{content:""}.fa-face-kiss-wink-heart:before{content:""}.fa-kiss-wink-heart:before{content:""}.fa-filter:before{content:""}.fa-question:before{content:"?"}.fa-file-signature:before{content:""}.fa-up-down-left-right:before{content:""}.fa-arrows-alt:before{content:""}.fa-house-chimney-user:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-puzzle-piece:before{content:""}.fa-money-check:before{content:""}.fa-star-half-stroke:before{content:""}.fa-star-half-alt:before{content:""}.fa-code:before{content:""}.fa-whiskey-glass:before{content:""}.fa-glass-whiskey:before{content:""}.fa-building-circle-exclamation:before{content:""}.fa-magnifying-glass-chart:before{content:""}.fa-arrow-up-right-from-square:before{content:""}.fa-external-link:before{content:""}.fa-cubes-stacked:before{content:""}.fa-won-sign:before{content:""}.fa-krw:before{content:""}.fa-won:before{content:""}.fa-virus-covid:before{content:""}.fa-austral-sign:before{content:""}.fa-f:before{content:"F"}.fa-leaf:before{content:""}.fa-road:before{content:""}.fa-taxi:before{content:""}.fa-cab:before{content:""}.fa-person-circle-plus:before{content:""}.fa-chart-pie:before{content:""}.fa-pie-chart:before{content:""}.fa-bolt-lightning:before{content:""}.fa-sack-xmark:before{content:""}.fa-file-excel:before{content:""}.fa-file-contract:before{content:""}.fa-fish-fins:before{content:""}.fa-building-flag:before{content:""}.fa-face-grin-beam:before{content:""}.fa-grin-beam:before{content:""}.fa-object-ungroup:before{content:""}.fa-poop:before{content:""}.fa-location-pin:before{content:""}.fa-map-marker:before{content:""}.fa-kaaba:before{content:""}.fa-toilet-paper:before{content:""}.fa-helmet-safety:before{content:""}.fa-hard-hat:before{content:""}.fa-hat-hard:before{content:""}.fa-eject:before{content:""}.fa-circle-right:before{content:""}.fa-arrow-alt-circle-right:before{content:""}.fa-plane-circle-check:before{content:""}.fa-face-rolling-eyes:before{content:""}.fa-meh-rolling-eyes:before{content:""}.fa-object-group:before{content:""}.fa-chart-line:before{content:""}.fa-line-chart:before{content:""}.fa-mask-ventilator:before{content:""}.fa-arrow-right:before{content:""}.fa-signs-post:before{content:""}.fa-map-signs:before{content:""}.fa-cash-register:before{content:""}.fa-person-circle-question:before{content:""}.fa-h:before{content:"H"}.fa-tarp:before{content:""}.fa-screwdriver-wrench:before{content:""}.fa-tools:before{content:""}.fa-arrows-to-eye:before{content:""}.fa-plug-circle-bolt:before{content:""}.fa-heart:before{content:""}.fa-mars-and-venus:before{content:""}.fa-house-user:before{content:""}.fa-home-user:before{content:""}.fa-dumpster-fire:before{content:""}.fa-house-crack:before{content:""}.fa-martini-glass-citrus:before{content:""}.fa-cocktail:before{content:""}.fa-face-surprise:before{content:""}.fa-surprise:before{content:""}.fa-bottle-water:before{content:""}.fa-circle-pause:before{content:""}.fa-pause-circle:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-apple-whole:before{content:""}.fa-apple-alt:before{content:""}.fa-kitchen-set:before{content:""}.fa-r:before{content:"R"}.fa-temperature-quarter:before{content:""}.fa-temperature-1:before{content:""}.fa-thermometer-1:before{content:""}.fa-thermometer-quarter:before{content:""}.fa-cube:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-shield-dog:before{content:""}.fa-solar-panel:before{content:""}.fa-lock-open:before{content:""}.fa-elevator:before{content:""}.fa-money-bill-transfer:before{content:""}.fa-money-bill-trend-up:before{content:""}.fa-house-flood-water-circle-arrow-right:before{content:""}.fa-square-poll-horizontal:before{content:""}.fa-poll-h:before{content:""}.fa-circle:before{content:""}.fa-backward-fast:before{content:""}.fa-fast-backward:before{content:""}.fa-recycle:before{content:""}.fa-user-astronaut:before{content:""}.fa-plane-slash:before{content:""}.fa-trademark:before{content:""}.fa-basketball:before{content:""}.fa-basketball-ball:before{content:""}.fa-satellite-dish:before{content:""}.fa-circle-up:before{content:""}.fa-arrow-alt-circle-up:before{content:""}.fa-mobile-screen-button:before{content:""}.fa-mobile-alt:before{content:""}.fa-volume-high:before{content:""}.fa-volume-up:before{content:""}.fa-users-rays:before{content:""}.fa-wallet:before{content:""}.fa-clipboard-check:before{content:""}.fa-file-audio:before{content:""}.fa-burger:before{content:""}.fa-hamburger:before{content:""}.fa-wrench:before{content:""}.fa-bugs:before{content:""}.fa-rupee-sign:before{content:""}.fa-rupee:before{content:""}.fa-file-image:before{content:""}.fa-circle-question:before{content:""}.fa-question-circle:before{content:""}.fa-plane-departure:before{content:""}.fa-handshake-slash:before{content:""}.fa-book-bookmark:before{content:""}.fa-code-branch:before{content:""}.fa-hat-cowboy:before{content:""}.fa-bridge:before{content:""}.fa-phone-flip:before{content:""}.fa-phone-alt:before{content:""}.fa-truck-front:before{content:""}.fa-cat:before{content:""}.fa-anchor-circle-exclamation:before{content:""}.fa-truck-field:before{content:""}.fa-route:before{content:""}.fa-clipboard-question:before{content:""}.fa-panorama:before{content:""}.fa-comment-medical:before{content:""}.fa-teeth-open:before{content:""}.fa-file-circle-minus:before{content:""}.fa-tags:before{content:""}.fa-wine-glass:before{content:""}.fa-forward-fast:before{content:""}.fa-fast-forward:before{content:""}.fa-face-meh-blank:before{content:""}.fa-meh-blank:before{content:""}.fa-square-parking:before{content:""}.fa-parking:before{content:""}.fa-house-signal:before{content:""}.fa-bars-progress:before{content:""}.fa-tasks-alt:before{content:""}.fa-faucet-drip:before{content:""}.fa-cart-flatbed:before{content:""}.fa-dolly-flatbed:before{content:""}.fa-ban-smoking:before{content:""}.fa-smoking-ban:before{content:""}.fa-terminal:before{content:""}.fa-mobile-button:before{content:""}.fa-house-medical-flag:before{content:""}.fa-basket-shopping:before{content:""}.fa-shopping-basket:before{content:""}.fa-tape:before{content:""}.fa-bus-simple:before{content:""}.fa-bus-alt:before{content:""}.fa-eye:before{content:""}.fa-face-sad-cry:before{content:""}.fa-sad-cry:before{content:""}.fa-audio-description:before{content:""}.fa-person-military-to-person:before{content:""}.fa-file-shield:before{content:""}.fa-user-slash:before{content:""}.fa-pen:before{content:""}.fa-tower-observation:before{content:""}.fa-file-code:before{content:""}.fa-signal:before{content:""}.fa-signal-5:before{content:""}.fa-signal-perfect:before{content:""}.fa-bus:before{content:""}.fa-heart-circle-xmark:before{content:""}.fa-house-chimney:before{content:""}.fa-home-lg:before{content:""}.fa-window-maximize:before{content:""}.fa-face-frown:before{content:""}.fa-frown:before{content:""}.fa-prescription:before{content:""}.fa-shop:before{content:""}.fa-store-alt:before{content:""}.fa-floppy-disk:before{content:""}.fa-save:before{content:""}.fa-vihara:before{content:""}.fa-scale-unbalanced:before{content:""}.fa-balance-scale-left:before{content:""}.fa-sort-up:before{content:""}.fa-sort-asc:before{content:""}.fa-comment-dots:before{content:""}.fa-commenting:before{content:""}.fa-plant-wilt:before{content:""}.fa-diamond:before{content:""}.fa-face-grin-squint:before{content:""}.fa-grin-squint:before{content:""}.fa-hand-holding-dollar:before{content:""}.fa-hand-holding-usd:before{content:""}.fa-bacterium:before{content:""}.fa-hand-pointer:before{content:""}.fa-drum-steelpan:before{content:""}.fa-hand-scissors:before{content:""}.fa-hands-praying:before{content:""}.fa-praying-hands:before{content:""}.fa-arrow-rotate-right:before{content:""}.fa-arrow-right-rotate:before{content:""}.fa-arrow-rotate-forward:before{content:""}.fa-redo:before{content:""}.fa-biohazard:before{content:""}.fa-location-crosshairs:before{content:""}.fa-location:before{content:""}.fa-mars-double:before{content:""}.fa-child-dress:before{content:""}.fa-users-between-lines:before{content:""}.fa-lungs-virus:before{content:""}.fa-face-grin-tears:before{content:""}.fa-grin-tears:before{content:""}.fa-phone:before{content:""}.fa-calendar-xmark:before{content:""}.fa-calendar-times:before{content:""}.fa-child-reaching:before{content:""}.fa-head-side-virus:before{content:""}.fa-user-gear:before{content:""}.fa-user-cog:before{content:""}.fa-arrow-up-1-9:before{content:""}.fa-sort-numeric-up:before{content:""}.fa-door-closed:before{content:""}.fa-shield-virus:before{content:""}.fa-dice-six:before{content:""}.fa-mosquito-net:before{content:""}.fa-bridge-water:before{content:""}.fa-person-booth:before{content:""}.fa-text-width:before{content:""}.fa-hat-wizard:before{content:""}.fa-pen-fancy:before{content:""}.fa-person-digging:before{content:""}.fa-digging:before{content:""}.fa-trash:before{content:""}.fa-gauge-simple:before{content:""}.fa-gauge-simple-med:before{content:""}.fa-tachometer-average:before{content:""}.fa-book-medical:before{content:""}.fa-poo:before{content:""}.fa-quote-right:before{content:""}.fa-quote-right-alt:before{content:""}.fa-shirt:before{content:""}.fa-t-shirt:before{content:""}.fa-tshirt:before{content:""}.fa-cubes:before{content:""}.fa-divide:before{content:""}.fa-tenge-sign:before{content:""}.fa-tenge:before{content:""}.fa-headphones:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-clapping:before{content:""}.fa-republican:before{content:""}.fa-arrow-left:before{content:""}.fa-person-circle-xmark:before{content:""}.fa-ruler:before{content:""}.fa-align-left:before{content:""}.fa-dice-d6:before{content:""}.fa-restroom:before{content:""}.fa-j:before{content:"J"}.fa-users-viewfinder:before{content:""}.fa-file-video:before{content:""}.fa-up-right-from-square:before{content:""}.fa-external-link-alt:before{content:""}.fa-table-cells:before{content:""}.fa-th:before{content:""}.fa-file-pdf:before{content:""}.fa-book-bible:before{content:""}.fa-bible:before{content:""}.fa-o:before{content:"O"}.fa-suitcase-medical:before{content:""}.fa-medkit:before{content:""}.fa-user-secret:before{content:""}.fa-otter:before{content:""}.fa-person-dress:before{content:""}.fa-female:before{content:""}.fa-comment-dollar:before{content:""}.fa-business-time:before{content:""}.fa-briefcase-clock:before{content:""}.fa-table-cells-large:before{content:""}.fa-th-large:before{content:""}.fa-book-tanakh:before{content:""}.fa-tanakh:before{content:""}.fa-phone-volume:before{content:""}.fa-volume-control-phone:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-clipboard-user:before{content:""}.fa-child:before{content:""}.fa-lira-sign:before{content:""}.fa-satellite:before{content:""}.fa-plane-lock:before{content:""}.fa-tag:before{content:""}.fa-comment:before{content:""}.fa-cake-candles:before{content:""}.fa-birthday-cake:before{content:""}.fa-cake:before{content:""}.fa-envelope:before{content:""}.fa-angles-up:before{content:""}.fa-angle-double-up:before{content:""}.fa-paperclip:before{content:""}.fa-arrow-right-to-city:before{content:""}.fa-ribbon:before{content:""}.fa-lungs:before{content:""}.fa-arrow-up-9-1:before{content:""}.fa-sort-numeric-up-alt:before{content:""}.fa-litecoin-sign:before{content:""}.fa-border-none:before{content:""}.fa-circle-nodes:before{content:""}.fa-parachute-box:before{content:""}.fa-indent:before{content:""}.fa-truck-field-un:before{content:""}.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-mountain:before{content:""}.fa-user-doctor:before{content:""}.fa-user-md:before{content:""}.fa-circle-info:before{content:""}.fa-info-circle:before{content:""}.fa-cloud-meatball:before{content:""}.fa-camera:before{content:""}.fa-camera-alt:before{content:""}.fa-square-virus:before{content:""}.fa-meteor:before{content:""}.fa-car-on:before{content:""}.fa-sleigh:before{content:""}.fa-arrow-down-1-9:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-down:before{content:""}.fa-hand-holding-droplet:before{content:""}.fa-hand-holding-water:before{content:""}.fa-water:before{content:""}.fa-calendar-check:before{content:""}.fa-braille:before{content:""}.fa-prescription-bottle-medical:before{content:""}.fa-prescription-bottle-alt:before{content:""}.fa-landmark:before{content:""}.fa-truck:before{content:""}.fa-crosshairs:before{content:""}.fa-person-cane:before{content:""}.fa-tent:before{content:""}.fa-vest-patches:before{content:""}.fa-check-double:before{content:""}.fa-arrow-down-a-z:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-down:before{content:""}.fa-money-bill-wheat:before{content:""}.fa-cookie:before{content:""}.fa-arrow-rotate-left:before{content:""}.fa-arrow-left-rotate:before{content:""}.fa-arrow-rotate-back:before{content:""}.fa-arrow-rotate-backward:before{content:""}.fa-undo:before{content:""}.fa-hard-drive:before{content:""}.fa-hdd:before{content:""}.fa-face-grin-squint-tears:before{content:""}.fa-grin-squint-tears:before{content:""}.fa-dumbbell:before{content:""}.fa-rectangle-list:before{content:""}.fa-list-alt:before{content:""}.fa-tarp-droplet:before{content:""}.fa-house-medical-circle-check:before{content:""}.fa-person-skiing-nordic:before{content:""}.fa-skiing-nordic:before{content:""}.fa-calendar-plus:before{content:""}.fa-plane-arrival:before{content:""}.fa-circle-left:before{content:""}.fa-arrow-alt-circle-left:before{content:""}.fa-train-subway:before{content:""}.fa-subway:before{content:""}.fa-chart-gantt:before{content:""}.fa-indian-rupee-sign:before{content:""}.fa-indian-rupee:before{content:""}.fa-inr:before{content:""}.fa-crop-simple:before{content:""}.fa-crop-alt:before{content:""}.fa-money-bill-1:before{content:""}.fa-money-bill-alt:before{content:""}.fa-left-long:before{content:""}.fa-long-arrow-alt-left:before{content:""}.fa-dna:before{content:""}.fa-virus-slash:before{content:""}.fa-minus:before{content:""}.fa-subtract:before{content:""}.fa-chess:before{content:""}.fa-arrow-left-long:before{content:""}.fa-long-arrow-left:before{content:""}.fa-plug-circle-check:before{content:""}.fa-street-view:before{content:""}.fa-franc-sign:before{content:""}.fa-volume-off:before{content:""}.fa-hands-asl-interpreting:before{content:""}.fa-american-sign-language-interpreting:before{content:""}.fa-asl-interpreting:before{content:""}.fa-hands-american-sign-language-interpreting:before{content:""}.fa-gear:before{content:""}.fa-cog:before{content:""}.fa-droplet-slash:before{content:""}.fa-tint-slash:before{content:""}.fa-mosque:before{content:""}.fa-mosquito:before{content:""}.fa-star-of-david:before{content:""}.fa-person-military-rifle:before{content:""}.fa-cart-shopping:before{content:""}.fa-shopping-cart:before{content:""}.fa-vials:before{content:""}.fa-plug-circle-plus:before{content:""}.fa-place-of-worship:before{content:""}.fa-grip-vertical:before{content:""}.fa-arrow-turn-up:before{content:""}.fa-level-up:before{content:""}.fa-u:before{content:"U"}.fa-square-root-variable:before{content:""}.fa-square-root-alt:before{content:""}.fa-clock:before{content:""}.fa-clock-four:before{content:""}.fa-backward-step:before{content:""}.fa-step-backward:before{content:""}.fa-pallet:before{content:""}.fa-faucet:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-s:before{content:"S"}.fa-timeline:before{content:""}.fa-keyboard:before{content:""}.fa-caret-down:before{content:""}.fa-house-chimney-medical:before{content:""}.fa-clinic-medical:before{content:""}.fa-temperature-three-quarters:before{content:""}.fa-temperature-3:before{content:""}.fa-thermometer-3:before{content:""}.fa-thermometer-three-quarters:before{content:""}.fa-mobile-screen:before{content:""}.fa-mobile-android-alt:before{content:""}.fa-plane-up:before{content:""}.fa-piggy-bank:before{content:""}.fa-battery-half:before{content:""}.fa-battery-3:before{content:""}.fa-mountain-city:before{content:""}.fa-coins:before{content:""}.fa-khanda:before{content:""}.fa-sliders:before{content:""}.fa-sliders-h:before{content:""}.fa-folder-tree:before{content:""}.fa-network-wired:before{content:""}.fa-map-pin:before{content:""}.fa-hamsa:before{content:""}.fa-cent-sign:before{content:""}.fa-flask:before{content:""}.fa-person-pregnant:before{content:""}.fa-wand-sparkles:before{content:""}.fa-ellipsis-vertical:before{content:""}.fa-ellipsis-v:before{content:""}.fa-ticket:before{content:""}.fa-power-off:before{content:""}.fa-right-long:before{content:""}.fa-long-arrow-alt-right:before{content:""}.fa-flag-usa:before{content:""}.fa-laptop-file:before{content:""}.fa-tty:before{content:""}.fa-teletype:before{content:""}.fa-diagram-next:before{content:""}.fa-person-rifle:before{content:""}.fa-house-medical-circle-exclamation:before{content:""}.fa-closed-captioning:before{content:""}.fa-person-hiking:before{content:""}.fa-hiking:before{content:""}.fa-venus-double:before{content:""}.fa-images:before{content:""}.fa-calculator:before{content:""}.fa-people-pulling:before{content:""}.fa-n:before{content:"N"}.fa-cable-car:before{content:""}.fa-tram:before{content:""}.fa-cloud-rain:before{content:""}.fa-building-circle-xmark:before{content:""}.fa-ship:before{content:""}.fa-arrows-down-to-line:before{content:""}.fa-download:before{content:""}.fa-face-grin:before{content:""}.fa-grin:before{content:""}.fa-delete-left:before{content:""}.fa-backspace:before{content:""}.fa-eye-dropper:before{content:""}.fa-eye-dropper-empty:before{content:""}.fa-eyedropper:before{content:""}.fa-file-circle-check:before{content:""}.fa-forward:before{content:""}.fa-mobile:before{content:""}.fa-mobile-android:before{content:""}.fa-mobile-phone:before{content:""}.fa-face-meh:before{content:""}.fa-meh:before{content:""}.fa-align-center:before{content:""}.fa-book-skull:before{content:""}.fa-book-dead:before{content:""}.fa-id-card:before{content:""}.fa-drivers-license:before{content:""}.fa-outdent:before{content:""}.fa-dedent:before{content:""}.fa-heart-circle-exclamation:before{content:""}.fa-house:before{content:""}.fa-home:before{content:""}.fa-home-alt:before{content:""}.fa-home-lg-alt:before{content:""}.fa-calendar-week:before{content:""}.fa-laptop-medical:before{content:""}.fa-b:before{content:"B"}.fa-file-medical:before{content:""}.fa-dice-one:before{content:""}.fa-kiwi-bird:before{content:""}.fa-arrow-right-arrow-left:before{content:""}.fa-exchange:before{content:""}.fa-rotate-right:before{content:""}.fa-redo-alt:before{content:""}.fa-rotate-forward:before{content:""}.fa-utensils:before{content:""}.fa-cutlery:before{content:""}.fa-arrow-up-wide-short:before{content:""}.fa-sort-amount-up:before{content:""}.fa-mill-sign:before{content:""}.fa-bowl-rice:before{content:""}.fa-skull:before{content:""}.fa-tower-broadcast:before{content:""}.fa-broadcast-tower:before{content:""}.fa-truck-pickup:before{content:""}.fa-up-long:before{content:""}.fa-long-arrow-alt-up:before{content:""}.fa-stop:before{content:""}.fa-code-merge:before{content:""}.fa-upload:before{content:""}.fa-hurricane:before{content:""}.fa-mound:before{content:""}.fa-toilet-portable:before{content:""}.fa-compact-disc:before{content:""}.fa-file-arrow-down:before{content:""}.fa-file-download:before{content:""}.fa-caravan:before{content:""}.fa-shield-cat:before{content:""}.fa-bolt:before{content:""}.fa-zap:before{content:""}.fa-glass-water:before{content:""}.fa-oil-well:before{content:""}.fa-vault:before{content:""}.fa-mars:before{content:""}.fa-toilet:before{content:""}.fa-plane-circle-xmark:before{content:""}.fa-yen-sign:before{content:""}.fa-cny:before{content:""}.fa-jpy:before{content:""}.fa-rmb:before{content:""}.fa-yen:before{content:""}.fa-ruble-sign:before{content:""}.fa-rouble:before{content:""}.fa-rub:before{content:""}.fa-ruble:before{content:""}.fa-sun:before{content:""}.fa-guitar:before{content:""}.fa-face-laugh-wink:before{content:""}.fa-laugh-wink:before{content:""}.fa-horse-head:before{content:""}.fa-bore-hole:before{content:""}.fa-industry:before{content:""}.fa-circle-down:before{content:""}.fa-arrow-alt-circle-down:before{content:""}.fa-arrows-turn-to-dots:before{content:""}.fa-florin-sign:before{content:""}.fa-arrow-down-short-wide:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-amount-down-alt:before{content:""}.fa-less-than:before{content:"<"}.fa-angle-down:before{content:""}.fa-car-tunnel:before{content:""}.fa-head-side-cough:before{content:""}.fa-grip-lines:before{content:""}.fa-thumbs-down:before{content:""}.fa-user-lock:before{content:""}.fa-arrow-right-long:before{content:""}.fa-long-arrow-right:before{content:""}.fa-anchor-circle-xmark:before{content:""}.fa-ellipsis:before{content:""}.fa-ellipsis-h:before{content:""}.fa-chess-pawn:before{content:""}.fa-kit-medical:before{content:""}.fa-first-aid:before{content:""}.fa-person-through-window:before{content:""}.fa-toolbox:before{content:""}.fa-hands-holding-circle:before{content:""}.fa-bug:before{content:""}.fa-credit-card:before{content:""}.fa-credit-card-alt:before{content:""}.fa-car:before{content:""}.fa-automobile:before{content:""}.fa-hand-holding-hand:before{content:""}.fa-book-open-reader:before{content:""}.fa-book-reader:before{content:""}.fa-mountain-sun:before{content:""}.fa-arrows-left-right-to-line:before{content:""}.fa-dice-d20:before{content:""}.fa-truck-droplet:before{content:""}.fa-file-circle-xmark:before{content:""}.fa-temperature-arrow-up:before{content:""}.fa-temperature-up:before{content:""}.fa-medal:before{content:""}.fa-bed:before{content:""}.fa-square-h:before{content:""}.fa-h-square:before{content:""}.fa-podcast:before{content:""}.fa-temperature-full:before{content:""}.fa-temperature-4:before{content:""}.fa-thermometer-4:before{content:""}.fa-thermometer-full:before{content:""}.fa-bell:before{content:""}.fa-superscript:before{content:""}.fa-plug-circle-xmark:before{content:""}.fa-star-of-life:before{content:""}.fa-phone-slash:before{content:""}.fa-paint-roller:before{content:""}.fa-handshake-angle:before{content:""}.fa-hands-helping:before{content:""}.fa-location-dot:before{content:""}.fa-map-marker-alt:before{content:""}.fa-file:before{content:""}.fa-greater-than:before{content:">"}.fa-person-swimming:before{content:""}.fa-swimmer:before{content:""}.fa-arrow-down:before{content:""}.fa-droplet:before{content:""}.fa-tint:before{content:""}.fa-eraser:before{content:""}.fa-earth-americas:before{content:""}.fa-earth:before{content:""}.fa-earth-america:before{content:""}.fa-globe-americas:before{content:""}.fa-person-burst:before{content:""}.fa-dove:before{content:""}.fa-battery-empty:before{content:""}.fa-battery-0:before{content:""}.fa-socks:before{content:""}.fa-inbox:before{content:""}.fa-section:before{content:""}.fa-gauge-high:before{content:""}.fa-tachometer-alt:before{content:""}.fa-tachometer-alt-fast:before{content:""}.fa-envelope-open-text:before{content:""}.fa-hospital:before{content:""}.fa-hospital-alt:before{content:""}.fa-hospital-wide:before{content:""}.fa-wine-bottle:before{content:""}.fa-chess-rook:before{content:""}.fa-bars-staggered:before{content:""}.fa-reorder:before{content:""}.fa-stream:before{content:""}.fa-dharmachakra:before{content:""}.fa-hotdog:before{content:""}.fa-person-walking-with-cane:before{content:""}.fa-blind:before{content:""}.fa-drum:before{content:""}.fa-ice-cream:before{content:""}.fa-heart-circle-bolt:before{content:""}.fa-fax:before{content:""}.fa-paragraph:before{content:""}.fa-check-to-slot:before{content:""}.fa-vote-yea:before{content:""}.fa-star-half:before{content:""}.fa-boxes-stacked:before{content:""}.fa-boxes:before{content:""}.fa-boxes-alt:before{content:""}.fa-link:before{content:""}.fa-chain:before{content:""}.fa-ear-listen:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-tree-city:before{content:""}.fa-play:before{content:""}.fa-font:before{content:""}.fa-rupiah-sign:before{content:""}.fa-magnifying-glass:before{content:""}.fa-search:before{content:""}.fa-table-tennis-paddle-ball:before{content:""}.fa-ping-pong-paddle-ball:before{content:""}.fa-table-tennis:before{content:""}.fa-person-dots-from-line:before{content:""}.fa-diagnoses:before{content:""}.fa-trash-can-arrow-up:before{content:""}.fa-trash-restore-alt:before{content:""}.fa-naira-sign:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-walkie-talkie:before{content:""}.fa-file-pen:before{content:""}.fa-file-edit:before{content:""}.fa-receipt:before{content:""}.fa-square-pen:before{content:""}.fa-pen-square:before{content:""}.fa-pencil-square:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-person-circle-exclamation:before{content:""}.fa-chevron-down:before{content:""}.fa-battery-full:before{content:""}.fa-battery:before{content:""}.fa-battery-5:before{content:""}.fa-skull-crossbones:before{content:""}.fa-code-compare:before{content:""}.fa-list-ul:before{content:""}.fa-list-dots:before{content:""}.fa-school-lock:before{content:""}.fa-tower-cell:before{content:""}.fa-down-long:before{content:""}.fa-long-arrow-alt-down:before{content:""}.fa-ranking-star:before{content:""}.fa-chess-king:before{content:""}.fa-person-harassing:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-landmark-dome:before{content:""}.fa-landmark-alt:before{content:""}.fa-arrow-up:before{content:""}.fa-tv:before{content:""}.fa-television:before{content:""}.fa-tv-alt:before{content:""}.fa-shrimp:before{content:""}.fa-list-check:before{content:""}.fa-tasks:before{content:""}.fa-jug-detergent:before{content:""}.fa-circle-user:before{content:""}.fa-user-circle:before{content:""}.fa-user-shield:before{content:""}.fa-wind:before{content:""}.fa-car-burst:before{content:""}.fa-car-crash:before{content:""}.fa-y:before{content:"Y"}.fa-person-snowboarding:before{content:""}.fa-snowboarding:before{content:""}.fa-truck-fast:before{content:""}.fa-shipping-fast:before{content:""}.fa-fish:before{content:""}.fa-user-graduate:before{content:""}.fa-circle-half-stroke:before{content:""}.fa-adjust:before{content:""}.fa-clapperboard:before{content:""}.fa-circle-radiation:before{content:""}.fa-radiation-alt:before{content:""}.fa-baseball:before{content:""}.fa-baseball-ball:before{content:""}.fa-jet-fighter-up:before{content:""}.fa-diagram-project:before{content:""}.fa-project-diagram:before{content:""}.fa-copy:before{content:""}.fa-volume-xmark:before{content:""}.fa-volume-mute:before{content:""}.fa-volume-times:before{content:""}.fa-hand-sparkles:before{content:""}.fa-grip:before{content:""}.fa-grip-horizontal:before{content:""}.fa-share-from-square:before{content:""}.fa-share-square:before{content:""}.fa-child-combatant:before{content:""}.fa-child-rifle:before{content:""}.fa-gun:before{content:""}.fa-square-phone:before{content:""}.fa-phone-square:before{content:""}.fa-plus:before{content:"+"}.fa-add:before{content:"+"}.fa-expand:before{content:""}.fa-computer:before{content:""}.fa-xmark:before{content:""}.fa-close:before{content:""}.fa-multiply:before{content:""}.fa-remove:before{content:""}.fa-times:before{content:""}.fa-arrows-up-down-left-right:before{content:""}.fa-arrows:before{content:""}.fa-chalkboard-user:before{content:""}.fa-chalkboard-teacher:before{content:""}.fa-peso-sign:before{content:""}.fa-building-shield:before{content:""}.fa-baby:before{content:""}.fa-users-line:before{content:""}.fa-quote-left:before{content:""}.fa-quote-left-alt:before{content:""}.fa-tractor:before{content:""}.fa-trash-arrow-up:before{content:""}.fa-trash-restore:before{content:""}.fa-arrow-down-up-lock:before{content:""}.fa-lines-leaning:before{content:""}.fa-ruler-combined:before{content:""}.fa-copyright:before{content:""}.fa-equals:before{content:"="}.fa-blender:before{content:""}.fa-teeth:before{content:""}.fa-shekel-sign:before{content:""}.fa-ils:before{content:""}.fa-shekel:before{content:""}.fa-sheqel:before{content:""}.fa-sheqel-sign:before{content:""}.fa-map:before{content:""}.fa-rocket:before{content:""}.fa-photo-film:before{content:""}.fa-photo-video:before{content:""}.fa-folder-minus:before{content:""}.fa-store:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-plug-circle-minus:before{content:""}.fa-sign-hanging:before{content:""}.fa-sign:before{content:""}.fa-bezier-curve:before{content:""}.fa-bell-slash:before{content:""}.fa-tablet:before{content:""}.fa-tablet-android:before{content:""}.fa-school-flag:before{content:""}.fa-fill:before{content:""}.fa-angle-up:before{content:""}.fa-drumstick-bite:before{content:""}.fa-holly-berry:before{content:""}.fa-chevron-left:before{content:""}.fa-bacteria:before{content:""}.fa-hand-lizard:before{content:""}.fa-notdef:before{content:""}.fa-disease:before{content:""}.fa-briefcase-medical:before{content:""}.fa-genderless:before{content:""}.fa-chevron-right:before{content:""}.fa-retweet:before{content:""}.fa-car-rear:before{content:""}.fa-car-alt:before{content:""}.fa-pump-soap:before{content:""}.fa-video-slash:before{content:""}.fa-battery-quarter:before{content:""}.fa-battery-2:before{content:""}.fa-radio:before{content:""}.fa-baby-carriage:before{content:""}.fa-carriage-baby:before{content:""}.fa-traffic-light:before{content:""}.fa-thermometer:before{content:""}.fa-vr-cardboard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-percent:before{content:"%"}.fa-percentage:before{content:"%"}.fa-truck-moving:before{content:""}.fa-glass-water-droplet:before{content:""}.fa-display:before{content:""}.fa-face-smile:before{content:""}.fa-smile:before{content:""}.fa-thumbtack:before{content:""}.fa-thumb-tack:before{content:""}.fa-trophy:before{content:""}.fa-person-praying:before{content:""}.fa-pray:before{content:""}.fa-hammer:before{content:""}.fa-hand-peace:before{content:""}.fa-rotate:before{content:""}.fa-sync-alt:before{content:""}.fa-spinner:before{content:""}.fa-robot:before{content:""}.fa-peace:before{content:""}.fa-gears:before{content:""}.fa-cogs:before{content:""}.fa-warehouse:before{content:""}.fa-arrow-up-right-dots:before{content:""}.fa-splotch:before{content:""}.fa-face-grin-hearts:before{content:""}.fa-grin-hearts:before{content:""}.fa-dice-four:before{content:""}.fa-sim-card:before{content:""}.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-mercury:before{content:""}.fa-arrow-turn-down:before{content:""}.fa-level-down:before{content:""}.fa-person-falling-burst:before{content:""}.fa-award:before{content:""}.fa-ticket-simple:before{content:""}.fa-ticket-alt:before{content:""}.fa-building:before{content:""}.fa-angles-left:before{content:""}.fa-angle-double-left:before{content:""}.fa-qrcode:before{content:""}.fa-clock-rotate-left:before{content:""}.fa-history:before{content:""}.fa-face-grin-beam-sweat:before{content:""}.fa-grin-beam-sweat:before{content:""}.fa-file-export:before{content:""}.fa-arrow-right-from-file:before{content:""}.fa-shield:before{content:""}.fa-shield-blank:before{content:""}.fa-arrow-up-short-wide:before{content:""}.fa-sort-amount-up-alt:before{content:""}.fa-house-medical:before{content:""}.fa-golf-ball-tee:before{content:""}.fa-golf-ball:before{content:""}.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-house-chimney-window:before{content:""}.fa-pen-nib:before{content:""}.fa-tent-arrow-turn-left:before{content:""}.fa-tents:before{content:""}.fa-wand-magic:before{content:""}.fa-magic:before{content:""}.fa-dog:before{content:""}.fa-carrot:before{content:""}.fa-moon:before{content:""}.fa-wine-glass-empty:before{content:""}.fa-wine-glass-alt:before{content:""}.fa-cheese:before{content:""}.fa-yin-yang:before{content:""}.fa-music:before{content:""}.fa-code-commit:before{content:""}.fa-temperature-low:before{content:""}.fa-person-biking:before{content:""}.fa-biking:before{content:""}.fa-broom:before{content:""}.fa-shield-heart:before{content:""}.fa-gopuram:before{content:""}.fa-earth-oceania:before{content:""}.fa-globe-oceania:before{content:""}.fa-square-xmark:before{content:""}.fa-times-square:before{content:""}.fa-xmark-square:before{content:""}.fa-hashtag:before{content:"#"}.fa-up-right-and-down-left-from-center:before{content:""}.fa-expand-alt:before{content:""}.fa-oil-can:before{content:""}.fa-t:before{content:"T"}.fa-hippo:before{content:""}.fa-chart-column:before{content:""}.fa-infinity:before{content:""}.fa-vial-circle-check:before{content:""}.fa-person-arrow-down-to-line:before{content:""}.fa-voicemail:before{content:""}.fa-fan:before{content:""}.fa-person-walking-luggage:before{content:""}.fa-up-down:before{content:""}.fa-arrows-alt-v:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-calendar:before{content:""}.fa-trailer:before{content:""}.fa-bahai:before{content:""}.fa-haykal:before{content:""}.fa-sd-card:before{content:""}.fa-dragon:before{content:""}.fa-shoe-prints:before{content:""}.fa-circle-plus:before{content:""}.fa-plus-circle:before{content:""}.fa-face-grin-tongue-wink:before{content:""}.fa-grin-tongue-wink:before{content:""}.fa-hand-holding:before{content:""}.fa-plug-circle-exclamation:before{content:""}.fa-link-slash:before{content:""}.fa-chain-broken:before{content:""}.fa-chain-slash:before{content:""}.fa-unlink:before{content:""}.fa-clone:before{content:""}.fa-person-walking-arrow-loop-left:before{content:""}.fa-arrow-up-z-a:before{content:""}.fa-sort-alpha-up-alt:before{content:""}.fa-fire-flame-curved:before{content:""}.fa-fire-alt:before{content:""}.fa-tornado:before{content:""}.fa-file-circle-plus:before{content:""}.fa-book-quran:before{content:""}.fa-quran:before{content:""}.fa-anchor:before{content:""}.fa-border-all:before{content:""}.fa-face-angry:before{content:""}.fa-angry:before{content:""}.fa-cookie-bite:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-rss:before{content:""}.fa-feed:before{content:""}.fa-draw-polygon:before{content:""}.fa-scale-balanced:before{content:""}.fa-balance-scale:before{content:""}.fa-gauge-simple-high:before{content:""}.fa-tachometer:before{content:""}.fa-tachometer-fast:before{content:""}.fa-shower:before{content:""}.fa-desktop:before{content:""}.fa-desktop-alt:before{content:""}.fa-m:before{content:"M"}.fa-table-list:before{content:""}.fa-th-list:before{content:""}.fa-comment-sms:before{content:""}.fa-sms:before{content:""}.fa-book:before{content:""}.fa-user-plus:before{content:""}.fa-check:before{content:""}.fa-battery-three-quarters:before{content:""}.fa-battery-4:before{content:""}.fa-house-circle-check:before{content:""}.fa-angle-left:before{content:""}.fa-diagram-successor:before{content:""}.fa-truck-arrow-right:before{content:""}.fa-arrows-split-up-and-left:before{content:""}.fa-hand-fist:before{content:""}.fa-fist-raised:before{content:""}.fa-cloud-moon:before{content:""}.fa-briefcase:before{content:""}.fa-person-falling:before{content:""}.fa-image-portrait:before{content:""}.fa-portrait:before{content:""}.fa-user-tag:before{content:""}.fa-rug:before{content:""}.fa-earth-europe:before{content:""}.fa-globe-europe:before{content:""}.fa-cart-flatbed-suitcase:before{content:""}.fa-luggage-cart:before{content:""}.fa-rectangle-xmark:before{content:""}.fa-rectangle-times:before{content:""}.fa-times-rectangle:before{content:""}.fa-window-close:before{content:""}.fa-baht-sign:before{content:""}.fa-book-open:before{content:""}.fa-book-journal-whills:before{content:""}.fa-journal-whills:before{content:""}.fa-handcuffs:before{content:""}.fa-triangle-exclamation:before{content:""}.fa-exclamation-triangle:before{content:""}.fa-warning:before{content:""}.fa-database:before{content:""}.fa-share:before{content:""}.fa-arrow-turn-right:before{content:""}.fa-mail-forward:before{content:""}.fa-bottle-droplet:before{content:""}.fa-mask-face:before{content:""}.fa-hill-rockslide:before{content:""}.fa-right-left:before{content:""}.fa-exchange-alt:before{content:""}.fa-paper-plane:before{content:""}.fa-road-circle-exclamation:before{content:""}.fa-dungeon:before{content:""}.fa-align-right:before{content:""}.fa-money-bill-1-wave:before{content:""}.fa-money-bill-wave-alt:before{content:""}.fa-life-ring:before{content:""}.fa-hands:before{content:""}.fa-sign-language:before{content:""}.fa-signing:before{content:""}.fa-calendar-day:before{content:""}.fa-water-ladder:before{content:""}.fa-ladder-water:before{content:""}.fa-swimming-pool:before{content:""}.fa-arrows-up-down:before{content:""}.fa-arrows-v:before{content:""}.fa-face-grimace:before{content:""}.fa-grimace:before{content:""}.fa-wheelchair-move:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-turn-down:before{content:""}.fa-level-down-alt:before{content:""}.fa-person-walking-arrow-right:before{content:""}.fa-square-envelope:before{content:""}.fa-envelope-square:before{content:""}.fa-dice:before{content:""}.fa-bowling-ball:before{content:""}.fa-brain:before{content:""}.fa-bandage:before{content:""}.fa-band-aid:before{content:""}.fa-calendar-minus:before{content:""}.fa-circle-xmark:before{content:""}.fa-times-circle:before{content:""}.fa-xmark-circle:before{content:""}.fa-gifts:before{content:""}.fa-hotel:before{content:""}.fa-earth-asia:before{content:""}.fa-globe-asia:before{content:""}.fa-id-card-clip:before{content:""}.fa-id-card-alt:before{content:""}.fa-magnifying-glass-plus:before{content:""}.fa-search-plus:before{content:""}.fa-thumbs-up:before{content:""}.fa-user-clock:before{content:""}.fa-hand-dots:before{content:""}.fa-allergies:before{content:""}.fa-file-invoice:before{content:""}.fa-window-minimize:before{content:""}.fa-mug-saucer:before{content:""}.fa-coffee:before{content:""}.fa-brush:before{content:""}.fa-mask:before{content:""}.fa-magnifying-glass-minus:before{content:""}.fa-search-minus:before{content:""}.fa-ruler-vertical:before{content:""}.fa-user-large:before{content:""}.fa-user-alt:before{content:""}.fa-train-tram:before{content:""}.fa-user-nurse:before{content:""}.fa-syringe:before{content:""}.fa-cloud-sun:before{content:""}.fa-stopwatch-20:before{content:""}.fa-square-full:before{content:""}.fa-magnet:before{content:""}.fa-jar:before{content:""}.fa-note-sticky:before{content:""}.fa-sticky-note:before{content:""}.fa-bug-slash:before{content:""}.fa-arrow-up-from-water-pump:before{content:""}.fa-bone:before{content:""}.fa-user-injured:before{content:""}.fa-face-sad-tear:before{content:""}.fa-sad-tear:before{content:""}.fa-plane:before{content:""}.fa-tent-arrows-down:before{content:""}.fa-exclamation:before{content:"!"}.fa-arrows-spin:before{content:""}.fa-print:before{content:""}.fa-turkish-lira-sign:before{content:""}.fa-try:before{content:""}.fa-turkish-lira:before{content:""}.fa-dollar-sign:before{content:"$"}.fa-dollar:before{content:"$"}.fa-usd:before{content:"$"}.fa-x:before{content:"X"}.fa-magnifying-glass-dollar:before{content:""}.fa-search-dollar:before{content:""}.fa-users-gear:before{content:""}.fa-users-cog:before{content:""}.fa-person-military-pointing:before{content:""}.fa-building-columns:before{content:""}.fa-bank:before{content:""}.fa-institution:before{content:""}.fa-museum:before{content:""}.fa-university:before{content:""}.fa-umbrella:before{content:""}.fa-trowel:before{content:""}.fa-d:before{content:"D"}.fa-stapler:before{content:""}.fa-masks-theater:before{content:""}.fa-theater-masks:before{content:""}.fa-kip-sign:before{content:""}.fa-hand-point-left:before{content:""}.fa-handshake-simple:before{content:""}.fa-handshake-alt:before{content:""}.fa-jet-fighter:before{content:""}.fa-fighter-jet:before{content:""}.fa-square-share-nodes:before{content:""}.fa-share-alt-square:before{content:""}.fa-barcode:before{content:""}.fa-plus-minus:before{content:""}.fa-video:before{content:""}.fa-video-camera:before{content:""}.fa-graduation-cap:before{content:""}.fa-mortar-board:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-person-circle-check:before{content:""}.fa-turn-up:before{content:""}.fa-level-up-alt:before{content:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root,:host{--fa-style-family-brands: "Font Awesome 6 Brands";--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(./fa-brands-400-faae6fc0.woff2) format("woff2"),url(./fa-brands-400-003f1154.ttf) format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero:before{content:""}.fa-hooli:before{content:""}.fa-yelp:before{content:""}.fa-cc-visa:before{content:""}.fa-lastfm:before{content:""}.fa-shopware:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-aws:before{content:""}.fa-redhat:before{content:""}.fa-yoast:before{content:""}.fa-cloudflare:before{content:""}.fa-ups:before{content:""}.fa-wpexplorer:before{content:""}.fa-dyalog:before{content:""}.fa-bity:before{content:""}.fa-stackpath:before{content:""}.fa-buysellads:before{content:""}.fa-first-order:before{content:""}.fa-modx:before{content:""}.fa-guilded:before{content:""}.fa-vnv:before{content:""}.fa-square-js:before{content:""}.fa-js-square:before{content:""}.fa-microsoft:before{content:""}.fa-qq:before{content:""}.fa-orcid:before{content:""}.fa-java:before{content:""}.fa-invision:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-centercode:before{content:""}.fa-glide-g:before{content:""}.fa-drupal:before{content:""}.fa-hire-a-helper:before{content:""}.fa-creative-commons-by:before{content:""}.fa-unity:before{content:""}.fa-whmcs:before{content:""}.fa-rocketchat:before{content:""}.fa-vk:before{content:""}.fa-untappd:before{content:""}.fa-mailchimp:before{content:""}.fa-css3-alt:before{content:""}.fa-square-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-contao:before{content:""}.fa-square-font-awesome:before{content:""}.fa-deskpro:before{content:""}.fa-sistrix:before{content:""}.fa-square-instagram:before{content:""}.fa-instagram-square:before{content:""}.fa-battle-net:before{content:""}.fa-the-red-yeti:before{content:""}.fa-square-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-edge:before{content:""}.fa-threads:before{content:""}.fa-napster:before{content:""}.fa-square-snapchat:before{content:""}.fa-snapchat-square:before{content:""}.fa-google-plus-g:before{content:""}.fa-artstation:before{content:""}.fa-markdown:before{content:""}.fa-sourcetree:before{content:""}.fa-google-plus:before{content:""}.fa-diaspora:before{content:""}.fa-foursquare:before{content:""}.fa-stack-overflow:before{content:""}.fa-github-alt:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-pagelines:before{content:""}.fa-algolia:before{content:""}.fa-red-river:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-safari:before{content:""}.fa-google:before{content:""}.fa-square-font-awesome-stroke:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-atlassian:before{content:""}.fa-linkedin-in:before{content:""}.fa-digital-ocean:before{content:""}.fa-nimblr:before{content:""}.fa-chromecast:before{content:""}.fa-evernote:before{content:""}.fa-hacker-news:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-adversal:before{content:""}.fa-creative-commons:before{content:""}.fa-watchman-monitoring:before{content:""}.fa-fonticons:before{content:""}.fa-weixin:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-codepen:before{content:""}.fa-git-alt:before{content:""}.fa-lyft:before{content:""}.fa-rev:before{content:""}.fa-windows:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-square-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-meetup:before{content:""}.fa-centos:before{content:""}.fa-adn:before{content:""}.fa-cloudsmith:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-square-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-codiepie:before{content:""}.fa-node:before{content:""}.fa-mix:before{content:""}.fa-steam:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-scribd:before{content:""}.fa-debian:before{content:""}.fa-openid:before{content:""}.fa-instalod:before{content:""}.fa-expeditedssl:before{content:""}.fa-sellcast:before{content:""}.fa-square-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-r-project:before{content:""}.fa-delicious:before{content:""}.fa-freebsd:before{content:""}.fa-vuejs:before{content:""}.fa-accusoft:before{content:""}.fa-ioxhost:before{content:""}.fa-fonticons-fi:before{content:""}.fa-app-store:before{content:""}.fa-cc-mastercard:before{content:""}.fa-itunes-note:before{content:""}.fa-golang:before{content:""}.fa-kickstarter:before{content:""}.fa-grav:before{content:""}.fa-weibo:before{content:""}.fa-uncharted:before{content:""}.fa-firstdraft:before{content:""}.fa-square-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wpressr:before{content:""}.fa-rendact:before{content:""}.fa-angellist:before{content:""}.fa-galactic-republic:before{content:""}.fa-nfc-directional:before{content:""}.fa-skype:before{content:""}.fa-joget:before{content:""}.fa-fedora:before{content:""}.fa-stripe-s:before{content:""}.fa-meta:before{content:""}.fa-laravel:before{content:""}.fa-hotjar:before{content:""}.fa-bluetooth-b:before{content:""}.fa-sticker-mule:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-hips:before{content:""}.fa-behance:before{content:""}.fa-reddit:before{content:""}.fa-discord:before{content:""}.fa-chrome:before{content:""}.fa-app-store-ios:before{content:""}.fa-cc-discover:before{content:""}.fa-wpbeginner:before{content:""}.fa-confluence:before{content:""}.fa-mdb:before{content:""}.fa-dochub:before{content:""}.fa-accessible-icon:before{content:""}.fa-ebay:before{content:""}.fa-amazon:before{content:""}.fa-unsplash:before{content:""}.fa-yarn:before{content:""}.fa-square-steam:before{content:""}.fa-steam-square:before{content:""}.fa-500px:before{content:""}.fa-square-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-asymmetrik:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-gratipay:before{content:""}.fa-apple:before{content:""}.fa-hive:before{content:""}.fa-gitkraken:before{content:""}.fa-keybase:before{content:""}.fa-apple-pay:before{content:""}.fa-padlet:before{content:""}.fa-amazon-pay:before{content:""}.fa-square-github:before{content:""}.fa-github-square:before{content:""}.fa-stumbleupon:before{content:""}.fa-fedex:before{content:""}.fa-phoenix-framework:before{content:""}.fa-shopify:before{content:""}.fa-neos:before{content:""}.fa-square-threads:before{content:""}.fa-hackerrank:before{content:""}.fa-researchgate:before{content:""}.fa-swift:before{content:""}.fa-angular:before{content:""}.fa-speakap:before{content:""}.fa-angrycreative:before{content:""}.fa-y-combinator:before{content:""}.fa-empire:before{content:""}.fa-envira:before{content:""}.fa-square-gitlab:before{content:""}.fa-gitlab-square:before{content:""}.fa-studiovinari:before{content:""}.fa-pied-piper:before{content:""}.fa-wordpress:before{content:""}.fa-product-hunt:before{content:""}.fa-firefox:before{content:""}.fa-linode:before{content:""}.fa-goodreads:before{content:""}.fa-square-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-sith:before{content:""}.fa-themeisle:before{content:""}.fa-page4:before{content:""}.fa-hashnode:before{content:""}.fa-react:before{content:""}.fa-cc-paypal:before{content:""}.fa-squarespace:before{content:""}.fa-cc-stripe:before{content:""}.fa-creative-commons-share:before{content:""}.fa-bitcoin:before{content:""}.fa-keycdn:before{content:""}.fa-opera:before{content:""}.fa-itch-io:before{content:""}.fa-umbraco:before{content:""}.fa-galactic-senate:before{content:""}.fa-ubuntu:before{content:""}.fa-draft2digital:before{content:""}.fa-stripe:before{content:""}.fa-houzz:before{content:""}.fa-gg:before{content:""}.fa-dhl:before{content:""}.fa-square-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-xing:before{content:""}.fa-blackberry:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-playstation:before{content:""}.fa-quinscape:before{content:""}.fa-less:before{content:""}.fa-blogger-b:before{content:""}.fa-opencart:before{content:""}.fa-vine:before{content:""}.fa-paypal:before{content:""}.fa-gitlab:before{content:""}.fa-typo3:before{content:""}.fa-reddit-alien:before{content:""}.fa-yahoo:before{content:""}.fa-dailymotion:before{content:""}.fa-affiliatetheme:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-bootstrap:before{content:""}.fa-odnoklassniki:before{content:""}.fa-nfc-symbol:before{content:""}.fa-ethereum:before{content:""}.fa-speaker-deck:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-patreon:before{content:""}.fa-avianex:before{content:""}.fa-ello:before{content:""}.fa-gofore:before{content:""}.fa-bimobject:before{content:""}.fa-facebook-f:before{content:""}.fa-square-google-plus:before{content:""}.fa-google-plus-square:before{content:""}.fa-mandalorian:before{content:""}.fa-first-order-alt:before{content:""}.fa-osi:before{content:""}.fa-google-wallet:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-periscope:before{content:""}.fa-fulcrum:before{content:""}.fa-cloudscale:before{content:""}.fa-forumbee:before{content:""}.fa-mizuni:before{content:""}.fa-schlix:before{content:""}.fa-square-xing:before{content:""}.fa-xing-square:before{content:""}.fa-bandcamp:before{content:""}.fa-wpforms:before{content:""}.fa-cloudversify:before{content:""}.fa-usps:before{content:""}.fa-megaport:before{content:""}.fa-magento:before{content:""}.fa-spotify:before{content:""}.fa-optin-monster:before{content:""}.fa-fly:before{content:""}.fa-aviato:before{content:""}.fa-itunes:before{content:""}.fa-cuttlefish:before{content:""}.fa-blogger:before{content:""}.fa-flickr:before{content:""}.fa-viber:before{content:""}.fa-soundcloud:before{content:""}.fa-digg:before{content:""}.fa-tencent-weibo:before{content:""}.fa-symfony:before{content:""}.fa-maxcdn:before{content:""}.fa-etsy:before{content:""}.fa-facebook-messenger:before{content:""}.fa-audible:before{content:""}.fa-think-peaks:before{content:""}.fa-bilibili:before{content:""}.fa-erlang:before{content:""}.fa-x-twitter:before{content:""}.fa-cotton-bureau:before{content:""}.fa-dashcube:before{content:""}.fa-42-group:before{content:""}.fa-innosoft:before{content:""}.fa-stack-exchange:before{content:""}.fa-elementor:before{content:""}.fa-square-pied-piper:before{content:""}.fa-pied-piper-square:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-palfed:before{content:""}.fa-superpowers:before{content:""}.fa-resolving:before{content:""}.fa-xbox:before{content:""}.fa-searchengin:before{content:""}.fa-tiktok:before{content:""}.fa-square-facebook:before{content:""}.fa-facebook-square:before{content:""}.fa-renren:before{content:""}.fa-linux:before{content:""}.fa-glide:before{content:""}.fa-linkedin:before{content:""}.fa-hubspot:before{content:""}.fa-deploydog:before{content:""}.fa-twitch:before{content:""}.fa-ravelry:before{content:""}.fa-mixer:before{content:""}.fa-square-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-vimeo:before{content:""}.fa-mendeley:before{content:""}.fa-uniregistry:before{content:""}.fa-figma:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-dropbox:before{content:""}.fa-instagram:before{content:""}.fa-cmplid:before{content:""}.fa-facebook:before{content:""}.fa-gripfire:before{content:""}.fa-jedi-order:before{content:""}.fa-uikit:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-phabricator:before{content:""}.fa-ussunnah:before{content:""}.fa-earlybirds:before{content:""}.fa-trade-federation:before{content:""}.fa-autoprefixer:before{content:""}.fa-whatsapp:before{content:""}.fa-slideshare:before{content:""}.fa-google-play:before{content:""}.fa-viadeo:before{content:""}.fa-line:before{content:""}.fa-google-drive:before{content:""}.fa-servicestack:before{content:""}.fa-simplybuilt:before{content:""}.fa-bitbucket:before{content:""}.fa-imdb:before{content:""}.fa-deezer:before{content:""}.fa-raspberry-pi:before{content:""}.fa-jira:before{content:""}.fa-docker:before{content:""}.fa-screenpal:before{content:""}.fa-bluetooth:before{content:""}.fa-gitter:before{content:""}.fa-d-and-d:before{content:""}.fa-microblog:before{content:""}.fa-cc-diners-club:before{content:""}.fa-gg-circle:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-kickstarter-k:before{content:""}.fa-yandex:before{content:""}.fa-readme:before{content:""}.fa-html5:before{content:""}.fa-sellsy:before{content:""}.fa-sass:before{content:""}.fa-wirsindhandwerk:before{content:""}.fa-wsh:before{content:""}.fa-buromobelexperte:before{content:""}.fa-salesforce:before{content:""}.fa-octopus-deploy:before{content:""}.fa-medapps:before{content:""}.fa-ns8:before{content:""}.fa-pinterest-p:before{content:""}.fa-apper:before{content:""}.fa-fort-awesome:before{content:""}.fa-waze:before{content:""}.fa-cc-jcb:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-rust:before{content:""}.fa-wix:before{content:""}.fa-square-behance:before{content:""}.fa-behance-square:before{content:""}.fa-supple:before{content:""}.fa-rebel:before{content:""}.fa-css3:before{content:""}.fa-staylinked:before{content:""}.fa-kaggle:before{content:""}.fa-space-awesome:before{content:""}.fa-deviantart:before{content:""}.fa-cpanel:before{content:""}.fa-goodreads-g:before{content:""}.fa-square-git:before{content:""}.fa-git-square:before{content:""}.fa-square-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-trello:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-get-pocket:before{content:""}.fa-perbyte:before{content:""}.fa-grunt:before{content:""}.fa-weebly:before{content:""}.fa-connectdevelop:before{content:""}.fa-leanpub:before{content:""}.fa-black-tie:before{content:""}.fa-themeco:before{content:""}.fa-python:before{content:""}.fa-android:before{content:""}.fa-bots:before{content:""}.fa-free-code-camp:before{content:""}.fa-hornbill:before{content:""}.fa-js:before{content:""}.fa-ideal:before{content:""}.fa-git:before{content:""}.fa-dev:before{content:""}.fa-sketch:before{content:""}.fa-yandex-international:before{content:""}.fa-cc-amex:before{content:""}.fa-uber:before{content:""}.fa-github:before{content:""}.fa-php:before{content:""}.fa-alipay:before{content:""}.fa-youtube:before{content:""}.fa-skyatlas:before{content:""}.fa-firefox-browser:before{content:""}.fa-replyd:before{content:""}.fa-suse:before{content:""}.fa-jenkins:before{content:""}.fa-twitter:before{content:""}.fa-rockrms:before{content:""}.fa-pinterest:before{content:""}.fa-buffer:before{content:""}.fa-npm:before{content:""}.fa-yammer:before{content:""}.fa-btc:before{content:""}.fa-dribbble:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-internet-explorer:before{content:""}.fa-stubber:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-old-republic:before{content:""}.fa-odysee:before{content:""}.fa-square-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-node-js:before{content:""}.fa-edge-legacy:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-medrt:before{content:""}.fa-usb:before{content:""}.fa-tumblr:before{content:""}.fa-vaadin:before{content:""}.fa-quora:before{content:""}.fa-square-x-twitter:before{content:""}.fa-reacteurope:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-amilia:before{content:""}.fa-mixcloud:before{content:""}.fa-flipboard:before{content:""}.fa-viacoin:before{content:""}.fa-critical-role:before{content:""}.fa-sitrox:before{content:""}.fa-discourse:before{content:""}.fa-joomla:before{content:""}.fa-mastodon:before{content:""}.fa-airbnb:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-buy-n-large:before{content:""}.fa-gulp:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-strava:before{content:""}.fa-ember:before{content:""}.fa-canadian-maple-leaf:before{content:""}.fa-teamspeak:before{content:""}.fa-pushed:before{content:""}.fa-wordpress-simple:before{content:""}.fa-nutritionix:before{content:""}.fa-wodu:before{content:""}.fa-google-pay:before{content:""}.fa-intercom:before{content:""}.fa-zhihu:before{content:""}.fa-korvue:before{content:""}.fa-pix:before{content:""}.fa-steam-symbol:before{content:""}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(./fa-regular-400-9169d8be.woff2) format("woff2"),url(./fa-regular-400-7d81a1a7.ttf) format("truetype")}.far,.fa-regular{font-weight:400}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(./fa-solid-900-886c8611.woff2) format("woff2"),url(./fa-solid-900-cea79b34.ttf) format("truetype")}.fas,.fa-solid{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(./fa-brands-400-faae6fc0.woff2) format("woff2"),url(./fa-brands-400-003f1154.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(./fa-solid-900-886c8611.woff2) format("woff2"),url(./fa-solid-900-cea79b34.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(./fa-regular-400-9169d8be.woff2) format("woff2"),url(./fa-regular-400-7d81a1a7.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(./fa-solid-900-886c8611.woff2) format("woff2"),url(./fa-solid-900-cea79b34.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(./fa-brands-400-faae6fc0.woff2) format("woff2"),url(./fa-brands-400-003f1154.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(./fa-regular-400-9169d8be.woff2) format("woff2"),url(./fa-regular-400-7d81a1a7.ttf) format("truetype");unicode-range:U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC}@font-face{font-family:FontAwesome;font-display:block;src:url(./fa-v4compatibility-335fd7d9.woff2) format("woff2"),url(./fa-v4compatibility-455e8e72.ttf) format("truetype");unicode-range:U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A}@keyframes blinker{50%{opacity:0}}body{overflow-y:auto!important}.animation-blinking{animation:blinker 1s linear infinite}.content{overflow-y:auto}.stroke-blink-enter{stroke-width:1}.stroke-blink-enter-active{stroke-width:5;transition:stroke-width .2s}.stroke-blink-exit{stroke-width:5}.stroke-blink-exit-active{stroke-width:1;transition:stroke-width .2s}.glyphicon{font-family:"Font Awesome 5 Free";font-weight:900;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.glyphicon-plus:before{content:""}.glyphicon-remove:before{content:""}.glyphicon-arrow-up:before{content:""}.glyphicon-arrow-down:before{content:""}.dropdown-menu{max-height:280px;overflow-y:auto}.rjsf .form-label:empty{display:none}
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
import{p as N,q as S,u as T,j as t,w as _,r as v,B as u,n as C,c as z,a as D,v as I,F as O,x as q,y as F,z as A,A as B,b as K}from"./index-6f55efcd.js";import{_ as P,w as E,T as V,c as j}from"./bootstrap-5.esm-ff1b56af.js";import{T as R,D as M}from"./rjsf-translation-fields-6c5e3fa7.js";import{p as L}from"./powerSourceTypeToTranslationKey-452dac81.js";import{S as $}from"./spinner-6dd6f61f.js";import{g as G,a as U}from"./index-1b114912.js";import"./_getAllKeysIn-a7208d0f.js";import"./isEqual-0689f192.js";import"./intersection-62601d15.js";const Z={"ui:order":["base_topic","server","user","password","client_id","version","ca","key","cert","reject_unauthorized","*"]},H={"ui:order":["port","adapter","disable_led","*"]},J={"ui:order":["port","host","*"]},Y={mqtt:Z,serial:H,frontend:J};var W=P,x=S;function Q(a,e,s,n){return a==null?[]:(x(e)||(e=e==null?[]:[e]),s=n?void 0:s,x(s)||(s=s==null?[]:[s]),W(a,e,s))}var X=Q;const ee=N(X);function te(a){const{devices:e}=a,{t:s}=T(["stats","zigbee"]),n=Object.values(e).filter(i=>i.type!=="Coordinator"),r=n.length,o={byType:{},byPowerSource:{},byVendor:{},byModel:{}};n.forEach(i=>{o.byModel[i.model_id]=(o.byModel[i.model_id]||0)+1,o.byVendor[i.manufacturer]=(o.byVendor[i.manufacturer]||0)+1,o.byType[s(i.type)]=(o.byType[s(i.type)]||0)+1;const l=s("zigbee:"+L(i.power_source));o.byPowerSource[l]=(o.byPowerSource[l]||0)+1});const m=Object.entries(o).map(([i,l])=>t.jsx("li",{className:"list-group-item d-flex justify-content-between align-items-start",children:t.jsxs("div",{className:"ms-2 me-auto",children:[t.jsx("div",{className:"fw-bold",children:s(i)}),ee(Object.entries(l),[([c,d])=>d],["desc"]).map(([c,d])=>t.jsxs("div",{children:[c,": ",d]},c))]})},i));return t.jsxs("ol",{className:"list-group list-group-numbered",children:[t.jsx("li",{className:"list-group-item d-flex justify-content-between align-items-start",children:t.jsx("div",{className:"ms-2 me-auto",children:t.jsxs("div",{className:"fw-bold",children:[s("total")," ",r]})})}),m]})}const se={access:"public",cache:""},ne=["*.css"],re="zigbee2mqtt-frontend",oe="0.7.5",ie="GPL-3.0",ae={build:"vite build",preview:"vite preview",start:"vite dev",postversion:"git push && git push --tags",version:"conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md",pretty:'prettier --write "./**/*.{js,jsx,tsx}"',postinstall:"husky install",prepublishOnly:"pinst --disable",postpublish:"pinst --enable","test:unit":"vitest","test:coverage":"vitest run --coverage","test:eslint":'eslint "./src/**/*.{js,jsx,tsx}"',"test:pretty":'prettier --check "./**/*.{js,jsx,tsx}"',"i18n:download":"node download_translations.js","i18n:trim":"node trim-locales.js"},ce=["dist/*"],le={node:">=18"},de={"@codemirror/lang-javascript":"^6.2.2","@commitlint/cli":"~17.8.0","@commitlint/config-conventional":"~17.8.0","@ebay/nice-modal-react":"~1.2.13","@fortawesome/fontawesome-free":"~6.4.2","@rjsf/bootstrap-5":"https://github.com/nurikk/fileshare/blob/main/rjsf-bootstrap-5-4.2.0.tgz?raw=true","@rjsf/core":"~4.2.3","@testing-library/jest-dom":"^6.3.0","@testing-library/react":"^14.1.2","@testing-library/user-event":"^14.5.2","@types/color-convert":"~2.0.1","@types/d3-drag":"~3.0.4","@types/d3-force":"~3.0.6","@types/d3-selection":"~3.0.7","@types/d3-zoom":"~3.0.5","@types/events":"~3.0.1","@types/file-saver":"~2.0.5","@types/json-schema":"~7.0.13","@types/lodash":"~4.14.199","@types/react":"~18.2.24","@types/react-dom":"~18.2.8","@types/react-router-dom":"~5.3.3","@types/react-table":"~7.7.16","@types/react-transition-group":"~4.4.7","@types/reconnectingwebsocket":"~1.0.8","@types/ws":"~8.5.6","@typescript-eslint/eslint-plugin":"~6.7.4","@typescript-eslint/parser":"~6.7.4","@uiw/codemirror-theme-github":"^4.21.24","@uiw/react-codemirror":"^4.21.24","@vitejs/plugin-react":"~4.1.0","@vitest/coverage-v8":"^1.2.2",bootstrap:"~5.3.2",classnames:"~2.3.2","color-convert":"~2.0.1","conventional-changelog-cli":"~4.1.0","d3-drag":"~3.0.0","d3-force":"~3.0.0","d3-force-reuse":"~1.0.1","d3-selection":"~3.0.0","d3-zoom":"~3.0.0","deep-diff":"~1.0.2","deep-object-diff":"~1.1.9",eslint:"~8.57.0","eslint-config-prettier":"~9.0.0","eslint-config-react":"~1.1.7","eslint-plugin-prettier":"~5.0.0","eslint-plugin-react":"~7.33.2","eslint-plugin-react-refresh":"*",events:"~3.3.0","file-saver":"~2.0.5",husky:"~8.0.3",i18next:"~23.5.1","i18next-browser-languagedetector":"~7.1.0",jsdom:"^24.0.0",jszip:"~3.10.1",lodash:"~4.17.21",notyf:"~3.10.0",pinst:"~3.0.0",prettier:"~3.0.3",react:"~18.2.0","react-app-polyfill":"~3.0.0","react-bootstrap":"~2.10.0","react-css-theme-switcher":"~0.3.0","react-dom":"~18.2.0","react-i18next":"~13.5.0","react-image":"~4.1.0","react-notifications-component":"^4.0.1","react-router-dom":"~5.3.4","react-table":"~7.8.0","react-transition-group":"~4.4.5","reconnecting-websocket":"~4.4.0",sass:"~1.71.0",store2:"^2.14.2","timeago.js":"~4.0.2",typescript:"~5.2.2",unistore:"~3.5.2",vite:"~4.5.0","vite-plugin-compression":"~0.5.1","vite-plugin-html":"~3.2.0","vite-plugin-sass-dts":"~1.3.11",vitest:"^1.3.1",ws:"~8.17.0"},me="index.js",pe={hooks:{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},ue={type:"git",url:"git+https://github.com/nurikk/zigbee2mqtt-frontend.git"},ge={url:"https://github.com/nurikk/zigbee2mqtt-frontend/issues"},he="pnpm@9.1.0+sha256.22e36fba7f4880ecf749a5ca128b8435da085ecd49575e7fb9e64d6bf4fad394",fe={private:!1,publishConfig:se,sideEffects:ne,name:re,version:oe,license:ie,scripts:ae,eslintIgnore:ce,engines:le,devDependencies:de,main:me,husky:pe,repository:ue,bugs:ge,packageManager:he};function be(a){return new Promise((e,s)=>{const n=new FileReader;n.onloadend=()=>e(n.result),n.onerror=r=>s(r),n.readAsDataURL(a)})}async function ve(a){const e=await fetch(a);if(e.ok){const s=await e.blob();return be(s)}else return Promise.reject(e.status)}async function ye(a,e){for(const s of a)try{if(await e(s))return!0}catch{}return!1}function je(a){const[e,s]=v.useState("none"),{setDeviceOptions:n,t:r,devices:o}=a,[m,i]=v.useState({});async function l(c){if(i(p=>({...p,[c.ieee_address]:"init"})),!await ye([G,U],async p=>{const g=p(c),h=await ve(g);return await n(c.ieee_address,{icon:h}),i(f=>({...f,[c.ieee_address]:"done"})),!0}))throw new Error("Failed to localise image")}switch(v.useEffect(()=>{if(e=="start"){for(const c of Object.values(o).filter(d=>d.type!=="Coordinator"))l(c).catch(d=>{console.log("Error localising image",d),i(p=>({...p,[c.ieee_address]:"error"}))}).then();s("inprogress")}},[e]),e){case"none":return t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:()=>s("start"),children:r("localise_images")});case"inprogress":return t.jsx("div",{children:Object.values(o).map(c=>t.jsxs("div",{children:[c.friendly_name," ",m[c.ieee_address]]},c.ieee_address))});case"done":return t.jsx("div",{children:"done"})}return t.jsx("div",{children:"Unknown"})}const xe=_(["settings"])(je),ke=E(V),b="main",w=["groups","devices","device_options","ban","whitelist","map_options"],_e=["object","array"],k=(a,e={},s={})=>{e.required&&(e.required=e.required.filter(n=>a.includes(n)));for(const n of a)e.properties&&delete e.properties[n],delete s[n];return{schema:e,config:s}},we=[t.jsx("div",{className:"row pb-2",children:t.jsx("div",{className:"col",children:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/nurikk",children:t.jsx("img",{crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks for frontend&emoji=🍺&slug=nurikk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff"})})})},"nurikk"),t.jsx("div",{className:"row pb-2",children:t.jsx("div",{className:"col",children:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.buymeacoffee.com/koenkk",children:t.jsx("img",{crossOrigin:"anonymous",src:"https://img.buymeacoffee.com/button-api/?text=Thanks for zigbee2mqtt&emoji=☕&slug=koenkk&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff"})})})},"koenkk")].sort(()=>Math.random()-.5),Ne=(a,e)=>_e.includes(e.type)&&!w.includes(a)||(e&&e.oneOf?e.oneOf.length>0:!1);class Se extends v.Component{constructor(){super(...arguments),this.state={keyName:b},this.downloadBackup=()=>{const{backup:e,bridgeInfo:s}=this.props,n=I(new Date).replace(/[\s_:]/g,"-"),r=`z2m-backup.${s.version}.${n}.zip`;O.saveAs(`data:application/zip;base64,${e}`,r)},this.addInstallCode=()=>{const{t:e,addInstallCode:s}=this.props,n=prompt(e("enter_install_code"));n&&s(n)},this.onSettingsSave=e=>{const{formData:s}=e,{updateBridgeConfig:n}=this.props,{keyName:r}=this.state,o=q(this.getSettingsInfo().currentConfig,s);n(r===b?o:{[r]:o})}}renderCategoriesTabs(){const{t:e}=this.props;return t.jsx("ul",{className:"nav nav-tabs",children:F.map(s=>t.jsx("li",{className:"nav-item",children:t.jsx(A,{className:"nav-link",activeClassName:"active",to:s.url,children:e(s.translationKey)})},s.url))})}render(){return t.jsxs("div",{className:"tab",children:[this.renderCategoriesTabs(),t.jsx("div",{className:"tab-content h-100 p-0 p-sm-3",children:t.jsx("div",{className:"tab-pane fade show active",children:this.renderSwitcher()})})]})}renderSwitcher(){const{match:e}=this.props,{tab:s}=e.params;switch(s){case"tools":return this.renderTools();case"bridge":return this.renderBridgeInfo();case"about":return this.renderAbout();case"settings":return this.renderSettings();case"donate":return this.renderDonate();case"translate":return this.renderTranslate();default:return t.jsx(B,{to:"/settings/settings"})}}renderTranslate(){const{t:e}=this.props;return t.jsx("div",{className:"p-3",children:t.jsxs("p",{children:[e("settings:translation_prompt")," ",t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:"https://poeditor.com/join/project?hash=Az88waAhPd",children:"POEditor"})]})})}renderAbout(){var l,c,d,p,g,h,f;const{bridgeInfo:e,devices:s,t:n}=this.props,o=((l=e.version)==null?void 0:l.match(/^\d+\.\d+\.\d+$/))===null?e.version:t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee2mqtt/releases/tag/${e.version}`,children:e.version}),m=e.commit?t.jsxs(t.Fragment,{children:["commit:"," ",t.jsx("a",{target:"_blank",rel:"noopener noreferrer",href:`https://github.com/Koenkk/zigbee2mqtt/commit/${e.commit}`,children:e.commit})]}):null,i=[{translationKey:"zigbee2mqtt_version",content:t.jsxs(t.Fragment,{children:[o," ",m]})},{translationKey:"coordinator_type",content:t.jsx(t.Fragment,{children:((c=e.coordinator)==null?void 0:c.type)??n("common:unknown")})},{translationKey:"coordinator_revision",content:t.jsx(t.Fragment,{children:((p=(d=e.coordinator)==null?void 0:d.meta)==null?void 0:p.revision)??n("common:unknown")})},{translationKey:"coordinator_ieee_address",content:t.jsx(t.Fragment,{children:((g=e.coordinator)==null?void 0:g.ieee_address)??n("common:unknown")})},{translationKey:"frontend_version",content:fe.version},{translationKey:"zigbee_herdsman_converters_version",content:((h=e.zigbee_herdsman_converters)==null?void 0:h.version)??n("common:unknown")},{translationKey:"zigbee_herdsman_version",content:((f=e.zigbee_herdsman)==null?void 0:f.version)??n("common:unknown")},{translationKey:"stats",content:t.jsx(te,{devices:s})}];return t.jsx("div",{className:"p-3",children:i.map(y=>t.jsxs("dl",{className:"row",children:[t.jsx("dt",{className:"col-sm-3",children:n(y.translationKey)}),t.jsx("dd",{className:"col-sm-9",children:y.content})]},y.translationKey))})}renderBridgeInfo(){const{bridgeInfo:e}=this.props;return t.jsx("div",{className:"p-3",children:t.jsx("pre",{children:JSON.stringify(e,null,4)})})}renderBackupControls(){const{backup:e,preparingBackup:s,requestBackup:n,t:r}=this.props;return s?t.jsx(u,{className:"btn btn-primary d-block mt-2 disabled",children:t.jsx($,{})}):e?t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:this.downloadBackup,children:r("download_z2m_backup")}):t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:n,children:r("request_z2m_backup")})}renderTools(){const{exportState:e,restartBridge:s,setDeviceOptions:n,devices:r,t:o}=this.props;return t.jsxs("div",{className:"p-3",children:[t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:e,children:o("download_state")}),t.jsx(u,{className:"btn btn-danger d-block mt-2",onClick:s,prompt:!0,children:o("restart_zigbee2mqtt")}),this.renderBackupControls(),t.jsx(u,{className:"btn btn-primary d-block mt-2",onClick:this.addInstallCode,children:o("add_install_code")}),t.jsx(xe,{setDeviceOptions:n,devices:r})]})}getSettingsTabs(){const{bridgeInfo:{config_schema:e={properties:{}}},t:s}=this.props,n=Object.entries(e.properties).filter(([r,o])=>Ne(r,o)).map(([r,o])=>({name:r,title:s(r,{defaultValue:o.title})}));return n.unshift({name:b,title:s("main",{defaultValue:"Main"})}),n}getSettingsInfo(){const{keyName:e}=this.state,{bridgeInfo:{config_schema:s,config:n}}=this.props;let r=k(w,j(s),j(n)),o=r.schema,m;if(e===b){const i=this.getSettingsTabs().map(l=>l.name);r=k(i,r.schema,r.config),o=r.schema,m=r.config}else m=r.config[e],r.schema.properties&&(o=r.schema.properties[e]);return{currentSchema:o,currentConfig:m}}renderSettingsTabs(){const{t:e}=this.props,s=this.getSettingsTabs(),{keyName:n}=this.state;return t.jsx("div",{className:"nav nav-pills",children:s.map(r=>t.jsx("li",{className:"nav-item",children:t.jsx("a",{className:K("nav-link",{"bg-primary active":n===r.name}),"aria-current":"page",href:"#",onClick:o=>{this.setState({keyName:r.name}),o.preventDefault()},children:e(r.name,{defaultValue:r.title})})},r.name))})}renderSettings(){const{keyName:e}=this.state,{currentSchema:s,currentConfig:n}=this.getSettingsInfo();return t.jsxs("div",{className:"tab",children:[this.renderSettingsTabs(),t.jsx("div",{className:"tab-content",children:t.jsx("div",{className:"tab-pane active",children:t.jsx(ke,{idPrefix:e,schema:s,formData:n,onSubmit:this.onSettingsSave,uiSchema:Y[e],fields:{TitleField:R,DescriptionField:M}})})})]})}renderDonate(){const{t:e}=this.props,s=e("donation_text",{returnObjects:!0,defaultValue:[]});return t.jsxs("div",{className:"container-fluid",children:[s.map(n=>t.jsx("p",{children:n},n)),we]})}}const Te=C(Se),Ce=["bridgeInfo","missingTranslations","devices","backup","preparingBackup"],Pe=_(["settings","common"])(z(Ce,D)(Te));export{Pe as ConnectedSettingsPage};
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|