!function(){"use strict";function e(e){return{type:"auth",api_password:e}}function t(e,t,n){var i={type:"call_service",domain:e,service:t};return n&&(i.service_data=n),i}function n(e){var t={type:"subscribe_events"};return e&&(t.event_type=e),t}function i(e){return{type:"unsubscribe_events",subscription:e}}function s(e,t){return{type:"result",success:!1,error:{code:e,message:t}}}function r(t,n){function i(s,r,o){var c=new WebSocket(t),u=!1,a=function(){if(u)o(b);else if(0!==s){var e=-1===s?-1:s-1;setTimeout(function(){return i(e,r,o)},1e3)}else o(p)};c.addEventListener("message",function t(i){switch(JSON.parse(i.data).type){case"auth_required":"authToken"in n?c.send(JSON.stringify(e(n.authToken))):(u=!0,c.close());break;case"auth_invalid":u=!0,c.close();break;case"auth_ok":c.removeEventListener("message",t),c.removeEventListener("close",a),r(c)}}),c.addEventListener("close",a)}return new Promise(function(e,t){return i(n.setupRetry||0,e,t)})}function o(e){return e.result}function c(e,t){return void 0===t&&(t={}),r(e,t).then(function(n){var i=new g(e,t);return i.setSocket(n),i})}function u(e,t){return e._subscribeConfig?e._subscribeConfig(t):new Promise(function(n,i){var s=null,r=null,o=[],c=null;t&&o.push(t);var u=function(e){s=Object.assign({},s,e);for(var t=0;t