([\\s\\S]*?)<\\/div>/g, '$1\\n');\n },\n location: function() {\n return window.location.hash;\n }\n };\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/log"),minispade.register("travis/model","(function() {(function() {\n\n this.Travis.Model = DS.Model.extend({\n primaryKey: 'id',\n id: DS.attr('number'),\n refresh: function() {\n var id;\n id = this.get('id');\n if (id) {\n return Travis.app.store.adapter.find(Travis.app.store, this.constructor, id);\n }\n },\n update: function(attrs) {\n var _this = this;\n $.each(attrs, function(key, value) {\n if (key !== 'id') {\n return _this.set(key, value);\n }\n });\n return this;\n }\n });\n\n this.Travis.Model.reopenClass({\n find: function() {\n if (arguments.length === 0) {\n return Travis.app.store.findAll(this);\n } else {\n return this._super.apply(this, arguments);\n }\n },\n filter: function(callback) {\n return Travis.app.store.filter(this, callback);\n },\n load: function(attrs) {\n return Travis.app.store.load(this, attrs);\n },\n buildURL: function(suffix) {\n var base, url;\n base = this.url || this.pluralName();\n Ember.assert('Base URL (' + base + ') must not start with slash', !base || base.toString().charAt(0) !== '/');\n Ember.assert('URL suffix (' + suffix + ') must not start with slash', !suffix || suffix.toString().charAt(0) !== '/');\n url = [base];\n if (suffix !== void 0) {\n url.push(suffix);\n }\n return url.join('/');\n },\n singularName: function() {\n var name, parts;\n parts = this.toString().split('.');\n name = parts[parts.length - 1];\n return name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1);\n },\n pluralName: function() {\n return Travis.app.store.adapter.pluralize(this.singularName());\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/model"),minispade.register("travis/ticker","(function() {(function() {\n\n this.Travis.Ticker = Ember.Object.extend({\n init: function() {\n if (this.get('interval') !== -1) {\n return this.schedule();\n }\n },\n tick: function() {\n var context, target, targets, _i, _len;\n context = this.get('context');\n targets = this.get('targets') || [this.get('target')];\n for (_i = 0, _len = targets.length; _i < _len; _i++) {\n target = targets[_i];\n if (context) {\n target = context.get(target);\n }\n if (target) {\n target.tick();\n }\n }\n return this.schedule();\n },\n schedule: function() {\n var _this = this;\n return Ember.run.later((function() {\n return _this.tick();\n }), this.get('interval') || Travis.app.TICK_INTERVAL);\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis/ticker"),minispade.register("travis","(function() {(function() {\nminispade.require('ext/jquery');\nminispade.require('ext/ember/namespace');\n\n this.Travis = Em.Namespace.create({\n config: {\n api_endpoint: $('meta[rel=\"travis.api_endpoint\"]').attr('href')\n },\n CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala'],\n ROUTES: {\n 'profile/:login/me': ['profile', 'user'],\n 'profile/:login': ['profile', 'hooks'],\n 'profile': ['profile', 'hooks'],\n 'stats': ['stats', 'show'],\n ':owner/:name/jobs/:id/:line': ['home', 'job'],\n ':owner/:name/jobs/:id': ['home', 'job'],\n ':owner/:name/builds/:id': ['home', 'build'],\n ':owner/:name/builds': ['home', 'builds'],\n ':owner/:name/pull_requests': ['home', 'pullRequests'],\n ':owner/:name/branches': ['home', 'branches'],\n ':owner/:name': ['home', 'current'],\n '': ['home', 'index'],\n '#': ['home', 'index']\n },\n QUEUES: [\n {\n name: 'common',\n display: 'Common'\n }, {\n name: 'php',\n display: 'PHP, Perl and Python'\n }, {\n name: 'node_js',\n display: 'Node.js'\n }, {\n name: 'jvmotp',\n display: 'JVM and Erlang'\n }, {\n name: 'rails',\n display: 'Rails'\n }, {\n name: 'spree',\n display: 'Spree'\n }\n ],\n INTERVALS: {\n sponsors: -1,\n times: -1,\n updateTimes: 1000\n },\n run: function(attrs) {\n var _this = this;\n return $(function() {\n _this.redirectOnHashbang();\n return _this.loadConfig(function(config) {\n var app;\n app = Travis.App.create(attrs || {});\n $.each(Travis, function(key, value) {\n if (value && value.isClass && key !== 'constructor') {\n return app[key] = value;\n }\n });\n _this.app = app;\n _this.store = app.store;\n return app.initialize();\n });\n });\n },\n redirectOnHashbang: function() {\n if (location.hash.slice(0, 2) === '#!') {\n return location.href = location.href.replace('#!/', '');\n }\n },\n loadConfig: function(callback) {\n var _this = this;\n return this.get('/config', function(data) {\n $.extend(_this.config, data.config);\n console.log(\"Connecting to \" + data.config.api_endpoint);\n return callback(data.config);\n });\n }\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=travis"),minispade.register("templates",'(function() {\nEmber.TEMPLATES[\'application\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression;\n\n\n stack1 = helpers._triageMustache.call(depth0, "outlet", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'builds/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " | \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " | \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " | \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " | \\n ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + " | \\n
\\n \\n\\n \\n ");\n stack1 = helpers.each.call(depth0, "build", "in", "builds", {hash:{},inverse:self.noop,fn:self.program(2, program2, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n
\\n
\\n ");\n stack1 = helpers.view.call(depth0, "view.ShowMoreButton", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "build";\n stack1 = helpers.view.call(depth0, "Travis.BuildsItemView", {hash:stack1,inverse:self.noop,fn:self.program(3, program3, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program3(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "id", {hash:{},inverse:self.noop,fn:self.program(4, program4, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n | \\n
\\n \\n ");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n | \\n
\\n ");\n stack1 = {};\n stack1[\'short\'] = "true";\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, "commit.message", {hash:stack1,contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "commit.message", {hash:stack1,contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n | \\n
\\n ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n | \\n
\\n ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n | \\n ");\n return buffer;}\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n
\\n ");\n stack1 = helpers._triageMustache.call(depth0, "number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n \\n ");\n return buffer;}\n\nfunction program6(depth0,data) {\n \n \n data.buffer.push("\\n
Loading
\\n");}\n\n stack1 = helpers[\'if\'].call(depth0, "builds.isLoaded", {hash:{},inverse:self.program(6, program6, data),fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'builds/show\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "loading", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n");\n return buffer;}\nfunction program2(depth0,data) {\n \n \n data.buffer.push("\\n
Loading\\n ");}\n\nfunction program4(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
\\n \\n
- ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.name", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.name", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n - \\n \\n ");\n stack1 = helpers[\'if\'].call(depth0, "build.id", {hash:{},inverse:self.noop,fn:self.program(5, program5, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n - ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.finished_at", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.finished_at", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n - ");\n foundHelper = helpers.formatTime;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.finishedAt", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatTime", "build.finishedAt", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n - ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n - ");\n foundHelper = helpers.formatDuration;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.duration", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatDuration", "build.duration", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n \\n\\n \\n
- ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n
- ");\n foundHelper = helpers.formatCommit;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatCommit", "build.commit", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.compareUrl", {hash:{},inverse:self.noop,fn:self.program(7, program7, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.authorName", {hash:{},inverse:self.noop,fn:self.program(9, program9, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "commit.committerName", {hash:{},inverse:self.noop,fn:self.program(11, program11, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n - ");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.message", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "
\\n - ");\n foundHelper = helpers.formatMessage;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.message", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatMessage", "build.commit.message", {hash:{},contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("
\\n\\n ");\n stack1 = helpers.unless.call(depth0, "isMatrix", {hash:{},inverse:self.noop,fn:self.program(13, program13, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n\\n ");\n stack1 = helpers[\'if\'].call(depth0, "build.isMatrix", {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n ");\n return buffer;}\nfunction program5(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.number", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program7(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.compare", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.compare", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
");\n foundHelper = helpers.pathFrom;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "pathFrom", "build.commit.compareUrl", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program9(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.author", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.author", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.commit.authorName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program11(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.committer", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.committer", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
");\n stack1 = helpers._triageMustache.call(depth0, "build.commit.committerName", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program13(depth0,data) {\n \n var buffer = \'\', stack1, foundHelper;\n data.buffer.push("\\n
");\n foundHelper = helpers[\'t\'];\n stack1 = foundHelper ? foundHelper.call(depth0, "builds.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "t", "builds.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n
");\n foundHelper = helpers.formatConfig;\n stack1 = foundHelper ? foundHelper.call(depth0, "build.config", {hash:{},contexts:[depth0],data:data}) : helperMissing.call(depth0, "formatConfig", "build.config", {hash:{},contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program15(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'jobsBinding\'] = "build.requiredJobs";\n stack1[\'required\'] = "true";\n stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n stack1 = {};\n stack1[\'jobsBinding\'] = "build.allowedFailureJobs";\n stack1 = helpers.view.call(depth0, "Travis.JobsView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\nfunction program17(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = {};\n stack1[\'contextBinding\'] = "build.jobs.firstObject";\n stack1 = helpers.view.call(depth0, "Travis.LogView", {hash:stack1,contexts:[depth0],data:data});\n data.buffer.push(escapeExpression(stack1) + "\\n ");\n return buffer;}\n\n stack1 = helpers[\'with\'].call(depth0, "view", {hash:{},inverse:self.noop,fn:self.program(1, program1, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n\\n");\n return buffer;\n});\n\nEmber.TEMPLATES[\'jobs/list\'] = Ember.Handlebars.template(function anonymous(Handlebars, depth0, helpers, partials, data) { helpers = helpers || Ember.Handlebars.helpers;\n var buffer = \'\', stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \'\', stack1;\n data.buffer.push("\\n ");\n stack1 = helpers[\'if\'].call(depth0, "view.required", {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),contexts:[depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n \\n ");\n stack1 = helpers.each.call(depth0, "key", "in", "view.build.configKeys", {hash:{},inverse:self.noop,fn:self.program(6, program6, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n
\\n \\n
\\n ");\n stack1 = helpers.each.call(depth0, "job", "in", "view.jobs", {hash:{},inverse:self.noop,fn:self.program(8, program8, data),contexts:[depth0,depth0,depth0],data:data});\n if(stack1 || stack1 === 0) { data.buffer.push(stack1); }\n data.buffer.push("\\n \\n