From dc68f61261b171b77e9c4f1a5f8625d42ab1ba88 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 14 Aug 2016 01:10:07 -0700 Subject: [PATCH] Html5 push notifications notify platform (#2807) * Initial work to add Chrome Push Notification support * Remove push.js from home-assistant since it is now in Polymer * Chrome->HTML5, general cleanup/fixes * Make html5 generic, move manifest.json into frontend so that we can dynamically add the gcm_sender_id * Pylint, flake8, pydocstyle frontend init * HTML5 push fixes * Update polymer * Remove crypto req * Add notify default platform. * Fix HTML5 push * Registration fixes * Linting fix * pep257 fix * Add tests * pep257 fix * Update frontend --- homeassistant/components/frontend/__init__.py | 40 ++++ .../components/frontend/templates/index.html | 2 +- homeassistant/components/frontend/version.py | 4 +- .../components/frontend/www_static/core.js | 8 +- .../components/frontend/www_static/core.js.gz | Bin 31475 -> 31500 bytes .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 122766 -> 123182 bytes .../www_static/home-assistant-polymer | 2 +- .../frontend/www_static/manifest.json | 30 --- .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 1832 -> 2012 bytes homeassistant/components/notify/__init__.py | 13 +- homeassistant/components/notify/html5.py | 173 ++++++++++++++++++ requirements_all.txt | 3 + script/build_frontend | 2 +- tests/components/notify/test_html5.py | 145 +++++++++++++++ 16 files changed, 381 insertions(+), 45 deletions(-) delete mode 100644 homeassistant/components/frontend/www_static/manifest.json create mode 100644 homeassistant/components/notify/html5.py create mode 100644 tests/components/notify/test_html5.py diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py index cec18b66511..ab967fb114f 100644 --- a/homeassistant/components/frontend/__init__.py +++ b/homeassistant/components/frontend/__init__.py @@ -14,6 +14,19 @@ URL_PANEL_COMPONENT = '/frontend/panels/{}.html' URL_PANEL_COMPONENT_FP = '/frontend/panels/{}-{}.html' STATIC_PATH = os.path.join(os.path.dirname(__file__), 'www_static') PANELS = {} +MANIFEST_JSON = { + "background_color": "#FFFFFF", + "description": "Open-source home automation platform running on Python 3.", + "dir": "ltr", + "display": "standalone", + "icons": [], + "lang": "en-US", + "name": "Home Assistant", + "orientation": "any", + "short_name": "Assistant", + "start_url": "/", + "theme_color": "#03A9F4" +} # To keep track we don't register a component twice (gives a warning) _REGISTERED_COMPONENTS = set() @@ -94,9 +107,15 @@ def register_panel(hass, component_name, path, md5=None, sidebar_title=None, PANELS[url_path] = data +def add_manifest_json_key(key, val): + """Add a keyval to the manifest.json.""" + MANIFEST_JSON[key] = val + + def setup(hass, config): """Setup serving the frontend.""" hass.wsgi.register_view(BootstrapView) + hass.wsgi.register_view(ManifestJSONView) if hass.wsgi.development: sw_path = "home-assistant-polymer/build/service_worker.js" @@ -126,6 +145,13 @@ def setup(hass, config): hass.bus.listen_once(EVENT_HOMEASSISTANT_START, register_frontend_index) + for size in (192, 384, 512, 1024): + MANIFEST_JSON['icons'].append({ + "src": "/static/icons/favicon-{}x{}.png".format(size, size), + "sizes": "{}x{}".format(size, size), + "type": "image/png" + }) + return True @@ -199,3 +225,17 @@ class IndexView(HomeAssistantView): panel_url=panel_url, panels=PANELS) return self.Response(resp, mimetype='text/html') + + +class ManifestJSONView(HomeAssistantView): + """View to return a manifest.json.""" + + requires_auth = False + url = "/manifest.json" + name = "manifestjson" + + def get(self, request): + """Return the manifest.json.""" + import json + msg = json.dumps(MANIFEST_JSON, sort_keys=True).encode('UTF-8') + return self.Response(msg, mimetype="application/manifest+json") diff --git a/homeassistant/components/frontend/templates/index.html b/homeassistant/components/frontend/templates/index.html index 859b2af53f0..afa9ca68af9 100644 --- a/homeassistant/components/frontend/templates/index.html +++ b/homeassistant/components/frontend/templates/index.html @@ -4,7 +4,7 @@ Home Assistant - + diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index f7c483b3d71..ec30e4804c7 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,8 +1,8 @@ """DO NOT MODIFY. Auto-generated by script/fingerprint_frontend.""" FINGERPRINTS = { - "core.js": "457d5acd123e7dc38947c07984b3a5e8", - "frontend.html": "829ee7cb591b8a63d7f22948a7aeb07a", + "core.js": "b4ee3a700ef5549a36b436611e27d3a9", + "frontend.html": "411fcc6c69b3cab0740ac3db4b9947c8", "mdi.html": "b399b5d3798f5b68b0a4fbaae3432d48", "panels/ha-panel-dev-event.html": "3cc881ae8026c0fba5aa67d334a3ab2b", "panels/ha-panel-dev-info.html": "34e2df1af32e60fffcafe7e008a92169", diff --git a/homeassistant/components/frontend/www_static/core.js b/homeassistant/components/frontend/www_static/core.js index beb5b8c03e0..4def07355e1 100644 --- a/homeassistant/components/frontend/www_static/core.js +++ b/homeassistant/components/frontend/www_static/core.js @@ -1,4 +1,4 @@ -!function(){"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}function n(t,e){var n=e.authToken,r=e.host;return De({authToken:n,host:r,isValidating:!0,isInvalid:!1,errorMessage:""})}function r(){return Ce.getInitialState()}function i(t,e){var n=e.errorMessage;return t.withMutations(function(t){return t.set("isValidating",!1).set("isInvalid",!0).set("errorMessage",n)})}function o(t,e){var n=e.authToken,r=e.host;return Re({authToken:n,host:r})}function u(){return Le.getInitialState()}function a(t,e){var n=e.rememberAuth;return n}function s(t){return t.withMutations(function(t){t.set("isStreaming",!0).set("useStreaming",!0).set("hasError",!1)})}function c(t){return t.withMutations(function(t){t.set("isStreaming",!1).set("useStreaming",!1).set("hasError",!1)})}function f(t){return t.withMutations(function(t){t.set("isStreaming",!1).set("hasError",!0)})}function h(){return Pe.getInitialState()}function l(t,e){var n=e.model,r=e.result,i=e.params,o=n.entity;if(!r)return t;var u=i.replace?Be({}):t.get(o),a=Array.isArray(r)?r:[r],s=n.fromJSON||Be;return t.set(o,u.withMutations(function(t){for(var e=0;e199&&u.status<300?t(e):n(e)},u.onerror=function(){return n({})},r?u.send(JSON.stringify(r)):u.send()})}function A(t,e){var n=e.message;return t.set(t.size,n)}function D(){return In.getInitialState()}function C(t,e){t.dispatch(gn.NOTIFICATION_CREATED,{message:e})}function z(t){t.registerStores({notifications:In})}function R(t,e){if("lock"===t)return!0;if("garage_door"===t)return!0;var n=e.get(t);return!!n&&n.services.has("turn_on")}function L(t,e){return!!t&&("group"===t.domain?"on"===t.state||"off"===t.state:R(t.domain,e))}function M(t,e){return[Wn(t),function(t){return!!t&&t.services.has(e)}]}function j(t){return[yn.byId(t),Jn,L]}function N(t,e,n){function r(){var c=(new Date).getTime()-a;c0?i=setTimeout(r,e-c):(i=null,n||(s=t.apply(u,o),i||(u=o=null)))}var i,o,u,a,s;null==e&&(e=100);var c=function(){u=this,o=arguments,a=(new Date).getTime();var c=n&&!i;return i||(i=setTimeout(r,e)),c&&(s=t.apply(u,o),u=o=null),s};return c.clear=function(){i&&(clearTimeout(i),i=null)},c}function k(t,e){var n=e.component;return t.push(n)}function U(t,e){var n=e.components;return ar(n)}function H(){return sr.getInitialState()}function P(t,e){var n=e.latitude,r=e.longitude,i=e.location_name,o=e.temperature_unit,u=e.time_zone,a=e.version;return fr({latitude:n,longitude:r,location_name:i,temperature_unit:o,time_zone:u,serverVersion:a})}function x(){return hr.getInitialState()}function V(t,e){t.dispatch(or.SERVER_CONFIG_LOADED,e)}function q(t){rn(t,"GET","config").then(function(e){return V(t,e)})}function F(t,e){t.dispatch(or.COMPONENT_LOADED,{component:e})}function G(t){return[["serverComponent"],function(e){return e.contains(t)}]}function K(t){t.registerStores({serverComponent:sr,serverConfig:hr})}function Y(t,e){var n=e.pane;return n}function B(){return Ir.getInitialState()}function J(t,e){var n=e.panels;return Or(n)}function W(){return wr.getInitialState()}function X(t,e){var n=e.show;return!!n}function Q(){return Ar.getInitialState()}function Z(t,e){t.dispatch(mr.SHOW_SIDEBAR,{show:e})}function $(t,e){t.dispatch(mr.NAVIGATE,{pane:e})}function tt(t,e){t.dispatch(mr.PANELS_LOADED,{panels:e})}function et(t,e){var n=e.entityId;return n}function nt(){return kr.getInitialState()}function rt(t,e){t.dispatch(jr.SELECT_ENTITY,{entityId:e})}function it(t){t.dispatch(jr.SELECT_ENTITY,{entityId:null})}function ot(t){return!t||(new Date).getTime()-t>6e4}function ut(t,e){var n=e.date;return n.toISOString()}function at(){return xr.getInitialState()}function st(t,e){var n=e.date,r=e.stateHistory;return 0===r.length?t.set(n,qr({})):t.withMutations(function(t){r.forEach(function(e){return t.setIn([n,e[0].entity_id],qr(e.map(cn.fromJSON)))})})}function ct(){return Fr.getInitialState()}function ft(t,e){var n=e.stateHistory;return t.withMutations(function(t){n.forEach(function(e){return t.set(e[0].entity_id,Br(e.map(cn.fromJSON)))})})}function ht(){return Jr.getInitialState()}function lt(t,e){var n=e.stateHistory,r=(new Date).getTime();return t.withMutations(function(t){n.forEach(function(e){return t.set(e[0].entity_id,r)}),history.length>1&&t.set(Qr,r)})}function pt(){return Zr.getInitialState()}function _t(t,e){t.dispatch(Hr.ENTITY_HISTORY_DATE_SELECTED,{date:e})}function dt(t,e){void 0===e&&(e=null),t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_START,{});var n="history/period";return null!==e&&(n+="?filter_entity_id="+e),rn(t,"GET",n).then(function(e){return t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,{stateHistory:e})},function(){return t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_ERROR,{})})}function vt(t,e){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_START,{date:e}),rn(t,"GET","history/period/"+e).then(function(n){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_SUCCESS,{date:e,stateHistory:n})},function(){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_ERROR,{})})}function yt(t){var e=t.evaluate(ei);return vt(t,e)}function St(t){t.registerStores({currentEntityHistoryDate:xr,entityHistory:Fr,isLoadingEntityHistory:Kr,recentEntityHistory:Jr,recentEntityHistoryUpdated:Zr})}function gt(t){t.registerStores({moreInfoEntityId:kr})}function mt(t,e){var n=e.model,r=e.result,i=e.params;if(null===t||"entity"!==n.entity||!i.replace)return t;for(var o=0;oQo}function ae(t){t.registerStores({currentLogbookDate:Uo,isLoadingLogbookEntries:Po,logbookEntries:Ko,logbookEntriesUpdated:Jo})}function se(t,e){return rn(t,"POST","template",{template:e})}function ce(t){return t.set("isListening",!0)}function fe(t,e){var n=e.interimTranscript,r=e.finalTranscript;return t.withMutations(function(t){return t.set("isListening",!0).set("isTransmitting",!1).set("interimTranscript",n).set("finalTranscript",r)})}function he(t,e){var n=e.finalTranscript;return t.withMutations(function(t){return t.set("isListening",!1).set("isTransmitting",!0).set("interimTranscript","").set("finalTranscript",n)})}function le(){return _u.getInitialState()}function pe(){return _u.getInitialState()}function _e(){return _u.getInitialState()}function de(t){return du[t.hassId]}function ve(t){var e=de(t);if(e){var n=e.finalTranscript||e.interimTranscript;t.dispatch(hu.VOICE_TRANSMITTING,{finalTranscript:n}),Zn.callService(t,"conversation","process",{text:n}).then(function(){t.dispatch(hu.VOICE_DONE)},function(){t.dispatch(hu.VOICE_ERROR)})}}function ye(t){var e=de(t);e&&(e.recognition.stop(),du[t.hassId]=!1)}function Se(t){ve(t),ye(t)}function ge(t){var e=Se.bind(null,t);e();var n=new webkitSpeechRecognition;du[t.hassId]={recognition:n,interimTranscript:"",finalTranscript:""},n.interimResults=!0,n.onstart=function(){return t.dispatch(hu.VOICE_START)},n.onerror=function(){return t.dispatch(hu.VOICE_ERROR)},n.onend=e,n.onresult=function(e){var n=de(t);if(n){for(var r="",i="",o=e.resultIndex;o=n)}function c(t,e){return h(t,e,0)}function f(t,e){return h(t,e,e)}function h(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function l(t){return v(t)?t:C(t)}function p(t){return y(t)?t:z(t)}function _(t){return S(t)?t:R(t)}function d(t){return v(t)&&!g(t)?t:L(t)}function v(t){return!(!t||!t[dn])}function y(t){return!(!t||!t[vn])}function S(t){return!(!t||!t[yn])}function g(t){return y(t)||S(t)}function m(t){return!(!t||!t[Sn])}function E(t){this.next=t}function I(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function b(){return{value:void 0,done:!0}}function O(t){return!!A(t)}function w(t){return t&&"function"==typeof t.next}function T(t){var e=A(t);return e&&e.call(t)}function A(t){var e=t&&(In&&t[In]||t[bn]);if("function"==typeof e)return e}function D(t){return t&&"number"==typeof t.length}function C(t){return null===t||void 0===t?H():v(t)?t.toSeq():V(t)}function z(t){return null===t||void 0===t?H().toKeyedSeq():v(t)?y(t)?t.toSeq():t.fromEntrySeq():P(t)}function R(t){return null===t||void 0===t?H():v(t)?y(t)?t.entrySeq():t.toIndexedSeq():x(t)}function L(t){return(null===t||void 0===t?H():v(t)?y(t)?t.entrySeq():t:x(t)).toSetSeq()}function M(t){this._array=t,this.size=t.length}function j(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function N(t){this._iterable=t,this.size=t.length||t.size}function k(t){this._iterator=t,this._iteratorCache=[]}function U(t){return!(!t||!t[wn])}function H(){return Tn||(Tn=new M([]))}function P(t){var e=Array.isArray(t)?new M(t).fromEntrySeq():w(t)?new k(t).fromEntrySeq():O(t)?new N(t).fromEntrySeq():"object"==typeof t?new j(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function x(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function V(t){var e=q(t)||"object"==typeof t&&new j(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return D(t)?new M(t):w(t)?new k(t):O(t)?new N(t):void 0}function F(t,e,n,r){var i=t._cache;if(i){for(var o=i.length-1,u=0;u<=o;u++){var a=i[n?o-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function G(t,e,n,r){var i=t._cache;if(i){var o=i.length-1,u=0;return new E(function(){var t=i[n?o-u:u];return u++>o?b():I(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function K(){throw TypeError("Abstract")}function Y(){}function B(){}function J(){}function W(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function X(t,e){return e?Q(e,t,"",{"":t}):Z(t)}function Q(t,e,n,r){return Array.isArray(e)?t.call(r,n,R(e).map(function(n,r){return Q(t,n,r,e)})):$(e)?t.call(r,n,z(e).map(function(n,r){return Q(t,n,r,e)})):e}function Z(t){return Array.isArray(t)?R(t).map(Z).toList():$(t)?z(t).map(Z).toMap():t}function $(t){return t&&(t.constructor===Object||void 0===t.constructor)}function tt(t){return t>>>1&1073741824|3221225471&t}function et(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return tt(n)}return"string"===e?t.length>jn?nt(t):rt(t):"function"==typeof t.hashCode?t.hashCode():it(t)}function nt(t){var e=Un[t];return void 0===e&&(e=rt(t),kn===Nn&&(kn=0,Un={}),kn++,Un[t]=e),e}function rt(t){for(var e=0,n=0;n0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ut(t,e){if(!t)throw new Error(e)}function at(t){ut(t!==1/0,"Cannot perform this action with an infinite size.")}function st(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ct(t){this._iter=t,this.size=t.size}function ft(t){this._iter=t,this.size=t.size}function ht(t){this._iter=t,this.size=t.size}function lt(t){var e=Mt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=jt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate(function(t,n){return e(n,t,r)!==!1},n)},e.__iteratorUncached=function(e,n){if(e===En){var r=t.__iterator(e,n);return new E(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===mn?gn:mn,n)},e}function pt(t,e,n){var r=Mt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,ln);return o===ln?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate(function(t,i,u){return r(e.call(n,t,i,u),i,o)!==!1},i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(En,i);return new E(function(){var i=o.next();if(i.done)return i;var u=i.value,a=u[0];return I(r,a,e.call(n,u[1],a,t),i)})},r}function _t(t,e){var n=Mt(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=lt(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=jt,n.__iterate=function(e,n){var r=this;return t.__iterate(function(t,n){return e(t,n,r)},!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function dt(t,e,n,r){var i=Mt(t);return r&&(i.has=function(r){var i=t.get(r,ln);return i!==ln&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,ln);return o!==ln&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,a=0;return t.__iterate(function(t,o,s){if(e.call(n,t,o,s))return a++,i(t,r?o:a-1,u)},o),a},i.__iteratorUncached=function(i,o){var u=t.__iterator(En,o),a=0;return new E(function(){for(;;){var o=u.next();if(o.done)return o;var s=o.value,c=s[0],f=s[1];if(e.call(n,f,c,t))return I(i,r?c:a++,f,o)}})},i}function vt(t,e,n){var r=Ut().asMutable();return t.__iterate(function(i,o){r.update(e.call(n,i,o,t),0,function(t){return t+1})}),r.asImmutable()}function yt(t,e,n){var r=y(t),i=(m(t)?be():Ut()).asMutable();t.__iterate(function(o,u){i.update(e.call(n,o,u,t),function(t){return t=t||[],t.push(r?[u,o]:o),t})});var o=Lt(t);return i.map(function(e){return Ct(t,o(e))})}function St(t,e,n,r){var i=t.size;if(void 0!==e&&(e=0|e),void 0!==n&&(n=0|n),s(e,n,i))return t;var o=c(e,i),a=f(n,i);if(o!==o||a!==a)return St(t.toSeq().cacheResult(),e,n,r);var h,l=a-o;l===l&&(h=l<0?0:l);var p=Mt(t);return p.size=0===h?h:t.size&&h||void 0,!r&&U(t)&&h>=0&&(p.get=function(e,n){return e=u(this,e),e>=0&&eh)return b();var t=i.next();return r||e===mn?t:e===gn?I(e,a-1,void 0,t):I(e,a-1,t.value[1],t)})},p}function gt(t,e,n){var r=Mt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var u=0;return t.__iterate(function(t,i,a){return e.call(n,t,i,a)&&++u&&r(t,i,o)}),u},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var u=t.__iterator(En,i),a=!0;return new E(function(){if(!a)return b();var t=u.next();if(t.done)return t;var i=t.value,s=i[0],c=i[1];return e.call(n,c,s,o)?r===En?t:I(r,s,c,t):(a=!1,b())})},r}function mt(t,e,n,r){var i=Mt(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var a=!0,s=0;return t.__iterate(function(t,o,c){if(!a||!(a=e.call(n,t,o,c)))return s++,i(t,r?o:s-1,u)}),s},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var a=t.__iterator(En,o),s=!0,c=0;return new E(function(){var t,o,f;do{if(t=a.next(),t.done)return r||i===mn?t:i===gn?I(i,c++,void 0,t):I(i,c++,t.value[1],t);var h=t.value;o=h[0],f=h[1],s&&(s=e.call(n,f,o,u))}while(s);return i===En?t:I(i,o,f,t)})},i}function Et(t,e){var n=y(t),r=[t].concat(e).map(function(t){return v(t)?n&&(t=p(t)):t=n?P(t):x(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&y(i)||S(t)&&S(i))return i}var o=new M(r);return n?o=o.toKeyedSeq():S(t)||(o=o.toSetSeq()),o=o.flatten(!0),o.size=r.reduce(function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}},0),o}function It(t,e,n){var r=Mt(t);return r.__iterateUncached=function(r,i){function o(t,s){var c=this;t.__iterate(function(t,i){return(!e||s0}function Dt(t,e,n){var r=Mt(t);return r.size=new M(n).map(function(t){return t.size}).min(),r.__iterate=function(t,e){for(var n,r=this,i=this.__iterator(mn,e),o=0;!(n=i.next()).done&&t(n.value,o++,r)!==!1;);return o},r.__iteratorUncached=function(t,r){var i=n.map(function(t){return t=l(t),T(r?t.reverse():t)}),o=0,u=!1;return new E(function(){var n;return u||(n=i.map(function(t){return t.next()}),u=n.some(function(t){return t.done})),u?b():I(t,o++,e.apply(null,n.map(function(t){return t.value})))})},r}function Ct(t,e){return U(t)?e:t.constructor(e)}function zt(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Rt(t){return at(t.size),o(t)}function Lt(t){return y(t)?p:S(t)?_:d}function Mt(t){return Object.create((y(t)?z:S(t)?R:L).prototype)}function jt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):C.prototype.cacheResult.call(this)}function Nt(t,e){return t>e?1:t>>n)&hn,a=(0===n?r:r>>>n)&hn,s=u===a?[Zt(t,e,n+cn,r,i)]:(o=new Ft(e,r,i),u>>=1)u[a]=1&n?e[o++]:void 0;return u[r]=i,new Vt(t,o+1,u)}function ne(t,e,n){for(var r=[],i=0;i>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function ae(t,e,n,r){var o=r?t:i(t);return o[e]=n,o}function se(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),u=0,a=0;a0&&ro?0:o-n,c=u-n;return c>fn&&(c=fn),function(){if(i===c)return Bn;var t=e?--c:i++;return r&&r[t]}}function i(t,r,i){var a,s=t&&t.array,c=i>o?0:o-i>>r,f=(u-i>>r)+1;return f>fn&&(f=fn),function(){for(;;){if(a){var t=a();if(t!==Bn)return t;a=null}if(c===f)return Bn;var o=e?--f:c++;a=n(s&&s[o],r-cn,i+(o<=t.size||n<0)return t.withMutations(function(t){n<0?me(t,n).set(0,r):me(t,0,n+1).set(n,r)});n+=t._origin;var i=t._tail,o=t._root,a=e(_n);return n>=Ie(t._capacity)?i=ye(i,t.__ownerID,0,n,r,a):o=ye(o,t.__ownerID,t._level,n,r,a),a.value?t.__ownerID?(t._root=o,t._tail=i,t.__hash=void 0,t.__altered=!0,t):_e(t._origin,t._capacity,t._level,o,i):t}function ye(t,e,r,i,o,u){var a=i>>>r&hn,s=t&&a0){var f=t&&t.array[a],h=ye(f,e,r-cn,i,o,u);return h===f?t:(c=Se(t,e),c.array[a]=h,c)}return s&&t.array[a]===o?t:(n(u),c=Se(t,e),void 0===o&&a===c.array.length-1?c.array.pop():c.array[a]=o,c)}function Se(t,e){return e&&t&&e===t.ownerID?t:new le(t?t.array.slice():[],e)}function ge(t,e){if(e>=Ie(t._capacity))return t._tail;if(e<1<0;)n=n.array[e>>>r&hn],r-=cn;return n}}function me(t,e,n){void 0!==e&&(e=0|e),void 0!==n&&(n=0|n);var i=t.__ownerID||new r,o=t._origin,u=t._capacity,a=o+e,s=void 0===n?u:n<0?u+n:o+n;if(a===o&&s===u)return t;if(a>=s)return t.clear();for(var c=t._level,f=t._root,h=0;a+h<0;)f=new le(f&&f.array.length?[void 0,f]:[],i),c+=cn,h+=1<=1<l?new le([],i):_;if(_&&p>l&&acn;y-=cn){var S=l>>>y&hn;v=v.array[S]=Se(v.array[S],i)}v.array[l>>>cn&hn]=_}if(s=p)a-=p,s-=p,c=cn,f=null,d=d&&d.removeBefore(i,0,a);else if(a>o||p>>c&hn;if(g!==p>>>c&hn)break;g&&(h+=(1<o&&(f=f.removeBefore(i,c,a-h)),f&&pi&&(i=a.size),v(u)||(a=a.map(function(t){return X(t)})),r.push(a)}return i>t.size&&(t=t.setSize(i)),ie(t,e,r)}function Ie(t){return t>>cn<=fn&&u.size>=2*o.size?(i=u.filter(function(t,e){return void 0!==t&&a!==e}),r=i.toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(r.__ownerID=i.__ownerID=t.__ownerID)):(r=o.remove(e),i=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=o,i=u.set(a,[e,n])}else r=o.set(e,u.size),i=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=i,t.__hash=void 0,t):we(r,i)}function De(t){return null===t||void 0===t?Re():Ce(t)?t:Re().unshiftAll(t)}function Ce(t){return!(!t||!t[Wn])}function ze(t,e,n,r){var i=Object.create(Xn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Re(){return Qn||(Qn=ze(0))}function Le(t){return null===t||void 0===t?ke():Me(t)&&!m(t)?t:ke().withMutations(function(e){var n=d(t);at(n.size),n.forEach(function(t){return e.add(t)})})}function Me(t){return!(!t||!t[Zn])}function je(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Ne(t,e){var n=Object.create($n);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ke(){return tr||(tr=Ne(Jt()))}function Ue(t){return null===t||void 0===t?xe():He(t)?t:xe().withMutations(function(e){var n=d(t);at(n.size),n.forEach(function(t){return e.add(t)})})}function He(t){return Me(t)&&m(t)}function Pe(t,e){var n=Object.create(er);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function xe(){return nr||(nr=Pe(Te()))}function Ve(t,e){var n,r=function(o){if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var u=Object.keys(t);Ge(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=Ut(o)},i=r.prototype=Object.create(rr);return i.constructor=r,r}function qe(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Fe(t){return t._name||t.constructor.name||"Record"}function Ge(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(t){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){ut(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Ye(t,e){if(t===e)return!0;if(!v(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||y(t)!==y(e)||S(t)!==S(e)||m(t)!==m(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!g(t);if(m(t)){var r=t.entries();return e.every(function(t,e){var i=r.next().value;return i&&W(i[1],t)&&(n||W(i[0],e))})&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var u=!0,a=e.__iterate(function(e,r){if(n?!t.has(e):i?!W(e,t.get(r,ln)):!W(t.get(r,ln),e))return u=!1,!1});return u&&t.size===a}function Be(t,e,n){if(!(this instanceof Be))return new Be(t,e,n);if(ut(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),ee?-1:0}function rn(t){if(t.size===1/0)return 0;var e=m(t),n=y(t),r=e?1:0,i=t.__iterate(n?e?function(t,e){r=31*r+un(et(t),et(e))|0}:function(t,e){r=r+un(et(t),et(e))|0}:e?function(t){r=31*r+et(t)|0}:function(t){r=r+et(t)|0});return on(i,r)}function on(t,e){return e=Dn(e,3432918353),e=Dn(e<<15|e>>>-15,461845907),e=Dn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=Dn(e^e>>>16,2246822507),e=Dn(e^e>>>13,3266489909),e=tt(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var an=Array.prototype.slice,sn="delete",cn=5,fn=1<r?b():I(t,i,n[e?r-i++:i++])})},t(j,z),j.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},j.prototype.has=function(t){return this._object.hasOwnProperty(t)},j.prototype.__iterate=function(t,e){for(var n=this,r=this._object,i=this._keys,o=i.length-1,u=0;u<=o;u++){var a=i[e?o-u:u];if(t(r[a],a,n)===!1)return u+1}return u},j.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length-1,o=0;return new E(function(){var u=r[e?i-o:o];return o++>i?b():I(t,u,n[u])})},j.prototype[Sn]=!0,t(N,R),N.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);var r=this._iterable,i=T(r),o=0;if(w(i))for(var u;!(u=i.next()).done&&t(u.value,o++,n)!==!1;);return o},N.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=T(n);if(!w(r))return new E(b);var i=0;return new E(function(){var e=r.next();return e.done?e:I(t,i++,e.value)})},t(k,R),k.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,i=this._iteratorCache,o=0;o=r.length){var e=n.next();if(e.done)return e;r[i]=e.value}return I(t,i,r[i++])})};var Tn;t(K,l),t(Y,K),t(B,K),t(J,K),K.Keyed=Y,K.Indexed=B,K.Set=J;var An,Dn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t=0|t,e=0|e;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Cn=Object.isExtensible,zn=function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}}(),Rn="function"==typeof WeakMap;Rn&&(An=new WeakMap);var Ln=0,Mn="__immutablehash__";"function"==typeof Symbol&&(Mn=Symbol(Mn));var jn=16,Nn=255,kn=0,Un={};t(st,z),st.prototype.get=function(t,e){return this._iter.get(t,e)},st.prototype.has=function(t){return this._iter.has(t)},st.prototype.valueSeq=function(){return this._iter.valueSeq()},st.prototype.reverse=function(){var t=this,e=_t(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},st.prototype.map=function(t,e){var n=this,r=pt(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},st.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Rt(this):0,function(i){return t(i,e?--n:n++,r)}),e)},st.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(mn,e),r=e?Rt(this):0;return new E(function(){var i=n.next();return i.done?i:I(t,e?--r:r++,i.value,i)})},st.prototype[Sn]=!0,t(ct,R),ct.prototype.includes=function(t){return this._iter.includes(t)},ct.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate(function(e){return t(e,r++,n)},e)},ct.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e),r=0;return new E(function(){var e=n.next();return e.done?e:I(t,r++,e.value,e)})},t(ft,L),ft.prototype.has=function(t){return this._iter.includes(t)},ft.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){return t(e,e,n)},e)},ft.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e);return new E(function(){var e=n.next();return e.done?e:I(t,e.value,e.value,e)})},t(ht,z),ht.prototype.entrySeq=function(){return this._iter.toSeq()},ht.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){if(e){zt(e);var r=v(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}},e)},ht.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e);return new E(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){zt(r);var i=v(r);return I(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},ct.prototype.cacheResult=st.prototype.cacheResult=ft.prototype.cacheResult=ht.prototype.cacheResult=jt,t(Ut,Y),Ut.prototype.toString=function(){return this.__toString("Map {","}")},Ut.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Ut.prototype.set=function(t,e){return Wt(this,t,e)},Ut.prototype.setIn=function(t,e){return this.updateIn(t,ln,function(){return e})},Ut.prototype.remove=function(t){return Wt(this,t,ln)},Ut.prototype.deleteIn=function(t){return this.updateIn(t,function(){return ln})},Ut.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},Ut.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=oe(this,kt(t),e,n);return r===ln?void 0:r},Ut.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},Ut.prototype.merge=function(){return ne(this,void 0,arguments)},Ut.prototype.mergeWith=function(t){var e=an.call(arguments,1);return ne(this,t,e)},Ut.prototype.mergeIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]})},Ut.prototype.mergeDeep=function(){return ne(this,re(void 0),arguments)},Ut.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return ne(this,re(t),e)},Ut.prototype.mergeDeepIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]})},Ut.prototype.sort=function(t){return be(wt(this,t))},Ut.prototype.sortBy=function(t,e){return be(wt(this,e,t))},Ut.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Ut.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new r)},Ut.prototype.asImmutable=function(){return this.__ensureOwner()},Ut.prototype.wasAltered=function(){return this.__altered},Ut.prototype.__iterator=function(t,e){return new Gt(this,t,e)},Ut.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate(function(e){return r++,t(e[1],e[0],n)},e),r},Ut.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Bt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Ut.isMap=Ht;var Hn="@@__IMMUTABLE_MAP__@@",Pn=Ut.prototype;Pn[Hn]=!0,Pn[sn]=Pn.remove,Pn.removeIn=Pn.deleteIn,Pt.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o=Vn)return $t(t,f,o,u);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new Pt(t,d)}},xt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=1<<((0===t?e:e>>>t)&hn),o=this.bitmap;return 0===(o&i)?r:this.nodes[ue(o&i-1)].get(t+cn,e,n,r)},xt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=1<=qn)return ee(t,l,c,a,_);if(f&&!_&&2===l.length&&Qt(l[1^h]))return l[1^h];if(f&&_&&1===l.length&&Qt(_))return _;var d=t&&t===this.ownerID,v=f?_?c:c^s:c|s,y=f?_?ae(l,h,_,d):ce(l,h,d):se(l,h,_,d);return d?(this.bitmap=v,this.nodes=y,this):new xt(t,v,y)},Vt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=(0===t?e:e>>>t)&hn,o=this.nodes[i];return o?o.get(t+cn,e,n,r):r},Vt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=i===ln,c=this.nodes,f=c[a];if(s&&!f)return this;var h=Xt(f,t,e+cn,n,r,i,o,u);if(h===f)return this;var l=this.count;if(f){if(!h&&(l--,l=0&&t>>e&hn;if(r>=this.array.length)return new le([],t);var i,o=0===r;if(e>0){var u=this.array[r];if(i=u&&u.removeBefore(t,e-cn,n),i===u&&o)return this}if(o&&!i)return this;var a=Se(this,t);if(!o)for(var s=0;s>>e&hn;if(r>=this.array.length)return this;var i;if(e>0){var o=this.array[r];if(i=o&&o.removeAfter(t,e-cn,n),i===o&&r===this.array.length-1)return this}var u=Se(this,t);return u.array.splice(r+1),i&&(u.array[r]=i),u};var Yn,Bn={};t(be,Ut),be.of=function(){return this(arguments)},be.prototype.toString=function(){return this.__toString("OrderedMap {","}")},be.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},be.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Te()},be.prototype.set=function(t,e){return Ae(this,t,e)},be.prototype.remove=function(t){return Ae(this,t,ln)},be.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},be.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate(function(e){return e&&t(e[1],e[0],n)},e)},be.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},be.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?we(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},be.isOrderedMap=Oe,be.prototype[Sn]=!0,be.prototype[sn]=be.prototype.remove;var Jn;t(De,B),De.of=function(){return this(arguments)},De.prototype.toString=function(){return this.__toString("Stack [","]")},De.prototype.get=function(t,e){var n=this._head;for(t=u(this,t);n&&t--;)n=n.next;return n?n.value:e},De.prototype.peek=function(){return this._head&&this._head.value},De.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pushAll=function(t){if(t=_(t),0===t.size)return this;at(t.size);var e=this.size,n=this._head;return t.reverse().forEach(function(t){e++,n={value:t,next:n}}),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pop=function(){return this.slice(1)},De.prototype.unshift=function(){return this.push.apply(this,arguments)},De.prototype.unshiftAll=function(t){return this.pushAll(t)},De.prototype.shift=function(){return this.pop.apply(this,arguments)},De.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Re()},De.prototype.slice=function(t,e){if(s(t,e,this.size))return this;var n=c(t,this.size),r=f(e,this.size);if(r!==this.size)return B.prototype.slice.call(this,t,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):ze(i,o)},De.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?ze(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},De.prototype.__iterate=function(t,e){var n=this;if(e)return this.reverse().__iterate(t);for(var r=0,i=this._head;i&&t(i.value,r++,n)!==!1;)i=i.next;return r},De.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new E(function(){if(r){var e=r.value;return r=r.next,I(t,n++,e)}return b()})},De.isStack=Ce;var Wn="@@__IMMUTABLE_STACK__@@",Xn=De.prototype;Xn[Wn]=!0,Xn.withMutations=Pn.withMutations,Xn.asMutable=Pn.asMutable,Xn.asImmutable=Pn.asImmutable,Xn.wasAltered=Pn.wasAltered;var Qn;t(Le,J),Le.of=function(){return this(arguments)},Le.fromKeys=function(t){return this(p(t).keySeq())},Le.prototype.toString=function(){return this.__toString("Set {","}")},Le.prototype.has=function(t){return this._map.has(t)},Le.prototype.add=function(t){return je(this,this._map.set(t,!0))},Le.prototype.remove=function(t){return je(this,this._map.remove(t))},Le.prototype.clear=function(){return je(this,this._map.clear())},Le.prototype.union=function(){var t=an.call(arguments,0);return t=t.filter(function(t){return 0!==t.size}),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations(function(e){for(var n=0;n1?" by "+this._step:"")+" ]"},Be.prototype.get=function(t,e){return this.has(t)?this._start+u(this,t)*this._step:e},Be.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e=0&&nn?b():I(t,o++,u)})},Be.prototype.equals=function(t){return t instanceof Be?this._start===t._start&&this._end===t._end&&this._step===t._step:Ye(this,t)};var ir;t(Je,R),Je.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Je.prototype.get=function(t,e){return this.has(t)?this._value:e},Je.prototype.includes=function(t){return W(this._value,t)},Je.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:new Je(this._value,f(e,n)-c(t,n))},Je.prototype.reverse=function(){return this},Je.prototype.indexOf=function(t){return W(this._value,t)?0:-1},Je.prototype.lastIndexOf=function(t){return W(this._value,t)?this.size:-1},Je.prototype.__iterate=function(t,e){for(var n=this,r=0;rthis.size?e:this.find(function(e,n){return n===t},void 0,e)},has:function(t){return t=u(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t-1&&t%1===0&&t<=Number.MAX_VALUE}var i=Function.prototype.bind;e.isString=function(t){return"string"==typeof t||"[object String]"===n(t)},e.isArray=Array.isArray||function(t){return"[object Array]"===n(t)},"function"!=typeof/./&&"object"!=typeof Int8Array?e.isFunction=function(t){return"function"==typeof t||!1}:e.isFunction=function(t){return"[object Function]"===toString.call(t)},e.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},e.extend=function(t){var e=arguments,n=arguments.length;if(!t||n<2)return t||{};for(var r=1;r0)){var e=this.reactorState.get("dirtyStores");if(0!==e.size){var n=c.default.Set().withMutations(function(n){n.union(t.observerState.get("any")),e.forEach(function(e){var r=t.observerState.getIn(["stores",e]);r&&n.union(r)})});n.forEach(function(e){var n=t.observerState.getIn(["observersMap",e]);if(n){var r=n.get("getter"),i=n.get("handler"),o=p.evaluate(t.prevReactorState,r),u=p.evaluate(t.reactorState,r);t.prevReactorState=o.reactorState,t.reactorState=u.reactorState;var a=o.result,s=u.result;c.default.is(a,s)||i.call(null,s)}});var r=p.resetDirtyStores(this.reactorState);this.prevReactorState=r,this.reactorState=r}}}},{key:"batchStart",value:function(){this.__batchDepth++}},{key:"batchEnd",value:function(){if(this.__batchDepth--,this.__batchDepth<=0){this.__isDispatching=!0;try{this.__notify()}catch(t){throw this.__isDispatching=!1,t}this.__isDispatching=!1}}}]),t}();e.default=(0,y.toFactory)(g),t.exports=e.default},function(t,e,n){function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n={};return(0,o.each)(e,function(e,r){n[r]=t.evaluate(e)}),n}Object.defineProperty(e,"__esModule",{value:!0});var o=n(4);e.default=function(t){return{getInitialState:function(){return i(t,this.getDataBindings())},componentDidMount:function(){var e=this;this.__unwatchFns=[],(0,o.each)(this.getDataBindings(),function(n,i){var o=t.observe(n,function(t){e.setState(r({},i,t))});e.__unwatchFns.push(o)})},componentWillUnmount:function(){for(var t=this;this.__unwatchFns.length;)t.__unwatchFns.shift()()}}},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){return new L({result:t,reactorState:e})}function o(t,e){return t.withMutations(function(t){(0,R.each)(e,function(e,n){t.getIn(["stores",n])&&console.warn("Store already defined for id = "+n);var r=e.getInitialState();if(void 0===r&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store getInitialState() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(r))throw new Error("Store getInitialState() must return an immutable value, did you forget to call toImmutable");t.update("stores",function(t){return t.set(n,e)}).update("state",function(t){return t.set(n,r)}).update("dirtyStores",function(t){return t.add(n)}).update("storeStates",function(t){return b(t,[n])})}),I(t)})}function u(t,e){return t.withMutations(function(t){(0,R.each)(e,function(e,n){t.update("stores",function(t){return t.set(n,e)})})})}function a(t,e,n){if(void 0===e&&f(t,"throwOnUndefinedActionType"))throw new Error("`dispatch` cannot be called with an `undefined` action type.");var r=t.get("state"),i=t.get("dirtyStores"),o=r.withMutations(function(r){A.default.dispatchStart(t,e,n),t.get("stores").forEach(function(o,u){var a=r.get(u),s=void 0;try{s=o.handle(a,e,n)}catch(e){throw A.default.dispatchError(t,e.message),e}if(void 0===s&&f(t,"throwOnUndefinedStoreReturnValue")){var c="Store handler must return a value, did you forget a return statement";throw A.default.dispatchError(t,c),new Error(c)}r.set(u,s),a!==s&&(i=i.add(u))}),A.default.dispatchEnd(t,r,i)}),u=t.set("state",o).set("dirtyStores",i).update("storeStates",function(t){return b(t,i)});return I(u)}function s(t,e){var n=[],r=(0,D.toImmutable)({}).withMutations(function(r){(0,R.each)(e,function(e,i){var o=t.getIn(["stores",i]);if(o){var u=o.deserialize(e);void 0!==u&&(r.set(i,u),n.push(i))}})}),i=w.default.Set(n);return t.update("state",function(t){return t.merge(r)}).update("dirtyStores",function(t){return t.union(i)}).update("storeStates",function(t){return b(t,n)})}function c(t,e,n){var r=e;(0,z.isKeyPath)(e)&&(e=(0,C.fromKeyPath)(e));var i=t.get("nextId"),o=(0,C.getStoreDeps)(e),u=w.default.Map({id:i,storeDeps:o,getterKey:r,getter:e,handler:n}),a=void 0;return a=0===o.size?t.update("any",function(t){return t.add(i)}):t.withMutations(function(t){o.forEach(function(e){var n=["stores",e];t.hasIn(n)||t.setIn(n,w.default.Set()),t.updateIn(["stores",e],function(t){return t.add(i)})})}),a=a.set("nextId",i+1).setIn(["observersMap",i],u),{observerState:a,entry:u}}function f(t,e){var n=t.getIn(["options",e]);if(void 0===n)throw new Error("Invalid option: "+e);return n}function h(t,e,n){var r=t.get("observersMap").filter(function(t){var r=t.get("getterKey"),i=!n||t.get("handler")===n;return!!i&&((0,z.isKeyPath)(e)&&(0,z.isKeyPath)(r)?(0,z.isEqual)(e,r):e===r)});return t.withMutations(function(t){r.forEach(function(e){return l(t,e)})})}function l(t,e){return t.withMutations(function(t){var n=e.get("id"),r=e.get("storeDeps");0===r.size?t.update("any",function(t){return t.remove(n)}):r.forEach(function(e){t.updateIn(["stores",e],function(t){return t?t.remove(n):t})}),t.removeIn(["observersMap",n])})}function p(t){var e=t.get("state");return t.withMutations(function(t){var n=t.get("stores"),r=n.keySeq().toJS();n.forEach(function(n,r){var i=e.get(r),o=n.handleReset(i);if(void 0===o&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store handleReset() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(o))throw new Error("Store reset state must be an immutable value, did you forget to call toImmutable");t.setIn(["state",r],o)}),t.update("storeStates",function(t){return b(t,r)}),v(t)})}function _(t,e){var n=t.get("state");if((0,z.isKeyPath)(e))return i(n.getIn(e),t);if(!(0,C.isGetter)(e))throw new Error("evaluate must be passed a keyPath or Getter");if(g(t,e))return i(E(t,e),t);var r=(0,C.getDeps)(e).map(function(e){return _(t,e).result}),o=(0,C.getComputeFn)(e).apply(null,r);return i(o,m(t,e,o))}function d(t){var e={};return t.get("stores").forEach(function(n,r){var i=t.getIn(["state",r]),o=n.serialize(i);void 0!==o&&(e[r]=o)}),e}function v(t){return t.set("dirtyStores",w.default.Set())}function y(t){return t}function S(t,e){var n=y(e);return t.getIn(["cache",n])}function g(t,e){var n=S(t,e);if(!n)return!1;var r=n.get("storeStates");return 0!==r.size&&r.every(function(e,n){return t.getIn(["storeStates",n])===e})}function m(t,e,n){var r=y(e),i=t.get("dispatchId"),o=(0,C.getStoreDeps)(e),u=(0,D.toImmutable)({}).withMutations(function(e){o.forEach(function(n){var r=t.getIn(["storeStates",n]);e.set(n,r)})});return t.setIn(["cache",r],w.default.Map({value:n,storeStates:u,dispatchId:i}))}function E(t,e){var n=y(e);return t.getIn(["cache",n,"value"])}function I(t){return t.update("dispatchId",function(t){return t+1})}function b(t,e){return t.withMutations(function(t){e.forEach(function(e){var n=t.has(e)?t.get(e)+1:1;t.set(e,n)})})}Object.defineProperty(e,"__esModule",{value:!0}),e.registerStores=o,e.replaceStores=u,e.dispatch=a,e.loadState=s,e.addObserver=c,e.getOption=f,e.removeObserver=h,e.removeObserverByEntry=l,e.reset=p,e.evaluate=_,e.serialize=d,e.resetDirtyStores=v;var O=n(3),w=r(O),T=n(9),A=r(T),D=n(5),C=n(10),z=n(11),R=n(4),L=w.default.Record({result:null,reactorState:null})},function(t,e,n){var r=n(8);e.dispatchStart=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.groupCollapsed("Dispatch: %s",e),console.group("payload"),console.debug(n),console.groupEnd())},e.dispatchError=function(t,e){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.debug("Dispatch error: "+e),console.groupEnd())},e.dispatchEnd=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&((0,r.getOption)(t,"logDirtyStores")&&console.log("Stores updated:",n.toList().toJS()),(0,r.getOption)(t,"logAppState")&&console.debug("Dispatch done, new state: ",e.toJS()),console.groupEnd())}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,l.isArray)(t)&&(0,l.isFunction)(t[t.length-1])}function o(t){return t[t.length-1]}function u(t){return t.slice(0,t.length-1)}function a(t,e){e||(e=h.default.Set());var n=h.default.Set().withMutations(function(e){if(!i(t))throw new Error("getFlattenedDeps must be passed a Getter");u(t).forEach(function(t){if((0,p.isKeyPath)(t))e.add((0,f.List)(t));else{if(!i(t))throw new Error("Invalid getter, each dependency must be a KeyPath or Getter");e.union(a(t))}})});return e.union(n)}function s(t){if(!(0,p.isKeyPath)(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,_]}function c(t){if(t.hasOwnProperty("__storeDeps"))return t.__storeDeps;var e=a(t).map(function(t){return t.first()}).filter(function(t){return!!t});return Object.defineProperty(t,"__storeDeps",{enumerable:!1,configurable:!1,writable:!1,value:e}),e}Object.defineProperty(e,"__esModule",{value:!0});var f=n(3),h=r(f),l=n(4),p=n(11),_=function(t){return t};e.default={isGetter:i,getComputeFn:o,getFlattenedDeps:a,getStoreDeps:c,getDeps:u,fromKeyPath:s},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,s.isArray)(t)&&!(0,s.isFunction)(t[t.length-1])}function o(t,e){var n=a.default.List(t),r=a.default.List(e);return a.default.is(n,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.isKeyPath=i,e.isEqual=o;var u=n(3),a=r(u),s=n(4)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=(0,r.Map)({logDispatches:!1,logAppState:!1,logDirtyStores:!1,throwOnUndefinedActionType:!1,throwOnUndefinedStoreReturnValue:!1,throwOnNonImmutableStore:!1,throwOnDispatchInDispatch:!1});e.PROD_OPTIONS=i;var o=(0,r.Map)({logDispatches:!0,logAppState:!0,logDirtyStores:!0,throwOnUndefinedActionType:!0,throwOnUndefinedStoreReturnValue:!0,throwOnNonImmutableStore:!0,throwOnDispatchInDispatch:!0});e.DEBUG_OPTIONS=o;var u=(0,r.Record)({dispatchId:0,state:(0,r.Map)(),stores:(0,r.Map)(),cache:(0,r.Map)(),storeStates:(0,r.Map)(),dirtyStores:(0,r.Set)(),debug:!1,options:i});e.ReactorState=u;var a=(0,r.Record)({any:(0,r.Set)(),stores:(0,r.Map)({}),observersMap:(0,r.Map)({}),nextId:1});e.ObserverState=a}])})}),be=t(Ie),Oe=e(function(t){var e=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n};t.exports=e}),we=t(Oe),Te=we({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),Ae=be.Store,De=be.toImmutable,Ce=new Ae({getInitialState:function(){return De({isValidating:!1,authToken:!1,host:null,isInvalid:!1,errorMessage:""})},initialize:function(){this.on(Te.VALIDATING_AUTH_TOKEN,n),this.on(Te.VALID_AUTH_TOKEN,r),this.on(Te.INVALID_AUTH_TOKEN,i)}}),ze=be.Store,Re=be.toImmutable,Le=new ze({getInitialState:function(){return Re({authToken:null,host:""})},initialize:function(){this.on(Te.VALID_AUTH_TOKEN,o),this.on(Te.LOG_OUT,u)}}),Me=be.Store,je=new Me({getInitialState:function(){return!0},initialize:function(){this.on(Te.VALID_AUTH_TOKEN,a)}}),Ne=we({STREAM_START:null,STREAM_STOP:null,STREAM_ERROR:null}),ke="object"==typeof window&&"EventSource"in window,Ue=be.Store,He=be.toImmutable,Pe=new Ue({getInitialState:function(){return He({isSupported:ke,isStreaming:!1,useStreaming:!0,hasError:!1})},initialize:function(){this.on(Ne.STREAM_START,s),this.on(Ne.STREAM_STOP,c),this.on(Ne.STREAM_ERROR,f),this.on(Ne.LOG_OUT,h)}}),xe=we({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),Ve=be.Store,qe=new Ve({getInitialState:function(){return!0},initialize:function(){this.on(xe.API_FETCH_ALL_START,function(){return!0}),this.on(xe.API_FETCH_ALL_SUCCESS,function(){return!1}),this.on(xe.API_FETCH_ALL_FAIL,function(){return!1}),this.on(xe.LOG_OUT,function(){return!1})}}),Fe=be.Store,Ge=new Fe({getInitialState:function(){return!1},initialize:function(){this.on(xe.SYNC_SCHEDULED,function(){return!0}),this.on(xe.SYNC_SCHEDULE_CANCELLED,function(){return!1}),this.on(xe.LOG_OUT,function(){return!1})}}),Ke=we({API_FETCH_SUCCESS:null,API_FETCH_START:null,API_FETCH_FAIL:null,API_SAVE_SUCCESS:null,API_SAVE_START:null,API_SAVE_FAIL:null,API_DELETE_SUCCESS:null,API_DELETE_START:null,API_DELETE_FAIL:null,LOG_OUT:null}),Ye=be.Store,Be=be.toImmutable,Je=new Ye({getInitialState:function(){return Be({})},initialize:function(){var t=this;this.on(Ke.API_FETCH_SUCCESS,l),this.on(Ke.API_SAVE_SUCCESS,l),this.on(Ke.API_DELETE_SUCCESS,p),this.on(Ke.LOG_OUT,function(){return t.getInitialState()})}}),We=e(function(t){function e(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function n(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(t){i[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}var r=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;t.exports=n()?Object.assign:function(t,n){for(var o,u,a=arguments,s=e(t),c=1;c199&&u.status<300?t(e):n(e)},u.onerror=function(){return n({})},r?(u.setRequestHeader("Content-Type","application/json;charset=UTF-8"),u.send(JSON.stringify(r))):u.send()})}function A(t,e){var n=e.message;return t.set(t.size,n)}function D(){return In.getInitialState()}function C(t,e){t.dispatch(gn.NOTIFICATION_CREATED,{message:e})}function z(t){t.registerStores({notifications:In})}function R(t,e){if("lock"===t)return!0;if("garage_door"===t)return!0;var n=e.get(t);return!!n&&n.services.has("turn_on")}function L(t,e){return!!t&&("group"===t.domain?"on"===t.state||"off"===t.state:R(t.domain,e))}function M(t,e){return[Wn(t),function(t){return!!t&&t.services.has(e)}]}function j(t){return[yn.byId(t),Jn,L]}function N(t,e,n){function r(){var c=(new Date).getTime()-a;c0?i=setTimeout(r,e-c):(i=null,n||(s=t.apply(u,o),i||(u=o=null)))}var i,o,u,a,s;null==e&&(e=100);var c=function(){u=this,o=arguments,a=(new Date).getTime();var c=n&&!i;return i||(i=setTimeout(r,e)),c&&(s=t.apply(u,o),u=o=null),s};return c.clear=function(){i&&(clearTimeout(i),i=null)},c}function k(t,e){var n=e.component;return t.push(n)}function U(t,e){var n=e.components;return ar(n)}function H(){return sr.getInitialState()}function P(t,e){var n=e.latitude,r=e.longitude,i=e.location_name,o=e.temperature_unit,u=e.time_zone,a=e.version;return fr({latitude:n,longitude:r,location_name:i,temperature_unit:o,time_zone:u,serverVersion:a})}function x(){return hr.getInitialState()}function V(t,e){t.dispatch(or.SERVER_CONFIG_LOADED,e)}function q(t){rn(t,"GET","config").then(function(e){return V(t,e)})}function F(t,e){t.dispatch(or.COMPONENT_LOADED,{component:e})}function G(t){return[["serverComponent"],function(e){return e.contains(t)}]}function K(t){t.registerStores({serverComponent:sr,serverConfig:hr})}function Y(t,e){var n=e.pane;return n}function B(){return Ir.getInitialState()}function J(t,e){var n=e.panels;return Or(n)}function W(){return wr.getInitialState()}function X(t,e){var n=e.show;return!!n}function Q(){return Ar.getInitialState()}function Z(t,e){t.dispatch(mr.SHOW_SIDEBAR,{show:e})}function $(t,e){t.dispatch(mr.NAVIGATE,{pane:e})}function tt(t,e){t.dispatch(mr.PANELS_LOADED,{panels:e})}function et(t,e){var n=e.entityId;return n}function nt(){return kr.getInitialState()}function rt(t,e){t.dispatch(jr.SELECT_ENTITY,{entityId:e})}function it(t){t.dispatch(jr.SELECT_ENTITY,{entityId:null})}function ot(t){return!t||(new Date).getTime()-t>6e4}function ut(t,e){var n=e.date;return n.toISOString()}function at(){return xr.getInitialState()}function st(t,e){var n=e.date,r=e.stateHistory;return 0===r.length?t.set(n,qr({})):t.withMutations(function(t){r.forEach(function(e){return t.setIn([n,e[0].entity_id],qr(e.map(cn.fromJSON)))})})}function ct(){return Fr.getInitialState()}function ft(t,e){var n=e.stateHistory;return t.withMutations(function(t){n.forEach(function(e){return t.set(e[0].entity_id,Br(e.map(cn.fromJSON)))})})}function ht(){return Jr.getInitialState()}function lt(t,e){var n=e.stateHistory,r=(new Date).getTime();return t.withMutations(function(t){n.forEach(function(e){return t.set(e[0].entity_id,r)}),history.length>1&&t.set(Qr,r)})}function pt(){return Zr.getInitialState()}function _t(t,e){t.dispatch(Hr.ENTITY_HISTORY_DATE_SELECTED,{date:e})}function dt(t,e){void 0===e&&(e=null),t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_START,{});var n="history/period";return null!==e&&(n+="?filter_entity_id="+e),rn(t,"GET",n).then(function(e){return t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,{stateHistory:e})},function(){return t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_ERROR,{})})}function vt(t,e){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_START,{date:e}),rn(t,"GET","history/period/"+e).then(function(n){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_SUCCESS,{date:e,stateHistory:n})},function(){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_ERROR,{})})}function yt(t){var e=t.evaluate(ei);return vt(t,e)}function St(t){t.registerStores({currentEntityHistoryDate:xr,entityHistory:Fr,isLoadingEntityHistory:Kr,recentEntityHistory:Jr,recentEntityHistoryUpdated:Zr})}function gt(t){t.registerStores({moreInfoEntityId:kr})}function mt(t,e){var n=e.model,r=e.result,i=e.params;if(null===t||"entity"!==n.entity||!i.replace)return t;for(var o=0;oQo}function ae(t){t.registerStores({currentLogbookDate:Uo,isLoadingLogbookEntries:Po,logbookEntries:Ko,logbookEntriesUpdated:Jo})}function se(t,e){return rn(t,"POST","template",{template:e})}function ce(t){return t.set("isListening",!0)}function fe(t,e){var n=e.interimTranscript,r=e.finalTranscript;return t.withMutations(function(t){return t.set("isListening",!0).set("isTransmitting",!1).set("interimTranscript",n).set("finalTranscript",r)})}function he(t,e){var n=e.finalTranscript;return t.withMutations(function(t){return t.set("isListening",!1).set("isTransmitting",!0).set("interimTranscript","").set("finalTranscript",n)})}function le(){return _u.getInitialState()}function pe(){return _u.getInitialState()}function _e(){return _u.getInitialState()}function de(t){return du[t.hassId]}function ve(t){var e=de(t);if(e){var n=e.finalTranscript||e.interimTranscript;t.dispatch(hu.VOICE_TRANSMITTING,{finalTranscript:n}),Zn.callService(t,"conversation","process",{text:n}).then(function(){t.dispatch(hu.VOICE_DONE)},function(){t.dispatch(hu.VOICE_ERROR)})}}function ye(t){var e=de(t);e&&(e.recognition.stop(),du[t.hassId]=!1)}function Se(t){ve(t),ye(t)}function ge(t){var e=Se.bind(null,t);e();var n=new webkitSpeechRecognition;du[t.hassId]={recognition:n,interimTranscript:"",finalTranscript:""},n.interimResults=!0,n.onstart=function(){return t.dispatch(hu.VOICE_START)},n.onerror=function(){return t.dispatch(hu.VOICE_ERROR)},n.onend=e,n.onresult=function(e){var n=de(t);if(n){for(var r="",i="",o=e.resultIndex;o=n)}function c(t,e){return h(t,e,0)}function f(t,e){return h(t,e,e)}function h(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function l(t){return v(t)?t:C(t)}function p(t){return y(t)?t:z(t)}function _(t){return S(t)?t:R(t)}function d(t){return v(t)&&!g(t)?t:L(t)}function v(t){return!(!t||!t[dn])}function y(t){return!(!t||!t[vn])}function S(t){return!(!t||!t[yn])}function g(t){return y(t)||S(t)}function m(t){return!(!t||!t[Sn])}function E(t){this.next=t}function I(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function b(){return{value:void 0,done:!0}}function O(t){return!!A(t)}function w(t){return t&&"function"==typeof t.next}function T(t){var e=A(t);return e&&e.call(t)}function A(t){var e=t&&(In&&t[In]||t[bn]);if("function"==typeof e)return e}function D(t){return t&&"number"==typeof t.length}function C(t){return null===t||void 0===t?H():v(t)?t.toSeq():V(t)}function z(t){return null===t||void 0===t?H().toKeyedSeq():v(t)?y(t)?t.toSeq():t.fromEntrySeq():P(t)}function R(t){return null===t||void 0===t?H():v(t)?y(t)?t.entrySeq():t.toIndexedSeq():x(t)}function L(t){return(null===t||void 0===t?H():v(t)?y(t)?t.entrySeq():t:x(t)).toSetSeq()}function M(t){this._array=t,this.size=t.length}function j(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function N(t){this._iterable=t,this.size=t.length||t.size}function k(t){this._iterator=t,this._iteratorCache=[]}function U(t){return!(!t||!t[wn])}function H(){return Tn||(Tn=new M([]))}function P(t){var e=Array.isArray(t)?new M(t).fromEntrySeq():w(t)?new k(t).fromEntrySeq():O(t)?new N(t).fromEntrySeq():"object"==typeof t?new j(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function x(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function V(t){var e=q(t)||"object"==typeof t&&new j(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return D(t)?new M(t):w(t)?new k(t):O(t)?new N(t):void 0}function F(t,e,n,r){var i=t._cache;if(i){for(var o=i.length-1,u=0;u<=o;u++){var a=i[n?o-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function G(t,e,n,r){var i=t._cache;if(i){var o=i.length-1,u=0;return new E(function(){var t=i[n?o-u:u];return u++>o?b():I(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function K(){throw TypeError("Abstract")}function Y(){}function B(){}function J(){}function W(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function X(t,e){return e?Q(e,t,"",{"":t}):Z(t)}function Q(t,e,n,r){return Array.isArray(e)?t.call(r,n,R(e).map(function(n,r){return Q(t,n,r,e)})):$(e)?t.call(r,n,z(e).map(function(n,r){return Q(t,n,r,e)})):e}function Z(t){return Array.isArray(t)?R(t).map(Z).toList():$(t)?z(t).map(Z).toMap():t}function $(t){return t&&(t.constructor===Object||void 0===t.constructor)}function tt(t){return t>>>1&1073741824|3221225471&t}function et(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return tt(n)}return"string"===e?t.length>jn?nt(t):rt(t):"function"==typeof t.hashCode?t.hashCode():it(t)}function nt(t){var e=Un[t];return void 0===e&&(e=rt(t),kn===Nn&&(kn=0,Un={}),kn++,Un[t]=e),e}function rt(t){for(var e=0,n=0;n0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ut(t,e){if(!t)throw new Error(e)}function at(t){ut(t!==1/0,"Cannot perform this action with an infinite size.")}function st(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ct(t){this._iter=t,this.size=t.size}function ft(t){this._iter=t,this.size=t.size}function ht(t){this._iter=t,this.size=t.size}function lt(t){var e=Mt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=jt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate(function(t,n){return e(n,t,r)!==!1},n)},e.__iteratorUncached=function(e,n){if(e===En){var r=t.__iterator(e,n);return new E(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===mn?gn:mn,n)},e}function pt(t,e,n){var r=Mt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,ln);return o===ln?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate(function(t,i,u){return r(e.call(n,t,i,u),i,o)!==!1},i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(En,i);return new E(function(){var i=o.next();if(i.done)return i;var u=i.value,a=u[0];return I(r,a,e.call(n,u[1],a,t),i)})},r}function _t(t,e){var n=Mt(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=lt(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=jt,n.__iterate=function(e,n){var r=this;return t.__iterate(function(t,n){return e(t,n,r)},!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function dt(t,e,n,r){var i=Mt(t);return r&&(i.has=function(r){var i=t.get(r,ln);return i!==ln&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,ln);return o!==ln&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,a=0;return t.__iterate(function(t,o,s){if(e.call(n,t,o,s))return a++,i(t,r?o:a-1,u)},o),a},i.__iteratorUncached=function(i,o){var u=t.__iterator(En,o),a=0;return new E(function(){for(;;){var o=u.next();if(o.done)return o;var s=o.value,c=s[0],f=s[1];if(e.call(n,f,c,t))return I(i,r?c:a++,f,o)}})},i}function vt(t,e,n){var r=Ut().asMutable();return t.__iterate(function(i,o){r.update(e.call(n,i,o,t),0,function(t){return t+1})}),r.asImmutable()}function yt(t,e,n){var r=y(t),i=(m(t)?be():Ut()).asMutable();t.__iterate(function(o,u){i.update(e.call(n,o,u,t),function(t){return t=t||[],t.push(r?[u,o]:o),t})});var o=Lt(t);return i.map(function(e){return Ct(t,o(e))})}function St(t,e,n,r){var i=t.size;if(void 0!==e&&(e=0|e),void 0!==n&&(n=0|n),s(e,n,i))return t;var o=c(e,i),a=f(n,i);if(o!==o||a!==a)return St(t.toSeq().cacheResult(),e,n,r);var h,l=a-o;l===l&&(h=l<0?0:l);var p=Mt(t);return p.size=0===h?h:t.size&&h||void 0,!r&&U(t)&&h>=0&&(p.get=function(e,n){return e=u(this,e),e>=0&&eh)return b();var t=i.next();return r||e===mn?t:e===gn?I(e,a-1,void 0,t):I(e,a-1,t.value[1],t)})},p}function gt(t,e,n){var r=Mt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var u=0;return t.__iterate(function(t,i,a){return e.call(n,t,i,a)&&++u&&r(t,i,o)}),u},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var u=t.__iterator(En,i),a=!0;return new E(function(){if(!a)return b();var t=u.next();if(t.done)return t;var i=t.value,s=i[0],c=i[1];return e.call(n,c,s,o)?r===En?t:I(r,s,c,t):(a=!1,b())})},r}function mt(t,e,n,r){var i=Mt(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var a=!0,s=0;return t.__iterate(function(t,o,c){if(!a||!(a=e.call(n,t,o,c)))return s++,i(t,r?o:s-1,u)}),s},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var a=t.__iterator(En,o),s=!0,c=0;return new E(function(){var t,o,f;do{if(t=a.next(),t.done)return r||i===mn?t:i===gn?I(i,c++,void 0,t):I(i,c++,t.value[1],t);var h=t.value;o=h[0],f=h[1],s&&(s=e.call(n,f,o,u))}while(s);return i===En?t:I(i,o,f,t)})},i}function Et(t,e){var n=y(t),r=[t].concat(e).map(function(t){return v(t)?n&&(t=p(t)):t=n?P(t):x(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&y(i)||S(t)&&S(i))return i}var o=new M(r);return n?o=o.toKeyedSeq():S(t)||(o=o.toSetSeq()),o=o.flatten(!0),o.size=r.reduce(function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}},0),o}function It(t,e,n){var r=Mt(t);return r.__iterateUncached=function(r,i){function o(t,s){var c=this;t.__iterate(function(t,i){return(!e||s0}function Dt(t,e,n){var r=Mt(t);return r.size=new M(n).map(function(t){return t.size}).min(),r.__iterate=function(t,e){for(var n,r=this,i=this.__iterator(mn,e),o=0;!(n=i.next()).done&&t(n.value,o++,r)!==!1;);return o},r.__iteratorUncached=function(t,r){var i=n.map(function(t){return t=l(t),T(r?t.reverse():t)}),o=0,u=!1;return new E(function(){var n;return u||(n=i.map(function(t){return t.next()}),u=n.some(function(t){return t.done})),u?b():I(t,o++,e.apply(null,n.map(function(t){return t.value})))})},r}function Ct(t,e){return U(t)?e:t.constructor(e)}function zt(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Rt(t){return at(t.size),o(t)}function Lt(t){return y(t)?p:S(t)?_:d}function Mt(t){return Object.create((y(t)?z:S(t)?R:L).prototype)}function jt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):C.prototype.cacheResult.call(this)}function Nt(t,e){return t>e?1:t>>n)&hn,a=(0===n?r:r>>>n)&hn,s=u===a?[Zt(t,e,n+cn,r,i)]:(o=new Ft(e,r,i),u>>=1)u[a]=1&n?e[o++]:void 0;return u[r]=i,new Vt(t,o+1,u)}function ne(t,e,n){for(var r=[],i=0;i>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function ae(t,e,n,r){var o=r?t:i(t);return o[e]=n,o}function se(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),u=0,a=0;a0&&ro?0:o-n,c=u-n;return c>fn&&(c=fn),function(){if(i===c)return Bn;var t=e?--c:i++;return r&&r[t]}}function i(t,r,i){var a,s=t&&t.array,c=i>o?0:o-i>>r,f=(u-i>>r)+1;return f>fn&&(f=fn),function(){for(;;){if(a){var t=a();if(t!==Bn)return t;a=null}if(c===f)return Bn;var o=e?--f:c++;a=n(s&&s[o],r-cn,i+(o<=t.size||n<0)return t.withMutations(function(t){n<0?me(t,n).set(0,r):me(t,0,n+1).set(n,r)});n+=t._origin;var i=t._tail,o=t._root,a=e(_n);return n>=Ie(t._capacity)?i=ye(i,t.__ownerID,0,n,r,a):o=ye(o,t.__ownerID,t._level,n,r,a),a.value?t.__ownerID?(t._root=o,t._tail=i,t.__hash=void 0,t.__altered=!0,t):_e(t._origin,t._capacity,t._level,o,i):t}function ye(t,e,r,i,o,u){var a=i>>>r&hn,s=t&&a0){var f=t&&t.array[a],h=ye(f,e,r-cn,i,o,u);return h===f?t:(c=Se(t,e),c.array[a]=h,c)}return s&&t.array[a]===o?t:(n(u),c=Se(t,e),void 0===o&&a===c.array.length-1?c.array.pop():c.array[a]=o,c)}function Se(t,e){return e&&t&&e===t.ownerID?t:new le(t?t.array.slice():[],e)}function ge(t,e){if(e>=Ie(t._capacity))return t._tail;if(e<1<0;)n=n.array[e>>>r&hn],r-=cn;return n}}function me(t,e,n){void 0!==e&&(e=0|e),void 0!==n&&(n=0|n);var i=t.__ownerID||new r,o=t._origin,u=t._capacity,a=o+e,s=void 0===n?u:n<0?u+n:o+n;if(a===o&&s===u)return t;if(a>=s)return t.clear();for(var c=t._level,f=t._root,h=0;a+h<0;)f=new le(f&&f.array.length?[void 0,f]:[],i),c+=cn,h+=1<=1<l?new le([],i):_;if(_&&p>l&&acn;y-=cn){var S=l>>>y&hn;v=v.array[S]=Se(v.array[S],i)}v.array[l>>>cn&hn]=_}if(s=p)a-=p,s-=p,c=cn,f=null,d=d&&d.removeBefore(i,0,a);else if(a>o||p>>c&hn;if(g!==p>>>c&hn)break;g&&(h+=(1<o&&(f=f.removeBefore(i,c,a-h)),f&&pi&&(i=a.size),v(u)||(a=a.map(function(t){return X(t)})),r.push(a)}return i>t.size&&(t=t.setSize(i)),ie(t,e,r)}function Ie(t){return t>>cn<=fn&&u.size>=2*o.size?(i=u.filter(function(t,e){return void 0!==t&&a!==e}),r=i.toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(r.__ownerID=i.__ownerID=t.__ownerID)):(r=o.remove(e),i=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=o,i=u.set(a,[e,n])}else r=o.set(e,u.size),i=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=i,t.__hash=void 0,t):we(r,i)}function De(t){return null===t||void 0===t?Re():Ce(t)?t:Re().unshiftAll(t)}function Ce(t){return!(!t||!t[Wn])}function ze(t,e,n,r){var i=Object.create(Xn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Re(){return Qn||(Qn=ze(0))}function Le(t){return null===t||void 0===t?ke():Me(t)&&!m(t)?t:ke().withMutations(function(e){var n=d(t);at(n.size),n.forEach(function(t){return e.add(t)})})}function Me(t){return!(!t||!t[Zn])}function je(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Ne(t,e){var n=Object.create($n);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ke(){return tr||(tr=Ne(Jt()))}function Ue(t){return null===t||void 0===t?xe():He(t)?t:xe().withMutations(function(e){var n=d(t);at(n.size),n.forEach(function(t){return e.add(t)})})}function He(t){return Me(t)&&m(t)}function Pe(t,e){var n=Object.create(er);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function xe(){return nr||(nr=Pe(Te()))}function Ve(t,e){var n,r=function(o){if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var u=Object.keys(t);Ge(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=Ut(o)},i=r.prototype=Object.create(rr);return i.constructor=r,r}function qe(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Fe(t){return t._name||t.constructor.name||"Record"}function Ge(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(t){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){ut(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Ye(t,e){if(t===e)return!0;if(!v(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||y(t)!==y(e)||S(t)!==S(e)||m(t)!==m(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!g(t);if(m(t)){var r=t.entries();return e.every(function(t,e){var i=r.next().value;return i&&W(i[1],t)&&(n||W(i[0],e))})&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var u=!0,a=e.__iterate(function(e,r){if(n?!t.has(e):i?!W(e,t.get(r,ln)):!W(t.get(r,ln),e))return u=!1,!1});return u&&t.size===a}function Be(t,e,n){if(!(this instanceof Be))return new Be(t,e,n);if(ut(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),ee?-1:0}function rn(t){if(t.size===1/0)return 0;var e=m(t),n=y(t),r=e?1:0,i=t.__iterate(n?e?function(t,e){r=31*r+un(et(t),et(e))|0}:function(t,e){r=r+un(et(t),et(e))|0}:e?function(t){r=31*r+et(t)|0}:function(t){r=r+et(t)|0});return on(i,r)}function on(t,e){return e=Dn(e,3432918353),e=Dn(e<<15|e>>>-15,461845907),e=Dn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=Dn(e^e>>>16,2246822507),e=Dn(e^e>>>13,3266489909),e=tt(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var an=Array.prototype.slice,sn="delete",cn=5,fn=1<r?b():I(t,i,n[e?r-i++:i++])})},t(j,z),j.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},j.prototype.has=function(t){return this._object.hasOwnProperty(t)},j.prototype.__iterate=function(t,e){for(var n=this,r=this._object,i=this._keys,o=i.length-1,u=0;u<=o;u++){var a=i[e?o-u:u];if(t(r[a],a,n)===!1)return u+1}return u},j.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length-1,o=0;return new E(function(){var u=r[e?i-o:o];return o++>i?b():I(t,u,n[u])})},j.prototype[Sn]=!0,t(N,R),N.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);var r=this._iterable,i=T(r),o=0;if(w(i))for(var u;!(u=i.next()).done&&t(u.value,o++,n)!==!1;);return o},N.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=T(n);if(!w(r))return new E(b);var i=0;return new E(function(){var e=r.next();return e.done?e:I(t,i++,e.value)})},t(k,R),k.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,i=this._iteratorCache,o=0;o=r.length){var e=n.next();if(e.done)return e;r[i]=e.value}return I(t,i,r[i++])})};var Tn;t(K,l),t(Y,K),t(B,K),t(J,K),K.Keyed=Y,K.Indexed=B,K.Set=J;var An,Dn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t=0|t,e=0|e;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Cn=Object.isExtensible,zn=function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}}(),Rn="function"==typeof WeakMap;Rn&&(An=new WeakMap);var Ln=0,Mn="__immutablehash__";"function"==typeof Symbol&&(Mn=Symbol(Mn));var jn=16,Nn=255,kn=0,Un={};t(st,z),st.prototype.get=function(t,e){return this._iter.get(t,e)},st.prototype.has=function(t){return this._iter.has(t)},st.prototype.valueSeq=function(){return this._iter.valueSeq()},st.prototype.reverse=function(){var t=this,e=_t(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},st.prototype.map=function(t,e){var n=this,r=pt(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},st.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Rt(this):0,function(i){return t(i,e?--n:n++,r)}),e)},st.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(mn,e),r=e?Rt(this):0;return new E(function(){var i=n.next();return i.done?i:I(t,e?--r:r++,i.value,i)})},st.prototype[Sn]=!0,t(ct,R),ct.prototype.includes=function(t){return this._iter.includes(t)},ct.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate(function(e){return t(e,r++,n)},e)},ct.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e),r=0;return new E(function(){var e=n.next();return e.done?e:I(t,r++,e.value,e)})},t(ft,L),ft.prototype.has=function(t){return this._iter.includes(t)},ft.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){return t(e,e,n)},e)},ft.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e);return new E(function(){var e=n.next();return e.done?e:I(t,e.value,e.value,e)})},t(ht,z),ht.prototype.entrySeq=function(){return this._iter.toSeq()},ht.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){if(e){zt(e);var r=v(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}},e)},ht.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e);return new E(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){zt(r);var i=v(r);return I(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},ct.prototype.cacheResult=st.prototype.cacheResult=ft.prototype.cacheResult=ht.prototype.cacheResult=jt,t(Ut,Y),Ut.prototype.toString=function(){return this.__toString("Map {","}")},Ut.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Ut.prototype.set=function(t,e){return Wt(this,t,e)},Ut.prototype.setIn=function(t,e){return this.updateIn(t,ln,function(){return e})},Ut.prototype.remove=function(t){return Wt(this,t,ln)},Ut.prototype.deleteIn=function(t){return this.updateIn(t,function(){return ln})},Ut.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},Ut.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=oe(this,kt(t),e,n);return r===ln?void 0:r},Ut.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},Ut.prototype.merge=function(){return ne(this,void 0,arguments)},Ut.prototype.mergeWith=function(t){var e=an.call(arguments,1);return ne(this,t,e)},Ut.prototype.mergeIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]})},Ut.prototype.mergeDeep=function(){return ne(this,re(void 0),arguments)},Ut.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return ne(this,re(t),e)},Ut.prototype.mergeDeepIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]})},Ut.prototype.sort=function(t){return be(wt(this,t))},Ut.prototype.sortBy=function(t,e){return be(wt(this,e,t))},Ut.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Ut.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new r)},Ut.prototype.asImmutable=function(){return this.__ensureOwner()},Ut.prototype.wasAltered=function(){return this.__altered},Ut.prototype.__iterator=function(t,e){return new Gt(this,t,e)},Ut.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate(function(e){return r++,t(e[1],e[0],n)},e),r},Ut.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Bt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Ut.isMap=Ht;var Hn="@@__IMMUTABLE_MAP__@@",Pn=Ut.prototype;Pn[Hn]=!0,Pn[sn]=Pn.remove,Pn.removeIn=Pn.deleteIn,Pt.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o=Vn)return $t(t,f,o,u);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new Pt(t,d)}},xt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=1<<((0===t?e:e>>>t)&hn),o=this.bitmap;return 0===(o&i)?r:this.nodes[ue(o&i-1)].get(t+cn,e,n,r)},xt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=1<=qn)return ee(t,l,c,a,_);if(f&&!_&&2===l.length&&Qt(l[1^h]))return l[1^h];if(f&&_&&1===l.length&&Qt(_))return _;var d=t&&t===this.ownerID,v=f?_?c:c^s:c|s,y=f?_?ae(l,h,_,d):ce(l,h,d):se(l,h,_,d);return d?(this.bitmap=v,this.nodes=y,this):new xt(t,v,y)},Vt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=(0===t?e:e>>>t)&hn,o=this.nodes[i];return o?o.get(t+cn,e,n,r):r},Vt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=i===ln,c=this.nodes,f=c[a];if(s&&!f)return this;var h=Xt(f,t,e+cn,n,r,i,o,u);if(h===f)return this;var l=this.count;if(f){if(!h&&(l--,l=0&&t>>e&hn;if(r>=this.array.length)return new le([],t);var i,o=0===r;if(e>0){var u=this.array[r];if(i=u&&u.removeBefore(t,e-cn,n),i===u&&o)return this}if(o&&!i)return this;var a=Se(this,t);if(!o)for(var s=0;s>>e&hn;if(r>=this.array.length)return this;var i;if(e>0){var o=this.array[r];if(i=o&&o.removeAfter(t,e-cn,n),i===o&&r===this.array.length-1)return this}var u=Se(this,t);return u.array.splice(r+1),i&&(u.array[r]=i),u};var Yn,Bn={};t(be,Ut),be.of=function(){return this(arguments)},be.prototype.toString=function(){return this.__toString("OrderedMap {","}")},be.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},be.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Te()},be.prototype.set=function(t,e){return Ae(this,t,e)},be.prototype.remove=function(t){return Ae(this,t,ln)},be.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},be.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate(function(e){return e&&t(e[1],e[0],n)},e)},be.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},be.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?we(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},be.isOrderedMap=Oe,be.prototype[Sn]=!0,be.prototype[sn]=be.prototype.remove;var Jn;t(De,B),De.of=function(){return this(arguments)},De.prototype.toString=function(){return this.__toString("Stack [","]")},De.prototype.get=function(t,e){var n=this._head;for(t=u(this,t);n&&t--;)n=n.next;return n?n.value:e},De.prototype.peek=function(){return this._head&&this._head.value},De.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pushAll=function(t){if(t=_(t),0===t.size)return this;at(t.size);var e=this.size,n=this._head;return t.reverse().forEach(function(t){e++,n={value:t,next:n}}),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pop=function(){return this.slice(1)},De.prototype.unshift=function(){return this.push.apply(this,arguments)},De.prototype.unshiftAll=function(t){return this.pushAll(t)},De.prototype.shift=function(){return this.pop.apply(this,arguments)},De.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Re()},De.prototype.slice=function(t,e){if(s(t,e,this.size))return this;var n=c(t,this.size),r=f(e,this.size);if(r!==this.size)return B.prototype.slice.call(this,t,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):ze(i,o)},De.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?ze(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},De.prototype.__iterate=function(t,e){var n=this;if(e)return this.reverse().__iterate(t);for(var r=0,i=this._head;i&&t(i.value,r++,n)!==!1;)i=i.next;return r},De.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new E(function(){if(r){var e=r.value;return r=r.next,I(t,n++,e)}return b()})},De.isStack=Ce;var Wn="@@__IMMUTABLE_STACK__@@",Xn=De.prototype;Xn[Wn]=!0,Xn.withMutations=Pn.withMutations,Xn.asMutable=Pn.asMutable,Xn.asImmutable=Pn.asImmutable,Xn.wasAltered=Pn.wasAltered;var Qn;t(Le,J),Le.of=function(){return this(arguments)},Le.fromKeys=function(t){return this(p(t).keySeq())},Le.prototype.toString=function(){return this.__toString("Set {","}")},Le.prototype.has=function(t){return this._map.has(t)},Le.prototype.add=function(t){return je(this,this._map.set(t,!0))},Le.prototype.remove=function(t){return je(this,this._map.remove(t))},Le.prototype.clear=function(){return je(this,this._map.clear())},Le.prototype.union=function(){var t=an.call(arguments,0);return t=t.filter(function(t){return 0!==t.size}),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations(function(e){for(var n=0;n1?" by "+this._step:"")+" ]"},Be.prototype.get=function(t,e){return this.has(t)?this._start+u(this,t)*this._step:e},Be.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e=0&&nn?b():I(t,o++,u)})},Be.prototype.equals=function(t){return t instanceof Be?this._start===t._start&&this._end===t._end&&this._step===t._step:Ye(this,t)};var ir;t(Je,R),Je.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Je.prototype.get=function(t,e){return this.has(t)?this._value:e},Je.prototype.includes=function(t){return W(this._value,t)},Je.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:new Je(this._value,f(e,n)-c(t,n))},Je.prototype.reverse=function(){return this},Je.prototype.indexOf=function(t){return W(this._value,t)?0:-1},Je.prototype.lastIndexOf=function(t){return W(this._value,t)?this.size:-1},Je.prototype.__iterate=function(t,e){for(var n=this,r=0;rthis.size?e:this.find(function(e,n){return n===t},void 0,e)},has:function(t){return t=u(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t-1&&t%1===0&&t<=Number.MAX_VALUE}var i=Function.prototype.bind;e.isString=function(t){return"string"==typeof t||"[object String]"===n(t)},e.isArray=Array.isArray||function(t){return"[object Array]"===n(t)},"function"!=typeof/./&&"object"!=typeof Int8Array?e.isFunction=function(t){return"function"==typeof t||!1}:e.isFunction=function(t){return"[object Function]"===toString.call(t)},e.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},e.extend=function(t){var e=arguments,n=arguments.length;if(!t||n<2)return t||{};for(var r=1;r0)){var e=this.reactorState.get("dirtyStores");if(0!==e.size){var n=c.default.Set().withMutations(function(n){n.union(t.observerState.get("any")),e.forEach(function(e){var r=t.observerState.getIn(["stores",e]);r&&n.union(r)})});n.forEach(function(e){var n=t.observerState.getIn(["observersMap",e]);if(n){var r=n.get("getter"),i=n.get("handler"),o=p.evaluate(t.prevReactorState,r),u=p.evaluate(t.reactorState,r);t.prevReactorState=o.reactorState,t.reactorState=u.reactorState;var a=o.result,s=u.result;c.default.is(a,s)||i.call(null,s)}});var r=p.resetDirtyStores(this.reactorState);this.prevReactorState=r,this.reactorState=r}}}},{key:"batchStart",value:function(){this.__batchDepth++}},{key:"batchEnd",value:function(){if(this.__batchDepth--,this.__batchDepth<=0){this.__isDispatching=!0;try{this.__notify()}catch(t){throw this.__isDispatching=!1,t}this.__isDispatching=!1}}}]),t}();e.default=(0,y.toFactory)(g),t.exports=e.default},function(t,e,n){function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n={};return(0,o.each)(e,function(e,r){n[r]=t.evaluate(e)}),n}Object.defineProperty(e,"__esModule",{value:!0});var o=n(4);e.default=function(t){return{getInitialState:function(){return i(t,this.getDataBindings())},componentDidMount:function(){var e=this;this.__unwatchFns=[],(0,o.each)(this.getDataBindings(),function(n,i){var o=t.observe(n,function(t){e.setState(r({},i,t))});e.__unwatchFns.push(o)})},componentWillUnmount:function(){for(var t=this;this.__unwatchFns.length;)t.__unwatchFns.shift()()}}},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){return new L({result:t,reactorState:e})}function o(t,e){return t.withMutations(function(t){(0,R.each)(e,function(e,n){t.getIn(["stores",n])&&console.warn("Store already defined for id = "+n);var r=e.getInitialState();if(void 0===r&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store getInitialState() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(r))throw new Error("Store getInitialState() must return an immutable value, did you forget to call toImmutable");t.update("stores",function(t){return t.set(n,e)}).update("state",function(t){return t.set(n,r)}).update("dirtyStores",function(t){return t.add(n)}).update("storeStates",function(t){return b(t,[n])})}),I(t)})}function u(t,e){return t.withMutations(function(t){(0,R.each)(e,function(e,n){t.update("stores",function(t){return t.set(n,e)})})})}function a(t,e,n){if(void 0===e&&f(t,"throwOnUndefinedActionType"))throw new Error("`dispatch` cannot be called with an `undefined` action type.");var r=t.get("state"),i=t.get("dirtyStores"),o=r.withMutations(function(r){A.default.dispatchStart(t,e,n),t.get("stores").forEach(function(o,u){var a=r.get(u),s=void 0;try{s=o.handle(a,e,n)}catch(e){throw A.default.dispatchError(t,e.message),e}if(void 0===s&&f(t,"throwOnUndefinedStoreReturnValue")){var c="Store handler must return a value, did you forget a return statement";throw A.default.dispatchError(t,c),new Error(c)}r.set(u,s),a!==s&&(i=i.add(u))}),A.default.dispatchEnd(t,r,i)}),u=t.set("state",o).set("dirtyStores",i).update("storeStates",function(t){return b(t,i)});return I(u)}function s(t,e){var n=[],r=(0,D.toImmutable)({}).withMutations(function(r){(0,R.each)(e,function(e,i){var o=t.getIn(["stores",i]);if(o){var u=o.deserialize(e);void 0!==u&&(r.set(i,u),n.push(i))}})}),i=w.default.Set(n);return t.update("state",function(t){return t.merge(r)}).update("dirtyStores",function(t){return t.union(i)}).update("storeStates",function(t){return b(t,n)})}function c(t,e,n){var r=e;(0,z.isKeyPath)(e)&&(e=(0,C.fromKeyPath)(e));var i=t.get("nextId"),o=(0,C.getStoreDeps)(e),u=w.default.Map({id:i,storeDeps:o,getterKey:r,getter:e,handler:n}),a=void 0;return a=0===o.size?t.update("any",function(t){return t.add(i)}):t.withMutations(function(t){o.forEach(function(e){var n=["stores",e];t.hasIn(n)||t.setIn(n,w.default.Set()),t.updateIn(["stores",e],function(t){return t.add(i)})})}),a=a.set("nextId",i+1).setIn(["observersMap",i],u),{observerState:a,entry:u}}function f(t,e){var n=t.getIn(["options",e]);if(void 0===n)throw new Error("Invalid option: "+e);return n}function h(t,e,n){var r=t.get("observersMap").filter(function(t){var r=t.get("getterKey"),i=!n||t.get("handler")===n;return!!i&&((0,z.isKeyPath)(e)&&(0,z.isKeyPath)(r)?(0,z.isEqual)(e,r):e===r)});return t.withMutations(function(t){r.forEach(function(e){return l(t,e)})})}function l(t,e){return t.withMutations(function(t){var n=e.get("id"),r=e.get("storeDeps");0===r.size?t.update("any",function(t){return t.remove(n)}):r.forEach(function(e){t.updateIn(["stores",e],function(t){return t?t.remove(n):t})}),t.removeIn(["observersMap",n])})}function p(t){var e=t.get("state");return t.withMutations(function(t){var n=t.get("stores"),r=n.keySeq().toJS();n.forEach(function(n,r){var i=e.get(r),o=n.handleReset(i);if(void 0===o&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store handleReset() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(o))throw new Error("Store reset state must be an immutable value, did you forget to call toImmutable");t.setIn(["state",r],o)}),t.update("storeStates",function(t){return b(t,r)}),v(t)})}function _(t,e){var n=t.get("state");if((0,z.isKeyPath)(e))return i(n.getIn(e),t);if(!(0,C.isGetter)(e))throw new Error("evaluate must be passed a keyPath or Getter");if(g(t,e))return i(E(t,e),t);var r=(0,C.getDeps)(e).map(function(e){return _(t,e).result}),o=(0,C.getComputeFn)(e).apply(null,r);return i(o,m(t,e,o))}function d(t){var e={};return t.get("stores").forEach(function(n,r){var i=t.getIn(["state",r]),o=n.serialize(i);void 0!==o&&(e[r]=o)}),e}function v(t){return t.set("dirtyStores",w.default.Set())}function y(t){return t}function S(t,e){var n=y(e);return t.getIn(["cache",n])}function g(t,e){var n=S(t,e);if(!n)return!1;var r=n.get("storeStates");return 0!==r.size&&r.every(function(e,n){return t.getIn(["storeStates",n])===e})}function m(t,e,n){var r=y(e),i=t.get("dispatchId"),o=(0,C.getStoreDeps)(e),u=(0,D.toImmutable)({}).withMutations(function(e){o.forEach(function(n){var r=t.getIn(["storeStates",n]);e.set(n,r)})});return t.setIn(["cache",r],w.default.Map({value:n,storeStates:u,dispatchId:i}))}function E(t,e){var n=y(e);return t.getIn(["cache",n,"value"])}function I(t){return t.update("dispatchId",function(t){return t+1})}function b(t,e){return t.withMutations(function(t){e.forEach(function(e){var n=t.has(e)?t.get(e)+1:1;t.set(e,n)})})}Object.defineProperty(e,"__esModule",{value:!0}),e.registerStores=o,e.replaceStores=u,e.dispatch=a,e.loadState=s,e.addObserver=c,e.getOption=f,e.removeObserver=h,e.removeObserverByEntry=l,e.reset=p,e.evaluate=_,e.serialize=d,e.resetDirtyStores=v;var O=n(3),w=r(O),T=n(9),A=r(T),D=n(5),C=n(10),z=n(11),R=n(4),L=w.default.Record({result:null,reactorState:null})},function(t,e,n){var r=n(8);e.dispatchStart=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.groupCollapsed("Dispatch: %s",e),console.group("payload"),console.debug(n),console.groupEnd())},e.dispatchError=function(t,e){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.debug("Dispatch error: "+e),console.groupEnd())},e.dispatchEnd=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&((0,r.getOption)(t,"logDirtyStores")&&console.log("Stores updated:",n.toList().toJS()),(0,r.getOption)(t,"logAppState")&&console.debug("Dispatch done, new state: ",e.toJS()),console.groupEnd())}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,l.isArray)(t)&&(0,l.isFunction)(t[t.length-1])}function o(t){return t[t.length-1]}function u(t){return t.slice(0,t.length-1)}function a(t,e){e||(e=h.default.Set());var n=h.default.Set().withMutations(function(e){if(!i(t))throw new Error("getFlattenedDeps must be passed a Getter");u(t).forEach(function(t){if((0,p.isKeyPath)(t))e.add((0,f.List)(t));else{if(!i(t))throw new Error("Invalid getter, each dependency must be a KeyPath or Getter");e.union(a(t))}})});return e.union(n)}function s(t){if(!(0,p.isKeyPath)(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,_]}function c(t){if(t.hasOwnProperty("__storeDeps"))return t.__storeDeps;var e=a(t).map(function(t){return t.first()}).filter(function(t){return!!t});return Object.defineProperty(t,"__storeDeps",{enumerable:!1,configurable:!1,writable:!1,value:e}),e}Object.defineProperty(e,"__esModule",{value:!0});var f=n(3),h=r(f),l=n(4),p=n(11),_=function(t){return t};e.default={isGetter:i,getComputeFn:o,getFlattenedDeps:a,getStoreDeps:c,getDeps:u,fromKeyPath:s},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,s.isArray)(t)&&!(0,s.isFunction)(t[t.length-1])}function o(t,e){var n=a.default.List(t),r=a.default.List(e);return a.default.is(n,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.isKeyPath=i,e.isEqual=o;var u=n(3),a=r(u),s=n(4)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=(0,r.Map)({logDispatches:!1,logAppState:!1,logDirtyStores:!1,throwOnUndefinedActionType:!1,throwOnUndefinedStoreReturnValue:!1,throwOnNonImmutableStore:!1,throwOnDispatchInDispatch:!1});e.PROD_OPTIONS=i;var o=(0,r.Map)({logDispatches:!0,logAppState:!0,logDirtyStores:!0,throwOnUndefinedActionType:!0,throwOnUndefinedStoreReturnValue:!0,throwOnNonImmutableStore:!0,throwOnDispatchInDispatch:!0});e.DEBUG_OPTIONS=o;var u=(0,r.Record)({dispatchId:0,state:(0,r.Map)(),stores:(0,r.Map)(),cache:(0,r.Map)(),storeStates:(0,r.Map)(),dirtyStores:(0,r.Set)(),debug:!1,options:i});e.ReactorState=u;var a=(0,r.Record)({any:(0,r.Set)(),stores:(0,r.Map)({}),observersMap:(0,r.Map)({}),nextId:1});e.ObserverState=a}])})}),be=t(Ie),Oe=e(function(t){var e=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n};t.exports=e}),we=t(Oe),Te=we({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),Ae=be.Store,De=be.toImmutable,Ce=new Ae({getInitialState:function(){return De({isValidating:!1,authToken:!1,host:null,isInvalid:!1,errorMessage:""})},initialize:function(){this.on(Te.VALIDATING_AUTH_TOKEN,n),this.on(Te.VALID_AUTH_TOKEN,r),this.on(Te.INVALID_AUTH_TOKEN,i)}}),ze=be.Store,Re=be.toImmutable,Le=new ze({getInitialState:function(){return Re({authToken:null,host:""})},initialize:function(){this.on(Te.VALID_AUTH_TOKEN,o),this.on(Te.LOG_OUT,u)}}),Me=be.Store,je=new Me({getInitialState:function(){return!0},initialize:function(){this.on(Te.VALID_AUTH_TOKEN,a)}}),Ne=we({STREAM_START:null,STREAM_STOP:null,STREAM_ERROR:null}),ke="object"==typeof window&&"EventSource"in window,Ue=be.Store,He=be.toImmutable,Pe=new Ue({getInitialState:function(){return He({isSupported:ke,isStreaming:!1,useStreaming:!0,hasError:!1})},initialize:function(){this.on(Ne.STREAM_START,s),this.on(Ne.STREAM_STOP,c),this.on(Ne.STREAM_ERROR,f),this.on(Ne.LOG_OUT,h)}}),xe=we({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),Ve=be.Store,qe=new Ve({getInitialState:function(){return!0},initialize:function(){this.on(xe.API_FETCH_ALL_START,function(){return!0}),this.on(xe.API_FETCH_ALL_SUCCESS,function(){return!1}),this.on(xe.API_FETCH_ALL_FAIL,function(){return!1}),this.on(xe.LOG_OUT,function(){return!1})}}),Fe=be.Store,Ge=new Fe({getInitialState:function(){return!1},initialize:function(){this.on(xe.SYNC_SCHEDULED,function(){return!0}),this.on(xe.SYNC_SCHEDULE_CANCELLED,function(){return!1}),this.on(xe.LOG_OUT,function(){return!1})}}),Ke=we({API_FETCH_SUCCESS:null,API_FETCH_START:null,API_FETCH_FAIL:null,API_SAVE_SUCCESS:null,API_SAVE_START:null,API_SAVE_FAIL:null,API_DELETE_SUCCESS:null,API_DELETE_START:null,API_DELETE_FAIL:null,LOG_OUT:null}),Ye=be.Store,Be=be.toImmutable,Je=new Ye({getInitialState:function(){return Be({})},initialize:function(){var t=this;this.on(Ke.API_FETCH_SUCCESS,l),this.on(Ke.API_SAVE_SUCCESS,l),this.on(Ke.API_DELETE_SUCCESS,p),this.on(Ke.LOG_OUT,function(){return t.getInitialState()})}}),We=e(function(t){function e(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function n(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(t){i[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}var r=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;t.exports=n()?Object.assign:function(t,n){for(var o,u,a=arguments,s=e(t),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 CZ;FKg delta 30475 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 diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index ce85cdc4f52..cd17014be89 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -2,4 +2,4 @@ },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=t.length;o0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t \ No newline at end of file +this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(c),!function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(c,e,f),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 5997604af41f092d714acb6e8488377585485860..41c7c071ac75a40a401361571b9fd1358c21cd49 100644 GIT binary patch delta 11904 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∋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 Z(*KyAeGiRTq|X26pZs87xY<;81^|c7Na_Fp delta 11500 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

WuCip_)-^Hcnl%JLAG5 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 diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 474366c536e..af4af1e9332 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 474366c536ec3e471da12d5f15b07b79fe9b07e2 +Subproject commit af4af1e9332afef90d25d61589840d239baf7ded diff --git a/homeassistant/components/frontend/www_static/manifest.json b/homeassistant/components/frontend/www_static/manifest.json deleted file mode 100644 index 4cd13ad5470..00000000000 --- a/homeassistant/components/frontend/www_static/manifest.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "Home Assistant", - "short_name": "Assistant", - "start_url": "/", - "display": "standalone", - "theme_color": "#03A9F4", - "background_color": "#FFFFFF", - "icons": [ - { - "src": "/static/icons/favicon-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/static/icons/favicon-384x384.png", - "sizes": "384x384", - "type": "image/png" - }, - { - "src": "/static/icons/favicon-512x512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "/static/icons/favicon-1024x1024.png", - "sizes": "1024x1024", - "type": "image/png" - } - ] -} diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index d3a04d4e9b3..40e47f06969 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}var precacheConfig=[["/","a463cb982f337e09c3ed47c41b2d9dda"],["/frontend/panels/dev-event-3cc881ae8026c0fba5aa67d334a3ab2b.html","e22ed0d2d10777c87eb9620d81f525b4"],["/frontend/panels/dev-info-34e2df1af32e60fffcafe7e008a92169.html","7e939dc762dc0c0ec769db4ea76a4b09"],["/frontend/panels/dev-service-bb5c587ada694e0fd42ceaaedd6fe6aa.html","782c4860c5e8ab274231ba9dfd528f29"],["/frontend/panels/dev-state-4608326978256644c42b13940c028e0a.html","26758b741ac1b7c8e9cfcb24762d8774"],["/frontend/panels/dev-template-0a099d4589636ed3038a3e9f020468a7.html","99114026cf9193263c74cc25f9f6a469"],["/frontend/panels/map-af7d04aff7dd5479c5a0016bc8d4dd7d.html","6031df1b4d23d5b321208449b2d293f8"],["/static/core-457d5acd123e7dc38947c07984b3a5e8.js","69e2a5b421d7ed7a7e70390cd9ced80e"],["/static/frontend-829ee7cb591b8a63d7f22948a7aeb07a.html","2afa980f1c1fdf9e596580112ac8e51a"],["/static/mdi-b399b5d3798f5b68b0a4fbaae3432d48.html","819d479ae2b690589687469045b22c26"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","b0f32ad3c7749c40d486603f31c9d8b1"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a))}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}); \ No newline at end of file +"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}var precacheConfig=[["/","9a5d0507bd1f13e3eca6b35abd4cbebb"],["/frontend/panels/dev-event-3cc881ae8026c0fba5aa67d334a3ab2b.html","e22ed0d2d10777c87eb9620d81f525b4"],["/frontend/panels/dev-info-34e2df1af32e60fffcafe7e008a92169.html","7e939dc762dc0c0ec769db4ea76a4b09"],["/frontend/panels/dev-service-bb5c587ada694e0fd42ceaaedd6fe6aa.html","782c4860c5e8ab274231ba9dfd528f29"],["/frontend/panels/dev-state-4608326978256644c42b13940c028e0a.html","26758b741ac1b7c8e9cfcb24762d8774"],["/frontend/panels/dev-template-0a099d4589636ed3038a3e9f020468a7.html","99114026cf9193263c74cc25f9f6a469"],["/frontend/panels/map-af7d04aff7dd5479c5a0016bc8d4dd7d.html","6031df1b4d23d5b321208449b2d293f8"],["/static/core-b4ee3a700ef5549a36b436611e27d3a9.js","e2fb4f1dc0d1e8192a327b51768b3802"],["/static/frontend-411fcc6c69b3cab0740ac3db4b9947c8.html","5967b9cdaeb14753552c2461805eb397"],["/static/mdi-b399b5d3798f5b68b0a4fbaae3432d48.html","819d479ae2b690589687469045b22c26"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","b0f32ad3c7749c40d486603f31c9d8b1"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},createCacheKey=function(e,t,n,a){var c=new URL(e);return a&&c.toString().match(a)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],a=new URL(t,self.location),c=createCacheKey(a,hashParamName,n,!1);return[a.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n))return e.add(new Request(n,{credentials:"same-origin"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(n);var a="index.html";!t&&a&&(n=addDirectoryIndex(n,a),t=urlsToCacheKeys.has(n));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(n=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n))}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t)))}),self.addEventListener("notificationclick",function(e){var t;e.notification.data&&e.notification.data.url&&(e.notification.close(),t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var n,a;for(n=0;nD8ufB9B z$GVpbIcD8q-O2q)@vG!-BW=Tl)3iKqrXTtFUN&fw?#)TXu8g-;PTZY&GkxC7^cM+t z53P7R>r%P21Q`YDkOe=mgOa$LO5wyX59`-Gat*=9YH@)+&zf5?G=k02_&NW+1(Auh^x^vr= zKt7r4DYKS)MJJkM$i^Jmalv%!`vbQ>PyH0I^|{zOwF1_CvkQ{DnzS@HPV*E-E%i#> z`7}mjoyp~si=x9`uuCv|>ujF#q%yBdX3H6gjjW}b-dio+F8{J_UIF77t5q`T69k{n z3FIqMSQ0SlqR+cKPZV};Q9D1w^oYO#>&&eTQ`5aNl>B#RF5Icb>$AnrH|oi$RX$t_ z=eW`wG&h(PPtYuVzB0j0MAA@Gq~b!1f#23i*KSS`?X!KlGFaBf#f|HnQD@mD9pOV9 z%QUAmEly*dU~R8+`m)pWCM{=ECiY7fi)X&*k9hJ^_(17~n9#l2i#n!+EonVd!8T1e zPJ{1~pqoqBikjzMUS6*A-PKnfxv}G9tD#QmCB>?noyv;N>ZhJg<9PZZDR`pyWG$zR zWxk26TX){AJi)PihMTU=W3#Js0^PV2m!wVeeAm_6F1O&)oY}h$mT)kvD{?xpbmfGu z^r#Oyi$x?h`J8-GY`x)h=0lBVcY-ulq;zeLS#ENk>+Hl?>}BQbGdR5F8qPeq1i%TpxPjG`upm`wlK_;snS`j3EDS3bpv>0Omz z4rKCnW)zht&Qr=Pqp zO`W{1IO9~2+C~vm@yKb`XBJOdnc$8N@|GbsvPirpb<|-EXiMKBHY1UlvfbU^? zi1ay$G@qLD*P=H(t=eh&jNx|I0?U&tP0l3drfM#1@O6lGxP9OFo7}V4UZ&C6Gvuc$ z&kSBW)qCZcIhRCshbAr*m@}(3d+EyB>UUQ{>x~_Q{xt4CdFuSdz6C)->$qDun1d`0 zQaG4tct-jqYXEE`tDtg_tl+|Be`QRjsf z-a4nHGxWaJNcTQ!61@`S%-y%;;HNVzhXYj9Cj>72wl=oe>}yeI^_zWfmuOjE>9~}C z%0c)||EZ+A&zz(jCuB)Zo8z3YMAw8@Pw$ZMb>6 z`ii7g;Zvsf&r?~uGW>%Q$D$o`s@DXHY%O2q*ez@FHu~yJ*O!6u=j!9jPoMtW9TEAv zU+8a1Y4PV<(La*Q^ur6qYu_F{dA@4zuMhutUtKL(oS@;q`Q{mQ?W?*rQU15MeivIT zyjUS~&)#l!Y2cg5>;8$BUO#{MMRbnTfoGbjF z;TEl3dwG2?HD#T7lv7sz+em`lmM8szZ|=jxzpt+^>*U=1LT3i+@q0fsy3RW8Nd3)s z{!?M&$~6M18~8tH#(D^FdT4$4oF|yuRO_~^{XpqOS+&c%H5aa(UQl9nV_xnIzDIQ_ zk$dGPW%6(O`P``Wnpwx0GV|Lp7d0}&JuV7N?DFe3x^237!Tj`?$c4|7xp%X;_dR>| zFLZnLR~~EeEf%k9l*BI@h|c};b*J9nb620qIaeQ;-jypygc*R^KV*?@!-{Wld`ol7NzH~o;jyYRo~ zTUPnm-T8qgvTqXa{=ITOBfl!B@`#Cst=UAbspW@f z18!+4Ufz(i8*~Dum>J*v5@{~CIxZotKSle^R%N@?oaD1-0=BU!r`hn?oa6aCPoX{C z#Z#hRzVz>h;1AUj`)b7UTKb-7Ar0hUo2l&S=Ygu z6>ekjVV)^-tpDfIt$E_^r=+^Cty=e-{oAL9WhWS#cEq1`cU$IK`?vV+)OB|r$S+Em z8hf?-RdDFz@7of#&eT8dd@Fui@B0&n`Edu`$)TX>ZupwZ9ZM+b7lk zymj}>;|Hc;fwi(Szx$6Em>tRLI_cy!Y32XhdDCY8+Ps-Vy3xt=i$>>O=QW}wk~?m# wiPkwg@zz%LsXXToWpr7WC4LF{W3l6&ZuK8EnN7X>FaKw{TCqZEp&$bT06G)ljQ{`u literal 1832 zcmb2|=HL(wTp!NFT%1}|mYJLyU!Gr-om!-qRm`w7JU9RL3BiBbTo;Q^v@QDH`y`J? zF{8L$DdQ4%k@yqmSH@}O>8f!WL8_U*dsP1Kbw0I8_qNwM4T1KS9W`msW=>C+nET!0 zb^E#^=MtfF(&iz##;*&1Sngrj?(~1(>faKR&&%>Xk2OC0MmX+k;Ur$|oJV)LtJ$w@ zsQh!VGQ8e*pIqJ6gQsumTU^jDdBe2p<}zn-4<-RaISajA$C4TE}aODgN_cL zre_*7iKnG6b5ZUsPgUHL+^2X~GGEjwvSHI18MDjD<$;!SqG#`pnf_p*0axS)FAElj z_uUPw2YOX?=Uiefw#?$%65>?EeT;oRx9pMaI=luCVnlts10@cf>~_*z-tzR4#;2%^ z6!S8dz-PCnbu~Yp*5UlPX|q$W;;T)6*b14~nSagbVl+OsI%c+$*bCLkQYy0!umrcZ z6{Vk&ICpi%@q`_U_m^l-Emq=J6R1AgIAMj;a{;gOA}qUp#7sT*^nir^n#*yO@xSJ_ zHhKDGZaKyMvRIo{+($cg#f_GUj`_MhETQjiY?Zw@Wx5^v^PLkSs?@hGe3i2F;wdkM zSDWwu7QDWIVU^Os+Rl9~Lf&e;#rG_}%z7yIPOo977~94YGxIxH8cXz>1>6Lc8>UU& zuGzrgw)uc8zn#Px--+4Bb~1RmpG)MgeY<++)MGd9co!Kz*>+)C1xE{I~GQQuVw*2?wbz9$FklR07@ALlcThF&C3QU=PC_p=E zW!EB}DeeY4g_sy@wy&9Rzqu+_H~g?^Smx)1t$Z;NC9||8C7chgo$M5F?8^5I_ZF-_ zcl~+-<4%{O-eELT3jr+{i?WaFW?aDSOFq#r_X6IIcqP#AKY0ne3 zy029!FTbdD-Ry5+L-)tDbG<*B|84T!tRi!?H}O)|q7IowRe~l5c5KbiSik2C|D%*I z@_Wy(xLf>sp~`BDw$^FZ-jyY-3;*3*ydvtb(C=jSx%Sb*rUh=fm92MY#>Q1M2XUUY zy*hnbh}o5StwK+_Ch~Ce6^OqTTAO`+_O^vDZ=ZjirO>-#R<3k}+h;+WuemFGf_uEy zE||vc()01wrx#yL=9)Z+-*C+JO8mLd2#=d<<;Mrp*Ob3y zo9`YtDeQDx)fAVvx+N_Z3D@^G9$dSs?aR|2+dn7PmetH^`feYVlAf`9b$IV_d$H|B zQ~6Fl51f-=`0DEK^7WqU{kCzrecBSCqj3AchAa--*V(hqf1IQ4?*8%Z`SW7Vlbp=9 z?4R(??6k$tS-bc$-}rX@_TO`B^E9VhIl8;r#nR7SoVdH$<&pQnBfg)WdcWBux3GA1 zdiU(x;uix=E`8vUzFt-H|J~Kou}O~+}L*V=3KkZpj*3t#ovxC{3tcC+I%n_ z)~vs>tC%irx%s?vPshKHm)Bo3xwR|zpOKXH>TB_nJ?0h_7#-dIK7iwX(4r?P5qHiX z+Sap-@s`dCU5_c-tZ$y2{P4vJN!GNF4%;3DT3>Qbh&I`-aC4T!or{52E}YvS!<}O9 zHmPOtV)kJBe-eMij_c1m620(0)9hELEred_U!Sj*K0Wt4r}d<&to|qK>ldy~=x^~9 z&u{D6Z65NDud~^3$&())Hz!B@&MH}-}ZbvyMI34X2YsExwVVVzrIkm`9-_ktlrPbW;?&sd^>#J|NBmbtzOG#?Or>1 UrNe$T_5ZAUc2_4Zz>% diff --git a/homeassistant/components/notify/__init__.py b/homeassistant/components/notify/__init__.py index 4b73c46b198..782a4510ffb 100644 --- a/homeassistant/components/notify/__init__.py +++ b/homeassistant/components/notify/__init__.py @@ -13,9 +13,9 @@ import voluptuous as vol import homeassistant.bootstrap as bootstrap from homeassistant.config import load_yaml_config_file from homeassistant.helpers import config_per_platform, template -from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa import homeassistant.helpers.config_validation as cv -from homeassistant.const import CONF_NAME +from homeassistant.const import CONF_NAME, CONF_PLATFORM +from homeassistant.util import slugify DOMAIN = "notify" @@ -34,6 +34,11 @@ ATTR_DATA = 'data' SERVICE_NOTIFY = "notify" +PLATFORM_SCHEMA = vol.Schema({ + vol.Required(CONF_PLATFORM): cv.string, + vol.Optional(CONF_NAME): cv.string, +}, extra=vol.ALLOW_EXTRA) + NOTIFY_SERVICE_SCHEMA = vol.Schema({ vol.Required(ATTR_MESSAGE): cv.template, vol.Optional(ATTR_TITLE, default=ATTR_TITLE_DEFAULT): cv.string, @@ -95,8 +100,8 @@ def setup(hass, config): data=data) service_call_handler = partial(notify_message, notify_service) - service_notify = p_config.get(CONF_NAME, SERVICE_NOTIFY) - hass.services.register(DOMAIN, service_notify, service_call_handler, + service_name = slugify(p_config.get(CONF_NAME) or SERVICE_NOTIFY) + hass.services.register(DOMAIN, service_name, service_call_handler, descriptions.get(SERVICE_NOTIFY), schema=NOTIFY_SERVICE_SCHEMA) success = True diff --git a/homeassistant/components/notify/html5.py b/homeassistant/components/notify/html5.py new file mode 100644 index 00000000000..70ab9580a04 --- /dev/null +++ b/homeassistant/components/notify/html5.py @@ -0,0 +1,173 @@ +""" +HTML5 Push Messaging notification service. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/notify.html5/ +""" +import os +import logging +import json + +import voluptuous as vol +from voluptuous.humanize import humanize_error + +from homeassistant.const import ( + HTTP_BAD_REQUEST, HTTP_INTERNAL_SERVER_ERROR) +from homeassistant.util import ensure_unique_string +from homeassistant.components.notify import ( + ATTR_TARGET, ATTR_DATA, BaseNotificationService, + PLATFORM_SCHEMA) +from homeassistant.components.http import HomeAssistantView +from homeassistant.components.frontend import add_manifest_json_key +from homeassistant.helpers import config_validation as cv + +REQUIREMENTS = ['https://github.com/web-push-libs/pywebpush/archive/' + 'e743dc92558fc62178d255c0018920d74fa778ed.zip#' + 'pywebpush==0.5.0'] + +DEPENDENCIES = ["frontend"] + +_LOGGER = logging.getLogger(__name__) + +REGISTRATIONS_FILE = "html5_push_registrations.conf" + +ATTR_GCM_SENDER_ID = 'gcm_sender_id' +ATTR_GCM_API_KEY = 'gcm_api_key' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(ATTR_GCM_SENDER_ID): cv.string, + vol.Optional(ATTR_GCM_API_KEY): cv.string, +}) + +ATTR_SUBSCRIPTION = 'subscription' +ATTR_BROWSER = 'browser' + +REGISTER_SCHEMA = vol.Schema({ + vol.Required(ATTR_SUBSCRIPTION): cv.match_all, + vol.Required(ATTR_BROWSER): vol.In(['chrome', 'firefox']) +}) + + +def get_service(hass, config): + """Get the HTML5 push notification service.""" + json_path = hass.config.path(REGISTRATIONS_FILE) + + registrations = _load_config(json_path) + + if registrations is None: + return None + + hass.wsgi.register_view( + HTML5PushRegistrationView(hass, registrations, json_path)) + + gcm_api_key = config.get('gcm_api_key') + gcm_sender_id = config.get('gcm_sender_id') + + if gcm_sender_id is not None: + add_manifest_json_key('gcm_sender_id', config.get('gcm_sender_id')) + + return HTML5NotificationService(gcm_api_key, registrations) + + +def _load_config(filename): + """Load configuration.""" + if not os.path.isfile(filename): + return {} + + try: + with open(filename, "r") as fdesc: + inp = fdesc.read() + + # In case empty file + if not inp: + return {} + + return json.loads(inp) + except (IOError, ValueError) as error: + _LOGGER.error("Reading config file %s failed: %s", filename, error) + return None + + +def _save_config(filename, config): + """Save configuration.""" + try: + with open(filename, "w") as fdesc: + fdesc.write(json.dumps(config, indent=4, sort_keys=True)) + except (IOError, TypeError) as error: + _LOGGER.error("Saving config file failed: %s", error) + return False + return True + + +class HTML5PushRegistrationView(HomeAssistantView): + """Accepts push registrations from a browser.""" + + url = "/api/notify.html5" + name = "api:notify.html5" + + def __init__(self, hass, registrations, json_path): + """Init HTML5PushRegistrationView.""" + super().__init__(hass) + self.registrations = registrations + self.json_path = json_path + + def post(self, request): + """Accept the POST request for push registrations from a browser.""" + try: + data = REGISTER_SCHEMA(request.json) + except vol.Invalid as ex: + return self.json_message(humanize_error(request.json, ex), + HTTP_BAD_REQUEST) + + name = ensure_unique_string('unnamed device', + self.registrations.keys()) + + self.registrations[name] = data + + if not _save_config(self.json_path, self.registrations): + return self.json_message('Error saving registration.', + HTTP_INTERNAL_SERVER_ERROR) + + return self.json_message("Push notification subscriber registered.") + + +# pylint: disable=too-few-public-methods +class HTML5NotificationService(BaseNotificationService): + """Implement the notification service for HTML5.""" + + # pylint: disable=too-many-arguments + def __init__(self, gcm_key, registrations): + """Initialize the service.""" + self._gcm_key = gcm_key + self.registrations = registrations + + def send_message(self, message="", **kwargs): + """Send a message to a user.""" + from pywebpush import WebPusher + + payload = { + 'title': message, + 'icon': '/static/icons/favicon-192x192.png', + } + + data = kwargs.get(ATTR_DATA) + + if data: + payload.update(data) + + targets = kwargs.get(ATTR_TARGET) + + if not targets: + targets = self.registrations.keys() + elif not isinstance(targets, list): + targets = [targets] + + for target in targets: + info = self.registrations.get(target) + if info is None: + _LOGGER.error("%s is not a valid HTML5 push notification" + " target!", target) + continue + + WebPusher(info[ATTR_SUBSCRIPTION]).send( + json.dumps(payload), gcm_key=self._gcm_key, ttl='0') diff --git a/requirements_all.txt b/requirements_all.txt index e2be50c8f4d..4c1078c1968 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -181,6 +181,9 @@ https://github.com/theolind/pymysensors/archive/cc5d0b325e13c2b623fa934f69eea7cd # homeassistant.components.alarm_control_panel.simplisafe https://github.com/w1ll1am23/simplisafe-python/archive/586fede0e85fd69e56e516aaa8e97eb644ca8866.zip#simplisafe-python==0.0.1 +# homeassistant.components.notify.html5 +https://github.com/web-push-libs/pywebpush/archive/e743dc92558fc62178d255c0018920d74fa778ed.zip#pywebpush==0.5.0 + # homeassistant.components.media_player.lg_netcast https://github.com/wokar/pylgnetcast/archive/v0.2.0.zip#pylgnetcast==0.2.0 diff --git a/script/build_frontend b/script/build_frontend index da484a943b0..a00f89f1eea 100755 --- a/script/build_frontend +++ b/script/build_frontend @@ -10,7 +10,7 @@ npm run frontend_prod cp bower_components/webcomponentsjs/webcomponents-lite.min.js .. cp -r build/* .. -node script/sw-precache.js +BUILD_DEV=0 node script/gen-service-worker.js cp build/service_worker.js .. cd .. diff --git a/tests/components/notify/test_html5.py b/tests/components/notify/test_html5.py new file mode 100644 index 00000000000..b562775d32e --- /dev/null +++ b/tests/components/notify/test_html5.py @@ -0,0 +1,145 @@ +"""Test HTML5 notify platform.""" +import json +import tempfile +from unittest.mock import patch, MagicMock + +from werkzeug.test import EnvironBuilder + +from homeassistant.components.http import request_class +from homeassistant.components.notify import html5 + + +class TestHtml5Notify(object): + """Tests for HTML5 notify platform.""" + + def test_get_service_with_no_json(self): + """Test empty json file.""" + hass = MagicMock() + + with tempfile.NamedTemporaryFile() as fp: + hass.config.path.return_value = fp.name + service = html5.get_service(hass, {}) + + assert service is not None + + def test_get_service_with_bad_json(self): + """Test .""" + hass = MagicMock() + + with tempfile.NamedTemporaryFile() as fp: + fp.write('I am not JSON'.encode('utf-8')) + fp.flush() + hass.config.path.return_value = fp.name + service = html5.get_service(hass, {}) + + assert service is None + + @patch('pywebpush.WebPusher') + def test_sending_message(self, mock_wp): + """Test sending message.""" + hass = MagicMock() + + data = { + 'device': { + 'browser': 'chrome', + 'subscription': 'hello world', + } + } + + with tempfile.NamedTemporaryFile() as fp: + fp.write(json.dumps(data).encode('utf-8')) + fp.flush() + hass.config.path.return_value = fp.name + service = html5.get_service(hass, {'gcm_sender_id': '100'}) + + assert service is not None + + service.send_message('Hello', target=['device', 'non_existing'], + data={'icon': 'beer.png'}) + + assert len(mock_wp.mock_calls) == 2 + + # WebPusher constructor + assert mock_wp.mock_calls[0][1][0] == 'hello world' + + # Call to send + payload = json.loads(mock_wp.mock_calls[1][1][0]) + + assert payload['title'] == 'Hello' + assert payload['icon'] == 'beer.png' + + def test_registering_new_device_view(self): + """Test that the HTML view works.""" + hass = MagicMock() + + with tempfile.NamedTemporaryFile() as fp: + hass.config.path.return_value = fp.name + fp.close() + service = html5.get_service(hass, {}) + + assert service is not None + + # assert hass.called + assert len(hass.mock_calls) == 2 + + view = hass.mock_calls[1][1][0] + assert view.json_path == fp.name + assert view.registrations == {} + + builder = EnvironBuilder(method='POST', data=json.dumps({ + 'browser': 'chrome', + 'subscription': 'sub info', + })) + Request = request_class() + resp = view.post(Request(builder.get_environ())) + + expected = { + 'unnamed device': { + 'browser': 'chrome', + 'subscription': 'sub info', + }, + } + + assert resp.status_code == 200, resp.response + assert view.registrations == expected + with open(fp.name) as fpp: + assert json.load(fpp) == expected + + def test_registering_new_device_validation(self): + """Test various errors when registering a new device.""" + hass = MagicMock() + + with tempfile.NamedTemporaryFile() as fp: + hass.config.path.return_value = fp.name + service = html5.get_service(hass, {}) + + assert service is not None + + # assert hass.called + assert len(hass.mock_calls) == 2 + + view = hass.mock_calls[1][1][0] + + Request = request_class() + + builder = EnvironBuilder(method='POST', data=json.dumps({ + 'browser': 'invalid browser', + 'subscription': 'sub info', + })) + resp = view.post(Request(builder.get_environ())) + assert resp.status_code == 400, resp.response + + builder = EnvironBuilder(method='POST', data=json.dumps({ + 'browser': 'chrome', + })) + resp = view.post(Request(builder.get_environ())) + assert resp.status_code == 400, resp.response + + builder = EnvironBuilder(method='POST', data=json.dumps({ + 'browser': 'chrome', + 'subscription': 'sub info', + })) + with patch('homeassistant.components.notify.html5._save_config', + return_value=False): + resp = view.post(Request(builder.get_environ())) + assert resp.status_code == 500, resp.response