From 3912743d771a4d0ed9cfa412fe06765eae0b9bf9 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Fri, 5 Feb 2016 11:14:27 +0000 Subject: [PATCH] Update to docker-compose and consul UI The UI got hosed by a grep/replace so mainly this reverts that change. Plus describe getting started experience in terms of docker-compose. --- README.adoc | 15 +++++++-------- docker-compose.yml | 4 ++-- docs/src/main/asciidoc/README.adoc | 15 +++++++-------- .../resources/consul_ui/static/application.min.js | 4 ++-- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/README.adoc b/README.adoc index e9272ed1..a1b8005a 100644 --- a/README.adoc +++ b/README.adoc @@ -33,14 +33,13 @@ See the https://consul.io/intro/index.html[intro] for more information. == Running the sample -1. https://consul.io/downloads.html[Install consul] -2. Run `./src/main/bash/local_run_consul.sh` -3. Verify consul is running by visiting http://localhost:8500 -4. Run `mvn --settings .settings.xml package` this will bring in the required spring cloud maven repositories and build -5. Run `java -jar spring-cloud-consul-sample/target/spring-cloud-consul-sample-1.0.0.BUILD-SNAPSHOT.jar` -6. visit http://localhost:8080, verify that `{"serviceId":":8080","host":"","port":8080}` results -7. run `java -jar spring-cloud-consul-sample/target/spring-cloud-consul-sample-1.0.0.BUILD-SNAPSHOT.jar --server.port=8081` -8. visit http://localhost:8080 again, verify that `{"serviceId":":8081","host":"","port":8081}` eventually shows up in the results in a round robbin fashion (may take a minute or so). +1. Run `docker-compose up` +2. Verify consul is running by visiting http://localhost:8500 +3. Run `mvn package` this will bring in the required spring cloud maven repositories and build +4. Run `java -jar spring-cloud-consul-sample/target/spring-cloud-consul-sample-1.0.0.BUILD-SNAPSHOT.jar` +5. visit http://localhost:8080, verify that `{"serviceId":":8080","host":"","port":8080}` results +6. run `java -jar spring-cloud-consul-sample/target/spring-cloud-consul-sample-1.0.0.BUILD-SNAPSHOT.jar --server.port=8081` +7. visit http://localhost:8080 again, verify that `{"serviceId":":8081","host":"","port":8081}` eventually shows up in the results in a round robbin fashion (may take a minute or so). == Building diff --git a/docker-compose.yml b/docker-compose.yml index 5db26c29..a8e865c6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,5 +8,5 @@ consul: ports: - "8400:8400" - "8500:8500" - - "8600:53/udp" - command: -server -bootstrap -data-dir /data -ui-dir /ui + - "8600:8600" + command: -server -bootstrap -data-dir /data -ui-dir /ui diff --git a/docs/src/main/asciidoc/README.adoc b/docs/src/main/asciidoc/README.adoc index 6eee4063..eb0dbfd6 100644 --- a/docs/src/main/asciidoc/README.adoc +++ b/docs/src/main/asciidoc/README.adoc @@ -24,14 +24,13 @@ See the https://consul.io/intro/index.html[intro] for more information. == Running the sample -1. https://consul.io/downloads.html[Install consul] -2. Run `./src/main/bash/local_run_consul.sh` -3. Verify consul is running by visiting http://localhost:8500 -4. Run `mvn --settings .settings.xml package` this will bring in the required spring cloud maven repositories and build -5. Run `java -jar spring-cloud-consul-sample/target/spring-cloud-consul-sample-1.0.0.BUILD-SNAPSHOT.jar` -6. visit http://localhost:8080, verify that `{"serviceId":":8080","host":"","port":8080}` results -7. run `java -jar spring-cloud-consul-sample/target/spring-cloud-consul-sample-1.0.0.BUILD-SNAPSHOT.jar --server.port=8081` -8. visit http://localhost:8080 again, verify that `{"serviceId":":8081","host":"","port":8081}` eventually shows up in the results in a round robbin fashion (may take a minute or so). +1. Run `docker-compose up` +2. Verify consul is running by visiting http://localhost:8500 +3. Run `mvn package` this will bring in the required spring cloud maven repositories and build +4. Run `java -jar spring-cloud-consul-sample/target/spring-cloud-consul-sample-1.0.0.BUILD-SNAPSHOT.jar` +5. visit http://localhost:8080, verify that `{"serviceId":":8080","host":"","port":8080}` results +6. run `java -jar spring-cloud-consul-sample/target/spring-cloud-consul-sample-1.0.0.BUILD-SNAPSHOT.jar --server.port=8081` +7. visit http://localhost:8080 again, verify that `{"serviceId":":8081","host":"","port":8081}` eventually shows up in the results in a round robbin fashion (may take a minute or so). == Building diff --git a/src/test/resources/consul_ui/static/application.min.js b/src/test/resources/consul_ui/static/application.min.js index d5222b2b..609144e6 100644 --- a/src/test/resources/consul_ui/static/application.min.js +++ b/src/test/resources/consul_ui/static/application.min.js @@ -117,7 +117,7 @@ function(a){return!b.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)?!0: */ (function(){var define,requireModule,require,requirejs,Ember;(function(){Ember=this.Ember=this.Ember||{};if(typeof Ember==="undefined"){Ember={}}if(typeof Ember.__loader==="undefined"){var registry={},seen={};define=function(name,deps,callback){registry[name]={deps:deps,callback:callback}};requirejs=require=requireModule=function(name){if(seen.hasOwnProperty(name)){return seen[name]}seen[name]={};if(!registry[name]){throw new Error("Could not find module "+name)}var mod=registry[name],deps=mod.deps,callback=mod.callback,reified=[],exports;for(var i=0,l=deps.length;i3?slice.call(arguments,3):undefined;if(!this.currentInstance){createAutorun(this)}return this.currentInstance.schedule(queueName,target,method,args,false,stack)},deferOnce:function(queueName,target,method){if(!method){method=target;target=null}if(isString(method)){method=target[method]}var stack=this.DEBUG?new Error:undefined,args=arguments.length>3?slice.call(arguments,3):undefined;if(!this.currentInstance){createAutorun(this)}return this.currentInstance.schedule(queueName,target,method,args,true,stack)},setTimeout:function(){var args=slice.call(arguments),length=args.length,method,wait,target,methodOrTarget,methodOrWait,methodOrArgs;if(length===0){return}else if(length===1){method=args.shift();wait=0}else if(length===2){methodOrTarget=args[0];methodOrWait=args[1];if(isFunction(methodOrWait)||isFunction(methodOrTarget[methodOrWait])){target=args.shift();method=args.shift();wait=0}else if(isCoercableNumber(methodOrWait)){method=args.shift();wait=args.shift()}else{method=args.shift();wait=0}}else{var last=args[args.length-1];if(isCoercableNumber(last)){wait=args.pop()}else{wait=0}methodOrTarget=args[0];methodOrArgs=args[1];if(isFunction(methodOrArgs)||isString(methodOrArgs)&&methodOrTarget!==null&&methodOrArgs in methodOrTarget){target=args.shift();method=args.shift()}else{method=args.shift()}}var executeAt=+new Date+parseInt(wait,10);if(isString(method)){method=target[method]}var onError=getOnError(this.options);function fn(){if(onError){try{method.apply(target,args)}catch(e){onError(e)}}else{method.apply(target,args)}}var i=searchTimer(executeAt,timers);timers.splice(i,0,executeAt,fn);updateLaterTimer(this,executeAt,wait);return fn},throttle:function(target,method){var self=this,args=arguments,immediate=pop.call(args),wait,throttler,index,timer;if(isNumber(immediate)||isString(immediate)){wait=immediate;immediate=true}else{wait=pop.call(args)}wait=parseInt(wait,10);index=findThrottler(target,method,this._throttlers);if(index>-1){return this._throttlers[index]}timer=global.setTimeout(function(){if(!immediate){self.run.apply(self,args)}var index=findThrottler(target,method,self._throttlers);if(index>-1){self._throttlers.splice(index,1)}},wait);if(immediate){self.run.apply(self,args)}throttler=[target,method,timer];this._throttlers.push(throttler);return throttler},debounce:function(target,method){var self=this,args=arguments,immediate=pop.call(args),wait,index,debouncee,timer;if(isNumber(immediate)||isString(immediate)){wait=immediate;immediate=false}else{wait=pop.call(args)}wait=parseInt(wait,10);index=findDebouncee(target,method,this._debouncees);if(index>-1){debouncee=this._debouncees[index];this._debouncees.splice(index,1);clearTimeout(debouncee[2])}timer=global.setTimeout(function(){if(!immediate){self.run.apply(self,args)}var index=findDebouncee(target,method,self._debouncees);if(index>-1){self._debouncees.splice(index,1)}},wait);if(immediate&&index===-1){self.run.apply(self,args)}debouncee=[target,method,timer];self._debouncees.push(debouncee);return debouncee},cancelTimers:function(){var clearItems=function(item){clearTimeout(item[2])};each(this._throttlers,clearItems);this._throttlers=[];each(this._debouncees,clearItems);this._debouncees=[];if(this._laterTimer){clearTimeout(this._laterTimer);this._laterTimer=null}timers=[];if(this._autorun){clearTimeout(this._autorun);this._autorun=null}},hasTimers:function(){return!!timers.length||!!this._debouncees.length||!!this._throttlers.length||this._autorun},cancel:function(timer){var timerType=typeof timer;if(timer&&timerType==="object"&&timer.queue&&timer.method){return timer.queue.cancel(timer)}else if(timerType==="function"){for(var i=0,l=timers.length;i-1){item=array[index];if(item[2]===timer[2]){array.splice(index,1);clearTimeout(timer[2]);return true}}return false}};Backburner.prototype.schedule=Backburner.prototype.defer;Backburner.prototype.scheduleOnce=Backburner.prototype.deferOnce;Backburner.prototype.later=Backburner.prototype.setTimeout;if(needsIETryCatchFix){var originalRun=Backburner.prototype.run;Backburner.prototype.run=wrapInTryCatch(originalRun);var originalEnd=Backburner.prototype.end;Backburner.prototype.end=wrapInTryCatch(originalEnd)}function wrapInTryCatch(func){return function(){try{return func.apply(this,arguments)}catch(e){throw e}}}function getOnError(options){return options.onError||options.onErrorTarget&&options.onErrorTarget[options.onErrorMethod]}function createAutorun(backburner){backburner.begin();backburner._autorun=global.setTimeout(function(){backburner._autorun=null;backburner.end()})}function updateLaterTimer(self,executeAt,wait){if(!self._laterTimer||executeAt=timers[middle]){start=middle+2}else{end=middle}}return time>=timers[start]?start+2:start}__exports__.Backburner=Backburner});define("backburner/deferred_action_queues",["backburner/utils","backburner/queue","exports"],function(__dependency1__,__dependency2__,__exports__){"use strict";var Utils=__dependency1__["default"];var Queue=__dependency2__.Queue;var each=Utils.each,isString=Utils.isString;function DeferredActionQueues(queueNames,options){var queues=this.queues={};this.queueNames=queueNames=queueNames||[];this.options=options;each(queueNames,function(queueName){queues[queueName]=new Queue(this,queueName,options)})}DeferredActionQueues.prototype={queueNames:null,queues:null,options:null,schedule:function(queueName,target,method,args,onceFlag,stack){var queues=this.queues,queue=queues[queueName];if(!queue){throw new Error("You attempted to schedule an action in a queue ("+queueName+") that doesn't exist")}if(onceFlag){return queue.pushUnique(target,method,args,stack)}else{return queue.push(target,method,args,stack)}},invoke:function(target,method,args,_){if(args&&args.length>0){method.apply(target,args)}else{method.call(target)}},invokeWithOnError:function(target,method,args,onError){try{if(args&&args.length>0){method.apply(target,args)}else{method.call(target)}}catch(error){onError(error)}},flush:function(){var queues=this.queues,queueNames=this.queueNames,queueName,queue,queueItems,priorQueueNameIndex,queueNameIndex=0,numberOfQueues=queueNames.length,options=this.options,onError=options.onError||options.onErrorTarget&&options.onErrorTarget[options.onErrorMethod],invoke=onError?this.invokeWithOnError:this.invoke;outerloop:while(queueNameIndex0){if(onError){try{method.apply(target,args)}catch(e){onError(e)}}else{method.apply(target,args)}}else{if(onError){try{method.call(target)}catch(e){onError(e)}}else{method.call(target)}}}if(l&&after){after()}if(queue.length>l){this._queue=queue.slice(l);this.flush()}else{this._queue.length=0}},cancel:function(actionToCancel){var queue=this._queue,currentTarget,currentMethod,i,l;for(i=0,l=queue.length;i1?"they":"it")+" could not be found")}}var defaultControllersComputedProperty=computed(function(){var controller=this;return{needs:get(controller,"needs"),container:get(controller,"container"),unknownProperty:function(controllerName){var needs=this.needs,dependency,i,l;for(i=0,l=needs.length;i0){if(this.container){verifyNeedsDependencies(this,this.container,needs)}get(this,"controllers")}this._super.apply(this,arguments)},controllerFor:function(controllerName){return controllerFor(get(this,"container"),controllerName)},controllers:defaultControllersComputedProperty});__exports__["default"]=ControllerMixin});define("ember-application/system/application",["ember-metal","ember-metal/property_get","ember-metal/property_set","ember-runtime/system/lazy_load","ember-application/system/dag","ember-runtime/system/namespace","ember-runtime/mixins/deferred","ember-application/system/resolver","ember-metal/platform","ember-metal/run_loop","ember-metal/utils","container/container","ember-runtime/controllers/controller","ember-metal/enumerable_utils","ember-runtime/controllers/object_controller","ember-runtime/controllers/array_controller","ember-views/system/event_dispatcher","ember-views/system/jquery","ember-routing/system/route","ember-routing/system/router","ember-routing/location/hash_location","ember-routing/location/history_location","ember-routing/location/auto_location","ember-routing/location/none_location","ember-handlebars-compiler","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__dependency9__,__dependency10__,__dependency11__,__dependency12__,__dependency13__,__dependency14__,__dependency15__,__dependency16__,__dependency17__,__dependency18__,__dependency19__,__dependency20__,__dependency21__,__dependency22__,__dependency23__,__dependency24__,__dependency25__,__exports__){"use strict";var Ember=__dependency1__["default"];var get=__dependency2__.get;var set=__dependency3__.set;var runLoadHooks=__dependency4__.runLoadHooks;var DAG=__dependency5__["default"];var Namespace=__dependency6__["default"];var DeferredMixin=__dependency7__["default"];var DefaultResolver=__dependency8__.DefaultResolver;var create=__dependency9__.create;var run=__dependency10__["default"];var canInvoke=__dependency11__.canInvoke;var Container=__dependency12__["default"];var Controller=__dependency13__.Controller;var EnumerableUtils=__dependency14__["default"];var ObjectController=__dependency15__["default"];var ArrayController=__dependency16__["default"];var EventDispatcher=__dependency17__["default"];var jQuery=__dependency18__["default"];var Route=__dependency19__["default"];var Router=__dependency20__["default"];var HashLocation=__dependency21__["default"];var HistoryLocation=__dependency22__["default"];var AutoLocation=__dependency23__["default"];var NoneLocation=__dependency24__["default"];var EmberHandlebars=__dependency25__["default"];var K=Ember.K;var ContainerDebugAdapter;function DeprecatedContainer(container){this._container=container}DeprecatedContainer.deprecate=function(method){return function(){var container=this._container;return container[method].apply(container,arguments)}};DeprecatedContainer.prototype={_container:null,lookup:DeprecatedContainer.deprecate("lookup"),resolve:DeprecatedContainer.deprecate("resolve"),register:DeprecatedContainer.deprecate("register")};var Application=Namespace.extend(DeferredMixin,{rootElement:"body",eventDispatcher:null,customEvents:null,_readinessDeferrals:1,init:function(){if(!this.$){this.$=jQuery}this.__container__=this.buildContainer();this.Router=this.defaultRouter();this._super();this.scheduleInitialize();Ember.libraries.registerCoreLibrary("Handlebars",EmberHandlebars.VERSION);Ember.libraries.registerCoreLibrary("jQuery",jQuery().jquery);if(Ember.LOG_VERSION){Ember.LOG_VERSION=false;var nameLengths=EnumerableUtils.map(Ember.libraries,function(item){return get(item,"name.length")});var maxNameLength=Math.max.apply(this,nameLengths);Ember.libraries.each(function(name,version){var spaces=new Array(maxNameLength-name.length+1).join(" ")})}},buildContainer:function(){var container=this.__container__=Application.buildContainer(this);return container},defaultRouter:function(){if(this.Router===false){return }var container=this.__container__;if(this.Router){container.unregister("router:main");container.register("router:main",this.Router)}return container.lookupFactory("router:main")},scheduleInitialize:function(){var self=this;if(!this.$||this.$.isReady){run.schedule("actions",self,"_initialize")}else{this.$().ready(function runInitialize(){run(self,"_initialize")})}},deferReadiness:function(){this._readinessDeferrals++},advanceReadiness:function(){this._readinessDeferrals--;if(this._readinessDeferrals===0){run.once(this,this.didBecomeReady)}},register:function(){var container=this.__container__;container.register.apply(container,arguments)},inject:function(){var container=this.__container__;container.injection.apply(container,arguments)},initialize:function(){},_initialize:function(){if(this.isDestroyed){return}if(this.Router){var container=this.__container__;container.unregister("router:main");container.register("router:main",this.Router)}this.runInitializers();runLoadHooks("application",this);this.advanceReadiness();return this},reset:function(){this._readinessDeferrals=1;function handleReset(){var router=this.__container__.lookup("router:main");router.reset();run(this.__container__,"destroy");this.buildContainer();run.schedule("actions",this,function(){this._initialize()})}run.join(this,handleReset)},runInitializers:function(){var initializers=get(this.constructor,"initializers"),container=this.__container__,graph=new DAG,namespace=this,name,initializer;for(name in initializers){initializer=initializers[name];graph.addEdges(initializer.name,initializer.initialize,initializer.before,initializer.after)}graph.topsort(function(vertex){var initializer=vertex.value;initializer(container,namespace)})},didBecomeReady:function(){this.setupEventDispatcher();this.ready();this.startRouting();if(!Ember.testing){Ember.Namespace.processAll();Ember.BOOTED=true}this.resolve(this)},setupEventDispatcher:function(){var customEvents=get(this,"customEvents"),rootElement=get(this,"rootElement"),dispatcher=this.__container__.lookup("event_dispatcher:main");set(this,"eventDispatcher",dispatcher);dispatcher.setup(customEvents,rootElement)},startRouting:function(){var router=this.__container__.lookup("router:main");if(!router){return}router.startRouting()},handleURL:function(url){var router=this.__container__.lookup("router:main");router.handleURL(url)},ready:K,resolver:null,Resolver:null,willDestroy:function(){Ember.BOOTED=false;this.__container__.lookup("router:main").reset();this.__container__.destroy()},initializer:function(options){this.constructor.initializer(options)}});Application.reopenClass({initializers:{},initializer:function(initializer){if(this.superclass.initializers!==undefined&&this.superclass.initializers===this.initializers){this.reopenClass({initializers:create(this.initializers)})}this.initializers[initializer.name]=initializer},buildContainer:function(namespace){var container=new Container;Container.defaultContainer=new DeprecatedContainer(container);container.set=set;container.resolver=resolverFor(namespace);container.normalize=container.resolver.normalize;container.describe=container.resolver.describe;container.makeToString=container.resolver.makeToString;container.optionsForType("component",{singleton:false});container.optionsForType("view",{singleton:false});container.optionsForType("template",{instantiate:false});container.optionsForType("helper",{instantiate:false});container.register("application:main",namespace,{instantiate:false});container.register("controller:basic",Controller,{instantiate:false});container.register("controller:object",ObjectController,{instantiate:false});container.register("controller:array",ArrayController,{instantiate:false});container.register("route:basic",Route,{instantiate:false});container.register("event_dispatcher:main",EventDispatcher);container.register("router:main",Router);container.injection("router:main","namespace","application:main");container.register("location:auto",AutoLocation);container.register("location:hash",HashLocation);container.register("location:history",HistoryLocation);container.register("location:none",NoneLocation);container.injection("controller","target","router:main");container.injection("controller","namespace","application:main");container.injection("route","router","router:main");container.injection("location","rootURL","-location-setting:root-url");container.register("resolver-for-debugging:main",container.resolver.__resolver__,{instantiate:false});container.injection("container-debug-adapter:main","resolver","resolver-for-debugging:main");container.injection("data-adapter:main","containerDebugAdapter","container-debug-adapter:main");if(!ContainerDebugAdapter){ContainerDebugAdapter=requireModule("ember-extension-support/container_debug_adapter")["default"]}container.register("container-debug-adapter:main",ContainerDebugAdapter);return container}});function resolverFor(namespace){if(namespace.get("resolver")){}var ResolverClass=namespace.get("resolver")||namespace.get("Resolver")||DefaultResolver;var resolver=ResolverClass.create({namespace:namespace});function resolve(fullName){return resolver.resolve(fullName)}resolve.describe=function(fullName){return resolver.lookupDescription(fullName)};resolve.makeToString=function(factory,fullName){return resolver.makeToString(factory,fullName)};resolve.normalize=function(fullName){if(resolver.normalize){return resolver.normalize(fullName)}else{return fullName}};resolve.__resolver__=resolver;return resolve}__exports__["default"]=Application});define("ember-application/system/dag",["ember-metal/error","exports"],function(__dependency1__,__exports__){"use strict";var EmberError=__dependency1__["default"];function visit(vertex,fn,visited,path){var name=vertex.name,vertices=vertex.incoming,names=vertex.incomingNames,len=names.length,i;if(!visited){visited={}}if(!path){path=[]}if(visited.hasOwnProperty(name)){return}path.push(name);visited[name]=true;for(i=0;i-1){result=result.replace(/\.(.)/g,function(m){return m.charAt(1).toUpperCase()})}if(name.indexOf("_")>-1){result=result.replace(/_(.)/g,function(m){return m.charAt(1).toUpperCase()})}return type+":"+result}else{return fullName}},resolve:function(fullName){var parsedName=this.parseName(fullName),resolveMethodName=parsedName.resolveMethodName,resolved;if(!(parsedName.name&&parsedName.type)){throw new TypeError("Invalid fullName: `"+fullName+"`, must be of the form `type:name` ")}if(this[resolveMethodName]){resolved=this[resolveMethodName](parsedName)}if(!resolved){resolved=this.resolveOther(parsedName)}if(parsedName.root&&parsedName.root.LOG_RESOLVER){this._logLookup(resolved,parsedName)}return resolved},parseName:function(fullName){var nameParts=fullName.split(":"),type=nameParts[0],fullNameWithoutType=nameParts[1],name=fullNameWithoutType,namespace=get(this,"namespace"),root=namespace;if(type!=="template"&&name.indexOf("/")!==-1){var parts=name.split("/");name=parts[parts.length-1];var namespaceName=capitalize(parts.slice(0,-1).join("."));root=Namespace.byName(namespaceName)}return{fullName:fullName,type:type,fullNameWithoutType:fullNameWithoutType,name:name,root:root,resolveMethodName:"resolve"+classify(type)}},lookupDescription:function(fullName){var parsedName=this.parseName(fullName);if(parsedName.type==="template"){return"template at "+parsedName.fullNameWithoutType.replace(/\./g,"/")}var description=parsedName.root+"."+classify(parsedName.name);if(parsedName.type!=="model"){description+=classify(parsedName.type)}return description},makeToString:function(factory,fullName){return factory.toString()},useRouterNaming:function(parsedName){parsedName.name=parsedName.name.replace(/\./g,"_");if(parsedName.name==="basic"){parsedName.name=""}},resolveTemplate:function(parsedName){var templateName=parsedName.fullNameWithoutType.replace(/\./g,"/");if(Ember.TEMPLATES[templateName]){return Ember.TEMPLATES[templateName]}templateName=decamelize(templateName);if(Ember.TEMPLATES[templateName]){return Ember.TEMPLATES[templateName]}},resolveView:function(parsedName){this.useRouterNaming(parsedName);return this.resolveOther(parsedName)},resolveController:function(parsedName){this.useRouterNaming(parsedName);return this.resolveOther(parsedName)},resolveRoute:function(parsedName){this.useRouterNaming(parsedName);return this.resolveOther(parsedName)},resolveModel:function(parsedName){var className=classify(parsedName.name),factory=get(parsedName.root,className);if(factory){return factory}},resolveHelper:function(parsedName){return this.resolveOther(parsedName)||EmberHandlebars.helpers[parsedName.fullNameWithoutType]},resolveOther:function(parsedName){var className=classify(parsedName.name)+classify(parsedName.type),factory=get(parsedName.root,className);if(factory){return factory}},_logLookup:function(found,parsedName){var symbol,padding;if(found){symbol="[✓]"}else{symbol="[ ]"}if(parsedName.fullName.length>60){padding="."}else{padding=new Array(60-parsedName.fullName.length).join(".")}Logger.info(symbol,parsedName.fullName,padding,this.lookupDescription(parsedName.fullName))}});__exports__.DefaultResolver=DefaultResolver});define("ember-extension-support",["ember-metal/core","ember-extension-support/data_adapter","ember-extension-support/container_debug_adapter"],function(__dependency1__,__dependency2__,__dependency3__){"use strict";var Ember=__dependency1__["default"];var DataAdapter=__dependency2__["default"];var ContainerDebugAdapter=__dependency3__["default"];Ember.DataAdapter=DataAdapter;Ember.ContainerDebugAdapter=ContainerDebugAdapter});define("ember-extension-support/container_debug_adapter",["ember-metal/core","ember-metal/utils","ember-runtime/system/string","ember-runtime/system/namespace","ember-runtime/system/object","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__exports__){"use strict";var Ember=__dependency1__["default"];var typeOf=__dependency2__.typeOf;var dasherize=__dependency3__.dasherize;var classify=__dependency3__.classify;var Namespace=__dependency4__["default"];var EmberObject=__dependency5__["default"];var ContainerDebugAdapter=EmberObject.extend({container:null,resolver:null,canCatalogEntriesByType:function(type){if(type==="model"||type==="template")return false;return true},catalogEntriesByType:function(type){var namespaces=Ember.A(Namespace.NAMESPACES),types=Ember.A(),self=this;var typeSuffixRegex=new RegExp(classify(type)+"$");namespaces.forEach(function(namespace){if(namespace!==Ember){for(var key in namespace){if(!namespace.hasOwnProperty(key)){continue}if(typeSuffixRegex.test(key)){var klass=namespace[key];if(typeOf(klass)==="class"){types.push(dasherize(key.replace(typeSuffixRegex,"")))}}}}});return types}});__exports__["default"]=ContainerDebugAdapter});define("ember-extension-support/data_adapter",["ember-metal/core","ember-metal/property_get","ember-metal/run_loop","ember-runtime/system/string","ember-runtime/system/namespace","ember-runtime/system/object","ember-runtime/system/native_array","ember-application/system/application","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__exports__){"use strict";var Ember=__dependency1__["default"];var get=__dependency2__.get;var run=__dependency3__["default"];var dasherize=__dependency4__.dasherize;var Namespace=__dependency5__["default"];var EmberObject=__dependency6__["default"];var emberA=__dependency7__.A;var Application=__dependency8__["default"];__exports__["default"]=EmberObject.extend({init:function(){this._super();this.releaseMethods=emberA()},container:null,containerDebugAdapter:undefined,attributeLimit:3,releaseMethods:emberA(),getFilters:function(){return emberA()},watchModelTypes:function(typesAdded,typesUpdated){var modelTypes=this.getModelTypes(),self=this,typesToSend,releaseMethods=emberA();typesToSend=modelTypes.map(function(type){var klass=type.klass;var wrapped=self.wrapModelType(klass,type.name);releaseMethods.push(self.observeModelType(klass,typesUpdated));return wrapped});typesAdded(typesToSend);var release=function(){releaseMethods.forEach(function(fn){fn()});self.releaseMethods.removeObject(release)};this.releaseMethods.pushObject(release);return release},_nameToClass:function(type){if(typeof type==="string"){type=this.container.lookupFactory("model:"+type)}return type},watchRecords:function(type,recordsAdded,recordsUpdated,recordsRemoved){var self=this,releaseMethods=emberA(),records=this.getRecords(type),release;var recordUpdated=function(updatedRecord){recordsUpdated([updatedRecord])};var recordsToSend=records.map(function(record){releaseMethods.push(self.observeRecord(record,recordUpdated));return self.wrapRecord(record)});var contentDidChange=function(array,idx,removedCount,addedCount){for(var i=idx;i-1}else{return content==selection}}).property("content","parentView.selection"),labelPathDidChange:observer("parentView.optionLabelPath",function(){var labelPath=get(this,"parentView.optionLabelPath");if(!labelPath){return}defineProperty(this,"label",computed(function(){return get(this,labelPath)}).property(labelPath))}),valuePathDidChange:observer("parentView.optionValuePath",function(){var valuePath=get(this,"parentView.optionValuePath");if(!valuePath){return}defineProperty(this,"value",computed(function(){return get(this,valuePath)}).property(valuePath))})});var SelectOptgroup=CollectionView.extend({instrumentDisplay:"Ember.SelectOptgroup",tagName:"optgroup",attributeBindings:["label"],selectionBinding:"parentView.selection",multipleBinding:"parentView.multiple",optionLabelPathBinding:"parentView.optionLabelPath",optionValuePathBinding:"parentView.optionValuePath",itemViewClassBinding:"parentView.optionView"});var Select=View.extend({instrumentDisplay:"Ember.Select",tagName:"select",classNames:["ember-select"],defaultTemplate:Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data){this.compilerInfo=[4,">= 1.0.0"];helpers=this.merge(helpers,Ember.Handlebars.helpers);data=data||{};var buffer="",stack1,escapeExpression=this.escapeExpression,self=this;function program1(depth0,data){var buffer="",stack1;data.buffer.push('");return buffer}function program3(depth0,data){var stack1;stack1=helpers.each.call(depth0,"view.groupedContent",{hash:{},hashTypes:{},hashContexts:{},inverse:self.noop,fn:self.program(4,program4,data),contexts:[depth0],types:["ID"],data:data});if(stack1||stack1===0){data.buffer.push(stack1)}else{data.buffer.push("")}}function program4(depth0,data){data.buffer.push(escapeExpression(helpers.view.call(depth0,"view.groupView",{hash:{content:"content",label:"label"},hashTypes:{content:"ID",label:"ID"},hashContexts:{content:depth0,label:depth0},contexts:[depth0],types:["ID"],data:data})))}function prograBUILD-SNAPSHOT(depth0,data){var stack1;stack1=helpers.each.call(depth0,"view.content",{hash:{},hashTypes:{},hashContexts:{},inverse:self.noop,fn:self.program(7,program7,data),contexts:[depth0],types:["ID"],data:data});if(stack1||stack1===0){data.buffer.push(stack1)}else{data.buffer.push("")}}function program7(depth0,data){data.buffer.push(escapeExpression(helpers.view.call(depth0,"view.optionView",{hash:{content:""},hashTypes:{content:"ID"},hashContexts:{content:depth0},contexts:[depth0],types:["ID"],data:data})))}stack1=helpers["if"].call(depth0,"view.prompt",{hash:{},hashTypes:{},hashContexts:{},inverse:self.noop,fn:self.program(1,program1,data),contexts:[depth0],types:["ID"],data:data});if(stack1||stack1===0){data.buffer.push(stack1)}stack1=helpers["if"].call(depth0,"view.optionGroupPath",{hash:{},hashTypes:{},hashContexts:{},inverse:self.program(6,prograBUILD-SNAPSHOT,data),fn:self.program(3,program3,data),contexts:[depth0],types:["ID"],data:data});if(stack1||stack1===0){data.buffer.push(stack1)}return buffer}),attributeBindings:["multiple","disabled","tabindex","name","required","autofocus","form","size"],multiple:false,disabled:false,required:false,content:null,selection:null,value:computed(function(key,value){if(arguments.length===2){return value}var valuePath=get(this,"optionValuePath").replace(/^content\.?/,"");return valuePath?get(this,"selection."+valuePath):get(this,"selection")}).property("selection"),prompt:null,optionLabelPath:"content",optionValuePath:"content",optionGroupPath:null,groupView:SelectOptgroup,groupedContent:computed(function(){var groupPath=get(this,"optionGroupPath");var groupedContent=emberA();var content=get(this,"content")||[];forEach(content,function(item){var label=get(item,groupPath);if(get(groupedContent,"lastObject.label")!==label){groupedContent.pushObject({label:label,content:emberA()})}get(groupedContent,"lastObject.content").push(item)});return groupedContent}).property("optionGroupPath","content.@each"),optionView:SelectOption,_change:function(){if(get(this,"multiple")){this._changeMultiple()}else{this._changeSingle()}},selectionDidChange:observer("selection.@each",function(){var selection=get(this,"selection");if(get(this,"multiple")){if(!isArray(selection)){set(this,"selection",emberA([selection]));return}this._selectionDidChangeMultiple()}else{this._selectionDidChangeSingle()}}),valueDidChange:observer("value",function(){var content=get(this,"content"),value=get(this,"value"),valuePath=get(this,"optionValuePath").replace(/^content\.?/,""),selectedValue=valuePath?get(this,"selection."+valuePath):get(this,"selection"),selection;if(value!==selectedValue){selection=content?content.find(function(obj){return value===(valuePath?get(obj,valuePath):obj)}):null;this.set("selection",selection)}}),_triggerChange:function(){var selection=get(this,"selection");var value=get(this,"value");if(!isNone(selection)){this.selectionDidChange()}if(!isNone(value)){this.valueDidChange()}this._change()},_changeSingle:function(){var selectedIndex=this.$()[0].selectedIndex,content=get(this,"content"),prompt=get(this,"prompt");if(!content||!get(content,"length")){return}if(prompt&&selectedIndex===0){set(this,"selection",null);return}if(prompt){selectedIndex-=1}set(this,"selection",content.objectAt(selectedIndex))},_changeMultiple:function(){var options=this.$("option:selected"),prompt=get(this,"prompt"),offset=prompt?1:0,content=get(this,"content"),selection=get(this,"selection");if(!content){return}if(options){var selectedIndexes=options.map(function(){return this.index-offset}).toArray();var newSelection=content.objectsAt(selectedIndexes);if(isArray(selection)){replace(selection,0,get(selection,"length"),newSelection)}else{set(this,"selection",newSelection)}}},_selectionDidChangeSingle:function(){var el=this.get("element");if(!el){return}var content=get(this,"content"),selection=get(this,"selection"),selectionIndex=content?indexOf(content,selection):-1,prompt=get(this,"prompt");if(prompt){selectionIndex+=1}if(el){el.selectedIndex=selectionIndex}},_selectionDidChangeMultiple:function(){var content=get(this,"content"),selection=get(this,"selection"),selectedIndexes=content?indexesOf(content,selection):[-1],prompt=get(this,"prompt"),offset=prompt?1:0,options=this.$("option"),adjusted;if(options){options.each(function(){adjusted=this.index>-1?this.index-offset:-1;this.selected=indexOf(selectedIndexes,adjusted)>-1})}},init:function(){this._super();this.on("didInsertElement",this,this._triggerChange);this.on("change",this,this._change)}});__exports__["default"]=Select;__exports__.Select=Select;__exports__.SelectOption=SelectOption;__exports__.SelectOptgroup=SelectOptgroup});define("ember-handlebars/controls/text_area",["ember-metal/property_get","ember-views/views/component","ember-handlebars/controls/text_support","ember-metal/mixin","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__exports__){"use strict";var get=__dependency1__.get;var Component=__dependency2__["default"];var TextSupport=__dependency3__["default"];var observer=__dependency4__.observer;__exports__["default"]=Component.extend(TextSupport,{instrumentDisplay:"{{textarea}}",classNames:["ember-text-area"],tagName:"textarea",attributeBindings:["rows","cols","name","selectionEnd","selectionStart","wrap"],rows:null,cols:null,_updateElementValue:observer("value",function(){var value=get(this,"value"),$el=this.$();if($el&&value!==$el.val()){$el.val(value)}}),init:function(){this._super();this.on("didInsertElement",this,this._updateElementValue)}})});define("ember-handlebars/controls/text_field",["ember-metal/property_get","ember-metal/property_set","ember-views/views/component","ember-handlebars/controls/text_support","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__exports__){"use strict";var get=__dependency1__.get;var set=__dependency2__.set;var Component=__dependency3__["default"];var TextSupport=__dependency4__["default"];__exports__["default"]=Component.extend(TextSupport,{instrumentDisplay:'{{input type="text"}}',classNames:["ember-text-field"],tagName:"input",attributeBindings:["type","value","size","pattern","name","min","max","accept","autocomplete","autosave","formaction","formenctype","formmethod","formnovalidate","formtarget","height","inputmode","list","multiple","step","width"],value:"",type:"text",size:null,pattern:null,min:null,max:null})});define("ember-handlebars/controls/text_support",["ember-metal/property_get","ember-metal/property_set","ember-metal/mixin","ember-runtime/mixins/target_action_support","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__exports__){"use strict";var get=__dependency1__.get;var set=__dependency2__.set;var Mixin=__dependency3__.Mixin;var TargetActionSupport=__dependency4__["default"];var TextSupport=Mixin.create(TargetActionSupport,{value:"",attributeBindings:["placeholder","disabled","maxlength","tabindex","readonly","autofocus","form","selectionDirection","spellcheck","required","title","autocapitalize","autocorrect"],placeholder:null,disabled:false,maxlength:null,init:function(){this._super();this.on("focusOut",this,this._elementValueDidChange);this.on("change",this,this._elementValueDidChange);this.on("paste",this,this._elementValueDidChange);this.on("cut",this,this._elementValueDidChange);this.on("input",this,this._elementValueDidChange);this.on("keyUp",this,this.interpretKeyEvents)},action:null,onEvent:"enter",bubbles:false,interpretKeyEvents:function(event){var map=TextSupport.KEY_EVENTS;var method=map[event.keyCode];this._elementValueDidChange();if(method){return this[method](event)}},_elementValueDidChange:function(){set(this,"value",this.$().val())},insertNewline:function(event){sendAction("enter",this,event);sendAction("insert-newline",this,event)},cancel:function(event){sendAction("escape-press",this,event)},focusIn:function(event){sendAction("focus-in",this,event)},focusOut:function(event){sendAction("focus-out",this,event)},keyPress:function(event){sendAction("key-press",this,event)}});TextSupport.KEY_EVENTS={13:"insertNewline",27:"cancel"};function sendAction(eventName,view,event){var action=get(view,eventName),on=get(view,"onEvent"),value=get(view,"value");if(on===eventName||on==="keyPress"&&eventName==="key-press"){view.sendAction("action",value)}view.sendAction(eventName,value);if(action||on===eventName){if(!get(view,"bubbles")){event.stopPropagation()}}}__exports__["default"]=TextSupport});define("ember-handlebars/ext",["ember-metal/core","ember-runtime/system/string","ember-handlebars-compiler","ember-metal/property_get","ember-metal/binding","ember-metal/error","ember-metal/mixin","ember-metal/is_empty","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__exports__){"use strict";var Ember=__dependency1__["default"];var fmt=__dependency2__.fmt;var EmberHandlebars=__dependency3__["default"];var helpers=EmberHandlebars.helpers;var get=__dependency4__.get;var isGlobalPath=__dependency5__.isGlobalPath;var EmberError=__dependency6__["default"];var IS_BINDING=__dependency7__.IS_BINDING;var resolveHelper,SimpleHandlebarsView;var isEmpty=__dependency8__["default"];var slice=[].slice,originalTemplate=EmberHandlebars.template;function normalizePath(root,path,data){var keywords=data&&data.keywords||{},keyword,isKeyword;keyword=path.split(".",1)[0];if(keywords.hasOwnProperty(keyword)){root=keywords[keyword];isKeyword=true;if(path===keyword){path=""}else{path=path.substr(keyword.length+1)}}return{root:root,path:path,isKeyword:isKeyword}}function handlebarsGet(root,path,options){var data=options&&options.data,normalizedPath=normalizePath(root,path,data),value;if(Ember.FEATURES.isEnabled("ember-handlebars-caps-lookup")){if(isGlobalPath(path)){value=get(Ember.lookup,path)}else{value=get(normalizedPath.root,normalizedPath.path)}}else{root=normalizedPath.root;path=normalizedPath.path;value=get(root,path);if(value===undefined&&root!==Ember.lookup&&isGlobalPath(path)){value=get(Ember.lookup,path)}}return value}function getEscaped(root,path,options){var result=handlebarsGet(root,path,options);if(result===null||result===undefined){result=""}else if(!(result instanceof Handlebars.SafeString)){result=String(result)}if(!options.hash.unescaped){result=Handlebars.Utils.escapeExpression(result)}return result}__exports__.getEscaped=getEscaped;function resolveParams(context,params,options){var resolvedParams=[],types=options.types,param,type;for(var i=0,l=params.length;i-1}else{return content==selection}}).property("content","parentView.selection"),labelPathDidChange:observer("parentView.optionLabelPath",function(){var labelPath=get(this,"parentView.optionLabelPath");if(!labelPath){return}defineProperty(this,"label",computed(function(){return get(this,labelPath)}).property(labelPath))}),valuePathDidChange:observer("parentView.optionValuePath",function(){var valuePath=get(this,"parentView.optionValuePath");if(!valuePath){return}defineProperty(this,"value",computed(function(){return get(this,valuePath)}).property(valuePath))})});var SelectOptgroup=CollectionView.extend({instrumentDisplay:"Ember.SelectOptgroup",tagName:"optgroup",attributeBindings:["label"],selectionBinding:"parentView.selection",multipleBinding:"parentView.multiple",optionLabelPathBinding:"parentView.optionLabelPath",optionValuePathBinding:"parentView.optionValuePath",itemViewClassBinding:"parentView.optionView"});var Select=View.extend({instrumentDisplay:"Ember.Select",tagName:"select",classNames:["ember-select"],defaultTemplate:Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data){this.compilerInfo=[4,">= 1.0.0"];helpers=this.merge(helpers,Ember.Handlebars.helpers);data=data||{};var buffer="",stack1,escapeExpression=this.escapeExpression,self=this;function program1(depth0,data){var buffer="",stack1;data.buffer.push('");return buffer}function program3(depth0,data){var stack1;stack1=helpers.each.call(depth0,"view.groupedContent",{hash:{},hashTypes:{},hashContexts:{},inverse:self.noop,fn:self.program(4,program4,data),contexts:[depth0],types:["ID"],data:data});if(stack1||stack1===0){data.buffer.push(stack1)}else{data.buffer.push("")}}function program4(depth0,data){data.buffer.push(escapeExpression(helpers.view.call(depth0,"view.groupView",{hash:{content:"content",label:"label"},hashTypes:{content:"ID",label:"ID"},hashContexts:{content:depth0,label:depth0},contexts:[depth0],types:["ID"],data:data})))}function program6(depth0,data){var stack1;stack1=helpers.each.call(depth0,"view.content",{hash:{},hashTypes:{},hashContexts:{},inverse:self.noop,fn:self.program(7,program7,data),contexts:[depth0],types:["ID"],data:data});if(stack1||stack1===0){data.buffer.push(stack1)}else{data.buffer.push("")}}function program7(depth0,data){data.buffer.push(escapeExpression(helpers.view.call(depth0,"view.optionView",{hash:{content:""},hashTypes:{content:"ID"},hashContexts:{content:depth0},contexts:[depth0],types:["ID"],data:data})))}stack1=helpers["if"].call(depth0,"view.prompt",{hash:{},hashTypes:{},hashContexts:{},inverse:self.noop,fn:self.program(1,program1,data),contexts:[depth0],types:["ID"],data:data});if(stack1||stack1===0){data.buffer.push(stack1)}stack1=helpers["if"].call(depth0,"view.optionGroupPath",{hash:{},hashTypes:{},hashContexts:{},inverse:self.program(6,program6,data),fn:self.program(3,program3,data),contexts:[depth0],types:["ID"],data:data});if(stack1||stack1===0){data.buffer.push(stack1)}return buffer}),attributeBindings:["multiple","disabled","tabindex","name","required","autofocus","form","size"],multiple:false,disabled:false,required:false,content:null,selection:null,value:computed(function(key,value){if(arguments.length===2){return value}var valuePath=get(this,"optionValuePath").replace(/^content\.?/,"");return valuePath?get(this,"selection."+valuePath):get(this,"selection")}).property("selection"),prompt:null,optionLabelPath:"content",optionValuePath:"content",optionGroupPath:null,groupView:SelectOptgroup,groupedContent:computed(function(){var groupPath=get(this,"optionGroupPath");var groupedContent=emberA();var content=get(this,"content")||[];forEach(content,function(item){var label=get(item,groupPath);if(get(groupedContent,"lastObject.label")!==label){groupedContent.pushObject({label:label,content:emberA()})}get(groupedContent,"lastObject.content").push(item)});return groupedContent}).property("optionGroupPath","content.@each"),optionView:SelectOption,_change:function(){if(get(this,"multiple")){this._changeMultiple()}else{this._changeSingle()}},selectionDidChange:observer("selection.@each",function(){var selection=get(this,"selection");if(get(this,"multiple")){if(!isArray(selection)){set(this,"selection",emberA([selection]));return}this._selectionDidChangeMultiple()}else{this._selectionDidChangeSingle()}}),valueDidChange:observer("value",function(){var content=get(this,"content"),value=get(this,"value"),valuePath=get(this,"optionValuePath").replace(/^content\.?/,""),selectedValue=valuePath?get(this,"selection."+valuePath):get(this,"selection"),selection;if(value!==selectedValue){selection=content?content.find(function(obj){return value===(valuePath?get(obj,valuePath):obj)}):null;this.set("selection",selection)}}),_triggerChange:function(){var selection=get(this,"selection");var value=get(this,"value");if(!isNone(selection)){this.selectionDidChange()}if(!isNone(value)){this.valueDidChange()}this._change()},_changeSingle:function(){var selectedIndex=this.$()[0].selectedIndex,content=get(this,"content"),prompt=get(this,"prompt");if(!content||!get(content,"length")){return}if(prompt&&selectedIndex===0){set(this,"selection",null);return}if(prompt){selectedIndex-=1}set(this,"selection",content.objectAt(selectedIndex))},_changeMultiple:function(){var options=this.$("option:selected"),prompt=get(this,"prompt"),offset=prompt?1:0,content=get(this,"content"),selection=get(this,"selection");if(!content){return}if(options){var selectedIndexes=options.map(function(){return this.index-offset}).toArray();var newSelection=content.objectsAt(selectedIndexes);if(isArray(selection)){replace(selection,0,get(selection,"length"),newSelection)}else{set(this,"selection",newSelection)}}},_selectionDidChangeSingle:function(){var el=this.get("element");if(!el){return}var content=get(this,"content"),selection=get(this,"selection"),selectionIndex=content?indexOf(content,selection):-1,prompt=get(this,"prompt");if(prompt){selectionIndex+=1}if(el){el.selectedIndex=selectionIndex}},_selectionDidChangeMultiple:function(){var content=get(this,"content"),selection=get(this,"selection"),selectedIndexes=content?indexesOf(content,selection):[-1],prompt=get(this,"prompt"),offset=prompt?1:0,options=this.$("option"),adjusted;if(options){options.each(function(){adjusted=this.index>-1?this.index-offset:-1;this.selected=indexOf(selectedIndexes,adjusted)>-1})}},init:function(){this._super();this.on("didInsertElement",this,this._triggerChange);this.on("change",this,this._change)}});__exports__["default"]=Select;__exports__.Select=Select;__exports__.SelectOption=SelectOption;__exports__.SelectOptgroup=SelectOptgroup});define("ember-handlebars/controls/text_area",["ember-metal/property_get","ember-views/views/component","ember-handlebars/controls/text_support","ember-metal/mixin","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__exports__){"use strict";var get=__dependency1__.get;var Component=__dependency2__["default"];var TextSupport=__dependency3__["default"];var observer=__dependency4__.observer;__exports__["default"]=Component.extend(TextSupport,{instrumentDisplay:"{{textarea}}",classNames:["ember-text-area"],tagName:"textarea",attributeBindings:["rows","cols","name","selectionEnd","selectionStart","wrap"],rows:null,cols:null,_updateElementValue:observer("value",function(){var value=get(this,"value"),$el=this.$();if($el&&value!==$el.val()){$el.val(value)}}),init:function(){this._super();this.on("didInsertElement",this,this._updateElementValue)}})});define("ember-handlebars/controls/text_field",["ember-metal/property_get","ember-metal/property_set","ember-views/views/component","ember-handlebars/controls/text_support","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__exports__){"use strict";var get=__dependency1__.get;var set=__dependency2__.set;var Component=__dependency3__["default"];var TextSupport=__dependency4__["default"];__exports__["default"]=Component.extend(TextSupport,{instrumentDisplay:'{{input type="text"}}',classNames:["ember-text-field"],tagName:"input",attributeBindings:["type","value","size","pattern","name","min","max","accept","autocomplete","autosave","formaction","formenctype","formmethod","formnovalidate","formtarget","height","inputmode","list","multiple","step","width"],value:"",type:"text",size:null,pattern:null,min:null,max:null})});define("ember-handlebars/controls/text_support",["ember-metal/property_get","ember-metal/property_set","ember-metal/mixin","ember-runtime/mixins/target_action_support","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__exports__){"use strict";var get=__dependency1__.get;var set=__dependency2__.set;var Mixin=__dependency3__.Mixin;var TargetActionSupport=__dependency4__["default"];var TextSupport=Mixin.create(TargetActionSupport,{value:"",attributeBindings:["placeholder","disabled","maxlength","tabindex","readonly","autofocus","form","selectionDirection","spellcheck","required","title","autocapitalize","autocorrect"],placeholder:null,disabled:false,maxlength:null,init:function(){this._super();this.on("focusOut",this,this._elementValueDidChange);this.on("change",this,this._elementValueDidChange);this.on("paste",this,this._elementValueDidChange);this.on("cut",this,this._elementValueDidChange);this.on("input",this,this._elementValueDidChange);this.on("keyUp",this,this.interpretKeyEvents)},action:null,onEvent:"enter",bubbles:false,interpretKeyEvents:function(event){var map=TextSupport.KEY_EVENTS;var method=map[event.keyCode];this._elementValueDidChange();if(method){return this[method](event)}},_elementValueDidChange:function(){set(this,"value",this.$().val())},insertNewline:function(event){sendAction("enter",this,event);sendAction("insert-newline",this,event)},cancel:function(event){sendAction("escape-press",this,event)},focusIn:function(event){sendAction("focus-in",this,event)},focusOut:function(event){sendAction("focus-out",this,event)},keyPress:function(event){sendAction("key-press",this,event)}});TextSupport.KEY_EVENTS={13:"insertNewline",27:"cancel"};function sendAction(eventName,view,event){var action=get(view,eventName),on=get(view,"onEvent"),value=get(view,"value");if(on===eventName||on==="keyPress"&&eventName==="key-press"){view.sendAction("action",value)}view.sendAction(eventName,value);if(action||on===eventName){if(!get(view,"bubbles")){event.stopPropagation()}}}__exports__["default"]=TextSupport});define("ember-handlebars/ext",["ember-metal/core","ember-runtime/system/string","ember-handlebars-compiler","ember-metal/property_get","ember-metal/binding","ember-metal/error","ember-metal/mixin","ember-metal/is_empty","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__exports__){"use strict";var Ember=__dependency1__["default"];var fmt=__dependency2__.fmt;var EmberHandlebars=__dependency3__["default"];var helpers=EmberHandlebars.helpers;var get=__dependency4__.get;var isGlobalPath=__dependency5__.isGlobalPath;var EmberError=__dependency6__["default"];var IS_BINDING=__dependency7__.IS_BINDING;var resolveHelper,SimpleHandlebarsView;var isEmpty=__dependency8__["default"];var slice=[].slice,originalTemplate=EmberHandlebars.template;function normalizePath(root,path,data){var keywords=data&&data.keywords||{},keyword,isKeyword;keyword=path.split(".",1)[0];if(keywords.hasOwnProperty(keyword)){root=keywords[keyword];isKeyword=true;if(path===keyword){path=""}else{path=path.substr(keyword.length+1)}}return{root:root,path:path,isKeyword:isKeyword}}function handlebarsGet(root,path,options){var data=options&&options.data,normalizedPath=normalizePath(root,path,data),value;if(Ember.FEATURES.isEnabled("ember-handlebars-caps-lookup")){if(isGlobalPath(path)){value=get(Ember.lookup,path)}else{value=get(normalizedPath.root,normalizedPath.path)}}else{root=normalizedPath.root;path=normalizedPath.path;value=get(root,path);if(value===undefined&&root!==Ember.lookup&&isGlobalPath(path)){value=get(Ember.lookup,path)}}return value}function getEscaped(root,path,options){var result=handlebarsGet(root,path,options);if(result===null||result===undefined){result=""}else if(!(result instanceof Handlebars.SafeString)){result=String(result)}if(!options.hash.unescaped){result=Handlebars.Utils.escapeExpression(result)}return result}__exports__.getEscaped=getEscaped;function resolveParams(context,params,options){var resolvedParams=[],types=options.types,param,type;for(var i=0,l=params.length;i2){options.data.isUnbound=true;helper=resolveHelper(container,property)||helpers.helperMissing;out=helper.apply(ctx,slice.call(arguments,1));delete options.data.isUnbound;return out}context=fn.contexts&&fn.contexts.length?fn.contexts[0]:ctx;return handlebarsGet(context,property,fn)}});define("ember-handlebars/helpers/view",["ember-metal/core","ember-runtime/system/object","ember-metal/property_get","ember-metal/property_set","ember-metal/mixin","ember-views/system/jquery","ember-views/views/view","ember-metal/binding","ember-handlebars/ext","ember-runtime/system/string","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__dependency9__,__dependency10__,__exports__){"use strict";var Ember=__dependency1__["default"];var EmberObject=__dependency2__["default"];var get=__dependency3__.get;var set=__dependency4__.set;var IS_BINDING=__dependency5__.IS_BINDING;var jQuery=__dependency6__["default"];var View=__dependency7__.View;var isGlobalPath=__dependency8__.isGlobalPath;var normalizePath=__dependency9__.normalizePath;var handlebarsGet=__dependency9__.handlebarsGet;var EmberString=__dependency10__["default"];var LOWERCASE_A_Z=/^[a-z]/,VIEW_PREFIX=/^view\./;function makeBindings(thisContext,options){var hash=options.hash,hashType=options.hashTypes;for(var prop in hash){if(hashType[prop]==="ID"){var value=hash[prop];if(IS_BINDING.test(prop)){}else{hash[prop+"Binding"]=value;hashType[prop+"Binding"]="STRING";delete hash[prop];delete hashType[prop]}}}if(hash.hasOwnProperty("idBinding")){hash.id=handlebarsGet(thisContext,hash.idBinding,options);hashType.id="STRING";delete hash.idBinding;delete hashType.idBinding}}var ViewHelper=EmberObject.create({propertiesFromHTMLOptions:function(options){var hash=options.hash,data=options.data;var extensions={},classes=hash["class"],dup=false;if(hash.id){extensions.elementId=hash.id;dup=true}if(hash.tag){extensions.tagName=hash.tag;dup=true}if(classes){classes=classes.split(" ");extensions.classNames=classes;dup=true}if(hash.classBinding){extensions.classNameBindings=hash.classBinding.split(" ");dup=true}if(hash.classNameBindings){if(extensions.classNameBindings===undefined)extensions.classNameBindings=[];extensions.classNameBindings=extensions.classNameBindings.concat(hash.classNameBindings.split(" "));dup=true}if(hash.attributeBindings){extensions.attributeBindings=null;dup=true}if(dup){hash=jQuery.extend({},hash);delete hash.id;delete hash.tag;delete hash["class"];delete hash.classBinding}var path;for(var prop in hash){if(!hash.hasOwnProperty(prop)){continue}if(IS_BINDING.test(prop)&&typeof hash[prop]==="string"){path=this.contextualizeBindingPath(hash[prop],data);if(path){hash[prop]=path}}}if(extensions.classNameBindings){for(var b in extensions.classNameBindings){var full=extensions.classNameBindings[b];if(typeof full==="string"){var parsedPath=View._parsePropertyPath(full);path=this.contextualizeBindingPath(parsedPath.path,data);if(path){extensions.classNameBindings[b]=path+parsedPath.classNames}}}}return jQuery.extend(hash,extensions)},contextualizeBindingPath:function(path,data){var normalized=normalizePath(null,path,data);if(normalized.isKeyword){return"templateData.keywords."+path}else if(isGlobalPath(path)){return null}else if(path==="this"||path===""){return"_parentView.context"}else{return"_parentView.context."+path}},helper:function(thisContext,path,options){var data=options.data,fn=options.fn,newView;makeBindings(thisContext,options);if("string"===typeof path){var lookup;if(options.types[0]==="STRING"&&LOWERCASE_A_Z.test(path)&&!VIEW_PREFIX.test(path)){lookup=path}else{newView=handlebarsGet(thisContext,path,options);if(typeof newView==="string"){lookup=newView}}if(lookup){newView=data.view.container.lookupFactory("view:"+lookup)}}else{newView=path}var viewOptions=this.propertiesFromHTMLOptions(options,thisContext);var currentView=data.view;viewOptions.templateData=data;var newViewProto=newView.proto?newView.proto():newView;if(fn){viewOptions.template=fn}if(!newViewProto.controller&&!newViewProto.controllerBinding&&!viewOptions.controller&&!viewOptions.controllerBinding){viewOptions._context=thisContext}if(options.helperName){viewOptions.helperName=options.helperName}currentView.appendChild(newView,viewOptions)}});__exports__.ViewHelper=ViewHelper;function viewHelper(path,options){if(path&&path.data&&path.data.isRenderData){options=path;path=options.data.view.container.lookupFactory("view:default")}options.helperName=options.helperName||"view";return ViewHelper.helper(this,path,options)}__exports__.viewHelper=viewHelper});define("ember-handlebars/helpers/yield",["ember-metal/core","ember-metal/property_get","exports"],function(__dependency1__,__dependency2__,__exports__){"use strict";var Ember=__dependency1__["default"];var get=__dependency2__.get;__exports__["default"]=function yieldHelper(options){var view=options.data.view;while(view&&!get(view,"layout")){if(view._contextView){view=view._contextView}else{view=get(view,"_parentView")}}view._yield(this,options)}});define("ember-handlebars/loader",["ember-handlebars/component_lookup","ember-views/system/jquery","ember-metal/error","ember-runtime/system/lazy_load","ember-handlebars-compiler","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__exports__){"use strict";var ComponentLookup=__dependency1__["default"];var jQuery=__dependency2__["default"];var EmberError=__dependency3__["default"];var onLoad=__dependency4__.onLoad;var EmberHandlebars=__dependency5__["default"];function bootstrap(ctx){var selectors='script[type="text/x-handlebars"], script[type="text/x-raw-handlebars"]';jQuery(selectors,ctx).each(function(){var script=jQuery(this);var compile=script.attr("type")==="text/x-raw-handlebars"?jQuery.proxy(Handlebars.compile,Handlebars):jQuery.proxy(EmberHandlebars.compile,EmberHandlebars),templateName=script.attr("data-template-name")||script.attr("id")||"application",template=compile(script.html());if(Ember.TEMPLATES[templateName]!==undefined){throw new EmberError('Template named "'+templateName+'" already exists.')}Ember.TEMPLATES[templateName]=template;script.remove()})}function _bootstrap(){bootstrap(jQuery(document))}function registerComponentLookup(container){container.register("component-lookup:main",ComponentLookup)}onLoad("Ember.Application",function(Application){Application.initializer({name:"domTemplates",initialize:_bootstrap});Application.initializer({name:"registerComponentLookup",after:"domTemplates",initialize:registerComponentLookup})});__exports__["default"]=bootstrap});define("ember-handlebars/string",["ember-runtime/system/string","exports"],function(__dependency1__,__exports__){"use strict";var EmberStringUtils=__dependency1__["default"];function htmlSafe(str){return new Handlebars.SafeString(str)}EmberStringUtils.htmlSafe=htmlSafe;if(Ember.EXTEND_PROTOTYPES===true||Ember.EXTEND_PROTOTYPES.String){String.prototype.htmlSafe=function(){return htmlSafe(this)}}__exports__["default"]=htmlSafe});define("ember-handlebars/views/handlebars_bound_view",["ember-handlebars-compiler","ember-metal/core","ember-metal/error","ember-metal/property_get","ember-metal/property_set","ember-metal/merge","ember-metal/run_loop","ember-metal/computed","ember-views/views/view","ember-views/views/states","ember-handlebars/views/metamorph_view","ember-handlebars/ext","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__dependency9__,__dependency10__,__dependency11__,__dependency12__,__exports__){"use strict";var EmberHandlebars=__dependency1__["default"];var SafeString=EmberHandlebars.SafeString;var Ember=__dependency2__["default"];var K=Ember.K;var Metamorph=requireModule("metamorph");var EmberError=__dependency3__["default"];var get=__dependency4__.get;var set=__dependency5__.set;var merge=__dependency6__["default"];var run=__dependency7__["default"];var computed=__dependency8__.computed;var View=__dependency9__.View;var cloneStates=__dependency10__.cloneStates;var states=__dependency10__.states;var viewStates=states;var _MetamorphView=__dependency11__._MetamorphView;var handlebarsGet=__dependency12__.handlebarsGet;function SimpleHandlebarsView(path,pathRoot,isEscaped,templateData){this.path=path;this.pathRoot=pathRoot;this.isEscaped=isEscaped;this.templateData=templateData;this.morph=Metamorph();this.state="preRender";this.updateId=null;this._parentView=null;this.buffer=null}SimpleHandlebarsView.prototype={isVirtual:true,isView:true,destroy:function(){if(this.updateId){run.cancel(this.updateId);this.updateId=null}if(this._parentView){this._parentView.removeChild(this)}this.morph=null;this.state="destroyed"},propertyWillChange:K,propertyDidChange:K,normalizedValue:function(){var path=this.path,pathRoot=this.pathRoot,result,templateData;if(path===""){result=pathRoot}else{templateData=this.templateData;result=handlebarsGet(pathRoot,path,{data:templateData})}return result},renderToBuffer:function(buffer){var string="";string+=this.morph.startTag();string+=this.render();string+=this.morph.endTag();buffer.push(string)},render:function(){var escape=this.isEscaped;var result=this.normalizedValue();if(result===null||result===undefined){result=""}else if(!(result instanceof SafeString)){result=String(result)}if(escape){result=Handlebars.Utils.escapeExpression(result)}return result},rerender:function(){switch(this.state){case"preRender":case"destroyed":break;case"inBuffer":throw new EmberError("Something you did tried to replace an {{expression}} before it was inserted into the DOM.");case"hasElement":case"inDOM":this.updateId=run.scheduleOnce("render",this,"update");break}return this},update:function(){this.updateId=null;this.morph.html(this.render())},transitionTo:function(state){this.state=state}};states=cloneStates(viewStates);merge(states._default,{rerenderIfNeeded:K});merge(states.inDOM,{rerenderIfNeeded:function(view){if(view.normalizedValue()!==view._lastNormalizedValue){view.rerender()}}});var _HandlebarsBoundView=_MetamorphView.extend({instrumentName:"boundHandlebars",_states:states,shouldDisplayFunc:null,preserveContext:false,previousContext:null,displayTemplate:null,inverseTemplate:null,path:null,pathRoot:null,normalizedValue:function(){var path=get(this,"path"),pathRoot=get(this,"pathRoot"),valueNormalizer=get(this,"valueNormalizerFunc"),result,templateData;if(path===""){result=pathRoot}else{templateData=get(this,"templateData");result=handlebarsGet(pathRoot,path,{data:templateData})}return valueNormalizer?valueNormalizer(result):result},rerenderIfNeeded:function(){this.currentState.rerenderIfNeeded(this)},render:function(buffer){var escape=get(this,"isEscaped");var shouldDisplay=get(this,"shouldDisplayFunc"),preserveContext=get(this,"preserveContext"),context=get(this,"previousContext");var inverseTemplate=get(this,"inverseTemplate"),displayTemplate=get(this,"displayTemplate");var result=this.normalizedValue();this._lastNormalizedValue=result;if(shouldDisplay(result)){set(this,"template",displayTemplate);if(preserveContext){set(this,"_context",context)}else{if(displayTemplate){set(this,"_context",result)}else{if(result===null||result===undefined){result=""}else if(!(result instanceof SafeString)){result=String(result)}if(escape){result=Handlebars.Utils.escapeExpression(result)}buffer.push(result);return}}}else if(inverseTemplate){set(this,"template",inverseTemplate);if(preserveContext){set(this,"_context",context)}else{set(this,"_context",result)}}else{set(this,"template",function(){return""})}return this._super(buffer)}});__exports__._HandlebarsBoundView=_HandlebarsBoundView;__exports__.SimpleHandlebarsView=SimpleHandlebarsView});define("ember-handlebars/views/metamorph_view",["ember-metal/core","ember-metal/property_get","ember-metal/property_set","ember-views/views/view","ember-metal/mixin","ember-metal/run_loop","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__exports__){"use strict";var Ember=__dependency1__["default"];var get=__dependency2__.get;var set=__dependency3__["default"];var CoreView=__dependency4__.CoreView;var View=__dependency4__.View;var Mixin=__dependency5__.Mixin;var run=__dependency6__["default"];var Metamorph=requireModule("metamorph");function notifyMutationListeners(){run.once(View,"notifyMutationListeners")}var DOMManager={remove:function(view){view.morph.remove();notifyMutationListeners()},prepend:function(view,html){view.morph.prepend(html);notifyMutationListeners()},after:function(view,html){view.morph.after(html);notifyMutationListeners()},html:function(view,html){view.morph.html(html);notifyMutationListeners()},replace:function(view){var morph=view.morph;view.transitionTo("preRender");run.schedule("render",this,function renderMetamorphView(){if(view.isDestroying){return}view.clearRenderedChildren();var buffer=view.renderToBuffer();view.invokeRecursively(function(view){view.propertyWillChange("element")});view.triggerRecursively("willInsertElement");morph.replaceWith(buffer.string());view.transitionTo("inDOM");view.invokeRecursively(function(view){view.propertyDidChange("element")});view.triggerRecursively("didInsertElement");notifyMutationListeners()})},empty:function(view){view.morph.html("");notifyMutationListeners()}};var _Metamorph=Mixin.create({isVirtual:true,tagName:"",instrumentName:"metamorph",init:function(){this._super();this.morph=Metamorph()},beforeRender:function(buffer){buffer.push(this.morph.startTag());buffer.pushOpeningTag()},afterRender:function(buffer){buffer.pushClosingTag();buffer.push(this.morph.endTag())},createElement:function(){var buffer=this.renderToBuffer();this.outerHTML=buffer.string();this.clearBuffer()},domManager:DOMManager});__exports__._Metamorph=_Metamorph;var _MetamorphView=View.extend(_Metamorph);__exports__._MetamorphView=_MetamorphView;var _SimpleMetamorphView=CoreView.extend(_Metamorph);__exports__._SimpleMetamorphView=_SimpleMetamorphView});define("ember-metal",["ember-metal/core","ember-metal/merge","ember-metal/instrumentation","ember-metal/utils","ember-metal/error","ember-metal/enumerable_utils","ember-metal/platform","ember-metal/array","ember-metal/logger","ember-metal/property_get","ember-metal/events","ember-metal/observer_set","ember-metal/property_events","ember-metal/properties","ember-metal/property_set","ember-metal/map","ember-metal/get_properties","ember-metal/set_properties","ember-metal/watch_key","ember-metal/chains","ember-metal/watch_path","ember-metal/watching","ember-metal/expand_properties","ember-metal/computed","ember-metal/observer","ember-metal/mixin","ember-metal/binding","ember-metal/run_loop","ember-metal/libraries","ember-metal/is_none","ember-metal/is_empty","ember-metal/is_blank","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__dependency9__,__dependency10__,__dependency11__,__dependency12__,__dependency13__,__dependency14__,__dependency15__,__dependency16__,__dependency17__,__dependency18__,__dependency19__,__dependency20__,__dependency21__,__dependency22__,__dependency23__,__dependency24__,__dependency25__,__dependency26__,__dependency27__,__dependency28__,__dependency29__,__dependency30__,__dependency31__,__dependency32__,__exports__){"use strict";var Ember=__dependency1__["default"];var merge=__dependency2__["default"];var instrument=__dependency3__.instrument;var subscribe=__dependency3__.subscribe;var unsubscribe=__dependency3__.unsubscribe;var reset=__dependency3__.reset;var generateGuid=__dependency4__.generateGuid;var GUID_KEY=__dependency4__.GUID_KEY;var GUID_PREFIX=__dependency4__.GUID_PREFIX;var guidFor=__dependency4__.guidFor;var META_DESC=__dependency4__.META_DESC;var EMPTY_META=__dependency4__.EMPTY_META;var meta=__dependency4__.meta;var getMeta=__dependency4__.getMeta;var setMeta=__dependency4__.setMeta;var metaPath=__dependency4__.metaPath;var inspect=__dependency4__.inspect;var typeOf=__dependency4__.typeOf;var tryCatchFinally=__dependency4__.tryCatchFinally;var isArray=__dependency4__.isArray;var makeArray=__dependency4__.makeArray;var canInvoke=__dependency4__.canInvoke;var tryInvoke=__dependency4__.tryInvoke;var tryFinally=__dependency4__.tryFinally;var wrap=__dependency4__.wrap;var apply=__dependency4__.apply;var applyStr=__dependency4__.applyStr;var EmberError=__dependency5__["default"];var EnumerableUtils=__dependency6__["default"];var create=__dependency7__.create;var platform=__dependency7__.platform;var map=__dependency8__.map;var forEach=__dependency8__.forEach;var filter=__dependency8__.filter;var indexOf=__dependency8__.indexOf; var Logger=__dependency9__["default"];var get=__dependency10__.get;var getWithDefault=__dependency10__.getWithDefault;var normalizeTuple=__dependency10__.normalizeTuple;var _getPath=__dependency10__._getPath;var on=__dependency11__.on;var addListener=__dependency11__.addListener;var removeListener=__dependency11__.removeListener;var suspendListener=__dependency11__.suspendListener;var suspendListeners=__dependency11__.suspendListeners;var sendEvent=__dependency11__.sendEvent;var hasListeners=__dependency11__.hasListeners;var watchedEvents=__dependency11__.watchedEvents;var listenersFor=__dependency11__.listenersFor;var listenersDiff=__dependency11__.listenersDiff;var listenersUnion=__dependency11__.listenersUnion;var ObserverSet=__dependency12__["default"];var propertyWillChange=__dependency13__.propertyWillChange;var propertyDidChange=__dependency13__.propertyDidChange;var overrideChains=__dependency13__.overrideChains;var beginPropertyChanges=__dependency13__.beginPropertyChanges;var endPropertyChanges=__dependency13__.endPropertyChanges;var changeProperties=__dependency13__.changeProperties;var Descriptor=__dependency14__.Descriptor;var defineProperty=__dependency14__.defineProperty;var set=__dependency15__.set;var trySet=__dependency15__.trySet;var OrderedSet=__dependency16__.OrderedSet;var Map=__dependency16__.Map;var MapWithDefault=__dependency16__.MapWithDefault;var getProperties=__dependency17__["default"];var setProperties=__dependency18__["default"];var watchKey=__dependency19__.watchKey;var unwatchKey=__dependency19__.unwatchKey;var flushPendingChains=__dependency20__.flushPendingChains;var removeChainWatcher=__dependency20__.removeChainWatcher;var ChainNode=__dependency20__.ChainNode;var finishChains=__dependency20__.finishChains;var watchPath=__dependency21__.watchPath;var unwatchPath=__dependency21__.unwatchPath;var watch=__dependency22__.watch;var isWatching=__dependency22__.isWatching;var unwatch=__dependency22__.unwatch;var rewatch=__dependency22__.rewatch;var destroy=__dependency22__.destroy;var expandProperties=__dependency23__["default"];var ComputedProperty=__dependency24__.ComputedProperty;var computed=__dependency24__.computed;var cacheFor=__dependency24__.cacheFor;var addObserver=__dependency25__.addObserver;var observersFor=__dependency25__.observersFor;var removeObserver=__dependency25__.removeObserver;var addBeforeObserver=__dependency25__.addBeforeObserver;var _suspendBeforeObserver=__dependency25__._suspendBeforeObserver;var _suspendObserver=__dependency25__._suspendObserver;var _suspendBeforeObservers=__dependency25__._suspendBeforeObservers;var _suspendObservers=__dependency25__._suspendObservers;var beforeObserversFor=__dependency25__.beforeObserversFor;var removeBeforeObserver=__dependency25__.removeBeforeObserver;var IS_BINDING=__dependency26__.IS_BINDING;var mixin=__dependency26__.mixin;var Mixin=__dependency26__.Mixin;var required=__dependency26__.required;var aliasMethod=__dependency26__.aliasMethod;var observer=__dependency26__.observer;var immediateObserver=__dependency26__.immediateObserver;var beforeObserver=__dependency26__.beforeObserver;var Binding=__dependency27__.Binding;var isGlobalPath=__dependency27__.isGlobalPath;var bind=__dependency27__.bind;var oneWay=__dependency27__.oneWay;var run=__dependency28__["default"];var libraries=__dependency29__["default"];var isNone=__dependency30__.isNone;var none=__dependency30__.none;var isEmpty=__dependency31__.isEmpty;var empty=__dependency31__.empty;var isBlank=__dependency32__["default"];var EmberInstrumentation=Ember.Instrumentation={};EmberInstrumentation.instrument=instrument;EmberInstrumentation.subscribe=subscribe;EmberInstrumentation.unsubscribe=unsubscribe;EmberInstrumentation.reset=reset;Ember.instrument=instrument;Ember.subscribe=subscribe;Ember.generateGuid=generateGuid;Ember.GUID_KEY=GUID_KEY;Ember.GUID_PREFIX=GUID_PREFIX;Ember.create=create;Ember.platform=platform;var EmberArrayPolyfills=Ember.ArrayPolyfills={};EmberArrayPolyfills.map=map;EmberArrayPolyfills.forEach=forEach;EmberArrayPolyfills.filter=filter;EmberArrayPolyfills.indexOf=indexOf;Ember.Error=EmberError;Ember.guidFor=guidFor;Ember.META_DESC=META_DESC;Ember.EMPTY_META=EMPTY_META;Ember.meta=meta;Ember.getMeta=getMeta;Ember.setMeta=setMeta;Ember.metaPath=metaPath;Ember.inspect=inspect;Ember.typeOf=typeOf;Ember.tryCatchFinally=tryCatchFinally;Ember.isArray=isArray;Ember.makeArray=makeArray;Ember.canInvoke=canInvoke;Ember.tryInvoke=tryInvoke;Ember.tryFinally=tryFinally;Ember.wrap=wrap;Ember.apply=apply;Ember.applyStr=applyStr;Ember.Logger=Logger;Ember.get=get;Ember.getWithDefault=getWithDefault;Ember.normalizeTuple=normalizeTuple;Ember._getPath=_getPath;Ember.EnumerableUtils=EnumerableUtils;Ember.on=on;Ember.addListener=addListener;Ember.removeListener=removeListener;Ember._suspendListener=suspendListener;Ember._suspendListeners=suspendListeners;Ember.sendEvent=sendEvent;Ember.hasListeners=hasListeners;Ember.watchedEvents=watchedEvents;Ember.listenersFor=listenersFor;Ember.listenersDiff=listenersDiff;Ember.listenersUnion=listenersUnion;Ember._ObserverSet=ObserverSet;Ember.propertyWillChange=propertyWillChange;Ember.propertyDidChange=propertyDidChange;Ember.overrideChains=overrideChains;Ember.beginPropertyChanges=beginPropertyChanges;Ember.endPropertyChanges=endPropertyChanges;Ember.changeProperties=changeProperties;Ember.Descriptor=Descriptor;Ember.defineProperty=defineProperty;Ember.set=set;Ember.trySet=trySet;Ember.OrderedSet=OrderedSet;Ember.Map=Map;Ember.MapWithDefault=MapWithDefault;Ember.getProperties=getProperties;Ember.setProperties=setProperties;Ember.watchKey=watchKey;Ember.unwatchKey=unwatchKey;Ember.flushPendingChains=flushPendingChains;Ember.removeChainWatcher=removeChainWatcher;Ember._ChainNode=ChainNode;Ember.finishChains=finishChains;Ember.watchPath=watchPath;Ember.unwatchPath=unwatchPath;Ember.watch=watch;Ember.isWatching=isWatching;Ember.unwatch=unwatch;Ember.rewatch=rewatch;Ember.destroy=destroy;Ember.expandProperties=expandProperties;Ember.ComputedProperty=ComputedProperty;Ember.computed=computed;Ember.cacheFor=cacheFor;Ember.addObserver=addObserver;Ember.observersFor=observersFor;Ember.removeObserver=removeObserver;Ember.addBeforeObserver=addBeforeObserver;Ember._suspendBeforeObserver=_suspendBeforeObserver;Ember._suspendBeforeObservers=_suspendBeforeObservers;Ember._suspendObserver=_suspendObserver;Ember._suspendObservers=_suspendObservers;Ember.beforeObserversFor=beforeObserversFor;Ember.removeBeforeObserver=removeBeforeObserver;Ember.IS_BINDING=IS_BINDING;Ember.required=required;Ember.aliasMethod=aliasMethod;Ember.observer=observer;Ember.immediateObserver=immediateObserver;Ember.beforeObserver=beforeObserver;Ember.mixin=mixin;Ember.Mixin=Mixin;Ember.oneWay=oneWay;Ember.bind=bind;Ember.Binding=Binding;Ember.isGlobalPath=isGlobalPath;Ember.run=run;Ember.libraries=libraries;Ember.libraries.registerCoreLibrary("Ember",Ember.VERSION);Ember.isNone=isNone;Ember.none=none;Ember.isEmpty=isEmpty;Ember.empty=empty;Ember.isBlank=isBlank;Ember.merge=merge;Ember.onerror=null;if(Ember.__loader.registry["ember-debug"]){requireModule("ember-debug")}__exports__["default"]=Ember});define("ember-metal/array",["exports"],function(__exports__){"use strict";var ArrayPrototype=Array.prototype;var isNativeFunc=function(func){return func&&Function.prototype.toString.call(func).indexOf("[native code]")>-1};var map=isNativeFunc(ArrayPrototype.map)?ArrayPrototype.map:function(fun){if(this===void 0||this===null){throw new TypeError}var t=Object(this);var len=t.length>>>0;if(typeof fun!=="function"){throw new TypeError}var res=new Array(len);var thisp=arguments[1];for(var i=0;i>>0;if(typeof fun!=="function"){throw new TypeError}var thisp=arguments[1];for(var i=0;i("+this._from+" -> "+this._to+")"+oneWay},connect:function(obj){var fromPath=this._from,toPath=this._to;trySet(obj,toPath,getWithGlobals(obj,fromPath));addObserver(obj,fromPath,this,this.fromDidChange);if(!this._oneWay){addObserver(obj,toPath,this,this.toDidChange)}this._readyToSync=true;return this},disconnect:function(obj){var twoWay=!this._oneWay;removeObserver(obj,this._from,this,this.fromDidChange);if(twoWay){removeObserver(obj,this._to,this,this.toDidChange)}this._readyToSync=false;return this},fromDidChange:function(target){this._scheduleSync(target,"fwd")},toDidChange:function(target){this._scheduleSync(target,"back")},_scheduleSync:function(obj,dir){var directionMap=this._directionMap;var existingDir=directionMap.get(obj);if(!existingDir){run.schedule("sync",this,this._sync,obj);directionMap.set(obj,dir)}if(existingDir==="back"&&dir==="fwd"){directionMap.set(obj,"fwd")}},_sync:function(obj){var log=Ember.LOG_BINDINGS;if(obj.isDestroyed||!this._readyToSync){return}var directionMap=this._directionMap;var direction=directionMap.get(obj);var fromPath=this._from,toPath=this._to;directionMap.remove(obj);if(direction==="fwd"){var fromValue=getWithGlobals(obj,this._from);if(log){Ember.Logger.log(" ",this.toString(),"->",fromValue,obj)}if(this._oneWay){trySet(obj,toPath,fromValue)}else{_suspendObserver(obj,toPath,this,this.toDidChange,function(){trySet(obj,toPath,fromValue)})}}else if(direction==="back"){var toValue=get(obj,this._to);if(log){Ember.Logger.log(" ",this.toString(),"<-",toValue,obj)}_suspendObserver(obj,fromPath,this,this.fromDidChange,function(){trySet(isGlobalPath(fromPath)?Ember.lookup:obj,fromPath,toValue)})}}};function mixinProperties(to,from){for(var key in from){if(from.hasOwnProperty(key)){to[key]=from[key]}}}mixinProperties(Binding,{from:function(){var C=this,binding=new C;return binding.from.apply(binding,arguments)},to:function(){var C=this,binding=new C;return binding.to.apply(binding,arguments)},oneWay:function(from,flag){var C=this,binding=new C(null,from);return binding.oneWay(flag)}});function bind(obj,to,from){return new Binding(to,from).connect(obj)}__exports__.bind=bind;function oneWay(obj,to,from){return new Binding(to,from).oneWay().connect(obj)}__exports__.oneWay=oneWay;__exports__.Binding=Binding;__exports__.isGlobalPath=isGlobalPath});define("ember-metal/chains",["ember-metal/core","ember-metal/property_get","ember-metal/utils","ember-metal/array","ember-metal/watch_key","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__exports__){"use strict";var Ember=__dependency1__["default"];var get=__dependency2__.get;var normalizeTuple=__dependency2__.normalizeTuple;var meta=__dependency3__.meta;var META_KEY=__dependency3__.META_KEY;var forEach=__dependency4__.forEach;var watchKey=__dependency5__.watchKey;var unwatchKey=__dependency5__.unwatchKey;var metaFor=meta,warn=Ember.warn,FIRST_KEY=/^([^\.]+)/;function firstKey(path){return path.match(FIRST_KEY)[0]}var pendingQueue=[];function flushPendingChains(){if(pendingQueue.length===0){return}var queue=pendingQueue;pendingQueue=[];forEach.call(queue,function(q){q[0].add(q[1])});warn("Watching an undefined global, Ember expects watched globals to be setup by the time the run loop is flushed, check for typos",pendingQueue.length===0)}__exports__.flushPendingChains=flushPendingChains;function addChainWatcher(obj,keyName,node){if(!obj||"object"!==typeof obj){return}var m=metaFor(obj),nodes=m.chainWatchers;if(!m.hasOwnProperty("chainWatchers")){nodes=m.chainWatchers={}}if(!nodes[keyName]){nodes[keyName]=[]}nodes[keyName].push(node);watchKey(obj,keyName,m)}function removeChainWatcher(obj,keyName,node){if(!obj||"object"!==typeof obj){return}var m=obj[META_KEY];if(m&&!m.hasOwnProperty("chainWatchers")){return}var nodes=m&&m.chainWatchers;if(nodes&&nodes[keyName]){nodes=nodes[keyName];for(var i=0,l=nodes.length;i0){paths[path]--}obj=this.value();tuple=normalizeTuple(obj,path);if(tuple[0]===obj){path=tuple[1];key=firstKey(path);path=path.slice(key.length+1)}else{src=tuple[0];key=path.slice(0,0-(tuple[1].length+1));path=tuple[1]}tuple.length=0;this.unchain(key,path)};ChainNodePrototype.count=0;ChainNodePrototype.chain=function(key,path,src){var chains=this._chains,node;if(!chains){chains=this._chains={}}node=chains[key];if(!node){node=chains[key]=new ChainNode(this,key,src)}node.count++;if(path){key=firstKey(path);path=path.slice(key.length+1);node.chain(key,path)}};ChainNodePrototype.unchain=function(key,path){var chains=this._chains,node=chains[key];if(path&&path.length>1){key=firstKey(path);path=path.slice(key.length+1);node.unchain(key,path)}node.count--;if(node.count<=0){delete chains[node._key];node.destroy()}};ChainNodePrototype.willChange=function(events){var chains=this._chains;if(chains){for(var key in chains){if(!chains.hasOwnProperty(key)){continue}chains[key].willChange(events)}}if(this._parent){this._parent.chainWillChange(this,this._key,1,events)}};ChainNodePrototype.chainWillChange=function(chain,path,depth,events){if(this._key){path=this._key+"."+path}if(this._parent){this._parent.chainWillChange(this,path,depth+1,events)}else{if(depth>1){events.push(this.value(),path)}path="this."+path;if(this._paths[path]>0){events.push(this.value(),path)}}};ChainNodePrototype.chainDidChange=function(chain,path,depth,events){if(this._key){path=this._key+"."+path}if(this._parent){this._parent.chainDidChange(this,path,depth+1,events)}else{if(depth>1){events.push(this.value(),path)}path="this."+path;if(this._paths[path]>0){events.push(this.value(),path)}}};ChainNodePrototype.didChange=function(events){if(this._watching){var obj=this._parent.value();if(obj!==this._object){removeChainWatcher(this._object,this._key,this);this._object=obj;addChainWatcher(obj,this._key,this)}this._value=undefined;if(this._parent&&this._parent._key==="@each")this.value()}var chains=this._chains;if(chains){for(var key in chains){if(!chains.hasOwnProperty(key)){continue}chains[key].didChange(events)}}if(events===null){return}if(this._parent){this._parent.chainDidChange(this,this._key,1,events)}};function finishChains(obj){var m=obj[META_KEY],chains=m&&m.chains;if(chains){if(chains.value()!==obj){metaFor(obj).chains=chains=chains.copy(obj)}else{chains.didChange(null)}}}__exports__.finishChains=finishChains;__exports__.removeChainWatcher=removeChainWatcher;__exports__.ChainNode=ChainNode});define("ember-metal/computed",["ember-metal/core","ember-metal/property_get","ember-metal/property_set","ember-metal/utils","ember-metal/enumerable_utils","ember-metal/platform","ember-metal/watching","ember-metal/expand_properties","ember-metal/error","ember-metal/properties","ember-metal/property_events","ember-metal/is_empty","ember-metal/is_none","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__dependency9__,__dependency10__,__dependency11__,__dependency12__,__dependency13__,__exports__){"use strict";var Ember=__dependency1__["default"];var get=__dependency2__.get;var set=__dependency3__.set;var meta=__dependency4__.meta;var META_KEY=__dependency4__.META_KEY;var guidFor=__dependency4__.guidFor;var typeOf=__dependency4__.typeOf;var inspect=__dependency4__.inspect;var EnumerableUtils=__dependency5__["default"];var create=__dependency6__.create;var watch=__dependency7__.watch;var unwatch=__dependency7__.unwatch;var expandProperties=__dependency8__["default"];var EmberError=__dependency9__["default"];var Descriptor=__dependency10__.Descriptor;var defineProperty=__dependency10__.defineProperty;var propertyWillChange=__dependency11__.propertyWillChange;var propertyDidChange=__dependency11__.propertyDidChange;var isEmpty=__dependency12__["default"];var isNone=__dependency13__.isNone;var metaFor=meta,a_slice=[].slice,o_create=create;function UNDEFINED(){}var lengthPattern=/\.(length|\[\])$/;function keysForDep(depsMeta,depKey){var keys=depsMeta[depKey];if(!keys){keys=depsMeta[depKey]={}}else if(!depsMeta.hasOwnProperty(depKey)){keys=depsMeta[depKey]=o_create(keys)}return keys}function metaForDeps(meta){return keysForDep(meta,"deps")}function addDependentKeys(desc,obj,keyName,meta){var depKeys=desc._dependentKeys,depsMeta,idx,len,depKey,keys;if(!depKeys)return;depsMeta=metaForDeps(meta);for(idx=0,len=depKeys.length;idx1){args=a_slice.call(arguments);func=args.pop()}if(typeof func!=="function"){throw new EmberError("Computed Property declared without a property function")}var cp=new ComputedProperty(func);if(args){cp.property.apply(cp,args)}return cp}function cacheFor(obj,key){var meta=obj[META_KEY],cache=meta&&meta.cache,ret=cache&&cache[key];if(ret===UNDEFINED){return undefined}return ret}cacheFor.set=function(cache,key,value){if(value===undefined){cache[key]=UNDEFINED}else{cache[key]=value}};cacheFor.get=function(cache,key){var ret=cache[key];if(ret===UNDEFINED){return undefined}return ret};cacheFor.remove=function(cache,key){cache[key]=undefined};function getProperties(self,propertyNames){var ret={};for(var i=0;ivalue});registerComputed("gte",function(dependentKey,value){return get(this,dependentKey)>=value});registerComputed("lt",function(dependentKey,value){return get(this,dependentKey)1){set(this,dependentKey,value);return get(this,dependentKey)}else{return get(this,dependentKey)}})};computed.oneWay=function(dependentKey){return computed(dependentKey,function(){return get(this,dependentKey)})};if(Ember.FEATURES.isEnabled("query-params-new")){computed.reads=computed.oneWay}computed.readOnly=function(dependentKey){return computed(dependentKey,function(){return get(this,dependentKey)}).readOnly()};computed.defaultTo=function(defaultPath){return computed(function(key,newValue,cachedValue){if(arguments.length===1){return get(this,defaultPath)}return newValue!=null?newValue:get(this,defaultPath)})};computed.deprecatingAlias=function(dependentKey){return computed(dependentKey,function(key,value){if(arguments.length>1){set(this,dependentKey,value);return value}else{return get(this,dependentKey)}})};__exports__.ComputedProperty=ComputedProperty;__exports__.computed=computed;__exports__.cacheFor=cacheFor});define("ember-metal/core",["exports"],function(__exports__){"use strict";if("undefined"===typeof Ember){Ember={}}var imports=Ember.imports=Ember.imports||this;var exports=Ember.exports=Ember.exports||this;var lookup=Ember.lookup=Ember.lookup||this;exports.Em=exports.Ember=Ember;Ember.isNamespace=true;Ember.toString=function(){return"Ember"};Ember.VERSION="1.7.0-beta.1+canary.3d81867a";if(Ember.ENV){}else if("undefined"!==typeof EmberENV){Ember.ENV=EmberENV}else if("undefined"!==typeof ENV){Ember.ENV=ENV}else{Ember.ENV={}}Ember.config=Ember.config||{};if("undefined"===typeof Ember.ENV.DISABLE_RANGE_API){Ember.ENV.DISABLE_RANGE_API=true}if("undefined"===typeof MetamorphENV){exports.MetamorphENV={}}MetamorphENV.DISABLE_RANGE_API=Ember.ENV.DISABLE_RANGE_API;Ember.FEATURES=Ember.ENV.FEATURES||{};Ember.FEATURES.isEnabled=function(feature){var featureValue=Ember.FEATURES[feature];if(Ember.ENV.ENABLE_ALL_FEATURES){return true}else if(featureValue===true||featureValue===false||featureValue===undefined){return featureValue}else if(Ember.ENV.ENABLE_OPTIONAL_FEATURES){return true}else{return false}};Ember.EXTEND_PROTOTYPES=Ember.ENV.EXTEND_PROTOTYPES;if(typeof Ember.EXTEND_PROTOTYPES==="undefined"){Ember.EXTEND_PROTOTYPES=true}Ember.LOG_STACKTRACE_ON_DEPRECATION=Ember.ENV.LOG_STACKTRACE_ON_DEPRECATION!==false;Ember.SHIM_ES5=Ember.ENV.SHIM_ES5===false?false:Ember.EXTEND_PROTOTYPES;Ember.LOG_VERSION=Ember.ENV.LOG_VERSION===false?false:true;Ember.K=function(){return this};if("undefined"===typeof Ember.assert){Ember.assert=Ember.K}if("undefined"===typeof Ember.warn){Ember.warn=Ember.K}if("undefined"===typeof Ember.debug){Ember.debug=Ember.K}if("undefined"===typeof Ember.runInDebug){Ember.runInDebug=Ember.K}if("undefined"===typeof Ember.deprecate){Ember.deprecate=Ember.K}if("undefined"===typeof Ember.deprecateFunc){Ember.deprecateFunc=function(_,func){return func}}Ember.uuid=0;__exports__["default"]=Ember});define("ember-metal/enumerable_utils",["ember-metal/array","exports"],function(__dependency1__,__exports__){"use strict";var map=__dependency1__.map;var forEach=__dependency1__.forEach;var indexOf=__dependency1__.indexOf;var filter=__dependency1__.filter;var splice=Array.prototype.splice;var utils={map:function(obj,callback,thisArg){return obj.map?obj.map.call(obj,callback,thisArg):map.call(obj,callback,thisArg)},forEach:function(obj,callback,thisArg){return obj.forEach?obj.forEach.call(obj,callback,thisArg):forEach.call(obj,callback,thisArg)},filter:function(obj,callback,thisArg){return obj.filter?obj.filter.call(obj,callback,thisArg):filter.call(obj,callback,thisArg)},indexOf:function(obj,element,index){return obj.indexOf?obj.indexOf.call(obj,element,index):indexOf.call(obj,element,index)},indexesOf:function(obj,elements){return elements===undefined?[]:utils.map(elements,function(item){return utils.indexOf(obj,item)})},addObject:function(array,item){var index=utils.indexOf(array,item);if(index===-1){array.push(item)}},removeObject:function(array,item){var index=utils.indexOf(array,item);if(index!==-1){array.splice(index,1)}},_replace:function(array,idx,amt,objects){var args=[].concat(objects),chunk,ret=[],size=6e4,start=idx,ends=amt,count;while(args.length){count=ends>size?size:ends;if(count<=0){count=0}chunk=args.splice(0,size);chunk=[start,count].concat(chunk);start+=size;ends-=count;ret=ret.concat(splice.apply(array,chunk))}return ret},replace:function(array,idx,amt,objects){if(array.replace){return array.replace(idx,amt,objects)}else{return utils._replace(array,idx,amt,objects) }},intersection:function(array1,array2){var intersection=[];utils.forEach(array1,function(element){if(utils.indexOf(array2,element)>=0){intersection.push(element)}});return intersection}};__exports__["default"]=utils});define("ember-metal/error",["ember-metal/platform","exports"],function(__dependency1__,__exports__){"use strict";var create=__dependency1__.create;var errorProps=["description","fileName","lineNumber","message","name","number","stack"];function EmberError(){var tmp=Error.apply(this,arguments);if(Error.captureStackTrace){Error.captureStackTrace(this,Ember.Error)}for(var idx=0;idx=0;i-=3){if(target===array[i]&&method===array[i+1]){index=i;break}}return index}function actionsFor(obj,eventName){var meta=metaFor(obj,true),actions;if(!meta.listeners){meta.listeners={}}if(!meta.hasOwnProperty("listeners")){meta.listeners=create(meta.listeners)}actions=meta.listeners[eventName];if(actions&&!meta.listeners.hasOwnProperty(eventName)){actions=meta.listeners[eventName]=meta.listeners[eventName].slice()}else if(!actions){actions=meta.listeners[eventName]=[]}return actions}function listenersUnion(obj,eventName,otherActions){var meta=obj[META_KEY],actions=meta&&meta.listeners&&meta.listeners[eventName];if(!actions){return}for(var i=actions.length-3;i>=0;i-=3){var target=actions[i],method=actions[i+1],flags=actions[i+2],actionIndex=indexOf(otherActions,target,method);if(actionIndex===-1){otherActions.push(target,method,flags)}}}__exports__.listenersUnion=listenersUnion;function listenersDiff(obj,eventName,otherActions){var meta=obj[META_KEY],actions=meta&&meta.listeners&&meta.listeners[eventName],diffActions=[];if(!actions){return}for(var i=actions.length-3;i>=0;i-=3){var target=actions[i],method=actions[i+1],flags=actions[i+2],actionIndex=indexOf(otherActions,target,method);if(actionIndex!==-1){continue}otherActions.push(target,method,flags);diffActions.push(target,method,flags)}return diffActions}__exports__.listenersDiff=listenersDiff;function addListener(obj,eventName,target,method,once){if(!method&&"function"===typeof target){method=target;target=null}var actions=actionsFor(obj,eventName),actionIndex=indexOf(actions,target,method),flags=0;if(once)flags|=ONCE;if(actionIndex!==-1){return}actions.push(target,method,flags);if("function"===typeof obj.didAddListener){obj.didAddListener(eventName,target,method)}}__exports__.addListener=addListener;function removeListener(obj,eventName,target,method){if(!method&&"function"===typeof target){method=target;target=null}function _removeListener(target,method){var actions=actionsFor(obj,eventName),actionIndex=indexOf(actions,target,method);if(actionIndex===-1){return}actions.splice(actionIndex,3);if("function"===typeof obj.didRemoveListener){obj.didRemoveListener(eventName,target,method)}}if(method){_removeListener(target,method)}else{var meta=obj[META_KEY],actions=meta&&meta.listeners&&meta.listeners[eventName];if(!actions){return}for(var i=actions.length-3;i>=0;i-=3){_removeListener(actions[i],actions[i+1])}}}function suspendListener(obj,eventName,target,method,callback){if(!method&&"function"===typeof target){method=target;target=null}var actions=actionsFor(obj,eventName),actionIndex=indexOf(actions,target,method);if(actionIndex!==-1){actions[actionIndex+2]|=SUSPENDED}function tryable(){return callback.call(target)}function finalizer(){if(actionIndex!==-1){actions[actionIndex+2]&=~SUSPENDED}}return tryFinally(tryable,finalizer)}__exports__.suspendListener=suspendListener;function suspendListeners(obj,eventNames,target,method,callback){if(!method&&"function"===typeof target){method=target;target=null}var suspendedActions=[],actionsList=[],eventName,actions,i,l;for(i=0,l=eventNames.length;i=0;i-=3){var target=actions[i],method=actions[i+1],flags=actions[i+2];if(!method){continue}if(flags&SUSPENDED){continue}if(flags&ONCE){removeListener(obj,eventName,target,method)}if(!target){target=obj}if("string"===typeof method){if(params){applyStr(target,method,params)}else{target[method]()}}else{if(params){apply(target,method,params)}else{method.call(target)}}}return true}__exports__.sendEvent=sendEvent;function hasListeners(obj,eventName){var meta=obj[META_KEY],actions=meta&&meta.listeners&&meta.listeners[eventName];return!!(actions&&actions.length)}__exports__.hasListeners=hasListeners;function listenersFor(obj,eventName){var ret=[];var meta=obj[META_KEY],actions=meta&&meta.listeners&&meta.listeners[eventName];if(!actions){return ret}for(var i=0,l=actions.length;i-1){throw new EmberError("Brace expanded properties cannot contain spaces, "+"e.g. `user.{firstName, lastName}` should be `user.{firstName,lastName}`")}if(match=BRACE_EXPANSION.exec(pattern)){prefix=match[1];list=match[2];forEach(list.split(","),function(suffix){callback(prefix+suffix)})}else{callback(pattern)}}});define("ember-metal/get_properties",["ember-metal/property_get","ember-metal/utils","exports"],function(__dependency1__,__dependency2__,__exports__){"use strict";var get=__dependency1__.get;var typeOf=__dependency2__.typeOf;__exports__["default"]=function getProperties(obj){var ret={},propertyNames=arguments,i=1;if(arguments.length===2&&typeOf(arguments[1])==="array"){i=0;propertyNames=arguments[1]}for(var len=propertyNames.length;i-1){list.splice(index,1)}},isEmpty:function(){return this.list.length===0},has:function(obj){var guid=guidFor(obj),presenceSet=this.presenceSet;return guid in presenceSet},forEach:function(fn,self){var list=this.toArray();for(var i=0,j=list.length;i0){mixin.mixins=a_map.call(args,function(x){if(x instanceof Mixin){return x}var mixin=new Mixin;mixin.properties=x;return mixin})}return mixin}function isMethod(obj){return"function"===typeof obj&&obj.isMethod!==false&&obj!==Boolean&&obj!==Object&&obj!==Number&&obj!==Array&&obj!==Date&&obj!==String}var CONTINUE={};function mixinProperties(mixinsMeta,mixin){var guid;if(mixin instanceof Mixin){guid=guidFor(mixin);if(mixinsMeta[guid]){return CONTINUE}mixinsMeta[guid]=mixin;return mixin.properties}else{return mixin}}function concatenatedMixinProperties(concatProp,props,values,base){var concats;concats=values[concatProp]||base[concatProp];if(props[concatProp]){concats=concats?concats.concat(props[concatProp]):props[concatProp]}return concats}function giveDescriptorSuper(meta,key,property,values,descs){var superProperty;if(values[key]===undefined){superProperty=descs[key]}superProperty=superProperty||meta.descs[key];if(!superProperty||!(superProperty instanceof ComputedProperty)){return property}property=o_create(property);property.func=wrap(property.func,superProperty.func);return property}function giveMethodSuper(obj,key,method,values,descs){var superMethod;if(descs[key]===undefined){superMethod=values[key]}superMethod=superMethod||obj[key];if("function"!==typeof superMethod){return method}return wrap(method,superMethod)}function applyConcatenatedProperties(obj,key,value,values){var baseValue=values[key]||obj[key];if(baseValue){if("function"===typeof baseValue.concat){return baseValue.concat(value)}else{return makeArray(baseValue).concat(value)}}else{return makeArray(value)}}function applyMergedProperties(obj,key,value,values){var baseValue=values[key]||obj[key];if(!baseValue){return value}var newBase=merge({},baseValue),hasFunction=false;for(var prop in value){if(!value.hasOwnProperty(prop)){continue}var propValue=value[prop];if(isMethod(propValue)){hasFunction=true;newBase[prop]=giveMethodSuper(obj,prop,propValue,baseValue,{})}else{newBase[prop]=propValue}}if(hasFunction){newBase._super=superFunction}return newBase}function addNormalizedProperty(base,key,value,meta,descs,values,concats,mergings){if(value instanceof Descriptor){if(value===REQUIRED&&descs[key]){return CONTINUE}if(value.func){value=giveDescriptorSuper(meta,key,value,values,descs)}descs[key]=value;values[key]=undefined}else{if(concats&&a_indexOf.call(concats,key)>=0||key==="concatenatedProperties"||key==="mergedProperties"){value=applyConcatenatedProperties(base,key,value,values)}else if(mergings&&a_indexOf.call(mergings,key)>=0){value=applyMergedProperties(base,key,value,values)}else if(isMethod(value)){value=giveMethodSuper(base,key,value,values,descs)}descs[key]=undefined;values[key]=value}}function mergeMixins(mixins,m,descs,values,base,keys){var mixin,props,key,concats,mergings,meta;function removeKeys(keyName){delete descs[keyName];delete values[keyName]}for(var i=0,l=mixins.length;i=0){if(_detect(mixins[loc],targetMixin,seen)){return true}}return false}MixinPrototype.detect=function(obj){if(!obj){return false}if(obj instanceof Mixin){return _detect(obj,this,{})}var m=obj[META_KEY],mixins=m&&m.mixins;if(mixins){return!!mixins[guidFor(this)]}return false};MixinPrototype.without=function(){var ret=new Mixin(this);ret._without=a_slice.call(arguments);return ret};function _keys(ret,mixin,seen){if(seen[guidFor(mixin)]){return}seen[guidFor(mixin)]=true;if(mixin.properties){var props=mixin.properties;for(var key in props){if(props.hasOwnProperty(key)){ret[key]=true}}}else if(mixin.mixins){a_forEach.call(mixin.mixins,function(x){_keys(ret,x,seen)})}}MixinPrototype.keys=function(){var keys={},seen={},ret=[];_keys(keys,this,seen);for(var key in keys){if(keys.hasOwnProperty(key)){ret.push(key)}}return ret};Mixin.mixins=function(obj){var m=obj[META_KEY],mixins=m&&m.mixins,ret=[];if(!mixins){return ret}for(var key in mixins){var mixin=mixins[key];if(!mixin.properties){ret.push(mixin)}}return ret};REQUIRED=new Descriptor;REQUIRED.toString=function(){return"(Required Property)"};function required(){return REQUIRED}__exports__.required=required;function Alias(methodName){this.methodName=methodName}Alias.prototype=new Descriptor;function aliasMethod(methodName){return new Alias(methodName)}__exports__.aliasMethod=aliasMethod;function observer(){var func=a_slice.call(arguments,-1)[0];var paths;var addWatchedProperty=function(path){paths.push(path)};var _paths=a_slice.call(arguments,0,-1);if(typeof func!=="function"){func=arguments[0];_paths=a_slice.call(arguments,1)}paths=[];for(var i=0;i<_paths.length;++i){expandProperties(_paths[i],addWatchedProperty)}if(typeof func!=="function"){throw new Ember.Error("Ember.observer called without a function")}func.__ember_observes__=paths;return func}__exports__.observer=observer;function immediateObserver(){for(var i=0,l=arguments.length;i0}.property("Checks"),filterKey:function(){return this.get("Name")}.property("Name")}),App.Node=Ember.Object.extend({failingChecks:function(){var e=this.get("Checks");return e.filterBy("Status","critical").get("length")+e.filterBy("Status","warning").get("length")}.property("Checks"),passingChecks:function(){return this.get("Checks").filterBy("Status","passing").get("length")}.property("Checks"),checkMessage:function(){return this.get("hasFailingChecks")===!1?this.get("passingChecks")+" passing":this.get("failingChecks")+" failing"}.property("Checks"),hasFailingChecks:function(){return this.get("failingChecks")>0}.property("Checks"),numServices:function(){return this.get("Services").length}.property("Services"),services:function(){return this.get("Services")}.property("Services"),filterKey:function(){return this.get("Node")}.property("Node")}),App.Key=Ember.Object.extend(Ember.Validations.Mixin,{validations:{Key:{presence:!0}},keyValid:Ember.computed.empty("errors.Key"),valueValid:Ember.computed.empty("errors.Value"),keyWithoutParent:function(){return this.get("Key").replace(this.get("parentKey"),"")}.property("Key"),isFolder:function(){return void 0===this.get("Key")?!1:"/"===this.get("Key").slice(-1)}.property("Key"),isLocked:function(){return this.get("Session")?!0:!1}.property("Session"),linkToRoute:function(){return"/"===this.get("Key").slice(-1)?"kv.show":"kv.edit"}.property("Key"),valueDecoded:function(e,t){return arguments.length>1?(this.set("Value",t),t):null===this.get("Value")?"":window.atob(this.get("Value"))}.property("Value"),keyParts:function(){var e=this.get("Key");return"/"==e.slice(-1)&&(e=e.substring(0,e.length-1)),e.split("/")}.property("Key"),parentKey:function(){var e=this.get("keyParts").toArray();return e.pop(),e.join("/")+"/"}.property("Key"),grandParentKey:function(){var e=this.get("keyParts").toArray();return e.pop(),e.pop(),e.join("/")+"/"}.property("Key")}),App.Acl=Ember.Object.extend({isNotAnon:function(){return"anonymous"===this.get("ID")?!1:!0}.property("ID")}),App.Settings=Ember.Object.extend({unknownProperty:function(e){return localStorage[e]},setUnknownProperty:function(e,t){return Ember.isNone(t)?delete localStorage[e]:localStorage[e]=t,this.notifyPropertyChange(e),t},clear:function(){this.beginPropertyChanges();for(var e=0,t=localStorage.length;t>e;e++)this.set(localStorage.key(e));localStorage.clear(),this.endPropertyChanges()}});function formatUrl(e,t,n){return e.indexOf("?")>0?(e=e+"&dc="+t,e=e+"&token="+n):(e=e+"?dc="+t,e=e+"&token="+n),e}App.BaseRoute=Ember.Route.extend({rootKey:"",condensedView:!1,queryParams:{filter:{replace:!0}},getParentAndGrandparent:function(e){var t=this.rootKey,n=this.rootKey,o=e.split("/");return o.length>0&&(o.pop(),t=o.join("/")+"/"),o.length>1&&(o.pop(),n=o.join("/")+"/"),{parent:t,grandParent:n,isRoot:"/"===t}},removeDuplicateKeys:function(e,t){return e.forEach(function(n,o){n.get("Key")==t&&e.splice(o,1)}),e},actions:{linkToKey:function(e){"/"==e?this.transitionTo("kv.show",""):"/"===e.slice(-1)||e===this.rootKey?this.transitionTo("kv.show",e):this.transitionTo("kv.edit",e)}}}),App.IndexRoute=App.BaseRoute.extend({model:function(){return Ember.$.getJSON("/v1/catalog/datacenters").then(function(e){return e})},afterModel:function(e){1===e.get("length")&&this.transitionTo("services",e[0])}}),App.DcRoute=App.BaseRoute.extend({model:function(e){return Ember.RSVP.hash({dc:e.dc,dcs:Ember.$.getJSON("/v1/catalog/datacenters"),nodes:Ember.$.getJSON(formatUrl("/v1/internal/ui/nodes",e.dc)).then(function(e){var t=[];return e.map(function(e){t.push(App.Node.create(e))}),t})})},setupController:function(e,t){e.set("content",t.dc),e.set("nodes",t.nodes),e.set("dcs",t.dcs),e.set("isDropdownVisible",!1)}}),App.KvIndexRoute=App.BaseRoute.extend({beforeModel:function(){this.transitionTo("kv.show",this.rootKey)}}),App.KvShowRoute=App.BaseRoute.extend({model:function(e){var t=e.key,n=this.modelFor("dc").dc,o=App.get("settings.token");return Ember.RSVP.hash({key:t,keys:Ember.$.getJSON(formatUrl("/v1/kv/"+t+"?keys&seperator=/",n,o)).then(function(e){var t=[];return e.map(function(e){t.push(App.Key.create({Key:e}))}),t})})},setupController:function(e,t){var n=t.key,o=this.getParentAndGrandparent(n);t.keys=this.removeDuplicateKeys(t.keys,t.key),e.set("content",t.keys),e.set("parentKey",o.parent),e.set("grandParentKey",o.grandParent),e.set("isRoot",o.isRoot),e.set("newKey",App.Key.create()),e.set("rootKey",this.rootKey)}}),App.KvEditRoute=App.BaseRoute.extend({model:function(e){var t=e.key,n=this.modelFor("dc").dc,o=this.getParentAndGrandparent(t),r=App.get("settings.token");return Ember.RSVP.hash({dc:n,token:r,key:Ember.$.getJSON(formatUrl("/v1/kv/"+t,n,r)).then(function(e){return App.Key.create().setProperties(e[0])}),keys:keysPromise=Ember.$.getJSON(formatUrl("/v1/kv/"+o.parent+"?keys&seperator=/",n,r)).then(function(e){var t=[];return e.map(function(e){t.push(App.Key.create({Key:e}))}),t})})},afterModel:function(e){return e.key.get("isLocked")?Ember.$.getJSON(formatUrl("/v1/session/info/"+e.key.Session,e.dc,e.token)).then(function(t){return e.session=t[0],e}):e},setupController:function(e,t){var n=t.key,o=this.getParentAndGrandparent(n.get("Key"));t.keys=this.removeDuplicateKeys(t.keys,o.parent),e.set("content",t.key),e.set("parentKey",o.parent),e.set("grandParentKey",o.grandParent),e.set("isRoot",o.isRoot),e.set("siblings",t.keys),e.set("rootKey",this.rootKey),e.set("session",t.session)}}),App.ServicesRoute=App.BaseRoute.extend({model:function(){var e=this.modelFor("dc").dc,t=App.get("settings.token");return Ember.$.getJSON(formatUrl("/v1/internal/ui/services",e,t)).then(function(e){var t=[];return e.map(function(e){t.push(App.Service.create(e))}),t})},setupController:function(e,t){e.set("services",t)}}),App.ServicesShowRoute=App.BaseRoute.extend({model:function(e){var t=this.modelFor("dc").dc,n=App.get("settings.token");return Ember.$.getJSON(formatUrl("/v1/health/service/"+e.name,t,n)).then(function(e){var t=[];return e.map(function(e){t.push(App.Node.create(e))}),t})},setupController:function(e,t){var n=[];t.map(function(e){n=n.concat(e.Service.Tags)}),n=n.filter(function(e){return void 0!==e}),n=n.uniq().join(", "),e.set("content",t),e.set("tags",n)}}),App.NodesShowRoute=App.BaseRoute.extend({model:function(e){var t=this.modelFor("dc").dc,n=App.get("settings.token");return Ember.RSVP.hash({dc:t,token:n,node:Ember.$.getJSON(formatUrl("/v1/internal/ui/node/"+e.name,t,n)).then(function(e){return App.Node.create(e)}),nodes:Ember.$.getJSON(formatUrl("/v1/internal/ui/node/"+e.name,t,n)).then(function(e){return App.Node.create(e)})})},afterModel:function(e){return Ember.$.getJSON(formatUrl("/v1/session/node/"+e.node.Node,e.dc,e.token)).then(function(t){return e.sessions=t,e})},setupController:function(e,t){e.set("content",t.node),e.set("sessions",t.sessions),e.set("nodes",t.nodes)}}),App.NodesRoute=App.BaseRoute.extend({model:function(){var e=this.modelFor("dc").dc,t=App.get("settings.token");return Ember.$.getJSON(formatUrl("/v1/internal/ui/nodes",e,t)).then(function(e){var t=[];return e.map(function(e){t.push(App.Node.create(e))}),t})},setupController:function(e,t){e.set("nodes",t)}}),App.AclsRoute=App.BaseRoute.extend({model:function(){var e=this.modelFor("dc").dc,t=App.get("settings.token");return Ember.$.getJSON(formatUrl("/v1/acl/list",e,t)).then(function(e){var t=[];return e.map(function(e){"anonymous"===e.ID?t.unshift(App.Acl.create(e)):t.push(App.Acl.create(e))}),t})},actions:{error:function(e){return e&&401===e.status?this.transitionTo("dc.aclsdisabled"):e&&403===e.status&&this.transitionTo("dc.unauthorized"),!0}},setupController:function(e,t){e.set("acls",t),e.set("newAcl",App.Acl.create())}}),App.AclsShowRoute=App.BaseRoute.extend({model:function(e){var t=this.modelFor("dc").dc,n=App.get("settings.token");return Ember.RSVP.hash({dc:t,acl:Ember.$.getJSON(formatUrl("/v1/acl/info/"+e.id,t,n)).then(function(e){return App.Acl.create(e[0])})})},setupController:function(e,t){e.set("content",t.acl)}}),App.SettingsRoute=App.BaseRoute.extend({model:function(){return App.get("settings")}});App.ApplicationController=Ember.ObjectController.extend({updateCurrentPath:function(){App.set("currentPath",this.get("currentPath"))}.observes("currentPath")}),App.DcController=Ember.Controller.extend({needs:["application"],isDropdownVisible:!1,datacenter:function(){return this.get("content")}.property("content"),checks:function(){var e=this.get("nodes"),t=Ember.A();return e.forEach(function(e){t=t.concat(e.Checks)}),t}.property("nodes"),totalChecksFailing:function(){var e=this.get("checks");return e.filterBy("Status","critical").get("length")+e.filterBy("Status","warning").get("length")}.property("nodes"),checkMessage:function(){var e=this.get("checks"),t=this.get("totalChecksFailing"),n=e.filterBy("Status","passing").get("length");return this.get("hasFailingChecks")===!0?t+" failing":n+" passing"}.property("nodes"),checkStatus:function(){return this.get("hasFailingChecks")===!0?"failing":"passing"}.property("nodes"),hasFailingChecks:function(){var e=this.get("totalChecksFailing");return e>0}.property("nodes"),actions:{toggle:function(){this.toggleProperty("isDropdownVisible")},hideDrop:function(){this.set("isDropdownVisible",!1)}}}),KvBaseController=Ember.ObjectController.extend({getParentKeyRoute:function(){return this.get(this.get("isRoot")?"rootKey":"parentKey")},transitionToNearestParent:function(e){var t=this,n=t.get("rootKey"),s=t.get("dc").get("datacenter"),o=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/kv/"+e+"?keys",s,o),type:"GET"}).then(function(){t.transitionToRoute("kv.show",e)}).fail(function(e){404===e.status&&t.transitionToRoute("kv.show",n)}),t.set("isLoading",!1)}}),App.KvShowController=KvBaseController.extend(Ember.Validations.Mixin),App.KvShowController.reopen({needs:["dc"],dc:Ember.computed.alias("controllers.dc"),isLoading:!1,actions:{createKey:function(){this.set("isLoading",!0);var e=this,t=e.get("newKey"),n=e.get("parentKey"),s=(e.get("grandParentKey"),e.get("dc").get("datacenter")),o=App.get("settings.token");void 0!==n&&"/"!==n&&t.set("Key",n+t.get("Key")),Ember.$.ajax({url:formatUrl("/v1/kv/"+t.get("Key"),s,o),type:"PUT",data:t.get("Value")}).then(function(){t.get("isFolder")===!0?e.transitionToRoute("kv.show",t.get("Key")):e.transitionToRoute("kv.edit",t.get("Key")),e.set("isLoading",!1)}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText)})},deleteFolder:function(){this.set("isLoading",!0);var e=this,t=e.get("dc").get("datacenter"),n=e.get("grandParentKey"),s=App.get("settings.token");window.confirm("Are you sure you want to delete this folder?")&&Ember.$.ajax({url:formatUrl("/v1/kv/"+e.get("parentKey")+"?recurse",t,s),type:"DELETE"}).then(function(){e.transitionToNearestParent(n)}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText)})}}}),App.KvEditController=KvBaseController.extend({isLoading:!1,needs:["dc"],dc:Ember.computed.alias("controllers.dc"),actions:{updateKey:function(){this.set("isLoading",!0);var e=this.get("dc").get("datacenter"),t=this.get("model"),n=this,s=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/kv/"+t.get("Key"),e,s),type:"PUT",data:t.get("valueDecoded")}).then(function(){n.set("isLoading",!1)}).fail(function(e){n.set("errorMessage","Received error while processing: "+e.statusText)})},cancelEdit:function(){this.set("isLoading",!0),this.transitionToRoute("kv.show",this.getParentKeyRoute()),this.set("isLoading",!1)},deleteKey:function(){this.set("isLoading",!0);var e=this,t=e.get("dc").get("datacenter"),n=e.get("model"),s=e.getParentKeyRoute(),o=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/kv/"+n.get("Key"),t,o),type:"DELETE"}).then(function(){e.transitionToNearestParent(s)}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText)})}}}),ItemBaseController=Ember.ArrayController.extend({needs:["dc","application"],queryParams:["filter","status","condensed"],dc:Ember.computed.alias("controllers.dc"),condensed:!0,hasExpanded:!0,filterText:"Filter by name",filter:"",status:"any status",statuses:["any status","passing","failing"],isShowingItem:function(){var e=this.get("controllers.application.currentPath");return"dc.nodes.show"===e||"dc.services.show"===e}.property("controllers.application.currentPath"),filteredContent:function(){var e=this.get("filter"),t=this.get("status"),n=this.get("items").filter(function(t){return t.get("filterKey").toLowerCase().match(e.toLowerCase())});switch(t){case"passing":return n.filterBy("hasFailingChecks",!1);case"failing":return n.filterBy("hasFailingChecks",!0);default:return n}}.property("filter","status","items.@each"),actions:{toggleCondensed:function(){this.set("condensed",!this.get("condensed"))}}}),App.NodesShowController=Ember.ObjectController.extend({needs:["dc","nodes"],dc:Ember.computed.alias("controllers.dc"),actions:{deregisterNode:function(){this.set("isLoading",!0);var e=this,t=e.get("model"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");window.confirm("Are you sure you want to deregister this node?")&&Ember.$.ajax({url:formatUrl("/v1/catalog/deregister",n,s),type:"PUT",data:JSON.stringify({Datacenter:n,Node:t.Node})}).then(function(){var n=e.get("controllers.nodes").get("nodes");e.get("controllers.nodes").set("nodes",n.filter(function(e){return e.Node!==t.Node})),e.transitionToRoute("nodes")}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText)})},invalidateSession:function(e){this.set("isLoading",!0);var t=this,n=t.get("model"),s=t.get("dc").get("datacenter"),o=App.get("settings.token");window.confirm("Are you sure you want to invalidate this session?")&&Ember.$.ajax({url:formatUrl("/v1/session/destroy/"+e,s,o),type:"PUT"}).then(function(){return Ember.$.getJSON(formatUrl("/v1/session/node/"+n.Node,s,o)).then(function(e){t.set("sessions",e)})}).fail(function(e){t.set("errorMessage","Received error while processing: "+e.statusText)})}}}),App.NodesController=ItemBaseController.extend({items:Ember.computed.alias("nodes")}),App.ServicesController=ItemBaseController.extend({items:Ember.computed.alias("services")}),App.AclsController=Ember.ArrayController.extend({needs:["dc","application"],queryParams:["filter"],filterText:"Filter by name or ID",searchBar:!0,newAclButton:!0,types:["management","client"],dc:Ember.computed.alias("controllers.dc"),items:Ember.computed.alias("acls"),filter:"",isShowingItem:function(){var e=this.get("controllers.application.currentPath");return"dc.acls.show"===e}.property("controllers.application.currentPath"),filteredContent:function(){var e=this.get("filter"),t=this.get("items").filter(function(t){var n=t.get("Name").toLowerCase().match(e.toLowerCase());return null!==n?n:t.get("ID").toLowerCase().match(e.toLowerCase())});return t}.property("filter","items.@each"),actions:{createAcl:function(){this.set("isLoading",!0);var e=this,t=e.get("newAcl"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/acl/create",n,s),type:"PUT",data:JSON.stringify(t)}).then(function(t){e.transitionToRoute("acls.show",t.ID),Ember.$.getJSON(formatUrl("/v1/acl/list",n,s)).then(function(t){var n=[];t.map(function(e){n.push(App.Acl.create(e))}),e.set("items",n)}),e.set("isLoading",!1)}).fail(function(t){notify("Received error while creating ACL: "+t.statusText,8e3),e.set("isLoading",!1)})}}}),App.AclsShowController=Ember.ObjectController.extend({needs:["dc","acls"],dc:Ember.computed.alias("controllers.dc"),isLoading:!1,types:["management","client"],actions:{set:function(){this.set("isLoading",!0);{var e=this,t=e.get("model");e.get("dc").get("datacenter")}if(window.confirm("Are you sure you want to use this token for your session?")){{App.set("settings.token",t.ID)}e.transitionToRoute("services"),this.set("isLoading",!1),notify("Now using token: "+t.ID,3e3)}},clone:function(){this.set("isLoading",!0);var e=this,t=e.get("model"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");e.transitionToRoute("services"),Ember.$.ajax({url:formatUrl("/v1/acl/clone/"+t.ID,n,s),type:"PUT"}).then(function(t){e.transitionToRoute("acls.show",t.ID),e.set("isLoading",!1),notify("Successfully cloned token",4e3)}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText),e.set("isLoading",!1)})},"delete":function(){this.set("isLoading",!0);var e=this,t=e.get("model"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");window.confirm("Are you sure you want to delete this token?")&&Ember.$.ajax({url:formatUrl("/v1/acl/destroy/"+t.ID,n,s),type:"PUT"}).then(function(){Ember.$.getJSON(formatUrl("/v1/acl/list",n,s)).then(function(t){objs=[],t.map(function(e){"anonymous"===e.ID?objs.unshift(App.Acl.create(e)):objs.push(App.Acl.create(e))}),e.get("controllers.acls").set("acls",objs)}).then(function(){e.transitionToRoute("acls"),e.set("isLoading",!1),notify("ACL deleted successfully",3e3)})}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText),e.set("isLoading",!1)})},updateAcl:function(){this.set("isLoading",!0);var e=this,t=e.get("model"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/acl/update",n,s),type:"PUT",data:JSON.stringify(t)}).then(function(){e.set("isLoading",!1),notify("ACL updated successfully",3e3)}).fail(function(t){notify("Received error while updating ACL: "+t.statusText,8e3),e.set("isLoading",!1)})}}}),App.SettingsController=Ember.ObjectController.extend({actions:{reset:function(){this.set("isLoading",!0);var e=this;window.confirm("Are your sure you want to reset your settings?")&&(localStorage.clear(),e.set("content",App.Settings.create()),App.set("settings.token",""),notify("Settings reset",3e3),this.set("isLoading",!1))}}});App.DcView=Ember.View.extend({templateName:"dc",classNames:"dropdowns",click:function(e){$(e.target).is(".dropdowns")&&$("ul.dropdown-menu").hide()}}),App.ItemView=Ember.View.extend({templateName:"item"}),App.ServicesView=Ember.View.extend({templateName:"services"}),App.ServicesShowView=Ember.View.extend({templateName:"service"}),App.ServicesLoadingView=Ember.View.extend({templateName:"item/loading"}),App.NodesView=Ember.View.extend({templateName:"nodes"}),App.NodesShowView=Ember.View.extend({templateName:"node"}),App.NodesLoadingView=Ember.View.extend({templateName:"item/loading"}),App.KvListView=Ember.View.extend({templateName:"kv"}),App.ActionBarView=Ember.View.extend({templateName:"actionbar"}),App.AclView=Ember.View.extend({templateName:"acls"}),App.AclsShowView=Ember.View.extend({templateName:"acl"}),App.SettingsView=Ember.View.extend({templateName:"settings"});function notify(e,a){void 0!==window.notifications&&window.notifications.length>0&&$(window.notifications).each(function(e,a){a.dismiss()});var n=new NotificationFx({message:"

"+e+"

",layout:"growl",effect:"slide",type:"notice",ttl:a});n.show(),window.notifications=[],window.notifications.push(n)}Ember.Handlebars.helper("panelBar",function(e){var a;return a="passing"==e?"bg-green":"bg-orange",new Handlebars.SafeString('
')}),Ember.Handlebars.helper("listBar",function(e){var a;return a="passing"==e?"bg-green":"bg-orange",new Handlebars.SafeString('
')}),Ember.Handlebars.helper("sessionName",function(e){var a;return a=""===e.Name?""+e.ID+"":""+e.Name+" "+e.ID+"",new Handlebars.SafeString(a)}),Ember.Handlebars.helper("sessionMeta",function(e){var a='";return""!==e.TTL&&(a=a+'"),new Handlebars.SafeString(a)}),Ember.Handlebars.helper("aclName",function(e,a){return""===e?a:new Handlebars.SafeString(e+' '+a+"")}),Ember.Handlebars.helper("formatRules",function(e){return""===e?"No rules defined":e}),Ember.Handlebars.helper("serviceTagMessage",function(e){return null===e?"No tags":void 0}); \ No newline at end of file +window.App=Ember.Application.create({rootElement:"#app",currentPath:""}),Ember.Application.initializer({name:"settings",initialize:function(t,e){e.set("settings",App.Settings.create()),void 0===App.get("settings.token")&&App.set("settings.token","")}}),App.Router.map(function(){this.resource("dc",{path:"/:dc"},function(){this.resource("services",{path:"/services"},function(){this.route("show",{path:"/:name"})}),this.resource("nodes",{path:"/nodes"},function(){this.route("show",{path:"/:name"})}),this.resource("kv",{path:"/kv"},function(){this.route("index",{path:"/"}),this.route("show",{path:"/*key"}),this.route("edit",{path:"/*key/edit"})}),this.resource("acls",{path:"/acls"},function(){this.route("show",{path:"/:id"})}),this.route("aclsdisabled",{path:"/aclsdisabled"}),this.route("unauthorized",{path:"/unauthorized"}),this.resource("settings",{path:"/settings"})}),this.route("index",{path:"/"})});App.Service=Ember.Object.extend({failingChecks:function(){if(void 0!==this.get("ChecksCritical"))return this.get("ChecksCritical")+this.get("ChecksWarning");var e=this.get("Checks");return e.filterBy("Status","critical").get("length")+e.filterBy("Status","warning").get("length")}.property("Checks"),passingChecks:function(){return void 0!==this.get("ChecksPassing")?this.get("ChecksPassing"):this.get("Checks").filterBy("Status","passing").get("length")}.property("Checks"),checkMessage:function(){return this.get("hasFailingChecks")===!1?this.get("passingChecks")+" passing":this.get("failingChecks")+" failing"}.property("Checks"),nodes:function(){return this.get("Nodes")}.property("Nodes"),hasFailingChecks:function(){return this.get("failingChecks")>0}.property("Checks"),filterKey:function(){return this.get("Name")}.property("Name")}),App.Node=Ember.Object.extend({failingChecks:function(){var e=this.get("Checks");return e.filterBy("Status","critical").get("length")+e.filterBy("Status","warning").get("length")}.property("Checks"),passingChecks:function(){return this.get("Checks").filterBy("Status","passing").get("length")}.property("Checks"),checkMessage:function(){return this.get("hasFailingChecks")===!1?this.get("passingChecks")+" passing":this.get("failingChecks")+" failing"}.property("Checks"),hasFailingChecks:function(){return this.get("failingChecks")>0}.property("Checks"),numServices:function(){return this.get("Services").length}.property("Services"),services:function(){return this.get("Services")}.property("Services"),filterKey:function(){return this.get("Node")}.property("Node")}),App.Key=Ember.Object.extend(Ember.Validations.Mixin,{validations:{Key:{presence:!0}},keyValid:Ember.computed.empty("errors.Key"),valueValid:Ember.computed.empty("errors.Value"),keyWithoutParent:function(){return this.get("Key").replace(this.get("parentKey"),"")}.property("Key"),isFolder:function(){return void 0===this.get("Key")?!1:"/"===this.get("Key").slice(-1)}.property("Key"),isLocked:function(){return this.get("Session")?!0:!1}.property("Session"),linkToRoute:function(){return"/"===this.get("Key").slice(-1)?"kv.show":"kv.edit"}.property("Key"),valueDecoded:function(e,t){return arguments.length>1?(this.set("Value",t),t):null===this.get("Value")?"":window.atob(this.get("Value"))}.property("Value"),keyParts:function(){var e=this.get("Key");return"/"==e.slice(-1)&&(e=e.substring(0,e.length-1)),e.split("/")}.property("Key"),parentKey:function(){var e=this.get("keyParts").toArray();return e.pop(),e.join("/")+"/"}.property("Key"),grandParentKey:function(){var e=this.get("keyParts").toArray();return e.pop(),e.pop(),e.join("/")+"/"}.property("Key")}),App.Acl=Ember.Object.extend({isNotAnon:function(){return"anonymous"===this.get("ID")?!1:!0}.property("ID")}),App.Settings=Ember.Object.extend({unknownProperty:function(e){return localStorage[e]},setUnknownProperty:function(e,t){return Ember.isNone(t)?delete localStorage[e]:localStorage[e]=t,this.notifyPropertyChange(e),t},clear:function(){this.beginPropertyChanges();for(var e=0,t=localStorage.length;t>e;e++)this.set(localStorage.key(e));localStorage.clear(),this.endPropertyChanges()}});function formatUrl(e,t,n){return e.indexOf("?")>0?(e=e+"&dc="+t,e=e+"&token="+n):(e=e+"?dc="+t,e=e+"&token="+n),e}App.BaseRoute=Ember.Route.extend({rootKey:"",condensedView:!1,queryParams:{filter:{replace:!0}},getParentAndGrandparent:function(e){var t=this.rootKey,n=this.rootKey,o=e.split("/");return o.length>0&&(o.pop(),t=o.join("/")+"/"),o.length>1&&(o.pop(),n=o.join("/")+"/"),{parent:t,grandParent:n,isRoot:"/"===t}},removeDuplicateKeys:function(e,t){return e.forEach(function(n,o){n.get("Key")==t&&e.splice(o,1)}),e},actions:{linkToKey:function(e){"/"==e?this.transitionTo("kv.show",""):"/"===e.slice(-1)||e===this.rootKey?this.transitionTo("kv.show",e):this.transitionTo("kv.edit",e)}}}),App.IndexRoute=App.BaseRoute.extend({model:function(){return Ember.$.getJSON("/v1/catalog/datacenters").then(function(e){return e})},afterModel:function(e){1===e.get("length")&&this.transitionTo("services",e[0])}}),App.DcRoute=App.BaseRoute.extend({model:function(e){return Ember.RSVP.hash({dc:e.dc,dcs:Ember.$.getJSON("/v1/catalog/datacenters"),nodes:Ember.$.getJSON(formatUrl("/v1/internal/ui/nodes",e.dc)).then(function(e){var t=[];return e.map(function(e){t.push(App.Node.create(e))}),t})})},setupController:function(e,t){e.set("content",t.dc),e.set("nodes",t.nodes),e.set("dcs",t.dcs),e.set("isDropdownVisible",!1)}}),App.KvIndexRoute=App.BaseRoute.extend({beforeModel:function(){this.transitionTo("kv.show",this.rootKey)}}),App.KvShowRoute=App.BaseRoute.extend({model:function(e){var t=e.key,n=this.modelFor("dc").dc,o=App.get("settings.token");return Ember.RSVP.hash({key:t,keys:Ember.$.getJSON(formatUrl("/v1/kv/"+t+"?keys&seperator=/",n,o)).then(function(e){var t=[];return e.map(function(e){t.push(App.Key.create({Key:e}))}),t})})},setupController:function(e,t){var n=t.key,o=this.getParentAndGrandparent(n);t.keys=this.removeDuplicateKeys(t.keys,t.key),e.set("content",t.keys),e.set("parentKey",o.parent),e.set("grandParentKey",o.grandParent),e.set("isRoot",o.isRoot),e.set("newKey",App.Key.create()),e.set("rootKey",this.rootKey)}}),App.KvEditRoute=App.BaseRoute.extend({model:function(e){var t=e.key,n=this.modelFor("dc").dc,o=this.getParentAndGrandparent(t),r=App.get("settings.token");return Ember.RSVP.hash({dc:n,token:r,key:Ember.$.getJSON(formatUrl("/v1/kv/"+t,n,r)).then(function(e){return App.Key.create().setProperties(e[0])}),keys:keysPromise=Ember.$.getJSON(formatUrl("/v1/kv/"+o.parent+"?keys&seperator=/",n,r)).then(function(e){var t=[];return e.map(function(e){t.push(App.Key.create({Key:e}))}),t})})},afterModel:function(e){return e.key.get("isLocked")?Ember.$.getJSON(formatUrl("/v1/session/info/"+e.key.Session,e.dc,e.token)).then(function(t){return e.session=t[0],e}):e},setupController:function(e,t){var n=t.key,o=this.getParentAndGrandparent(n.get("Key"));t.keys=this.removeDuplicateKeys(t.keys,o.parent),e.set("content",t.key),e.set("parentKey",o.parent),e.set("grandParentKey",o.grandParent),e.set("isRoot",o.isRoot),e.set("siblings",t.keys),e.set("rootKey",this.rootKey),e.set("session",t.session)}}),App.ServicesRoute=App.BaseRoute.extend({model:function(){var e=this.modelFor("dc").dc,t=App.get("settings.token");return Ember.$.getJSON(formatUrl("/v1/internal/ui/services",e,t)).then(function(e){var t=[];return e.map(function(e){t.push(App.Service.create(e))}),t})},setupController:function(e,t){e.set("services",t)}}),App.ServicesShowRoute=App.BaseRoute.extend({model:function(e){var t=this.modelFor("dc").dc,n=App.get("settings.token");return Ember.$.getJSON(formatUrl("/v1/health/service/"+e.name,t,n)).then(function(e){var t=[];return e.map(function(e){t.push(App.Node.create(e))}),t})},setupController:function(e,t){var n=[];t.map(function(e){n=n.concat(e.Service.Tags)}),n=n.filter(function(e){return void 0!==e}),n=n.uniq().join(", "),e.set("content",t),e.set("tags",n)}}),App.NodesShowRoute=App.BaseRoute.extend({model:function(e){var t=this.modelFor("dc").dc,n=App.get("settings.token");return Ember.RSVP.hash({dc:t,token:n,node:Ember.$.getJSON(formatUrl("/v1/internal/ui/node/"+e.name,t,n)).then(function(e){return App.Node.create(e)}),nodes:Ember.$.getJSON(formatUrl("/v1/internal/ui/node/"+e.name,t,n)).then(function(e){return App.Node.create(e)})})},afterModel:function(e){return Ember.$.getJSON(formatUrl("/v1/session/node/"+e.node.Node,e.dc,e.token)).then(function(t){return e.sessions=t,e})},setupController:function(e,t){e.set("content",t.node),e.set("sessions",t.sessions),e.set("nodes",t.nodes)}}),App.NodesRoute=App.BaseRoute.extend({model:function(){var e=this.modelFor("dc").dc,t=App.get("settings.token");return Ember.$.getJSON(formatUrl("/v1/internal/ui/nodes",e,t)).then(function(e){var t=[];return e.map(function(e){t.push(App.Node.create(e))}),t})},setupController:function(e,t){e.set("nodes",t)}}),App.AclsRoute=App.BaseRoute.extend({model:function(){var e=this.modelFor("dc").dc,t=App.get("settings.token");return Ember.$.getJSON(formatUrl("/v1/acl/list",e,t)).then(function(e){var t=[];return e.map(function(e){"anonymous"===e.ID?t.unshift(App.Acl.create(e)):t.push(App.Acl.create(e))}),t})},actions:{error:function(e){return e&&401===e.status?this.transitionTo("dc.aclsdisabled"):e&&403===e.status&&this.transitionTo("dc.unauthorized"),!0}},setupController:function(e,t){e.set("acls",t),e.set("newAcl",App.Acl.create())}}),App.AclsShowRoute=App.BaseRoute.extend({model:function(e){var t=this.modelFor("dc").dc,n=App.get("settings.token");return Ember.RSVP.hash({dc:t,acl:Ember.$.getJSON(formatUrl("/v1/acl/info/"+e.id,t,n)).then(function(e){return App.Acl.create(e[0])})})},setupController:function(e,t){e.set("content",t.acl)}}),App.SettingsRoute=App.BaseRoute.extend({model:function(){return App.get("settings")}});App.ApplicationController=Ember.ObjectController.extend({updateCurrentPath:function(){App.set("currentPath",this.get("currentPath"))}.observes("currentPath")}),App.DcController=Ember.Controller.extend({needs:["application"],isDropdownVisible:!1,datacenter:function(){return this.get("content")}.property("content"),checks:function(){var e=this.get("nodes"),t=Ember.A();return e.forEach(function(e){t=t.concat(e.Checks)}),t}.property("nodes"),totalChecksFailing:function(){var e=this.get("checks");return e.filterBy("Status","critical").get("length")+e.filterBy("Status","warning").get("length")}.property("nodes"),checkMessage:function(){var e=this.get("checks"),t=this.get("totalChecksFailing"),n=e.filterBy("Status","passing").get("length");return this.get("hasFailingChecks")===!0?t+" failing":n+" passing"}.property("nodes"),checkStatus:function(){return this.get("hasFailingChecks")===!0?"failing":"passing"}.property("nodes"),hasFailingChecks:function(){var e=this.get("totalChecksFailing");return e>0}.property("nodes"),actions:{toggle:function(){this.toggleProperty("isDropdownVisible")},hideDrop:function(){this.set("isDropdownVisible",!1)}}}),KvBaseController=Ember.ObjectController.extend({getParentKeyRoute:function(){return this.get(this.get("isRoot")?"rootKey":"parentKey")},transitionToNearestParent:function(e){var t=this,n=t.get("rootKey"),s=t.get("dc").get("datacenter"),o=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/kv/"+e+"?keys",s,o),type:"GET"}).then(function(){t.transitionToRoute("kv.show",e)}).fail(function(e){404===e.status&&t.transitionToRoute("kv.show",n)}),t.set("isLoading",!1)}}),App.KvShowController=KvBaseController.extend(Ember.Validations.Mixin),App.KvShowController.reopen({needs:["dc"],dc:Ember.computed.alias("controllers.dc"),isLoading:!1,actions:{createKey:function(){this.set("isLoading",!0);var e=this,t=e.get("newKey"),n=e.get("parentKey"),s=(e.get("grandParentKey"),e.get("dc").get("datacenter")),o=App.get("settings.token");void 0!==n&&"/"!==n&&t.set("Key",n+t.get("Key")),Ember.$.ajax({url:formatUrl("/v1/kv/"+t.get("Key"),s,o),type:"PUT",data:t.get("Value")}).then(function(){t.get("isFolder")===!0?e.transitionToRoute("kv.show",t.get("Key")):e.transitionToRoute("kv.edit",t.get("Key")),e.set("isLoading",!1)}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText)})},deleteFolder:function(){this.set("isLoading",!0);var e=this,t=e.get("dc").get("datacenter"),n=e.get("grandParentKey"),s=App.get("settings.token");window.confirm("Are you sure you want to delete this folder?")&&Ember.$.ajax({url:formatUrl("/v1/kv/"+e.get("parentKey")+"?recurse",t,s),type:"DELETE"}).then(function(){e.transitionToNearestParent(n)}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText)})}}}),App.KvEditController=KvBaseController.extend({isLoading:!1,needs:["dc"],dc:Ember.computed.alias("controllers.dc"),actions:{updateKey:function(){this.set("isLoading",!0);var e=this.get("dc").get("datacenter"),t=this.get("model"),n=this,s=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/kv/"+t.get("Key"),e,s),type:"PUT",data:t.get("valueDecoded")}).then(function(){n.set("isLoading",!1)}).fail(function(e){n.set("errorMessage","Received error while processing: "+e.statusText)})},cancelEdit:function(){this.set("isLoading",!0),this.transitionToRoute("kv.show",this.getParentKeyRoute()),this.set("isLoading",!1)},deleteKey:function(){this.set("isLoading",!0);var e=this,t=e.get("dc").get("datacenter"),n=e.get("model"),s=e.getParentKeyRoute(),o=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/kv/"+n.get("Key"),t,o),type:"DELETE"}).then(function(){e.transitionToNearestParent(s)}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText)})}}}),ItemBaseController=Ember.ArrayController.extend({needs:["dc","application"],queryParams:["filter","status","condensed"],dc:Ember.computed.alias("controllers.dc"),condensed:!0,hasExpanded:!0,filterText:"Filter by name",filter:"",status:"any status",statuses:["any status","passing","failing"],isShowingItem:function(){var e=this.get("controllers.application.currentPath");return"dc.nodes.show"===e||"dc.services.show"===e}.property("controllers.application.currentPath"),filteredContent:function(){var e=this.get("filter"),t=this.get("status"),n=this.get("items").filter(function(t){return t.get("filterKey").toLowerCase().match(e.toLowerCase())});switch(t){case"passing":return n.filterBy("hasFailingChecks",!1);case"failing":return n.filterBy("hasFailingChecks",!0);default:return n}}.property("filter","status","items.@each"),actions:{toggleCondensed:function(){this.set("condensed",!this.get("condensed"))}}}),App.NodesShowController=Ember.ObjectController.extend({needs:["dc","nodes"],dc:Ember.computed.alias("controllers.dc"),actions:{deregisterNode:function(){this.set("isLoading",!0);var e=this,t=e.get("model"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");window.confirm("Are you sure you want to deregister this node?")&&Ember.$.ajax({url:formatUrl("/v1/catalog/deregister",n,s),type:"PUT",data:JSON.stringify({Datacenter:n,Node:t.Node})}).then(function(){var n=e.get("controllers.nodes").get("nodes");e.get("controllers.nodes").set("nodes",n.filter(function(e){return e.Node!==t.Node})),e.transitionToRoute("nodes")}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText)})},invalidateSession:function(e){this.set("isLoading",!0);var t=this,n=t.get("model"),s=t.get("dc").get("datacenter"),o=App.get("settings.token");window.confirm("Are you sure you want to invalidate this session?")&&Ember.$.ajax({url:formatUrl("/v1/session/destroy/"+e,s,o),type:"PUT"}).then(function(){return Ember.$.getJSON(formatUrl("/v1/session/node/"+n.Node,s,o)).then(function(e){t.set("sessions",e)})}).fail(function(e){t.set("errorMessage","Received error while processing: "+e.statusText)})}}}),App.NodesController=ItemBaseController.extend({items:Ember.computed.alias("nodes")}),App.ServicesController=ItemBaseController.extend({items:Ember.computed.alias("services")}),App.AclsController=Ember.ArrayController.extend({needs:["dc","application"],queryParams:["filter"],filterText:"Filter by name or ID",searchBar:!0,newAclButton:!0,types:["management","client"],dc:Ember.computed.alias("controllers.dc"),items:Ember.computed.alias("acls"),filter:"",isShowingItem:function(){var e=this.get("controllers.application.currentPath");return"dc.acls.show"===e}.property("controllers.application.currentPath"),filteredContent:function(){var e=this.get("filter"),t=this.get("items").filter(function(t){var n=t.get("Name").toLowerCase().match(e.toLowerCase());return null!==n?n:t.get("ID").toLowerCase().match(e.toLowerCase())});return t}.property("filter","items.@each"),actions:{createAcl:function(){this.set("isLoading",!0);var e=this,t=e.get("newAcl"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/acl/create",n,s),type:"PUT",data:JSON.stringify(t)}).then(function(t){e.transitionToRoute("acls.show",t.ID),Ember.$.getJSON(formatUrl("/v1/acl/list",n,s)).then(function(t){var n=[];t.map(function(e){n.push(App.Acl.create(e))}),e.set("items",n)}),e.set("isLoading",!1)}).fail(function(t){notify("Received error while creating ACL: "+t.statusText,8e3),e.set("isLoading",!1)})}}}),App.AclsShowController=Ember.ObjectController.extend({needs:["dc","acls"],dc:Ember.computed.alias("controllers.dc"),isLoading:!1,types:["management","client"],actions:{set:function(){this.set("isLoading",!0);{var e=this,t=e.get("model");e.get("dc").get("datacenter")}if(window.confirm("Are you sure you want to use this token for your session?")){{App.set("settings.token",t.ID)}e.transitionToRoute("services"),this.set("isLoading",!1),notify("Now using token: "+t.ID,3e3)}},clone:function(){this.set("isLoading",!0);var e=this,t=e.get("model"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");e.transitionToRoute("services"),Ember.$.ajax({url:formatUrl("/v1/acl/clone/"+t.ID,n,s),type:"PUT"}).then(function(t){e.transitionToRoute("acls.show",t.ID),e.set("isLoading",!1),notify("Successfully cloned token",4e3)}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText),e.set("isLoading",!1)})},"delete":function(){this.set("isLoading",!0);var e=this,t=e.get("model"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");window.confirm("Are you sure you want to delete this token?")&&Ember.$.ajax({url:formatUrl("/v1/acl/destroy/"+t.ID,n,s),type:"PUT"}).then(function(){Ember.$.getJSON(formatUrl("/v1/acl/list",n,s)).then(function(t){objs=[],t.map(function(e){"anonymous"===e.ID?objs.unshift(App.Acl.create(e)):objs.push(App.Acl.create(e))}),e.get("controllers.acls").set("acls",objs)}).then(function(){e.transitionToRoute("acls"),e.set("isLoading",!1),notify("ACL deleted successfully",3e3)})}).fail(function(t){e.set("errorMessage","Received error while processing: "+t.statusText),e.set("isLoading",!1)})},updateAcl:function(){this.set("isLoading",!0);var e=this,t=e.get("model"),n=e.get("dc").get("datacenter"),s=App.get("settings.token");Ember.$.ajax({url:formatUrl("/v1/acl/update",n,s),type:"PUT",data:JSON.stringify(t)}).then(function(){e.set("isLoading",!1),notify("ACL updated successfully",3e3)}).fail(function(t){notify("Received error while updating ACL: "+t.statusText,8e3),e.set("isLoading",!1)})}}}),App.SettingsController=Ember.ObjectController.extend({actions:{reset:function(){this.set("isLoading",!0);var e=this;window.confirm("Are your sure you want to reset your settings?")&&(localStorage.clear(),e.set("content",App.Settings.create()),App.set("settings.token",""),notify("Settings reset",3e3),this.set("isLoading",!1))}}});App.DcView=Ember.View.extend({templateName:"dc",classNames:"dropdowns",click:function(e){$(e.target).is(".dropdowns")&&$("ul.dropdown-menu").hide()}}),App.ItemView=Ember.View.extend({templateName:"item"}),App.ServicesView=Ember.View.extend({templateName:"services"}),App.ServicesShowView=Ember.View.extend({templateName:"service"}),App.ServicesLoadingView=Ember.View.extend({templateName:"item/loading"}),App.NodesView=Ember.View.extend({templateName:"nodes"}),App.NodesShowView=Ember.View.extend({templateName:"node"}),App.NodesLoadingView=Ember.View.extend({templateName:"item/loading"}),App.KvListView=Ember.View.extend({templateName:"kv"}),App.ActionBarView=Ember.View.extend({templateName:"actionbar"}),App.AclView=Ember.View.extend({templateName:"acls"}),App.AclsShowView=Ember.View.extend({templateName:"acl"}),App.SettingsView=Ember.View.extend({templateName:"settings"});function notify(e,a){void 0!==window.notifications&&window.notifications.length>0&&$(window.notifications).each(function(e,a){a.dismiss()});var n=new NotificationFx({message:"

"+e+"

",layout:"growl",effect:"slide",type:"notice",ttl:a});n.show(),window.notifications=[],window.notifications.push(n)}Ember.Handlebars.helper("panelBar",function(e){var a;return a="passing"==e?"bg-green":"bg-orange",new Handlebars.SafeString('
')}),Ember.Handlebars.helper("listBar",function(e){var a;return a="passing"==e?"bg-green":"bg-orange",new Handlebars.SafeString('
')}),Ember.Handlebars.helper("sessionName",function(e){var a;return a=""===e.Name?""+e.ID+"":""+e.Name+" "+e.ID+"",new Handlebars.SafeString(a)}),Ember.Handlebars.helper("sessionMeta",function(e){var a='";return""!==e.TTL&&(a=a+'"),new Handlebars.SafeString(a)}),Ember.Handlebars.helper("aclName",function(e,a){return""===e?a:new Handlebars.SafeString(e+' '+a+"")}),Ember.Handlebars.helper("formatRules",function(e){return""===e?"No rules defined":e}),Ember.Handlebars.helper("serviceTagMessage",function(e){return null===e?"No tags":void 0});