faye 0.8.8 → 0.8.9
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of faye might be problematic. Click here for more details.
- data/History.txt +16 -10
- data/README.rdoc +1 -1
- data/lib/faye-browser-min.js +1 -1
- data/lib/faye-browser-min.js.map +2 -2
- data/lib/faye-browser.js +302 -287
- data/lib/faye.rb +21 -21
- data/lib/faye/adapters/rack_adapter.rb +50 -48
- data/lib/faye/adapters/static_server.rb +22 -22
- data/lib/faye/engines/connection.rb +13 -13
- data/lib/faye/engines/memory.rb +21 -21
- data/lib/faye/engines/proxy.rb +23 -23
- data/lib/faye/error.rb +6 -6
- data/lib/faye/mixins/logging.rb +12 -12
- data/lib/faye/mixins/publisher.rb +6 -6
- data/lib/faye/mixins/timeouts.rb +1 -1
- data/lib/faye/protocol/channel.rb +24 -24
- data/lib/faye/protocol/client.rb +71 -73
- data/lib/faye/protocol/extensible.rb +7 -7
- data/lib/faye/protocol/grammar.rb +13 -13
- data/lib/faye/protocol/server.rb +57 -57
- data/lib/faye/protocol/socket.rb +4 -4
- data/lib/faye/protocol/subscription.rb +4 -4
- data/lib/faye/transport/http.rb +13 -13
- data/lib/faye/transport/local.rb +5 -5
- data/lib/faye/transport/transport.rb +25 -25
- data/lib/faye/transport/web_socket.rb +34 -30
- data/lib/faye/util/namespace.rb +4 -4
- data/spec/browser.html +5 -5
- data/spec/javascript/channel_spec.js +3 -3
- data/spec/javascript/client_spec.js +104 -98
- data/spec/javascript/engine/memory_spec.js +1 -1
- data/spec/javascript/engine_spec.js +70 -70
- data/spec/javascript/faye_spec.js +6 -6
- data/spec/javascript/grammar_spec.js +12 -12
- data/spec/javascript/node_adapter_spec.js +46 -46
- data/spec/javascript/publisher_spec.js +4 -4
- data/spec/javascript/server/connect_spec.js +21 -21
- data/spec/javascript/server/disconnect_spec.js +15 -15
- data/spec/javascript/server/extensions_spec.js +6 -6
- data/spec/javascript/server/handshake_spec.js +18 -18
- data/spec/javascript/server/integration_spec.js +23 -23
- data/spec/javascript/server/publish_spec.js +9 -9
- data/spec/javascript/server/subscribe_spec.js +30 -30
- data/spec/javascript/server/unsubscribe_spec.js +30 -30
- data/spec/javascript/server_spec.js +15 -15
- data/spec/javascript/transport_spec.js +32 -27
- data/spec/node.js +2 -2
- data/spec/ruby/channel_spec.rb +2 -2
- data/spec/ruby/client_spec.rb +100 -92
- data/spec/ruby/engine_examples.rb +51 -51
- data/spec/ruby/faye_spec.rb +5 -5
- data/spec/ruby/grammar_spec.rb +12 -12
- data/spec/ruby/publisher_spec.rb +4 -4
- data/spec/ruby/rack_adapter_spec.rb +34 -34
- data/spec/ruby/server/connect_spec.rb +22 -22
- data/spec/ruby/server/disconnect_spec.rb +16 -16
- data/spec/ruby/server/extensions_spec.rb +8 -8
- data/spec/ruby/server/handshake_spec.rb +20 -20
- data/spec/ruby/server/integration_spec.rb +22 -24
- data/spec/ruby/server/publish_spec.rb +9 -9
- data/spec/ruby/server/subscribe_spec.rb +31 -31
- data/spec/ruby/server/unsubscribe_spec.rb +31 -31
- data/spec/ruby/server_spec.rb +17 -17
- data/spec/ruby/transport_spec.rb +23 -23
- data/spec/testswarm +23 -10
- data/spec/thin_proxy.rb +5 -5
- metadata +90 -59
data/History.txt
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
=== 0.8.9 / 2013-02-26
|
2
|
+
|
3
|
+
* Specify ciphers for SSL on Node to mitigate the BEAST attack
|
4
|
+
* Mitigate increased risk of socket hang-up errors in Node v0.8.20
|
5
|
+
* Fix race condition when processing outgoing extensions in the Node server
|
6
|
+
* Fix problem loading the client script when using {mount: '/'}
|
7
|
+
* Clean up connection objects when a WebSocket is re-used with a new clientId
|
8
|
+
* All JavaScript code now runs in strict mode
|
9
|
+
* Select transport on handshake, instead of on client creation to allow time for disable() calls
|
10
|
+
* Do not speculatively open WebSocket/EventSource connections if they are disabled
|
11
|
+
* Gracefully handle WebSocket messages with no data on the client side
|
12
|
+
* Close and reconnect WebSocket when onerror is fired, not just when onclose is fired
|
13
|
+
* Fix problem with caching of EventSource connections with stale clientIds
|
14
|
+
* Don't parse query strings when checking if a URL is same-origin or not
|
15
|
+
|
16
|
+
|
1
17
|
=== 0.8.8 / 2013-01-10
|
2
18
|
|
3
19
|
* Patch security hole allowing remote execution of arbitrary Server methods
|
@@ -40,7 +56,6 @@
|
|
40
56
|
|
41
57
|
|
42
58
|
=== 0.8.2 / 2012-04-12
|
43
|
-
TestSwarm build: http://swarm.jcoglan.com/job/125/
|
44
59
|
|
45
60
|
* Fix replacement of null with {} in copyObject()
|
46
61
|
* Make EventSource transport trigger transport:up/down events
|
@@ -50,7 +65,6 @@ TestSwarm build: http://swarm.jcoglan.com/job/125/
|
|
50
65
|
|
51
66
|
|
52
67
|
=== 0.8.1 / 2012-03-15
|
53
|
-
TestSwarm build: http://swarm.jcoglan.com/job/124/
|
54
68
|
|
55
69
|
* Make Publisher#trigger safe for event listeners that modify the listener list
|
56
70
|
* Make Server#subscribe return a response if the incoming message has an error
|
@@ -62,7 +76,6 @@ TestSwarm build: http://swarm.jcoglan.com/job/124/
|
|
62
76
|
|
63
77
|
|
64
78
|
=== 0.8.0 / 2012-02-26
|
65
|
-
TestSwarm build: http://swarm.jcoglan.com/job/123/
|
66
79
|
|
67
80
|
* Extract the Redis engine into a separate library, faye-redis
|
68
81
|
* Stabilize and document the Engine API so others can write backends
|
@@ -85,7 +98,6 @@ TestSwarm build: http://swarm.jcoglan.com/job/123/
|
|
85
98
|
|
86
99
|
|
87
100
|
=== 0.7.0 / 2011-11-22
|
88
|
-
TestSwarm build: http://swarm.jcoglan.com/job/107/
|
89
101
|
|
90
102
|
* Provide an event API for monitoring engine events on the server side
|
91
103
|
* Implement server-side WebSocket connections for improved latency
|
@@ -97,7 +109,6 @@ TestSwarm build: http://swarm.jcoglan.com/job/107/
|
|
97
109
|
|
98
110
|
|
99
111
|
=== 0.6.7 / 2011-10-20
|
100
|
-
TestSwarm build: http://swarm.jcoglan.com/job/101/
|
101
112
|
|
102
113
|
* Cache client script in memory and add ETag and Last-Modified headers
|
103
114
|
* Fix bug in Node Redis engine where 'undefined' was used if no namespace given
|
@@ -117,7 +128,6 @@ TestSwarm build: http://swarm.jcoglan.com/job/101/
|
|
117
128
|
|
118
129
|
|
119
130
|
=== 0.6.5 / 2011-08-29
|
120
|
-
TestSwarm build: http://swarm.jcoglan.com/job/99/
|
121
131
|
|
122
132
|
* Fix UTF-8 encoding bugs in draft-75/76 and protocol-8 WebSocket parsers
|
123
133
|
* Switch to streaming parser for WebSocket protocol-8
|
@@ -126,7 +136,6 @@ TestSwarm build: http://swarm.jcoglan.com/job/99/
|
|
126
136
|
|
127
137
|
|
128
138
|
=== 0.6.4 / 2011-08-18
|
129
|
-
TestSwarm build: http://swarm.jcoglan.com/job/96/
|
130
139
|
|
131
140
|
* Support WebSocket protocol used by Chrome 14 and Firefox 6
|
132
141
|
* Fix handling of multibyte characters in WebSocket messages on Node
|
@@ -134,7 +143,6 @@ TestSwarm build: http://swarm.jcoglan.com/job/96/
|
|
134
143
|
|
135
144
|
|
136
145
|
=== 0.6.3 / 2011-07-10
|
137
|
-
TestSwarm build: http://swarm.jcoglan.com/job/69/
|
138
146
|
|
139
147
|
* Use sequential message IDs to reduce memory usage on the client side
|
140
148
|
* Only send advice with handshake and connect responses
|
@@ -156,14 +164,12 @@ TestSwarm build: http://swarm.jcoglan.com/job/69/
|
|
156
164
|
|
157
165
|
|
158
166
|
=== 0.6.1 / 2011-06-06
|
159
|
-
TestSwarm build: http://swarm.jcoglan.com/job/37/
|
160
167
|
|
161
168
|
* Fix cross-origin-long-polling support in RackAdapter
|
162
169
|
* Plug some potential memory leaks in Memory engine
|
163
170
|
|
164
171
|
|
165
172
|
=== 0.6.0 / 2011-05-21
|
166
|
-
TestSwarm build: http://swarm.jcoglan.com/job/27/
|
167
173
|
|
168
174
|
* Extract core logic into the Engine class to support swappable backends
|
169
175
|
* Introduce a Redis-backed engine to support clustered web front-ends
|
data/README.rdoc
CHANGED
@@ -62,7 +62,7 @@ should get you up and running:
|
|
62
62
|
|
63
63
|
(The MIT License)
|
64
64
|
|
65
|
-
Copyright (c) 2009-
|
65
|
+
Copyright (c) 2009-2013 James Coglan and contributors
|
66
66
|
|
67
67
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
68
68
|
this software and associated documentation files (the 'Software'), to deal in
|
data/lib/faye-browser-min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
var Faye=(typeof Faye==='object')?Faye:{};if(typeof window!=='undefined')window.Faye=Faye;Faye.extend=function(a,b,d){if(!b)return a;for(var f in b){if(!b.hasOwnProperty(f))continue;if(a.hasOwnProperty(f)&&d===false)continue;if(a[f]!==b[f])a[f]=b[f]}return a};Faye.extend(Faye,{VERSION:'0.8.8',BAYEUX_VERSION:'1.0',ID_LENGTH:160,JSONP_CALLBACK:'jsonpcallback',CONNECTION_TYPES:['long-polling','cross-origin-long-polling','callback-polling','websocket','eventsource','in-process'],MANDATORY_CONNECTION_TYPES:['long-polling','callback-polling','in-process'],ENV:(function(){return this})(),random:function(a){a=a||this.ID_LENGTH;if(a>32){var b=Math.ceil(a/32),d='';while(b--)d+=this.random(32);var f=d.split(''),g='';while(f.length>0)g+=f.pop();return g}var h=Math.pow(2,a)-1,i=h.toString(36).length,d=Math.floor(Math.random()*h).toString(36);while(d.length<i)d='0'+d;return d},clientIdFromMessages:function(a){var b=[].concat(a)[0];return b&&b.clientId},copyObject:function(a){var b,d,f;if(a instanceof Array){b=[];d=a.length;while(d--)b[d]=Faye.copyObject(a[d]);return b}else if(typeof a==='object'){b=(a===null)?null:{};for(f in a)b[f]=Faye.copyObject(a[f]);return b}else{return a}},commonElement:function(a,b){for(var d=0,f=a.length;d<f;d++){if(this.indexOf(b,a[d])!==-1)return a[d]}return null},indexOf:function(a,b){if(a.indexOf)return a.indexOf(b);for(var d=0,f=a.length;d<f;d++){if(a[d]===b)return d}return-1},map:function(a,b,d){if(a.map)return a.map(b,d);var f=[];if(a instanceof Array){for(var g=0,h=a.length;g<h;g++){f.push(b.call(d||null,a[g],g))}}else{for(var i in a){if(!a.hasOwnProperty(i))continue;f.push(b.call(d||null,i,a[i]))}}return f},filter:function(a,b,d){var f=[];for(var g=0,h=a.length;g<h;g++){if(b.call(d||null,a[g],g))f.push(a[g])}return f},asyncEach:function(a,b,d,f){var g=a.length,h=-1,i=0,k=false;var j=function(){i-=1;h+=1;if(h===g)return d&&d.call(f);b(a[h],n)};var l=function(){if(k)return;k=true;while(i>0)j();k=false};var n=function(){i+=1;l()};n()},toJSON:function(a){if(this.stringify)return this.stringify(a,function(key,value){return(this[key]instanceof Array)?this[key]:value});return JSON.stringify(a)},logger:function(a){if(typeof console!=='undefined')console.log(a)},timestamp:function(){var b=new Date(),d=b.getFullYear(),f=b.getMonth()+1,g=b.getDate(),h=b.getHours(),i=b.getMinutes(),k=b.getSeconds();var j=function(a){return a<10?'0'+a:String(a)};return j(d)+'-'+j(f)+'-'+j(g)+' '+j(h)+':'+j(i)+':'+j(k)}});Faye.Class=function(a,b){if(typeof a!=='function'){b=a;a=Object}var d=function(){if(!this.initialize)return this;return this.initialize.apply(this,arguments)||this};var f=function(){};f.prototype=a.prototype;d.prototype=new f();Faye.extend(d.prototype,b);return d};Faye.Namespace=Faye.Class({initialize:function(){this._e={}},exists:function(a){return this._e.hasOwnProperty(a)},generate:function(){var a=Faye.random();while(this._e.hasOwnProperty(a))a=Faye.random();return this._e[a]=a},release:function(a){delete this._e[a]}});Faye.Error=Faye.Class({initialize:function(a,b,d){this.code=a;this.params=Array.prototype.slice.call(b);this.message=d},toString:function(){return this.code+':'+this.params.join(',')+':'+this.message}});Faye.Error.parse=function(a){a=a||'';if(!Faye.Grammar.ERROR.test(a))return new this(null,[],a);var b=a.split(':'),d=parseInt(b[0]),f=b[1].split(','),a=b[2];return new this(d,f,a)};Faye.Error.versionMismatch=function(){return new this(300,arguments,"Version mismatch").toString()};Faye.Error.conntypeMismatch=function(){return new this(301,arguments,"Connection types not supported").toString()};Faye.Error.extMismatch=function(){return new this(302,arguments,"Extension mismatch").toString()};Faye.Error.badRequest=function(){return new this(400,arguments,"Bad request").toString()};Faye.Error.clientUnknown=function(){return new this(401,arguments,"Unknown client").toString()};Faye.Error.parameterMissing=function(){return new this(402,arguments,"Missing required parameter").toString()};Faye.Error.channelForbidden=function(){return new this(403,arguments,"Forbidden channel").toString()};Faye.Error.channelUnknown=function(){return new this(404,arguments,"Unknown channel").toString()};Faye.Error.channelInvalid=function(){return new this(405,arguments,"Invalid channel").toString()};Faye.Error.extUnknown=function(){return new this(406,arguments,"Unknown extension").toString()};Faye.Error.publishFailed=function(){return new this(407,arguments,"Failed to publish").toString()};Faye.Error.serverError=function(){return new this(500,arguments,"Internal server error").toString()};Faye.Deferrable={callback:function(a,b){if(!a)return;if(this._w==='succeeded')return a.apply(b,this._j);this._k=this._k||[];this._k.push([a,b])},timeout:function(a,b){var d=this;var f=Faye.ENV.setTimeout(function(){d.setDeferredStatus('failed',b)},a*1000);this._x=f},errback:function(a,b){if(!a)return;if(this._w==='failed')return a.apply(b,this._j);this._l=this._l||[];this._l.push([a,b])},setDeferredStatus:function(){if(this._x)Faye.ENV.clearTimeout(this._x);var a=Array.prototype.slice.call(arguments),b=a.shift(),d;this._w=b;this._j=a;if(b==='succeeded')d=this._k;else if(b==='failed')d=this._l;if(!d)return;var f;while(f=d.shift())f[0].apply(f[1],this._j)}};Faye.Publisher={countListeners:function(a){if(!this._3||!this._3[a])return 0;return this._3[a].length},bind:function(a,b,d){this._3=this._3||{};var f=this._3[a]=this._3[a]||[];f.push([b,d])},unbind:function(a,b,d){if(!this._3||!this._3[a])return;if(!b){delete this._3[a];return}var f=this._3[a],g=f.length;while(g--){if(b!==f[g][0])continue;if(d&&f[g][1]!==d)continue;f.splice(g,1)}},trigger:function(){var a=Array.prototype.slice.call(arguments),b=a.shift();if(!this._3||!this._3[b])return;var d=this._3[b].slice(),f;for(var g=0,h=d.length;g<h;g++){f=d[g];f[0].apply(f[1],a)}}};Faye.Timeouts={addTimeout:function(a,b,d,f){this._5=this._5||{};if(this._5.hasOwnProperty(a))return;var g=this;this._5[a]=Faye.ENV.setTimeout(function(){delete g._5[a];d.call(f)},1000*b)},removeTimeout:function(a){this._5=this._5||{};var b=this._5[a];if(!b)return;clearTimeout(b);delete this._5[a]}};Faye.Logging={LOG_LEVELS:{error:3,warn:2,info:1,debug:0},logLevel:'error',log:function(a,b){if(!Faye.logger)return;var d=Faye.Logging.LOG_LEVELS;if(d[Faye.Logging.logLevel]>d[b])return;var a=Array.prototype.slice.apply(a),f=' ['+b.toUpperCase()+'] [Faye',g=this.className,h=a.shift().replace(/\?/g,function(){try{return Faye.toJSON(a.shift())}catch(e){return'[Object]'}});for(var i in Faye){if(g)continue;if(typeof Faye[i]!=='function')continue;if(this instanceof Faye[i])g=i}if(g)f+='.'+g;f+='] ';Faye.logger(Faye.timestamp()+f+h)}};(function(){for(var d in Faye.Logging.LOG_LEVELS)(function(a,b){Faye.Logging[a]=function(){this.log(arguments,a)}})(d,Faye.Logging.LOG_LEVELS[d])})();Faye.Grammar={LOWALPHA:/^[a-z]$/,UPALPHA:/^[A-Z]$/,ALPHA:/^([a-z]|[A-Z])$/,DIGIT:/^[0-9]$/,ALPHANUM:/^(([a-z]|[A-Z])|[0-9])$/,MARK:/^(\-|\_|\!|\~|\(|\)|\$|\@)$/,STRING:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,TOKEN:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,INTEGER:/^([0-9])+$/,CHANNEL_SEGMENT:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,CHANNEL_SEGMENTS:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,CHANNEL_NAME:/^\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,WILD_CARD:/^\*{1,2}$/,CHANNEL_PATTERN:/^(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*\/\*{1,2}$/,VERSION_ELEMENT:/^(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*$/,VERSION:/^([0-9])+(\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*)*$/,CLIENT_ID:/^((([a-z]|[A-Z])|[0-9]))+$/,ID:/^((([a-z]|[A-Z])|[0-9]))+$/,ERROR_MESSAGE:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,ERROR_ARGS:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*$/,ERROR_CODE:/^[0-9][0-9][0-9]$/,ERROR:/^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)$/};Faye.Extensible={addExtension:function(a){this._6=this._6||[];this._6.push(a);if(a.added)a.added(this)},removeExtension:function(a){if(!this._6)return;var b=this._6.length;while(b--){if(this._6[b]!==a)continue;this._6.splice(b,1);if(a.removed)a.removed(this)}},pipeThroughExtensions:function(d,f,g,h){this.debug('Passing through ? extensions: ?',d,f);if(!this._6)return g.call(h,f);var i=this._6.slice();var k=function(a){if(!a)return g.call(h,a);var b=i.shift();if(!b)return g.call(h,a);if(b[d])b[d](a,k);else k(a)};k(f)}};Faye.extend(Faye.Extensible,Faye.Logging);Faye.Channel=Faye.Class({initialize:function(a){this.id=this.name=a},push:function(a){this.trigger('message',a)},isUnused:function(){return this.countListeners('message')===0}});Faye.extend(Faye.Channel.prototype,Faye.Publisher);Faye.extend(Faye.Channel,{HANDSHAKE:'/meta/handshake',CONNECT:'/meta/connect',SUBSCRIBE:'/meta/subscribe',UNSUBSCRIBE:'/meta/unsubscribe',DISCONNECT:'/meta/disconnect',META:'meta',SERVICE:'service',expand:function(a){var b=this.parse(a),d=['/**',a];var f=b.slice();f[f.length-1]='*';d.push(this.unparse(f));for(var g=1,h=b.length;g<h;g++){f=b.slice(0,g);f.push('**');d.push(this.unparse(f))}return d},isValid:function(a){return Faye.Grammar.CHANNEL_NAME.test(a)||Faye.Grammar.CHANNEL_PATTERN.test(a)},parse:function(a){if(!this.isValid(a))return null;return a.split('/').slice(1)},unparse:function(a){return'/'+a.join('/')},isMeta:function(a){var b=this.parse(a);return b?(b[0]===this.META):null},isService:function(a){var b=this.parse(a);return b?(b[0]===this.SERVICE):null},isSubscribable:function(a){if(!this.isValid(a))return null;return!this.isMeta(a)&&!this.isService(a)},Set:Faye.Class({initialize:function(){this._2={}},getKeys:function(){var a=[];for(var b in this._2)a.push(b);return a},remove:function(a){delete this._2[a]},hasSubscription:function(a){return this._2.hasOwnProperty(a)},subscribe:function(a,b,d){if(!b)return;var f;for(var g=0,h=a.length;g<h;g++){f=a[g];var i=this._2[f]=this._2[f]||new Faye.Channel(f);i.bind('message',b,d)}},unsubscribe:function(a,b,d){var f=this._2[a];if(!f)return false;f.unbind('message',b,d);if(f.isUnused()){this.remove(a);return true}else{return false}},distributeMessage:function(a){var b=Faye.Channel.expand(a.channel);for(var d=0,f=b.length;d<f;d++){var g=this._2[b[d]];if(g)g.trigger('message',a.data)}}})});Faye.Publication=Faye.Class(Faye.Deferrable);Faye.Subscription=Faye.Class({initialize:function(a,b,d,f){this._7=a;this._2=b;this._m=d;this._n=f;this._y=false},cancel:function(){if(this._y)return;this._7.unsubscribe(this._2,this._m,this._n);this._y=true},unsubscribe:function(){this.cancel()}});Faye.extend(Faye.Subscription.prototype,Faye.Deferrable);Faye.Client=Faye.Class({UNCONNECTED:1,CONNECTING:2,CONNECTED:3,DISCONNECTED:4,HANDSHAKE:'handshake',RETRY:'retry',NONE:'none',CONNECTION_TIMEOUT:60.0,DEFAULT_RETRY:5.0,DEFAULT_ENDPOINT:'/bayeux',INTERVAL:0.0,initialize:function(a,b){this.info('New client created for ?',a);this._f=b||{};this.endpoint=a||this.DEFAULT_ENDPOINT;this.endpoints=this._f.endpoints||{};this.transports={};this._E=Faye.CookieJar&&new Faye.CookieJar();this._z={};this._o=[];this.retry=this._f.retry||this.DEFAULT_RETRY;this._A(Faye.MANDATORY_CONNECTION_TYPES);this._1=this.UNCONNECTED;this._2=new Faye.Channel.Set();this._g=0;this._p={};this._8={reconnect:this.RETRY,interval:1000*(this._f.interval||this.INTERVAL),timeout:1000*(this._f.timeout||this.CONNECTION_TIMEOUT)};if(Faye.Event)Faye.Event.on(Faye.ENV,'beforeunload',function(){if(Faye.indexOf(this._o,'autodisconnect')<0)this.disconnect()},this)},disable:function(a){this._o.push(a)},setHeader:function(a,b){this._z[a]=b},getClientId:function(){return this._0},getState:function(){switch(this._1){case this.UNCONNECTED:return'UNCONNECTED';case this.CONNECTING:return'CONNECTING';case this.CONNECTED:return'CONNECTED';case this.DISCONNECTED:return'DISCONNECTED'}},handshake:function(f,g){if(this._8.reconnect===this.NONE)return;if(this._1!==this.UNCONNECTED)return;this._1=this.CONNECTING;var h=this;this.info('Initiating handshake with ?',this.endpoint);this._9({channel:Faye.Channel.HANDSHAKE,version:Faye.BAYEUX_VERSION,supportedConnectionTypes:[this._a.connectionType]},function(b){if(b.successful){this._1=this.CONNECTED;this._0=b.clientId;var d=Faye.filter(b.supportedConnectionTypes,function(a){return Faye.indexOf(this._o,a)<0},this);this._A(d);this.info('Handshake successful: ?',this._0);this.subscribe(this._2.getKeys(),true);if(f)f.call(g)}else{this.info('Handshake unsuccessful');Faye.ENV.setTimeout(function(){h.handshake(f,g)},this._8.interval);this._1=this.UNCONNECTED}},this)},connect:function(a,b){if(this._8.reconnect===this.NONE)return;if(this._1===this.DISCONNECTED)return;if(this._1===this.UNCONNECTED)return this.handshake(function(){this.connect(a,b)},this);this.callback(a,b);if(this._1!==this.CONNECTED)return;this.info('Calling deferred actions for ?',this._0);this.setDeferredStatus('succeeded');this.setDeferredStatus('deferred');if(this._q)return;this._q=true;this.info('Initiating connection for ?',this._0);this._9({channel:Faye.Channel.CONNECT,clientId:this._0,connectionType:this._a.connectionType},this._B,this)},disconnect:function(){if(this._1!==this.CONNECTED)return;this._1=this.DISCONNECTED;this.info('Disconnecting ?',this._0);this._9({channel:Faye.Channel.DISCONNECT,clientId:this._0},function(a){if(a.successful)this._a.close()},this);this.info('Clearing channel listeners for ?',this._0);this._2=new Faye.Channel.Set()},subscribe:function(d,f,g){if(d instanceof Array)return Faye.map(d,function(c){return this.subscribe(c,f,g)},this);var h=new Faye.Subscription(this,d,f,g),i=(f===true),k=this._2.hasSubscription(d);if(k&&!i){this._2.subscribe([d],f,g);h.setDeferredStatus('succeeded');return h}this.connect(function(){this.info('Client ? attempting to subscribe to ?',this._0,d);if(!i)this._2.subscribe([d],f,g);this._9({channel:Faye.Channel.SUBSCRIBE,clientId:this._0,subscription:d},function(a){if(!a.successful){h.setDeferredStatus('failed',Faye.Error.parse(a.error));return this._2.unsubscribe(d,f,g)}var b=[].concat(a.subscription);this.info('Subscription acknowledged for ? to ?',this._0,b);h.setDeferredStatus('succeeded')},this)},this);return h},unsubscribe:function(d,f,g){if(d instanceof Array)return Faye.map(d,function(c){return this.unsubscribe(c,f,g)},this);var h=this._2.unsubscribe(d,f,g);if(!h)return;this.connect(function(){this.info('Client ? attempting to unsubscribe from ?',this._0,d);this._9({channel:Faye.Channel.UNSUBSCRIBE,clientId:this._0,subscription:d},function(a){if(!a.successful)return;var b=[].concat(a.subscription);this.info('Unsubscription acknowledged for ? from ?',this._0,b)},this)},this)},publish:function(b,d){var f=new Faye.Publication();this.connect(function(){this.info('Client ? queueing published message to ?: ?',this._0,b,d);this._9({channel:b,data:d,clientId:this._0},function(a){if(a.successful)f.setDeferredStatus('succeeded');else f.setDeferredStatus('failed',Faye.Error.parse(a.error))},this)},this);return f},receiveMessage:function(d){this.pipeThroughExtensions('incoming',d,function(a){if(!a)return;if(a.advice)this._F(a.advice);this._G(a);if(a.successful===undefined)return;var b=this._p[a.id];if(!b)return;delete this._p[a.id];b[0].call(b[1],a)},this)},_A:function(b){Faye.Transport.get(this,b,function(a){this.debug('Selected ? transport for ?',a.connectionType,a.endpoint);this._a=a;this._a.cookies=this._E;this._a.headers=this._z;a.bind('down',function(){if(this._b!==undefined&&!this._b)return;this._b=false;this.trigger('transport:down')},this);a.bind('up',function(){if(this._b!==undefined&&this._b)return;this._b=true;this.trigger('transport:up')},this)},this)},_9:function(b,d,f){b.id=this._H();if(d)this._p[b.id]=[d,f];this.pipeThroughExtensions('outgoing',b,function(a){if(!a)return;this._a.send(a,this._8.timeout/1000)},this)},_H:function(){this._g+=1;if(this._g>=Math.pow(2,32))this._g=0;return this._g.toString(36)},_F:function(a){Faye.extend(this._8,a);if(this._8.reconnect===this.HANDSHAKE&&this._1!==this.DISCONNECTED){this._1=this.UNCONNECTED;this._0=null;this._B()}},_G:function(a){if(!a.channel||a.data===undefined)return;this.info('Client ? calling listeners for ? with ?',this._0,a.channel,a.data);this._2.distributeMessage(a)},_I:function(){if(!this._q)return;this._q=null;this.info('Closed connection for ?',this._0)},_B:function(){this._I();var a=this;Faye.ENV.setTimeout(function(){a.connect()},this._8.interval)}});Faye.extend(Faye.Client.prototype,Faye.Deferrable);Faye.extend(Faye.Client.prototype,Faye.Publisher);Faye.extend(Faye.Client.prototype,Faye.Logging);Faye.extend(Faye.Client.prototype,Faye.Extensible);Faye.Transport=Faye.extend(Faye.Class({MAX_DELAY:0.0,batching:true,initialize:function(a,b){this._7=a;this.endpoint=b;this._c=[]},close:function(){},send:function(a,b){this.debug('Client ? sending message to ?: ?',this._7._0,this.endpoint,a);if(!this.batching)return this.request([a],b);this._c.push(a);this._J=b;if(a.channel===Faye.Channel.HANDSHAKE)return this.addTimeout('publish',0.01,this.flush,this);if(a.channel===Faye.Channel.CONNECT)this._r=a;if(this.shouldFlush&&this.shouldFlush(this._c))return this.flush();this.addTimeout('publish',this.MAX_DELAY,this.flush,this)},flush:function(){this.removeTimeout('publish');if(this._c.length>1&&this._r)this._r.advice={timeout:0};this.request(this._c,this._J);this._r=null;this._c=[]},receive:function(a){this.debug('Client ? received from ?: ?',this._7._0,this.endpoint,a);for(var b=0,d=a.length;b<d;b++){this._7.receiveMessage(a[b])}},retry:function(a,b){var d=false,f=this._7.retry*1000,g=this;return function(){if(d)return;d=true;Faye.ENV.setTimeout(function(){g.request(a,b)},f)}}}),{MAX_URL_LENGTH:2048,get:function(k,j,l,n){var o=k.endpoint;if(j===undefined)j=this.supportedConnectionTypes();Faye.asyncEach(this._s,function(d,f){var g=d[0],h=d[1],i=k.endpoints[g]||o;if(Faye.indexOf(j,g)<0){h.isUsable(k,i,function(){});return f()}h.isUsable(k,i,function(a){if(!a)return f();var b=h.hasOwnProperty('create')?h.create(k,i):new h(k,i);l.call(n,b)})},function(){throw new Error('Could not find a usable connection type for '+o);})},register:function(a,b){this._s.push([a,b]);b.prototype.connectionType=a},_s:[],supportedConnectionTypes:function(){return Faye.map(this._s,function(a){return a[0]})}});Faye.extend(Faye.Transport.prototype,Faye.Logging);Faye.extend(Faye.Transport.prototype,Faye.Publisher);Faye.extend(Faye.Transport.prototype,Faye.Timeouts);Faye.Event={_h:[],on:function(a,b,d,f){var g=function(){d.call(f)};if(a.addEventListener)a.addEventListener(b,g,false);else a.attachEvent('on'+b,g);this._h.push({_i:a,_t:b,_m:d,_n:f,_C:g})},detach:function(a,b,d,f){var g=this._h.length,h;while(g--){h=this._h[g];if((a&&a!==h._i)||(b&&b!==h._t)||(d&&d!==h._m)||(f&&f!==h._n))continue;if(h._i.removeEventListener)h._i.removeEventListener(h._t,h._C,false);else h._i.detachEvent('on'+h._t,h._C);this._h.splice(g,1);h=null}}};Faye.Event.on(Faye.ENV,'unload',Faye.Event.detach,Faye.Event);Faye.URI=Faye.extend(Faye.Class({queryString:function(){var a=[];for(var b in this.params){if(!this.params.hasOwnProperty(b))continue;a.push(encodeURIComponent(b)+'='+encodeURIComponent(this.params[b]))}return a.join('&')},isSameOrigin:function(){var a=Faye.URI.parse(Faye.ENV.location.href);var b=(a.hostname!==this.hostname)||(a.port!==this.port)||(a.protocol!==this.protocol);return!b},toURL:function(){var a=this.queryString();return this.protocol+'//'+this.hostname+(this.port?':'+this.port:'')+this.pathname+(a?'?'+a:'')+this.hash}}),{parse:function(g,h){if(typeof g!=='string')return g;var i=new this(),k;var j=function(b,d,f){g=g.replace(d,function(a){i[b]=a;return''});if(i[b]===undefined)i[b]=f?Faye.ENV.location[b]:''};j('protocol',/^https?\:/,true);j('host',/^\/\/[^\/]+/,true);if(!/^\//.test(g))g=Faye.ENV.location.pathname.replace(/[^\/]*$/,'')+g;j('pathname',/^\/[^\?#]*/);j('search',/^\?[^#]*/);j('hash',/^#.*/);if(/^\/\//.test(i.host)){i.host=i.host.substr(2);k=i.host.split(':');i.hostname=k[0];i.port=k[1]||''}else{i.hostname=Faye.ENV.location.hostname;i.port=Faye.ENV.location.port}var l=i.search.replace(/^\?/,''),n=l?l.split('&'):[],o=n.length,m={};while(o--){k=n[o].split('=');m[decodeURIComponent(k[0]||'')]=decodeURIComponent(k[1]||'')}if(typeof h==='object')Faye.extend(m,h);i.params=m;return i}});if(!this.JSON){JSON={}}(function(){function l(a){return a<10?'0'+a:a}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(a){return this.getUTCFullYear()+'-'+l(this.getUTCMonth()+1)+'-'+l(this.getUTCDate())+'T'+l(this.getUTCHours())+':'+l(this.getUTCMinutes())+':'+l(this.getUTCSeconds())+'Z'};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()}}var n=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,m,q,t={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},p;function s(d){o.lastIndex=0;return o.test(d)?'"'+d.replace(o,function(a){var b=t[a];return typeof b==='string'?b:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+d+'"'}function r(a,b){var d,f,g,h,i=m,k,j=b[a];if(j&&typeof j==='object'&&typeof j.toJSON==='function'){j=j.toJSON(a)}if(typeof p==='function'){j=p.call(b,a,j)}switch(typeof j){case'string':return s(j);case'number':return isFinite(j)?String(j):'null';case'boolean':case'null':return String(j);case'object':if(!j){return'null'}m+=q;k=[];if(Object.prototype.toString.apply(j)==='[object Array]'){h=j.length;for(d=0;d<h;d+=1){k[d]=r(d,j)||'null'}g=k.length===0?'[]':m?'[\n'+m+k.join(',\n'+m)+'\n'+i+']':'['+k.join(',')+']';m=i;return g}if(p&&typeof p==='object'){h=p.length;for(d=0;d<h;d+=1){f=p[d];if(typeof f==='string'){g=r(f,j);if(g){k.push(s(f)+(m?': ':':')+g)}}}}else{for(f in j){if(Object.hasOwnProperty.call(j,f)){g=r(f,j);if(g){k.push(s(f)+(m?': ':':')+g)}}}}g=k.length===0?'{}':m?'{\n'+m+k.join(',\n'+m)+'\n'+i+'}':'{'+k.join(',')+'}';m=i;return g}}Faye.stringify=function(a,b,d){var f;m='';q='';if(typeof d==='number'){for(f=0;f<d;f+=1){q+=' '}}else if(typeof d==='string'){q=d}p=b;if(b&&typeof b!=='function'&&(typeof b!=='object'||typeof b.length!=='number')){throw new Error('JSON.stringify');}return r('',{'':a})};if(typeof JSON.stringify!=='function'){JSON.stringify=Faye.stringify}if(typeof JSON.parse!=='function'){JSON.parse=function(h,i){var k;function j(a,b){var d,f,g=a[b];if(g&&typeof g==='object'){for(d in g){if(Object.hasOwnProperty.call(g,d)){f=j(g,d);if(f!==undefined){g[d]=f}else{delete g[d]}}}}return i.call(a,b,g)}n.lastIndex=0;if(n.test(h)){h=h.replace(n,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(h.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){k=eval('('+h+')');return typeof i==='function'?j({'':k},''):k}throw new SyntaxError('JSON.parse');}}}());Faye.Transport.WebSocket=Faye.extend(Faye.Class(Faye.Transport,{UNCONNECTED:1,CONNECTING:2,CONNECTED:3,batching:false,isUsable:function(a,b){this.callback(function(){a.call(b,true)});this.errback(function(){a.call(b,false)});this.connect()},request:function(b,d){if(b.length===0)return;this._d=this._d||{};for(var f=0,g=b.length;f<g;f++){this._d[b[f].id]=b[f]}this.callback(function(a){a.send(Faye.toJSON(b))});this.connect()},close:function(){if(this._D)return;this._D=true;if(this._4)this._4.close()},connect:function(){if(Faye.Transport.WebSocket._K)return;if(this._D)return;this._1=this._1||this.UNCONNECTED;if(this._1!==this.UNCONNECTED)return;this._1=this.CONNECTING;var g=Faye.Transport.WebSocket.getClass();if(!g)return this.setDeferredStatus('failed');this._4=new g(Faye.Transport.WebSocket.getSocketUrl(this.endpoint));var h=this;this._4.onopen=function(){h._1=h.CONNECTED;h._u=true;h.setDeferredStatus('succeeded',h._4);h.trigger('up')};this._4.onmessage=function(a){var b=[].concat(JSON.parse(a.data));for(var d=0,f=b.length;d<f;d++){delete h._d[b[d].id]}h.receive(b)};this._4.onclose=function(){var a=(h._1===h.CONNECTED);h.setDeferredStatus('deferred');h._1=h.UNCONNECTED;delete h._4;if(a)return h.resend();if(!h._u)return h.setDeferredStatus('failed');var b=h._7.retry*1000;Faye.ENV.setTimeout(function(){h.connect()},b);h.trigger('down')}},resend:function(){if(!this._d)return;var d=Faye.map(this._d,function(a,b){return b});this.request(d)}}),{getSocketUrl:function(a){if(Faye.URI)a=Faye.URI.parse(a).toURL();return a.replace(/^http(s?):/ig,'ws$1:')},getClass:function(){return(Faye.WebSocket&&Faye.WebSocket.Client)||Faye.ENV.WebSocket||Faye.ENV.MozWebSocket},isUsable:function(a,b,d,f){this.create(a,b).isUsable(d,f)},create:function(a,b){var d=a.transports.websocket=a.transports.websocket||{};d[b]=d[b]||new this(a,b);return d[b]}});Faye.extend(Faye.Transport.WebSocket.prototype,Faye.Deferrable);Faye.Transport.register('websocket',Faye.Transport.WebSocket);if(Faye.Event)Faye.Event.on(Faye.ENV,'beforeunload',function(){Faye.Transport.WebSocket._K=true});Faye.Transport.EventSource=Faye.extend(Faye.Class(Faye.Transport,{initialize:function(b,d){Faye.Transport.prototype.initialize.call(this,b,d);if(!Faye.ENV.EventSource)return this.setDeferredStatus('failed');this._L=new Faye.Transport.XHR(b,d);var f=new EventSource(d+'/'+b.getClientId()),g=this;f.onopen=function(){g._u=true;g.setDeferredStatus('succeeded');g.trigger('up')};f.onerror=function(){if(g._u){g.trigger('down')}else{g.setDeferredStatus('failed');f.close()}};f.onmessage=function(a){g.receive(JSON.parse(a.data));g.trigger('up')};this._4=f},isUsable:function(a,b){this.callback(function(){a.call(b,true)});this.errback(function(){a.call(b,false)})},request:function(a,b){this._L.request(a,b)},close:function(){this._4.close()}}),{isUsable:function(b,d,f,g){var h=b.getClientId();if(!h)return f.call(g,false);Faye.Transport.XHR.isUsable(b,d,function(a){if(!a)return f.call(g,false);this.create(b,d).isUsable(f,g)},this)},create:function(a,b){var d=a.transports.eventsource=a.transports.eventsource||{};d[b]=d[b]||new this(a,b);return d[b]}});Faye.extend(Faye.Transport.EventSource.prototype,Faye.Deferrable);Faye.Transport.register('eventsource',Faye.Transport.EventSource);Faye.Transport.XHR=Faye.extend(Faye.Class(Faye.Transport,{request:function(f,g){var h=this.retry(f,g),i=Faye.URI.parse(this.endpoint).pathname,k=this,j=Faye.ENV.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();j.open('POST',i,true);j.setRequestHeader('Content-Type','application/json');j.setRequestHeader('Pragma','no-cache');j.setRequestHeader('X-Requested-With','XMLHttpRequest');var l=this.headers;for(var n in l){if(!l.hasOwnProperty(n))continue;j.setRequestHeader(n,l[n])}var o=function(){j.abort()};Faye.Event.on(Faye.ENV,'beforeunload',o);var m=function(){Faye.Event.detach(Faye.ENV,'beforeunload',o);j.onreadystatechange=function(){};j=null};j.onreadystatechange=function(){if(j.readyState!==4)return;var a=null,b=j.status,d=((b>=200&&b<300)||b===304||b===1223);if(!d){m();h();return k.trigger('down')}try{a=JSON.parse(j.responseText)}catch(e){}m();if(a){k.receive(a);k.trigger('up')}else{h();k.trigger('down')}};j.send(Faye.toJSON(f))}}),{isUsable:function(a,b,d,f){d.call(f,Faye.URI.parse(b).isSameOrigin())}});Faye.Transport.register('long-polling',Faye.Transport.XHR);Faye.Transport.CORS=Faye.extend(Faye.Class(Faye.Transport,{request:function(b,d){var f=Faye.ENV.XDomainRequest?XDomainRequest:XMLHttpRequest,g=new f(),h=this.retry(b,d),i=this;g.open('POST',this.endpoint,true);if(g.setRequestHeader)g.setRequestHeader('Pragma','no-cache');var k=function(){if(!g)return false;g.onload=g.onerror=g.ontimeout=g.onprogress=null;g=null;Faye.ENV.clearTimeout(l);return true};g.onload=function(){var a=null;try{a=JSON.parse(g.responseText)}catch(e){}k();if(a){i.receive(a);i.trigger('up')}else{h();i.trigger('down')}};var j=function(){k();h();i.trigger('down')};var l=Faye.ENV.setTimeout(j,1.5*1000*d);g.onerror=j;g.ontimeout=j;g.onprogress=function(){};g.send('message='+encodeURIComponent(Faye.toJSON(b)))}}),{isUsable:function(a,b,d,f){if(Faye.URI.parse(b).isSameOrigin())return d.call(f,false);if(Faye.ENV.XDomainRequest)return d.call(f,Faye.URI.parse(b).protocol===Faye.URI.parse(Faye.ENV.location).protocol);if(Faye.ENV.XMLHttpRequest){var g=new Faye.ENV.XMLHttpRequest();return d.call(f,g.withCredentials!==undefined)}return d.call(f,false)}});Faye.Transport.register('cross-origin-long-polling',Faye.Transport.CORS);Faye.Transport.JSONP=Faye.extend(Faye.Class(Faye.Transport,{shouldFlush:function(a){var b={message:Faye.toJSON(a),jsonp:'__jsonp'+Faye.Transport.JSONP._v+'__'};var d=Faye.URI.parse(this.endpoint,b).toURL();return d.length>=Faye.Transport.MAX_URL_LENGTH},request:function(b,d){var f={message:Faye.toJSON(b)},g=document.getElementsByTagName('head')[0],h=document.createElement('script'),i=Faye.Transport.JSONP.getCallbackName(),k=Faye.URI.parse(this.endpoint,f),j=this.retry(b,d),l=this;Faye.ENV[i]=function(a){o();l.receive(a);l.trigger('up')};var n=Faye.ENV.setTimeout(function(){o();j();l.trigger('down')},1.5*1000*d);var o=function(){if(!Faye.ENV[i])return false;Faye.ENV[i]=undefined;try{delete Faye.ENV[i]}catch(e){}Faye.ENV.clearTimeout(n);h.parentNode.removeChild(h);return true};k.params.jsonp=i;h.type='text/javascript';h.src=k.toURL();g.appendChild(h)}}),{_v:0,getCallbackName:function(){this._v+=1;return'__jsonp'+this._v+'__'},isUsable:function(a,b,d,f){d.call(f,true)}});Faye.Transport.register('callback-polling',Faye.Transport.JSONP);
|
1
|
+
'use strict';var Faye={VERSION:'0.8.9',BAYEUX_VERSION:'1.0',ID_LENGTH:160,JSONP_CALLBACK:'jsonpcallback',CONNECTION_TYPES:['long-polling','cross-origin-long-polling','callback-polling','websocket','eventsource','in-process'],MANDATORY_CONNECTION_TYPES:['long-polling','callback-polling','in-process'],ENV:(typeof global==='undefined')?window:global,extend:function(a,b,d){if(!b)return a;for(var f in b){if(!b.hasOwnProperty(f))continue;if(a.hasOwnProperty(f)&&d===false)continue;if(a[f]!==b[f])a[f]=b[f]}return a},random:function(a){a=a||this.ID_LENGTH;if(a>32){var b=Math.ceil(a/32),d='';while(b--)d+=this.random(32);var f=d.split(''),g='';while(f.length>0)g+=f.pop();return g}var h=Math.pow(2,a)-1,i=h.toString(36).length,d=Math.floor(Math.random()*h).toString(36);while(d.length<i)d='0'+d;return d},clientIdFromMessages:function(a){var b=[].concat(a)[0];return b&&b.clientId},copyObject:function(a){var b,d,f;if(a instanceof Array){b=[];d=a.length;while(d--)b[d]=Faye.copyObject(a[d]);return b}else if(typeof a==='object'){b=(a===null)?null:{};for(f in a)b[f]=Faye.copyObject(a[f]);return b}else{return a}},commonElement:function(a,b){for(var d=0,f=a.length;d<f;d++){if(this.indexOf(b,a[d])!==-1)return a[d]}return null},indexOf:function(a,b){if(a.indexOf)return a.indexOf(b);for(var d=0,f=a.length;d<f;d++){if(a[d]===b)return d}return-1},map:function(a,b,d){if(a.map)return a.map(b,d);var f=[];if(a instanceof Array){for(var g=0,h=a.length;g<h;g++){f.push(b.call(d||null,a[g],g))}}else{for(var i in a){if(!a.hasOwnProperty(i))continue;f.push(b.call(d||null,i,a[i]))}}return f},filter:function(a,b,d){var f=[];for(var g=0,h=a.length;g<h;g++){if(b.call(d||null,a[g],g))f.push(a[g])}return f},asyncEach:function(a,b,d,f){var g=a.length,h=-1,i=0,k=false;var j=function(){i-=1;h+=1;if(h===g)return d&&d.call(f);b(a[h],n)};var m=function(){if(k)return;k=true;while(i>0)j();k=false};var n=function(){i+=1;m()};n()},toJSON:function(a){if(this.stringify)return this.stringify(a,function(key,value){return(this[key]instanceof Array)?this[key]:value});return JSON.stringify(a)},logger:function(a){if(typeof console!=='undefined')console.log(a)},timestamp:function(){var b=new Date(),d=b.getFullYear(),f=b.getMonth()+1,g=b.getDate(),h=b.getHours(),i=b.getMinutes(),k=b.getSeconds();var j=function(a){return a<10?'0'+a:String(a)};return j(d)+'-'+j(f)+'-'+j(g)+' '+j(h)+':'+j(i)+':'+j(k)}};if(typeof window!=='undefined')window.Faye=Faye;Faye.Class=function(a,b){if(typeof a!=='function'){b=a;a=Object}var d=function(){if(!this.initialize)return this;return this.initialize.apply(this,arguments)||this};var f=function(){};f.prototype=a.prototype;d.prototype=new f();Faye.extend(d.prototype,b);return d};Faye.Namespace=Faye.Class({initialize:function(){this._e={}},exists:function(a){return this._e.hasOwnProperty(a)},generate:function(){var a=Faye.random();while(this._e.hasOwnProperty(a))a=Faye.random();return this._e[a]=a},release:function(a){delete this._e[a]}});Faye.Error=Faye.Class({initialize:function(a,b,d){this.code=a;this.params=Array.prototype.slice.call(b);this.message=d},toString:function(){return this.code+':'+this.params.join(',')+':'+this.message}});Faye.Error.parse=function(a){a=a||'';if(!Faye.Grammar.ERROR.test(a))return new this(null,[],a);var b=a.split(':'),d=parseInt(b[0]),f=b[1].split(','),a=b[2];return new this(d,f,a)};Faye.Error.versionMismatch=function(){return new this(300,arguments,"Version mismatch").toString()};Faye.Error.conntypeMismatch=function(){return new this(301,arguments,"Connection types not supported").toString()};Faye.Error.extMismatch=function(){return new this(302,arguments,"Extension mismatch").toString()};Faye.Error.badRequest=function(){return new this(400,arguments,"Bad request").toString()};Faye.Error.clientUnknown=function(){return new this(401,arguments,"Unknown client").toString()};Faye.Error.parameterMissing=function(){return new this(402,arguments,"Missing required parameter").toString()};Faye.Error.channelForbidden=function(){return new this(403,arguments,"Forbidden channel").toString()};Faye.Error.channelUnknown=function(){return new this(404,arguments,"Unknown channel").toString()};Faye.Error.channelInvalid=function(){return new this(405,arguments,"Invalid channel").toString()};Faye.Error.extUnknown=function(){return new this(406,arguments,"Unknown extension").toString()};Faye.Error.publishFailed=function(){return new this(407,arguments,"Failed to publish").toString()};Faye.Error.serverError=function(){return new this(500,arguments,"Internal server error").toString()};Faye.Deferrable={callback:function(a,b){if(!a)return;if(this._v==='succeeded')return a.apply(b,this._j);this._k=this._k||[];this._k.push([a,b])},timeout:function(a,b){var d=this;var f=Faye.ENV.setTimeout(function(){d.setDeferredStatus('failed',b)},a*1000);this._w=f},errback:function(a,b){if(!a)return;if(this._v==='failed')return a.apply(b,this._j);this._l=this._l||[];this._l.push([a,b])},setDeferredStatus:function(){if(this._w)Faye.ENV.clearTimeout(this._w);var a=Array.prototype.slice.call(arguments),b=a.shift(),d;this._v=b;this._j=a;if(b==='succeeded')d=this._k;else if(b==='failed')d=this._l;if(!d)return;var f;while(f=d.shift())f[0].apply(f[1],this._j)}};Faye.Publisher={countListeners:function(a){if(!this._4||!this._4[a])return 0;return this._4[a].length},bind:function(a,b,d){this._4=this._4||{};var f=this._4[a]=this._4[a]||[];f.push([b,d])},unbind:function(a,b,d){if(!this._4||!this._4[a])return;if(!b){delete this._4[a];return}var f=this._4[a],g=f.length;while(g--){if(b!==f[g][0])continue;if(d&&f[g][1]!==d)continue;f.splice(g,1)}},trigger:function(){var a=Array.prototype.slice.call(arguments),b=a.shift();if(!this._4||!this._4[b])return;var d=this._4[b].slice(),f;for(var g=0,h=d.length;g<h;g++){f=d[g];f[0].apply(f[1],a)}}};Faye.Timeouts={addTimeout:function(a,b,d,f){this._6=this._6||{};if(this._6.hasOwnProperty(a))return;var g=this;this._6[a]=Faye.ENV.setTimeout(function(){delete g._6[a];d.call(f)},1000*b)},removeTimeout:function(a){this._6=this._6||{};var b=this._6[a];if(!b)return;clearTimeout(b);delete this._6[a]}};Faye.Logging={LOG_LEVELS:{error:3,warn:2,info:1,debug:0},logLevel:'error',log:function(a,b){if(!Faye.logger)return;var d=Faye.Logging.LOG_LEVELS;if(d[Faye.Logging.logLevel]>d[b])return;var a=Array.prototype.slice.apply(a),f=' ['+b.toUpperCase()+'] [Faye',g=this.className,h=a.shift().replace(/\?/g,function(){try{return Faye.toJSON(a.shift())}catch(e){return'[Object]'}});for(var i in Faye){if(g)continue;if(typeof Faye[i]!=='function')continue;if(this instanceof Faye[i])g=i}if(g)f+='.'+g;f+='] ';Faye.logger(Faye.timestamp()+f+h)}};(function(){for(var d in Faye.Logging.LOG_LEVELS)(function(a,b){Faye.Logging[a]=function(){this.log(arguments,a)}})(d,Faye.Logging.LOG_LEVELS[d])})();Faye.Grammar={LOWALPHA:/^[a-z]$/,UPALPHA:/^[A-Z]$/,ALPHA:/^([a-z]|[A-Z])$/,DIGIT:/^[0-9]$/,ALPHANUM:/^(([a-z]|[A-Z])|[0-9])$/,MARK:/^(\-|\_|\!|\~|\(|\)|\$|\@)$/,STRING:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,TOKEN:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,INTEGER:/^([0-9])+$/,CHANNEL_SEGMENT:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,CHANNEL_SEGMENTS:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,CHANNEL_NAME:/^\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,WILD_CARD:/^\*{1,2}$/,CHANNEL_PATTERN:/^(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*\/\*{1,2}$/,VERSION_ELEMENT:/^(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*$/,VERSION:/^([0-9])+(\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*)*$/,CLIENT_ID:/^((([a-z]|[A-Z])|[0-9]))+$/,ID:/^((([a-z]|[A-Z])|[0-9]))+$/,ERROR_MESSAGE:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,ERROR_ARGS:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*$/,ERROR_CODE:/^[0-9][0-9][0-9]$/,ERROR:/^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)$/};Faye.Extensible={addExtension:function(a){this._7=this._7||[];this._7.push(a);if(a.added)a.added(this)},removeExtension:function(a){if(!this._7)return;var b=this._7.length;while(b--){if(this._7[b]!==a)continue;this._7.splice(b,1);if(a.removed)a.removed(this)}},pipeThroughExtensions:function(d,f,g,h){this.debug('Passing through ? extensions: ?',d,f);if(!this._7)return g.call(h,f);var i=this._7.slice();var k=function(a){if(!a)return g.call(h,a);var b=i.shift();if(!b)return g.call(h,a);if(b[d])b[d](a,k);else k(a)};k(f)}};Faye.extend(Faye.Extensible,Faye.Logging);Faye.Channel=Faye.Class({initialize:function(a){this.id=this.name=a},push:function(a){this.trigger('message',a)},isUnused:function(){return this.countListeners('message')===0}});Faye.extend(Faye.Channel.prototype,Faye.Publisher);Faye.extend(Faye.Channel,{HANDSHAKE:'/meta/handshake',CONNECT:'/meta/connect',SUBSCRIBE:'/meta/subscribe',UNSUBSCRIBE:'/meta/unsubscribe',DISCONNECT:'/meta/disconnect',META:'meta',SERVICE:'service',expand:function(a){var b=this.parse(a),d=['/**',a];var f=b.slice();f[f.length-1]='*';d.push(this.unparse(f));for(var g=1,h=b.length;g<h;g++){f=b.slice(0,g);f.push('**');d.push(this.unparse(f))}return d},isValid:function(a){return Faye.Grammar.CHANNEL_NAME.test(a)||Faye.Grammar.CHANNEL_PATTERN.test(a)},parse:function(a){if(!this.isValid(a))return null;return a.split('/').slice(1)},unparse:function(a){return'/'+a.join('/')},isMeta:function(a){var b=this.parse(a);return b?(b[0]===this.META):null},isService:function(a){var b=this.parse(a);return b?(b[0]===this.SERVICE):null},isSubscribable:function(a){if(!this.isValid(a))return null;return!this.isMeta(a)&&!this.isService(a)},Set:Faye.Class({initialize:function(){this._2={}},getKeys:function(){var a=[];for(var b in this._2)a.push(b);return a},remove:function(a){delete this._2[a]},hasSubscription:function(a){return this._2.hasOwnProperty(a)},subscribe:function(a,b,d){if(!b)return;var f;for(var g=0,h=a.length;g<h;g++){f=a[g];var i=this._2[f]=this._2[f]||new Faye.Channel(f);i.bind('message',b,d)}},unsubscribe:function(a,b,d){var f=this._2[a];if(!f)return false;f.unbind('message',b,d);if(f.isUnused()){this.remove(a);return true}else{return false}},distributeMessage:function(a){var b=Faye.Channel.expand(a.channel);for(var d=0,f=b.length;d<f;d++){var g=this._2[b[d]];if(g)g.trigger('message',a.data)}}})});Faye.Publication=Faye.Class(Faye.Deferrable);Faye.Subscription=Faye.Class({initialize:function(a,b,d,f){this._8=a;this._2=b;this._m=d;this._n=f;this._x=false},cancel:function(){if(this._x)return;this._8.unsubscribe(this._2,this._m,this._n);this._x=true},unsubscribe:function(){this.cancel()}});Faye.extend(Faye.Subscription.prototype,Faye.Deferrable);Faye.Client=Faye.Class({UNCONNECTED:1,CONNECTING:2,CONNECTED:3,DISCONNECTED:4,HANDSHAKE:'handshake',RETRY:'retry',NONE:'none',CONNECTION_TIMEOUT:60.0,DEFAULT_RETRY:5.0,DEFAULT_ENDPOINT:'/bayeux',INTERVAL:0.0,initialize:function(a,b){this.info('New client created for ?',a);this._f=b||{};this.endpoint=a||this.DEFAULT_ENDPOINT;this.endpoints=this._f.endpoints||{};this.transports={};this._D=Faye.CookieJar&&new Faye.CookieJar();this._y={};this._o=[];this.retry=this._f.retry||this.DEFAULT_RETRY;this._1=this.UNCONNECTED;this._2=new Faye.Channel.Set();this._g=0;this._p={};this._9={reconnect:this.RETRY,interval:1000*(this._f.interval||this.INTERVAL),timeout:1000*(this._f.timeout||this.CONNECTION_TIMEOUT)};if(Faye.Event)Faye.Event.on(Faye.ENV,'beforeunload',function(){if(Faye.indexOf(this._o,'autodisconnect')<0)this.disconnect()},this)},disable:function(a){this._o.push(a)},setHeader:function(a,b){this._y[a]=b},getClientId:function(){return this._0},getState:function(){switch(this._1){case this.UNCONNECTED:return'UNCONNECTED';case this.CONNECTING:return'CONNECTING';case this.CONNECTED:return'CONNECTED';case this.DISCONNECTED:return'DISCONNECTED'}},handshake:function(b,d){if(this._9.reconnect===this.NONE)return;if(this._1!==this.UNCONNECTED)return;this._1=this.CONNECTING;var f=this;this.info('Initiating handshake with ?',this.endpoint);this._z(Faye.MANDATORY_CONNECTION_TYPES);this._a({channel:Faye.Channel.HANDSHAKE,version:Faye.BAYEUX_VERSION,supportedConnectionTypes:[this._5.connectionType]},function(a){if(a.successful){this._1=this.CONNECTED;this._0=a.clientId;this._z(a.supportedConnectionTypes);this.info('Handshake successful: ?',this._0);this.subscribe(this._2.getKeys(),true);if(b)b.call(d)}else{this.info('Handshake unsuccessful');Faye.ENV.setTimeout(function(){f.handshake(b,d)},this._9.interval);this._1=this.UNCONNECTED}},this)},connect:function(a,b){if(this._9.reconnect===this.NONE)return;if(this._1===this.DISCONNECTED)return;if(this._1===this.UNCONNECTED)return this.handshake(function(){this.connect(a,b)},this);this.callback(a,b);if(this._1!==this.CONNECTED)return;this.info('Calling deferred actions for ?',this._0);this.setDeferredStatus('succeeded');this.setDeferredStatus('deferred');if(this._q)return;this._q=true;this.info('Initiating connection for ?',this._0);this._a({channel:Faye.Channel.CONNECT,clientId:this._0,connectionType:this._5.connectionType},this._A,this)},disconnect:function(){if(this._1!==this.CONNECTED)return;this._1=this.DISCONNECTED;this.info('Disconnecting ?',this._0);this._a({channel:Faye.Channel.DISCONNECT,clientId:this._0},function(a){if(a.successful)this._5.close()},this);this.info('Clearing channel listeners for ?',this._0);this._2=new Faye.Channel.Set()},subscribe:function(d,f,g){if(d instanceof Array)return Faye.map(d,function(c){return this.subscribe(c,f,g)},this);var h=new Faye.Subscription(this,d,f,g),i=(f===true),k=this._2.hasSubscription(d);if(k&&!i){this._2.subscribe([d],f,g);h.setDeferredStatus('succeeded');return h}this.connect(function(){this.info('Client ? attempting to subscribe to ?',this._0,d);if(!i)this._2.subscribe([d],f,g);this._a({channel:Faye.Channel.SUBSCRIBE,clientId:this._0,subscription:d},function(a){if(!a.successful){h.setDeferredStatus('failed',Faye.Error.parse(a.error));return this._2.unsubscribe(d,f,g)}var b=[].concat(a.subscription);this.info('Subscription acknowledged for ? to ?',this._0,b);h.setDeferredStatus('succeeded')},this)},this);return h},unsubscribe:function(d,f,g){if(d instanceof Array)return Faye.map(d,function(c){return this.unsubscribe(c,f,g)},this);var h=this._2.unsubscribe(d,f,g);if(!h)return;this.connect(function(){this.info('Client ? attempting to unsubscribe from ?',this._0,d);this._a({channel:Faye.Channel.UNSUBSCRIBE,clientId:this._0,subscription:d},function(a){if(!a.successful)return;var b=[].concat(a.subscription);this.info('Unsubscription acknowledged for ? from ?',this._0,b)},this)},this)},publish:function(b,d){var f=new Faye.Publication();this.connect(function(){this.info('Client ? queueing published message to ?: ?',this._0,b,d);this._a({channel:b,data:d,clientId:this._0},function(a){if(a.successful)f.setDeferredStatus('succeeded');else f.setDeferredStatus('failed',Faye.Error.parse(a.error))},this)},this);return f},receiveMessage:function(d){this.pipeThroughExtensions('incoming',d,function(a){if(!a)return;if(a.advice)this._E(a.advice);this._F(a);if(a.successful===undefined)return;var b=this._p[a.id];if(!b)return;delete this._p[a.id];b[0].call(b[1],a)},this)},_z:function(b){Faye.Transport.get(this,b,this._o,function(a){this.debug('Selected ? transport for ?',a.connectionType,a.endpoint);if(a===this._5)return;if(this._5)this._5.close();this._5=a;this._5.cookies=this._D;this._5.headers=this._y;a.bind('down',function(){if(this._b!==undefined&&!this._b)return;this._b=false;this.trigger('transport:down')},this);a.bind('up',function(){if(this._b!==undefined&&this._b)return;this._b=true;this.trigger('transport:up')},this)},this)},_a:function(b,d,f){b.id=this._G();if(d)this._p[b.id]=[d,f];this.pipeThroughExtensions('outgoing',b,function(a){if(!a)return;this._5.send(a,this._9.timeout/1000)},this)},_G:function(){this._g+=1;if(this._g>=Math.pow(2,32))this._g=0;return this._g.toString(36)},_E:function(a){Faye.extend(this._9,a);if(this._9.reconnect===this.HANDSHAKE&&this._1!==this.DISCONNECTED){this._1=this.UNCONNECTED;this._0=null;this._A()}},_F:function(a){if(!a.channel||a.data===undefined)return;this.info('Client ? calling listeners for ? with ?',this._0,a.channel,a.data);this._2.distributeMessage(a)},_H:function(){if(!this._q)return;this._q=null;this.info('Closed connection for ?',this._0)},_A:function(){this._H();var a=this;Faye.ENV.setTimeout(function(){a.connect()},this._9.interval)}});Faye.extend(Faye.Client.prototype,Faye.Deferrable);Faye.extend(Faye.Client.prototype,Faye.Publisher);Faye.extend(Faye.Client.prototype,Faye.Logging);Faye.extend(Faye.Client.prototype,Faye.Extensible);Faye.Transport=Faye.extend(Faye.Class({MAX_DELAY:0.0,batching:true,initialize:function(a,b){this._8=a;this.endpoint=b;this._c=[]},close:function(){},send:function(a,b){this.debug('Client ? sending message to ?: ?',this._8._0,this.endpoint,a);if(!this.batching)return this.request([a],b);this._c.push(a);this._I=b;if(a.channel===Faye.Channel.HANDSHAKE)return this.addTimeout('publish',0.01,this.flush,this);if(a.channel===Faye.Channel.CONNECT)this._r=a;if(this.shouldFlush&&this.shouldFlush(this._c))return this.flush();this.addTimeout('publish',this.MAX_DELAY,this.flush,this)},flush:function(){this.removeTimeout('publish');if(this._c.length>1&&this._r)this._r.advice={timeout:0};this.request(this._c,this._I);this._r=null;this._c=[]},receive:function(a){this.debug('Client ? received from ?: ?',this._8._0,this.endpoint,a);for(var b=0,d=a.length;b<d;b++){this._8.receiveMessage(a[b])}},retry:function(a,b){var d=false,f=this._8.retry*1000,g=this;return function(){if(d)return;d=true;Faye.ENV.setTimeout(function(){g.request(a,b)},f)}}}),{MAX_URL_LENGTH:2048,get:function(k,j,m,n,o){var l=k.endpoint;Faye.asyncEach(this._B,function(d,f){var g=d[0],h=d[1],i=k.endpoints[g]||l;if(Faye.indexOf(m,g)>=0)return f();if(Faye.indexOf(j,g)<0){h.isUsable(k,i,function(){});return f()}h.isUsable(k,i,function(a){if(!a)return f();var b=h.hasOwnProperty('create')?h.create(k,i):new h(k,i);n.call(o,b)})},function(){throw new Error('Could not find a usable connection type for '+l);})},register:function(a,b){this._B.push([a,b]);b.prototype.connectionType=a},_B:[]});Faye.extend(Faye.Transport.prototype,Faye.Logging);Faye.extend(Faye.Transport.prototype,Faye.Publisher);Faye.extend(Faye.Transport.prototype,Faye.Timeouts);Faye.Event={_h:[],on:function(a,b,d,f){var g=function(){d.call(f)};if(a.addEventListener)a.addEventListener(b,g,false);else a.attachEvent('on'+b,g);this._h.push({_i:a,_s:b,_m:d,_n:f,_C:g})},detach:function(a,b,d,f){var g=this._h.length,h;while(g--){h=this._h[g];if((a&&a!==h._i)||(b&&b!==h._s)||(d&&d!==h._m)||(f&&f!==h._n))continue;if(h._i.removeEventListener)h._i.removeEventListener(h._s,h._C,false);else h._i.detachEvent('on'+h._s,h._C);this._h.splice(g,1);h=null}}};Faye.Event.on(Faye.ENV,'unload',Faye.Event.detach,Faye.Event);Faye.URI=Faye.extend(Faye.Class({queryString:function(){var a=[];for(var b in this.params){if(!this.params.hasOwnProperty(b))continue;a.push(encodeURIComponent(b)+'='+encodeURIComponent(this.params[b]))}return a.join('&')},isSameOrigin:function(){var a=Faye.URI.parse(Faye.ENV.location.href,false);var b=(a.hostname!==this.hostname)||(a.port!==this.port)||(a.protocol!==this.protocol);return!b},toURL:function(){var a=this.queryString();return this.protocol+'//'+this.hostname+(this.port?':'+this.port:'')+this.pathname+(a?'?'+a:'')+this.hash}}),{parse:function(g,h){if(typeof g!=='string')return g;var i=new this(),k;var j=function(b,d,f){g=g.replace(d,function(a){i[b]=a;return''});if(i[b]===undefined)i[b]=f?Faye.ENV.location[b]:''};j('protocol',/^https?\:/,true);j('host',/^\/\/[^\/]+/,true);if(!/^\//.test(g))g=Faye.ENV.location.pathname.replace(/[^\/]*$/,'')+g;j('pathname',/^\/[^\?#]*/);j('search',/^\?[^#]*/);j('hash',/^#.*/);if(/^\/\//.test(i.host)){i.host=i.host.substr(2);k=i.host.split(':');i.hostname=k[0];i.port=k[1]||''}else{i.hostname=Faye.ENV.location.hostname;i.port=Faye.ENV.location.port}if(h===false){i.params={}}else{var m=i.search.replace(/^\?/,''),n=m?m.split('&'):[],o=n.length,l={};while(o--){k=n[o].split('=');l[decodeURIComponent(k[0]||'')]=decodeURIComponent(k[1]||'')}if(typeof h==='object')Faye.extend(l,h);i.params=l}return i}});if(!this.JSON){JSON={}}(function(){function m(a){return a<10?'0'+a:a}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(a){return this.getUTCFullYear()+'-'+m(this.getUTCMonth()+1)+'-'+m(this.getUTCDate())+'T'+m(this.getUTCHours())+':'+m(this.getUTCMinutes())+':'+m(this.getUTCSeconds())+'Z'};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()}}var n=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,l,q,t={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},p;function s(d){o.lastIndex=0;return o.test(d)?'"'+d.replace(o,function(a){var b=t[a];return typeof b==='string'?b:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+d+'"'}function r(a,b){var d,f,g,h,i=l,k,j=b[a];if(j&&typeof j==='object'&&typeof j.toJSON==='function'){j=j.toJSON(a)}if(typeof p==='function'){j=p.call(b,a,j)}switch(typeof j){case'string':return s(j);case'number':return isFinite(j)?String(j):'null';case'boolean':case'null':return String(j);case'object':if(!j){return'null'}l+=q;k=[];if(Object.prototype.toString.apply(j)==='[object Array]'){h=j.length;for(d=0;d<h;d+=1){k[d]=r(d,j)||'null'}g=k.length===0?'[]':l?'[\n'+l+k.join(',\n'+l)+'\n'+i+']':'['+k.join(',')+']';l=i;return g}if(p&&typeof p==='object'){h=p.length;for(d=0;d<h;d+=1){f=p[d];if(typeof f==='string'){g=r(f,j);if(g){k.push(s(f)+(l?': ':':')+g)}}}}else{for(f in j){if(Object.hasOwnProperty.call(j,f)){g=r(f,j);if(g){k.push(s(f)+(l?': ':':')+g)}}}}g=k.length===0?'{}':l?'{\n'+l+k.join(',\n'+l)+'\n'+i+'}':'{'+k.join(',')+'}';l=i;return g}}Faye.stringify=function(a,b,d){var f;l='';q='';if(typeof d==='number'){for(f=0;f<d;f+=1){q+=' '}}else if(typeof d==='string'){q=d}p=b;if(b&&typeof b!=='function'&&(typeof b!=='object'||typeof b.length!=='number')){throw new Error('JSON.stringify');}return r('',{'':a})};if(typeof JSON.stringify!=='function'){JSON.stringify=Faye.stringify}if(typeof JSON.parse!=='function'){JSON.parse=function(h,i){var k;function j(a,b){var d,f,g=a[b];if(g&&typeof g==='object'){for(d in g){if(Object.hasOwnProperty.call(g,d)){f=j(g,d);if(f!==undefined){g[d]=f}else{delete g[d]}}}}return i.call(a,b,g)}n.lastIndex=0;if(n.test(h)){h=h.replace(n,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(h.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){k=eval('('+h+')');return typeof i==='function'?j({'':k},''):k}throw new SyntaxError('JSON.parse');}}}());Faye.Transport.WebSocket=Faye.extend(Faye.Class(Faye.Transport,{UNCONNECTED:1,CONNECTING:2,CONNECTED:3,batching:false,isUsable:function(a,b){this.callback(function(){a.call(b,true)});this.errback(function(){a.call(b,false)});this.connect()},request:function(b,d){if(b.length===0)return;this._d=this._d||{};for(var f=0,g=b.length;f<g;f++){this._d[b[f].id]=b[f]}this.callback(function(a){a.send(Faye.toJSON(b))});this.connect()},close:function(){if(!this._3)return;this._3.onclose=this._3.onerror=null;this._3.close();delete this._3;this.setDeferredStatus('deferred');this._1=this.UNCONNECTED},connect:function(){if(Faye.Transport.WebSocket._J)return;this._1=this._1||this.UNCONNECTED;if(this._1!==this.UNCONNECTED)return;this._1=this.CONNECTING;var g=Faye.Transport.WebSocket.getClass();if(!g)return this.setDeferredStatus('failed');this._3=new g(Faye.Transport.WebSocket.getSocketUrl(this.endpoint));var h=this;this._3.onopen=function(){h._1=h.CONNECTED;h._t=true;h.setDeferredStatus('succeeded',h._3);h.trigger('up')};this._3.onmessage=function(a){var b=JSON.parse(a.data);if(!b)return;b=[].concat(b);for(var d=0,f=b.length;d<f;d++){delete h._d[b[d].id]}h.receive(b)};this._3.onclose=this._3.onerror=function(){var a=(h._1===h.CONNECTED);h.setDeferredStatus('deferred');h._1=h.UNCONNECTED;h.close();if(a)return h.resend();if(!h._t)return h.setDeferredStatus('failed');var b=h._8.retry*1000;Faye.ENV.setTimeout(function(){h.connect()},b);h.trigger('down')}},resend:function(){if(!this._d)return;var d=Faye.map(this._d,function(a,b){return b});this.request(d)}}),{getSocketUrl:function(a){if(Faye.URI)a=Faye.URI.parse(a).toURL();return a.replace(/^http(s?):/ig,'ws$1:')},getClass:function(){return(Faye.WebSocket&&Faye.WebSocket.Client)||Faye.ENV.WebSocket||Faye.ENV.MozWebSocket},isUsable:function(a,b,d,f){this.create(a,b).isUsable(d,f)},create:function(a,b){var d=a.transports.websocket=a.transports.websocket||{};d[b]=d[b]||new this(a,b);return d[b]}});Faye.extend(Faye.Transport.WebSocket.prototype,Faye.Deferrable);Faye.Transport.register('websocket',Faye.Transport.WebSocket);if(Faye.Event)Faye.Event.on(Faye.ENV,'beforeunload',function(){Faye.Transport.WebSocket._J=true});Faye.Transport.EventSource=Faye.extend(Faye.Class(Faye.Transport,{initialize:function(b,d){Faye.Transport.prototype.initialize.call(this,b,d);if(!Faye.ENV.EventSource)return this.setDeferredStatus('failed');this._K=new Faye.Transport.XHR(b,d);var f=new EventSource(d+'/'+b.getClientId()),g=this;f.onopen=function(){g._t=true;g.setDeferredStatus('succeeded');g.trigger('up')};f.onerror=function(){if(g._t){g.trigger('down')}else{g.setDeferredStatus('failed');f.close()}};f.onmessage=function(a){g.receive(JSON.parse(a.data));g.trigger('up')};this._3=f},isUsable:function(a,b){this.callback(function(){a.call(b,true)});this.errback(function(){a.call(b,false)})},request:function(a,b){this._K.request(a,b)},close:function(){if(!this._3)return;this._3.onerror=null;this._3.close();delete this._3}}),{isUsable:function(b,d,f,g){var h=b.getClientId();if(!h)return f.call(g,false);Faye.Transport.XHR.isUsable(b,d,function(a){if(!a)return f.call(g,false);this.create(b,d).isUsable(f,g)},this)},create:function(a,b){var d=a.transports.eventsource=a.transports.eventsource||{},f=a.getClientId(),b=b+'/'+(f||'');d[b]=d[b]||new this(a,b);return d[b]}});Faye.extend(Faye.Transport.EventSource.prototype,Faye.Deferrable);Faye.Transport.register('eventsource',Faye.Transport.EventSource);Faye.Transport.XHR=Faye.extend(Faye.Class(Faye.Transport,{request:function(f,g){var h=this.retry(f,g),i=Faye.URI.parse(this.endpoint).pathname,k=this,j=Faye.ENV.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();j.open('POST',i,true);j.setRequestHeader('Content-Type','application/json');j.setRequestHeader('Pragma','no-cache');j.setRequestHeader('X-Requested-With','XMLHttpRequest');var m=this.headers;for(var n in m){if(!m.hasOwnProperty(n))continue;j.setRequestHeader(n,m[n])}var o=function(){j.abort()};Faye.Event.on(Faye.ENV,'beforeunload',o);var l=function(){Faye.Event.detach(Faye.ENV,'beforeunload',o);j.onreadystatechange=function(){};j=null};j.onreadystatechange=function(){if(j.readyState!==4)return;var a=null,b=j.status,d=((b>=200&&b<300)||b===304||b===1223);if(!d){l();h();return k.trigger('down')}try{a=JSON.parse(j.responseText)}catch(e){}l();if(a){k.receive(a);k.trigger('up')}else{h();k.trigger('down')}};j.send(Faye.toJSON(f))}}),{isUsable:function(a,b,d,f){d.call(f,Faye.URI.parse(b).isSameOrigin())}});Faye.Transport.register('long-polling',Faye.Transport.XHR);Faye.Transport.CORS=Faye.extend(Faye.Class(Faye.Transport,{request:function(b,d){var f=Faye.ENV.XDomainRequest?XDomainRequest:XMLHttpRequest,g=new f(),h=this.retry(b,d),i=this;g.open('POST',this.endpoint,true);if(g.setRequestHeader)g.setRequestHeader('Pragma','no-cache');var k=function(){if(!g)return false;g.onload=g.onerror=g.ontimeout=g.onprogress=null;g=null;Faye.ENV.clearTimeout(m);return true};g.onload=function(){var a=null;try{a=JSON.parse(g.responseText)}catch(e){}k();if(a){i.receive(a);i.trigger('up')}else{h();i.trigger('down')}};var j=function(){k();h();i.trigger('down')};var m=Faye.ENV.setTimeout(j,1.5*1000*d);g.onerror=j;g.ontimeout=j;g.onprogress=function(){};g.send('message='+encodeURIComponent(Faye.toJSON(b)))}}),{isUsable:function(a,b,d,f){if(Faye.URI.parse(b).isSameOrigin())return d.call(f,false);if(Faye.ENV.XDomainRequest)return d.call(f,Faye.URI.parse(b).protocol===Faye.URI.parse(Faye.ENV.location).protocol);if(Faye.ENV.XMLHttpRequest){var g=new Faye.ENV.XMLHttpRequest();return d.call(f,g.withCredentials!==undefined)}return d.call(f,false)}});Faye.Transport.register('cross-origin-long-polling',Faye.Transport.CORS);Faye.Transport.JSONP=Faye.extend(Faye.Class(Faye.Transport,{shouldFlush:function(a){var b={message:Faye.toJSON(a),jsonp:'__jsonp'+Faye.Transport.JSONP._u+'__'};var d=Faye.URI.parse(this.endpoint,b).toURL();return d.length>=Faye.Transport.MAX_URL_LENGTH},request:function(b,d){var f={message:Faye.toJSON(b)},g=document.getElementsByTagName('head')[0],h=document.createElement('script'),i=Faye.Transport.JSONP.getCallbackName(),k=Faye.URI.parse(this.endpoint,f),j=this.retry(b,d),m=this;Faye.ENV[i]=function(a){o();m.receive(a);m.trigger('up')};var n=Faye.ENV.setTimeout(function(){o();j();m.trigger('down')},1.5*1000*d);var o=function(){if(!Faye.ENV[i])return false;Faye.ENV[i]=undefined;try{delete Faye.ENV[i]}catch(e){}Faye.ENV.clearTimeout(n);h.parentNode.removeChild(h);return true};k.params.jsonp=i;h.type='text/javascript';h.src=k.toURL();g.appendChild(h)}}),{_u:0,getCallbackName:function(){this._u+=1;return'__jsonp'+this._u+'__'},isUsable:function(a,b,d,f){d.call(f,true)}});Faye.Transport.register('callback-polling',Faye.Transport.JSONP);
|
2
2
|
//@ sourceMappingURL=faye-browser-min.js.map
|
data/lib/faye-browser-min.js.map
CHANGED
@@ -3,6 +3,6 @@
|
|
3
3
|
"file": "faye-browser-min.js",
|
4
4
|
"sourceRoot": "",
|
5
5
|
"sources": ["faye-browser.js"],
|
6
|
-
"names": ["_advice", "_callback", "_callbacks", "_cancelled", "_cbCount", "_channels", "_client", "_clientId", "
|
7
|
-
"mappings": "AAAA,IAAI,MAAQ,OAAO,QAAU,SAAW,QACxC,GAAI,OAAO,UAAY,WAAY,OAAO,KAAO,KAEjD,KAAK,OAAS,SAASiF,EAAM8F,EAAQ/B,GACnC,IAAK+B,EAAQ,OAAO9F,EACpB,IAAK,IAAI8B,EAAI,GAAGgE,GACd,IAAKA,EAAO,eAAehE,GAAM,SACjC,GAAI9B,EAAK,eAAe8B,IAAQiC,IAAc,MAAO,SACrD,GAAI/D,EAAK8B,KAASgE,EAAOhE,GACvB9B,EAAK8B,GAAOgE,EAAOhE,GAEvB,OAAO9B,GAGT,KAAK,OAAO,MACV,gBAEA,qBACA,cACA,gBAAmB,eACnB,mBAAoB,KAAK,UAAW,MAAM,OAAO,KAAK,UAAW,SAAS,UAAW,YAAa,cAAe,GAAG,UAEpH,6BAA8B,KAAK,UAAW,SAAS,UAAW,GAAG,UAErE,KAAM,WAAa,OAAO,SAE1B,OAAQ,SAAS3B,GACfA,EAAYA,GAAa,KAAK,UAC9B,GAAIA,MACF,IAAIkG,EAAS,KAAK,KAAKlG,MACnB8H,KACJ,MAAO5B,IAAS4B,GAAU,KAAK,WAC/B,IAAIpH,EAAQoH,EAAO,UAAWhB,KAC9B,MAAOpG,EAAM,SAAYoG,GAAUpG,EAAM,MACzC,OAAOoG,EAET,IAAI/C,EAAU,KAAK,MAAO/D,KACtByE,EAAUV,EAAM,aAAa,OAC7B+D,EAAU,KAAK,MAAM,KAAK,SAAW/D,GAAO,aAEhD,MAAO+D,EAAO,OAASrD,EAASqD,MAAeA,EAC/C,OAAOA,GAGT,qBAAsB,SAASlD,GAC7B,IAAIrC,KAAW,OAAOqC,MACtB,OAAOrC,GAASA,EAAM,UAGxB,WAAY,SAASgD,GACnB,IAAI1E,EAAOmC,EAAGS,EACd,GAAI8B,EAAO,WAAW,OACpB1E,KACAmC,EAAIuC,EAAO,OACX,MAAOvC,IAAKnC,EAAMmC,GAAK,KAAK,WAAWuC,EAAOvC,IAC9C,OAAOnC,EACP,KAAK,GAAI,OAAO0E,KAAY,SAC5B1E,GAAS0E,IAAW,MAAQ,QAC5B,IAAK9B,EAAI,GAAG8B,EAAQ1E,EAAM4C,GAAO,KAAK,WAAW8B,EAAO9B,IACxD,OAAO5C,EACP,KACA,OAAO0E,IAIX,cAAe,SAAStB,EAAOC,GAC7B,IAAK,IAAIlB,IAAOmC,EAAIlB,EAAM,OAAQjB,EAAImC,EAAGnC,KACvC,GAAI,KAAK,QAAQkB,EAAOD,EAAMjB,SAC5B,OAAOiB,EAAMjB,GAEjB,OAAO,MAGT,QAAS,SAASgB,EAAMsB,GACtB,GAAItB,EAAK,QAAS,OAAOA,EAAK,QAAQsB,GAEtC,IAAK,IAAItC,IAAOmC,EAAInB,EAAK,OAAQhB,EAAImC,EAAGnC,KACtC,GAAIgB,EAAKhB,KAAOsC,EAAQ,OAAOtC,EAEjC,UAGF,IAAK,SAASuC,EAAQpF,EAAUgB,GAC9B,GAAIoE,EAAO,IAAK,OAAOA,EAAO,IAAIpF,EAAUgB,GAC5C,IAAI2F,KAEJ,GAAIvB,EAAO,WAAW,OACpB,IAAK,IAAIvC,IAAOmC,EAAII,EAAO,OAAQvC,EAAImC,EAAGnC,KACxC8D,EAAO,KAAK3G,EAAS,KAAKgB,GAAW,KAAMoE,EAAOvC,GAAIA,KAExD,KACA,IAAK,IAAIS,EAAI,GAAG8B,GACd,IAAKA,EAAO,eAAe9B,GAAM,SACjCqD,EAAO,KAAK3G,EAAS,KAAKgB,GAAW,KAAMsC,EAAK8B,EAAO9B,MAG3D,OAAOqD,GAGT,OAAQ,SAAShH,EAAOK,EAAUgB,GAChC,IAAI2F,KACJ,IAAK,IAAI9D,IAAOmC,EAAIrF,EAAM,OAAQkD,EAAImC,EAAGnC,KACvC,GAAI7C,EAAS,KAAKgB,GAAW,KAAMrB,EAAMkD,GAAIA,GAC3C8D,EAAO,KAAKhH,EAAMkD,IAEtB,OAAO8D,GAGT,UAAW,SAAS9C,EAAMV,EAAUnD,EAAUgB,GAC5C,IAAIgE,EAAUnB,EAAK,OACfhB,KACAzC,IACAgE,EAAU,MAEd,IAAIlB,EAAU,WACZ9C,KACAyC,KACA,GAAIA,IAAMmC,EAAG,OAAOhF,GAAYA,EAAS,KAAKgB,GAC9CmC,EAASU,EAAKhB,GAAI+D,IAGpB,IAAIzC,EAAO,WACT,GAAIC,EAAS,OACbA,EAAU,KACV,MAAOhE,IAAW8C,IAClBkB,EAAU,OAGZ,IAAIwC,EAAS,WACXxG,KACA+D,KAEFyC,KAIF,OAAQ,SAASxB,GACf,GAAI,KAAK,UACP,OAAO,KAAK,UAAUA,EAAQ,SAAS,IAAK,OAC1C,OAAQ,KAAK,IAAK,WAAW,OACvB,KAAK,KACL,QAGV,OAAO,KAAK,UAAUA,IAGxB,OAAQ,SAASb,GACf,GAAI,OAAO,WAAa,WAAY,QAAQ,IAAIA,IAGlD,UAAW,WACT,IAAInD,EAAS,IAAI,OACb2H,EAAS3H,EAAK,cACd0D,EAAS1D,EAAK,aACdC,EAASD,EAAK,UACdwB,EAASxB,EAAK,WACdyD,EAASzD,EAAK,aACd4F,EAAS5F,EAAK,aAElB,IAAIoE,EAAM,SAASR,GACjB,OAAOA,SAAeA,EAAI,OAAOA,IAGnC,OAAOQ,EAAIuD,OAAcvD,EAAIV,OAAeU,EAAInE,OACzCmE,EAAI5C,OAAc4C,EAAIX,OAAgBW,EAAIwB,MAKrD,KAAK,MAAQ,SAASpB,EAAQjB,GAC5B,GAAI,OAAOiB,KAAY,WACrBjB,EAAUiB,EACVA,EAAU,OAGZ,IAAIpC,EAAQ,WACV,IAAK,KAAK,WAAY,OAAO,KAC7B,OAAO,KAAK,WAAW,MAAM,KAAM,YAAc,MAGnD,IAAI1D,EAAS,aACbA,EAAO,UAAY8F,EAAO,UAE1BpC,EAAM,UAAY,IAAI1D,IACtB,KAAK,OAAO0D,EAAM,UAAWmB,GAE7B,OAAOnB,GAIT,KAAK,UAAY,KAAK,OACpB,WAAY,WACV,KAAKlE,OAGP,OAAQ,SAASwD,GACf,OAAO,KAAKxD,GAAM,eAAewD,IAGnC,SAAU,WACR,IAAImC,EAAO,KAAK,SAChB,MAAO,KAAK3F,GAAM,eAAe2F,GAC/BA,EAAO,KAAK,SACd,OAAO,KAAK3F,GAAM2F,GAAQA,GAG5B,QAAS,SAASnC,GAChB,OAAO,KAAKxD,GAAMwD,MAKtB,KAAK,MAAQ,KAAK,OAChB,WAAY,SAASnC,EAAMgF,EAAQpB,GACjC,KAAK,KAAU5D,EACf,KAAK,OAAU,MAAM,UAAU,MAAM,KAAKgF,GAC1C,KAAK,QAAUpB,GAGjB,SAAU,WACR,OAAO,KAAK,SACL,KAAK,OAAO,cACZ,KAAK,WAIhB,KAAK,MAAM,MAAQ,SAASA,GAC1BA,EAAUA,MACV,IAAK,KAAK,QAAQ,MAAM,KAAKA,GAAU,OAAO,IAAI,KAAK,QAAUA,GAEjE,IAAIwB,EAAUxB,EAAQ,WAClB5D,EAAU,SAASoF,MACnBJ,EAAUI,KAAS,WACnBxB,EAAUwB,KAEd,OAAO,IAAI,KAAKpF,EAAMgF,EAAQpB,IAGhC,KAAK,MAAM,gBAAkB,WAC3B,OAAO,IAAI,SAAU,WAAY,QAAQ,WAAW,YAEtD,KAAK,MAAM,iBAAmB,WAC5B,OAAO,IAAI,SAAU,WAAY,WAAW,MAAM,IAAI,YAAY,YAEpE,KAAK,MAAM,YAAc,WACvB,OAAO,IAAI,SAAU,WAAY,UAAU,WAAW,YAExD,KAAK,MAAM,WAAa,WACtB,OAAO,IAAI,SAAU,WAAY,IAAI,UAAU,YAEjD,KAAK,MAAM,cAAgB,WACzB,OAAO,IAAI,SAAU,WAAY,QAAQ,SAAS,YAEpD,KAAK,MAAM,iBAAmB,WAC5B,OAAO,IAAI,SAAU,WAAY,QAAQ,SAAS,YAAY,YAEhE,KAAK,MAAM,iBAAmB,WAC5B,OAAO,IAAI,SAAU,WAAY,UAAU,UAAU,YAEvD,KAAK,MAAM,eAAiB,WAC1B,OAAO,IAAI,SAAU,WAAY,QAAQ,UAAU,YAErD,KAAK,MAAM,eAAiB,WAC1B,OAAO,IAAI,SAAU,WAAY,QAAQ,UAAU,YAErD,KAAK,MAAM,WAAa,WACtB,OAAO,IAAI,SAAU,WAAY,QAAQ,YAAY,YAEvD,KAAK,MAAM,cAAgB,WACzB,OAAO,IAAI,SAAU,WAAY,OAAO,GAAG,UAAU,YAEvD,KAAK,MAAM,YAAc,WACvB,OAAO,IAAI,SAAU,WAAY,SAAS,OAAO,QAAQ,YAI3D,KAAK,YACH,SAAU,SAASvE,EAAUgB,GAC3B,IAAKhB,EAAU,OAEf,GAAI,KAAK1C,MAAqB,WAC5B,OAAO0C,EAAS,MAAMgB,EAAS,KAAK3D,IAEtC,KAAKZ,GAAa,KAAKA,OACvB,KAAKA,GAAW,MAAMuD,EAAUgB,KAGlC,QAAS,SAASiG,EAAS1C,GACzB,IAAI1F,EAAQ,KACZ,IAAImJ,EAAQ,KAAK,IAAI,WAAW,WAC9BnJ,EAAM,mBAAmB,QAAS0F,IACjC0C,QACH,KAAKjI,GAASgJ,GAGhB,QAAS,SAAShI,EAAUgB,GAC1B,IAAKhB,EAAU,OAEf,GAAI,KAAK1C,MAAqB,QAC5B,OAAO0C,EAAS,MAAMgB,EAAS,KAAK3D,IAEtC,KAAKK,GAAY,KAAKA,OACtB,KAAKA,GAAU,MAAMsC,EAAUgB,KAGjC,kBAAmB,WACjB,GAAI,KAAKhC,GACP,KAAK,IAAI,aAAa,KAAKA,IAE7B,IAAIU,EAAS,MAAM,UAAU,MAAM,KAAK,WACpC+H,EAAS/H,EAAK,QACdQ,EAEJ,KAAK5C,GAAkBmK,EACvB,KAAKpK,GAAgBqC,EAErB,GAAI+H,KAAY,WACdvH,EAAY,KAAKzD,GACnB,KAAK,GAAIgL,KAAY,QACnBvH,EAAY,KAAKxC,GAEnB,IAAKwC,EAAW,OAEhB,IAAIF,EACJ,MAAOA,EAAWE,EAAU,QAC1BF,KAAY,MAAMA,KAAa,KAAK3C,MAK1C,KAAK,WACH,eAAgB,SAASyE,GACvB,IAAK,KAAKnD,KAAiB,KAAKA,GAAamD,GAAY,SACzD,OAAO,KAAKnD,GAAamD,GAAW,QAGtC,KAAM,SAASA,EAAWkC,EAAUhD,GAClC,KAAKrC,GAAe,KAAKA,OACzB,IAAIkF,EAAO,KAAKlF,GAAamD,GAAa,KAAKnD,GAAamD,OAC5D+B,EAAK,MAAMG,EAAUhD,KAGvB,OAAQ,SAASc,EAAWkC,EAAUhD,GACpC,IAAK,KAAKrC,KAAiB,KAAKA,GAAamD,GAAY,OAEzD,IAAKkC,GACH,OAAO,KAAKrF,GAAamD,GACzB,OAEF,IAAI+B,EAAO,KAAKlF,GAAamD,GACzBe,EAAOgB,EAAK,OAEhB,MAAOhB,KACL,GAAImB,IAAaH,EAAKhB,MAAO,SAC7B,GAAI7B,GAAW6C,EAAKhB,QAAU7B,EAAS,SACvC6C,EAAK,OAAOhB,OAIhB,QAAS,WACP,IAAInD,EAAO,MAAM,UAAU,MAAM,KAAK,WAClCoC,EAAYpC,EAAK,QAErB,IAAK,KAAKf,KAAiB,KAAKA,GAAamD,GAAY,OAEzD,IAAImC,EAAY,KAAKtF,GAAamD,GAAW,QACzCkC,EAEJ,IAAK,IAAInB,IAAOmC,EAAIf,EAAU,OAAQpB,EAAImC,EAAGnC,KAC3CmB,EAAWC,EAAUpB,GACrBmB,KAAY,MAAMA,KAAatE,MAMrC,KAAK,UACH,WAAY,SAASuF,EAAM1D,EAAOvB,EAAUgB,GAC1C,KAAKjC,GAAY,KAAKA,OACtB,GAAI,KAAKA,GAAU,eAAekG,GAAO,OACzC,IAAIkC,EAAO,KACX,KAAKpI,GAAUkG,GAAQ,KAAK,IAAI,WAAW,WACzC,OAAOkC,EAAKpI,GAAUkG,GACtBjF,EAAS,KAAKgB,SACNO,IAGZ,cAAe,SAAS0D,GACtB,KAAKlG,GAAY,KAAKA,OACtB,IAAIgJ,EAAU,KAAKhJ,GAAUkG,GAC7B,IAAK8C,EAAS,OACd,aAAaA,GACb,OAAO,KAAKhJ,GAAUkG,KAK1B,KAAK,SACH,YACE,QACA,OACA,OACA,SAGF,UAAW,OAEX,IAAK,SAAST,EAAad,GACzB,IAAK,KAAK,OAAQ,OAElB,IAAIC,EAAS,KAAK,QAAQ,WAC1B,GAAIA,EAAO,KAAK,QAAQ,UAAYA,EAAOD,GAAQ,OAEnD,IAAIc,EAAc,MAAM,UAAU,MAAM,MAAMA,GAC1C5E,OAAgB8D,EAAM,kBAAoB,MAC1CF,EAAS,KAAK,UAEde,EAAUC,EAAY,QAAQ,YAAY,EAAG,WAC3C,IACE,OAAO,KAAK,OAAOA,EAAY,SAC/B,MAAO,GACP,QAAS,YAIjB,IAAK,IAAIlB,EAAI,GAAG,MACd,GAAIE,EAAO,SACX,GAAI,OAAO,KAAKF,MAAU,UAAW,SACrC,GAAI,KAAK,WAAW,KAAKA,GAAME,EAAQF,EAEzC,GAAIE,EAAO5D,OAAgB4D,EAC3B5D,QAEA,KAAK,OAAO,KAAK,YAAcA,EAAS2E,MAI3C,WACC,IAAK,IAAIjB,EAAI,GAAG,KAAK,QAAQ,YAC1B,SAASI,EAAO8E,GACf,KAAK,QAAQ9E,GAAS,WACpB,KAAK,IAAI,UAAWA,MAErBJ,EAAK,KAAK,QAAQ,WAAWA,QAIpC,KAAK,SACH,YAAiB,EAAE,EAAE,GACrB,WAAgB,EAAE,EAAE,GACpB,UAAe,EAAE,IAAI,EAAE,GAAG,GAC1B,aAAkB,GAClB,cAAmB,EAAE,IAAI,EAAE,UAAU,GACrC,YAAiB,eAAe,KAAK,GACrC,cAAmB,EAAE,IAAI,EAAE,gBAAgB,eAAe,mBAAmB,GAC7E,aAAkB,EAAE,IAAI,EAAE,gBAAgB,eAAe,QAAQ,GACjE,kBAAuB,GACvB,uBAA4B,EAAE,IAAI,EAAE,gBAAgB,eAAe,QAAQ,GAC3E,wBAA6B,EAAE,IAAI,EAAE,gBAAgB,eAAe,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,eAAe,UAAU,GACrI,sBAA2B,EAAE,IAAI,EAAE,gBAAgB,eAAe,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,eAAe,UAAU,GACnI,mBAAwB,GACxB,0BAA+B,EAAE,IAAI,EAAE,gBAAgB,eAAe,mBAAmB,GACzF,qBAA0B,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,GAC5E,wBAA6B,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,MAAM,GACjF,gBAAqB,EAAE,IAAI,EAAE,YAAY,GACzC,SAAc,EAAE,IAAI,EAAE,YAAY,GAClC,qBAA0B,EAAE,IAAI,EAAE,gBAAgB,eAAe,mBAAmB,GACpF,kBAAuB,EAAE,IAAI,EAAE,gBAAgB,eAAe,0BAA0B,EAAE,IAAI,EAAE,gBAAgB,eAAe,qBAAqB,GACpJ,4BAAiC,GACjC,8BAAmC,EAAE,IAAI,EAAE,gBAAgB,eAAe,0BAA0B,EAAE,IAAI,EAAE,gBAAgB,eAAe,2BAA2B,EAAE,IAAI,EAAE,gBAAgB,eAAe,0CAA0C,EAAE,IAAI,EAAE,gBAAgB,eAAe,oBAAoB,IAIpT,KAAK,YACH,aAAc,SAASvB,GACrB,KAAKnE,GAAc,KAAKA,OACxB,KAAKA,GAAY,KAAKmE,GACtB,GAAIA,EAAU,MAAOA,EAAU,MAAM,OAGvC,gBAAiB,SAASA,GACxB,IAAK,KAAKnE,GAAa,OACvB,IAAIiF,EAAI,KAAKjF,GAAY,OACzB,MAAOiF,KACL,GAAI,KAAKjF,GAAYiF,KAAOd,EAAW,SACvC,KAAKnE,GAAY,OAAOiF,KACxB,GAAId,EAAU,QAASA,EAAU,QAAQ,QAI7C,sBAAuB,SAASyF,EAAOjD,EAASvE,EAAUgB,GACxD,KAAK,OAAO,QAAQ,UAAU,eAAgBwG,EAAOjD,GAErD,IAAK,KAAK3G,GAAa,OAAOoC,EAAS,KAAKgB,EAASuD,GACrD,IAAIvC,EAAa,KAAKpE,GAAY,QAElC,IAAIsI,EAAO,SAAS3B,GAClB,IAAKA,EAAS,OAAOvE,EAAS,KAAKgB,EAASuD,GAE5C,IAAIxC,EAAYC,EAAW,QAC3B,IAAKD,EAAW,OAAO/B,EAAS,KAAKgB,EAASuD,GAE9C,GAAIxC,EAAUyF,GAAQzF,EAAUyF,GAAOjD,EAAS2B,GAChD,KAAKA,EAAK3B,IAEZ2B,EAAK3B,KAIT,KAAK,OAAO,KAAK,WAAY,KAAK,SAElC,KAAK,QAAU,KAAK,OAClB,WAAY,SAASU,GACnB,KAAK,GAAK,KAAK,KAAOA,GAGxB,KAAM,SAASV,GACb,KAAK,SAAS,SAAUA,IAG1B,SAAU,WACR,OAAO,KAAK,gBAAgB,iBAIhC,KAAK,OAAO,KAAK,QAAQ,UAAW,KAAK,WAEzC,KAAK,OAAO,KAAK,SACf,YAAgB,KAAK,WACrB,UAAgB,KAAK,SACrB,YAAgB,KAAK,WACrB,cAAgB,KAAK,aACrB,aAAgB,KAAK,YAErB,MAAe,MACf,SAAe,SAEf,OAAQ,SAASU,GACf,IAAIiC,EAAW,KAAK,MAAMjC,GACtB3E,SAAmB2E,GAEvB,IAAIhE,EAAOiG,EAAS,QACpBjG,EAAKA,EAAK,cACVX,EAAS,KAAK,KAAK,QAAQW,IAE3B,IAAK,IAAI4B,IAAOmC,EAAIkC,EAAS,OAAQrE,EAAImC,EAAGnC,KAC1C5B,EAAOiG,EAAS,QAASrE,GACzB5B,EAAK,WACLX,EAAS,KAAK,KAAK,QAAQW,IAG7B,OAAOX,GAGT,QAAS,SAAS2E,GAChB,OAAO,KAAK,QAAQ,aAAa,KAAKA,IAC/B,KAAK,QAAQ,gBAAgB,KAAKA,IAG3C,MAAO,SAASA,GACd,IAAK,KAAK,QAAQA,GAAO,OAAO,KAChC,OAAOA,EAAK,WAAW,UAGzB,QAAS,SAASiC,GAChB,UAAaA,EAAS,WAGxB,OAAQ,SAASjC,GACf,IAAIiC,EAAW,KAAK,MAAMjC,GAC1B,OAAOiC,GAAYA,OAAgB,KAAK,MAAQ,MAGlD,UAAW,SAASjC,GAClB,IAAIiC,EAAW,KAAK,MAAMjC,GAC1B,OAAOiC,GAAYA,OAAgB,KAAK,SAAW,MAGrD,eAAgB,SAASjC,GACvB,IAAK,KAAK,QAAQA,GAAO,OAAO,KAChC,OAAQ,KAAK,OAAOA,KAAU,KAAK,UAAUA,IAG/C,IAAK,KAAK,OACR,WAAY,WACV,KAAKrI,OAGP,QAAS,WACP,IAAI2G,KACJ,IAAK,IAAID,EAAI,GAAG,KAAK1G,GAAW2G,EAAK,KAAKD,GAC1C,OAAOC,GAGT,OAAQ,SAAS0B,GACf,OAAO,KAAKrI,GAAUqI,IAGxB,gBAAiB,SAASA,GACxB,OAAO,KAAKrI,GAAU,eAAeqI,IAGvC,UAAW,SAASC,EAAOlF,EAAUgB,GACnC,IAAKhB,EAAU,OACf,IAAIiF,EACJ,IAAK,IAAIpC,IAAOmC,EAAIE,EAAM,OAAQrC,EAAImC,EAAGnC,KACvCoC,EAAOC,EAAMrC,GACb,IAAIxC,EAAU,KAAKzD,GAAUqI,GAAQ,KAAKrI,GAAUqI,IAAS,IAAI,KAAK,QAAQA,GAC9E5E,EAAQ,MAAM,SAAUL,EAAUgB,KAItC,YAAa,SAASiE,EAAMjF,EAAUgB,GACpC,IAAIX,EAAU,KAAKzD,GAAUqI,GAC7B,IAAK5E,EAAS,OAAO,MACrBA,EAAQ,QAAQ,SAAUL,EAAUgB,GAEpC,GAAIX,EAAQ,YACV,KAAK,OAAO4E,GACZ,OAAO,KACP,KACA,OAAO,QAIX,kBAAmB,SAASV,GAC1B,IAAIjE,EAAW,KAAK,QAAQ,OAAOiE,EAAQ,SAE3C,IAAK,IAAI1B,IAAOmC,EAAI1E,EAAS,OAAQuC,EAAImC,EAAGnC,KAC1C,IAAIxC,EAAU,KAAKzD,GAAU0D,EAASuC,IACtC,GAAIxC,EAASA,EAAQ,SAAS,SAAUkE,EAAQ,YAOxD,KAAK,YAAc,KAAK,MAAM,KAAK,YAGnC,KAAK,aAAe,KAAK,OACvB,WAAY,SAAS9D,EAAQH,EAAUN,EAAUgB,GAC/C,KAAKnE,GAAa4D,EAClB,KAAK7D,GAAa0D,EAClB,KAAK9D,GAAawD,EAClB,KAAK9C,GAAe8D,EACpB,KAAKtE,GAAa,OAGpB,OAAQ,WACN,GAAI,KAAKA,GAAY,OACrB,KAAKG,GAAQ,YAAY,KAAKD,GAAW,KAAKJ,GAAW,KAAKU,IAC9D,KAAKR,GAAa,MAGpB,YAAa,WACX,KAAK,YAIT,KAAK,OAAO,KAAK,aAAa,UAAW,KAAK,YAG9C,KAAK,OAAS,KAAK,OACjB,cACA,aACA,YACA,eAEA,WAAuB,WACvB,OAAuB,OACvB,MAAuB,MAEvB,wBACA,kBAEA,mBAAwB,QACxB,aAEA,WAAY,SAASgF,EAAU4D,GAC7B,KAAK,MAAM,IAAI,OAAO,QAAQ,OAAQ5D,GAEtC,KAAKvD,GAAamH,MAClB,KAAK,SAAa5D,GAAY,KAAK,iBACnC,KAAK,UAAa,KAAKvD,GAAS,cAChC,KAAK,cACL,KAAKhB,GAAa,KAAK,WAAa,IAAI,KAAK,YAC7C,KAAKa,MACL,KAAKR,MACL,KAAK,MAAa,KAAKW,GAAS,OAAS,KAAK,cAE9C,KAAKI,GAAiB,KAAK,4BAE3B,KAAKG,GAAa,KAAK,YACvB,KAAK9B,GAAa,IAAI,KAAK,QAAQ,MACnC,KAAKqB,KAEL,KAAKK,MAEL,KAAK/B,IACH,UAAW,KAAK,MAChB,eAAmB,KAAK4B,GAAS,UAAY,KAAK,UAClD,cAAmB,KAAKA,GAAS,SAAY,KAAK,qBAGpD,GAAI,KAAK,MACP,KAAK,MAAM,GAAG,KAAK,KAAM,cAAe,WACtC,GAAI,KAAK,QAAQ,KAAKX,IAAY,mBAChC,KAAK,cACN,OAGP,QAAS,SAAS2E,GAChB,KAAK3E,GAAU,KAAK2E,IAGtB,UAAW,SAAS8C,EAAMuD,GACxB,KAAKxK,GAASiH,GAAQuD,GAGxB,YAAa,WACX,OAAO,KAAK1L,IAGd,SAAU,WACR,OAAQ,KAAK4B,IACX,KAAK,KAAK,YAAc,OAAQ,aAChC,KAAK,KAAK,WAAc,OAAQ,YAChC,KAAK,KAAK,UAAc,OAAQ,WAChC,KAAK,KAAK,aAAc,OAAQ,gBAuBpC,UAAW,SAASsB,EAAUgB,GAC5B,GAAI,KAAKzE,GAAQ,YAAc,KAAK,KAAM,OAC1C,GAAI,KAAKmC,KAAW,KAAK,YAAa,OAEtC,KAAKA,GAAS,KAAK,WACnB,IAAIyI,EAAO,KAEX,KAAK,MAAM,WAAW,UAAU,QAAS,KAAK,UAE9C,KAAK3I,IACH,QAAc,KAAK,QAAQ,UAC3B,QAAc,KAAK,eACnB,0BAA2B,KAAKS,GAAW,iBAE1C,SAASwH,GAEV,GAAIA,EAAS,YACX,KAAK/H,GAAa,KAAK,UACvB,KAAK5B,GAAa2J,EAAS,SAE3B,IAAI3F,EAAkB,KAAK,OAAO2F,EAAS,yBAA0B,SAAS5F,GAC5E,OAAO,KAAK,QAAQ,KAAKrD,GAAWqD,MACnC,MACH,KAAKtC,GAAiBuC,GAEtB,KAAK,MAAM,UAAU,eAAgB,KAAKhE,IAE1C,KAAK,UAAU,KAAKF,GAAU,UAAW,MACzC,GAAIoD,EAAUA,EAAS,KAAKgB,GAE5B,KACA,KAAK,MAAM,UAAU,eACrB,KAAK,IAAI,WAAW,WAAamG,EAAK,UAAUnH,EAAUgB,IAAY,KAAKzE,GAAQ,UACnF,KAAKmC,GAAS,KAAK,cAEpB,OAYL,QAAS,SAASsB,EAAUgB,GAC1B,GAAI,KAAKzE,GAAQ,YAAc,KAAK,KAAM,OAC1C,GAAI,KAAKmC,KAAW,KAAK,aAAc,OAEvC,GAAI,KAAKA,KAAW,KAAK,YACvB,OAAO,KAAK,UAAU,WAAa,KAAK,QAAQsB,EAAUgB,IAAY,MAExE,KAAK,SAAShB,EAAUgB,GACxB,GAAI,KAAKtC,KAAW,KAAK,UAAW,OAEpC,KAAK,MAAM,QAAQ,SAAS,QAAQ,OAAQ,KAAK5B,IACjD,KAAK,mBAAmB,YACxB,KAAK,mBAAmB,WAExB,GAAI,KAAKG,GAAiB,OAC1B,KAAKA,GAAkB,KAEvB,KAAK,MAAM,WAAW,WAAW,OAAQ,KAAKH,IAE9C,KAAK0B,IACH,QAAgB,KAAK,QAAQ,QAC7B,SAAgB,KAAK1B,GACrB,eAAgB,KAAKmC,GAAW,gBAE/B,KAAK7B,GAAkB,OAU5B,WAAY,WACV,GAAI,KAAKsB,KAAW,KAAK,UAAW,OACpC,KAAKA,GAAS,KAAK,aAEnB,KAAK,MAAM,iBAAkB,KAAK5B,IAElC,KAAK0B,IACH,QAAY,KAAK,QAAQ,WACzB,SAAY,KAAK1B,IAEhB,SAAS2J,GACV,GAAIA,EAAS,WAAY,KAAKxH,GAAW,SACxC,MAEH,KAAK,MAAM,SAAS,QAAQ,UAAU,OAAQ,KAAKnC,IACnD,KAAKF,GAAY,IAAI,KAAK,QAAQ,OAapC,UAAW,SAASyD,EAASL,EAAUgB,GACrC,GAAIX,EAAQ,WAAW,MACrB,OAAO,KAAK,IAAIA,EAAS,SAAS,GAChC,OAAO,KAAK,UAAU,EAAGL,EAAUgB,IAClC,MAEL,IAAI4G,EAAe,IAAI,KAAK,aAAa,KAAMvH,EAASL,EAAUgB,GAC9DqB,GAAgBrC,IAAa,MAC7BuC,EAAe,KAAK3F,GAAU,gBAAgByD,GAElD,GAAIkC,IAAiBF,GACnB,KAAKzF,GAAU,WAAWyD,GAAUL,EAAUgB,GAC9C4G,EAAa,mBAAmB,YAChC,OAAOA,EAGT,KAAK,QAAQ,WACX,KAAK,MAAM,SAAS,WAAW,GAAG,UAAU,MAAO,KAAK9K,GAAWuD,GACnE,IAAKgC,EAAO,KAAKzF,GAAU,WAAWyD,GAAUL,EAAUgB,GAE1D,KAAKxC,IACH,QAAc,KAAK,QAAQ,UAC3B,SAAc,KAAK1B,GACnB,aAAcuD,GAEb,SAASoG,GACV,IAAKA,EAAS,YACZmB,EAAa,mBAAmB,QAAS,KAAK,MAAM,MAAMnB,EAAS,QACnE,OAAO,KAAK7J,GAAU,YAAYyD,EAASL,EAAUgB,GAGvD,IAAIV,KAAc,OAAOmG,EAAS,cAClC,KAAK,MAAM,aAAa,aAAa,MAAM,MAAO,KAAK3J,GAAWwD,GAClEsH,EAAa,mBAAmB,aAC/B,OACF,MAEH,OAAOA,GAaT,YAAa,SAASvH,EAASL,EAAUgB,GACvC,GAAIX,EAAQ,WAAW,MACrB,OAAO,KAAK,IAAIA,EAAS,SAAS,GAChC,OAAO,KAAK,YAAY,EAAGL,EAAUgB,IACpC,MAEL,IAAIM,EAAO,KAAK1E,GAAU,YAAYyD,EAASL,EAAUgB,GACzD,IAAKM,EAAM,OAEX,KAAK,QAAQ,WACX,KAAK,MAAM,SAAS,WAAW,GAAG,YAAY,QAAS,KAAKxE,GAAWuD,GAEvE,KAAK7B,IACH,QAAc,KAAK,QAAQ,YAC3B,SAAc,KAAK1B,GACnB,aAAcuD,GAEb,SAASoG,GACV,IAAKA,EAAS,WAAY,OAE1B,IAAInG,KAAc,OAAOmG,EAAS,cAClC,KAAK,MAAM,eAAe,aAAa,MAAM,QAAS,KAAK3J,GAAWwD,IACrE,OACF,OASL,QAAS,SAASD,EAASc,GACzB,IAAIgF,EAAc,IAAI,KAAK,cAE3B,KAAK,QAAQ,WACX,KAAK,MAAM,SAAS,SAAS,UAAU,QAAQ,SAAU,KAAKrJ,GAAWuD,EAASc,GAElF,KAAK3C,IACH,QAAc6B,EACd,KAAcc,EACd,SAAc,KAAKrE,IAClB,SAAS2J,GACV,GAAIA,EAAS,WACXN,EAAY,mBAAmB,YACjC,KACEA,EAAY,mBAAmB,QAAS,KAAK,MAAM,MAAMM,EAAS,SACnE,OACF,MAEH,OAAON,GAGT,eAAgB,SAAS5B,GACvB,KAAK,uBAAuB,UAAWA,EAAS,SAASA,GACvD,IAAKA,EAAS,OAEd,GAAIA,EAAQ,OAAQ,KAAKzG,GAAcyG,EAAQ,QAC/C,KAAKhH,GAAgBgH,GAErB,GAAIA,EAAQ,aAAe,UAAW,OAEtC,IAAIvE,EAAW,KAAK1B,GAAmBiG,EAAQ,IAC/C,IAAKvE,EAAU,OAEf,OAAO,KAAK1B,GAAmBiG,EAAQ,IACvCvE,KAAY,KAAKA,KAAauE,IAC7B,OAGLhG,GAAkB,SAAS2J,GACzB,KAAK,UAAU,IAAI,KAAMA,EAAgB,SAASD,GAChD,KAAK,OAAO,WAAW,UAAU,OAAQA,EAAU,eAAgBA,EAAU,UAE7E,KAAKhJ,GAAagJ,EAClB,KAAKhJ,GAAW,QAAU,KAAK9B,GAC/B,KAAK8B,GAAW,QAAU,KAAKjB,GAE/BiK,EAAU,MAAM,MAAO,WACrB,GAAI,KAAK/I,KAAiB,YAAc,KAAKA,GAAc,OAC3D,KAAKA,GAAe,MACpB,KAAK,SAAS,UAAU,QACvB,MAEH+I,EAAU,MAAM,IAAK,WACnB,GAAI,KAAK/I,KAAiB,WAAa,KAAKA,GAAc,OAC1D,KAAKA,GAAe,KACpB,KAAK,SAAS,UAAU,MACvB,OACF,OAGLV,GAAO,SAAS+F,EAASvE,EAAUgB,GACjCuD,EAAQ,GAAK,KAAK1G,KAClB,GAAImC,EAAU,KAAK1B,GAAmBiG,EAAQ,KAAOvE,EAAUgB,GAE/D,KAAK,uBAAuB,UAAWuD,EAAS,SAASA,GACvD,IAAKA,EAAS,OACd,KAAKtF,GAAW,KAAKsF,EAAS,KAAKhI,GAAQ,eAC1C,OAGLsB,GAAoB,WAClB,KAAKI,MACL,GAAI,KAAKA,IAAc,KAAK,UAAW,KAAKA,KAC5C,OAAO,KAAKA,GAAW,cAGzBH,GAAe,SAAS2B,GACtB,KAAK,OAAO,KAAKlD,GAASkD,GAE1B,GAAI,KAAKlD,GAAQ,YAAc,KAAK,WAAa,KAAKmC,KAAW,KAAK,cACpE,KAAKA,GAAY,KAAK,YACtB,KAAK5B,GAAY,KACjB,KAAKM,OAITG,GAAiB,SAASgH,GACxB,IAAKA,EAAQ,SAAWA,EAAQ,OAAS,UAAW,OACpD,KAAK,MAAM,SAAS,QAAQ,UAAU,MAAM,QAAS,KAAKzH,GAAWyH,EAAQ,QAASA,EAAQ,MAC9F,KAAK3H,GAAU,kBAAkB2H,IAGnC3F,GAAqB,WACnB,IAAK,KAAK3B,GAAiB,OAC3B,KAAKA,GAAkB,KACvB,KAAK,MAAM,OAAO,WAAW,OAAQ,KAAKH,KAG5CM,GAAkB,WAChB,KAAKwB,KACL,IAAIuI,EAAO,KACX,KAAK,IAAI,WAAW,WAAaA,EAAK,WAAa,KAAK5K,GAAQ,aAIpE,KAAK,OAAO,KAAK,OAAO,UAAW,KAAK,YACxC,KAAK,OAAO,KAAK,OAAO,UAAW,KAAK,WACxC,KAAK,OAAO,KAAK,OAAO,UAAW,KAAK,SACxC,KAAK,OAAO,KAAK,OAAO,UAAW,KAAK,YAGxC,KAAK,UAAY,KAAK,OAAO,KAAK,OAChC,cACA,SAAW,KAEX,WAAY,SAASkE,EAAQiB,GAC3B,KAAK7E,GAAW4D,EAChB,KAAK,SAAWiB,EAChB,KAAKtD,OAGP,MAAO,aAEP,KAAM,SAASmG,EAASwD,GACtB,KAAK,OAAO,SAAS,QAAQ,QAAQ,SAC1B,KAAKlL,GAAQC,GAAW,KAAK,SAAUyH,GAElD,IAAK,KAAK,SAAU,OAAO,KAAK,SAASA,GAAUwD,GAEnD,KAAK3J,GAAQ,KAAKmG,GAClB,KAAKzF,GAAWiJ,EAEhB,GAAIxD,EAAQ,UAAY,KAAK,QAAQ,UACnC,OAAO,KAAK,YAAY,cAAgB,KAAK,MAAO,MAEtD,GAAIA,EAAQ,UAAY,KAAK,QAAQ,QACnC,KAAKvH,GAAkBuH,EAEzB,GAAI,KAAK,aAAe,KAAK,YAAY,KAAKnG,IAC5C,OAAO,KAAK,QAEd,KAAK,YAAY,SAAU,KAAK,UAAW,KAAK,MAAO,OAGzD,MAAO,WACL,KAAK,eAAe,UAEpB,GAAI,KAAKA,GAAQ,UAAc,KAAKpB,GAClC,KAAKA,GAAgB,QAAU,WAEjC,KAAK,QAAQ,KAAKoB,GAAS,KAAKU,IAEhC,KAAK9B,GAAkB,KACvB,KAAKoB,OAGP,QAAS,SAASsI,GAChB,KAAK,OAAO,SAAS,SAAS,WACnB,KAAK7J,GAAQC,GAAW,KAAK,SAAU4J,GAElD,IAAK,IAAI7D,IAAOmC,EAAI0B,EAAU,OAAQ7D,EAAImC,EAAGnC,KAC3C,KAAKhG,GAAQ,eAAe6J,EAAU7D,MAI1C,MAAO,SAAS0B,EAASwD,GACvB,IAAI5H,EAAS,MACT0G,EAAS,KAAKhK,GAAQ,WACtBsK,EAAS,KAEb,OAAO,WACL,GAAIhH,EAAQ,OACZA,EAAS,KACT,KAAK,IAAI,WAAW,WAAagH,EAAK,QAAQ5C,EAASwD,IAAYlB,QAKvE,oBAEA,IAAK,SAASpG,EAAQK,EAAiBd,EAAUgB,GAC/C,IAAIU,EAAWjB,EAAO,SACtB,GAAIK,IAAoB,UAAWA,EAAkB,KAAK,2BAE1D,KAAK,UAAU,KAAK3B,GAAa,SAASsG,EAAMmB,GAC9C,IAAI/F,EAAe4E,KAASjC,EAAQiC,KAChC7E,EAAeH,EAAO,UAAUI,IAAaa,EAEjD,GAAI,KAAK,QAAQZ,EAAiBD,MAChC2C,EAAM,SAAS/C,EAAQG,EAAc,cACrC,OAAOgG,IAGTpD,EAAM,SAAS/C,EAAQG,EAAc,SAASqC,GAC5C,IAAKA,EAAU,OAAO2D,IACtB,IAAIqB,EAAYzE,EAAM,gBAAgB,SAAWA,EAAM,OAAO/C,EAAQG,GAAgB,IAAI4C,EAAM/C,EAAQG,GACxGZ,EAAS,KAAKgB,EAASiH,MAExB,WACD,MAAM,IAAI,OAAO,MAAM,IAAI,KAAK,EAAE,OAAO,WAAW,KAAK,MAAQvG,OAIrE,SAAU,SAASyG,EAAM3E,GACvB,KAAKrE,GAAY,MAAMgJ,EAAM3E,IAC7BA,EAAM,UAAU,eAAiB2E,GAGnChJ,MAEA,yBAA0B,WACxB,OAAO,KAAK,IAAI,KAAKA,GAAa,SAASsG,GAAQ,OAAOA,UAI9D,KAAK,OAAO,KAAK,UAAU,UAAW,KAAK,SAC3C,KAAK,OAAO,KAAK,UAAU,UAAW,KAAK,WAC3C,KAAK,OAAO,KAAK,UAAU,UAAW,KAAK,UAG3C,KAAK,OACHpH,MAEA,GAAI,SAASoD,EAASI,EAAW7B,EAAUgB,GACzC,IAAI2H,EAAU,WAAa3I,EAAS,KAAKgB,IAEzC,GAAIS,EAAQ,iBACVA,EAAQ,iBAAiBI,EAAW8G,EAAS,OAC/C,KACElH,EAAQ,aAAa,IAAMI,EAAW8G,GAExC,KAAKtK,GAAU,MACbZ,GAAYgE,EACZrC,GAAYyC,EACZrF,GAAYwD,EACZ9C,GAAc8D,EACdjD,GAAY4K,KAIhB,OAAQ,SAASlH,EAASI,EAAW7B,EAAUgB,GAC7C,IAAI6B,EAAI,KAAKxE,GAAU,OAAQiI,EAC/B,MAAOzD,KACLyD,EAAW,KAAKjI,GAAUwE,GAE1B,IAAKpB,GAAcA,IAAe6E,EAAS7I,MACtCoE,GAAcA,IAAeyE,EAASlH,MACtCY,GAAcA,IAAesG,EAAS9J,MACtCwE,GAAgBA,IAAiBsF,EAASpJ,IAC7C,SAEF,GAAIoJ,EAAS7I,GAAS,oBACpB6I,EAAS7I,GAAS,oBAAoB6I,EAASlH,GAAOkH,EAASvI,GAAU,OAC3E,KACEuI,EAAS7I,GAAS,aAAa,IAAM6I,EAASlH,GAAOkH,EAASvI,IAEhE,KAAKM,GAAU,OAAOwE,KACtByD,EAAW,QAKjB,KAAK,MAAM,GAAG,KAAK,KAAM,QAAS,KAAK,MAAM,OAAQ,KAAK,OAG1D,KAAK,IAAM,KAAK,OAAO,KAAK,OAC1B,YAAa,WACX,IAAIZ,KACJ,IAAK,IAAIpC,EAAI,GAAG,KAAK,QACnB,IAAK,KAAK,OAAO,eAAeA,GAAM,SACtCoC,EAAM,KAAK,mBAAmBpC,OAAa,mBAAmB,KAAK,OAAOA,KAE5E,OAAOoC,EAAM,WAGf,aAAc,WACZ,IAAI/C,EAAO,KAAK,IAAI,MAAM,KAAK,IAAI,SAAS,MAE5C,IAAIV,GAAYU,EAAK,WAAa,KAAK,YACvBA,EAAK,OAAS,KAAK,QACnBA,EAAK,WAAa,KAAK,UAEvC,OAAQV,GAGV,MAAO,WACL,IAAImE,EAAQ,KAAK,cACjB,OAAO,KAAK,cAAkB,KAAK,UAAY,KAAK,SAAa,KAAK,SAC/D,KAAK,UAAYA,MAAcA,MAAc,KAAK,SAG3D,MAAO,SAASiC,EAAK1C,GACnB,GAAI,OAAO0C,KAAS,QAAS,OAAOA,EACpC,IAAID,EAAM,IAAI,OAAQrC,EAEtB,IAAIhF,EAAU,SAASkE,EAAMgB,EAASjD,GACpCqF,EAAMA,EAAI,QAAQpC,EAAS,SAAS5B,GAClC+D,EAAInD,GAAQZ,EACZ,WAEF,GAAI+D,EAAInD,KAAU,UAChBmD,EAAInD,GAAQjC,EAAQ,KAAK,IAAI,SAASiC,OAG1ClE,GAAS,YAAa,UAAc,MACpCA,GAAS,oBAA2B,MAEpC,UAAW,KAAKsH,GAAMA,EAAM,KAAK,IAAI,SAAS,SAAS,eAAe,OAAUA,EAChFtH,GAAS,wBACTA,GAAS,oBACTA,GAAS,cAET,WAAY,KAAKqH,EAAI,OACnBA,EAAI,KAAOA,EAAI,KAAK,UACpBrC,EAAQqC,EAAI,KAAK,WACjBA,EAAI,SAAWrC,KACfqC,EAAI,KAAOrC,SACX,KACAqC,EAAI,SAAW,KAAK,IAAI,SAAS,SACjCA,EAAI,KAAO,KAAK,IAAI,SAAS,KAG/B,IAAIhC,EAAQgC,EAAI,OAAO,kBACnB1C,EAAQU,EAAQA,EAAM,cACtBpB,EAAQU,EAAM,OACdvE,KAEJ,MAAO6D,KACLe,EAAQL,EAAMV,GAAG,WACjB7D,EAAK,mBAAmB4E,WAAmB,mBAAmBA,UAEhE,GAAI,OAAOJ,KAAY,QAAS,KAAK,OAAOxE,EAAMwE,GAElDyC,EAAI,OAASjH,EAEb,OAAOiH,KAqKX,IAAK,KAAK,MACN,SAEH,WAEG,SAASlG,EAAE8C,GAEP,OAAOA,SAAeA,EAAIA,EAG9B,GAAI,OAAO,KAAK,UAAU,UAAY,WAElC,KAAK,UAAU,OAAS,SAAU1B,GAE9B,OAAO,KAAK,qBACPpB,EAAE,KAAK,qBACPA,EAAE,KAAK,eAAsB,GAC7BA,EAAE,KAAK,mBACPA,EAAE,KAAK,qBACPA,EAAE,KAAK,kBAAsB,IAGtC,OAAO,UAAU,OACjB,OAAO,UAAU,OACjB,QAAQ,UAAU,OAAS,SAAUoB,GACjC,OAAO,KAAK,WAIpB,IAAIpC,KAAQ,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,MAAM,OAAO,OAAO,EAC9GS,SAAmB,KAAK,IAAI,KAAK,IAAI,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,MAAM,OAAO,OAAO,EACrIW,EACAS,EACA2B,KACM,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,0BAIb6B,EAGJ,SAASF,EAAMsB,GAOXhG,EAAU,YACV,OAAOA,EAAU,KAAKgG,OACZA,EAAO,QAAQhG,EAAW,SAAU,GACtC,IAAI5B,EAAI2E,EAAK,GACb,OAAO,OAAO3E,KAAO,QAAUA,KACxB,WAAe,EAAE,cAAc,cAAc,oBAElD4H,MAId,SAASD,EAAIpE,EAAKZ,GAId,IAAIG,EACAQ,EACAkF,EACA9E,EACAmB,EAAOtC,EACPwD,EACA0C,EAAQ9F,EAAOY,GAInB,GAAIkF,GAAS,OAAOA,KAAW,SACvB,OAAOA,EAAM,UAAY,WAC7BA,EAAQA,EAAM,OAAOlF,GAMzB,GAAI,OAAOiD,KAAS,WAChBiC,EAAQjC,EAAI,KAAK7D,EAAQY,EAAKkF,GAKlC,OAAQ,OAAOA,GACf,KAAM,QACF,OAAOnC,EAAMmC,GAEjB,KAAM,QAIF,OAAO,SAASA,GAAS,OAAOA,IAAU,MAE9C,KAAM,SACN,KAAM,MAMF,OAAO,OAAOA,GAKlB,KAAM,QAKF,IAAKA,GACD,OAAQ,MAKZlG,GAAOS,EACP+C,KAIA,GAAI,OAAO,UAAU,SAAS,MAAM0C,OAAa,OAAO,SAKpD/E,EAAS+E,EAAM,OACf,IAAK3F,IAAOA,EAAIY,EAAQZ,MACpBiD,EAAQjD,GAAK6E,EAAI7E,EAAG2F,KAAW,MAMnCD,EAAIzC,EAAQ,gBACRxD,KAAS,GAAKA,EACNwD,EAAQ,QAAQ,GAAKxD,KAAS,GAC1BsC,UACAkB,EAAQ,cACxBxD,EAAMsC,EACN,OAAO2D,EAKX,GAAIhC,GAAO,OAAOA,KAAS,SACvB9C,EAAS8C,EAAI,OACb,IAAK1D,IAAOA,EAAIY,EAAQZ,MACpBQ,EAAIkD,EAAI1D,GACR,GAAI,OAAOQ,KAAO,SACdkF,EAAIb,EAAIrE,EAAGmF,GACX,GAAID,GACAzC,EAAQ,KAAKO,EAAMhD,IAAMf,YAAoBiG,MAI3D,KAIE,IAAKlF,EAAE,GAAGmF,GACN,GAAI,OAAO,eAAe,KAAKA,EAAOnF,IAClCkF,EAAIb,EAAIrE,EAAGmF,GACX,GAAID,GACAzC,EAAQ,KAAKO,EAAMhD,IAAMf,YAAoBiG,MAS7DA,EAAIzC,EAAQ,gBACRxD,KAAS,GAAKA,EAAMwD,EAAQ,QAAQ,GAAKxD,KAAS,GAC1CsC,UAAmBkB,EAAQ,cACvCxD,EAAMsC,EACN,OAAO2D,GASX,KAAK,UAAY,SAAUC,EAAOhC,EAAUe,GAQxC,IAAI1E,EACJP,KACAS,KAKA,GAAI,OAAOwE,KAAW,SAClB,IAAK1E,IAAOA,EAAI0E,EAAO1E,MACnBE,QAKN,KAAK,GAAI,OAAOwE,KAAW,SACzBxE,EAASwE,EAMbhB,EAAMC,EACN,GAAIA,GAAY,OAAOA,KAAc,YAC5B,OAAOA,KAAc,SACrB,OAAOA,EAAS,UAAY,UACjC,MAAM,IAAI,OAAO,KAAK,aAM1B,OAAOkB,SAAac,KAG5B,GAAI,OAAO,KAAK,aAAe,WAC3B,KAAK,UAAY,KAAK,UAM1B,GAAI,OAAO,KAAK,SAAW,WACvB,KAAK,MAAQ,SAAUV,EAAMhB,GAKzB,IAAI1D,EAEJ,SAASqF,EAAK/F,EAAQY,GAKlB,IAAID,EAAGkF,EAAGC,EAAQ9F,EAAOY,GACzB,GAAIkF,GAAS,OAAOA,KAAW,SAC3B,IAAKnF,EAAE,GAAGmF,GACN,GAAI,OAAO,eAAe,KAAKA,EAAOnF,IAClCkF,EAAIE,EAAKD,EAAOnF,GAChB,GAAIkF,IAAM,WACNC,EAAMnF,GAAKkF,EACb,KACE,OAAOC,EAAMnF,MAK7B,OAAOyD,EAAQ,KAAKpE,EAAQY,EAAKkF,GAQrCtH,EAAG,YACH,GAAIA,EAAG,KAAK4G,IACRA,EAAOA,EAAK,QAAQ5G,EAAI,SAAU,GAC9B,SAAU,WACI,EAAE,cAAc,cAAc,YAiBpD,aAAc,GAAG,GAC7B,KAAK4G,EAAK,oBAAoB,OAAO,KAAK,EAAE,GAAG,OAAO,OACtD,gBAAgB,EAAE,KAAK,KAAK,MAAM,QAAQ,QAAQ,QAAQ,UAAU,KAAK,OACzE,sBAAsB,OAAO,QAOb1E,EAAI,SAAW0E,OAKf,OAAO,OAAOhB,KAAa,UACvB2B,MAAUrF,OAAUA,EAK5B,MAAM,IAAI,aAAa,KAAK,eAMxC,KAAK,UAAU,UAAY,KAAK,OAAO,KAAK,MAAM,KAAK,WACrD,cACA,aACA,YAEA,SAAc,MAEd,SAAU,SAASpD,EAAUgB,GAC3B,KAAK,SAAS,WAAahB,EAAS,KAAKgB,EAAS,QAClD,KAAK,QAAQ,WAAahB,EAAS,KAAKgB,EAAS,SACjD,KAAK,WAGP,QAAS,SAASyD,EAAUsD,GAC1B,GAAItD,EAAS,WAAc,OAC3B,KAAKvG,GAAY,KAAKA,OAEtB,IAAK,IAAI2E,IAAOmC,EAAIP,EAAS,OAAQ5B,EAAImC,EAAGnC,KAC1C,KAAK3E,GAAUuG,EAAS5B,GAAG,IAAM4B,EAAS5B,GAE5C,KAAK,SAAS,SAASuE,GAAUA,EAAO,KAAK,KAAK,OAAO3C,MACzD,KAAK,WAGP,MAAO,WACL,GAAI,KAAK1H,GAAS,OAClB,KAAKA,GAAU,KACf,GAAI,KAAK0B,GAAS,KAAKA,GAAQ,SAGjC,QAAS,WACP,GAAI,KAAK,UAAU,UAAUY,GAAW,OACxC,GAAI,KAAKtC,GAAS,OAElB,KAAK2B,GAAS,KAAKA,IAAU,KAAK,YAClC,GAAI,KAAKA,KAAW,KAAK,YAAa,OAEtC,KAAKA,GAAS,KAAK,WAEnB,IAAIkK,EAAK,KAAK,UAAU,UAAU,WAClC,IAAKA,EAAI,OAAO,KAAK,mBAAmB,SAExC,KAAKnK,GAAU,IAAImK,EAAG,KAAK,UAAU,UAAU,aAAa,KAAK,WACjE,IAAIzB,EAAO,KAEX,KAAK1I,GAAQ,OAAS,WACpB0I,EAAKzI,GAASyI,EAAK,UACnBA,EAAKxJ,GAAiB,KACtBwJ,EAAK,mBAAmB,WAAYA,EAAK1I,IACzC0I,EAAK,SAAS,MAGhB,KAAK1I,GAAQ,UAAY,SAASmD,GAChC,IAAI6C,KAAc,OAAO,KAAK,MAAM7C,EAAM,OAC1C,IAAK,IAAIiB,IAAOmC,EAAIP,EAAS,OAAQ5B,EAAImC,EAAGnC,KAC1C,OAAOsE,EAAKjJ,GAAUuG,EAAS5B,GAAG,IAEpCsE,EAAK,QAAQ1C,IAGf,KAAKhG,GAAQ,QAAU,WACrB,IAAIiK,GAAgBvB,EAAKzI,KAAWyI,EAAK,WACzCA,EAAK,mBAAmB,WACxBA,EAAKzI,GAASyI,EAAK,YACnB,OAAOA,EAAK1I,GAEZ,GAAIiK,EAAc,OAAOvB,EAAK,SAC9B,IAAKA,EAAKxJ,GAAgB,OAAOwJ,EAAK,mBAAmB,SAEzD,IAAIN,EAAQM,EAAKtK,GAAQ,WACzB,KAAK,IAAI,WAAW,WAAasK,EAAK,WAAaN,GACnDM,EAAK,SAAS,SAIlB,OAAQ,WACN,IAAK,KAAKjJ,GAAW,OACrB,IAAIuG,EAAW,KAAK,IAAI,KAAKvG,GAAW,SAAS4E,EAAIiC,GAAO,OAAOA,IACnE,KAAK,QAAQN,OAGf,aAAc,SAAS/C,GACrB,GAAI,KAAK,IAAKA,EAAW,KAAK,IAAI,MAAMA,GAAU,QAClD,OAAOA,EAAS,UAAU,KAAK,KAAK,IAAK,SAG3C,SAAU,WACR,OAAQ,KAAK,WAAa,KAAK,UAAU,SACjC,KAAK,IAAI,WACT,KAAK,IAAI,cAGnB,SAAU,SAASjB,EAAQiB,EAAU1B,EAAUgB,GAC7C,KAAK,OAAOP,EAAQiB,GAAU,SAAS1B,EAAUgB,IAGnD,OAAQ,SAASP,EAAQiB,GACvB,IAAI2F,EAAU5G,EAAO,WAAW,UAAYA,EAAO,WAAW,cAC9D4G,EAAQ3F,GAAY2F,EAAQ3F,IAAa,IAAI,KAAKjB,EAAQiB,GAC1D,OAAO2F,EAAQ3F,MAInB,KAAK,OAAO,KAAK,UAAU,UAAU,UAAW,KAAK,YACrD,KAAK,UAAU,UAAU,WAAY,KAAK,UAAU,WAEpD,GAAI,KAAK,MACP,KAAK,MAAM,GAAG,KAAK,KAAM,cAAe,WACtC,KAAK,UAAU,UAAUrC,GAAY,OAIzC,KAAK,UAAU,YAAc,KAAK,OAAO,KAAK,MAAM,KAAK,WACvD,WAAY,SAASoB,EAAQiB,GAC3B,KAAK,UAAU,UAAU,WAAW,KAAK,KAAMjB,EAAQiB,GACvD,IAAK,KAAK,IAAI,YAAa,OAAO,KAAK,mBAAmB,SAE1D,KAAKnC,GAAO,IAAI,KAAK,UAAU,IAAIkB,EAAQiB,GAE3C,IAAI0F,EAAS,IAAI,YAAY1F,MAAiBjB,EAAO,eACjD0G,EAAS,KAEbC,EAAO,OAAS,WACdD,EAAKxJ,GAAiB,KACtBwJ,EAAK,mBAAmB,YACxBA,EAAK,SAAS,MAGhBC,EAAO,QAAU,WACf,GAAID,EAAKxJ,IACPwJ,EAAK,SAAS,OACd,KACAA,EAAK,mBAAmB,SACxBC,EAAO,UAIXA,EAAO,UAAY,SAASxF,GAC1BuF,EAAK,QAAQ,KAAK,MAAMvF,EAAM,OAC9BuF,EAAK,SAAS,MAGhB,KAAK1I,GAAU2I,GAGjB,SAAU,SAASpH,EAAUgB,GAC3B,KAAK,SAAS,WAAahB,EAAS,KAAKgB,EAAS,QAClD,KAAK,QAAQ,WAAahB,EAAS,KAAKgB,EAAS,UAGnD,QAAS,SAASuD,EAASwD,GACzB,KAAKxI,GAAK,QAAQgF,EAASwD,IAG7B,MAAO,WACL,KAAKtJ,GAAQ,YAGf,SAAU,SAASgC,EAAQiB,EAAU1B,EAAUgB,GAC7C,IAAI8B,EAAKrC,EAAO,cAChB,IAAKqC,EAAI,OAAO9C,EAAS,KAAKgB,EAAS,OAEvC,KAAK,UAAU,IAAI,SAASP,EAAQiB,EAAU,SAAS4G,GACrD,IAAKA,EAAQ,OAAOtI,EAAS,KAAKgB,EAAS,OAC3C,KAAK,OAAOP,EAAQiB,GAAU,SAAS1B,EAAUgB,IAChD,OAGL,OAAQ,SAASP,EAAQiB,GACvB,IAAI2F,EAAU5G,EAAO,WAAW,YAAcA,EAAO,WAAW,gBAChE4G,EAAQ3F,GAAY2F,EAAQ3F,IAAa,IAAI,KAAKjB,EAAQiB,GAC1D,OAAO2F,EAAQ3F,MAInB,KAAK,OAAO,KAAK,UAAU,YAAY,UAAW,KAAK,YACvD,KAAK,UAAU,UAAU,aAAc,KAAK,UAAU,aAGtD,KAAK,UAAU,IAAM,KAAK,OAAO,KAAK,MAAM,KAAK,WAC/C,QAAS,SAAS6C,EAASwD,GACzB,IAAIlB,EAAQ,KAAK,MAAMtC,EAASwD,GAC5B/B,EAAQ,KAAK,IAAI,MAAM,KAAK,UAAU,SACtCmB,EAAQ,KACR0B,EAAQ,KAAK,IAAI,cACT,IAAI,eAAe,UAAU,UAC7B,IAAI,iBAEhBA,EAAI,MAAM,MAAO7C,EAAM,MACvB6C,EAAI,kBAAkB,QAAQ,OAAQ,YAAY,OAClDA,EAAI,kBAAkB,SAAU,GAAG,QACnCA,EAAI,kBAAkB,EAAE,UAAU,OAAQ,iBAE1C,IAAIpG,EAAU,KAAK,QACnB,IAAK,IAAIa,EAAI,GAAGb,GACd,IAAKA,EAAQ,eAAea,GAAM,SAClCuF,EAAI,iBAAiBvF,EAAKb,EAAQa,IAGpC,IAAI9D,EAAQ,WAAaqJ,EAAI,SAC7B,KAAK,MAAM,GAAG,KAAK,KAAM,cAAerJ,GAExC,IAAIgB,EAAU,WACZ,KAAK,MAAM,OAAO,KAAK,KAAM,cAAehB,GAC5CqJ,EAAI,mBAAqB,aACzBA,EAAM,MAGRA,EAAI,mBAAqB,WACvB,GAAIA,EAAI,eAAkB,OAE1B,IAAIhD,EAAgB,KAChB4B,EAAgBoB,EAAI,OACpBhB,IAAkBJ,QAAiBA,QACjBA,SACAA,UAEtB,IAAKI,GACHrH,IACAqG,IACA,OAAOM,EAAK,SAAS,OAGvB,IACEtB,EAAgB,KAAK,MAAMgD,EAAI,cAC/B,MAAO,IAETrI,IAEA,GAAIqF,GACFsB,EAAK,QAAQtB,GACbsB,EAAK,SAAS,KACd,KACAN,IACAM,EAAK,SAAS,SAIlB0B,EAAI,KAAK,KAAK,OAAOtE,QAGvB,SAAU,SAAS9D,EAAQiB,EAAU1B,EAAUgB,GAC7ChB,EAAS,KAAKgB,EAAS,KAAK,IAAI,MAAMU,GAAU,mBAIpD,KAAK,UAAU,UAAU,KAAK,SAAU,KAAK,UAAU,KAEvD,KAAK,UAAU,KAAO,KAAK,OAAO,KAAK,MAAM,KAAK,WAChD,QAAS,SAAS6C,EAASwD,GACzB,IAAIe,EAAW,KAAK,IAAI,eAAiB,eAAiB,eACtDD,EAAW,IAAIC,IACfjC,EAAW,KAAK,MAAMtC,EAASwD,GAC/BZ,EAAW,KAEf0B,EAAI,MAAM,MAAO,KAAK,SAAU,MAChC,GAAIA,EAAI,iBAAkBA,EAAI,kBAAkB,SAAU,GAAG,QAE7D,IAAIrI,EAAU,WACZ,IAAKqI,EAAK,OAAO,MACjBA,EAAI,OAASA,EAAI,QAAUA,EAAI,UAAYA,EAAI,WAAa,KAC5DA,EAAM,KACN,KAAK,IAAI,aAAab,GACtB,OAAO,MAGTa,EAAI,OAAS,WACX,IAAIhD,EAAgB,KACpB,IACEA,EAAgB,KAAK,MAAMgD,EAAI,cAC/B,MAAO,IAETrI,IAEA,GAAIqF,GACFsB,EAAK,QAAQtB,GACbsB,EAAK,SAAS,KACd,KACAN,IACAM,EAAK,SAAS,SAIlB,IAAI9B,EAAU,WACZ7E,IACAqG,IACAM,EAAK,SAAS,QAEhB,IAAIa,EAAQ,KAAK,IAAI,WAAW3C,WAAsB0C,GACtDc,EAAI,QAAUxD,EACdwD,EAAI,UAAYxD,EAEhBwD,EAAI,WAAa,aACjBA,EAAI,MAAM,UAAY,mBAAmB,KAAK,OAAOtE,SAGvD,SAAU,SAAS9D,EAAQiB,EAAU1B,EAAUgB,GAC7C,GAAI,KAAK,IAAI,MAAMU,GAAU,eAC3B,OAAO1B,EAAS,KAAKgB,EAAS,OAEhC,GAAI,KAAK,IAAI,eACX,OAAOhB,EAAS,KAAKgB,EAAS,KAAK,IAAI,MAAMU,GAAU,WACzB,KAAK,IAAI,MAAM,KAAK,IAAI,UAAU,UAElE,GAAI,KAAK,IAAI,gBACX,IAAImH,EAAM,IAAI,KAAK,IAAI,iBACvB,OAAO7I,EAAS,KAAKgB,EAAS6H,EAAI,kBAAoB,WAExD,OAAO7I,EAAS,KAAKgB,EAAS,UAIlC,KAAK,UAAU,UAAU,MAAM,OAAO,KAAK,SAAU,KAAK,UAAU,MAGpE,KAAK,UAAU,MAAQ,KAAK,OAAO,KAAK,MAAM,KAAK,WACjD,YAAa,SAASyD,GACpB,IAAIkB,GACF,QAAU,KAAK,OAAOlB,GACtB,OAAW,SAAW,KAAK,UAAU,MAAM9H,IAAY,KAEzD,IAAIuH,EAAW,KAAK,IAAI,MAAM,KAAK,SAAUyB,GAAQ,QACrD,OAAOzB,EAAS,QAAU,KAAK,UAAU,gBAG3C,QAAS,SAASO,EAAUsD,GAC1B,IAAIpC,GAAgB,QAAS,KAAK,OAAOlB,IACrCjC,EAAe,SAAS,sBAAsB,UAC9CuE,EAAe,SAAS,eAAe,SACvC9G,EAAe,KAAK,UAAU,MAAM,kBACpCiE,EAAe,KAAK,IAAI,MAAM,KAAK,SAAUyB,GAC7CkB,EAAe,KAAK,MAAMpC,EAAUsD,GACpCZ,EAAe,KAEnB,KAAK,IAAIlH,GAAgB,SAASkB,GAChCX,IACA2G,EAAK,QAAQhG,GACbgG,EAAK,SAAS,MAGhB,IAAIa,EAAQ,KAAK,IAAI,WAAW,WAC9BxH,IACAqG,IACAM,EAAK,SAAS,iBACAY,GAEhB,IAAIvH,EAAU,WACZ,IAAK,KAAK,IAAIP,GAAe,OAAO,MACpC,KAAK,IAAIA,GAAgB,UACzB,IAAM,OAAO,KAAK,IAAIA,GAAgB,MAAO,IAC7C,KAAK,IAAI,aAAa+H,GACtBjB,EAAO,WAAW,YAAYA,GAC9B,OAAO,MAGT7C,EAAS,OAAO,MAAQjE,EACxB8G,EAAO,MAAQ,KAAK,YACpBA,EAAO,IAAO7C,EAAS,QACvB1B,EAAK,YAAYuE,OAGnBpK,KAEA,gBAAiB,WACf,KAAKA,MACL,OAAQ,SAAW,KAAKA,IAAY,KAGtC,SAAU,SAAS8D,EAAQiB,EAAU1B,EAAUgB,GAC7ChB,EAAS,KAAKgB,EAAS,SAI3B,KAAK,UAAU,UAAU,SAAS,SAAU,KAAK,UAAU;"
|
6
|
+
"names": ["_advice", "_callback", "_callbacks", "_cancelled", "_cbCount", "_channels", "_client", "_clientId", "_connectMessage", "_connectRequest", "_context", "_cookies", "_cycleConnection", "_deferredArgs", "_deferredStatus", "_deliverMessage", "_disabled", "_element", "_errbacks", "_everConnected", "_extensions", "_generateMessageId", "_handleAdvice", "_handler", "_headers", "_messageId", "_messages", "_options", "_outbox", "_registry", "_responseCallbacks", "_selectTransport", "_send", "_socket", "_state", "_subscribers", "_teardownConnection", "_this", "_timeout", "_timeouts", "_timer", "_transport", "_transportUp", "_transports", "_type", "_unloaded", "_used", "_xhr", "abort", "advice", "allowed", "args", "array", "banner", "bitlength", "bridge", "c", "callback", "callbackName", "callbacks", "called", "calls", "channel", "channels", "chars", "cleanUp", "client", "clone", "code", "connEndpoint", "connType", "consume", "context", "copy", "cx", "data", "date", "day", "dead", "delay", "dest", "disabled", "element", "endpoint", "escapable", "event", "eventName", "eventType", "extension", "extensions", "external", "f", "feature", "first", "force", "gap", "hasSubscribe", "head", "headers", "holder", "host", "hour", "i", "id", "indent", "infer", "isUsable", "iterate", "iterator", "j", "k", "key", "keys", "klass", "length", "level", "levels", "limit", "list", "lista", "listb", "listener", "listeners", "location", "loop", "looping", "match", "maxSize", "message", "messageArgs", "messages", "meta", "methods", "mind", "minute", "month", "msg", "n", "name", "names", "needle", "object", "onerror", "options", "overwrite", "pad", "pair", "pairs", "params", "parent", "parsedMessage", "partial", "parts", "path", "pattern", "pipe", "publication", "query", "quote", "register", "rep", "replacer", "response", "responses", "result", "resume", "retry", "reviver", "script", "second", "seconds", "segments", "self", "socket", "sockets", "source", "space", "stage", "status", "str", "string", "subscription", "successful", "text", "timeout", "timer", "transport", "transportTypes", "type", "uri", "url", "usable", "v", "value", "walk", "wasConnected", "wrapped", "ws", "xhr", "xhrClass", "year"],
|
7
|
+
"mappings": "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"
|
8
8
|
}
|
data/lib/faye-browser.js
CHANGED
@@ -1,29 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
if (!source) return dest;
|
6
|
-
for (var key in source) {
|
7
|
-
if (!source.hasOwnProperty(key)) continue;
|
8
|
-
if (dest.hasOwnProperty(key) && overwrite === false) continue;
|
9
|
-
if (dest[key] !== source[key])
|
10
|
-
dest[key] = source[key];
|
11
|
-
}
|
12
|
-
return dest;
|
13
|
-
};
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
var Faye = {
|
4
|
+
VERSION: '0.8.9',
|
14
5
|
|
15
|
-
Faye.extend(Faye, {
|
16
|
-
VERSION: '0.8.8',
|
17
|
-
|
18
6
|
BAYEUX_VERSION: '1.0',
|
19
7
|
ID_LENGTH: 160,
|
20
8
|
JSONP_CALLBACK: 'jsonpcallback',
|
21
9
|
CONNECTION_TYPES: ['long-polling', 'cross-origin-long-polling', 'callback-polling', 'websocket', 'eventsource', 'in-process'],
|
22
|
-
|
10
|
+
|
23
11
|
MANDATORY_CONNECTION_TYPES: ['long-polling', 'callback-polling', 'in-process'],
|
24
|
-
|
25
|
-
ENV: (
|
26
|
-
|
12
|
+
|
13
|
+
ENV: (typeof global === 'undefined') ? window : global,
|
14
|
+
|
15
|
+
extend: function(dest, source, overwrite) {
|
16
|
+
if (!source) return dest;
|
17
|
+
for (var key in source) {
|
18
|
+
if (!source.hasOwnProperty(key)) continue;
|
19
|
+
if (dest.hasOwnProperty(key) && overwrite === false) continue;
|
20
|
+
if (dest[key] !== source[key])
|
21
|
+
dest[key] = source[key];
|
22
|
+
}
|
23
|
+
return dest;
|
24
|
+
},
|
25
|
+
|
27
26
|
random: function(bitlength) {
|
28
27
|
bitlength = bitlength || this.ID_LENGTH;
|
29
28
|
if (bitlength > 32) {
|
@@ -37,16 +36,16 @@ Faye.extend(Faye, {
|
|
37
36
|
var limit = Math.pow(2, bitlength) - 1,
|
38
37
|
maxSize = limit.toString(36).length,
|
39
38
|
string = Math.floor(Math.random() * limit).toString(36);
|
40
|
-
|
39
|
+
|
41
40
|
while (string.length < maxSize) string = '0' + string;
|
42
41
|
return string;
|
43
42
|
},
|
44
|
-
|
43
|
+
|
45
44
|
clientIdFromMessages: function(messages) {
|
46
45
|
var first = [].concat(messages)[0];
|
47
46
|
return first && first.clientId;
|
48
47
|
},
|
49
|
-
|
48
|
+
|
50
49
|
copyObject: function(object) {
|
51
50
|
var clone, i, key;
|
52
51
|
if (object instanceof Array) {
|
@@ -62,7 +61,7 @@ Faye.extend(Faye, {
|
|
62
61
|
return object;
|
63
62
|
}
|
64
63
|
},
|
65
|
-
|
64
|
+
|
66
65
|
commonElement: function(lista, listb) {
|
67
66
|
for (var i = 0, n = lista.length; i < n; i++) {
|
68
67
|
if (this.indexOf(listb, lista[i]) !== -1)
|
@@ -70,20 +69,20 @@ Faye.extend(Faye, {
|
|
70
69
|
}
|
71
70
|
return null;
|
72
71
|
},
|
73
|
-
|
72
|
+
|
74
73
|
indexOf: function(list, needle) {
|
75
74
|
if (list.indexOf) return list.indexOf(needle);
|
76
|
-
|
75
|
+
|
77
76
|
for (var i = 0, n = list.length; i < n; i++) {
|
78
77
|
if (list[i] === needle) return i;
|
79
78
|
}
|
80
79
|
return -1;
|
81
80
|
},
|
82
|
-
|
81
|
+
|
83
82
|
map: function(object, callback, context) {
|
84
83
|
if (object.map) return object.map(callback, context);
|
85
84
|
var result = [];
|
86
|
-
|
85
|
+
|
87
86
|
if (object instanceof Array) {
|
88
87
|
for (var i = 0, n = object.length; i < n; i++) {
|
89
88
|
result.push(callback.call(context || null, object[i], i));
|
@@ -96,7 +95,7 @@ Faye.extend(Faye, {
|
|
96
95
|
}
|
97
96
|
return result;
|
98
97
|
},
|
99
|
-
|
98
|
+
|
100
99
|
filter: function(array, callback, context) {
|
101
100
|
var result = [];
|
102
101
|
for (var i = 0, n = array.length; i < n; i++) {
|
@@ -105,7 +104,7 @@ Faye.extend(Faye, {
|
|
105
104
|
}
|
106
105
|
return result;
|
107
106
|
},
|
108
|
-
|
107
|
+
|
109
108
|
asyncEach: function(list, iterator, callback, context) {
|
110
109
|
var n = list.length,
|
111
110
|
i = -1,
|
@@ -132,7 +131,7 @@ Faye.extend(Faye, {
|
|
132
131
|
};
|
133
132
|
resume();
|
134
133
|
},
|
135
|
-
|
134
|
+
|
136
135
|
// http://assanka.net/content/tech/2009/09/02/json2-js-vs-prototype/
|
137
136
|
toJSON: function(object) {
|
138
137
|
if (this.stringify)
|
@@ -141,14 +140,14 @@ Faye.extend(Faye, {
|
|
141
140
|
? this[key]
|
142
141
|
: value;
|
143
142
|
});
|
144
|
-
|
143
|
+
|
145
144
|
return JSON.stringify(object);
|
146
145
|
},
|
147
|
-
|
146
|
+
|
148
147
|
logger: function(message) {
|
149
148
|
if (typeof console !== 'undefined') console.log(message);
|
150
149
|
},
|
151
|
-
|
150
|
+
|
152
151
|
timestamp: function() {
|
153
152
|
var date = new Date(),
|
154
153
|
year = date.getFullYear(),
|
@@ -157,15 +156,18 @@ Faye.extend(Faye, {
|
|
157
156
|
hour = date.getHours(),
|
158
157
|
minute = date.getMinutes(),
|
159
158
|
second = date.getSeconds();
|
160
|
-
|
159
|
+
|
161
160
|
var pad = function(n) {
|
162
161
|
return n < 10 ? '0' + n : String(n);
|
163
162
|
};
|
164
|
-
|
163
|
+
|
165
164
|
return pad(year) + '-' + pad(month) + '-' + pad(day) + ' ' +
|
166
165
|
pad(hour) + ':' + pad(minute) + ':' + pad(second);
|
167
166
|
}
|
168
|
-
}
|
167
|
+
};
|
168
|
+
|
169
|
+
if (typeof window !== 'undefined')
|
170
|
+
window.Faye = Faye;
|
169
171
|
|
170
172
|
|
171
173
|
Faye.Class = function(parent, methods) {
|
@@ -173,18 +175,18 @@ Faye.Class = function(parent, methods) {
|
|
173
175
|
methods = parent;
|
174
176
|
parent = Object;
|
175
177
|
}
|
176
|
-
|
178
|
+
|
177
179
|
var klass = function() {
|
178
180
|
if (!this.initialize) return this;
|
179
181
|
return this.initialize.apply(this, arguments) || this;
|
180
182
|
};
|
181
|
-
|
183
|
+
|
182
184
|
var bridge = function() {};
|
183
185
|
bridge.prototype = parent.prototype;
|
184
|
-
|
186
|
+
|
185
187
|
klass.prototype = new bridge();
|
186
188
|
Faye.extend(klass.prototype, methods);
|
187
|
-
|
189
|
+
|
188
190
|
return klass;
|
189
191
|
};
|
190
192
|
|
@@ -193,18 +195,18 @@ Faye.Namespace = Faye.Class({
|
|
193
195
|
initialize: function() {
|
194
196
|
this._used = {};
|
195
197
|
},
|
196
|
-
|
198
|
+
|
197
199
|
exists: function(id) {
|
198
200
|
return this._used.hasOwnProperty(id);
|
199
201
|
},
|
200
|
-
|
202
|
+
|
201
203
|
generate: function() {
|
202
204
|
var name = Faye.random();
|
203
205
|
while (this._used.hasOwnProperty(name))
|
204
206
|
name = Faye.random();
|
205
207
|
return this._used[name] = name;
|
206
208
|
},
|
207
|
-
|
209
|
+
|
208
210
|
release: function(id) {
|
209
211
|
delete this._used[id];
|
210
212
|
}
|
@@ -217,7 +219,7 @@ Faye.Error = Faye.Class({
|
|
217
219
|
this.params = Array.prototype.slice.call(params);
|
218
220
|
this.message = message;
|
219
221
|
},
|
220
|
-
|
222
|
+
|
221
223
|
toString: function() {
|
222
224
|
return this.code + ':' +
|
223
225
|
this.params.join(',') + ':' +
|
@@ -278,14 +280,14 @@ Faye.Error.serverError = function() {
|
|
278
280
|
Faye.Deferrable = {
|
279
281
|
callback: function(callback, context) {
|
280
282
|
if (!callback) return;
|
281
|
-
|
283
|
+
|
282
284
|
if (this._deferredStatus === 'succeeded')
|
283
285
|
return callback.apply(context, this._deferredArgs);
|
284
|
-
|
286
|
+
|
285
287
|
this._callbacks = this._callbacks || [];
|
286
288
|
this._callbacks.push([callback, context]);
|
287
289
|
},
|
288
|
-
|
290
|
+
|
289
291
|
timeout: function(seconds, message) {
|
290
292
|
var _this = this;
|
291
293
|
var timer = Faye.ENV.setTimeout(function() {
|
@@ -293,7 +295,7 @@ Faye.Deferrable = {
|
|
293
295
|
}, seconds * 1000);
|
294
296
|
this._timer = timer;
|
295
297
|
},
|
296
|
-
|
298
|
+
|
297
299
|
errback: function(callback, context) {
|
298
300
|
if (!callback) return;
|
299
301
|
|
@@ -311,17 +313,17 @@ Faye.Deferrable = {
|
|
311
313
|
var args = Array.prototype.slice.call(arguments),
|
312
314
|
status = args.shift(),
|
313
315
|
callbacks;
|
314
|
-
|
316
|
+
|
315
317
|
this._deferredStatus = status;
|
316
318
|
this._deferredArgs = args;
|
317
|
-
|
319
|
+
|
318
320
|
if (status === 'succeeded')
|
319
321
|
callbacks = this._callbacks;
|
320
322
|
else if (status === 'failed')
|
321
323
|
callbacks = this._errbacks;
|
322
|
-
|
324
|
+
|
323
325
|
if (!callbacks) return;
|
324
|
-
|
326
|
+
|
325
327
|
var callback;
|
326
328
|
while (callback = callbacks.shift())
|
327
329
|
callback[0].apply(callback[1], this._deferredArgs);
|
@@ -334,39 +336,39 @@ Faye.Publisher = {
|
|
334
336
|
if (!this._subscribers || !this._subscribers[eventType]) return 0;
|
335
337
|
return this._subscribers[eventType].length;
|
336
338
|
},
|
337
|
-
|
339
|
+
|
338
340
|
bind: function(eventType, listener, context) {
|
339
341
|
this._subscribers = this._subscribers || {};
|
340
342
|
var list = this._subscribers[eventType] = this._subscribers[eventType] || [];
|
341
343
|
list.push([listener, context]);
|
342
344
|
},
|
343
|
-
|
345
|
+
|
344
346
|
unbind: function(eventType, listener, context) {
|
345
347
|
if (!this._subscribers || !this._subscribers[eventType]) return;
|
346
|
-
|
348
|
+
|
347
349
|
if (!listener) {
|
348
350
|
delete this._subscribers[eventType];
|
349
351
|
return;
|
350
352
|
}
|
351
353
|
var list = this._subscribers[eventType],
|
352
354
|
i = list.length;
|
353
|
-
|
355
|
+
|
354
356
|
while (i--) {
|
355
357
|
if (listener !== list[i][0]) continue;
|
356
358
|
if (context && list[i][1] !== context) continue;
|
357
359
|
list.splice(i,1);
|
358
360
|
}
|
359
361
|
},
|
360
|
-
|
362
|
+
|
361
363
|
trigger: function() {
|
362
364
|
var args = Array.prototype.slice.call(arguments),
|
363
365
|
eventType = args.shift();
|
364
|
-
|
366
|
+
|
365
367
|
if (!this._subscribers || !this._subscribers[eventType]) return;
|
366
|
-
|
368
|
+
|
367
369
|
var listeners = this._subscribers[eventType].slice(),
|
368
370
|
listener;
|
369
|
-
|
371
|
+
|
370
372
|
for (var i = 0, n = listeners.length; i < n; i++) {
|
371
373
|
listener = listeners[i];
|
372
374
|
listener[0].apply(listener[1], args);
|
@@ -385,7 +387,7 @@ Faye.Timeouts = {
|
|
385
387
|
callback.call(context);
|
386
388
|
}, 1000 * delay);
|
387
389
|
},
|
388
|
-
|
390
|
+
|
389
391
|
removeTimeout: function(name) {
|
390
392
|
this._timeouts = this._timeouts || {};
|
391
393
|
var timeout = this._timeouts[name];
|
@@ -403,19 +405,19 @@ Faye.Logging = {
|
|
403
405
|
info: 1,
|
404
406
|
debug: 0
|
405
407
|
},
|
406
|
-
|
408
|
+
|
407
409
|
logLevel: 'error',
|
408
|
-
|
410
|
+
|
409
411
|
log: function(messageArgs, level) {
|
410
412
|
if (!Faye.logger) return;
|
411
|
-
|
413
|
+
|
412
414
|
var levels = Faye.Logging.LOG_LEVELS;
|
413
415
|
if (levels[Faye.Logging.logLevel] > levels[level]) return;
|
414
|
-
|
416
|
+
|
415
417
|
var messageArgs = Array.prototype.slice.apply(messageArgs),
|
416
418
|
banner = ' [' + level.toUpperCase() + '] [Faye',
|
417
419
|
klass = this.className,
|
418
|
-
|
420
|
+
|
419
421
|
message = messageArgs.shift().replace(/\?/g, function() {
|
420
422
|
try {
|
421
423
|
return Faye.toJSON(messageArgs.shift());
|
@@ -423,7 +425,7 @@ Faye.Logging = {
|
|
423
425
|
return '[Object]';
|
424
426
|
}
|
425
427
|
});
|
426
|
-
|
428
|
+
|
427
429
|
for (var key in Faye) {
|
428
430
|
if (klass) continue;
|
429
431
|
if (typeof Faye[key] !== 'function') continue;
|
@@ -431,7 +433,7 @@ Faye.Logging = {
|
|
431
433
|
}
|
432
434
|
if (klass) banner += '.' + klass;
|
433
435
|
banner += '] ';
|
434
|
-
|
436
|
+
|
435
437
|
Faye.logger(Faye.timestamp() + banner + message);
|
436
438
|
}
|
437
439
|
};
|
@@ -478,7 +480,7 @@ Faye.Extensible = {
|
|
478
480
|
this._extensions.push(extension);
|
479
481
|
if (extension.added) extension.added(this);
|
480
482
|
},
|
481
|
-
|
483
|
+
|
482
484
|
removeExtension: function(extension) {
|
483
485
|
if (!this._extensions) return;
|
484
486
|
var i = this._extensions.length;
|
@@ -488,19 +490,19 @@ Faye.Extensible = {
|
|
488
490
|
if (extension.removed) extension.removed(this);
|
489
491
|
}
|
490
492
|
},
|
491
|
-
|
493
|
+
|
492
494
|
pipeThroughExtensions: function(stage, message, callback, context) {
|
493
495
|
this.debug('Passing through ? extensions: ?', stage, message);
|
494
496
|
|
495
497
|
if (!this._extensions) return callback.call(context, message);
|
496
498
|
var extensions = this._extensions.slice();
|
497
|
-
|
499
|
+
|
498
500
|
var pipe = function(message) {
|
499
501
|
if (!message) return callback.call(context, message);
|
500
|
-
|
502
|
+
|
501
503
|
var extension = extensions.shift();
|
502
504
|
if (!extension) return callback.call(context, message);
|
503
|
-
|
505
|
+
|
504
506
|
if (extension[stage]) extension[stage](message, pipe);
|
505
507
|
else pipe(message);
|
506
508
|
};
|
@@ -514,11 +516,11 @@ Faye.Channel = Faye.Class({
|
|
514
516
|
initialize: function(name) {
|
515
517
|
this.id = this.name = name;
|
516
518
|
},
|
517
|
-
|
519
|
+
|
518
520
|
push: function(message) {
|
519
521
|
this.trigger('message', message);
|
520
522
|
},
|
521
|
-
|
523
|
+
|
522
524
|
isUnused: function() {
|
523
525
|
return this.countListeners('message') === 0;
|
524
526
|
}
|
@@ -532,75 +534,75 @@ Faye.extend(Faye.Channel, {
|
|
532
534
|
SUBSCRIBE: '/meta/subscribe',
|
533
535
|
UNSUBSCRIBE: '/meta/unsubscribe',
|
534
536
|
DISCONNECT: '/meta/disconnect',
|
535
|
-
|
537
|
+
|
536
538
|
META: 'meta',
|
537
539
|
SERVICE: 'service',
|
538
|
-
|
540
|
+
|
539
541
|
expand: function(name) {
|
540
542
|
var segments = this.parse(name),
|
541
543
|
channels = ['/**', name];
|
542
|
-
|
544
|
+
|
543
545
|
var copy = segments.slice();
|
544
546
|
copy[copy.length - 1] = '*';
|
545
547
|
channels.push(this.unparse(copy));
|
546
|
-
|
548
|
+
|
547
549
|
for (var i = 1, n = segments.length; i < n; i++) {
|
548
550
|
copy = segments.slice(0, i);
|
549
551
|
copy.push('**');
|
550
552
|
channels.push(this.unparse(copy));
|
551
553
|
}
|
552
|
-
|
554
|
+
|
553
555
|
return channels;
|
554
556
|
},
|
555
|
-
|
557
|
+
|
556
558
|
isValid: function(name) {
|
557
559
|
return Faye.Grammar.CHANNEL_NAME.test(name) ||
|
558
560
|
Faye.Grammar.CHANNEL_PATTERN.test(name);
|
559
561
|
},
|
560
|
-
|
562
|
+
|
561
563
|
parse: function(name) {
|
562
564
|
if (!this.isValid(name)) return null;
|
563
565
|
return name.split('/').slice(1);
|
564
566
|
},
|
565
|
-
|
567
|
+
|
566
568
|
unparse: function(segments) {
|
567
569
|
return '/' + segments.join('/');
|
568
570
|
},
|
569
|
-
|
571
|
+
|
570
572
|
isMeta: function(name) {
|
571
573
|
var segments = this.parse(name);
|
572
574
|
return segments ? (segments[0] === this.META) : null;
|
573
575
|
},
|
574
|
-
|
576
|
+
|
575
577
|
isService: function(name) {
|
576
578
|
var segments = this.parse(name);
|
577
579
|
return segments ? (segments[0] === this.SERVICE) : null;
|
578
580
|
},
|
579
|
-
|
581
|
+
|
580
582
|
isSubscribable: function(name) {
|
581
583
|
if (!this.isValid(name)) return null;
|
582
584
|
return !this.isMeta(name) && !this.isService(name);
|
583
585
|
},
|
584
|
-
|
586
|
+
|
585
587
|
Set: Faye.Class({
|
586
588
|
initialize: function() {
|
587
589
|
this._channels = {};
|
588
590
|
},
|
589
|
-
|
591
|
+
|
590
592
|
getKeys: function() {
|
591
593
|
var keys = [];
|
592
594
|
for (var key in this._channels) keys.push(key);
|
593
595
|
return keys;
|
594
596
|
},
|
595
|
-
|
597
|
+
|
596
598
|
remove: function(name) {
|
597
599
|
delete this._channels[name];
|
598
600
|
},
|
599
|
-
|
601
|
+
|
600
602
|
hasSubscription: function(name) {
|
601
603
|
return this._channels.hasOwnProperty(name);
|
602
604
|
},
|
603
|
-
|
605
|
+
|
604
606
|
subscribe: function(names, callback, context) {
|
605
607
|
if (!callback) return;
|
606
608
|
var name;
|
@@ -610,12 +612,12 @@ Faye.extend(Faye.Channel, {
|
|
610
612
|
channel.bind('message', callback, context);
|
611
613
|
}
|
612
614
|
},
|
613
|
-
|
615
|
+
|
614
616
|
unsubscribe: function(name, callback, context) {
|
615
617
|
var channel = this._channels[name];
|
616
618
|
if (!channel) return false;
|
617
619
|
channel.unbind('message', callback, context);
|
618
|
-
|
620
|
+
|
619
621
|
if (channel.isUnused()) {
|
620
622
|
this.remove(name);
|
621
623
|
return true;
|
@@ -623,10 +625,10 @@ Faye.extend(Faye.Channel, {
|
|
623
625
|
return false;
|
624
626
|
}
|
625
627
|
},
|
626
|
-
|
628
|
+
|
627
629
|
distributeMessage: function(message) {
|
628
630
|
var channels = Faye.Channel.expand(message.channel);
|
629
|
-
|
631
|
+
|
630
632
|
for (var i = 0, n = channels.length; i < n; i++) {
|
631
633
|
var channel = this._channels[channels[i]];
|
632
634
|
if (channel) channel.trigger('message', message.data);
|
@@ -647,13 +649,13 @@ Faye.Subscription = Faye.Class({
|
|
647
649
|
this._context = context;
|
648
650
|
this._cancelled = false;
|
649
651
|
},
|
650
|
-
|
652
|
+
|
651
653
|
cancel: function() {
|
652
654
|
if (this._cancelled) return;
|
653
655
|
this._client.unsubscribe(this._channels, this._callback, this._context);
|
654
656
|
this._cancelled = true;
|
655
657
|
},
|
656
|
-
|
658
|
+
|
657
659
|
unsubscribe: function() {
|
658
660
|
this.cancel();
|
659
661
|
}
|
@@ -667,20 +669,20 @@ Faye.Client = Faye.Class({
|
|
667
669
|
CONNECTING: 2,
|
668
670
|
CONNECTED: 3,
|
669
671
|
DISCONNECTED: 4,
|
670
|
-
|
672
|
+
|
671
673
|
HANDSHAKE: 'handshake',
|
672
674
|
RETRY: 'retry',
|
673
675
|
NONE: 'none',
|
674
|
-
|
676
|
+
|
675
677
|
CONNECTION_TIMEOUT: 60.0,
|
676
678
|
DEFAULT_RETRY: 5.0,
|
677
|
-
|
679
|
+
|
678
680
|
DEFAULT_ENDPOINT: '/bayeux',
|
679
681
|
INTERVAL: 0.0,
|
680
|
-
|
682
|
+
|
681
683
|
initialize: function(endpoint, options) {
|
682
684
|
this.info('New client created for ?', endpoint);
|
683
|
-
|
685
|
+
|
684
686
|
this._options = options || {};
|
685
687
|
this.endpoint = endpoint || this.DEFAULT_ENDPOINT;
|
686
688
|
this.endpoints = this._options.endpoints || {};
|
@@ -689,36 +691,34 @@ Faye.Client = Faye.Class({
|
|
689
691
|
this._headers = {};
|
690
692
|
this._disabled = [];
|
691
693
|
this.retry = this._options.retry || this.DEFAULT_RETRY;
|
692
|
-
|
693
|
-
this._selectTransport(Faye.MANDATORY_CONNECTION_TYPES);
|
694
|
-
|
694
|
+
|
695
695
|
this._state = this.UNCONNECTED;
|
696
696
|
this._channels = new Faye.Channel.Set();
|
697
697
|
this._messageId = 0;
|
698
|
-
|
698
|
+
|
699
699
|
this._responseCallbacks = {};
|
700
|
-
|
700
|
+
|
701
701
|
this._advice = {
|
702
702
|
reconnect: this.RETRY,
|
703
703
|
interval: 1000 * (this._options.interval || this.INTERVAL),
|
704
704
|
timeout: 1000 * (this._options.timeout || this.CONNECTION_TIMEOUT)
|
705
705
|
};
|
706
|
-
|
706
|
+
|
707
707
|
if (Faye.Event)
|
708
708
|
Faye.Event.on(Faye.ENV, 'beforeunload', function() {
|
709
709
|
if (Faye.indexOf(this._disabled, 'autodisconnect') < 0)
|
710
710
|
this.disconnect();
|
711
711
|
}, this);
|
712
712
|
},
|
713
|
-
|
713
|
+
|
714
714
|
disable: function(feature) {
|
715
715
|
this._disabled.push(feature);
|
716
716
|
},
|
717
|
-
|
717
|
+
|
718
718
|
setHeader: function(name, value) {
|
719
719
|
this._headers[name] = value;
|
720
720
|
},
|
721
|
-
|
721
|
+
|
722
722
|
getClientId: function() {
|
723
723
|
return this._clientId;
|
724
724
|
},
|
@@ -739,7 +739,7 @@ Faye.Client = Faye.Class({
|
|
739
739
|
// MAY include: * minimumVersion
|
740
740
|
// * ext
|
741
741
|
// * id
|
742
|
-
//
|
742
|
+
//
|
743
743
|
// Success Response Failed Response
|
744
744
|
// MUST include: * channel MUST include: * channel
|
745
745
|
// * version * successful
|
@@ -754,33 +754,31 @@ Faye.Client = Faye.Class({
|
|
754
754
|
handshake: function(callback, context) {
|
755
755
|
if (this._advice.reconnect === this.NONE) return;
|
756
756
|
if (this._state !== this.UNCONNECTED) return;
|
757
|
-
|
757
|
+
|
758
758
|
this._state = this.CONNECTING;
|
759
759
|
var self = this;
|
760
|
-
|
760
|
+
|
761
761
|
this.info('Initiating handshake with ?', this.endpoint);
|
762
|
-
|
762
|
+
this._selectTransport(Faye.MANDATORY_CONNECTION_TYPES);
|
763
|
+
|
763
764
|
this._send({
|
764
765
|
channel: Faye.Channel.HANDSHAKE,
|
765
766
|
version: Faye.BAYEUX_VERSION,
|
766
767
|
supportedConnectionTypes: [this._transport.connectionType]
|
767
|
-
|
768
|
+
|
768
769
|
}, function(response) {
|
769
|
-
|
770
|
+
|
770
771
|
if (response.successful) {
|
771
772
|
this._state = this.CONNECTED;
|
772
773
|
this._clientId = response.clientId;
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
}, this);
|
777
|
-
this._selectTransport(connectionTypes);
|
778
|
-
|
774
|
+
|
775
|
+
this._selectTransport(response.supportedConnectionTypes);
|
776
|
+
|
779
777
|
this.info('Handshake successful: ?', this._clientId);
|
780
|
-
|
778
|
+
|
781
779
|
this.subscribe(this._channels.getKeys(), true);
|
782
780
|
if (callback) callback.call(context);
|
783
|
-
|
781
|
+
|
784
782
|
} else {
|
785
783
|
this.info('Handshake unsuccessful');
|
786
784
|
Faye.ENV.setTimeout(function() { self.handshake(callback, context) }, this._advice.interval);
|
@@ -788,7 +786,7 @@ Faye.Client = Faye.Class({
|
|
788
786
|
}
|
789
787
|
}, this);
|
790
788
|
},
|
791
|
-
|
789
|
+
|
792
790
|
// Request Response
|
793
791
|
// MUST include: * channel MUST include: * channel
|
794
792
|
// * clientId * successful
|
@@ -801,30 +799,30 @@ Faye.Client = Faye.Class({
|
|
801
799
|
connect: function(callback, context) {
|
802
800
|
if (this._advice.reconnect === this.NONE) return;
|
803
801
|
if (this._state === this.DISCONNECTED) return;
|
804
|
-
|
802
|
+
|
805
803
|
if (this._state === this.UNCONNECTED)
|
806
804
|
return this.handshake(function() { this.connect(callback, context) }, this);
|
807
|
-
|
805
|
+
|
808
806
|
this.callback(callback, context);
|
809
807
|
if (this._state !== this.CONNECTED) return;
|
810
|
-
|
808
|
+
|
811
809
|
this.info('Calling deferred actions for ?', this._clientId);
|
812
810
|
this.setDeferredStatus('succeeded');
|
813
811
|
this.setDeferredStatus('deferred');
|
814
|
-
|
812
|
+
|
815
813
|
if (this._connectRequest) return;
|
816
814
|
this._connectRequest = true;
|
817
|
-
|
815
|
+
|
818
816
|
this.info('Initiating connection for ?', this._clientId);
|
819
|
-
|
817
|
+
|
820
818
|
this._send({
|
821
819
|
channel: Faye.Channel.CONNECT,
|
822
820
|
clientId: this._clientId,
|
823
821
|
connectionType: this._transport.connectionType
|
824
|
-
|
822
|
+
|
825
823
|
}, this._cycleConnection, this);
|
826
824
|
},
|
827
|
-
|
825
|
+
|
828
826
|
// Request Response
|
829
827
|
// MUST include: * channel MUST include: * channel
|
830
828
|
// * clientId * successful
|
@@ -835,21 +833,21 @@ Faye.Client = Faye.Class({
|
|
835
833
|
disconnect: function() {
|
836
834
|
if (this._state !== this.CONNECTED) return;
|
837
835
|
this._state = this.DISCONNECTED;
|
838
|
-
|
836
|
+
|
839
837
|
this.info('Disconnecting ?', this._clientId);
|
840
|
-
|
838
|
+
|
841
839
|
this._send({
|
842
840
|
channel: Faye.Channel.DISCONNECT,
|
843
841
|
clientId: this._clientId
|
844
|
-
|
842
|
+
|
845
843
|
}, function(response) {
|
846
844
|
if (response.successful) this._transport.close();
|
847
845
|
}, this);
|
848
|
-
|
846
|
+
|
849
847
|
this.info('Clearing channel listeners for ?', this._clientId);
|
850
848
|
this._channels = new Faye.Channel.Set();
|
851
849
|
},
|
852
|
-
|
850
|
+
|
853
851
|
// Request Response
|
854
852
|
// MUST include: * channel MUST include: * channel
|
855
853
|
// * clientId * successful
|
@@ -865,41 +863,41 @@ Faye.Client = Faye.Class({
|
|
865
863
|
return Faye.map(channel, function(c) {
|
866
864
|
return this.subscribe(c, callback, context);
|
867
865
|
}, this);
|
868
|
-
|
866
|
+
|
869
867
|
var subscription = new Faye.Subscription(this, channel, callback, context),
|
870
868
|
force = (callback === true),
|
871
869
|
hasSubscribe = this._channels.hasSubscription(channel);
|
872
|
-
|
870
|
+
|
873
871
|
if (hasSubscribe && !force) {
|
874
872
|
this._channels.subscribe([channel], callback, context);
|
875
873
|
subscription.setDeferredStatus('succeeded');
|
876
874
|
return subscription;
|
877
875
|
}
|
878
|
-
|
876
|
+
|
879
877
|
this.connect(function() {
|
880
878
|
this.info('Client ? attempting to subscribe to ?', this._clientId, channel);
|
881
879
|
if (!force) this._channels.subscribe([channel], callback, context);
|
882
|
-
|
880
|
+
|
883
881
|
this._send({
|
884
882
|
channel: Faye.Channel.SUBSCRIBE,
|
885
883
|
clientId: this._clientId,
|
886
884
|
subscription: channel
|
887
|
-
|
885
|
+
|
888
886
|
}, function(response) {
|
889
887
|
if (!response.successful) {
|
890
888
|
subscription.setDeferredStatus('failed', Faye.Error.parse(response.error));
|
891
889
|
return this._channels.unsubscribe(channel, callback, context);
|
892
890
|
}
|
893
|
-
|
891
|
+
|
894
892
|
var channels = [].concat(response.subscription);
|
895
893
|
this.info('Subscription acknowledged for ? to ?', this._clientId, channels);
|
896
894
|
subscription.setDeferredStatus('succeeded');
|
897
895
|
}, this);
|
898
896
|
}, this);
|
899
|
-
|
897
|
+
|
900
898
|
return subscription;
|
901
899
|
},
|
902
|
-
|
900
|
+
|
903
901
|
// Request Response
|
904
902
|
// MUST include: * channel MUST include: * channel
|
905
903
|
// * clientId * successful
|
@@ -915,27 +913,27 @@ Faye.Client = Faye.Class({
|
|
915
913
|
return Faye.map(channel, function(c) {
|
916
914
|
return this.unsubscribe(c, callback, context);
|
917
915
|
}, this);
|
918
|
-
|
916
|
+
|
919
917
|
var dead = this._channels.unsubscribe(channel, callback, context);
|
920
918
|
if (!dead) return;
|
921
|
-
|
919
|
+
|
922
920
|
this.connect(function() {
|
923
921
|
this.info('Client ? attempting to unsubscribe from ?', this._clientId, channel);
|
924
|
-
|
922
|
+
|
925
923
|
this._send({
|
926
924
|
channel: Faye.Channel.UNSUBSCRIBE,
|
927
925
|
clientId: this._clientId,
|
928
926
|
subscription: channel
|
929
|
-
|
927
|
+
|
930
928
|
}, function(response) {
|
931
929
|
if (!response.successful) return;
|
932
|
-
|
930
|
+
|
933
931
|
var channels = [].concat(response.subscription);
|
934
932
|
this.info('Unsubscription acknowledged for ? from ?', this._clientId, channels);
|
935
933
|
}, this);
|
936
934
|
}, this);
|
937
935
|
},
|
938
|
-
|
936
|
+
|
939
937
|
// Request Response
|
940
938
|
// MUST include: * channel MUST include: * channel
|
941
939
|
// * data * successful
|
@@ -944,10 +942,10 @@ Faye.Client = Faye.Class({
|
|
944
942
|
// * ext * ext
|
945
943
|
publish: function(channel, data) {
|
946
944
|
var publication = new Faye.Publication();
|
947
|
-
|
945
|
+
|
948
946
|
this.connect(function() {
|
949
947
|
this.info('Client ? queueing published message to ?: ?', this._clientId, channel, data);
|
950
|
-
|
948
|
+
|
951
949
|
this._send({
|
952
950
|
channel: channel,
|
953
951
|
data: data,
|
@@ -959,41 +957,44 @@ Faye.Client = Faye.Class({
|
|
959
957
|
publication.setDeferredStatus('failed', Faye.Error.parse(response.error));
|
960
958
|
}, this);
|
961
959
|
}, this);
|
962
|
-
|
960
|
+
|
963
961
|
return publication;
|
964
962
|
},
|
965
|
-
|
963
|
+
|
966
964
|
receiveMessage: function(message) {
|
967
965
|
this.pipeThroughExtensions('incoming', message, function(message) {
|
968
966
|
if (!message) return;
|
969
|
-
|
967
|
+
|
970
968
|
if (message.advice) this._handleAdvice(message.advice);
|
971
969
|
this._deliverMessage(message);
|
972
|
-
|
970
|
+
|
973
971
|
if (message.successful === undefined) return;
|
974
|
-
|
972
|
+
|
975
973
|
var callback = this._responseCallbacks[message.id];
|
976
974
|
if (!callback) return;
|
977
|
-
|
975
|
+
|
978
976
|
delete this._responseCallbacks[message.id];
|
979
977
|
callback[0].call(callback[1], message);
|
980
978
|
}, this);
|
981
979
|
},
|
982
|
-
|
980
|
+
|
983
981
|
_selectTransport: function(transportTypes) {
|
984
|
-
Faye.Transport.get(this, transportTypes, function(transport) {
|
982
|
+
Faye.Transport.get(this, transportTypes, this._disabled, function(transport) {
|
985
983
|
this.debug('Selected ? transport for ?', transport.connectionType, transport.endpoint);
|
986
|
-
|
984
|
+
|
985
|
+
if (transport === this._transport) return;
|
986
|
+
if (this._transport) this._transport.close();
|
987
|
+
|
987
988
|
this._transport = transport;
|
988
989
|
this._transport.cookies = this._cookies;
|
989
990
|
this._transport.headers = this._headers;
|
990
|
-
|
991
|
+
|
991
992
|
transport.bind('down', function() {
|
992
993
|
if (this._transportUp !== undefined && !this._transportUp) return;
|
993
994
|
this._transportUp = false;
|
994
995
|
this.trigger('transport:down');
|
995
996
|
}, this);
|
996
|
-
|
997
|
+
|
997
998
|
transport.bind('up', function() {
|
998
999
|
if (this._transportUp !== undefined && this._transportUp) return;
|
999
1000
|
this._transportUp = true;
|
@@ -1001,7 +1002,7 @@ Faye.Client = Faye.Class({
|
|
1001
1002
|
}, this);
|
1002
1003
|
}, this);
|
1003
1004
|
},
|
1004
|
-
|
1005
|
+
|
1005
1006
|
_send: function(message, callback, context) {
|
1006
1007
|
message.id = this._generateMessageId();
|
1007
1008
|
if (callback) this._responseCallbacks[message.id] = [callback, context];
|
@@ -1011,7 +1012,7 @@ Faye.Client = Faye.Class({
|
|
1011
1012
|
this._transport.send(message, this._advice.timeout / 1000);
|
1012
1013
|
}, this);
|
1013
1014
|
},
|
1014
|
-
|
1015
|
+
|
1015
1016
|
_generateMessageId: function() {
|
1016
1017
|
this._messageId += 1;
|
1017
1018
|
if (this._messageId >= Math.pow(2,32)) this._messageId = 0;
|
@@ -1020,26 +1021,26 @@ Faye.Client = Faye.Class({
|
|
1020
1021
|
|
1021
1022
|
_handleAdvice: function(advice) {
|
1022
1023
|
Faye.extend(this._advice, advice);
|
1023
|
-
|
1024
|
+
|
1024
1025
|
if (this._advice.reconnect === this.HANDSHAKE && this._state !== this.DISCONNECTED) {
|
1025
1026
|
this._state = this.UNCONNECTED;
|
1026
1027
|
this._clientId = null;
|
1027
1028
|
this._cycleConnection();
|
1028
1029
|
}
|
1029
1030
|
},
|
1030
|
-
|
1031
|
+
|
1031
1032
|
_deliverMessage: function(message) {
|
1032
1033
|
if (!message.channel || message.data === undefined) return;
|
1033
1034
|
this.info('Client ? calling listeners for ? with ?', this._clientId, message.channel, message.data);
|
1034
1035
|
this._channels.distributeMessage(message);
|
1035
1036
|
},
|
1036
|
-
|
1037
|
+
|
1037
1038
|
_teardownConnection: function() {
|
1038
1039
|
if (!this._connectRequest) return;
|
1039
1040
|
this._connectRequest = null;
|
1040
1041
|
this.info('Closed connection for ?', this._clientId);
|
1041
1042
|
},
|
1042
|
-
|
1043
|
+
|
1043
1044
|
_cycleConnection: function() {
|
1044
1045
|
this._teardownConnection();
|
1045
1046
|
var self = this;
|
@@ -1062,9 +1063,9 @@ Faye.Transport = Faye.extend(Faye.Class({
|
|
1062
1063
|
this.endpoint = endpoint;
|
1063
1064
|
this._outbox = [];
|
1064
1065
|
},
|
1065
|
-
|
1066
|
+
|
1066
1067
|
close: function() {},
|
1067
|
-
|
1068
|
+
|
1068
1069
|
send: function(message, timeout) {
|
1069
1070
|
this.debug('Client ? sending message to ?: ?',
|
1070
1071
|
this._client._clientId, this.endpoint, message);
|
@@ -1093,48 +1094,50 @@ Faye.Transport = Faye.extend(Faye.Class({
|
|
1093
1094
|
this._connectMessage.advice = {timeout: 0};
|
1094
1095
|
|
1095
1096
|
this.request(this._outbox, this._timeout);
|
1096
|
-
|
1097
|
+
|
1097
1098
|
this._connectMessage = null;
|
1098
1099
|
this._outbox = [];
|
1099
1100
|
},
|
1100
|
-
|
1101
|
+
|
1101
1102
|
receive: function(responses) {
|
1102
1103
|
this.debug('Client ? received from ?: ?',
|
1103
1104
|
this._client._clientId, this.endpoint, responses);
|
1104
|
-
|
1105
|
+
|
1105
1106
|
for (var i = 0, n = responses.length; i < n; i++) {
|
1106
1107
|
this._client.receiveMessage(responses[i]);
|
1107
1108
|
}
|
1108
1109
|
},
|
1109
|
-
|
1110
|
+
|
1110
1111
|
retry: function(message, timeout) {
|
1111
1112
|
var called = false,
|
1112
1113
|
retry = this._client.retry * 1000,
|
1113
1114
|
self = this;
|
1114
|
-
|
1115
|
+
|
1115
1116
|
return function() {
|
1116
1117
|
if (called) return;
|
1117
1118
|
called = true;
|
1118
1119
|
Faye.ENV.setTimeout(function() { self.request(message, timeout) }, retry);
|
1119
1120
|
};
|
1120
1121
|
}
|
1121
|
-
|
1122
|
+
|
1122
1123
|
}), {
|
1123
1124
|
MAX_URL_LENGTH: 2048,
|
1124
|
-
|
1125
|
-
get: function(client,
|
1125
|
+
|
1126
|
+
get: function(client, allowed, disabled, callback, context) {
|
1126
1127
|
var endpoint = client.endpoint;
|
1127
|
-
|
1128
|
-
|
1128
|
+
|
1129
1129
|
Faye.asyncEach(this._transports, function(pair, resume) {
|
1130
1130
|
var connType = pair[0], klass = pair[1],
|
1131
1131
|
connEndpoint = client.endpoints[connType] || endpoint;
|
1132
|
-
|
1133
|
-
if (Faye.indexOf(
|
1132
|
+
|
1133
|
+
if (Faye.indexOf(disabled, connType) >= 0)
|
1134
|
+
return resume();
|
1135
|
+
|
1136
|
+
if (Faye.indexOf(allowed, connType) < 0) {
|
1134
1137
|
klass.isUsable(client, connEndpoint, function() {});
|
1135
1138
|
return resume();
|
1136
1139
|
}
|
1137
|
-
|
1140
|
+
|
1138
1141
|
klass.isUsable(client, connEndpoint, function(isUsable) {
|
1139
1142
|
if (!isUsable) return resume();
|
1140
1143
|
var transport = klass.hasOwnProperty('create') ? klass.create(client, connEndpoint) : new klass(client, connEndpoint);
|
@@ -1144,17 +1147,13 @@ Faye.Transport = Faye.extend(Faye.Class({
|
|
1144
1147
|
throw new Error('Could not find a usable connection type for ' + endpoint);
|
1145
1148
|
});
|
1146
1149
|
},
|
1147
|
-
|
1150
|
+
|
1148
1151
|
register: function(type, klass) {
|
1149
1152
|
this._transports.push([type, klass]);
|
1150
1153
|
klass.prototype.connectionType = type;
|
1151
1154
|
},
|
1152
|
-
|
1153
|
-
_transports: []
|
1154
|
-
|
1155
|
-
supportedConnectionTypes: function() {
|
1156
|
-
return Faye.map(this._transports, function(pair) { return pair[0] });
|
1157
|
-
}
|
1155
|
+
|
1156
|
+
_transports: []
|
1158
1157
|
});
|
1159
1158
|
|
1160
1159
|
Faye.extend(Faye.Transport.prototype, Faye.Logging);
|
@@ -1164,15 +1163,15 @@ Faye.extend(Faye.Transport.prototype, Faye.Timeouts);
|
|
1164
1163
|
|
1165
1164
|
Faye.Event = {
|
1166
1165
|
_registry: [],
|
1167
|
-
|
1166
|
+
|
1168
1167
|
on: function(element, eventName, callback, context) {
|
1169
1168
|
var wrapped = function() { callback.call(context) };
|
1170
|
-
|
1169
|
+
|
1171
1170
|
if (element.addEventListener)
|
1172
1171
|
element.addEventListener(eventName, wrapped, false);
|
1173
1172
|
else
|
1174
1173
|
element.attachEvent('on' + eventName, wrapped);
|
1175
|
-
|
1174
|
+
|
1176
1175
|
this._registry.push({
|
1177
1176
|
_element: element,
|
1178
1177
|
_type: eventName,
|
@@ -1181,23 +1180,23 @@ Faye.Event = {
|
|
1181
1180
|
_handler: wrapped
|
1182
1181
|
});
|
1183
1182
|
},
|
1184
|
-
|
1183
|
+
|
1185
1184
|
detach: function(element, eventName, callback, context) {
|
1186
1185
|
var i = this._registry.length, register;
|
1187
1186
|
while (i--) {
|
1188
1187
|
register = this._registry[i];
|
1189
|
-
|
1188
|
+
|
1190
1189
|
if ((element && element !== register._element) ||
|
1191
1190
|
(eventName && eventName !== register._type) ||
|
1192
1191
|
(callback && callback !== register._callback) ||
|
1193
1192
|
(context && context !== register._context))
|
1194
1193
|
continue;
|
1195
|
-
|
1194
|
+
|
1196
1195
|
if (register._element.removeEventListener)
|
1197
1196
|
register._element.removeEventListener(register._type, register._handler, false);
|
1198
1197
|
else
|
1199
1198
|
register._element.detachEvent('on' + register._type, register._handler);
|
1200
|
-
|
1199
|
+
|
1201
1200
|
this._registry.splice(i,1);
|
1202
1201
|
register = null;
|
1203
1202
|
}
|
@@ -1216,17 +1215,17 @@ Faye.URI = Faye.extend(Faye.Class({
|
|
1216
1215
|
}
|
1217
1216
|
return pairs.join('&');
|
1218
1217
|
},
|
1219
|
-
|
1218
|
+
|
1220
1219
|
isSameOrigin: function() {
|
1221
|
-
var host = Faye.URI.parse(Faye.ENV.location.href);
|
1222
|
-
|
1220
|
+
var host = Faye.URI.parse(Faye.ENV.location.href, false);
|
1221
|
+
|
1223
1222
|
var external = (host.hostname !== this.hostname) ||
|
1224
1223
|
(host.port !== this.port) ||
|
1225
1224
|
(host.protocol !== this.protocol);
|
1226
|
-
|
1225
|
+
|
1227
1226
|
return !external;
|
1228
1227
|
},
|
1229
|
-
|
1228
|
+
|
1230
1229
|
toURL: function() {
|
1231
1230
|
var query = this.queryString();
|
1232
1231
|
return this.protocol + '//' + this.hostname + (this.port ? ':' + this.port : '') +
|
@@ -1236,7 +1235,7 @@ Faye.URI = Faye.extend(Faye.Class({
|
|
1236
1235
|
parse: function(url, params) {
|
1237
1236
|
if (typeof url !== 'string') return url;
|
1238
1237
|
var uri = new this(), parts;
|
1239
|
-
|
1238
|
+
|
1240
1239
|
var consume = function(name, pattern, infer) {
|
1241
1240
|
url = url.replace(pattern, function(match) {
|
1242
1241
|
uri[name] = match;
|
@@ -1245,15 +1244,15 @@ Faye.URI = Faye.extend(Faye.Class({
|
|
1245
1244
|
if (uri[name] === undefined)
|
1246
1245
|
uri[name] = infer ? Faye.ENV.location[name] : '';
|
1247
1246
|
};
|
1248
|
-
|
1247
|
+
|
1249
1248
|
consume('protocol', /^https?\:/, true);
|
1250
1249
|
consume('host', /^\/\/[^\/]+/, true);
|
1251
|
-
|
1250
|
+
|
1252
1251
|
if (!/^\//.test(url)) url = Faye.ENV.location.pathname.replace(/[^\/]*$/, '') + url;
|
1253
1252
|
consume('pathname', /^\/[^\?#]*/);
|
1254
1253
|
consume('search', /^\?[^#]*/);
|
1255
1254
|
consume('hash', /^#.*/);
|
1256
|
-
|
1255
|
+
|
1257
1256
|
if (/^\/\//.test(uri.host)) {
|
1258
1257
|
uri.host = uri.host.substr(2);
|
1259
1258
|
parts = uri.host.split(':');
|
@@ -1263,20 +1262,24 @@ Faye.URI = Faye.extend(Faye.Class({
|
|
1263
1262
|
uri.hostname = Faye.ENV.location.hostname;
|
1264
1263
|
uri.port = Faye.ENV.location.port;
|
1265
1264
|
}
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1265
|
+
|
1266
|
+
if (params === false) {
|
1267
|
+
uri.params = {};
|
1268
|
+
} else {
|
1269
|
+
var query = uri.search.replace(/^\?/, ''),
|
1270
|
+
pairs = query ? query.split('&') : [],
|
1271
|
+
n = pairs.length,
|
1272
|
+
data = {};
|
1273
|
+
|
1274
|
+
while (n--) {
|
1275
|
+
parts = pairs[n].split('=');
|
1276
|
+
data[decodeURIComponent(parts[0] || '')] = decodeURIComponent(parts[1] || '');
|
1277
|
+
}
|
1278
|
+
if (typeof params === 'object') Faye.extend(data, params);
|
1279
|
+
|
1280
|
+
uri.params = data;
|
1275
1281
|
}
|
1276
|
-
|
1277
|
-
|
1278
|
-
uri.params = data;
|
1279
|
-
|
1282
|
+
|
1280
1283
|
return uri;
|
1281
1284
|
}
|
1282
1285
|
});
|
@@ -1773,75 +1776,81 @@ Faye.Transport.WebSocket = Faye.extend(Faye.Class(Faye.Transport, {
|
|
1773
1776
|
CONNECTED: 3,
|
1774
1777
|
|
1775
1778
|
batching: false,
|
1776
|
-
|
1779
|
+
|
1777
1780
|
isUsable: function(callback, context) {
|
1778
1781
|
this.callback(function() { callback.call(context, true) });
|
1779
1782
|
this.errback(function() { callback.call(context, false) });
|
1780
1783
|
this.connect();
|
1781
1784
|
},
|
1782
|
-
|
1785
|
+
|
1783
1786
|
request: function(messages, timeout) {
|
1784
1787
|
if (messages.length === 0) return;
|
1785
1788
|
this._messages = this._messages || {};
|
1786
|
-
|
1789
|
+
|
1787
1790
|
for (var i = 0, n = messages.length; i < n; i++) {
|
1788
1791
|
this._messages[messages[i].id] = messages[i];
|
1789
1792
|
}
|
1790
1793
|
this.callback(function(socket) { socket.send(Faye.toJSON(messages)) });
|
1791
1794
|
this.connect();
|
1792
1795
|
},
|
1793
|
-
|
1796
|
+
|
1794
1797
|
close: function() {
|
1795
|
-
if (this.
|
1796
|
-
this.
|
1797
|
-
|
1798
|
+
if (!this._socket) return;
|
1799
|
+
this._socket.onclose = this._socket.onerror = null;
|
1800
|
+
this._socket.close();
|
1801
|
+
delete this._socket;
|
1802
|
+
this.setDeferredStatus('deferred');
|
1803
|
+
this._state = this.UNCONNECTED;
|
1798
1804
|
},
|
1799
|
-
|
1805
|
+
|
1800
1806
|
connect: function() {
|
1801
1807
|
if (Faye.Transport.WebSocket._unloaded) return;
|
1802
|
-
|
1803
|
-
|
1808
|
+
|
1804
1809
|
this._state = this._state || this.UNCONNECTED;
|
1805
1810
|
if (this._state !== this.UNCONNECTED) return;
|
1806
|
-
|
1811
|
+
|
1807
1812
|
this._state = this.CONNECTING;
|
1808
|
-
|
1813
|
+
|
1809
1814
|
var ws = Faye.Transport.WebSocket.getClass();
|
1810
1815
|
if (!ws) return this.setDeferredStatus('failed');
|
1811
|
-
|
1816
|
+
|
1812
1817
|
this._socket = new ws(Faye.Transport.WebSocket.getSocketUrl(this.endpoint));
|
1813
1818
|
var self = this;
|
1814
|
-
|
1819
|
+
|
1815
1820
|
this._socket.onopen = function() {
|
1816
1821
|
self._state = self.CONNECTED;
|
1817
1822
|
self._everConnected = true;
|
1818
1823
|
self.setDeferredStatus('succeeded', self._socket);
|
1819
1824
|
self.trigger('up');
|
1820
1825
|
};
|
1821
|
-
|
1826
|
+
|
1822
1827
|
this._socket.onmessage = function(event) {
|
1823
|
-
var messages =
|
1828
|
+
var messages = JSON.parse(event.data);
|
1829
|
+
if (!messages) return;
|
1830
|
+
messages = [].concat(messages);
|
1831
|
+
|
1824
1832
|
for (var i = 0, n = messages.length; i < n; i++) {
|
1825
1833
|
delete self._messages[messages[i].id];
|
1826
1834
|
}
|
1827
1835
|
self.receive(messages);
|
1828
1836
|
};
|
1829
|
-
|
1830
|
-
this._socket.onclose = function() {
|
1837
|
+
|
1838
|
+
this._socket.onclose = this._socket.onerror = function() {
|
1831
1839
|
var wasConnected = (self._state === self.CONNECTED);
|
1832
1840
|
self.setDeferredStatus('deferred');
|
1833
1841
|
self._state = self.UNCONNECTED;
|
1834
|
-
|
1835
|
-
|
1842
|
+
|
1843
|
+
self.close();
|
1844
|
+
|
1836
1845
|
if (wasConnected) return self.resend();
|
1837
1846
|
if (!self._everConnected) return self.setDeferredStatus('failed');
|
1838
|
-
|
1847
|
+
|
1839
1848
|
var retry = self._client.retry * 1000;
|
1840
1849
|
Faye.ENV.setTimeout(function() { self.connect() }, retry);
|
1841
1850
|
self.trigger('down');
|
1842
1851
|
};
|
1843
1852
|
},
|
1844
|
-
|
1853
|
+
|
1845
1854
|
resend: function() {
|
1846
1855
|
if (!this._messages) return;
|
1847
1856
|
var messages = Faye.map(this._messages, function(id, msg) { return msg });
|
@@ -1852,17 +1861,17 @@ Faye.Transport.WebSocket = Faye.extend(Faye.Class(Faye.Transport, {
|
|
1852
1861
|
if (Faye.URI) endpoint = Faye.URI.parse(endpoint).toURL();
|
1853
1862
|
return endpoint.replace(/^http(s?):/ig, 'ws$1:');
|
1854
1863
|
},
|
1855
|
-
|
1864
|
+
|
1856
1865
|
getClass: function() {
|
1857
1866
|
return (Faye.WebSocket && Faye.WebSocket.Client) ||
|
1858
1867
|
Faye.ENV.WebSocket ||
|
1859
1868
|
Faye.ENV.MozWebSocket;
|
1860
1869
|
},
|
1861
|
-
|
1870
|
+
|
1862
1871
|
isUsable: function(client, endpoint, callback, context) {
|
1863
1872
|
this.create(client, endpoint).isUsable(callback, context);
|
1864
1873
|
},
|
1865
|
-
|
1874
|
+
|
1866
1875
|
create: function(client, endpoint) {
|
1867
1876
|
var sockets = client.transports.websocket = client.transports.websocket || {};
|
1868
1877
|
sockets[endpoint] = sockets[endpoint] || new this(client, endpoint);
|
@@ -1883,18 +1892,18 @@ Faye.Transport.EventSource = Faye.extend(Faye.Class(Faye.Transport, {
|
|
1883
1892
|
initialize: function(client, endpoint) {
|
1884
1893
|
Faye.Transport.prototype.initialize.call(this, client, endpoint);
|
1885
1894
|
if (!Faye.ENV.EventSource) return this.setDeferredStatus('failed');
|
1886
|
-
|
1895
|
+
|
1887
1896
|
this._xhr = new Faye.Transport.XHR(client, endpoint);
|
1888
|
-
|
1897
|
+
|
1889
1898
|
var socket = new EventSource(endpoint + '/' + client.getClientId()),
|
1890
1899
|
self = this;
|
1891
|
-
|
1900
|
+
|
1892
1901
|
socket.onopen = function() {
|
1893
1902
|
self._everConnected = true;
|
1894
1903
|
self.setDeferredStatus('succeeded');
|
1895
1904
|
self.trigger('up');
|
1896
1905
|
};
|
1897
|
-
|
1906
|
+
|
1898
1907
|
socket.onerror = function() {
|
1899
1908
|
if (self._everConnected) {
|
1900
1909
|
self.trigger('down');
|
@@ -1903,40 +1912,46 @@ Faye.Transport.EventSource = Faye.extend(Faye.Class(Faye.Transport, {
|
|
1903
1912
|
socket.close();
|
1904
1913
|
}
|
1905
1914
|
};
|
1906
|
-
|
1915
|
+
|
1907
1916
|
socket.onmessage = function(event) {
|
1908
1917
|
self.receive(JSON.parse(event.data));
|
1909
1918
|
self.trigger('up');
|
1910
1919
|
};
|
1911
|
-
|
1920
|
+
|
1912
1921
|
this._socket = socket;
|
1913
1922
|
},
|
1914
|
-
|
1923
|
+
|
1915
1924
|
isUsable: function(callback, context) {
|
1916
1925
|
this.callback(function() { callback.call(context, true) });
|
1917
1926
|
this.errback(function() { callback.call(context, false) });
|
1918
1927
|
},
|
1919
|
-
|
1928
|
+
|
1920
1929
|
request: function(message, timeout) {
|
1921
1930
|
this._xhr.request(message, timeout);
|
1922
1931
|
},
|
1923
|
-
|
1932
|
+
|
1924
1933
|
close: function() {
|
1934
|
+
if (!this._socket) return;
|
1935
|
+
this._socket.onerror = null;
|
1925
1936
|
this._socket.close();
|
1937
|
+
delete this._socket;
|
1926
1938
|
}
|
1927
1939
|
}), {
|
1928
1940
|
isUsable: function(client, endpoint, callback, context) {
|
1929
1941
|
var id = client.getClientId();
|
1930
1942
|
if (!id) return callback.call(context, false);
|
1931
|
-
|
1943
|
+
|
1932
1944
|
Faye.Transport.XHR.isUsable(client, endpoint, function(usable) {
|
1933
1945
|
if (!usable) return callback.call(context, false);
|
1934
1946
|
this.create(client, endpoint).isUsable(callback, context);
|
1935
1947
|
}, this);
|
1936
1948
|
},
|
1937
|
-
|
1949
|
+
|
1938
1950
|
create: function(client, endpoint) {
|
1939
|
-
var sockets
|
1951
|
+
var sockets = client.transports.eventsource = client.transports.eventsource || {},
|
1952
|
+
id = client.getClientId(),
|
1953
|
+
endpoint = endpoint + '/' + (id || '');
|
1954
|
+
|
1940
1955
|
sockets[endpoint] = sockets[endpoint] || new this(client, endpoint);
|
1941
1956
|
return sockets[endpoint];
|
1942
1957
|
}
|
@@ -1954,48 +1969,48 @@ Faye.Transport.XHR = Faye.extend(Faye.Class(Faye.Transport, {
|
|
1954
1969
|
xhr = Faye.ENV.ActiveXObject
|
1955
1970
|
? new ActiveXObject("Microsoft.XMLHTTP")
|
1956
1971
|
: new XMLHttpRequest();
|
1957
|
-
|
1972
|
+
|
1958
1973
|
xhr.open('POST', path, true);
|
1959
1974
|
xhr.setRequestHeader('Content-Type', 'application/json');
|
1960
1975
|
xhr.setRequestHeader('Pragma', 'no-cache');
|
1961
1976
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
1962
|
-
|
1977
|
+
|
1963
1978
|
var headers = this.headers;
|
1964
1979
|
for (var key in headers) {
|
1965
1980
|
if (!headers.hasOwnProperty(key)) continue;
|
1966
1981
|
xhr.setRequestHeader(key, headers[key]);
|
1967
1982
|
}
|
1968
|
-
|
1983
|
+
|
1969
1984
|
var abort = function() { xhr.abort() };
|
1970
1985
|
Faye.Event.on(Faye.ENV, 'beforeunload', abort);
|
1971
|
-
|
1986
|
+
|
1972
1987
|
var cleanUp = function() {
|
1973
1988
|
Faye.Event.detach(Faye.ENV, 'beforeunload', abort);
|
1974
1989
|
xhr.onreadystatechange = function() {};
|
1975
1990
|
xhr = null;
|
1976
1991
|
};
|
1977
|
-
|
1992
|
+
|
1978
1993
|
xhr.onreadystatechange = function() {
|
1979
1994
|
if (xhr.readyState !== 4) return;
|
1980
|
-
|
1995
|
+
|
1981
1996
|
var parsedMessage = null,
|
1982
1997
|
status = xhr.status,
|
1983
1998
|
successful = ((status >= 200 && status < 300) ||
|
1984
1999
|
status === 304 ||
|
1985
2000
|
status === 1223);
|
1986
|
-
|
2001
|
+
|
1987
2002
|
if (!successful) {
|
1988
2003
|
cleanUp();
|
1989
2004
|
retry();
|
1990
2005
|
return self.trigger('down');
|
1991
2006
|
}
|
1992
|
-
|
2007
|
+
|
1993
2008
|
try {
|
1994
2009
|
parsedMessage = JSON.parse(xhr.responseText);
|
1995
2010
|
} catch (e) {}
|
1996
|
-
|
2011
|
+
|
1997
2012
|
cleanUp();
|
1998
|
-
|
2013
|
+
|
1999
2014
|
if (parsedMessage) {
|
2000
2015
|
self.receive(parsedMessage);
|
2001
2016
|
self.trigger('up');
|
@@ -2021,10 +2036,10 @@ Faye.Transport.CORS = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2021
2036
|
xhr = new xhrClass(),
|
2022
2037
|
retry = this.retry(message, timeout),
|
2023
2038
|
self = this;
|
2024
|
-
|
2039
|
+
|
2025
2040
|
xhr.open('POST', this.endpoint, true);
|
2026
2041
|
if (xhr.setRequestHeader) xhr.setRequestHeader('Pragma', 'no-cache');
|
2027
|
-
|
2042
|
+
|
2028
2043
|
var cleanUp = function() {
|
2029
2044
|
if (!xhr) return false;
|
2030
2045
|
xhr.onload = xhr.onerror = xhr.ontimeout = xhr.onprogress = null;
|
@@ -2032,15 +2047,15 @@ Faye.Transport.CORS = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2032
2047
|
Faye.ENV.clearTimeout(timer);
|
2033
2048
|
return true;
|
2034
2049
|
};
|
2035
|
-
|
2050
|
+
|
2036
2051
|
xhr.onload = function() {
|
2037
2052
|
var parsedMessage = null;
|
2038
2053
|
try {
|
2039
2054
|
parsedMessage = JSON.parse(xhr.responseText);
|
2040
2055
|
} catch (e) {}
|
2041
|
-
|
2056
|
+
|
2042
2057
|
cleanUp();
|
2043
|
-
|
2058
|
+
|
2044
2059
|
if (parsedMessage) {
|
2045
2060
|
self.receive(parsedMessage);
|
2046
2061
|
self.trigger('up');
|
@@ -2049,7 +2064,7 @@ Faye.Transport.CORS = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2049
2064
|
self.trigger('down');
|
2050
2065
|
}
|
2051
2066
|
};
|
2052
|
-
|
2067
|
+
|
2053
2068
|
var onerror = function() {
|
2054
2069
|
cleanUp();
|
2055
2070
|
retry();
|
@@ -2058,7 +2073,7 @@ Faye.Transport.CORS = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2058
2073
|
var timer = Faye.ENV.setTimeout(onerror, 1.5 * 1000 * timeout);
|
2059
2074
|
xhr.onerror = onerror;
|
2060
2075
|
xhr.ontimeout = onerror;
|
2061
|
-
|
2076
|
+
|
2062
2077
|
xhr.onprogress = function() {};
|
2063
2078
|
xhr.send('message=' + encodeURIComponent(Faye.toJSON(message)));
|
2064
2079
|
}
|
@@ -2066,11 +2081,11 @@ Faye.Transport.CORS = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2066
2081
|
isUsable: function(client, endpoint, callback, context) {
|
2067
2082
|
if (Faye.URI.parse(endpoint).isSameOrigin())
|
2068
2083
|
return callback.call(context, false);
|
2069
|
-
|
2084
|
+
|
2070
2085
|
if (Faye.ENV.XDomainRequest)
|
2071
2086
|
return callback.call(context, Faye.URI.parse(endpoint).protocol ===
|
2072
2087
|
Faye.URI.parse(Faye.ENV.location).protocol);
|
2073
|
-
|
2088
|
+
|
2074
2089
|
if (Faye.ENV.XMLHttpRequest) {
|
2075
2090
|
var xhr = new Faye.ENV.XMLHttpRequest();
|
2076
2091
|
return callback.call(context, xhr.withCredentials !== undefined);
|
@@ -2091,7 +2106,7 @@ Faye.Transport.JSONP = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2091
2106
|
var location = Faye.URI.parse(this.endpoint, params).toURL();
|
2092
2107
|
return location.length >= Faye.Transport.MAX_URL_LENGTH;
|
2093
2108
|
},
|
2094
|
-
|
2109
|
+
|
2095
2110
|
request: function(messages, timeout) {
|
2096
2111
|
var params = {message: Faye.toJSON(messages)},
|
2097
2112
|
head = document.getElementsByTagName('head')[0],
|
@@ -2100,19 +2115,19 @@ Faye.Transport.JSONP = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2100
2115
|
location = Faye.URI.parse(this.endpoint, params),
|
2101
2116
|
retry = this.retry(messages, timeout),
|
2102
2117
|
self = this;
|
2103
|
-
|
2118
|
+
|
2104
2119
|
Faye.ENV[callbackName] = function(data) {
|
2105
2120
|
cleanUp();
|
2106
2121
|
self.receive(data);
|
2107
2122
|
self.trigger('up');
|
2108
2123
|
};
|
2109
|
-
|
2124
|
+
|
2110
2125
|
var timer = Faye.ENV.setTimeout(function() {
|
2111
2126
|
cleanUp();
|
2112
2127
|
retry();
|
2113
2128
|
self.trigger('down');
|
2114
2129
|
}, 1.5 * 1000 * timeout);
|
2115
|
-
|
2130
|
+
|
2116
2131
|
var cleanUp = function() {
|
2117
2132
|
if (!Faye.ENV[callbackName]) return false;
|
2118
2133
|
Faye.ENV[callbackName] = undefined;
|
@@ -2121,7 +2136,7 @@ Faye.Transport.JSONP = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2121
2136
|
script.parentNode.removeChild(script);
|
2122
2137
|
return true;
|
2123
2138
|
};
|
2124
|
-
|
2139
|
+
|
2125
2140
|
location.params.jsonp = callbackName;
|
2126
2141
|
script.type = 'text/javascript';
|
2127
2142
|
script.src = location.toURL();
|
@@ -2129,12 +2144,12 @@ Faye.Transport.JSONP = Faye.extend(Faye.Class(Faye.Transport, {
|
|
2129
2144
|
}
|
2130
2145
|
}), {
|
2131
2146
|
_cbCount: 0,
|
2132
|
-
|
2147
|
+
|
2133
2148
|
getCallbackName: function() {
|
2134
2149
|
this._cbCount += 1;
|
2135
2150
|
return '__jsonp' + this._cbCount + '__';
|
2136
2151
|
},
|
2137
|
-
|
2152
|
+
|
2138
2153
|
isUsable: function(client, endpoint, callback, context) {
|
2139
2154
|
callback.call(context, true);
|
2140
2155
|
}
|