From f5d4a9539fdd392fa3a3293c0725708b8448f886 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 5 May 2015 08:26:23 +0200 Subject: [PATCH] 5aa07429f2170d4bc832c3742b06d0eb67a09432 --- dist/index.html | 6 ++--- dist/js/app-loader.js | 2 +- dist/js/app.js | 28 +++++++++++------------ dist/js/app.js.map | 2 +- dist/js/templates.js | 52 +++++++++++++++++++++---------------------- 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/dist/index.html b/dist/index.html index a71d57f..dcb5e2c 100644 --- a/dist/index.html +++ b/dist/index.html @@ -159,8 +159,8 @@

Loading...

- - - + + + \ No newline at end of file diff --git a/dist/js/app-loader.js b/dist/js/app-loader.js index 69fc83c..09e210e 100644 --- a/dist/js/app-loader.js +++ b/dist/js/app-loader.js @@ -1,7 +1,7 @@ (function() { var promise, version; - version = 1426845020297; + version = 1430807141828; window.taigaConfig = { "api": "http://localhost:8000/api/v1/", diff --git a/dist/js/app.js b/dist/js/app.js index 913fb5a..2dfe6e5 100644 --- a/dist/js/app.js +++ b/dist/js/app.js @@ -1,17 +1,17 @@ -(function(){var configure,init,module,modules,taiga;this.taiga=taiga={},this.taigaContribPlugins=this.taigaContribPlugins||[],taiga.generateHash=function(components){return null==components&&(components=[]),components=_.map(components,function(x){return JSON.stringify(x)}),hex_sha1(components.join(":"))},taiga.generateUniqueSessionIdentifier=function(){var date,randomNumber;return date=(new Date).getTime(),randomNumber=Math.floor(150994944*Math.random()),taiga.generateHash([date,randomNumber])},taiga.sessionId=taiga.generateUniqueSessionIdentifier(),configure=function($routeProvider,$locationProvider,$httpProvider,$provide,$tgEventsProvider,tgLoaderProvider,$compileProvider){var authHttpIntercept,defaultHeaders,versionCheckHttpIntercept;return $routeProvider.when("/",{templateUrl:"project/projects.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/",{templateUrl:"project/project.html"}),$routeProvider.when("/project/:pslug/search",{templateUrl:"search/search.html",reloadOnSearch:!1}),$routeProvider.when("/project/:pslug/backlog",{templateUrl:"backlog/backlog.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/kanban",{templateUrl:"kanban/kanban.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/taskboard/:sslug",{templateUrl:"taskboard/taskboard.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/us/:usref",{templateUrl:"us/us-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/task/:taskref",{templateUrl:"task/task-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/wiki",{redirectTo:function(params){return"/project/"+params.pslug+"/wiki/home"}}),$routeProvider.when("/project/:pslug/wiki/:slug",{templateUrl:"wiki/wiki.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/team",{templateUrl:"team/team.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/issues",{templateUrl:"issue/issues.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/issue/:issueref",{templateUrl:"issue/issues-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/admin/project-profile/details",{templateUrl:"admin/admin-project-profile.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/default-values",{templateUrl:"admin/admin-project-default-values.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/modules",{templateUrl:"admin/admin-project-modules.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/export",{templateUrl:"admin/admin-project-export.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/reports",{templateUrl:"admin/admin-project-reports.html"}),$routeProvider.when("/project/:pslug/admin/project-values/status",{templateUrl:"admin/admin-project-values-status.html"}),$routeProvider.when("/project/:pslug/admin/project-values/points",{templateUrl:"admin/admin-project-values-points.html"}),$routeProvider.when("/project/:pslug/admin/project-values/priorities",{templateUrl:"admin/admin-project-values-priorities.html"}),$routeProvider.when("/project/:pslug/admin/project-values/severities",{templateUrl:"admin/admin-project-values-severities.html"}),$routeProvider.when("/project/:pslug/admin/project-values/types",{templateUrl:"admin/admin-project-values-types.html"}),$routeProvider.when("/project/:pslug/admin/project-values/custom-fields",{templateUrl:"admin/admin-project-values-custom-fields.html"}),$routeProvider.when("/project/:pslug/admin/memberships",{templateUrl:"admin/admin-memberships.html"}),$routeProvider.when("/project/:pslug/admin/roles",{templateUrl:"admin/admin-roles.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/webhooks",{templateUrl:"admin/admin-third-parties-webhooks.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/github",{templateUrl:"admin/admin-third-parties-github.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/gitlab",{templateUrl:"admin/admin-third-parties-gitlab.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/bitbucket",{templateUrl:"admin/admin-third-parties-bitbucket.html"}),$routeProvider.when("/project/:pslug/admin/contrib/:plugin",{templateUrl:"contrib/main.html"}),$routeProvider.when("/project/:pslug/user-settings/user-profile",{templateUrl:"user/user-profile.html"}),$routeProvider.when("/project/:pslug/user-settings/user-change-password",{templateUrl:"user/user-change-password.html"}),$routeProvider.when("/project/:pslug/user-settings/user-avatar",{templateUrl:"user/user-avatar.html"}),$routeProvider.when("/project/:pslug/user-settings/mail-notifications",{templateUrl:"user/mail-notifications.html"}),$routeProvider.when("/change-email/:email_token",{templateUrl:"user/change-email.html"}),$routeProvider.when("/cancel-account/:cancel_token",{templateUrl:"user/cancel-account.html"}),$routeProvider.when("/login",{templateUrl:"auth/login.html"}),$routeProvider.when("/register",{templateUrl:"auth/register.html"}),$routeProvider.when("/forgot-password",{templateUrl:"auth/forgot-password.html"}),$routeProvider.when("/change-password",{templateUrl:"auth/change-password-from-recovery.html"}),$routeProvider.when("/change-password/:token",{templateUrl:"auth/change-password-from-recovery.html"}),$routeProvider.when("/invitation/:token",{templateUrl:"auth/invitation.html"}),$routeProvider.when("/error",{templateUrl:"error/error.html"}),$routeProvider.when("/not-found",{templateUrl:"error/not-found.html"}),$routeProvider.when("/permission-denied",{templateUrl:"error/permission-denied.html"}),$routeProvider.otherwise({redirectTo:"/not-found"}),$locationProvider.html5Mode({enabled:!0,requireBase:!1}),defaultHeaders={"Content-Type":"application/json","Accept-Language":"en","X-Session-Id":taiga.sessionId},$httpProvider.defaults.headers["delete"]=defaultHeaders,$httpProvider.defaults.headers.patch=defaultHeaders,$httpProvider.defaults.headers.post=defaultHeaders,$httpProvider.defaults.headers.put=defaultHeaders,$httpProvider.defaults.headers.get={"X-Session-Id":taiga.sessionId},$tgEventsProvider.setSessionId(taiga.sessionId),authHttpIntercept=function($q,$location,$navUrls,$lightboxService){var httpResponseError;return httpResponseError=function(response){var nextPath;return 0===response.status?($lightboxService.closeAll(),$location.path($navUrls.resolve("error")),$location.replace()):401===response.status&&(nextPath=$location.path(),$location.url($navUrls.resolve("login")).search("next="+nextPath)),$q.reject(response)},{responseError:httpResponseError}},$provide.factory("authHttpIntercept",["$q","$location","$tgNavUrls","lightboxService",authHttpIntercept]),$httpProvider.interceptors.push("authHttpIntercept"),versionCheckHttpIntercept=function($q,$confirm){var httpResponseError,versionErrorMsg;return versionErrorMsg="Someone inside Taiga has changed this before and our Oompa Loompas cannot apply your changes. Please reload and apply your changes again (they will be lost).",httpResponseError=function(response){return 400===response.status&&response.data.version?($confirm.notify("error",versionErrorMsg,null,1e4),$q.reject(response)):$q.reject(response)},{responseError:httpResponseError}},$provide.factory("versionCheckHttpIntercept",["$q","$tgConfirm",versionCheckHttpIntercept]),$httpProvider.interceptors.push("versionCheckHttpIntercept"),window.checksley.updateValidators({linewidth:function(val,width){var lines,valid;return lines=taiga.nl2br(val).split("
"),valid=_.every(lines,function(line){return line.lengthi;i++)if(i in this&&this[i]===item)return i;return-1},slice=[].slice,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;nl2br=function(){return function(str){var breakTag;return breakTag="
",(str+"").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g,"$1"+breakTag+"$2")}}(this),bindMethods=function(){return function(object){var dependencies,methods;return dependencies=_.keys(object),methods=[],_.forIn(object,function(value,key){return indexOf.call(dependencies,key)<0?methods.push(key):void 0}),_.bindAll(object,methods)}}(this),bindOnce=function(){return function(scope,attr,continuation){var delBind,val;return val=scope.$eval(attr),void 0!==val?continuation(val):(delBind=null,delBind=scope.$watch(attr,function(val){return void 0!==val?(continuation(val),delBind?delBind():void 0):void 0}))}}(this),mixOf=function(){var Mixed,base,i,method,mixin,mixins,name,ref;for(base=arguments[0],mixins=2<=arguments.length?slice.call(arguments,1):[],Mixed=function(superClass){function Mixed(){return Mixed.__super__.constructor.apply(this,arguments)}return extend(Mixed,superClass),Mixed}(base),i=mixins.length-1;i>=0;i+=-1){mixin=mixins[i],ref=mixin.prototype;for(name in ref)method=ref[name],Mixed.prototype[name]=method}return Mixed},trim=function(data,char){return _.str.trim(data,char)},slugify=function(data){return _.str.slugify(data)},unslugify=function(data){return data?_.str.capitalize(data.replace(/-/g," ")):data},toggleText=function(element,texts){var nextTextPosition,text;return nextTextPosition=element.data("nextTextPosition"),(null==nextTextPosition||nextTextPosition>=texts.length)&&(nextTextPosition=0),text=texts[nextTextPosition],element.data("nextTextPosition",nextTextPosition+1),element.text(text)},groupBy=function(coll,pred){var i,item,len,result;for(result={},i=0,len=coll.length;len>i;i++)item=coll[i],result[pred(item)]=item;return result},timeout=function(wait,continuation){return window.setTimeout(continuation,wait)},cancelTimeout=function(timeoutVar){return window.clearTimeout(timeoutVar)},scopeDefer=function(scope,func){return _.defer(function(){return function(){return scope.$apply(func)}}(this))},toString=function(value){return _.isNumber(value)?value+"":_.isString(value)?value:_.isPlainObject(value)?JSON.stringify(value):_.isUndefined(value)?"":value.toString()},joinStr=function(str,coll){return _.str.join(str,coll)},debounce=function(wait,func){return _.debounce(func,wait,{leading:!0,trailing:!1})},debounceLeading=function(wait,func){return _.debounce(func,wait,{leading:!1,trailing:!0})},startswith=function(str1,str2){return _.str.startsWith(str1,str2)},sizeFormat=function(input,precision){var number,size,units;return null==precision&&(precision=1),isNaN(parseFloat(input))||!isFinite(input)?"-":0===input?"0 bytes":(units=["bytes","KB","MB","GB","TB","PB"],number=Math.floor(Math.log(input)/Math.log(1024)),number>5&&(number=5),size=(input/Math.pow(1024,number)).toFixed(precision),size+" "+units[number])},taiga=this.taiga,taiga.nl2br=nl2br,taiga.bindMethods=bindMethods,taiga.bindOnce=bindOnce,taiga.mixOf=mixOf,taiga.trim=trim,taiga.slugify=slugify,taiga.unslugify=unslugify,taiga.toggleText=toggleText,taiga.groupBy=groupBy,taiga.timeout=timeout,taiga.cancelTimeout=cancelTimeout,taiga.scopeDefer=scopeDefer,taiga.toString=toString,taiga.joinStr=joinStr,taiga.debounce=debounce,taiga.debounceLeading=debounceLeading,taiga.startswith=startswith,taiga.sizeFormat=sizeFormat}.call(this),function(){var FiltersMixin,PageMixin,groupBy,joinStr,taiga,toString,trim;taiga=this.taiga,groupBy=this.taiga.groupBy,joinStr=this.taiga.joinStr,trim=this.taiga.trim,toString=this.taiga.toString,PageMixin=function(){function PageMixin(){}return PageMixin.prototype.fillUsersAndRoles=function(users,roles){var activeUsers,availableRoles;return activeUsers=_.filter(users,function(){return function(user){return user.is_active}}(this)),this.scope.activeUsers=_.sortBy(activeUsers,"full_name_display"),this.scope.activeUsersById=groupBy(this.scope.activeUsers,function(e){return e.id}),this.scope.users=_.sortBy(users,"full_name_display"),this.scope.usersById=groupBy(this.scope.users,function(e){return e.id}),this.scope.roles=_.sortBy(roles,"order"),availableRoles=_(this.scope.project.memberships).map("role").uniq().value(),this.scope.computableRoles=_(roles).filter("computable").filter(function(x){return _.contains(availableRoles,x.id)}).value()},PageMixin.prototype.loadUsersAndRoles=function(){var promise;return promise=this.q.all([this.rs.projects.usersList(this.scope.projectId),this.rs.projects.rolesList(this.scope.projectId)]),promise.then(function(_this){return function(results){var roles,users;return users=results[0],roles=results[1],_this.fillUsersAndRoles(users,roles),results}}(this))},PageMixin}(),taiga.PageMixin=PageMixin,FiltersMixin=function(){function FiltersMixin(){}return FiltersMixin.prototype.selectFilter=function(name,value,load){var existing,location,params;return null==load&&(load=!1),params=this.location.search(),void 0!==params[name]&&"page"!==name&&(existing=_.map(taiga.toString(params[name]).split(","),function(x){return trim(x)}),existing.push(taiga.toString(value)),existing=_.compact(existing),value=joinStr(",",_.uniq(existing))),this.location.isInCurrentRouteParams(name,value)?void 0:(location=load?this.location:this.location.noreload(this.scope),location.search(name,value))},FiltersMixin.prototype.replaceFilter=function(name,value,load){var location;return null==load&&(load=!1),this.location.isInCurrentRouteParams(name,value)?void 0:(location=load?this.location:this.location.noreload(this.scope),location.search(name,value))},FiltersMixin.prototype.replaceAllFilters=function(filters,load){var location;return null==load&&(load=!1),location=load?this.location:this.location.noreload(this.scope),location.search(filters)},FiltersMixin.prototype.unselectFilter=function(name,value,load){var location,newValues,params,parsedValues;return null==load&&(load=!1),params=this.location.search(),void 0!==params[name]?((void 0===value||null===value)&&delete params[name],parsedValues=_.map(taiga.toString(params[name]).split(","),function(x){return trim(x)}),newValues=_.reject(parsedValues,function(x){return x===taiga.toString(value)}),newValues=_.compact(newValues),value=_.isEmpty(newValues)?null:joinStr(",",_.uniq(newValues)),location=load?this.location:this.location.noreload(this.scope),location.search(name,value)):void 0},FiltersMixin}(),taiga.FiltersMixin=FiltersMixin}.call(this),function(){var module;module=angular.module("taigaAdmin",[])}.call(this),function(){var AuthService,CancelAccountDirective,ChangeEmailDirective,ChangePasswordFromRecoveryDirective,ForgotPasswordDirective,InvitationDirective,LoginDirective,PublicRegisterMessageDirective,RegisterDirective,debounce,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaAuth",["taigaResources"]),AuthService=function(superClass){function AuthService(rootscope,storage,model,rs,http,urls){this.rootscope=rootscope,this.storage=storage,this.model=model,this.rs=rs,this.http=http,this.urls=urls,AuthService.__super__.constructor.call(this)}return extend(AuthService,superClass),AuthService.$inject=["$rootScope","$tgStorage","$tgModel","$tgResources","$tgHttp","$tgUrls"],AuthService.prototype.getUser=function(){var user,userData;return this.rootscope.user?this.rootscope.user:(userData=this.storage.get("userInfo"),userData?(user=this.model.make_model("users",userData),this.rootscope.user=user,user):null)},AuthService.prototype.setUser=function(user){return this.rootscope.auth=user,this.rootscope.$broadcast("i18n:change",user.default_language),this.storage.set("userInfo",user.getAttrs()),this.rootscope.user=user},AuthService.prototype.clear=function(){return this.rootscope.auth=null,this.rootscope.user=null,this.storage.remove("userInfo")},AuthService.prototype.setToken=function(token){return this.storage.set("token",token)},AuthService.prototype.getToken=function(){return this.storage.get("token")},AuthService.prototype.removeToken=function(){return this.storage.remove("token")},AuthService.prototype.isAuthenticated=function(){return null!==this.getUser()?!0:!1},AuthService.prototype.login=function(data,type){var url;return url=this.urls.resolve("auth"),data=_.clone(data,!1),data.type=type?type:"normal",this.removeToken(),this.http.post(url,data).then(function(_this){return function(data){var user;return user=_this.model.make_model("users",data.data),_this.setToken(user.auth_token),_this.setUser(user),user}}(this))},AuthService.prototype.logout=function(){return this.removeToken(),this.clear()},AuthService.prototype.register=function(data,type,existing){var url;return url=this.urls.resolve("auth-register"),data=_.clone(data,!1),data.type=type?type:"public","private"===type&&(data.existing=existing?existing:!1),this.removeToken(),this.http.post(url,data).then(function(_this){return function(response){var user;return user=_this.model.make_model("users",response.data),_this.setToken(user.auth_token),_this.setUser(user),user}}(this))},AuthService.prototype.getInvitation=function(token){return this.rs.invitations.get(token)},AuthService.prototype.acceptInvitiationWithNewUser=function(data){return this.register(data,"private",!1)},AuthService.prototype.acceptInvitiationWithExistingUser=function(data){return this.register(data,"private",!0)},AuthService.prototype.forgotPassword=function(data){var url;return url=this.urls.resolve("users-password-recovery"),data=_.clone(data,!1),this.removeToken(),this.http.post(url,data)},AuthService.prototype.changePasswordFromRecovery=function(data){var url;return url=this.urls.resolve("users-change-password-from-recovery"),data=_.clone(data,!1),this.removeToken(),this.http.post(url,data)},AuthService.prototype.changeEmail=function(data){var url;return url=this.urls.resolve("users-change-email"),data=_.clone(data,!1),this.http.post(url,data)},AuthService.prototype.cancelAccount=function(data){var url;return url=this.urls.resolve("users-cancel-account"),data=_.clone(data,!1),this.http.post(url,data)},AuthService}(taiga.Service),module.service("$tgAuth",AuthService),PublicRegisterMessageDirective=function($config,$navUrls,templates){var template,templateFn;return template=templates.get("auth/login-text.html",!0),templateFn=function(){var publicRegisterEnabled;return publicRegisterEnabled=$config.get("publicRegisterEnabled"),publicRegisterEnabled?template({url:$navUrls.resolve("register")}):""},{restrict:"AE",scope:{},template:templateFn}},module.directive("tgPublicRegisterMessage",["$tgConfig","$tgNavUrls","$tgTemplate",PublicRegisterMessageDirective]),LoginDirective=function($auth,$confirm,$location,$config,$routeParams,$navUrls,$events){var link;return link=function($scope,$el){var onError,onSuccess,submit;return onSuccess=function(){var nextUrl;return nextUrl=$routeParams.next&&$routeParams.next!==$navUrls.resolve("login")?$routeParams.next:$navUrls.resolve("home"),$events.setupConnection(),$location.path(nextUrl)},onError=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your username/email or password are incorrect.")},submit=debounce(2e3,function(){return function(event){var data,form,loginFormType,promise;return event.preventDefault(),form=new checksley.Form($el.find("form.login-form")),form.validate()?(data={username:$el.find("form.login-form input[name=username]").val(),password:$el.find("form.login-form input[name=password]").val()},loginFormType=$config.get("loginFormType","normal"),promise=$auth.login(data,loginFormType),promise.then(onSuccess,onError)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgLogin",["$tgAuth","$tgConfirm","$tgLocation","$tgConfig","$routeParams","$tgNavUrls","$tgEvents",LoginDirective]),RegisterDirective=function($auth,$confirm,$location,$navUrls,$config,$analytics){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $config.get("publicRegisterEnabled")||($location.path($navUrls.resolve("not-found")),$location.replace()),$scope.data={},form=$el.find("form").checksley({onlyOneErrorElement:!0}),onSuccessSubmit=function(){return $analytics.trackEvent("auth","register","user registration",1),$confirm.notify("success","Our Oompa Loompas are happy, welcome to Taiga."),$location.path($navUrls.resolve("home"))},onErrorSubmit=function(response){return null!=response.data._error_message&&$confirm.notify("light-error","According to our Oompa Loompas there was an error. "+response.data._error_message),form.setErrors(response.data)},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.register($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgRegister",["$tgAuth","$tgConfirm","$tgLocation","$tgNavUrls","$tgConfig","$tgAnalytics",RegisterDirective]),ForgotPasswordDirective=function($auth,$confirm,$location,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},form=$el.find("form").checksley(),onSuccessSubmit=function(response){return $location.path($navUrls.resolve("login")),$confirm.success("Check your inbox!
We have sent a mail to
"+response.data.email+"
with the instructions to set a new password")},onErrorSubmit=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your are not registered yet.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.forgotPassword($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgForgotPassword",["$tgAuth","$tgConfirm","$tgLocation","$tgNavUrls",ForgotPasswordDirective]),ChangePasswordFromRecoveryDirective=function($auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},null!=$params.token?($scope.tokenInParams=!0,$scope.data.token=$params.token):$scope.tokenInParams=!1,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $location.path($navUrls.resolve("login")),$confirm.success("Our Oompa Loompas saved your new password.
Try to sign in with it.")},onErrorSubmit=function(response){return $confirm.notify("light-error","One of our Oompa Loompas say '"+response.data._error_message+"'.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.changePasswordFromRecovery($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgChangePasswordFromRecovery",["$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",ChangePasswordFromRecoveryDirective]),InvitationDirective=function($auth,$confirm,$location,$params,$navUrls,$analytics){var link;return link=function($scope,$el){var loginForm,onErrorSubmitLogin,onErrorSubmitRegister,onSuccessSubmitLogin,onSuccessSubmitRegister,promise,registerForm,submitLogin,submitRegister,token;return token=$params.token,promise=$auth.getInvitation(token),promise.then(function(invitation){return $scope.invitation=invitation}),promise.then(null,function(){return $location.path($navUrls.resolve("login")),$confirm.success("Ooops, we have a problem
Our Oompa Loompas can't find your invitation.")}),$scope.dataLogin={token:token},loginForm=$el.find("form.login-form").checksley({onlyOneErrorElement:!0}),onSuccessSubmitLogin=function(){return $analytics.trackEvent("auth","invitationAccept","invitation accept with existing user",1),$location.path($navUrls.resolve("project",{project:$scope.invitation.project_slug})),$confirm.notify("success","You've successfully joined this project","Welcome to "+_.escape($scope.invitation.project_name))},onErrorSubmitLogin=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your are not registered yet or typed an invalid password.")},submitLogin=debounce(2e3,function(){return function(event){return event.preventDefault(),loginForm.validate()?(promise=$auth.acceptInvitiationWithExistingUser($scope.dataLogin),promise.then(onSuccessSubmitLogin,onErrorSubmitLogin)):void 0}}(this)),$el.on("submit","form.login-form",submitLogin),$el.on("click",".button-login",submitLogin),$scope.dataRegister={token:token},registerForm=$el.find("form.register-form").checksley(),onSuccessSubmitRegister=function(){return $analytics.trackEvent("auth","invitationAccept","invitation accept with new user",1),$location.path($navUrls.resolve("project",{project:$scope.invitation.project_slug})),$confirm.notify("success","You've successfully joined this project","Welcome to "+_.escape($scope.invitation.project_name))},onErrorSubmitRegister=function(){return $confirm.notify("light-error","According to our Oompa Loompas, that username or email is already in use.")},submitRegister=debounce(2e3,function(){return function(event){return event.preventDefault(),registerForm.validate()?(promise=$auth.acceptInvitiationWithNewUser($scope.dataRegister),promise.then(onSuccessSubmitRegister,onErrorSubmitRegister)):void 0}}(this)),$el.on("submit","form.register-form",submitRegister),$el.on("click",".button-register",submitRegister)},{link:link}},module.directive("tgInvitation",["$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls","$tgAnalytics",InvitationDirective]),ChangeEmailDirective=function($repo,$model,$auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},$scope.data.email_token=$params.email_token,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $repo.queryOne("users",$auth.getUser().id).then(function(){return function(data){return $auth.setUser(data),$location.path($navUrls.resolve("home")),$confirm.success("Our Oompa Loompas updated your email")}}(this))},onErrorSubmit=function(response){return $confirm.notify("error","One of our Oompa Loompas says '"+response.data._error_message+"'.")},submit=function(){var promise;if(form.validate())return promise=$auth.changeEmail($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)},$el.on("submit",function(event){return event.preventDefault(),submit()}),$el.on("click","a.button-change-email",function(event){return event.preventDefault(),submit()})},{link:link}},module.directive("tgChangeEmail",["$tgRepo","$tgModel","$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",ChangeEmailDirective]),CancelAccountDirective=function($repo,$model,$auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},$scope.data.cancel_token=$params.cancel_token,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $auth.logout(),$location.path($navUrls.resolve("home")),$confirm.success("Our Oompa Loompas removed your account")},onErrorSubmit=function(response){return $confirm.notify("error","One of our Oompa Loompas says '"+response.data._error_message+"'.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.cancelAccount($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgCancelAccount",["$tgRepo","$tgModel","$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",CancelAccountDirective])}.call(this),function(){var module;module=angular.module("taigaBacklog",[])}.call(this),function(){var TaigaMainDirective,bindOnce,groupBy,init,module,taiga,urls;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaBase",["taigaLocales"]),TaigaMainDirective=function($rootscope,$window){var link;return link=function(){return $window.onresize=function(){return $rootscope.$broadcast("resize")}},{link:link}},module.directive("tgMain",["$rootScope","$window",TaigaMainDirective]),urls={home:"/",error:"/error","not-found":"/not-found","permission-denied":"/permission-denied",login:"/login","forgot-password":"/forgot-password","change-password":"/change-password/:token","change-email":"/change-email/:token","cancel-account":"/cancel-account/:token",register:"/register",invitation:"/invitation/:token","create-project":"/create-project",profile:"/:user",project:"/project/:project","project-backlog":"/project/:project/backlog","project-taskboard":"/project/:project/taskboard/:sprint","project-kanban":"/project/:project/kanban","project-issues":"/project/:project/issues","project-search":"/project/:project/search","project-userstories-detail":"/project/:project/us/:ref","project-tasks-detail":"/project/:project/task/:ref","project-issues-detail":"/project/:project/issue/:ref","project-wiki":"/project/:project/wiki","project-wiki-page":"/project/:project/wiki/:slug","project-team":"/project/:project/team","project-admin-home":"/project/:project/admin/project-profile/details","project-admin-project-profile-details":"/project/:project/admin/project-profile/details","project-admin-project-profile-default-values":"/project/:project/admin/project-profile/default-values","project-admin-project-profile-modules":"/project/:project/admin/project-profile/modules","project-admin-project-profile-export":"/project/:project/admin/project-profile/export","project-admin-project-profile-reports":"/project/:project/admin/project-profile/reports","project-admin-project-values-status":"/project/:project/admin/project-values/status","project-admin-project-values-points":"/project/:project/admin/project-values/points","project-admin-project-values-priorities":"/project/:project/admin/project-values/priorities","project-admin-project-values-severities":"/project/:project/admin/project-values/severities","project-admin-project-values-types":"/project/:project/admin/project-values/types","project-admin-project-values-custom-fields":"/project/:project/admin/project-values/custom-fields","project-admin-memberships":"/project/:project/admin/memberships","project-admin-roles":"/project/:project/admin/roles","project-admin-third-parties-webhooks":"/project/:project/admin/third-parties/webhooks","project-admin-third-parties-github":"/project/:project/admin/third-parties/github","project-admin-third-parties-gitlab":"/project/:project/admin/third-parties/gitlab","project-admin-third-parties-bitbucket":"/project/:project/admin/third-parties/bitbucket","project-admin-contrib":"/project/:project/admin/contrib/:plugin","user-settings-user-profile":"/project/:project/user-settings/user-profile","user-settings-user-change-password":"/project/:project/user-settings/user-change-password","user-settings-user-avatar":"/project/:project/user-settings/user-avatar","user-settings-mail-notifications":"/project/:project/user-settings/mail-notifications"},init=function($log,$navurls){return $log.debug("Initialize navigation urls"),$navurls.update(urls) +(function(){var configure,init,module,modules,taiga;this.taiga=taiga={},this.taigaContribPlugins=this.taigaContribPlugins||[],taiga.generateHash=function(components){return null==components&&(components=[]),components=_.map(components,function(x){return JSON.stringify(x)}),hex_sha1(components.join(":"))},taiga.generateUniqueSessionIdentifier=function(){var date,randomNumber;return date=(new Date).getTime(),randomNumber=Math.floor(150994944*Math.random()),taiga.generateHash([date,randomNumber])},taiga.sessionId=taiga.generateUniqueSessionIdentifier(),configure=function($routeProvider,$locationProvider,$httpProvider,$provide,$tgEventsProvider,tgLoaderProvider,$compileProvider){var authHttpIntercept,defaultHeaders,versionCheckHttpIntercept;return $routeProvider.when("/",{templateUrl:"project/projects.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/",{templateUrl:"project/project.html"}),$routeProvider.when("/project/:pslug/search",{templateUrl:"search/search.html",reloadOnSearch:!1}),$routeProvider.when("/project/:pslug/backlog",{templateUrl:"backlog/backlog.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/kanban",{templateUrl:"kanban/kanban.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/taskboard/:sslug",{templateUrl:"taskboard/taskboard.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/us/:usref",{templateUrl:"us/us-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/task/:taskref",{templateUrl:"task/task-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/wiki",{redirectTo:function(params){return"/project/"+params.pslug+"/wiki/home"}}),$routeProvider.when("/project/:pslug/wiki/:slug",{templateUrl:"wiki/wiki.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/team",{templateUrl:"team/team.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/issues",{templateUrl:"issue/issues.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/issue/:issueref",{templateUrl:"issue/issues-detail.html",resolve:{loader:tgLoaderProvider.add()}}),$routeProvider.when("/project/:pslug/admin/project-profile/details",{templateUrl:"admin/admin-project-profile.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/default-values",{templateUrl:"admin/admin-project-default-values.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/modules",{templateUrl:"admin/admin-project-modules.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/export",{templateUrl:"admin/admin-project-export.html"}),$routeProvider.when("/project/:pslug/admin/project-profile/reports",{templateUrl:"admin/admin-project-reports.html"}),$routeProvider.when("/project/:pslug/admin/project-values/status",{templateUrl:"admin/admin-project-values-status.html"}),$routeProvider.when("/project/:pslug/admin/project-values/points",{templateUrl:"admin/admin-project-values-points.html"}),$routeProvider.when("/project/:pslug/admin/project-values/priorities",{templateUrl:"admin/admin-project-values-priorities.html"}),$routeProvider.when("/project/:pslug/admin/project-values/severities",{templateUrl:"admin/admin-project-values-severities.html"}),$routeProvider.when("/project/:pslug/admin/project-values/types",{templateUrl:"admin/admin-project-values-types.html"}),$routeProvider.when("/project/:pslug/admin/project-values/custom-fields",{templateUrl:"admin/admin-project-values-custom-fields.html"}),$routeProvider.when("/project/:pslug/admin/memberships",{templateUrl:"admin/admin-memberships.html"}),$routeProvider.when("/project/:pslug/admin/roles",{templateUrl:"admin/admin-roles.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/webhooks",{templateUrl:"admin/admin-third-parties-webhooks.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/github",{templateUrl:"admin/admin-third-parties-github.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/gitlab",{templateUrl:"admin/admin-third-parties-gitlab.html"}),$routeProvider.when("/project/:pslug/admin/third-parties/bitbucket",{templateUrl:"admin/admin-third-parties-bitbucket.html"}),$routeProvider.when("/project/:pslug/admin/contrib/:plugin",{templateUrl:"contrib/main.html"}),$routeProvider.when("/project/:pslug/user-settings/user-profile",{templateUrl:"user/user-profile.html"}),$routeProvider.when("/project/:pslug/user-settings/user-change-password",{templateUrl:"user/user-change-password.html"}),$routeProvider.when("/project/:pslug/user-settings/user-avatar",{templateUrl:"user/user-avatar.html"}),$routeProvider.when("/project/:pslug/user-settings/mail-notifications",{templateUrl:"user/mail-notifications.html"}),$routeProvider.when("/change-email/:email_token",{templateUrl:"user/change-email.html"}),$routeProvider.when("/cancel-account/:cancel_token",{templateUrl:"user/cancel-account.html"}),$routeProvider.when("/login",{templateUrl:"auth/login.html"}),$routeProvider.when("/register",{templateUrl:"auth/register.html"}),$routeProvider.when("/forgot-password",{templateUrl:"auth/forgot-password.html"}),$routeProvider.when("/change-password",{templateUrl:"auth/change-password-from-recovery.html"}),$routeProvider.when("/change-password/:token",{templateUrl:"auth/change-password-from-recovery.html"}),$routeProvider.when("/invitation/:token",{templateUrl:"auth/invitation.html"}),$routeProvider.when("/error",{templateUrl:"error/error.html"}),$routeProvider.when("/not-found",{templateUrl:"error/not-found.html"}),$routeProvider.when("/permission-denied",{templateUrl:"error/permission-denied.html"}),$routeProvider.otherwise({redirectTo:"/not-found"}),$locationProvider.html5Mode({enabled:!0,requireBase:!1}),defaultHeaders={"Content-Type":"application/json","Accept-Language":"en","X-Session-Id":taiga.sessionId},$httpProvider.defaults.headers["delete"]=defaultHeaders,$httpProvider.defaults.headers.patch=defaultHeaders,$httpProvider.defaults.headers.post=defaultHeaders,$httpProvider.defaults.headers.put=defaultHeaders,$httpProvider.defaults.headers.get={"X-Session-Id":taiga.sessionId},$tgEventsProvider.setSessionId(taiga.sessionId),authHttpIntercept=function($q,$location,$navUrls,$lightboxService){var httpResponseError;return httpResponseError=function(response){var nextPath;return 0===response.status?($lightboxService.closeAll(),$location.path($navUrls.resolve("error")),$location.replace()):401===response.status&&(nextPath=$location.path(),$location.url($navUrls.resolve("login")).search("next="+nextPath)),$q.reject(response)},{responseError:httpResponseError}},$provide.factory("authHttpIntercept",["$q","$location","$tgNavUrls","lightboxService",authHttpIntercept]),$httpProvider.interceptors.push("authHttpIntercept"),versionCheckHttpIntercept=function($q,$confirm){var httpResponseError,versionErrorMsg;return versionErrorMsg="Someone inside Taiga has changed this before and our Oompa Loompas cannot apply your changes. Please reload and apply your changes again (they will be lost).",httpResponseError=function(response){return 400===response.status&&response.data.version?($confirm.notify("error",versionErrorMsg,null,1e4),$q.reject(response)):$q.reject(response)},{responseError:httpResponseError}},$provide.factory("versionCheckHttpIntercept",["$q","$tgConfirm",versionCheckHttpIntercept]),$httpProvider.interceptors.push("versionCheckHttpIntercept"),window.checksley.updateValidators({linewidth:function(val,width){var lines,valid;return lines=taiga.nl2br(val).split("
"),valid=_.every(lines,function(line){return line.lengthi;i++)if(i in this&&this[i]===item)return i;return-1},slice=[].slice,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;nl2br=function(){return function(str){var breakTag;return breakTag="
",(str+"").replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g,"$1"+breakTag+"$2")}}(this),bindMethods=function(){return function(object){var dependencies,methods;return dependencies=_.keys(object),methods=[],_.forIn(object,function(value,key){return indexOf.call(dependencies,key)<0?methods.push(key):void 0}),_.bindAll(object,methods)}}(this),bindOnce=function(){return function(scope,attr,continuation){var delBind,val;return val=scope.$eval(attr),void 0!==val?continuation(val):(delBind=null,delBind=scope.$watch(attr,function(val){return void 0!==val?(continuation(val),delBind?delBind():void 0):void 0}))}}(this),mixOf=function(){var Mixed,base,i,method,mixin,mixins,name,ref;for(base=arguments[0],mixins=2<=arguments.length?slice.call(arguments,1):[],Mixed=function(superClass){function Mixed(){return Mixed.__super__.constructor.apply(this,arguments)}return extend(Mixed,superClass),Mixed}(base),i=mixins.length-1;i>=0;i+=-1){mixin=mixins[i],ref=mixin.prototype;for(name in ref)method=ref[name],Mixed.prototype[name]=method}return Mixed},trim=function(data,char){return _.str.trim(data,char)},slugify=function(data){return _.str.slugify(data)},unslugify=function(data){return data?_.str.capitalize(data.replace(/-/g," ")):data},toggleText=function(element,texts){var nextTextPosition,text;return nextTextPosition=element.data("nextTextPosition"),(null==nextTextPosition||nextTextPosition>=texts.length)&&(nextTextPosition=0),text=texts[nextTextPosition],element.data("nextTextPosition",nextTextPosition+1),element.text(text)},groupBy=function(coll,pred){var i,item,len,result;for(result={},i=0,len=coll.length;len>i;i++)item=coll[i],result[pred(item)]=item;return result},timeout=function(wait,continuation){return window.setTimeout(continuation,wait)},cancelTimeout=function(timeoutVar){return window.clearTimeout(timeoutVar)},scopeDefer=function(scope,func){return _.defer(function(){return function(){return scope.$apply(func)}}(this))},toString=function(value){return _.isNumber(value)?value+"":_.isString(value)?value:_.isPlainObject(value)?JSON.stringify(value):_.isUndefined(value)?"":value.toString()},joinStr=function(str,coll){return _.str.join(str,coll)},debounce=function(wait,func){return _.debounce(func,wait,{leading:!0,trailing:!1})},debounceLeading=function(wait,func){return _.debounce(func,wait,{leading:!1,trailing:!0})},startswith=function(str1,str2){return _.str.startsWith(str1,str2)},sizeFormat=function(input,precision){var number,size,units;return null==precision&&(precision=1),isNaN(parseFloat(input))||!isFinite(input)?"-":0===input?"0 bytes":(units=["bytes","KB","MB","GB","TB","PB"],number=Math.floor(Math.log(input)/Math.log(1024)),number>5&&(number=5),size=(input/Math.pow(1024,number)).toFixed(precision),size+" "+units[number])},taiga=this.taiga,taiga.nl2br=nl2br,taiga.bindMethods=bindMethods,taiga.bindOnce=bindOnce,taiga.mixOf=mixOf,taiga.trim=trim,taiga.slugify=slugify,taiga.unslugify=unslugify,taiga.toggleText=toggleText,taiga.groupBy=groupBy,taiga.timeout=timeout,taiga.cancelTimeout=cancelTimeout,taiga.scopeDefer=scopeDefer,taiga.toString=toString,taiga.joinStr=joinStr,taiga.debounce=debounce,taiga.debounceLeading=debounceLeading,taiga.startswith=startswith,taiga.sizeFormat=sizeFormat}.call(this),function(){var FiltersMixin,PageMixin,groupBy,joinStr,taiga,toString,trim;taiga=this.taiga,groupBy=this.taiga.groupBy,joinStr=this.taiga.joinStr,trim=this.taiga.trim,toString=this.taiga.toString,PageMixin=function(){function PageMixin(){}return PageMixin.prototype.fillUsersAndRoles=function(users,roles){var activeUsers,availableRoles;return activeUsers=_.filter(users,function(){return function(user){return user.is_active}}(this)),this.scope.activeUsers=_.sortBy(activeUsers,"full_name_display"),this.scope.activeUsersById=groupBy(this.scope.activeUsers,function(e){return e.id}),this.scope.users=_.sortBy(users,"full_name_display"),this.scope.usersById=groupBy(this.scope.users,function(e){return e.id}),this.scope.roles=_.sortBy(roles,"order"),availableRoles=_(this.scope.project.memberships).map("role").uniq().value(),this.scope.computableRoles=_(roles).filter("computable").filter(function(x){return _.contains(availableRoles,x.id)}).value()},PageMixin.prototype.loadUsersAndRoles=function(){var promise;return promise=this.q.all([this.rs.projects.usersList(this.scope.projectId),this.rs.projects.rolesList(this.scope.projectId)]),promise.then(function(_this){return function(results){var roles,users;return users=results[0],roles=results[1],_this.fillUsersAndRoles(users,roles),results}}(this))},PageMixin}(),taiga.PageMixin=PageMixin,FiltersMixin=function(){function FiltersMixin(){}return FiltersMixin.prototype.selectFilter=function(name,value,load){var existing,location,params;return null==load&&(load=!1),params=this.location.search(),void 0!==params[name]&&"page"!==name&&(existing=_.map(taiga.toString(params[name]).split(","),function(x){return trim(x)}),existing.push(taiga.toString(value)),existing=_.compact(existing),value=joinStr(",",_.uniq(existing))),this.location.isInCurrentRouteParams(name,value)?void 0:(location=load?this.location:this.location.noreload(this.scope),location.search(name,value))},FiltersMixin.prototype.replaceFilter=function(name,value,load){var location;return null==load&&(load=!1),this.location.isInCurrentRouteParams(name,value)?void 0:(location=load?this.location:this.location.noreload(this.scope),location.search(name,value))},FiltersMixin.prototype.replaceAllFilters=function(filters,load){var location;return null==load&&(load=!1),location=load?this.location:this.location.noreload(this.scope),location.search(filters)},FiltersMixin.prototype.unselectFilter=function(name,value,load){var location,newValues,params,parsedValues;return null==load&&(load=!1),params=this.location.search(),void 0!==params[name]?((void 0===value||null===value)&&delete params[name],parsedValues=_.map(taiga.toString(params[name]).split(","),function(x){return trim(x)}),newValues=_.reject(parsedValues,function(x){return x===taiga.toString(value)}),newValues=_.compact(newValues),value=_.isEmpty(newValues)?null:joinStr(",",_.uniq(newValues)),location=load?this.location:this.location.noreload(this.scope),location.search(name,value)):void 0},FiltersMixin}(),taiga.FiltersMixin=FiltersMixin}.call(this),function(){var module;module=angular.module("taigaAdmin",[])}.call(this),function(){var AuthService,CancelAccountDirective,ChangeEmailDirective,ChangePasswordFromRecoveryDirective,ForgotPasswordDirective,InvitationDirective,LoginDirective,PublicRegisterMessageDirective,RegisterDirective,debounce,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaAuth",["taigaResources"]),AuthService=function(superClass){function AuthService(rootscope,storage,model,rs,http,urls){this.rootscope=rootscope,this.storage=storage,this.model=model,this.rs=rs,this.http=http,this.urls=urls,AuthService.__super__.constructor.call(this)}return extend(AuthService,superClass),AuthService.$inject=["$rootScope","$tgStorage","$tgModel","$tgResources","$tgHttp","$tgUrls"],AuthService.prototype.getUser=function(){var user,userData;return this.rootscope.user?this.rootscope.user:(userData=this.storage.get("userInfo"),userData?(user=this.model.make_model("users",userData),this.rootscope.user=user,user):null)},AuthService.prototype.setUser=function(user){return this.rootscope.auth=user,this.rootscope.$broadcast("i18n:change",user.default_language),this.storage.set("userInfo",user.getAttrs()),this.rootscope.user=user},AuthService.prototype.clear=function(){return this.rootscope.auth=null,this.rootscope.user=null,this.storage.remove("userInfo")},AuthService.prototype.setToken=function(token){return this.storage.set("token",token)},AuthService.prototype.getToken=function(){return this.storage.get("token")},AuthService.prototype.removeToken=function(){return this.storage.remove("token")},AuthService.prototype.isAuthenticated=function(){return null!==this.getUser()?!0:!1},AuthService.prototype.login=function(data,type){var url;return url=this.urls.resolve("auth"),data=_.clone(data,!1),data.type=type?type:"normal",this.removeToken(),this.http.post(url,data).then(function(_this){return function(data){var user;return user=_this.model.make_model("users",data.data),_this.setToken(user.auth_token),_this.setUser(user),user}}(this))},AuthService.prototype.logout=function(){return this.removeToken(),this.clear()},AuthService.prototype.register=function(data,type,existing){var url;return url=this.urls.resolve("auth-register"),data=_.clone(data,!1),data.type=type?type:"public","private"===type&&(data.existing=existing?existing:!1),this.removeToken(),this.http.post(url,data).then(function(_this){return function(response){var user;return user=_this.model.make_model("users",response.data),_this.setToken(user.auth_token),_this.setUser(user),user}}(this))},AuthService.prototype.getInvitation=function(token){return this.rs.invitations.get(token)},AuthService.prototype.acceptInvitiationWithNewUser=function(data){return this.register(data,"private",!1)},AuthService.prototype.acceptInvitiationWithExistingUser=function(data){return this.register(data,"private",!0)},AuthService.prototype.forgotPassword=function(data){var url;return url=this.urls.resolve("users-password-recovery"),data=_.clone(data,!1),this.removeToken(),this.http.post(url,data)},AuthService.prototype.changePasswordFromRecovery=function(data){var url;return url=this.urls.resolve("users-change-password-from-recovery"),data=_.clone(data,!1),this.removeToken(),this.http.post(url,data)},AuthService.prototype.changeEmail=function(data){var url;return url=this.urls.resolve("users-change-email"),data=_.clone(data,!1),this.http.post(url,data)},AuthService.prototype.cancelAccount=function(data){var url;return url=this.urls.resolve("users-cancel-account"),data=_.clone(data,!1),this.http.post(url,data)},AuthService}(taiga.Service),module.service("$tgAuth",AuthService),PublicRegisterMessageDirective=function($config,$navUrls,templates){var template,templateFn;return template=templates.get("auth/login-text.html",!0),templateFn=function(){var publicRegisterEnabled;return publicRegisterEnabled=$config.get("publicRegisterEnabled"),publicRegisterEnabled?template({url:$navUrls.resolve("register")}):""},{restrict:"AE",scope:{},template:templateFn}},module.directive("tgPublicRegisterMessage",["$tgConfig","$tgNavUrls","$tgTemplate",PublicRegisterMessageDirective]),LoginDirective=function($auth,$confirm,$location,$config,$routeParams,$navUrls,$events){var link;return link=function($scope,$el){var onError,onSuccess,submit;return onSuccess=function(){var nextUrl;return nextUrl=$routeParams.next&&$routeParams.next!==$navUrls.resolve("login")?$routeParams.next:$navUrls.resolve("home"),$events.setupConnection(),$location.path(nextUrl)},onError=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your username/email or password are incorrect.")},submit=debounce(2e3,function(){return function(event){var data,form,loginFormType,promise;return event.preventDefault(),form=new checksley.Form($el.find("form.login-form")),form.validate()?(data={username:$el.find("form.login-form input[name=username]").val(),password:$el.find("form.login-form input[name=password]").val()},loginFormType=$config.get("loginFormType","normal"),promise=$auth.login(data,loginFormType),promise.then(onSuccess,onError)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgLogin",["$tgAuth","$tgConfirm","$tgLocation","$tgConfig","$routeParams","$tgNavUrls","$tgEvents",LoginDirective]),RegisterDirective=function($auth,$confirm,$location,$navUrls,$config,$analytics){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $config.get("publicRegisterEnabled")||($location.path($navUrls.resolve("not-found")),$location.replace()),$scope.data={},form=$el.find("form").checksley({onlyOneErrorElement:!0}),onSuccessSubmit=function(){return $analytics.trackEvent("auth","register","user registration",1),$confirm.notify("success","Our Oompa Loompas are happy, welcome to Taiga."),$location.path($navUrls.resolve("home"))},onErrorSubmit=function(response){return null!=response.data._error_message&&$confirm.notify("light-error","According to our Oompa Loompas there was an error. "+response.data._error_message),form.setErrors(response.data)},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.register($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgRegister",["$tgAuth","$tgConfirm","$tgLocation","$tgNavUrls","$tgConfig","$tgAnalytics",RegisterDirective]),ForgotPasswordDirective=function($auth,$confirm,$location,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},form=$el.find("form").checksley(),onSuccessSubmit=function(response){return $location.path($navUrls.resolve("login")),$confirm.success("Check your inbox!
We have sent a mail to
"+response.data.email+"
with the instructions to set a new password")},onErrorSubmit=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your are not registered yet.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.forgotPassword($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgForgotPassword",["$tgAuth","$tgConfirm","$tgLocation","$tgNavUrls",ForgotPasswordDirective]),ChangePasswordFromRecoveryDirective=function($auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},null!=$params.token?($scope.tokenInParams=!0,$scope.data.token=$params.token):$scope.tokenInParams=!1,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $location.path($navUrls.resolve("login")),$confirm.success("Our Oompa Loompas saved your new password.
Try to sign in with it.")},onErrorSubmit=function(response){return $confirm.notify("light-error","One of our Oompa Loompas say '"+response.data._error_message+"'.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.changePasswordFromRecovery($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgChangePasswordFromRecovery",["$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",ChangePasswordFromRecoveryDirective]),InvitationDirective=function($auth,$confirm,$location,$params,$navUrls,$analytics){var link;return link=function($scope,$el){var loginForm,onErrorSubmitLogin,onErrorSubmitRegister,onSuccessSubmitLogin,onSuccessSubmitRegister,promise,registerForm,submitLogin,submitRegister,token;return token=$params.token,promise=$auth.getInvitation(token),promise.then(function(invitation){return $scope.invitation=invitation}),promise.then(null,function(){return $location.path($navUrls.resolve("login")),$confirm.success("Ooops, we have a problem
Our Oompa Loompas can't find your invitation.")}),$scope.dataLogin={token:token},loginForm=$el.find("form.login-form").checksley({onlyOneErrorElement:!0}),onSuccessSubmitLogin=function(){return $analytics.trackEvent("auth","invitationAccept","invitation accept with existing user",1),$location.path($navUrls.resolve("project",{project:$scope.invitation.project_slug})),$confirm.notify("success","You've successfully joined this project","Welcome to "+_.escape($scope.invitation.project_name))},onErrorSubmitLogin=function(){return $confirm.notify("light-error","According to our Oompa Loompas, your are not registered yet or typed an invalid password.")},submitLogin=debounce(2e3,function(){return function(event){return event.preventDefault(),loginForm.validate()?(promise=$auth.acceptInvitiationWithExistingUser($scope.dataLogin),promise.then(onSuccessSubmitLogin,onErrorSubmitLogin)):void 0}}(this)),$el.on("submit","form.login-form",submitLogin),$el.on("click",".button-login",submitLogin),$scope.dataRegister={token:token},registerForm=$el.find("form.register-form").checksley(),onSuccessSubmitRegister=function(){return $analytics.trackEvent("auth","invitationAccept","invitation accept with new user",1),$location.path($navUrls.resolve("project",{project:$scope.invitation.project_slug})),$confirm.notify("success","You've successfully joined this project","Welcome to "+_.escape($scope.invitation.project_name))},onErrorSubmitRegister=function(){return $confirm.notify("light-error","According to our Oompa Loompas, that username or email is already in use.")},submitRegister=debounce(2e3,function(){return function(event){return event.preventDefault(),registerForm.validate()?(promise=$auth.acceptInvitiationWithNewUser($scope.dataRegister),promise.then(onSuccessSubmitRegister,onErrorSubmitRegister)):void 0}}(this)),$el.on("submit","form.register-form",submitRegister),$el.on("click",".button-register",submitRegister)},{link:link}},module.directive("tgInvitation",["$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls","$tgAnalytics",InvitationDirective]),ChangeEmailDirective=function($repo,$model,$auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},$scope.data.email_token=$params.email_token,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $repo.queryOne("users",$auth.getUser().id).then(function(){return function(data){return $auth.setUser(data),$location.path($navUrls.resolve("home")),$confirm.success("Our Oompa Loompas updated your email")}}(this))},onErrorSubmit=function(response){return $confirm.notify("error","One of our Oompa Loompas says '"+response.data._error_message+"'.")},submit=function(){var promise;if(form.validate())return promise=$auth.changeEmail($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)},$el.on("submit",function(event){return event.preventDefault(),submit()}),$el.on("click","a.button-change-email",function(event){return event.preventDefault(),submit()})},{link:link}},module.directive("tgChangeEmail",["$tgRepo","$tgModel","$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",ChangeEmailDirective]),CancelAccountDirective=function($repo,$model,$auth,$confirm,$location,$params,$navUrls){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit;return $scope.data={},$scope.data.cancel_token=$params.cancel_token,form=$el.find("form").checksley(),onSuccessSubmit=function(){return $auth.logout(),$location.path($navUrls.resolve("home")),$confirm.success("Our Oompa Loompas removed your account")},onErrorSubmit=function(response){return $confirm.notify("error","One of our Oompa Loompas says '"+response.data._error_message+"'.")},submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?(promise=$auth.cancelAccount($scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this)),$el.on("submit","form",submit)},{link:link}},module.directive("tgCancelAccount",["$tgRepo","$tgModel","$tgAuth","$tgConfirm","$tgLocation","$routeParams","$tgNavUrls",CancelAccountDirective])}.call(this),function(){var module;module=angular.module("taigaBacklog",[])}.call(this),function(){var TaigaMainDirective,bindOnce,groupBy,init,module,taiga,urls;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaBase",["taigaLocales"]),TaigaMainDirective=function($rootscope,$window){var link;return link=function(){return $window.onresize=function(){return $rootscope.$broadcast("resize")}},{link:link}},module.directive("tgMain",["$rootScope","$window",TaigaMainDirective]),urls={home:"/",error:"/error","not-found":"/not-found","permission-denied":"/permission-denied",login:"/login","forgot-password":"/forgot-password","change-password":"/change-password/:token","change-email":"/change-email/:token","cancel-account":"/cancel-account/:token",register:"/register",invitation:"/invitation/:token","create-project":"/create-project",profile:"/:user",project:"/project/:project","project-backlog":"/project/:project/backlog","project-taskboard":"/project/:project/taskboard/:sprint","project-kanban":"/project/:project/kanban","project-issues":"/project/:project/issues","project-search":"/project/:project/search","project-userstories-detail":"/project/:project/us/:ref","project-tasks-detail":"/project/:project/task/:ref","project-issues-detail":"/project/:project/issue/:ref","project-wiki":"/project/:project/wiki","project-wiki-page":"/project/:project/wiki/:slug","project-team":"/project/:project/team","project-admin-home":"/project/:project/admin/project-profile/details","project-admin-project-profile-details":"/project/:project/admin/project-profile/details","project-admin-project-profile-default-values":"/project/:project/admin/project-profile/default-values","project-admin-project-profile-modules":"/project/:project/admin/project-profile/modules","project-admin-project-profile-export":"/project/:project/admin/project-profile/export","project-admin-project-profile-reports":"/project/:project/admin/project-profile/reports","project-admin-project-values-status":"/project/:project/admin/project-values/status","project-admin-project-values-points":"/project/:project/admin/project-values/points","project-admin-project-values-priorities":"/project/:project/admin/project-values/priorities","project-admin-project-values-severities":"/project/:project/admin/project-values/severities","project-admin-project-values-types":"/project/:project/admin/project-values/types","project-admin-project-values-custom-fields":"/project/:project/admin/project-values/custom-fields","project-admin-memberships":"/project/:project/admin/memberships","project-admin-roles":"/project/:project/admin/roles","project-admin-third-parties-webhooks":"/project/:project/admin/third-parties/webhooks","project-admin-third-parties-github":"/project/:project/admin/third-parties/github","project-admin-third-parties-gitlab":"/project/:project/admin/third-parties/gitlab","project-admin-third-parties-bitbucket":"/project/:project/admin/third-parties/bitbucket","project-admin-contrib":"/project/:project/admin/contrib/:plugin","user-settings-user-profile":"/project/:project/user-settings/user-profile","user-settings-user-change-password":"/project/:project/user-settings/user-change-password","user-settings-user-avatar":"/project/:project/user-settings/user-avatar","user-settings-mail-notifications":"/project/:project/user-settings/mail-notifications"},init=function($log,$navurls){return $log.debug("Initialize navigation urls"),$navurls.update(urls) },module.run(["$log","$tgNavUrls",init])}.call(this),function(){var AnimationFrame,AppTitle,CheckPermissionDirective,ClassPermissionDirective,LimitLineLengthDirective,ProjectUrl,Qqueue,SelectedText,Template,ToggleCommentDirective,module,taiga,slice=[].slice;taiga=this.taiga,module=angular.module("taigaCommon",[]),SelectedText=function($window,$document){var get;return get=function(){return $window.getSelection?$window.getSelection().toString():$document.selection?$document.selection.createRange().text:""},{get:get}},module.factory("$selectedText",["$window","$document",SelectedText]),CheckPermissionDirective=function(){var link,render;return render=function($el,project,permission){return project.my_permissions.indexOf(permission)>-1?$el.removeClass("hidden"):void 0},link=function($scope,$el,$attrs){var permission;return $el.addClass("hidden"),permission=$attrs.tgCheckPermission,$scope.$watch("project",function(project){return null!=project?render($el,project,permission):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgCheckPermission",CheckPermissionDirective),ClassPermissionDirective=function(){var link,name;return name="tgClassPermission",link=function($scope,$el,$attrs){var checkPermissions,tgClassPermissionWatchAction,unbindWatcher;return checkPermissions=function(project,className,permission){var negation;return negation="!"===permission[0],negation&&(permission=permission.slice(1)),negation&&-1===project.my_permissions.indexOf(permission)?$el.addClass(className):negation||-1===project.my_permissions.indexOf(permission)?$el.removeClass(className):$el.addClass(className)},tgClassPermissionWatchAction=function(project){var className,classes,permission,results;if(project){unbindWatcher(),classes=$scope.$eval($attrs[name]),results=[];for(className in classes)permission=classes[className],results.push(checkPermissions(project,className,permission));return results}},unbindWatcher=$scope.$watch("project",tgClassPermissionWatchAction)},{link:link}},module.directive("tgClassPermission",ClassPermissionDirective),AnimationFrame=function(){var add,animationFrame,performAnimation,tail;return animationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,performAnimation=function(){return function(){var fn;return fn=tail.shift(),fn(),tail.length?animationFrame(performAnimation):void 0}}(this),tail=[],add=function(){var fn,i,len,results;for(results=[],i=0,len=arguments.length;len>i;i++)fn=arguments[i],tail.push(fn),results.push(1===tail.length?animationFrame(performAnimation):void 0);return results},{add:add}},module.factory("animationFrame",AnimationFrame),ToggleCommentDirective=function(){var link;return link=function($scope,$el){return $el.find("textarea").on("focus",function(){return $el.addClass("active")})},{link:link}},module.directive("tgToggleComment",ToggleCommentDirective),AppTitle=function(){var set;return set=function(text){return $("title").text(text)},{set:set}},module.factory("$appTitle",AppTitle),ProjectUrl=function($navurls){var get;return get=function(project){var ctx;return ctx={project:project.slug},project.is_backlog_activated&&project.my_permissions.indexOf("view_us")>-1?$navurls.resolve("project-backlog",ctx):project.is_kanban_activated&&project.my_permissions.indexOf("view_us")>-1?$navurls.resolve("project-kanban",ctx):project.is_wiki_activated&&project.my_permissions.indexOf("view_wiki_pages")>-1?$navurls.resolve("project-wiki",ctx):project.is_issues_activated&&project.my_permissions.indexOf("view_issues")>-1?$navurls.resolve("project-issues",ctx):$navurls.resolve("project",ctx)},{get:get}},module.factory("$projectUrl",["$tgNavUrls",ProjectUrl]),LimitLineLengthDirective=function(){var link;return link=function($scope,$el){var maxColsPerLine;return maxColsPerLine=parseInt($el.attr("cols")),$el.on("keyup",function(event){var code,lines;return code=event.keyCode,lines=$el.val().split("\n"),_.each(lines,function(line,index){return lines[index]=line.substring(0,maxColsPerLine-2)}),$el.val(lines.join("\n"))})},{link:link}},module.directive("tgLimitLineLength",LimitLineLengthDirective),Qqueue=function($q){var deferred,lastPromise,qqueue;return deferred=$q.defer(),deferred.resolve(),lastPromise=deferred.promise,qqueue={bindAdd:function(_this){return function(fn){return function(){var args;return args=1<=arguments.length?slice.call(arguments,0):[],lastPromise=lastPromise.then(function(){return fn.apply(_this,args)})}}}(this),add:function(){return function(fn){return lastPromise=lastPromise?lastPromise.then(fn):fn(),qqueue}}(this)}},module.factory("$tgQqueue",["$q",Qqueue]),Template=function($templateCache){return{get:function(){return function(name,lodash){var tmp;return null==lodash&&(lodash=!1),tmp=$templateCache.get(name),lodash&&(tmp=_.template(tmp)),tmp}}(this)}},module.factory("$tgTemplate",["$templateCache",Template])}.call(this),function(){var EventsProvider,EventsService,bindMethods,module,startswith,taiga;taiga=this.taiga,startswith=this.taiga.startswith,bindMethods=this.taiga.bindMethods,module=angular.module("taigaEvents",[]),EventsService=function(){function EventsService(win,log,config,auth){this.win=win,this.log=log,this.config=config,this.auth=auth,bindMethods(this)}return EventsService.prototype.initialize=function(sessionId){return this.sessionId=sessionId,this.subscriptions={},this.connected=!1,this.error=!1,this.pendingMessages=[],void 0===this.win.WebSocket?this.log.info("WebSockets not supported on your browser"):void 0},EventsService.prototype.setupConnection=function(){var loc,path,scheme,url;return this.stopExistingConnection(),(url=this.config.get("eventsUrl"))?(startswith(url,"ws:")||startswith(url,"wss:")||(loc=this.win.location,scheme="https:"===loc.protocol?"wss:":"ws:",path=_.str.ltrim(url,"/"),url=scheme+"//"+loc.host+"/"+path),this.ws=new this.win.WebSocket(url),this.ws.addEventListener("open",this.onOpen),this.ws.addEventListener("message",this.onMessage),this.ws.addEventListener("error",this.onError),this.ws.addEventListener("close",this.onClose)):void 0},EventsService.prototype.stopExistingConnection=function(){return void 0!==this.ws?(this.ws.removeEventListener("open",this.onOpen),this.ws.removeEventListener("close",this.onClose),this.ws.removeEventListener("error",this.onError),this.ws.removeEventListener("message",this.onMessage),this.ws.close(),delete this.ws):void 0},EventsService.prototype.serialize=function(message){return _.isObject(message)?JSON.stringify(message):message},EventsService.prototype.sendMessage=function(message){var i,len,messages,msg,results;if(this.pendingMessages.push(message),this.connected){for(messages=_.map(this.pendingMessages,this.serialize),this.pendingMessages=[],results=[],i=0,len=messages.length;len>i;i++)msg=messages[i],results.push(this.ws.send(msg));return results}},EventsService.prototype.subscribe=function(scope,routingKey,callback){var message,subscription;if(!this.error)return this.log.debug("Subscribe to: "+routingKey),subscription={scope:scope,routingKey:routingKey,callback:_.debounce(callback,500,{leading:!0,trailing:!1})},message={cmd:"subscribe",routing_key:routingKey},this.subscriptions[routingKey]=subscription,this.sendMessage(message),scope.$on("$destroy",function(_this){return function(){return _this.unsubscribe(routingKey)}}(this))},EventsService.prototype.unsubscribe=function(routingKey){var message;if(!this.error)return this.log.debug("Unsubscribe from: "+routingKey),message={cmd:"unsubscribe",routing_key:routingKey},this.sendMessage(message)},EventsService.prototype.onOpen=function(){var message,token;return this.connected=!0,this.log.debug("WebSocket connection opened"),token=this.auth.getToken(),message={cmd:"auth",data:{token:token,sessionId:this.sessionId}},this.sendMessage(message)},EventsService.prototype.onMessage=function(event){var data,routingKey,subscription;return this.log.debug("WebSocket message received: "+event.data),data=JSON.parse(event.data),routingKey=data.routing_key,null!=this.subscriptions[routingKey]?(subscription=this.subscriptions[routingKey],subscription.scope.$apply(function(){return subscription.callback(data.data)})):void 0},EventsService.prototype.onError=function(error){return this.log.error("WebSocket error: "+error),this.error=!0},EventsService.prototype.onClose=function(){return this.log.debug("WebSocket closed."),this.connected=!1},EventsService}(),EventsProvider=function(){function EventsProvider(){}return EventsProvider.prototype.setSessionId=function(sessionId){return this.sessionId=sessionId},EventsProvider.prototype.$get=function($win,$log,$conf,$auth){var service;return service=new EventsService($win,$log,$conf,$auth),service.initialize(this.sessionId),service},EventsProvider.prototype.$get.$inject=["$window","$log","$tgConfig","$tgAuth"],EventsProvider}(),module.provider("$tgEvents",EventsProvider)}.call(this),function(){var FeedbackDirective,bindOnce,debounce,groupBy,mixOf,module,taiga,trim;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,mixOf=this.taiga.mixOf,debounce=this.taiga.debounce,trim=this.taiga.trim,module=angular.module("taigaFeedback",[]),FeedbackDirective=function($lightboxService,$repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley(),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.create("feedback",$scope.feedback),promise.then(function(){return $loading.finish(submitButton),$lightboxService.close($el),$confirm.notify("success","\\o/ we'll be happy to read your")}),promise.then(null,function(){return $loading.finish(submitButton),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("feedback:show",function(){return $scope.$apply(function(){return $scope.feedback={}}),$lightboxService.open($el),$el.find("textarea").focus()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbFeedback",["lightboxService","$tgRepo","$tgConfirm","$tgLoading",FeedbackDirective])}.call(this),function(){var module;module=angular.module("taigaIntegrations",[])}.call(this),function(){var module;module=angular.module("taigaIssues",[])}.call(this),function(){var module;module=angular.module("taigaKanban",[])}.call(this),function(){var module;module=angular.module("taigaLocales",[])}.call(this),function(){var ProjectMenuDirective,ProjectsNavigationController,ProjectsNavigationDirective,bindOnce,groupBy,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,module=angular.module("taigaNavMenu",[]),ProjectsNavigationController=function(superClass){function ProjectsNavigationController(scope,rootscope,rs,navurls,projectUrl){var promise;this.scope=scope,this.rootscope=rootscope,this.rs=rs,this.navurls=navurls,this.projectUrl=projectUrl,promise=this.loadInitialData(),promise.then(null,function(){return console.log("FAIL")}),this.scope.$on("projects:reload",function(_this){return function(){return _this.loadInitialData()}}(this)),this.scope.$on("project:loaded",function(_this){return function(){return _this.loadInitialData()}}(this))}return extend(ProjectsNavigationController,superClass),ProjectsNavigationController.$inject=["$scope","$rootScope","$tgResources","$tgNavUrls","$projectUrl"],ProjectsNavigationController.prototype.loadInitialData=function(){var ref;return this.rs.projects.listByMember(null!=(ref=this.rootscope.user)?ref.id:void 0).then(function(_this){return function(projects){var i,len,project;for(i=0,len=projects.length;len>i;i++)project=projects[i],project.url=_this.projectUrl.get(project);return _this.scope.projects=projects,_this.scope.filteredProjects=projects,_this.scope.filterText="",projects}}(this))},ProjectsNavigationController.prototype.newProject=function(){return this.scope.$apply(function(_this){return function(){return _this.rootscope.$broadcast("projects:create")}}(this))},ProjectsNavigationController.prototype.filterProjects=function(text){return this.scope.filteredProjects=_.filter(this.scope.projects,function(project){return project.name.toLowerCase().indexOf(text)>-1}),this.scope.filterText=text,this.rootscope.$broadcast("projects:filtered")},ProjectsNavigationController}(taiga.Controller),module.controller("ProjectsNavigationController",ProjectsNavigationController),ProjectsNavigationDirective=function($rootscope,animationFrame,$timeout,tgLoader,$location,$compile,$template){var baseTemplate,hideMenu,link,loadingStart,overlay,projectsTemplate;return baseTemplate=$template.get("project/project-navigation-base.html",!0),projectsTemplate=$template.get("project/project-navigation-list.html",!0),overlay=$(".projects-nav-overlay"),loadingStart=0,hideMenu=function(){var difftime,timeoutValue;return overlay.is(":visible")?(difftime=(new Date).getTime()-loadingStart,timeoutValue=0,1e3>difftime&&(timeoutValue=1e3-timeoutValue),timeout(timeoutValue,function(){return overlay.one("transitionend",function(){return $(document.body).removeClass("loading-project open-projects-nav closed-projects-nav").css("overflow-x","visible"),overlay.hide()}),$(document.body).addClass("closed-projects-nav"),tgLoader.disablePreventLoading()})):void 0},link=function($scope,$el,$attrs,$ctrls){var $ctrl,render,renderProjects;return $ctrl=$ctrls[0],$rootscope.$on("project:loaded",hideMenu),renderProjects=function(projects){var html;return html=projectsTemplate({projects:projects}),$el.find(".projects-list").html(html),$scope.$emit("regenerate:project-pagination")},render=function(projects){return $el.html($compile(baseTemplate())($scope)),renderProjects(projects)},overlay.on("click",function(){return hideMenu()}),$(document).on("keydown",function(){return function(e){var code;return code=e.keyCode?e.keyCode:e.which,27===code?hideMenu():void 0}}(this)),$scope.$on("nav:projects-list:open",function(){return $(document.body).hasClass("open-projects-nav")||animationFrame.add(function(){return function(){return overlay.show()}}(this)),animationFrame.add(function(){return function(){return $(document.body).css("overflow-x","hidden")}}(this),function(){return function(){return $(document.body).toggleClass("open-projects-nav")}}(this))}),$el.on("click",".projects-list > li > a",function(event){var currentUrl,nextUrl,target;return target=angular.element(event.currentTarget),nextUrl=target.prop("href"),currentUrl=$location.absUrl(),nextUrl===currentUrl?void hideMenu():($(document.body).addClass("loading-project"),tgLoader.preventLoading(),loadingStart=(new Date).getTime())}),$el.on("click",".create-project-button",function(event){return event.preventDefault(),$ctrl.newProject()}),$el.on("keyup",".search-project",function(event){var target;return target=angular.element(event.currentTarget),$ctrl.filterProjects(target.val())}),$scope.$on("projects:filtered",function(){return renderProjects($scope.filteredProjects)}),$scope.$watch("projects",function(projects){return null!=projects?render(projects):void 0})},{require:["tgProjectsNav"],controller:ProjectsNavigationController,link:link}},module.directive("tgProjectsNav",["$rootScope","animationFrame","$timeout","tgLoader","$tgLocation","$compile","$tgTemplate",ProjectsNavigationDirective]),ProjectMenuDirective=function($log,$compile,$auth,$rootscope,$tgAuth,$location,$navUrls,$config,$template){var getSectionName,link,mainTemplate,menuEntriesTemplate,renderMainMenu,renderMenuEntries,videoConferenceUrl;return menuEntriesTemplate=$template.get("project/project-menu.html",!0),mainTemplate=_.template('\n'),getSectionName=function($el,sectionName,project){var oldSectionName,ref;return oldSectionName=null!=(ref=$el.find("a.active").parent().attr("id"))?ref.replace("nav-",""):void 0,"backlog-kanban"===sectionName&&("backlog"===oldSectionName||"kanban"===oldSectionName?sectionName=oldSectionName:project.is_backlog_activated&&!project.is_kanban_activated?sectionName="backlog":!project.is_backlog_activated&&project.is_kanban_activated&&(sectionName="kanban")),sectionName},renderMainMenu=function($el){var html;return html=mainTemplate({}),$el.html(html)},renderMenuEntries=function($el,targetScope,project){var container,ctx,dom,sectionName;return null==project&&(project={}),container=$el.find(".menu-container"),sectionName=getSectionName($el,targetScope.section,project),ctx={user:$auth.getUser(),project:project,feedbackEnabled:$config.get("feedbackEnabled")},dom=$compile(menuEntriesTemplate(ctx))(targetScope),dom.find("a.active").removeClass("active"),dom.find("#nav-"+sectionName+" > a").addClass("active"),container.replaceWith(dom)},videoConferenceUrl=function(project){var baseUrl,url;if("appear-in"===project.videoconferences)baseUrl="https://appear.in/";else{if("talky"!==project.videoconferences)return"";baseUrl="https://talky.io/"}return url=project.videoconferences_salt?project.slug+"-"+project.videoconferences_salt:""+project.slug,baseUrl+url},link=function($scope,$el){var project;return renderMainMenu($el),project=null,$el.on("click",".logo",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$rootscope.$broadcast("nav:projects-list:open")}),$el.on("click",".user-settings .avatar",function(event){return event.preventDefault(),$el.find(".user-settings .popover").popover().open()}),$el.on("click",".logout",function(event){return event.preventDefault(),$auth.logout(),$scope.$apply(function(){return $location.path($navUrls.resolve("login"))})}),$el.on("click","#nav-search > a",function(event){return event.preventDefault(),$rootscope.$broadcast("search-box:show",project)}),$el.on("click",".feedback",function(event){return event.preventDefault(),$rootscope.$broadcast("feedback:show")}),$scope.$on("projects:loaded",function(listener){return $el.addClass("hidden"),listener.stopPropagation()}),$scope.$on("project:loaded",function(ctx,newProject){return project=newProject,$el.hasClass("hidden")&&$el.removeClass("hidden"),project.videoconferenceUrl=videoConferenceUrl(project),renderMenuEntries($el,ctx.targetScope,project)})},{link:link}},module.directive("tgProjectMenu",["$log","$compile","$tgAuth","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","$tgConfig","$tgTemplate",ProjectMenuDirective])}.call(this),function(){var module;module=angular.module("taigaProject",[])}.call(this),function(){var RelatedTaskAssignedToInlineEditionDirective,RelatedTaskCreateButtonDirective,RelatedTaskCreateFormDirective,RelatedTaskRowDirective,RelatedTasksDirective,debounce,module,taiga,trim;taiga=this.taiga,trim=this.taiga.trim,debounce=this.taiga.debounce,module=angular.module("taigaRelatedTasks",[]),RelatedTaskRowDirective=function($repo,$compile,$confirm,$rootscope,$loading,$template){var link,templateEdit,templateView;return templateView=$template.get("task/related-task-row.html",!0),templateEdit=$template.get("task/related-task-row-edit.html",!0),link=function($scope,$el,$attrs,$model){var renderEdit,renderView,saveTask;return saveTask=debounce(2e3,function(task){var promise;return task.subject=$el.find("input").val(),$loading.start($el.find(".task-name")),promise=$repo.save(task),promise.then(function(){return function(){return $loading.finish($el.find(".task-name")),$confirm.notify("success"),$rootscope.$broadcast("related-tasks:update")}}(this)),promise.then(null,function(){return function(){return $loading.finish($el.find(".task-name")),$el.find("input").val(task.subject),$confirm.notify("error")}}(this)),promise}),renderEdit=function(task){return $el.html($compile(templateEdit({task:task}))($scope)),$el.on("keyup","input",function(event){return 13===event.keyCode?saveTask($model.$modelValue).then(function(){return renderView($model.$modelValue)}):27===event.keyCode?renderView($model.$modelValue):void 0}),$el.on("click",".icon-floppy",function(){return saveTask($model.$modelValue).then(function(){return renderView($model.$modelValue)})}),$el.on("click",".cancel-edit",function(){return renderView($model.$modelValue)})},renderView=function(task){var perms;return $el.off(),perms={modify_task:-1!==$scope.project.my_permissions.indexOf("modify_task"),delete_task:-1!==$scope.project.my_permissions.indexOf("delete_task")},$el.html($compile(templateView({task:task,perms:perms}))($scope)),$el.on("click",".icon-edit",function(){return renderEdit($model.$modelValue),$el.find("input").focus().select()}),$el.on("click",".delete-task",function(){var message,title;return task=$model.$modelValue,title="Delete Task",message=task.subject,$confirm.askOnDelete(title,message).then(function(finish){var promise;return promise=$repo.remove(task),promise.then(function(){return finish(),$confirm.notify("success"),$scope.$emit("related-tasks:delete")}),promise.then(null,function(){return $confirm.notify("error")})})})},$scope.$watch($attrs.ngModel,function(val){return val?renderView(val):void 0}),$scope.$on("related-tasks:assigned-to-changed",function(){return $rootscope.$broadcast("related-tasks:update")}),$scope.$on("related-tasks:status-changed",function(){return $rootscope.$broadcast("related-tasks:update")}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgRelatedTaskRow",["$tgRepo","$compile","$tgConfirm","$rootScope","$tgLoading","$tgTemplate",RelatedTaskRowDirective]),RelatedTaskCreateFormDirective=function($repo,$compile,$confirm,$tgmodel,$loading,$analytics,$template){var link,newTask,template;return template=$template.get("task/related-task-create-form.html",!0),newTask={subject:"",assigned_to:null},link=function($scope,$el){var createTask,render;return createTask=debounce(2e3,function(task){var promise;return task.subject=$el.find("input").val(),task.assigned_to=$scope.newTask.assigned_to,task.status=$scope.newTask.status,$scope.newTask.status=$scope.project.default_task_status,$scope.newTask.assigned_to=null,$loading.start($el.find(".task-name")),promise=$repo.create("tasks",task),promise.then(function(){return $analytics.trackEvent("task","create","create task on userstory",1),$loading.finish($el.find(".task-name")),$scope.$emit("related-tasks:add"),$confirm.notify("success")}),promise.then(null,function(){return $el.find("input").val(task.subject),$loading.finish($el.find(".task-name")),$confirm.notify("error")}),promise}),render=function(){return $el.off(),$el.html($compile(template())($scope)),$el.find("input").focus().select(),$el.addClass("active"),$el.on("keyup","input",function(event){return 13===event.keyCode?createTask(newTask).then(function(){return render()}):27===event.keyCode?$el.html(""):void 0}),$el.on("click",".icon-delete",function(){return $el.html("")}),$el.on("click",".icon-floppy",function(){return createTask(newTask).then(function(){return $el.html("")})})},taiga.bindOnce($scope,"us",function(){return newTask.status=$scope.project.default_task_status,newTask.project=$scope.project.id,newTask.user_story=$scope.us.id,$scope.newTask=$tgmodel.make_model("tasks",newTask),$el.html("")}),$scope.$on("related-tasks:show-form",function(){return render()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskCreateForm",["$tgRepo","$compile","$tgConfirm","$tgModel","$tgLoading","$tgAnalytics","$tgTemplate",RelatedTaskCreateFormDirective]),RelatedTaskCreateButtonDirective=function(){var link,template;return template=_.template(''),link=function($scope,$el){return $scope.$watch("project",function(val){return val?($el.off(),$el.html(-1!==$scope.project.my_permissions.indexOf("add_task")?template():""),$el.on("click",".icon",function(){return $scope.$emit("related-tasks:add-new-clicked")})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskCreateButton",["$tgRepo","$compile","$tgConfirm","$tgModel",RelatedTaskCreateButtonDirective]),RelatedTasksDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el){var loadTasks;return loadTasks=function(){return $rs.tasks.list($scope.projectId,null,$scope.usId).then(function(){return function(tasks){return $scope.tasks=tasks,tasks}}(this))},$scope.$on("related-tasks:add",function(){return loadTasks().then(function(){return $rootscope.$broadcast("related-tasks:update")})}),$scope.$on("related-tasks:delete",function(){return loadTasks().then(function(){return $rootscope.$broadcast("related-tasks:update")})}),$scope.$on("related-tasks:add-new-clicked",function(){return $scope.$broadcast("related-tasks:show-form")}),taiga.bindOnce($scope,"us",function(){return loadTasks()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTasks",["$tgRepo","$tgResources","$rootScope",RelatedTasksDirective]),RelatedTaskAssignedToInlineEditionDirective=function($repo,$rootscope){var link,template;return template=_.template('<%- name %>\n
<%- name %>
'),link=function($scope,$el,$attrs){var $ctrl,autoSave,notAutoSave,task,updateRelatedTask;return updateRelatedTask=function(task){var ctx,member;return ctx={name:"Unassigned",imgurl:"/images/unnamed.png"},member=$scope.usersById[task.assigned_to],member&&(ctx.imgurl=member.photo,ctx.name=member.full_name_display),$el.find(".avatar").html(template(ctx)),$el.find(".task-assignedto").attr("title",ctx.name)},$ctrl=$el.controller(),task=$scope.$eval($attrs.tgRelatedTaskAssignedToInlineEdition),notAutoSave=$scope.$eval($attrs.notAutoSave),autoSave=!notAutoSave,updateRelatedTask(task),$el.on("click",".task-assignedto",function(){return $rootscope.$broadcast("assigned-to:add",task)}),taiga.bindOnce($scope,"project",function(project){return-1===project.my_permissions.indexOf("modify_task")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("assigned-to:added",debounce(2e3,function(){return function(ctx,userId,updatedRelatedTask){return updatedRelatedTask.id===task.id?(updatedRelatedTask.assigned_to=userId,autoSave&&$repo.save(updatedRelatedTask).then(function(){return $scope.$emit("related-tasks:assigned-to-changed")}),updateRelatedTask(updatedRelatedTask)):void 0}}(this))),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskAssignedToInlineEdition",["$tgRepo","$rootScope",RelatedTaskAssignedToInlineEditionDirective])}.call(this),function(){var ResourcesService,initResources,initUrls,module,taiga,urls,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,ResourcesService=function(superClass){function ResourcesService(){return ResourcesService.__super__.constructor.apply(this,arguments)}return extend(ResourcesService,superClass),ResourcesService}(taiga.Service),urls={auth:"/auth","auth-register":"/auth/register",invitations:"/invitations",permissions:"/permissions",roles:"/roles",projects:"/projects",memberships:"/memberships","notify-policies":"/notify-policies","bulk-create-memberships":"/memberships/bulk_create",milestones:"/milestones",userstories:"/userstories","bulk-create-us":"/userstories/bulk_create","bulk-update-us-backlog-order":"/userstories/bulk_update_backlog_order","bulk-update-us-sprint-order":"/userstories/bulk_update_sprint_order","bulk-update-us-kanban-order":"/userstories/bulk_update_kanban_order","userstories-restore":"/userstories/%s/restore",tasks:"/tasks","bulk-create-tasks":"/tasks/bulk_create","bulk-update-task-taskboard-order":"/tasks/bulk_update_taskboard_order","tasks-restore":"/tasks/%s/restore",issues:"/issues","bulk-create-issues":"/issues/bulk_create","issues-restore":"/issues/%s/restore",wiki:"/wiki","wiki-restore":"/wiki/%s/restore","wiki-links":"/wiki-links","choices/userstory-statuses":"/userstory-statuses","choices/userstory-statuses/bulk-update-order":"/userstory-statuses/bulk_update_order","choices/points":"/points","choices/points/bulk-update-order":"/points/bulk_update_order","choices/task-statuses":"/task-statuses","choices/task-statuses/bulk-update-order":"/task-statuses/bulk_update_order","choices/issue-statuses":"/issue-statuses","choices/issue-statuses/bulk-update-order":"/issue-statuses/bulk_update_order","choices/issue-types":"/issue-types","choices/issue-types/bulk-update-order":"/issue-types/bulk_update_order","choices/priorities":"/priorities","choices/priorities/bulk-update-order":"/priorities/bulk_update_order","choices/severities":"/severities","choices/severities/bulk-update-order":"/severities/bulk_update_order",search:"/search",sites:"/sites","project-templates":"/project-templates","site-members":"/site-members","site-projects":"/site-projects",users:"/users","users-password-recovery":"/users/password_recovery","users-change-password-from-recovery":"/users/change_password_from_recovery","users-change-password":"/users/change_password","users-change-email":"/users/change_email","users-cancel-account":"/users/cancel","user-storage":"/user-storage",resolver:"/resolver","userstory-statuses":"/userstory-statuses",points:"/points","task-statuses":"/task-statuses","issue-statuses":"/issue-statuses","issue-types":"/issue-types",priorities:"/priorities",severities:"/severities","project-modules":"/projects/%s/modules",webhooks:"/webhooks","webhooks-test":"/webhooks/%s/test",webhooklogs:"/webhooklogs","webhooklogs-resend":"/webhooklogs/%s/resend","history/us":"/history/userstory","history/issue":"/history/issue","history/task":"/history/task","history/wiki":"/history/wiki","attachments/us":"/userstories/attachments","attachments/issue":"/issues/attachments","attachments/task":"/tasks/attachments","attachments/wiki_page":"/wiki/attachments","custom-attributes/userstory":"/userstory-custom-attributes","custom-attributes/issue":"/issue-custom-attributes","custom-attributes/task":"/task-custom-attributes","custom-attributes-values/userstory":"/userstories/custom-attributes-values","custom-attributes-values/issue":"/issues/custom-attributes-values","custom-attributes-values/task":"/tasks/custom-attributes-values",feedback:"/feedback",exporter:"/exporter",importer:"/importer/load_dump","userstories-csv":"/userstories/csv?uuid=%s","tasks-csv":"/tasks/csv?uuid=%s","issues-csv":"/issues/csv?uuid=%s"},initUrls=function($log,$urls){return $log.debug("Initialize api urls"),$urls.update(urls) },initResources=function($log,$rs){var i,len,provider,providers,results;for($log.debug("Initialize resources"),providers=_.toArray(arguments).slice(2),results=[],i=0,len=providers.length;len>i;i++)provider=providers[i],results.push(provider($rs));return results},module=angular.module("taigaResources",["taigaBase"]),module.service("$tgResources",ResourcesService),module.run(["$log","$tgUrls",initUrls]),module.run(["$log","$tgResources","$tgProjectsResourcesProvider","$tgCustomAttributesResourcesProvider","$tgCustomAttributesValuesResourcesProvider","$tgMembershipsResourcesProvider","$tgNotifyPoliciesResourcesProvider","$tgInvitationsResourcesProvider","$tgRolesResourcesProvider","$tgUserSettingsResourcesProvider","$tgSprintsResourcesProvider","$tgUserstoriesResourcesProvider","$tgTasksResourcesProvider","$tgIssuesResourcesProvider","$tgWikiResourcesProvider","$tgSearchResourcesProvider","$tgAttachmentsResourcesProvider","$tgMdRenderResourcesProvider","$tgHistoryResourcesProvider","$tgKanbanResourcesProvider","$tgModulesResourcesProvider","$tgWebhooksResourcesProvider","$tgWebhookLogsResourcesProvider",initResources])}.call(this),function(){var SearchBoxDirective,SearchController,SearchDirective,bindOnce,debounce,debounceLeading,groupBy,mixOf,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,mixOf=this.taiga.mixOf,debounceLeading=this.taiga.debounceLeading,trim=this.taiga.trim,debounce=this.taiga.debounce,module=angular.module("taigaSearch",[]),SearchController=function(superClass){function SearchController(scope1,repo,rs,params,q,location,appTitle,navUrls,tgLoader){var loadSearchData,promise;this.scope=scope1,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.tgLoader=tgLoader,this.scope.sectionName="Search",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Search")}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.searchTerm="",loadSearchData=debounceLeading(100,function(_this){return function(t){return _this.loadSearchData(t)}}(this)),this.scope.$watch("searchTerm",function(_this){return function(term){return term?loadSearchData(term):_this.tgLoader.pageLoaded()}}(this))}return extend(SearchController,superClass),SearchController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","tgLoader"],SearchController.prototype.loadFilters=function(){var defered;return defered=this.q.defer(),defered.resolve(),defered.promise},SearchController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issueStatusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.taskStatusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),project}}(this))},SearchController.prototype.loadSearchData=function(term){var promise;return promise=this.rs.search["do"](this.scope.projectId,term).then(function(_this){return function(data){return _this.scope.searchResults=data,data}}(this)),promise["finally"](function(_this){return function(){return _this.tgLoader.pageLoaded()}}(this)),promise},SearchController.prototype.loadInitialData=function(){return this.loadProject().then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.fillUsersAndRoles(project.users,project.roles)}}(this))},SearchController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("SearchController",SearchController),SearchBoxDirective=function($lightboxService,$navurls,$location,$route){var link;return link=function($scope,$el){var project,submit;return project=null,submit=debounce(2e3,function(){return function(event){var form,text,url;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?(text=$el.find("#search-text").val(),url=$navurls.resolve("project-search",{project:project.slug}),$lightboxService.close($el),$scope.$apply(function(){return $location.path(url),$location.search("text",text).path(url),$route.reload()})):void 0}}(this)),$scope.$on("search-box:show",function(ctx,newProject){return project=newProject,$lightboxService.open($el),$el.find("#search-text").val("")}),$el.on("submit","form",submit)},{link:link}},module.directive("tgSearchBox",["lightboxService","$tgNavUrls","$tgLocation","$route",SearchBoxDirective]),SearchDirective=function($log,$compile,$templatecache,$routeparams,$location){var link,linkTable;return linkTable=function($scope,$el){var getActiveSection,lastSeatchResults,markSectionTabActive,renderFilterTabs,renderTableContent,tabsDom,templates;return tabsDom=$el.find("section.search-filter"),lastSeatchResults=null,getActiveSection=function(data){var maxVal,name,selectedSectionData,selectedSectionName,value;maxVal=0,selectedSectionName=null,selectedSectionData=null;for(name in data)value=data[name],"count"!==name&&value.length>maxVal&&(maxVal=value.length,selectedSectionName=name,selectedSectionData=value);return 0===maxVal?{name:"userstories",value:[]}:{name:selectedSectionName,value:selectedSectionData}},renderFilterTabs=function(data){var name,results,value;results=[];for(name in data)value=data[name],"count"!==name&&results.push(tabsDom.find("li."+name+" .num").html(value.length));return results},markSectionTabActive=function(section){return tabsDom.find("a.active").removeClass("active"),tabsDom.find("li."+section.name+" a").addClass("active")},templates={issues:$templatecache.get("search-issues"),tasks:$templatecache.get("search-tasks"),userstories:$templatecache.get("search-userstories"),wikipages:$templatecache.get("search-wikipages")},renderTableContent=function(section){var element,oldElements,oldScope,scope,template;return oldElements=$el.find(".search-result-table").children(),oldScope=oldElements.scope(),oldScope&&(oldScope.$destroy(),oldElements.remove()),scope=$scope.$new(),scope[section.name]=section.value,template=angular.element.parseHTML(trim(templates[section.name])),element=$compile(template)(scope),$el.find(".search-result-table").html(element)},$scope.$watch("searchResults",function(data){var activeSection;return lastSeatchResults=data,activeSection=getActiveSection(data),renderFilterTabs(data),renderTableContent(activeSection),markSectionTabActive(activeSection)}),$scope.$watch("searchTerm",function(searchTerm){return searchTerm?$location.search("text",searchTerm):void 0}),$el.on("click",".search-filter li > a",function(event){var section,sectionData,sectionName,target;return event.preventDefault(),target=angular.element(event.currentTarget),sectionName=target.parent().data("name"),sectionData=lastSeatchResults[sectionName],section={name:sectionName,value:sectionData},$scope.$apply(function(){return renderTableContent(section),markSectionTabActive(section)})})},link=function($scope,$el,$attrs){var $ctrl,searchText;return $ctrl=$el.controller(),linkTable($scope,$el,$attrs,$ctrl),searchText=$routeparams.text,$scope.$watch("projectId",function(projectId){return null!=projectId?$scope.searchTerm=searchText:void 0})},{link:link}},module.directive("tgSearch",["$log","$compile","$templateCache","$routeParams","$tgLocation",SearchDirective])}.call(this),function(){var module;module=angular.module("taigaTaskboard",[])}.call(this),function(){var module;module=angular.module("taigaTasks",[])}.call(this),function(){var module;module=angular.module("taigaTeam",[])}.call(this),function(){var module;module=angular.module("taigaUserSettings",[])}.call(this),function(){var module;module=angular.module("taigaUserStories",[])}.call(this),function(){var module;module=angular.module("taigaWiki",[])}.call(this),function(){var AnalyticsService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,module=angular.module("taigaCommon"),AnalyticsService=function(superClass){function AnalyticsService(rootscope,log,config,win,doc,location){var conf;this.rootscope=rootscope,this.log=log,this.config=config,this.win=win,this.doc=doc,this.location=location,this.initialized=!1,conf=this.config.get("analytics",{}),this.accountId=conf.accountId,this.pageEvent=conf.pageEvent||"$routeChangeSuccess",this.trackRoutes=conf.trackRoutes||!0,this.ignoreFirstPageLoad=conf.ignoreFirstPageLoad||!1}return extend(AnalyticsService,superClass),AnalyticsService.$inject=["$rootScope","$log","$tgConfig","$window","$document","$location"],AnalyticsService.prototype.initialize=function(){return this.accountId?(this.injectAnalytics(),this.win.ga("create",this.accountId,"auto"),this.win.ga("require","displayfeatures"),this.trackRoutes&&!this.ignoreFirstPageLoad&&this.win.ga("send","pageview",this.getUrl()),this.trackRoutes&&this.rootscope.$on(this.pageEvent,function(_this){return function(){return _this.trackPage(_this.getUrl(),"Taiga")}}(this)),this.initialized=!0):void this.log.debug("Analytics: no acount id provided. Disabling.")},AnalyticsService.prototype.getUrl=function(){return this.location.path()},AnalyticsService.prototype.injectAnalytics=function(){var fn;return(fn=function(i,s,o,g,r,a,m){i.GoogleAnalyticsObject=r,i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date,a=s.createElement(o),m=s.getElementsByTagName(o)[0],a.async=1,a.src=g,m.parentNode.insertBefore(a,m)})(window,document,"script","//www.google-analytics.com/analytics.js","ga")},AnalyticsService.prototype.trackPage=function(url,title){return this.initialized&&this.win.ga?(title=title||this.doc[0].title,this.win.ga("send","pageview",{page:url,title:title})):void 0},AnalyticsService.prototype.trackEvent=function(category,action,label,value){return this.initialized&&this.win.ga?this.win.ga("send","event",category,action,label,value):void 0},AnalyticsService}(taiga.Service),module.service("$tgAnalytics",AnalyticsService)}.call(this),function(){var AttachmentDirective,AttachmentsController,AttachmentsDirective,bindMethods,bindOnce,module,sizeFormat,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,bindOnce=this.taiga.bindOnce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaCommon"),AttachmentsController=function(superClass){function AttachmentsController(scope,rootscope,repo,rs,confirm,q){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.confirm=confirm,this.q=q,bindMethods(this),this.type=null,this.objectId=null,this.projectId=null,this.uploadingAttachments=[],this.attachments=[],this.attachmentsCount=0,this.deprecatedAttachmentsCount=0,this.showDeprecated=!1}return extend(AttachmentsController,superClass),AttachmentsController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$tgConfirm","$q"],AttachmentsController.prototype.initialize=function(type,objectId){return this.type=type,this.objectId=objectId,this.projectId=this.scope.projectId},AttachmentsController.prototype.loadAttachments=function(){var urlname;return this.objectId?(urlname="attachments/"+this.type,this.rs.attachments.list(urlname,this.objectId,this.projectId).then(function(_this){return function(attachments){return _this.attachments=_.sortBy(attachments,"order"),_this.updateCounters(),attachments}}(this))):this.attachments},AttachmentsController.prototype.updateCounters=function(){return this.attachmentsCount=this.attachments.length,this.deprecatedAttachmentsCount=_.filter(this.attachments,{is_deprecated:!0}).length},AttachmentsController.prototype._createAttachment=function(attachment){var promise,urlName;return urlName="attachments/"+this.type,promise=this.rs.attachments.create(urlName,this.projectId,this.objectId,attachment),promise=promise.then(function(_this){return function(data){var index;return data.isCreatedRightNow=!0,index=_this.uploadingAttachments.indexOf(attachment),_this.uploadingAttachments.splice(index,1),_this.attachments.push(data),_this.rootscope.$broadcast("attachment:create")}}(this)),promise=promise.then(null,function(_this){return function(data){var index;return 413===data.status&&_this.scope.$emit("attachments:size-error"),index=_this.uploadingAttachments.indexOf(attachment),_this.uploadingAttachments.splice(index,1),_this.confirm.notify("error","We have not been able to upload '"+attachment.name+"'. "+data.data._error_message),_this.q.reject(data)}}(this))},AttachmentsController.prototype.createAttachments=function(attachments){var promises;return promises=_.map(attachments,function(_this){return function(x){return _this._createAttachment(x)}}(this)),this.q.all(promises).then(function(_this){return function(){return _this.updateCounters()}}(this))},AttachmentsController.prototype.addUploadingAttachments=function(attachments){return this.uploadingAttachments=_.union(this.uploadingAttachments,attachments)},AttachmentsController.prototype.reorderAttachment=function(attachment,newIndex){var oldIndex;return oldIndex=this.attachments.indexOf(attachment),oldIndex!==newIndex?(this.attachments.splice(oldIndex,1),this.attachments.splice(newIndex,0,attachment),_.each(this.attachments,function(x,i){return x.order=i+1})):void 0},AttachmentsController.prototype.updateAttachment=function(attachment){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.updateCounters(),_this.rootscope.$broadcast("attachment:edit")}}(this),onError=function(_this){return function(response){return 413===response.status&&$scope.$emit("attachments:size-error"),_this.confirm.notify("error"),_this.q.reject()}}(this),this.repo.save(attachment).then(onSuccess,onError)},AttachmentsController.prototype.saveAttachments=function(){return this.repo.saveAll(this.attachments).then(null,function(_this){return function(){var item,j,len,ref;for(ref=_this.attachments,j=0,len=ref.length;len>j;j++)item=ref[j],item.revert();return _this.attachments=_.sortBy(_this.attachments,"order")}}(this))},AttachmentsController.prototype.removeAttachment=function(attachment){var message,title;return title="Delete attachment",message="the attachment '"+attachment.name+"'",this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var onError,onSuccess;return onSuccess=function(){var index;return finish(),index=_this.attachments.indexOf(attachment),_this.attachments.splice(index,1),_this.updateCounters(),_this.rootscope.$broadcast("attachment:delete")},onError=function(){return finish(!1),_this.confirm.notify("error",null,"We have not been able to delete "+message+"."),_this.q.reject()},_this.repo.remove(attachment).then(onSuccess,onError)}}(this))},AttachmentsController.prototype.filterAttachments=function(item){return this.showDeprecated?!0:!item.is_deprecated},AttachmentsController}(taiga.Controller),AttachmentsDirective=function($config,$confirm,$templates){var link,template,templateFn;return template=$templates.get("attachment/attachments.html",!0),link=function($scope,$el,$attrs,$ctrls){var $ctrl,$model,showSizeInfo,tdom;return $ctrl=$ctrls[0],$model=$ctrls[1],bindOnce($scope,$attrs.ngModel,function(value){return $ctrl.initialize($attrs.type,value.id),$ctrl.loadAttachments()}),tdom=$el.find("div.attachment-body.sortable"),tdom.sortable({items:"div.single-attachment",handle:"a.settings.icon.icon-drag-v",containment:".attachments",dropOnEmpty:!0,scroll:!1,tolerance:"pointer",placeholder:"sortable-placeholder single-attachment"}),tdom.on("sortstop",function(event,ui){var attachment,newIndex;return attachment=ui.item.scope().attach,newIndex=ui.item.index(),$ctrl.reorderAttachment(attachment,newIndex),$ctrl.saveAttachments().then(function(){return $scope.$emit("attachment:edit")})}),showSizeInfo=function(){return $el.find(".size-info").removeClass("hidden")},$scope.$on("attachments:size-error",function(){return showSizeInfo()}),$el.on("change",".attachments-header input",function(event){var files;return files=_.toArray(event.target.files),files.length<1?void 0:$scope.$apply(function(){return $ctrl.addUploadingAttachments(files),$ctrl.createAttachments(files)})}),$el.on("click",".more-attachments",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $ctrl.showDeprecated=!$ctrl.showDeprecated}),target.find("span.text").addClass("hidden"),$ctrl.showDeprecated?(target.find("span[data-type=hide]").removeClass("hidden"),target.find("more-attachments-num").addClass("hidden")):(target.find("span[data-type=show]").removeClass("hidden"),target.find("more-attachments-num").removeClass("hidden"))}),$scope.$on("$destroy",function(){return $el.off()})},templateFn=function($el,$attrs){var ctx,maxFileSize,maxFileSizeMsg;return maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&(maxFileSize=sizeFormat(maxFileSize)),maxFileSizeMsg=maxFileSize?"Maximum upload size is "+maxFileSize:"",ctx={type:$attrs.type,maxFileSize:maxFileSize,maxFileSizeMsg:maxFileSizeMsg},template(ctx)},{require:["tgAttachments","ngModel"],controller:AttachmentsController,controllerAs:"ctrl",restrict:"AE",scope:!0,link:link,template:templateFn}},module.directive("tgAttachments",["$tgConfig","$tgConfirm","$tgTemplate",AttachmentsDirective]),AttachmentDirective=function($template){var link,template,templateEdit;return template=$template.get("attachment/attachment.html",!0),templateEdit=$template.get("attachment/attachment-edit.html",!0),link=function($scope,$el,$attrs,$ctrl){var attachment,render,saveAttachment;return render=function(attachment,edit){var ctx,html,modifyPermission,permissions;return null==edit&&(edit=!1),permissions=$scope.project.my_permissions,modifyPermission=permissions.indexOf("modify_"+$ctrl.type)>-1,ctx={id:attachment.id,name:attachment.name,created_date:moment(attachment.created_date).format("DD MMM YYYY [at] hh:mm"),url:attachment.url,size:sizeFormat(attachment.size),description:attachment.description,isDeprecated:attachment.is_deprecated,modifyPermission:modifyPermission},html=edit?templateEdit(ctx):template(ctx),$el.html(html),attachment.is_deprecated?($el.addClass("deprecated"),$el.find("input:checkbox").prop("checked",!0)):void 0},saveAttachment=function(){return attachment.description=$el.find("input[name='description']").val(),attachment.is_deprecated=$el.find("input[name='is-deprecated']").prop("checked"),$scope.$apply(function(){return $ctrl.updateAttachment(attachment).then(function(){return render(attachment,!1)})})},$el.on("click","a.editable-settings.icon-floppy",function(event){return event.preventDefault(),saveAttachment()}),$el.on("keyup","input[name=description]",function(event){return 13===event.keyCode?saveAttachment():27===event.keyCode?render(attachment,!1):void 0}),$el.on("click","a.editable-settings.icon-delete",function(event){return event.preventDefault(),render(attachment,!1)}),$el.on("click","a.settings.icon-edit",function(event){return event.preventDefault(),render(attachment,!0),$el.find("input[name='description']").focus().select()}),$el.on("click","a.settings.icon-delete",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.removeAttachment(attachment)})}),$scope.$on("$destroy",function(){return $el.off()}),attachment=$scope.$eval($attrs.tgAttachment),render(attachment,attachment.isCreatedRightNow),attachment.isCreatedRightNow?$el.find("input[name='description']").focus().select():void 0},{link:link,require:"^tgAttachments",restrict:"AE"}},module.directive("tgAttachment",["$tgTemplate",AttachmentDirective])}.call(this),function(){var BindScope,module;module=angular.module("taigaCommon"),BindScope=function(config){var link;return config.debugInfo||(jQuery.fn.scope=function(){return this.data("scope")}),link=function($scope,$el){return config.debugInfo?void 0:$el.data("scope",$scope).addClass("tg-scope")},{link:link}},module.directive("tgBindScope",["$tgConfig",BindScope])}.call(this),function(){var AssignedToDirective,BlockButtonDirective,CreatedByDisplayDirective,DateRangeDirective,DateSelectorDirective,DeleteButtonDirective,EditableDescriptionDirective,EditableSubjectDirective,ListItemAssignedtoDirective,ListItemIssueStatusDirective,ListItemPriorityDirective,ListItemSeverityDirective,ListItemTaskStatusDirective,ListItemTypeDirective,ListItemUsStatusDirective,SprintProgressBarDirective,TgMainTitleDirective,TgProgressBarDirective,WatchersDirective,bindOnce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,module=angular.module("taigaCommon"),DateRangeDirective=function(){var link,renderRange;return renderRange=function($el,first,second){var endDate,initDate;return initDate=moment(first).format("DD MMM YYYY"),endDate=moment(second).format("DD MMM YYYY"),$el.html(initDate+"-"+endDate)},link=function($scope,$el,$attrs){var first,ref,second;return ref=$attrs.tgDateRange.split(","),first=ref[0],second=ref[1],bindOnce($scope,first,function(valFirst){return bindOnce($scope,second,function(valSecond){return renderRange($el,valFirst,valSecond)})})},{link:link}},module.directive("tgDateRange",DateRangeDirective),DateSelectorDirective=function(){var link;return link=function($scope,$el,$attrs){var selectedDate;return selectedDate=null,$el.picker=new Pikaday({field:$el[0],format:"DD MMM YYYY",onSelect:function(){return function(date){return selectedDate=date}}(this),onOpen:function(){return function(){return null!=selectedDate?$el.picker.setDate(selectedDate):void 0}}(this)}),$scope.$watch($attrs.ngModel,function(val){return null!=val?$el.picker.setDate(val):void 0})},{link:link,require:"ngModel"}},module.directive("tgDateSelector",DateSelectorDirective),SprintProgressBarDirective=function(){var link,renderProgress;return renderProgress=function($el,percentage,visual_percentage){return $el.hasClass(".current-progress")?$el.css("width",percentage+"%"):($el.find(".current-progress").css("width",visual_percentage+"%"),$el.find(".number").html(percentage+" %"))},link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgSprintProgressbar,function(sprint){var closedPoints,percentage,totalPoints,visual_percentage;return closedPoints=sprint.closed_points,totalPoints=sprint.total_points,percentage=0,0!==totalPoints&&(percentage=Math.round(100*(closedPoints/totalPoints))),visual_percentage=0,0!==totalPoints&&(visual_percentage=Math.round(98*(closedPoints/totalPoints))),renderProgress($el,percentage,visual_percentage)})},{link:link}},module.directive("tgSprintProgressbar",SprintProgressBarDirective),CreatedByDisplayDirective=function($template){var link,template;return template=$template.get("common/components/created-by.html",!0),link=function($scope,$el,$attrs){var render;return render=function(model){var html,owner,ref;return owner=(null!=(ref=$scope.usersById)?ref[model.owner]:void 0)||{full_name_display:"external user",photo:"/images/unnamed.png"},html=template({owner:owner,date:moment(model.created_date).format("DD MMM YYYY HH:mm")}),$el.html(html)},bindOnce($scope,$attrs.ngModel,function(model){return null!=model?render(model):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgCreatedByDisplay",["$tgTemplate",CreatedByDisplayDirective]),WatchersDirective=function($rootscope,$confirm,$repo,$qqueue,$template){var link,template;return template=$template.get("common/components/watchers.html",!0),link=function($scope,$el,$attrs,$model){var deleteWatcher,isEditable,renderWatchers,save;return isEditable=function(){var ref,ref1;return-1!==(null!=(ref=$scope.project)&&null!=(ref1=ref.my_permissions)?ref1.indexOf($attrs.requiredPerm):void 0)},save=$qqueue.bindAdd(function(){return function(watchers){var item,promise;return item=$model.$modelValue.clone(),item.watchers=watchers,$model.$setViewValue(item),promise=$repo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),watchers=_.map(watchers,function(watcherId){return $scope.usersById[watcherId]}),renderWatchers(watchers),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $model.$modelValue.revert()})}}(this)),deleteWatcher=$qqueue.bindAdd(function(){return function(watcherIds){var item,promise;return item=$model.$modelValue.clone(),item.watchers=watcherIds,$model.$setViewValue(item),promise=$repo.save($model.$modelValue),promise.then(function(){var watchers;return $confirm.notify("success"),watchers=_.map(item.watchers,function(watcherId){return $scope.usersById[watcherId]}),renderWatchers(watchers),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return item.revert(),$confirm.notify("error")})}}(this)),renderWatchers=function(watchers){var ctx,html;return ctx={watchers:watchers,isEditable:isEditable()},html=template(ctx),$el.html(html),isEditable()&&0===watchers.length?($el.find(".title").text("Add watchers"),$el.find(".watchers-header").addClass("no-watchers")):void 0},$el.on("click",".icon-delete",function(event){var message,target,title,watcherId;return event.preventDefault(),isEditable()?(target=angular.element(event.currentTarget),watcherId=target.data("watcher-id"),title="Delete watcher",message=$scope.usersById[watcherId].full_name_display,$confirm.askOnDelete(title,message).then(function(){return function(finish){var watcherIds;return finish(),watcherIds=_.clone($model.$modelValue.watchers,!1),watcherIds=_.pull(watcherIds,watcherId),deleteWatcher(watcherIds)}}(this))):void 0}),$el.on("click",".add-watcher",function(event){return event.preventDefault(),isEditable()?$scope.$apply(function(){return $rootscope.$broadcast("watcher:add",$model.$modelValue)}):void 0}),$scope.$on("watcher:added",function(ctx,watcherId){var watchers;return watchers=_.clone($model.$modelValue.watchers,!1),watchers.push(watcherId),watchers=_.uniq(watchers),save(watchers)}),$scope.$watch($attrs.ngModel,function(item){var watchers;if(null!=item)return watchers=_.map(item.watchers,function(watcherId){return $scope.usersById[watcherId]}),renderWatchers(watchers)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgWatchers",["$rootScope","$tgConfirm","$tgRepo","$tgQqueue","$tgTemplate",WatchersDirective]),AssignedToDirective=function($rootscope,$confirm,$repo,$loading,$qqueue,$template){var link,template;return template=$template.get("common/components/assigned-to.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,renderAssignedTo,save;return isEditable=function(){var ref,ref1;return-1!==(null!=(ref=$scope.project)&&null!=(ref1=ref.my_permissions)?ref1.indexOf($attrs.requiredPerm):void 0)},save=$qqueue.bindAdd(function(){return function(userId){var promise;return $model.$modelValue.assigned_to=userId,$loading.start($el),promise=$repo.save($model.$modelValue),promise.then(function(){return $loading.finish($el),$confirm.notify("success"),renderAssignedTo($model.$modelValue),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $model.$modelValue.revert(),$confirm.notify("error"),$loading.finish($el)}),promise}}(this)),renderAssignedTo=function(issue){var assignedTo,assignedToId,ctx,html;return assignedToId=null!=issue?issue.assigned_to:void 0,assignedTo=null!=assignedToId?$scope.usersById[assignedToId]:null,ctx={assignedTo:assignedTo,isEditable:isEditable()},html=template(ctx),$el.html(html)},$el.on("click",".user-assigned",function(event){return event.preventDefault(),isEditable()?$scope.$apply(function(){return $rootscope.$broadcast("assigned-to:add",$model.$modelValue)}):void 0}),$el.on("click",".icon-delete",function(event){var title;return event.preventDefault(),isEditable()?(title="Are you sure you want to leave it unassigned?",$confirm.ask(title).then(function(){return function(finish){return finish(),$model.$modelValue.assigned_to=null,save(null)}}(this))):void 0}),$scope.$on("assigned-to:added",function(ctx,userId,item){return item.id===$model.$modelValue.id?save(userId):void 0}),$scope.$watch($attrs.ngModel,function(instance){return renderAssignedTo(instance)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgAssignedTo",["$rootScope","$tgConfirm","$tgRepo","$tgLoading","$tgQqueue","$tgTemplate",AssignedToDirective]),BlockButtonDirective=function($rootscope,$loading,$template){var link,template;return template=$template.get("common/components/block-button.html"),link=function($scope,$el,$attrs,$model){var isEditable;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},$scope.$watch($attrs.ngModel,function(item){return item?(isEditable()&&$el.find(".item-block").addClass("editable"),item.is_blocked?($el.find(".item-block").hide(),$el.find(".item-unblock").show()):($el.find(".item-block").show(),$el.find(".item-unblock").hide())):void 0}),$el.on("click",".item-block",function(event){return event.preventDefault(),$rootscope.$broadcast("block",$model.$modelValue)}),$el.on("click",".item-unblock",function(event){var finish;return event.preventDefault(),$loading.start($el.find(".item-unblock")),finish=function(){return $loading.finish($el.find(".item-unblock"))},$rootscope.$broadcast("unblock",$model.$modelValue,finish)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgBlockButton",["$rootScope","$tgLoading","$tgTemplate",BlockButtonDirective]),DeleteButtonDirective=function($log,$repo,$confirm,$location,$template){var link,template;return template=$template.get("common/components/delete-button.html"),link=function($scope,$el,$attrs,$model){return $attrs.onDeleteGoToUrl?$attrs.onDeleteTitle?($el.on("click",".button",function(){var subtitle,title;return title=$scope.$eval($attrs.onDeleteTitle),subtitle=$model.$modelValue.subject,$confirm.askOnDelete(title,subtitle).then(function(){return function(finish){var promise;return promise=$repo.remove($model.$modelValue),promise.then(function(){var url;return finish(),url=$scope.$eval($attrs.onDeleteGoToUrl),$location.path(url)}),promise.then(null,function(){return finish(!1),$confirm.notify("error")})}}(this))}),$scope.$on("$destroy",function(){return $el.off()})):$log.error("DeleteButtonDirective requires on-delete-title set in scope."):$log.error("DeleteButtonDirective requires on-delete-go-to-url set in scope.")},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgDeleteButton",["$log","$tgRepo","$tgConfirm","$tgLocation","$tgTemplate",DeleteButtonDirective]),EditableSubjectDirective=function($rootscope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("common/components/editable-subject.html"),link=function($scope,$el,$attrs,$model){var isEditable,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf($attrs.requiredPerm)},save=$qqueue.bindAdd(function(){return function(subject){var promise;return $model.$modelValue.subject=subject,$loading.start($el.find(".save-container")),promise=$repo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload"),$el.find(".edit-subject").hide(),$el.find(".view-subject").show() -}),promise.then(null,function(){return $confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find(".save-container"))}),promise}}(this)),$el.click(function(){return isEditable()?($el.find(".edit-subject").show(),$el.find(".view-subject").hide(),$el.find("input").focus()):void 0}),$el.on("click",".save",function(){var subject;return subject=$scope.item.subject,save(subject)}),$el.on("keyup","input",function(event){var subject;return 13===event.keyCode?(subject=$scope.item.subject,save(subject)):27===event.keyCode?($scope.$apply(function(){return function(){return $model.$modelValue.revert()}}(this)),$el.find("div.edit-subject").hide(),$el.find("div.view-subject").show()):void 0}),$el.find("div.edit-subject").hide(),$el.find("div.view-subject span.edit").hide(),$scope.$watch($attrs.ngModel,function(value){return value?($scope.item=value,isEditable()?void 0:$el.find(".view-subject .edit").remove()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgEditableSubject",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",EditableSubjectDirective]),EditableDescriptionDirective=function($rootscope,$repo,$confirm,$compile,$loading,$selectedText,$qqueue,$template){var link,noDescriptionMegEditMode,noDescriptionMegReadMode,template;return template=$template.get("common/components/editable-description.html"),noDescriptionMegEditMode=$template.get("common/components/editable-description-msg-edit-mode.html"),noDescriptionMegReadMode=$template.get("common/components/editable-description-msg-read-mode.html"),link=function($scope,$el,$attrs,$model){var isEditable,save;return $el.find(".edit-description").hide(),$el.find(".view-description .edit").hide(),isEditable=function(){return-1!==$scope.project.my_permissions.indexOf($attrs.requiredPerm)},save=$qqueue.bindAdd(function(){return function(description){var promise;return $model.$modelValue.description=description,$loading.start($el.find(".save-container")),promise=$repo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload"),$el.find(".edit-description").hide(),$el.find(".view-description").show()}),promise.then(null,function(){return $confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find(".save-container"))})}}(this)),$el.on("mouseup",".view-description",function(event){var target;return target=angular.element(event.target),!isEditable()||target.is("a")||$selectedText.get().length?void 0:($el.find(".edit-description").show(),$el.find(".view-description").hide(),$el.find("textarea").focus())}),$el.on("click",".save",function(e){var description;return e.preventDefault(),description=$scope.item.description,save(description)}),$el.on("keydown","textarea",function(event){return 27===event.keyCode?($scope.$apply(function(){return function(){return $scope.item.revert()}}(this)),$el.find(".edit-description").hide(),$el.find(".view-description").show()):void 0}),$scope.$watch($attrs.ngModel,function(value){return value?($scope.item=value,isEditable()?($el.find(".view-description .edit").show(),$el.find(".view-description .us-content").addClass("editable"),$scope.noDescriptionMsg=noDescriptionMegEditMode):$scope.noDescriptionMsg=noDescriptionMegReadMode):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgEditableDescription",["$rootScope","$tgRepo","$tgConfirm","$compile","$tgLoading","$selectedText","$tgQqueue","$tgTemplate",EditableDescriptionDirective]),ListItemIssueStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var issue;return issue=$scope.$eval($attrs.tgListitemIssueStatus),bindOnce($scope,"issueStatusById",function(issueStatusById){return $el.html(issueStatusById[issue.status].name)})},{link:link}},ListItemTaskStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var task;return task=$scope.$eval($attrs.tgListitemTaskStatus),bindOnce($scope,"taskStatusById",function(taskStatusById){return $el.html(taskStatusById[task.status].name)})},{link:link}},ListItemUsStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var us;return us=$scope.$eval($attrs.tgListitemUsStatus),bindOnce($scope,"usStatusById",function(usStatusById){return $el.html(usStatusById[us.status].name)})},{link:link}},ListItemAssignedtoDirective=function($template){var link,template;return template=$template.get("common/components/list-item-assigned-to-avatar.html",!0),link=function($scope,$el,$attrs){return bindOnce($scope,"membersById",function(membersById){var ctx,item,member;return item=$scope.$eval($attrs.tgListitemAssignedto),ctx={name:"Unassigned",imgurl:"/images/unnamed.png"},member=membersById[item.assigned_to],member&&(ctx.imgurl=member.photo,ctx.name=member.full_name),$el.html(template(ctx))})},{link:link}},module.directive("tgListitemAssignedto",["$tgTemplate",ListItemAssignedtoDirective]),ListItemPriorityDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(priorityById,issue){var domNode,priority;return priority=priorityById[issue.priority],domNode=$el.find(".level"),domNode.css("background-color",priority.color),domNode.attr("title",priority.name)},bindOnce($scope,"priorityById",function(priorityById){var issue;return issue=$scope.$eval($attrs.tgListitemPriority),render(priorityById,issue)}),$scope.$watch($attrs.tgListitemPriority,function(issue){return render($scope.priorityById,issue)})},{link:link,templateUrl:"common/components/level.html"}},module.directive("tgListitemPriority",ListItemPriorityDirective),ListItemSeverityDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(severityById,issue){var domNode,severity;return severity=severityById[issue.severity],domNode=$el.find(".level"),domNode.css("background-color",severity.color),domNode.attr("title",severity.name)},bindOnce($scope,"severityById",function(severityById){var issue;return issue=$scope.$eval($attrs.tgListitemSeverity),render(severityById,issue)}),$scope.$watch($attrs.tgListitemSeverity,function(issue){return render($scope.severityById,issue)})},{link:link,templateUrl:"common/components/level.html"}},ListItemTypeDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(issueTypeById,issue){var domNode,type;return type=issueTypeById[issue.type],domNode=$el.find(".level"),domNode.css("background-color",type.color),domNode.attr("title",type.name)},bindOnce($scope,"issueTypeById",function(issueTypeById){var issue;return issue=$scope.$eval($attrs.tgListitemType),render(issueTypeById,issue)}),$scope.$watch($attrs.tgListitemType,function(issue){return render($scope.issueTypeById,issue)})},{link:link,templateUrl:"common/components/level.html"}},TgProgressBarDirective=function($template){var link,render,template;return template=$template.get("common/components/progress-bar.html",!0),render=function(el,percentage){return el.html(template({percentage:percentage}))},link=function($scope,$el,$attrs){var element;return element=angular.element($el),$scope.$watch($attrs.tgProgressBar,function(percentage){return percentage=_.max([0,percentage]),percentage=_.min([100,percentage]),render($el,percentage)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProgressBar",["$tgTemplate",TgProgressBarDirective]),TgMainTitleDirective=function($template){var link,render,template;return template=$template.get("common/components/main-title.html",!0),render=function(el,projectName,sectionName){return el.html(template({projectName:projectName,sectionName:sectionName}))},link=function($scope,$el){var element;return element=angular.element($el),$scope.$watch("project",function(project){return project?render($el,project.name,$scope.sectionName):void 0}),$scope.$on("project:loaded",function(){return function(ctx,project){return render($el,project.name,$scope.sectionName)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMainTitle",["$tgTemplate",TgMainTitleDirective]),module.directive("tgListitemType",ListItemTypeDirective),module.directive("tgListitemIssueStatus",ListItemIssueStatusDirective),module.directive("tgListitemSeverity",ListItemSeverityDirective),module.directive("tgListitemTaskStatus",ListItemTaskStatusDirective),module.directive("tgListitemUsStatus",ListItemUsStatusDirective)}.call(this),function(){var ConfirmService,NOTIFICATION_MSG,bindMethods,cancelTimeout,debounce,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,timeout=this.taiga.timeout,cancelTimeout=this.taiga.cancelTimeout,debounce=this.taiga.debounce,bindMethods=this.taiga.bindMethods,NOTIFICATION_MSG={success:{title:"Everything is ok",message:"Our Oompa Loompas saved all your changes!"},error:{title:"Oops, something happened...",message:"Our Oompa Loompas are sad, your changes were not saved!"},"light-error":{title:"Oops, something happened...",message:"Our Oompa Loompas are sad, your changes were not saved!"}},ConfirmService=function(superClass){function ConfirmService(q,lightboxService,loading){this.q=q,this.lightboxService=lightboxService,this.loading=loading,bindMethods(this)}return extend(ConfirmService,superClass),ConfirmService.$inject=["$q","lightboxService","$tgLoading"],ConfirmService.prototype.hide=function(el){return el?(this.lightboxService.close(el),el.off(".confirm-dialog")):void 0},ConfirmService.prototype.ask=function(title,subtitle,message,lightboxSelector){var defered,el;return null==lightboxSelector&&(lightboxSelector=".lightbox-generic-ask"),el=angular.element(lightboxSelector),el.find("h2.title").html(title),el.find("span.subtitle").html(subtitle),el.find("span.message").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",debounce(2e3,function(_this){return function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),_this.loading.start(target),defered.resolve(function(ok){return null==ok&&(ok=!0),_this.loading.finish(target),ok?_this.hide(el):void 0})}}(this))),el.on("click.confirm-dialog","a.button-red",function(_this){return function(event){return event.preventDefault(),defered.reject(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.askOnDelete=function(title,message){return this.ask(title,"Are you sure you want to delete?",message)},ConfirmService.prototype.askChoice=function(title,subtitle,choices,replacement,warning,lightboxSelector){var choicesField,defered,el;return null==lightboxSelector&&(lightboxSelector=".lightbox-ask-choice"),el=angular.element(lightboxSelector),el.find(".title").html(title),el.find(".subtitle").html(subtitle),replacement?el.find(".replacement").html(replacement):el.find(".replacement").remove(),warning?el.find(".warning").html(warning):el.find(".warning").remove(),choicesField=el.find(".choices"),choicesField.html(""),_.each(choices,function(value,key){return choicesField.append(angular.element(""))}),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",debounce(2e3,function(_this){return function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),_this.loading.start(target),defered.resolve({selected:choicesField.val(),finish:function(){return _this.loading.finish(target),_this.hide(el)}})}}(this))),el.on("click.confirm-dialog","a.button-red",function(_this){return function(event){return event.preventDefault(),defered.reject(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.error=function(message){var defered,el;return el=angular.element(".lightbox-generic-error"),el.find("h2.title").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),el.on("click.confirm-dialog","a.close",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.success=function(title,message){var defered,el;return el=angular.element(".lightbox-generic-success"),title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),el.on("click.confirm-dialog","a.close",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.loader=function(title,message){var el;return el=angular.element(".lightbox-generic-loading"),title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),{start:function(_this){return function(){return _this.lightboxService.open(el)}}(this),stop:function(_this){return function(){return _this.lightboxService.close(el)}}(this),update:function(){return function(status,title,message,percent){return title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),percent?(el.find(".spin").addClass("hidden"),el.find(".progress-bar-wrapper").removeClass("hidden"),el.find(".progress-bar-wrapper > .bar").width(percent+"%"),el.find(".progress-bar-wrapper > span").html(percent+"%").css("left",percent-9+"%")):(el.find(".spin").removeClass("hidden"),el.find(".progress-bar-wrapper").addClass("hidden"))}}(this)}},ConfirmService.prototype.notify=function(type,message,title,time){var body,el,selector;return selector=".notification-message-"+type,el=angular.element(selector),el.hasClass("active")?void 0:(el.find("h4").html(title?title:NOTIFICATION_MSG[type].title),el.find("p").html(message?message:NOTIFICATION_MSG[type].message),body=angular.element("body"),body.find(".notification-message .notification-light").removeClass("active").addClass("inactive"),body.find(selector).removeClass("inactive").addClass("active"),this.tsem&&cancelTimeout(this.tsem),time||(time="error"===type||"light-error"===type?3500:1500),this.tsem=timeout(time,function(_this){return function(){return body.find(selector).removeClass("active").addClass("inactive"),delete _this.tsem}}(this)),el.on("click",".icon-delete",function(){return function(){return body.find(selector).removeClass("active").addClass("inactive")}}(this)))},ConfirmService}(taiga.Service),module=angular.module("taigaCommon"),module.service("$tgConfirm",ConfirmService)}.call(this),function(){var CustomAttributeValueDirective,CustomAttributesValuesController,CustomAttributesValuesDirective,bindMethods,bindOnce,debounce,generateHash,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,bindMethods=this.taiga.bindMethods,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,generateHash=taiga.generateHash,module=angular.module("taigaCommon"),CustomAttributesValuesController=function(superClass){function CustomAttributesValuesController(scope,rootscope,repo,rs,confirm,q){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.confirm=confirm,this.q=q,bindMethods(this),this.type=null,this.objectId=null,this.projectId=null,this.customAttributes=[],this.customAttributesValues=null}return extend(CustomAttributesValuesController,superClass),CustomAttributesValuesController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$tgConfirm","$q"],CustomAttributesValuesController.prototype.initialize=function(type,objectId){return this.project=this.scope.project,this.type=type,this.objectId=objectId,this.projectId=this.scope.projectId},CustomAttributesValuesController.prototype.loadCustomAttributesValues=function(){return this.objectId?this.rs.customAttributesValues[this.type].get(this.objectId).then(function(_this){return function(customAttributesValues){return _this.customAttributes=_this.project[_this.type+"_custom_attributes"],_this.customAttributesValues=customAttributesValues,customAttributesValues}}(this)):this.customAttributesValues},CustomAttributesValuesController.prototype.getAttributeValue=function(attribute){var attributeValue;return attributeValue=_.clone(attribute,!1),attributeValue.value=this.customAttributesValues.attributes_values[attribute.id],attributeValue},CustomAttributesValuesController.prototype.updateAttributeValue=function(attributeValue){var attributesValues,onError,onSuccess;return onSuccess=function(_this){return function(){return _this.rootscope.$broadcast("custom-attributes-values:edit")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error"),_this.q.reject()}}(this),attributesValues=_.clone(this.customAttributesValues.attributes_values,!0),attributesValues[attributeValue.id]=attributeValue.value,this.customAttributesValues.attributes_values=attributesValues,this.customAttributesValues.id=this.objectId,this.repo.save(this.customAttributesValues).then(onSuccess,onError)},CustomAttributesValuesController}(taiga.Controller),CustomAttributesValuesDirective=function($templates,$storage){var collapsedHash,link,template,templateFn;return template=$templates.get("custom-attributes/custom-attributes-values.html",!0),collapsedHash=function(type){return generateHash(["custom-attributes-collapsed",type])},link=function($scope,$el,$attrs,$ctrls){var $ctrl,$model;return $ctrl=$ctrls[0],$model=$ctrls[1],bindOnce($scope,$attrs.ngModel,function(value){return $ctrl.initialize($attrs.type,value.id),$ctrl.loadCustomAttributesValues()}),$el.on("click",".custom-fields-header a",function(){var collapsed,hash;return hash=collapsedHash($attrs.type),collapsed=!$storage.get(hash),$storage.set(hash,collapsed),collapsed?($el.find(".custom-fields-header a").removeClass("open"),$el.find(".custom-fields-body").removeClass("open")):($el.find(".custom-fields-header a").addClass("open"),$el.find(".custom-fields-body").addClass("open"))}),$scope.$on("$destroy",function(){return $el.off()})},templateFn=function($el,$attrs){var collapsed;return collapsed=$storage.get(collapsedHash($attrs.type))||!1,template({requiredEditionPerm:$attrs.requiredEditionPerm,collapsed:collapsed})},{require:["tgCustomAttributesValues","ngModel"],controller:CustomAttributesValuesController,controllerAs:"ctrl",restrict:"AE",scope:!0,link:link,template:templateFn}},module.directive("tgCustomAttributesValues",["$tgTemplate","$tgStorage",CustomAttributesValuesDirective]),CustomAttributeValueDirective=function($template,$selectedText){var link,template,templateEdit;return template=$template.get("custom-attributes/custom-attribute-value.html",!0),templateEdit=$template.get("custom-attributes/custom-attribute-value-edit.html",!0),link=function($scope,$el,$attrs,$ctrl){var attributeValue,isEditable,render,saveAttributeValue,submit;return render=function(attributeValue,edit){var ctx,editable,html,value;return null==edit&&(edit=!1),value=attributeValue.value,editable=isEditable(),ctx={id:attributeValue.id,name:attributeValue.name,description:attributeValue.description,value:value,isEditable:editable},html=!editable||!edit&&value?template(ctx):templateEdit(ctx),$el.html(html)},isEditable=function(){var permissions,requiredEditionPerm;return permissions=$scope.project.my_permissions,requiredEditionPerm=$attrs.requiredEditionPerm,permissions.indexOf(requiredEditionPerm)>-1},saveAttributeValue=function(){return attributeValue.value=$el.find("input").val(),$scope.$apply(function(){return $ctrl.updateAttributeValue(attributeValue).then(function(){return render(attributeValue,!1)})})},$el.on("keyup","input[name=description]",function(event){return 13===event.keyCode?submit(event):27===event.keyCode?render(attributeValue,!1):void 0}),$el.on("click",".custom-field-value.read-mode",function(){return isEditable()&&!$selectedText.get().length?(render(attributeValue,!0),$el.find("input[name='description']").focus().select()):void 0}),$el.on("click","a.icon-edit",function(event){return event.preventDefault(),render(attributeValue,!0),$el.find("input[name='description']").focus().select()}),submit=debounce(2e3,function(){return function(event){return event.preventDefault(),saveAttributeValue()}}(this)),$el.on("submit","form",submit),$el.on("click","a.icon-floppy",submit),$scope.$on("$destroy",function(){return $el.off()}),attributeValue=$scope.$eval($attrs.tgCustomAttributeValue),render(attributeValue)},{link:link,require:"^tgCustomAttributesValues",restrict:"AE"}},module.directive("tgCustomAttributeValue",["$tgTemplate","$selectedText",CustomAttributeValueDirective])}.call(this),function(){var EstimationsService,LbUsEstimationDirective,UsEstimationDirective,groupBy,module,taiga,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,groupBy=this.taiga.groupBy,module=angular.module("taigaCommon"),LbUsEstimationDirective=function($tgEstimationsService,$rootScope,$repo,$confirm,$template){var link;return link=function($scope,$el,$attrs,$model){return $scope.$watch($attrs.ngModel,function(us){var estimationProcess;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),estimationProcess.onSelectedPointForRole=function(){return $scope.$apply(function(){return $model.$setViewValue(us)})},estimationProcess.render=function(){var ctx,html,mainTemplate,template;return ctx={totalPoints:this.calculateTotalPoints(),roles:this.calculateRoles(),editable:this.isEditable},mainTemplate="common/estimation/us-estimation-points-per-role.html",template=$template.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgLbUsEstimation",["$tgEstimationsService","$rootScope","$tgRepo","$tgConfirm","$tgTemplate",LbUsEstimationDirective]),UsEstimationDirective=function($tgEstimationsService,$rootScope,$repo,$confirm,$qqueue,$template){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.ngModel,function(us){var estimationProcess;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),estimationProcess.onSelectedPointForRole=function(roleId,pointId){return this.save(roleId,pointId).then(function(){return $rootScope.$broadcast("history:reload")})},estimationProcess.render=function(){var ctx,html,mainTemplate,template;return ctx={totalPoints:this.calculateTotalPoints(),roles:this.calculateRoles(),editable:this.isEditable},mainTemplate="common/estimation/us-estimation-points-per-role.html",template=$template.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsEstimation",["$tgEstimationsService","$rootScope","$tgRepo","$tgConfirm","$tgQqueue","$tgTemplate",UsEstimationDirective]),EstimationsService=function($template,$qqueue,$repo,$confirm,$q){var EstimationProcess,create,pointsTemplate;return pointsTemplate=$template.get("common/estimation/us-estimation-points.html",!0),EstimationProcess=function(){function EstimationProcess($el1,us1,project1){this.$el=$el1,this.us=us1,this.project=project1,this.bindClickEvents=bind(this.bindClickEvents,this),this.isEditable=-1!==this.project.my_permissions.indexOf("modify_us"),this.roles=this.project.roles,this.points=this.project.points,this.pointsById=groupBy(this.points,function(x){return x.id}),this.onSelectedPointForRole=function(){},this.render=function(){}}return EstimationProcess.prototype.save=function(){var deferred;return deferred=$q.defer(),$qqueue.add(function(_this){return function(){var onError,onSuccess;return onSuccess=function(){return deferred.resolve(),$confirm.notify("success")},onError=function(){return $confirm.notify("error"),_this.us.revert(),_this.render(),deferred.reject()},$repo.save(_this.us).then(onSuccess,onError)}}(this)),deferred.promise},EstimationProcess.prototype.calculateTotalPoints=function(){var notNullValues,values;return values=_.map(this.us.points,function(_this){return function(v){var ref;return null!=(ref=_this.pointsById[v])?ref.value:void 0}}(this)),0===values.length?"0":(notNullValues=_.filter(values,function(v){return null!=v}),0===notNullValues.length?"?":_.reduce(notNullValues,function(acc,num){return acc+num}))},EstimationProcess.prototype.calculateRoles=function(){var computableRoles,roles;return computableRoles=_.filter(this.project.roles,"computable"),roles=_.map(computableRoles,function(_this){return function(role){var pointId,pointObj;return pointId=_this.us.points[role.id],pointObj=_this.pointsById[pointId],role=_.clone(role,!0),role.points=null!=pointObj&&null!=pointObj.name?pointObj.name:"?",role}}(this))},EstimationProcess.prototype.bindClickEvents=function(){return this.$el.on("click",".total.clickable",function(_this){return function(event){var roleId,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),roleId=target.data("role-id"),_this.renderPointsSelector(roleId,target),target.siblings().removeClass("active"),target.addClass("active")}}(this)),this.$el.on("click",".point",function(_this){return function(event){var pointId,points,roleId,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),roleId=target.data("role-id"),pointId=target.data("point-id"),_this.$el.find(".popover").popover().close(),points=_.clone(_this.us.points,!0),points[roleId]=pointId,_this.us.points=points,_this.render(),_this.onSelectedPointForRole(roleId,pointId)}}(this))},EstimationProcess.prototype.renderPointsSelector=function(roleId,target){var horizontalList,html,maxPointLength,points;return points=_.map(this.points,function(_this){return function(point){return point=_.clone(point,!0),point.selected=_this.us.points[roleId]===point.id?!1:!0,point}}(this)),maxPointLength=5,horizontalList=_.some(points,function(){return function(point){return point.name.length>maxPointLength}}(this)),html=pointsTemplate({points:points,roleId:roleId,horizontal:horizontalList}),this.$el.find(".popover").popover().close(),this.$el.find(".pop-points-open").remove(),null!=target?this.$el.find(target).append(html):this.$el.append(html),this.$el.find(".pop-points-open").popover().open(function(){return $(this).removeClass("active").closest("li").removeClass("active")}),this.$el.find(".pop-points-open").show()},EstimationProcess}(),create=function($el,us,project){var estimationProcess;return estimationProcess=$el.data("estimationProcess"),estimationProcess||(estimationProcess=new EstimationProcess($el,us,project),$el.data("estimationProcess",estimationProcess)),estimationProcess.isEditable?estimationProcess.bindClickEvents():$el.unbind("click"),estimationProcess},{create:create}},module.factory("$tgEstimationsService",["$tgTemplate","$tgQqueue","$tgRepo","$tgConfirm","$q",EstimationsService])}.call(this),function(){var defaultFilter,module,momentFormat,momentFromNow,taiga,unslugify,yesNoFilter;taiga=this.taiga,module=angular.module("taigaCommon"),defaultFilter=function(){return function(value,defaultValue){return value===[null,void 0]?defaultValue:value}},module.filter("default",defaultFilter),yesNoFilter=function(){return function(value){return value?"Yes":"No"}},module.filter("yesNo",yesNoFilter),unslugify=function(){return taiga.unslugify},module.filter("unslugify",unslugify),momentFormat=function(){return function(input,format){return input?moment(input).format(format):""}},module.filter("momentFormat",momentFormat),momentFromNow=function(){return function(input,without_suffix){return input?moment(input).fromNow(without_suffix||!1):""}},module.filter("momentFromNow",momentFromNow)}.call(this),function(){var HistoryController,HistoryDirective,bindOnce,debounce,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaCommon"),HistoryController=function(superClass){function HistoryController(scope,repo,rs){this.scope=scope,this.repo=repo,this.rs=rs}return extend(HistoryController,superClass),HistoryController.$inject=["$scope","$tgRepo","$tgResources"],HistoryController.prototype.initialize=function(type,objectId){return this.type=type,this.objectId=objectId},HistoryController.prototype.loadHistory=function(type,objectId){return this.rs.history.get(type,objectId).then(function(_this){return function(history){var historyResult,i,len;for(i=0,len=history.length;len>i;i++)historyResult=history[i],null!=historyResult.values_diff.description_diff&&(historyResult.values_diff.description=historyResult.values_diff.description_diff),delete historyResult.values_diff.description_html,delete historyResult.values_diff.description_diff,null!=historyResult.values_diff.blocked_note_diff&&(historyResult.values_diff.blocked_note=historyResult.values_diff.blocked_note_diff),delete historyResult.values_diff.blocked_note_html,delete historyResult.values_diff.blocked_note_diff;return _this.scope.history=history,_this.scope.comments=_.filter(history,function(item){return""!==item.comment})}}(this))},HistoryController.prototype.deleteComment=function(type,objectId,activityId){return this.rs.history.deleteComment(type,objectId,activityId).then(function(_this){return function(){return _this.loadHistory(type,objectId)}}(this))},HistoryController.prototype.undeleteComment=function(type,objectId,activityId){return this.rs.history.undeleteComment(type,objectId,activityId).then(function(_this){return function(){return _this.loadHistory(type,objectId)}}(this))},HistoryController}(taiga.Controller),HistoryDirective=function($log,$loading,$qqueue,$template,$confirm){var link,templateActivity,templateBase,templateBaseEntries,templateChangeAttachment,templateChangeDiff,templateChangeGeneric,templateChangeList,templateChangePoints,templateDeletedComment,templateFn;return templateChangeDiff=$template.get("common/history/history-change-diff.html",!0),templateChangePoints=$template.get("common/history/history-change-points.html",!0),templateChangeGeneric=$template.get("common/history/history-change-generic.html",!0),templateChangeAttachment=$template.get("common/history/history-change-attachment.html",!0),templateChangeList=$template.get("common/history/history-change-list.html",!0),templateDeletedComment=$template.get("common/history/history-deleted-comment.html",!0),templateActivity=$template.get("common/history/history-activity.html",!0),templateBaseEntries=$template.get("common/history/history-base-entries.html",!0),templateBase=$template.get("common/history/history-base.html",!0),link=function($scope,$el,$attrs,$ctrl){var countChanges,formatChange,getHumanizedFieldName,getUserAvatar,getUserFullName,objectId,renderActivity,renderAttachmentEntry,renderChange,renderChangeEntries,renderChangeEntry,renderChangesHelperText,renderComment,renderComments,renderCustomAttributesEntry,renderHistory,save,showAllActivity,showAllComments,type; -return type=$attrs.type,objectId=null,showAllComments=!1,showAllActivity=!1,bindOnce($scope,$attrs.ngModel,function(model){return type=$attrs.type,objectId=model.id,$ctrl.initialize(type,objectId),$ctrl.loadHistory(type,objectId)}),getHumanizedFieldName=function(field){var humanizedFieldNames;return humanizedFieldNames={assigned_to:"assigned to",is_closed:"is closed",finish_date:"finish date",client_requirement:"client requirement",team_requirement:"team requirement",milestone:"sprint",user_story:"user story",is_iocaine:"is iocaine",is_deprecated:"is deprecated",blocked_note:"blocked note",is_blocked:"is blocked"},humanizedFieldNames[field]||field},getUserFullName=function(userId){var ref;return null!=(ref=$scope.usersById[userId])?ref.full_name_display:void 0},getUserAvatar=function(userId){return null!=$scope.usersById[userId]?$scope.usersById[userId].photo:"/images/unnamed.png"},countChanges=function(comment){return _.keys(comment.values_diff).length},formatChange=function(change){return _.isArray(change)?0===change.length?"empty":change.join(", "):""===change?"empty":null==change||change===!1?"no":change===!0?"yes":change},renderAttachmentEntry=function(value){var attachments;return attachments=_.map(value,function(changes,type){return"new"===type?_.map(changes,function(change){return templateChangeDiff({name:"new attachment",diff:change.filename})}):"deleted"===type?_.map(changes,function(change){return templateChangeDiff({name:"deleted attachment",diff:change.filename})}):_.map(changes,function(change){var diff,name;return name="updated attachment "+change.filename,diff=_.map(change.changes,function(values,name){return{name:getHumanizedFieldName(name),from:formatChange(values[0]),to:formatChange(values[1])}}),templateChangeAttachment({name:name,diff:diff})})}),_.flatten(attachments).join("\n")},renderCustomAttributesEntry=function(value){var customAttributes;return customAttributes=_.map(value,function(changes,type){return"new"===type?_.map(changes,function(change){return templateChangeGeneric({name:change.name,from:formatChange(""),to:formatChange(change.value)})}):"deleted"===type?_.map(changes,function(change){return templateChangeDiff({name:"deleted custom attribute",diff:change.name})}):_.map(changes,function(change){var customAttrsChanges;return customAttrsChanges=_.map(change.changes,function(values){return templateChangeGeneric({name:change.name,from:formatChange(values[0]),to:formatChange(values[1])})}),_.flatten(customAttrsChanges).join("\n")})}),_.flatten(customAttributes).join("\n")},renderChangeEntry=function(field,value){var added,from,name,removed,to;return"description"===field?templateChangeDiff({name:getHumanizedFieldName("description"),diff:value[1]}):"blocked_note"===field?templateChangeDiff({name:getHumanizedFieldName("blocked_note"),diff:value[1]}):"points"===field?templateChangePoints({points:value}):"attachments"===field?renderAttachmentEntry(value):"custom_attributes"===field?renderCustomAttributesEntry(value):"tags"===field||"watchers"===field?(name=getHumanizedFieldName(field),removed=_.difference(value[0],value[1]),added=_.difference(value[1],value[0]),templateChangeList({name:name,removed:removed,added:added})):"assigned_to"===field?(name=getHumanizedFieldName(field),from=formatChange(value[0]||"Unassigned"),to=formatChange(value[1]||"Unassigned"),templateChangeGeneric({name:name,from:from,to:to})):(name=getHumanizedFieldName(field),from=formatChange(value[0]),to=formatChange(value[1]),templateChangeGeneric({name:name,from:from,to:to}))},renderChangeEntries=function(change){return _.map(change.values_diff,function(value,field){return renderChangeEntry(field,value)})},renderChangesHelperText=function(change){var size;return size=countChanges(change),1===size?"Made "+size+" change":"Made "+size+" changes"},renderComment=function(comment){var ref,ref1,ref2;return comment.delete_comment_date||(null!=(ref=comment.delete_comment_user)?ref.name:void 0)?templateDeletedComment({deleteCommentDate:comment.delete_comment_date?moment(comment.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:comment.delete_comment_user.name,deleteComment:comment.comment_html,activityId:comment.id,canRestoreComment:comment.delete_comment_user.pk===$scope.user.id||$scope.project.my_permissions.indexOf("modify_project")>-1}):templateActivity({avatar:getUserAvatar(comment.user.pk),userFullName:comment.user.name,creationDate:moment(comment.created_at).format("DD MMM YYYY HH:mm"),comment:comment.comment_html,changesText:renderChangesHelperText(comment),changes:renderChangeEntries(comment),mode:"comment",deleteCommentDate:comment.delete_comment_date?moment(comment.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:(null!=(ref1=comment.delete_comment_user)?ref1.name:void 0)?comment.delete_comment_user.name:void 0,activityId:comment.id,canDeleteComment:comment.user.pk===(null!=(ref2=$scope.user)?ref2.id:void 0)||$scope.project.my_permissions.indexOf("modify_project")>-1})},renderChange=function(change){var ref;return templateActivity({avatar:getUserAvatar(change.user.pk),userFullName:change.user.name,creationDate:moment(change.created_at).format("DD MMM YYYY HH:mm"),comment:change.comment_html,changes:renderChangeEntries(change),changesText:"",mode:"activity",deleteCommentDate:change.delete_comment_date?moment(change.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:(null!=(ref=change.delete_comment_user)?ref.name:void 0)?change.delete_comment_user.name:void 0,activityId:change.id})},renderHistory=function(entries,totalEntries){var showMore;return showMore=entries.length===totalEntries?0:totalEntries-entries.length,templateBaseEntries({entries:entries,showMore:showMore})},renderComments=function(){var comments,html,totalComments;return comments=$scope.comments||[],totalComments=comments.length,showAllComments||(comments=_.last(comments,4)),comments=_.map(comments,function(x){return renderComment(x)}),html=renderHistory(comments,totalComments),$el.find(".comments-list").html(html)},renderActivity=function(){var changes,html,totalChanges;return changes=$scope.history||[],totalChanges=changes.length,showAllActivity||(changes=_.last(changes,4)),changes=_.map(changes,function(x){return renderChange(x)}),html=renderHistory(changes,totalChanges),$el.find(".changes-list").html(html)},save=$qqueue.bindAdd(function(){return function(target){var model,onError,onSuccess;return $scope.$broadcast("markdown-editor:submit"),$el.find(".comment-list").addClass("activeanimation"),onSuccess=function(){return $ctrl.loadHistory(type,objectId)["finally"](function(){return $loading.finish(target)})},onError=function(){return $loading.finish(target),$confirm.notify("error")},model=$scope.$eval($attrs.ngModel),$loading.start(target),$ctrl.repo.save(model).then(onSuccess,onError)}}(this)),$scope.$watch("comments",renderComments),$scope.$watch("history",renderActivity),$scope.$on("history:reload",function(){return $ctrl.loadHistory(type,objectId)}),$el.on("click",".add-comment a.button-green",debounce(2e3,function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),save(target)})),$el.on("click",".show-more",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parent().is(".changes-list")?(showAllActivity=!showAllActivity,renderActivity()):(showAllComments=!showAllComments,renderComments())}),$el.on("click",".show-deleted-comment",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parents(".activity-single").find(".hide-deleted-comment").show(),target.parents(".activity-single").find(".show-deleted-comment").hide(),target.parents(".activity-single").find(".comment-body").show()}),$el.on("click",".hide-deleted-comment",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parents(".activity-single").find(".hide-deleted-comment").hide(),target.parents(".activity-single").find(".show-deleted-comment").show(),target.parents(".activity-single").find(".comment-body").hide()}),$el.on("click",".changes-title",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parent().find(".change-entry").toggleClass("active")}),$el.on("focus",".add-comment textarea",function(){return $(this).addClass("active")}),$el.on("click",".history-tabs li a",function(){return $el.find(".history-tabs li a").toggleClass("active"),$el.find(".history section").toggleClass("hidden")}),$el.on("click",".comment-delete",debounce(2e3,function(event){var activityId,target;return event.preventDefault(),target=angular.element(event.currentTarget),activityId=target.data("activity-id"),$ctrl.deleteComment(type,objectId,activityId)})),$el.on("click",".comment-restore",debounce(2e3,function(event){var activityId,target;return event.preventDefault(),target=angular.element(event.currentTarget),activityId=target.data("activity-id"),$ctrl.undeleteComment(type,objectId,activityId)})),$scope.$on("$destroy",function(){return $el.off()})},templateFn=function($el,$attrs){return templateBase({ngmodel:$attrs.ngModel,type:$attrs.type,mode:$attrs.mode})},{controller:HistoryController,template:templateFn,restrict:"AE",link:link}},module.directive("tgHistory",["$log","$tgLoading","$tgQqueue","$tgTemplate","$tgConfirm",HistoryDirective])}.call(this),function(){var ImportProjectButtonDirective,module;module=angular.module("taigaCommon"),ImportProjectButtonDirective=function($rs,$confirm,$location,$navUrls){var link;return link=function($scope,$el){return $el.on("click",".import-project-button",function(event){return event.preventDefault(),$el.find("input.import-file").val(""),$el.find("input.import-file").trigger("click")}),$el.on("change","input.import-file",function(event){var file,loader,onError,onSuccess;return event.preventDefault(),(file=event.target.files[0])?(loader=$confirm.loader("Uploading dump file"),onSuccess=function(result){var ctx,message,title;return loader.stop(),202===result.status?(title="Our Oompa Loompas are importing your project",message="This process could take a few minutes
We will send you an email when ready",$confirm.success(title,message)):(ctx={project:result.data.slug},$location.path($navUrls.resolve("project-admin-project-profile-details",ctx)),$confirm.notify("success","Your project has been imported successfuly."))},onError=function(result){var errorMsg,ref;return loader.stop(),console.log("Error",result),errorMsg="Our oompa loompas have some problems importing your dump data. Please try again. ",429===result.status?errorMsg="Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. ":(null!=(ref=result.data)?ref._error_message:void 0)&&(errorMsg="Our oompa loompas have some problems importing your dump data: "+result.data._error_message),$confirm.notify("error",errorMsg)},loader.start(),$rs.projects["import"](file,loader.update).then(onSuccess,onError)):void 0})},{link:link}},module.directive("tgImportProjectButton",["$tgResources","$tgConfirm","$location","$tgNavUrls",ImportProjectButtonDirective])}.call(this),function(){var AssignedToLightboxDirective,BlockLightboxDirective,BlockingMessageInputDirective,CreateBulkUserstoriesDirective,CreateEditUserstoryDirective,LightboxDirective,LightboxKeyboardNavigationService,LightboxService,WatchersLightboxDirective,bindOnce,debounce,module,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;module=angular.module("taigaCommon"),bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,debounce=this.taiga.debounce,LightboxService=function(superClass){function LightboxService(animationFrame,q){this.animationFrame=animationFrame,this.q=q}return extend(LightboxService,superClass),LightboxService.prototype.open=function($el){var defered,docEl,lightboxContent;return defered=this.q.defer(),lightboxContent=$el.children().not(".close"),lightboxContent.hide(),$el.css("display","flex"),$el.find("input,textarea").first().focus(),this.animationFrame.add(function(){return function(){return $el.addClass("open")}}(this)),this.animationFrame.add(function(){return function(){return lightboxContent.show(),defered.resolve()}}(this)),docEl=angular.element(document),docEl.on("keydown.lightbox",function(_this){return function(e){var code;return code=e.keyCode?e.keyCode:e.which,27===code?_this.close($el):void 0}}(this)),defered.promise},LightboxService.prototype.close=function($el){var docEl;return docEl=angular.element(document),docEl.off(".lightbox"),docEl.off(".keyboard-navigation"),$el.one("transitionend",function(){return function(){return $el.removeAttr("style"),$el.removeClass("open").removeClass("close")}}(this)),$el.addClass("close")},LightboxService.prototype.closeAll=function(){var docEl,i,len,lightboxEl,ref,results;for(docEl=angular.element(document),ref=docEl.find(".lightbox.open"),results=[],i=0,len=ref.length;len>i;i++)lightboxEl=ref[i],results.push(this.close($(lightboxEl)));return results},LightboxService}(taiga.Service),module.service("lightboxService",["animationFrame","$q",LightboxService]),LightboxKeyboardNavigationService=function(superClass){function LightboxKeyboardNavigationService(){return LightboxKeyboardNavigationService.__super__.constructor.apply(this,arguments)}return extend(LightboxKeyboardNavigationService,superClass),LightboxKeyboardNavigationService.prototype.stop=function(){var docEl;return docEl=angular.element(document),docEl.off(".keyboard-navigation")},LightboxKeyboardNavigationService.prototype.dispatch=function($el,code){var activeElement,next,prev;if(activeElement=$el.find(".active"),13===code)return activeElement.trigger("click");if(40===code){if(!activeElement.length)return $el.find(".watcher-single:first").addClass("active");if(next=activeElement.next(".watcher-single"),next.length)return activeElement.removeClass("active"),next.addClass("active")}else if(38===code){if(!activeElement.length)return $el.find(".watcher-single:last").addClass("active");if(prev=activeElement.prev(".watcher-single"),prev.length)return activeElement.removeClass("active"),prev.addClass("active")}},LightboxKeyboardNavigationService.prototype.init=function($el){var docEl;return this.stop(),docEl=angular.element(document),docEl.on("keydown.keyboard-navigation",function(_this){return function(event){var code;return code=event.keyCode?event.keyCode:event.which,40===code||38===code||13===code?(event.preventDefault(),_this.dispatch($el,code)):void 0}}(this))},LightboxKeyboardNavigationService}(taiga.Service),module.service("lightboxKeyboardNavigationService",LightboxKeyboardNavigationService),LightboxDirective=function(lightboxService){var link;return link=function($scope,$el){return $el.on("click",".close",function(event){return event.preventDefault(),lightboxService.close($el)})},{restrict:"C",link:link}},module.directive("lightbox",["lightboxService",LightboxDirective]),BlockLightboxDirective=function($rootscope,$tgrepo,$confirm,lightboxService,$loading,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var block,unblock;return $el.find("h2.title").text($attrs.title),unblock=$qqueue.bindAdd(function(){return function(item,finishCallback){var promise;return promise=$tgrepo.save(item),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload"),$model.$setViewValue(item),finishCallback()}),promise.then(null,function(){return $confirm.notify("error"),item.revert(),$model.$setViewValue(item)}),promise["finally"](function(){return finishCallback()}),promise}}(this)),block=$qqueue.bindAdd(function(){return function(item){var promise;return $model.$setViewValue(item),$loading.start($el.find(".button-green")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $confirm.notify("error"),item.revert(),$model.$setViewValue(item)}),promise["finally"](function(){return $loading.finish($el.find(".button-green")),lightboxService.close($el)})}}(this)),$scope.$on("block",function(){return $el.find(".reason").val($model.$modelValue.blocked_note),lightboxService.open($el)}),$scope.$on("unblock",function(){return function(event,model,finishCallback){var item;return item=$model.$modelValue.clone(),item.is_blocked=!1,item.blocked_note="",unblock(item,finishCallback)}}(this)),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click",".button-green",function(event){var item;return event.preventDefault(),item=$model.$modelValue.clone(),item.is_blocked=!0,item.blocked_note=$el.find(".reason").val(),block(item)})},{templateUrl:"common/lightbox/lightbox-block.html",link:link,require:"ngModel"}},module.directive("tgLbBlock",["$rootScope","$tgRepo","$tgConfirm","lightboxService","$tgLoading","$tgQqueue",BlockLightboxDirective]),BlockingMessageInputDirective=function($log,$template){var link,template,templateFn;return template=$template.get("common/lightbox/lightbox-blocking-message-input.html",!0),link=function($scope,$el,$attrs){return $attrs.watch?$scope.$watch($attrs.watch,function(value){return value===!0&&value===!0?$el.find(".blocked-note").removeClass("hidden"):$el.find(".blocked-note").addClass("hidden")}):$log.error("No watch attribute on tg-blocking-message-input directive")},templateFn=function($el,$attrs){return template({ngmodel:$attrs.ngModel})},{template:templateFn,link:link,require:"ngModel",restrict:"EA"}},module.directive("tgBlockingMessageInput",["$log","$tgTemplate",BlockingMessageInputDirective]),CreateEditUserstoryDirective=function($repo,$model,$rs,$rootScope,lightboxService,$loading){var link;return link=function($scope,$el){var submit,submitButton;return $scope.isNew=!0,$scope.$on("usform:new",function(ctx,projectId,status,statusList){return $scope.isNew=!0,$scope.usStatusList=statusList,$scope.us=$model.make_model("userstories",{project:projectId,points:{},status:status,is_archived:!1,tags:[]}),$el.find(".button-green").html("Create"),$el.find(".title").html("New user story "),$el.find(".tag-input").val(""),$el.find(".blocked-note").addClass("hidden"),$el.find("label.blocked").removeClass("selected"),$el.find("label.team-requirement").removeClass("selected"),$el.find("label.client-requirement").removeClass("selected"),lightboxService.open($el)}),$scope.$on("usform:edit",function(ctx,us){return $scope.us=us,$scope.isNew=!1,$el.find(".button-green").html("Save"),$el.find(".title").html("Edit user story "),$el.find(".tag-input").val(""),us.is_blocked?($el.find(".blocked-note").removeClass("hidden"),$el.find("label.blocked").addClass("selected")):($el.find(".blocked-note").addClass("hidden"),$el.find("label.blocked").removeClass("selected")),us.team_requirement?$el.find("label.team-requirement").addClass("selected"):$el.find("label.team-requirement").removeClass("selected"),us.client_requirement?$el.find("label.client-requirement").addClass("selected"):$el.find("label.client-requirement").removeClass("selected"),lightboxService.open($el)}),submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),$scope.isNew?(promise=$repo.create("userstories",$scope.us),broadcastEvent="usform:new:success"):(promise=$repo.save($scope.us),broadcastEvent="usform:edit:success"),promise.then(function(data){return $loading.finish(submitButton),lightboxService.close($el),$rootScope.$broadcast(broadcastEvent,data)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".close",function(event){return event.preventDefault(),$scope.$apply(function(){return $scope.us.revert()}),lightboxService.close($el)}),$el.keydown(function(event){var code;return code=event.keyCode?event.keyCode:event.which,27===code?(lightboxService.close($el),$scope.$apply(function(){return $scope.us.revert()})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateEditUserstory",["$tgRepo","$tgModel","$tgResources","$rootScope","lightboxService","$tgLoading",CreateEditUserstoryDirective]),CreateBulkUserstoriesDirective=function($repo,$rs,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var submit,submitButton;return $scope.$on("usform:bulk",function(ctx,projectId,status){return $scope["new"]={projectId:projectId,statusId:status,bulk:""},lightboxService.open($el)}),submit=debounce(2e3,function(){return function(event){var form,promise;return event.preventDefault(),form=$el.find("form").checksley({onlyOneErrorElement:!0}),form.validate()?($loading.start(submitButton),promise=$rs.userstories.bulkCreate($scope["new"].projectId,$scope["new"].statusId,$scope["new"].bulk),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("usform:bulk:success",result),lightboxService.close($el)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateBulkUserstories",["$tgRepo","$tgResources","$rootScope","lightboxService","$tgLoading",CreateBulkUserstoriesDirective]),AssignedToLightboxDirective=function(lightboxService,lightboxKeyboardNavigationService,$template){var link;return link=function($scope,$el){var closeLightbox,filterUsers,normalizeString,render,selectedItem,selectedUser,usersTemplate;return selectedUser=null,selectedItem=null,usersTemplate=$template.get("common/lightbox/lightbox-assigned-to-users.html",!0),normalizeString=function(string){var normalizedString;return normalizedString=string,normalizedString=normalizedString.replace("Á","A").replace("Ä","A").replace("À","A"),normalizedString=normalizedString.replace("É","E").replace("Ë","E").replace("È","E"),normalizedString=normalizedString.replace("Í","I").replace("Ï","I").replace("Ì","I"),normalizedString=normalizedString.replace("Ó","O").replace("Ö","O").replace("Ò","O"),normalizedString=normalizedString.replace("Ú","U").replace("Ü","U").replace("Ù","U")},filterUsers=function(text,user){var username;return username=user.full_name_display.toUpperCase(),username=normalizeString(username),text=text.toUpperCase(),text=normalizeString(text),_.contains(username,text)},render=function(selected,text){var ctx,html,users;return users=_.clone($scope.activeUsers,!0),null!=selected&&(users=_.reject(users,{id:selected.id})),null!=text&&(users=_.filter(users,_.partial(filterUsers,text))),ctx={selected:selected,users:_.first(users,5),showMore:users.length>5},html=usersTemplate(ctx),$el.find("div.watchers").html(html),lightboxKeyboardNavigationService.init($el)},closeLightbox=function(){return lightboxKeyboardNavigationService.stop(),lightboxService.close($el)},$scope.$on("assigned-to:add",function(ctx,item){var assignedToId;return selectedItem=item,assignedToId=item.assigned_to,selectedUser=$scope.usersById[assignedToId],render(selectedUser),lightboxService.open($el).then(function(){return $el.find("input").focus()})}),$scope.$watch("usersSearch",function(searchingText){return null!=searchingText?(render(selectedUser,searchingText),$el.find("input").focus()):void 0}),$el.on("click",".watcher-single",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),closeLightbox(),$scope.$apply(function(){return $scope.$broadcast("assigned-to:added",target.data("user-id"),selectedItem),$scope.usersSearch=null})}),$el.on("click",".remove-assigned-to",function(event){return event.preventDefault(),event.stopPropagation(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null,$scope.$broadcast("assigned-to:added",null,selectedItem)})}),$el.on("click",".close",function(event){return event.preventDefault(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"common/lightbox/lightbox-assigned-to.html",link:link}},module.directive("tgLbAssignedto",["lightboxService","lightboxKeyboardNavigationService","$tgTemplate",AssignedToLightboxDirective]),WatchersLightboxDirective=function($repo,lightboxService,lightboxKeyboardNavigationService,$template){var link;return link=function($scope,$el){var closeLightbox,getFilteredUsers,render,selectedItem,usersTemplate;return selectedItem=null,usersTemplate=$template.get("common/lightbox/lightbox-assigned-to-users.html",!0),getFilteredUsers=function(text){var _filterUsers,users;return null==text&&(text=""),_filterUsers=function(text,user){var username;return selectedItem&&_.find(selectedItem.watchers,function(x){return x===user.id})?!1:(username=user.full_name_display.toUpperCase(),text=text.toUpperCase(),_.contains(username,text))},users=_.clone($scope.activeUsers,!0),users=_.filter(users,_.partial(_filterUsers,text))},render=function(users){var ctx,html;return ctx={selected:!1,users:_.first(users,5),showMore:users.length>5},html=usersTemplate(ctx),$el.find("div.watchers").html(html)},closeLightbox=function(){return lightboxKeyboardNavigationService.stop(),lightboxService.close($el)},$scope.$on("watcher:add",function(ctx,item){var users;return selectedItem=item,users=getFilteredUsers(),render(users),lightboxService.open($el).then(function(){return $el.find("input").focus()}),lightboxKeyboardNavigationService.init($el)}),$scope.$watch("usersSearch",function(searchingText){var users;if(null!=searchingText)return users=getFilteredUsers(searchingText),render(users),$el.find("input").focus()}),$el.on("click",".watcher-single",debounce(2e3,function(event){var target;return closeLightbox(),event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $scope.usersSearch=null,$scope.$broadcast("watcher:added",target.data("user-id"))})})),$el.on("click",".close",function(event){return event.preventDefault(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"common/lightbox/lightbox-users.html",link:link}},module.directive("tgLbWatchers",["$tgRepo","lightboxService","lightboxKeyboardNavigationService","$tgTemplate",WatchersLightboxDirective])}.call(this),function(){var Loader,LoaderDirective,module,sizeFormat,taiga,timeout;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,timeout=this.taiga.timeout,module=angular.module("taigaCommon"),LoaderDirective=function(tgLoader,$rootscope){var link;return link=function($scope,$el){return tgLoader.onStart(function(){return $(document.body).addClass("loader-active"),$el.addClass("active")}),tgLoader.onEnd(function(){return $(document.body).removeClass("loader-active"),$el.removeClass("active")}),$rootscope.$on("$routeChangeSuccess",function(){return tgLoader.startCurrentPageLoader()}),$rootscope.$on("$locationChangeSuccess",function(){return tgLoader.reset()})},{link:link}},module.directive("tgLoader",["tgLoader","$rootScope",LoaderDirective]),Loader=function(){var config,defaultConfig,forceDisabled;forceDisabled=!1,defaultConfig={enabled:!1,minTime:300},config=_.merge({},defaultConfig),this.add=function(){return function(){return forceDisabled?void 0:config.enabled=!0}},this.$get=["$rootScope",function($rootscope){var pageLoaded,reset,start,startLoadTime;return startLoadTime=0,reset=function(){return config=_.merge({},defaultConfig)},pageLoaded=function(force){var diff,endTime,timeoutValue;return null==force&&(force=!1),startLoadTime?(timeoutValue=0,force||(endTime=(new Date).getTime(),diff=endTime-startLoadTime,diff"))},TgLoadingService.prototype.finish=function(target){var oldContent;return target.hasClass("loading")?(oldContent=target.data("loading-old-content"),target.data("loading-old-content",null),target.html(oldContent),target.removeClass("loading")):void 0},TgLoadingService}(taiga.Service),module.service("$tgLoading",TgLoadingService)}.call(this),function(){var RelatedTaskStatusDirective,UsStatusDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaCommon"),UsStatusDirective=function($repo,$template){var link,template;return template=$template.get("common/popover/popover-us-status.html",!0),link=function($scope,$el,$attrs){var $ctrl,render,us;return $ctrl=$el.controller(),render=function(us){var usStatusById,usStatusDom,usStatusDomParent;return usStatusDomParent=$el.find(".us-status"),usStatusDom=$el.find(".us-status .us-status-bind"),usStatusById=$scope.usStatusById,usStatusById[us.status]?(usStatusDom.text(usStatusById[us.status].name),usStatusDomParent.css("color",usStatusById[us.status].color)):void 0},$el.on("click",".us-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",debounce(2e3,function(event){var target,us;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),us=$scope.$eval($attrs.tgUsStatus),us.status=target.data("status-id"),render(us),$el.find(".pop-status").popover().close(),$scope.$apply(function(){return $repo.save(us).then(function(){return $scope.$eval($attrs.onUpdate)})})})),$scope.$on("userstories:loaded",function(){return render($scope.$eval($attrs.tgUsStatus))}),$scope.$on("$destroy",function(){return $el.off()}),us=$scope.$eval($attrs.tgUsStatus),render(us),bindOnce($scope,"project",function(project){var html;return html=template({statuses:project.us_statuses}),$el.append(html),-1===$scope.project.my_permissions.indexOf("modify_us")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0})},{link:link}},module.directive("tgUsStatus",["$tgRepo","$tgTemplate",UsStatusDirective]),RelatedTaskStatusDirective=function($repo,$template){var link,selectionTemplate,updateTaskStatus;return selectionTemplate=$template.get("common/popover/popover-related-task-status.html",!0),updateTaskStatus=function($el,task,taskStatusById){var taskStatusDom,taskStatusDomParent; -return taskStatusDomParent=$el.find(".us-status"),taskStatusDom=$el.find(".task-status .task-status-bind"),taskStatusById[task.status]?(taskStatusDom.text(taskStatusById[task.status].name),taskStatusDomParent.css("color",taskStatusById[task.status].color)):void 0},link=function($scope,$el,$attrs){var $ctrl,autoSave,notAutoSave,task;return $ctrl=$el.controller(),task=$scope.$eval($attrs.tgRelatedTaskStatus),notAutoSave=$scope.$eval($attrs.notAutoSave),autoSave=!notAutoSave,$el.on("click",".task-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",debounce(2e3,function(event){var target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),task.status=target.data("status-id"),$el.find(".pop-status").popover().close(),updateTaskStatus($el,task,$scope.taskStatusById),autoSave?$scope.$apply(function(){return $repo.save(task).then(function(){return $scope.$eval($attrs.onUpdate),$scope.$emit("related-tasks:status-changed")})}):void 0})),taiga.bindOnce($scope,"project",function(project){return $el.append(selectionTemplate({statuses:project.task_statuses})),updateTaskStatus($el,task,$scope.taskStatusById),-1===project.my_permissions.indexOf("modify_task")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskStatus",["$tgRepo","$tgTemplate",RelatedTaskStatusDirective]),$.fn.popover=function(){var $el,close,closeAll,closePopover,isVisible,open;return $el=this,isVisible=function(){return function(){var docViewBottom,docViewLeft,docViewRight,docViewTop,docViewWidth,elemBottom,elemLeft,elemRight,elemTop,elemWidth;return $el.css({display:"block",visibility:"hidden"}),docViewTop=$(window).scrollTop(),docViewBottom=docViewTop+$(window).height(),docViewWidth=$(window).width(),docViewRight=docViewWidth,docViewLeft=0,elemTop=$el.offset().top,elemBottom=elemTop+$el.height(),elemWidth=$el.width(),elemLeft=$el.offset().left,elemRight=$el.offset().left+elemWidth,$el.css({display:"none",visibility:"visible"}),docViewBottom>=elemBottom&&elemTop>=docViewTop&&elemLeft>=docViewLeft&&docViewRight>=elemRight}}(this),closePopover=function(){return function(onClose){return onClose&&onClose.call($el),$el.fadeOut(function(){return $el.removeClass("active").removeClass("fix")}),$el.off("popup:close")}}(this),closeAll=function(){return function(){return $(".popover.active").each(function(){return $(this).trigger("popup:close")})}}(this),open=function(){return function(onClose){return $el.hasClass("active")?close():(closeAll(),isVisible()||$el.addClass("fix"),$el.fadeIn(function(){return $el.addClass("active"),$(document.body).off("popover"),$(document.body).one("click.popover",function(){return closeAll()})}),$el.on("popup:close",function(){return closePopover(onClose)}))}}(this),close=function(){return function(){return $el.trigger("popup:close")}}(this),{open:open,close:close,closeAll:closeAll}}}.call(this),function(){var ExceptionHandlerFactory,module,taiga;taiga=this.taiga,module=angular.module("taigaCommon"),ExceptionHandlerFactory=function($log,config){var ravenConfig;return this.config=config,ravenConfig=this.config.get("ravenConfig",null),ravenConfig?($log.debug("Using the RavenJS exception handler."),Raven.config(ravenConfig).install(),function(exception){return $log.error.apply($log,arguments),Raven.captureException(exception)}):($log.debug("Using the default logging exception handler."),function(){return $log.error.apply($log,arguments)})},module.factory("$exceptionHandler",["$log","$tgConfig",ExceptionHandlerFactory])}.call(this),function(){var ColorizeTagsDirective,LbTagLineDirective,TagLineDirective,TagsDirective,bindOnce,module,taiga,trim,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,module=angular.module("taigaCommon"),TagsDirective=function(){var formatter,link,parser;return formatter=function(v){return _.isArray(v)?v.join(", "):""},parser=function(v){var result;return v?(result=_(v.split(",")).map(function(x){return _.str.trim(x)}),result.value()):[]},link=function($scope,$el,$attrs,$ctrl){return $ctrl.$formatters.push(formatter),$ctrl.$parsers.push(parser),$scope.$on("$destroy",function(){return $el.off()})},{require:"ngModel",link:link}},module.directive("tgTags",TagsDirective),ColorizeTagsDirective=function(){var link,templates;return templates={backlog:_.template('<% _.each(tags, function(tag) { %>\n <%- tag.name %>\n<% }) %>'),kanban:_.template('<% _.each(tags, function(tag) { %>\n \n<% }) %>'),taskboard:_.template('<% _.each(tags, function(tag) { %>\n \n<% }) %>')},link=function($scope,$el,$attrs){var render;return render=function(srcTags){var html,tags,template;return template=templates[$attrs.tgColorizeTagsType],srcTags.sort(),tags=_.map(srcTags,function(tag){var color;return color=$scope.project.tags_colors[tag],{name:tag,color:color}}),html=template({tags:tags}),$el.html(html)},$scope.$watch($attrs.tgColorizeTags,function(tags){return null!=tags?render(tags):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgColorizeTags",ColorizeTagsDirective),LbTagLineDirective=function($rs,$template){var COMMA_KEY,ENTER_KEY,link,templateTags;return ENTER_KEY=13,COMMA_KEY=188,templateTags=$template.get("common/tag/lb-tag-line-tags.html",!0),link=function($scope,$el,$attrs,$model){var addValue,deleteValue,hideSaveButton,removeInputLastCharacter,renderTags,resetInput,saveInputTag,showSaveButton;return renderTags=function(tags,tagsColors){var ctx,html;return ctx={tags:_.map(tags,function(t){return{name:t,color:tagsColors[t]}})},_.map(ctx.tags,function(){return function(tag){return tag.color?tag.style="border-left: 5px solid "+tag.color:void 0}}(this)),html=templateTags(ctx),$el.find("div.tags-container").html(html)},showSaveButton=function(){return $el.find(".save").removeClass("hidden")},hideSaveButton=function(){return $el.find(".save").addClass("hidden")},resetInput=function(){return $el.find("input").val(""),$el.find("input").autocomplete("close")},addValue=function(value){var tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue,!1),null==tags&&(tags=[]),indexOf.call(tags,value)<0&&tags.push(value),$scope.$apply(function(){return $model.$setViewValue(tags)}),hideSaveButton()):void 0},deleteValue=function(value){var tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue,!1),tags=_.pull(tags,value),$scope.$apply(function(){return $model.$setViewValue(tags)})):void 0},saveInputTag=function(){var value;return value=$el.find("input").val(),addValue(value),resetInput()},removeInputLastCharacter=function(){return function(input){var inputValue;return inputValue=input.val(),input.val(inputValue.substring(0,inputValue.length-1))}}(this),$el.on("keypress","input",function(event){return event.keyCode===ENTER_KEY?event.preventDefault():void 0}),$el.on("keyup","input",function(event){var target;return target=angular.element(event.currentTarget),event.keyCode===ENTER_KEY?saveInputTag():event.keyCode===COMMA_KEY?(removeInputLastCharacter(target),saveInputTag()):target.val().length?showSaveButton():hideSaveButton()}),$el.on("click",".save",function(event){return event.preventDefault(),saveInputTag()}),$el.on("click",".icon-delete",function(event){var target,value;return event.preventDefault(),target=angular.element(event.currentTarget),value=target.siblings(".tag-name").text(),deleteValue(value)}),bindOnce($scope,"project",function(project){var positioningFunction;return positioningFunction=function(position,elements){var menu;return menu=elements.element.element,menu.css("width",elements.target.width),menu.css("top",position.top),menu.css("left",position.left)},$el.find("input").autocomplete({source:_.keys(project.tags_colors),position:{my:"left top",using:positioningFunction},select:function(event,ui){return addValue(ui.item.value),ui.item.value=""}})}),$scope.$watch($attrs.ngModel,function(tags){var ref,tagsColors;return tagsColors=(null!=(ref=$scope.project)?ref.tags_colors:void 0)||[],renderTags(tags,tagsColors)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel",templateUrl:"common/tag/lb-tag-line.html"}},module.directive("tgLbTagLine",["$tgResources","$tgTemplate",LbTagLineDirective]),TagLineDirective=function($rootScope,$repo,$rs,$confirm,$qqueue,$template){var COMMA_KEY,ENTER_KEY,ESC_KEY,link,templateTags;return ENTER_KEY=13,ESC_KEY=27,COMMA_KEY=188,templateTags=$template.get("common/tag/tags-line-tags.html",!0),link=function($scope,$el,$attrs,$model){var addValue,deleteValue,hideAddTagButton,hideAddTagButtonText,hideInput,hideSaveButton,isEditable,removeInputLastCharacter,renderInReadModeOnly,renderTags,resetInput,saveInputTag,showAddTagButton,showAddTagButtonText,showInput,showSaveButton;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf($attrs.requiredPerm)},renderTags=function(tags,tagsColors){var ctx,html;return ctx={tags:_.map(tags,function(t){return{name:t,color:tagsColors[t]}}),isEditable:isEditable()},html=templateTags(ctx),$el.find("div.tags-container").html(html)},renderInReadModeOnly=function(){return $el.find(".add-tag").remove(),$el.find("input").remove(),$el.find(".save").remove()},showAddTagButton=function(){return $el.find(".add-tag").removeClass("hidden")},hideAddTagButton=function(){return $el.find(".add-tag").addClass("hidden")},showAddTagButtonText=function(){return $el.find(".add-tag-text").removeClass("hidden")},hideAddTagButtonText=function(){return $el.find(".add-tag-text").addClass("hidden")},showSaveButton=function(){return $el.find(".save").removeClass("hidden")},hideSaveButton=function(){return $el.find(".save").addClass("hidden")},showInput=function(){return $el.find("input").removeClass("hidden").focus()},hideInput=function(){return $el.find("input").addClass("hidden").blur()},resetInput=function(){return $el.find("input").val(""),$el.find("input").autocomplete("close")},addValue=$qqueue.bindAdd(function(value){var model,onError,onSuccess,tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue.tags,!1),null==tags&&(tags=[]),indexOf.call(tags,value)<0&&tags.push(value),model=$model.$modelValue.clone(),model.tags=tags,$model.$setViewValue(model),onSuccess=function(){return $rootScope.$broadcast("history:reload")},onError=function(){return $confirm.notify("error"),model.revert(),$model.$setViewValue(model)},$repo.save(model).then(onSuccess,onError),hideSaveButton()):void 0}),deleteValue=$qqueue.bindAdd(function(value){var model,onError,onSuccess,tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue.tags,!1),tags=_.pull(tags,value),model=$model.$modelValue.clone(),model.tags=tags,$model.$setViewValue(model),onSuccess=function(){return $rootScope.$broadcast("history:reload")},onError=function(){return $confirm.notify("error"),model.revert(),$model.$setViewValue(model)},$repo.save(model).then(onSuccess,onError)):void 0}),saveInputTag=function(){var value;return value=$el.find("input").val(),addValue(value),resetInput()},removeInputLastCharacter=function(){return function(input){var inputValue;return inputValue=input.val(),input.val(inputValue.substring(0,inputValue.length-1))}}(this),$el.on("keypress","input",function(event){var ref;if((ref=event.keyCode)===ENTER_KEY||ref===ESC_KEY)return event.preventDefault()}),$el.on("keyup","input",function(event){var target;return target=angular.element(event.currentTarget),event.keyCode===ENTER_KEY?saveInputTag():event.keyCode===COMMA_KEY?(removeInputLastCharacter(target),saveInputTag()):event.keyCode===ESC_KEY?(resetInput(),hideInput(),hideSaveButton(),showAddTagButton()):target.val().length?showSaveButton():hideSaveButton()}),$el.on("click",".save",function(event){return event.preventDefault(),saveInputTag()}),$el.on("click",".add-tag",function(event){return event.preventDefault(),hideAddTagButton(),showInput()}),$el.on("click",".icon-delete",function(event){var target,value;return event.preventDefault(),target=angular.element(event.currentTarget),value=target.siblings(".tag-name").text(),deleteValue(value)}),bindOnce($scope,"project",function(project){var positioningFunction;return isEditable()?(showAddTagButton(),positioningFunction=function(position,elements){var menu;return menu=elements.element.element,menu.css("width",elements.target.width),menu.css("top",position.top),menu.css("left",position.left)},$el.find("input").autocomplete({source:_.keys(project.tags_colors),position:{my:"left top",using:positioningFunction},select:function(event,ui){return addValue(ui.item.value),ui.item.value=""}})):void renderInReadModeOnly()}),$scope.$watch($attrs.ngModel,function(model){var ref,ref1,tagsColors;if(model)return(null!=(ref=model.tags)?ref.length:void 0)?hideAddTagButtonText():showAddTagButtonText(),tagsColors=(null!=(ref1=$scope.project)?ref1.tags_colors:void 0)||[],renderTags(model.tags,tagsColors)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel",templateUrl:"common/tag/tag-line.html"}},module.directive("tgTagLine",["$rootScope","$tgRepo","$tgResources","$tgConfirm","$tgQqueue","$tgTemplate",TagLineDirective])}.call(this),function(){var bindOnce,module,taiga,tgMarkitupDirective,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,bindOnce=this.taiga.bindOnce,module=angular.module("taigaCommon"),tgMarkitupDirective=function($rootscope,$rs,$tr,$selectedText,$template){var link,previewTemplate;return previewTemplate=$template.get("common/wysiwyg/wysiwyg-markitup-preview.html",!0),link=function($scope,$el,$attrs,$model){var addLine,closePreviewMode,element,markdownSettings,markdownTitle,prepareUrlFormatting,preview,previewDomNode,setCaretPosition,urlFormatting;return element=angular.element($el),previewDomNode=$("
",{"class":"preview"}),closePreviewMode=function(){return element.parents(".markdown").find(".preview").remove(),element.parents(".markItUp").show()},$scope.$on("markdown-editor:submit",function(){return closePreviewMode()}),preview=function(){var markItUpDomNode,markdownDomNode;return markdownDomNode=element.parents(".markdown"),markItUpDomNode=element.parents(".markItUp"),$rs.mdrender.render($scope.projectId,$model.$modelValue).then(function(data){var markdown;return markdownDomNode.append(previewTemplate({data:data.data})),markItUpDomNode.hide(),markdown=element.closest(".markdown"),markdown.on("mouseup.preview",".preview",function(event){var target;return event.preventDefault(),target=angular.element(event.target),target.is("a")||!$selectedText.get().length?(markdown.off(".preview"),closePreviewMode()):void 0})})},setCaretPosition=function(textarea,caretPosition){var line,range,scrollRelation,totalLines;return textarea.createTextRange?(range=textarea.createTextRange(),range.move("character",caretPosition),range.select()):textarea.selectionStart&&(textarea.focus(),textarea.setSelectionRange(caretPosition,caretPosition)),totalLines=textarea.value.split("\n").length,line=textarea.value.slice(0,+(caretPosition-1)+1||9e9).split("\n").length,scrollRelation=line/totalLines,$el.scrollTop(scrollRelation*$el[0].scrollHeight-$el.height()/2)},addLine=function(textarea,nline,replace){var cursorPosition,j,key,len,line,lines;for(lines=textarea.value.split("\n"),lines[nline]=replace?replace+lines[nline]:"",cursorPosition=0,key=j=0,len=lines.length;len>j&&(line=lines[key],cursorPosition+=line.length+1||1,key!==nline);key=++j);return textarea.value=lines.join("\n"),replace?cursorPosition-lines[nline].length+replace.length-1:cursorPosition},markdownSettings={nameSpace:"markdown",onShiftEnter:{keepDefault:!1,openWith:"\n\n"},onEnter:{keepDefault:!1,replaceWith:function(){return"\n"},afterInsert:function(data){var cursorLine,emptyListItem,lastLine,lines,markdownCaretPositon,match,newLineContent;return lines=data.textarea.value.split("\n"),cursorLine=data.textarea.value.slice(0,+(data.caretPosition-1)+1||9e9).split("\n").length,newLineContent=data.textarea.value.slice(data.caretPosition).split("\n")[0],lastLine=lines[cursorLine-1],match=lastLine.match(/^(\s*- ).*/),match&&(emptyListItem=lastLine.match(/^(\s*)\-\s$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,""+match[1])),match=lastLine.match(/^(\s*\* ).*/),match&&(emptyListItem=lastLine.match(/^(\s*\* )$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,""+match[1])),match=lastLine.match(/^(\s*)(\d+)\.\s/),match&&(emptyListItem=lastLine.match(/^(\s*)(\d+)\.\s$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,match[1]+(parseInt(match[2],10)+1)+". ")),markdownCaretPositon?setCaretPosition(data.textarea,markdownCaretPositon):void 0}},markupSet:[{name:$tr.t("markdown-editor.heading-1"),key:"1",placeHolder:$tr.t("markdown-editor.placeholder"),closeWith:function(markItUp){return markdownTitle(markItUp,"=")}},{name:$tr.t("markdown-editor.heading-2"),key:"2",placeHolder:$tr.t("markdown-editor.placeholder"),closeWith:function(markItUp){return markdownTitle(markItUp,"-")}},{name:$tr.t("markdown-editor.heading-3"),key:"3",openWith:"### ",placeHolder:$tr.t("markdown-editor.placeholder")},{separator:"---------------"},{name:$tr.t("markdown-editor.bold"),key:"B",openWith:"**",closeWith:"**"},{name:$tr.t("markdown-editor.italic"),key:"I",openWith:"_",closeWith:"_"},{name:$tr.t("markdown-editor.strike"),key:"S",openWith:"~~",closeWith:"~~"},{separator:"---------------"},{name:$tr.t("markdown-editor.bulleted-list"),openWith:"- "},{name:$tr.t("markdown-editor.numeric-list"),openWith:function(markItUp){return markItUp.line+". "}},{separator:"---------------"},{name:$tr.t("markdown-editor.picture"),key:"P",replaceWith:'![[![Alternative text]!]](<<<[![Url:!:http://]!]>>> "[![Title]!]")',beforeInsert:function(markItUp){return prepareUrlFormatting(markItUp)},afterInsert:function(markItUp){return urlFormatting(markItUp)}},{name:$tr.t("markdown-editor.link"),key:"L",openWith:"[",closeWith:'](<<<[![Url:!:http://]!]>>> "[![Title]!]")',placeHolder:$tr.t("markdown-editor.link-placeholder"),beforeInsert:function(markItUp){return prepareUrlFormatting(markItUp)},afterInsert:function(markItUp){return urlFormatting(markItUp)}},{separator:"---------------"},{name:$tr.t("markdown-editor.quotes"),openWith:"> "},{name:$tr.t("markdown-editor.code-block"),openWith:"```\n",closeWith:"\n```"},{separator:"---------------"},{name:$tr.t("markdown-editor.preview"),call:preview,className:"preview-icon"}],afterInsert:function(event){var target;return target=angular.element(event.textarea),$model.$setViewValue(target.val())}},prepareUrlFormatting=function(markItUp){var indices,regex,result;for(console.log(markItUp),regex=/(<<<|>>>)/gi,result=0,indices=[];result=regex.exec(markItUp.textarea.value);)indices.push(result.index);return markItUp.donotparse=indices,console.log(indices)},urlFormatting=function(markItUp){var endIndex,ref,ref1,regex,result,startIndex,url,value;for(console.log(markItUp.donotparse),regex=/<<>>/gi,endIndex=0;;){if(result=regex.exec(markItUp.textarea.value),!result)break;if(ref1=result.index,indexOf.call(markItUp.donotparse,ref1)<0){endIndex=result.index;break}}return value=markItUp.textarea.value,url=value.substring(startIndex,endIndex).replace("<<<","").replace(">>>",""),url=url.replace("(","%28").replace(")","%29"),url=url.replace("[","%5B").replace("]","%5D"),value=value.substring(0,startIndex)+url+value.substring(endIndex+3,value.length),markItUp.textarea.value=value,markItUp.donotparse=void 0},markdownTitle=function(markItUp,char){var heading,i,j,n,ref;for(heading="",n=$.trim(markItUp.selection||markItUp.placeHolder).length,i=j=0,ref=n-1;ref>=0?ref>=j:j>=ref;i=ref>=0?++j:--j)heading+=char;return"\n"+heading+"\n"},element.markItUp(markdownSettings),element.on("keypress",function(){return $scope.$apply()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgMarkitup",["$rootScope","$tgResources","$tgI18n","$selectedText","$tgTemplate",tgMarkitupDirective])}.call(this),function(){var BacklogFiltersDirective,bindOnce,debounceLeading,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,debounceLeading=this.taiga.debounceLeading,module=angular.module("taigaBacklog"),BacklogFiltersDirective=function($log,$location,$templates){var link,template,templateSelected;return template=$templates.get("backlog/filters.html",!0),templateSelected=$templates.get("backlog/filter-selected.html",!0),link=function($scope,$el){var $ctrl,initializeSelectedFilters,renderFilters,renderSelectedFilters,selectQFilter,selectedFilters,showCategories,showFilters,toggleFilterSelection;return $ctrl=$el.closest(".wrapper").controller(),selectedFilters=[],showFilters=function(title,type){return $el.find(".filters-cats").hide(),$el.find(".filter-list").removeClass("hidden"),$el.find("h2.breadcrumb").removeClass("hidden"),$el.find("h2 a.subfilter span.title").html(title),$el.find("h2 a.subfilter span.title").prop("data-type",type)},showCategories=function(){return $el.find(".filters-cats").show(),$el.find(".filter-list").addClass("hidden"),$el.find("h2.breadcrumb").addClass("hidden")},initializeSelectedFilters=function(filters){var i,len,name,val,values;showCategories(),selectedFilters=[];for(name in filters)for(values=filters[name],i=0,len=values.length;len>i;i++)val=values[i],val.selected&&selectedFilters.push(val);return renderSelectedFilters()},renderSelectedFilters=function(){var html;return _.map(selectedFilters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=templateSelected({filters:selectedFilters}),$el.find(".filters-applied").html(html)},renderFilters=function(filters){var html;return _.map(filters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=template({filters:filters}),$el.find(".filter-list").html(html)},toggleFilterSelection=function(type,id){var currentFiltersType,filter,filters;return filters=$scope.filters[type],filter=_.find(filters,{id:taiga.toString(id)}),filter.selected=!filter.selected,filter.selected?(selectedFilters.push(filter),$scope.$apply(function(){return $ctrl.selectFilter(type,id)})):(selectedFilters=_.reject(selectedFilters,filter),$scope.$apply(function(){return $ctrl.unselectFilter(type,id)})),renderSelectedFilters(selectedFilters),currentFiltersType=$el.find("h2 a.subfilter span.title").prop("data-type"),type===currentFiltersType&&renderFilters(_.reject(filters,"selected")),$ctrl.loadUserstories()},selectQFilter=debounceLeading(100,function(value){return void 0!==value?(0===value.length?$ctrl.replaceFilter("q",null):$ctrl.replaceFilter("q",value),$ctrl.loadUserstories()):void 0}),$scope.$watch("filtersQ",selectQFilter),$scope.$on("filters:loaded",function(ctx,filters){return initializeSelectedFilters(filters)}),$el.on("click",".filters-cats > ul > li > a",function(event){var tags,target;return event.preventDefault(),target=angular.element(event.currentTarget),tags=$scope.filters[target.data("type")],renderFilters(_.reject(tags,"selected")),showFilters(target.attr("title"),target.data("type"))}),$el.on("click",".filters-inner > .filters-step-cat > .breadcrumb > .back",function(event){return event.preventDefault(),showCategories()}),$el.on("click",".filters-applied a",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),id=target.data("id"),type=target.data("type"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),target.hasClass("active")?target.removeClass("active"):target.addClass("active"),id=target.data("id"),type=target.data("type"),toggleFilterSelection(type,id)})},{link:link}},module.directive("tgBacklogFilters",["$log","$tgLocation","$tgTemplate",BacklogFiltersDirective])}.call(this),function(){var CreateEditSprint,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaBacklog"),CreateEditSprint=function($repo,$confirm,$rs,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var createSprint,hasErrors,remove,submit,submitButton;return hasErrors=!1,createSprint=!0,$scope.sprint={project:null,name:null,estimated_start:null,estimated_finish:null},submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,newSprint,promise,target;return event.preventDefault(),target=angular.element(event.currentTarget),form=$el.find("form").checksley(),form.validate()?(hasErrors=!1,newSprint=angular.copy($scope.sprint),broadcastEvent=null,createSprint?(newSprint.estimated_start=moment(newSprint.estimated_start).format("YYYY-MM-DD"),newSprint.estimated_finish=moment(newSprint.estimated_finish).format("YYYY-MM-DD"),promise=$repo.create("milestones",newSprint),broadcastEvent="sprintform:create:success"):(newSprint.setAttr("estimated_start",moment(newSprint.estimated_start).format("YYYY-MM-DD")),newSprint.setAttr("estimated_finish",moment(newSprint.estimated_finish).format("YYYY-MM-DD")),promise=$repo.save(newSprint),broadcastEvent="sprintform:edit:success"),$loading.start(submitButton),promise.then(function(data){return $loading.finish(submitButton),createSprint&&($scope.sprintsCounter+=1),$rootscope.$broadcast(broadcastEvent,data),lightboxService.close($el)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("light-error",data._error_message):data.__all__?$confirm.notify("light-error",data.__all__[0]):void 0})):(hasErrors=!0,void $el.find(".last-sprint-name").addClass("disappear"))}}(this)),remove=function(){var message,title;return title="Delete sprint",message=$scope.sprint.name,$confirm.askOnDelete(title,message).then(function(){return function(finish){var onError,onSuccess;return onSuccess=function(){return finish(),$scope.milestonesCounter-=1,lightboxService.close($el),$rootscope.$broadcast("sprintform:remove:success")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.remove($scope.sprint).then(onSuccess,onError)}}(this))},$scope.$on("sprintform:create",function(event,projectId){var estimatedFinish,estimatedStart,form,lastSprint,lastSprintNameDom;return form=$el.find("form").checksley(),form.reset(),createSprint=!0,$scope.sprint.project=projectId,$scope.sprint.name=null,$scope.sprint.slug=null,lastSprint=$scope.sprints[0],estimatedStart=moment(),$scope.sprint.estimated_start?estimatedStart=moment($scope.sprint.estimated_start):null!=lastSprint&&(estimatedStart=moment(lastSprint.estimated_finish)),$scope.sprint.estimated_start=estimatedStart.format("DD MMM YYYY"),estimatedFinish=moment().add(2,"weeks"),$scope.sprint.estimated_finish?estimatedFinish=moment($scope.sprint.estimated_finish):null!=lastSprint&&(estimatedFinish=moment(lastSprint.estimated_finish).add(2,"weeks")),$scope.sprint.estimated_finish=estimatedFinish.format("DD MMM YYYY"),lastSprintNameDom=$el.find(".last-sprint-name"),null!=(null!=lastSprint?lastSprint.name:void 0)&&lastSprintNameDom.html(" last sprint is "+lastSprint.name+" ;-) "),$el.find(".delete-sprint").addClass("hidden"),$el.find(".title").text("New sprint"),$el.find(".button-green").text("Create"),lightboxService.open($el),$el.find(".sprint-name").focus(),$el.find(".last-sprint-name").removeClass("disappear")}),$scope.$on("sprintform:edit",function(ctx,sprint){return createSprint=!1,$scope.$apply(function(){return $scope.sprint=sprint,$scope.sprint.estimated_start=moment($scope.sprint.estimated_start).format("DD MMM YYYY"),$scope.sprint.estimated_finish=moment($scope.sprint.estimated_finish).format("DD MMM YYYY")}),$el.find(".delete-sprint").removeClass("hidden"),$el.find(".title").text("Edit sprint"),$el.find(".button-green").text("Save"),lightboxService.open($el),$el.find(".sprint-name").focus().select(),$el.find(".last-sprint-name").addClass("disappear")}),$el.on("keyup",".sprint-name",function(){return $el.find(".sprint-name").val().length>0||hasErrors?$el.find(".last-sprint-name").addClass("disappear"):$el.find(".last-sprint-name").removeClass("disappear")}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".delete-sprint .icon-delete",function(event){return event.preventDefault(),remove()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateEditSprint",["$tgRepo","$tgConfirm","$tgResources","$rootScope","lightboxService","$tgLoading",CreateEditSprint])}.call(this),function(){var BacklogController,BacklogDirective,TgBacklogProgressBarDirective,UsPointsDirective,UsRolePointsSelectorDirective,bindMethods,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,tgBacklogGraphDirective,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaBacklog"),BacklogController=function(superClass){function BacklogController(scope,rootscope,repo,confirm,rs,params1,q,location,appTitle,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params1,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Backlog",this.showTags=!1,this.activeFilters=!1,this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Backlog - "+_this.scope.project.name),_this.rs.userstories.getShowTags(_this.scope.projectId)?(_this.showTags=!0,_this.scope.$broadcast("showTags",_this.showTags)):void 0}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(BacklogController,superClass),BacklogController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],BacklogController.prototype.initializeEventHandlers=function(){return this.scope.$on("usform:bulk:success",function(_this){return function(){return _this.loadUserstories(),_this.loadProjectStats(),_this.analytics.trackEvent("userstory","create","bulk create userstory on backlog",1)}}(this)),this.scope.$on("sprintform:create:success",function(_this){return function(){return _this.loadSprints(),_this.loadProjectStats(),_this.analytics.trackEvent("sprint","create","create sprint on backlog",1) -}}(this)),this.scope.$on("usform:new:success",function(_this){return function(){return _this.loadUserstories(),_this.loadProjectStats(),_this.analytics.trackEvent("userstory","create","create userstory on backlog",1)}}(this)),this.scope.$on("sprintform:edit:success",function(_this){return function(){return _this.loadProjectStats()}}(this)),this.scope.$on("sprintform:remove:success",function(_this){return function(){return _this.loadSprints(),_this.loadProjectStats(),_this.loadUserstories()}}(this)),this.scope.$on("usform:edit:success",function(_this){return function(){return _this.loadUserstories()}}(this)),this.scope.$on("sprint:us:move",this.moveUs),this.scope.$on("sprint:us:moved",this.loadSprints),this.scope.$on("sprint:us:moved",this.loadProjectStats),this.scope.$on("backlog:load-closed-sprints",this.loadClosedSprints),this.scope.$on("backlog:unload-closed-sprints",this.unloadClosedSprints)},BacklogController.prototype.initializeSubscription=function(){var routingKey1,routingKey2;return routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.loadUserstories(),_this.loadSprints()}}(this)),routingKey2="changes.project."+this.scope.projectId+".milestones",this.events.subscribe(this.scope,routingKey2,function(_this){return function(){return _this.loadSprints()}}(this))},BacklogController.prototype.toggleShowTags=function(){return this.scope.$apply(function(_this){return function(){return _this.showTags=!_this.showTags,_this.rs.userstories.storeShowTags(_this.scope.projectId,_this.showTags)}}(this))},BacklogController.prototype.toggleActiveFilters=function(){return this.activeFilters=!this.activeFilters},BacklogController.prototype.loadProjectStats=function(){return this.rs.projects.stats(this.scope.projectId).then(function(_this){return function(stats){return _this.scope.stats=stats,_this.scope.stats.completedPercentage=stats.total_points?Math.round(100*stats.closed_points/stats.total_points):0,stats}}(this))},BacklogController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},BacklogController.prototype.unloadClosedSprints=function(){return this.scope.$apply(function(_this){return function(){return _this.scope.closedSprints=[],_this.rootscope.$broadcast("closed-sprints:reloaded",[])}}(this))},BacklogController.prototype.loadClosedSprints=function(){var params;return params={closed:!0},this.rs.sprints.list(this.scope.projectId,params).then(function(_this){return function(sprints){var j,len,sprint;for(j=0,len=sprints.length;len>j;j++)sprint=sprints[j],sprint.user_stories=_.sortBy(sprint.user_stories,"sprint_order");return _this.scope.closedSprints=sprints,_this.rootscope.$broadcast("closed-sprints:reloaded",sprints),sprints}}(this))},BacklogController.prototype.loadSprints=function(){var params;return params={closed:!1},this.rs.sprints.list(this.scope.projectId,params).then(function(_this){return function(sprints){var j,len,sprint;for(j=0,len=sprints.length;len>j;j++)sprint=sprints[j],sprint.user_stories=_.sortBy(sprint.user_stories,"sprint_order");return _this.scope.sprints=sprints,_this.scope.openSprints=_.filter(sprints,function(sprint){return!sprint.closed}).reverse(),_this.scope.closedSprints||(_this.scope.closedSprints=[]),_this.scope.sprintsCounter=sprints.length,_this.scope.sprintsById=groupBy(sprints,function(x){return x.id}),_this.rootscope.$broadcast("sprints:loaded",sprints),sprints}}(this))},BacklogController.prototype.resetFilters=function(){var selectedStatuses,selectedTags;return selectedTags=_.filter(this.scope.filters.tags,"selected"),selectedStatuses=_.filter(this.scope.filters.statuses,"selected"),this.scope.filtersQ="",_.each([selectedTags,selectedStatuses],function(_this){return function(filterGrp){return _.each(filterGrp,function(item){var filter,filters;return filters=_this.scope.filters[item.type],filter=_.find(filters,{id:taiga.toString(item.id)}),filter.selected=!1,_this.unselectFilter(item.type,item.id)})}}(this)),this.loadUserstories()},BacklogController.prototype.loadUserstories=function(){var promise;return this.scope.httpParams=this.getUrlFilters(),this.rs.userstories.storeQueryParams(this.scope.projectId,this.scope.httpParams),promise=this.q.all([this.refreshTagsColors(),this.rs.userstories.listUnassigned(this.scope.projectId,this.scope.httpParams)]),promise.then(function(_this){return function(data){var userstories;return userstories=data[1],_this.scope.userstories=_.sortBy(userstories,"backlog_order"),_this.setSearchDataFilters(),_this.filterVisibleUserstories(),_this.generateFilters(),_this.rootscope.$broadcast("filters:loaded",_this.scope.filters),scopeDefer(_this.scope,function(){return _this.scope.$broadcast("userstories:loaded")}),userstories}}(this))},BacklogController.prototype.loadBacklog=function(){return this.q.all([this.loadProjectStats(),this.loadSprints(),this.loadUserstories()])},BacklogController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_backlog_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.totalClosedMilestones=project.total_closed_milestones,_this.scope.$emit("project:loaded",project),_this.scope.points=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(x){return x.id}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.usStatusList=_.sortBy(project.us_statuses,"id"),project}}(this))},BacklogController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription()}}(this)),promise.then(function(_this){return function(){return _this.loadBacklog()}}(this))},BacklogController.prototype.filterVisibleUserstories=function(){return this.scope.visibleUserstories=[],this.scope.visibleUserstories=_.reject(this.scope.userstories,function(_this){return function(us){return _.some(us.tags,function(tag){return _this.isFilterSelected("tag",tag)})}}(this)),this.scope.visibleUserstories=_.filter(this.scope.visibleUserstories,function(_this){return function(us){return _this.searchdata.statuses&&Object.keys(_this.searchdata.statuses).length?_this.isFilterSelected("statuses",taiga.toString(us.status)):!0}}(this))},BacklogController.prototype.prepareBulkUpdateData=function(uses,field){return null==field&&(field="backlog_order"),_.map(uses,function(x){return{us_id:x.id,order:x[field]}})},BacklogController.prototype.resortUserStories=function(uses,field){var index,item,items,j,len;for(null==field&&(field="backlog_order"),items=[],index=j=0,len=uses.length;len>j;index=++j)item=uses[index],item[field]=index,item.isModified()&&items.push(item);return items},BacklogController.prototype.moveUs=function(ctx,usList,newUsIndex,newSprintId){var data,items,j,l,len,len1,len2,m,newSprint,oldSprintId,project,promise,promises,us,userstories;if(oldSprintId=usList[0].milestone,project=usList[0].project,newSprintId===oldSprintId)return items=null,userstories=null,userstories=null===newSprintId?this.scope.userstories:this.scope.sprintsById[newSprintId].user_stories,this.scope.$apply(function(){var args,j,key,len,r,us;for(key=j=0,len=usList.length;len>j;key=++j)us=usList[key],r=userstories.indexOf(us),userstories.splice(r,1);return args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(userstories,args)}),null===newSprintId?(items=this.resortUserStories(userstories,"backlog_order"),data=this.prepareBulkUpdateData(items,"backlog_order"),this.rs.userstories.bulkUpdateBacklogOrder(project,data).then(function(_this){return function(){var j,len,results,us;for(results=[],j=0,len=usList.length;len>j;j++)us=usList[j],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results}}(this))):(items=this.resortUserStories(userstories,"sprint_order"),data=this.prepareBulkUpdateData(items,"sprint_order"),this.rs.userstories.bulkUpdateSprintOrder(project,data).then(function(_this){return function(){var j,len,results,us;for(results=[],j=0,len=usList.length;len>j;j++)us=usList[j],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results}}(this))),promise;if(null===newSprintId){for(j=0,len=usList.length;len>j;j++)us=usList[j],us.milestone=null;return this.scope.$apply(function(_this){return function(){var args,key,l,len1,r,results,sprint;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(_this.scope.userstories,args),Array.prototype.splice.apply(_this.scope.visibleUserstories,args),_this.filterVisibleUserstories(),sprint=_this.scope.sprintsById[oldSprintId],results=[],key=l=0,len1=usList.length;len1>l;key=++l)us=usList[key],r=sprint.user_stories.indexOf(us),results.push(sprint.user_stories.splice(r,1));return results}}(this)),promise=this.repo.save(us),promise=promise.then(function(_this){return function(){return items=_this.resortUserStories(_this.scope.userstories,"backlog_order"),data=_this.prepareBulkUpdateData(items,"backlog_order"),_this.rs.userstories.bulkUpdateBacklogOrder(us.project,data).then(function(){return _this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId)})}}(this)),promise.then(null,function(){return console.log("FAIL")}),promise}if(newSprint=this.scope.sprintsById[newSprintId],null===oldSprintId){for(l=0,len1=usList.length;len1>l;l++)us=usList[l],us.milestone=newSprintId;this.scope.$apply(function(_this){return function(){var args,key,len2,m,r,results;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(newSprint.user_stories,args),results=[],key=m=0,len2=usList.length;len2>m;key=++m)us=usList[key],r=_this.scope.visibleUserstories.indexOf(us),_this.scope.visibleUserstories.splice(r,1),r=_this.scope.userstories.indexOf(us),results.push(_this.scope.userstories.splice(r,1));return results}}(this))}else{for(m=0,len2=usList.length;len2>m;m++)us=usList[m],us.milestone=newSprintId;this.scope.$apply(function(_this){return function(){var args,len3,n,oldSprint,r,results;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(newSprint.user_stories,args),results=[],n=0,len3=usList.length;len3>n;n++)us=usList[n],oldSprint=_this.scope.sprintsById[oldSprintId],r=oldSprint.user_stories.indexOf(us),results.push(oldSprint.user_stories.splice(r,1));return results}}(this))}return promises=_.map(usList,function(_this){return function(us){return _this.repo.save(us)}}(this)),promise=this.q.all(promises).then(function(_this){return function(){return items=_this.resortUserStories(newSprint.user_stories,"sprint_order"),data=_this.prepareBulkUpdateData(items,"sprint_order"),_this.rs.userstories.bulkUpdateSprintOrder(project,data).then(function(){return _this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId)}),_this.rs.userstories.bulkUpdateBacklogOrder(project,data).then(function(){var len3,n,results;for(results=[],n=0,len3=usList.length;len3>n;n++)us=usList[n],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results})}}(this)),promise.then(null,function(){return console.log("FAIL")}),promise},BacklogController.prototype.isFilterSelected=function(type,id){return null!=this.searchdata[type]&&this.searchdata[type][id]?!0:!1},BacklogController.prototype.setSearchDataFilters=function(){var name,results,urlfilters,val,value;urlfilters=this.getUrlFilters(),urlfilters.q&&(this.scope.filtersQ=this.scope.filtersQ||urlfilters.q),this.searchdata={},results=[];for(name in urlfilters)value=urlfilters[name],null==this.searchdata[name]&&(this.searchdata[name]={}),results.push(function(){var j,len,ref,results1;for(ref=taiga.toString(value).split(","),results1=[],j=0,len=ref.length;len>j;j++)val=ref[j],results1.push(this.searchdata[name][val]=!0);return results1}.call(this));return results},BacklogController.prototype.getUrlFilters=function(){return _.pick(this.location.search(),"statuses","tags","q")},BacklogController.prototype.generateFilters=function(){var plainStatuses,plainTags,selectedStatuses,selectedTags;return this.scope.filters={},plainTags=_.flatten(_.filter(_.map(this.scope.visibleUserstories,"tags"))),plainTags.sort(),this.scope.filters.tags=_.map(_.countBy(plainTags),function(_this){return function(v,k){var obj;return obj={id:k,type:"tags",name:k,color:_this.scope.project.tags_colors[k],count:v},_this.isFilterSelected("tags",obj.id)&&(obj.selected=!0),obj}}(this)),selectedTags=_.filter(this.scope.filters.tags,"selected"),selectedTags=_.map(selectedTags,"name"),plainStatuses=_.map(this.scope.visibleUserstories,"status"),plainStatuses=_.filter(plainStatuses,function(){return function(status){return status?status:void 0}}(this)),this.scope.filters.statuses=_.map(_.countBy(plainStatuses),function(_this){return function(v,k){var obj;return obj={id:k,type:"statuses",name:_this.scope.usStatusById[k].name,color:_this.scope.usStatusById[k].color,count:v},_this.isFilterSelected("statuses",obj.id)&&(obj.selected=!0),obj}}(this)),selectedStatuses=_.filter(this.scope.filters.statuses,"selected"),selectedStatuses=_.map(selectedStatuses,"id"),this.rs.userstories.storeQueryParams(this.scope.projectId,{status:selectedStatuses,tags:selectedTags,project:this.scope.projectId,milestone:null})},BacklogController.prototype.editUserStory=function(us){return this.rootscope.$broadcast("usform:edit",us)},BacklogController.prototype.deleteUserStory=function(us){var message,title;return title="Delete User Story",message=us.subject,this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var promise;return _this.scope.userstories=_.without(_this.scope.userstories,us),_this.filterVisibleUserstories(),promise=_this.repo.remove(us),promise.then(function(){return finish(),_this.loadBacklog()}),promise.then(null,function(){return finish(!1),_this.confirm.notify("error")})}}(this))},BacklogController.prototype.addNewUs=function(type){switch(type){case"standard":return this.rootscope.$broadcast("usform:new",this.scope.projectId,this.scope.project.default_us_status,this.scope.usStatusList);case"bulk":return this.rootscope.$broadcast("usform:bulk",this.scope.projectId,this.scope.project.default_us_status)}},BacklogController.prototype.addNewSprint=function(){return this.rootscope.$broadcast("sprintform:create",this.scope.projectId)},BacklogController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BacklogController",BacklogController),BacklogDirective=function($repo,$rootscope){var doomLineTemplate,link,linkDoomLine,linkFilters,linkToolbar,showHideFilter,showHideTags;return doomLineTemplate=_.template('
Project Scope [Doomline]
'),linkDoomLine=function($scope,$el){var addDoomLineDom,getUsItems,reloadDoomLine,removeDoomlineDom;return reloadDoomLine=function(){var current_sum,domElement,i,j,len,ref,results,stats,total_points,us;if(null!=$scope.stats){if(removeDoomlineDom(),stats=$scope.stats,total_points=stats.total_points,current_sum=stats.assigned_points,!$scope.visibleUserstories)return;for(ref=$scope.visibleUserstories,results=[],i=j=0,len=ref.length;len>j;i=++j){if(us=ref[i],current_sum+=us.total_points,current_sum>total_points){domElement=$el.find(".backlog-table-body .us-item-row")[i],addDoomLineDom(domElement);break}results.push(void 0)}return results}},removeDoomlineDom=function(){return $el.find(".doom-line").remove()},addDoomLineDom=function(element){return $(element).before(doomLineTemplate({}))},getUsItems=function(){var rowElements;return rowElements=$el.find(".backlog-table-body .us-item-row"),_.map(rowElements,function(x){return angular.element(x)})},$scope.$on("userstories:loaded",reloadDoomLine),$scope.$watch("stats",reloadDoomLine)},linkToolbar=function($scope,$el,$attrs,$ctrl){var moveToCurrentSprint;return moveToCurrentSprint=function(selectedUss){var extraPoints,totalExtraPoints,ussCurrent;return ussCurrent=_($scope.userstories),$scope.userstories=ussCurrent.without.apply(ussCurrent,selectedUss).value(),extraPoints=_.map(selectedUss,function(v){return v.total_points}),totalExtraPoints=_.reduce(extraPoints,function(acc,num){return acc+num}),$scope.sprints[0].user_stories=_.union($scope.sprints[0].user_stories,selectedUss),$scope.sprints[0].total_points+=totalExtraPoints,$ctrl.filterVisibleUserstories(),$repo.saveAll(selectedUss).then(function(){return $ctrl.loadSprints(),$ctrl.loadProjectStats()})},$el.on("change",".backlog-table-body .user-stories input:checkbox",function(event){var moveToCurrentSprintDom,selectedUsDom,target;return target=angular.element(event.currentTarget),moveToCurrentSprintDom=$el.find("#move-to-current-sprint"),selectedUsDom=$el.find(".backlog-table-body .user-stories input:checkbox:checked"),selectedUsDom.length>0&&$scope.sprints.length>0?moveToCurrentSprintDom.show():moveToCurrentSprintDom.hide(),target.closest(".us-item-row").toggleClass("ui-multisortable-multiple")}),$el.on("click","#move-to-current-sprint",function(){return function(){var ussDom,ussToMove;return ussDom=$el.find(".backlog-table-body .user-stories input:checkbox:checked"),ussToMove=_.map(ussDom,function(item){var itemScope;return item=$(item).closest(".tg-scope"),itemScope=item.scope(),itemScope.us.milestone=$scope.sprints[0].id,itemScope.us}),$scope.$apply(_.partial(moveToCurrentSprint,ussToMove))}}(this)),$el.on("click","#show-tags",function(event){return event.preventDefault(),$ctrl.toggleShowTags(),showHideTags($ctrl)})},showHideTags=function($ctrl){var elm;return elm=angular.element("#show-tags"),$ctrl.showTags?(elm.addClass("active"),elm.find(".text").text("Hide Tags")):(elm.removeClass("active"),elm.find(".text").text("Show Tags"))},showHideFilter=function($scope,$el,$ctrl){var sidebar,target;return sidebar=$el.find("sidebar.filters-bar"),sidebar.one("transitionend",function(){return timeout(150,function(){return $rootscope.$broadcast("resize"),$(".burndown").css("visibility","visible")})}),target=angular.element("#show-filters-button"),$(".burndown").css("visibility","hidden"),sidebar.toggleClass("active"),target.toggleClass("active"),toggleText(target.find(".text"),["Remove Filters","Show Filters"]),sidebar.hasClass("active")||$ctrl.resetFilters(),$ctrl.toggleActiveFilters()},linkFilters=function($scope,$el,$attrs,$ctrl){return $scope.filtersSearch={},$el.on("click","#show-filters-button",function(event){return event.preventDefault(),$scope.$apply(function(){return showHideFilter($scope,$el,$ctrl)})})},link=function($scope,$el,$attrs){var $ctrl,filters;return $ctrl=$el.controller(),linkToolbar($scope,$el,$attrs,$ctrl),linkFilters($scope,$el,$attrs,$ctrl),linkDoomLine($scope,$el,$attrs,$ctrl),$el.find(".backlog-table-body").disableSelection(),filters=$ctrl.getUrlFilters(),(filters.statuses||filters.tags||filters.q)&&showHideFilter($scope,$el,$ctrl),$scope.$on("showTags",function(){return showHideTags($ctrl)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklog",["$tgRepo","$rootScope",BacklogDirective]),UsRolePointsSelectorDirective=function($rootscope,$template){var link,selectionTemplate;return selectionTemplate=$template.get("backlog/us-role-points-popover.html",!0),link=function($scope,$el){return bindOnce($scope,"project",function(project){var numberOfRoles,roles;return roles=_.filter(project.roles,"computable"),numberOfRoles=_.size(roles),numberOfRoles>1?$el.append(selectionTemplate({roles:roles})):($el.find(".icon-arrow-bottom").remove(),$el.find(".header-points").addClass("not-clickable"))}),$scope.$on("uspoints:select",function(ctx,roleId,roleName){return $el.find(".popover").popover().close(),$el.find(".header-points").html(roleName+"/Total")}),$scope.$on("uspoints:clear-selection",function(){return $el.find(".popover").popover().close(),$el.find(".header-points").text("Points")}),$el.on("click",function(event){var target;return target=angular.element(event.target),(target.is("span")||target.is("div"))&&event.stopPropagation(),$el.find(".popover").popover().open()}),$el.on("click",".clear-selection",function(event){return event.preventDefault(),event.stopPropagation(),$rootscope.$broadcast("uspoints:clear-selection")}),$el.on("click",".role",function(event){var rolScope,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),rolScope=target.scope(),$rootscope.$broadcast("uspoints:select",target.data("role-id"),target.text())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUsRolePointsSelector",["$rootScope","$tgTemplate",UsRolePointsSelectorDirective]),UsPointsDirective=function($tgEstimationsService,$repo,$tgTemplate){var link,rolesTemplate;return rolesTemplate=$tgTemplate.get("common/estimation/us-points-roles-popover.html",!0),link=function($scope,$el,$attrs){var $ctrl,bindClickElements,estimationProcess,filteringRoleId,renderRolesSelector,selectedRoleId,updatingSelectedRoleId;return $ctrl=$el.controller(),updatingSelectedRoleId=null,selectedRoleId=null,filteringRoleId=null,estimationProcess=null,$scope.$on("uspoints:select",function(ctx,roleId){var us;return us=$scope.$eval($attrs.tgBacklogUsPoints),selectedRoleId=roleId,estimationProcess.render()}),$scope.$on("uspoints:clear-selection",function(){var us;return us=$scope.$eval($attrs.tgBacklogUsPoints),selectedRoleId=null,estimationProcess.render()}),$scope.$watch($attrs.tgBacklogUsPoints,function(us){var roles;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),roles=estimationProcess.calculateRoles(),0===roles.length?($el.find(".icon-arrow-bottom").remove(),$el.find("a.us-points").addClass("not-clickable")):1===roles.length&&(selectedRoleId=_.keys(us.points)[0]),estimationProcess.isEditable&&bindClickElements(),estimationProcess.onSelectedPointForRole=function(roleId,pointId){return this.save(roleId,pointId).then(function(){return $ctrl.loadProjectStats()})},estimationProcess.render=function(){var ctx,html,mainTemplate,pointId,pointObj,template,text,title,totalPoints;return totalPoints=this.calculateTotalPoints(),null==selectedRoleId||1===roles.length?(text=totalPoints,title=totalPoints):(pointId=this.us.points[selectedRoleId],pointObj=this.pointsById[pointId],text=pointObj.name+" / "+totalPoints+"",title=pointObj.name+" / "+totalPoints),ctx={totalPoints:totalPoints,roles:this.calculateRoles(),editable:this.isEditable,text:text,title:title},mainTemplate="common/estimation/us-estimation-total.html",template=$tgTemplate.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),renderRolesSelector=function(){var html,roles;return roles=estimationProcess.calculateRoles(),html=rolesTemplate({roles:roles}),$el.append(html),$el.find(".pop-role").popover().open(function(){return $(this).remove()})},bindClickElements=function(){return $el.on("click","a.us-points span",function(event){var us;return event.preventDefault(),event.stopPropagation(),us=$scope.$eval($attrs.tgBacklogUsPoints),updatingSelectedRoleId=selectedRoleId,null!=selectedRoleId?estimationProcess.renderPointsSelector(selectedRoleId):renderRolesSelector()}),$el.on("click",".role",function(event){var popRolesDom,target,us;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),us=$scope.$eval($attrs.tgBacklogUsPoints),updatingSelectedRoleId=target.data("role-id"),popRolesDom=$el.find(".pop-role"),popRolesDom.find("a").removeClass("active"),popRolesDom.find("a[data-role-id='"+updatingSelectedRoleId+"']").addClass("active"),estimationProcess.renderPointsSelector(updatingSelectedRoleId)})},$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogUsPoints",["$tgEstimationsService","$tgRepo","$tgTemplate",UsPointsDirective]),tgBacklogGraphDirective=function(){var link,redrawChart;return redrawChart=function(element,dataToDraw){var client_increment_line,colors,data,evolution_line,milestonesRange,optimal_line,options,results,team_increment_line,width,zero_line;return width=element.width(),element.height(width/6),milestonesRange=function(){results=[];for(var j=0,ref=dataToDraw.milestones.length-1;ref>=0?ref>=j:j>=ref;ref>=0?j++:j--)results.push(j);return results}.apply(this),data=[],zero_line=_.map(dataToDraw.milestones,function(){return 0}),data.push({data:_.zip(milestonesRange,zero_line),lines:{fillColor:"rgba(0,0,0,0)"},points:{show:!1}}),optimal_line=_.map(dataToDraw.milestones,function(ml){return ml.optimal}),data.push({data:_.zip(milestonesRange,optimal_line),lines:{fillColor:"rgba(120,120,120,0.2)"}}),evolution_line=_.filter(_.map(dataToDraw.milestones,function(ml){return ml.evolution}),function(evolution){return null!=evolution}),data.push({data:_.zip(milestonesRange,evolution_line),lines:{fillColor:"rgba(102,153,51,0.3)"}}),team_increment_line=_.map(dataToDraw.milestones,function(ml){return-ml["team-increment"]}),data.push({data:_.zip(milestonesRange,team_increment_line),lines:{fillColor:"rgba(153,51,51,0.3)"}}),client_increment_line=_.map(dataToDraw.milestones,function(ml){return-ml["team-increment"]-ml["client-increment"]}),data.push({data:_.zip(milestonesRange,client_increment_line),lines:{fillColor:"rgba(255,51,51,0.3)"}}),colors=["rgba(0,0,0,1)","rgba(120,120,120,0.2)","rgba(102,153,51,1)","rgba(153,51,51,1)","rgba(255,51,51,1)"],options={grid:{borderWidth:{top:0,right:1,left:0,bottom:0},borderColor:"#ccc",hoverable:!0},xaxis:{ticks:dataToDraw.milestones.length,axisLabel:"Sprints",axisLabelUseCanvas:!0,axisLabelFontSizePixels:14,axisLabelFontFamily:"Verdana, Arial, Helvetica, Tahoma, sans-serif",axisLabelPadding:15,tickFormatter:function(){return""}},series:{shadowSize:0,lines:{show:!0,fill:!0},points:{show:!0,fill:!0,radius:4,lineWidth:2}},colors:colors,tooltip:!0,tooltipOpts:{content:function(label,xval,yval,flotItem){return 1===flotItem.seriesIndex?"Optimal pending points for sprint "+xval+" should be "+yval:2===flotItem.seriesIndex?"Real pending points for sprint "+xval+" is "+yval:3===flotItem.seriesIndex?"Incremented points by team requirements for sprint "+xval+" is "+Math.abs(yval):"Incremented points by client requirements for sprint "+xval+" is "+Math.abs(yval)}}},element.empty(),element.plot(data,options).data("plot")},link=function($scope,$el){var element;return element=angular.element($el),$scope.$watch("stats",function(){return null!=$scope.stats?(redrawChart(element,$scope.stats),$scope.$on("resize",function(){return redrawChart(element,$scope.stats)})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgGmBacklogGraph",tgBacklogGraphDirective),TgBacklogProgressBarDirective=function($template){var adjustPercentaje,link,render,template;return template=$template.get("backlog/progress-bar.html",!0),render=function(el,projectPointsPercentaje,closedPointsPercentaje){return el.html(template({projectPointsPercentaje:projectPointsPercentaje,closedPointsPercentaje:closedPointsPercentaje}))},adjustPercentaje=function(percentage){var adjusted;return adjusted=_.max([0,percentage]),adjusted=_.min([100,adjusted]),Math.round(adjusted)},link=function($scope,$el,$attrs){var element;return element=angular.element($el),$scope.$watch($attrs.tgBacklogProgressBar,function(stats){var closedPoints,closedPointsPercentaje,definedPoints,projectPointsPercentaje,totalPoints;return null!=stats?(totalPoints=stats.total_points,definedPoints=stats.defined_points,closedPoints=stats.closed_points,definedPoints>totalPoints?(projectPointsPercentaje=100*totalPoints/definedPoints,closedPointsPercentaje=100*closedPoints/definedPoints):(projectPointsPercentaje=100,closedPointsPercentaje=100*closedPoints/totalPoints),projectPointsPercentaje=adjustPercentaje(projectPointsPercentaje-3),closedPointsPercentaje=adjustPercentaje(closedPointsPercentaje-3),render($el,projectPointsPercentaje,closedPointsPercentaje)):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogProgressBar",["$tgTemplate",TgBacklogProgressBarDirective])}.call(this),function(){var BacklogEmptySortableDirective,BacklogSortableDirective,SprintSortableDirective,bindOnce,deleteElement,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,module=angular.module("taigaBacklog"),deleteElement=function(el){return el.scope().$destroy(),el.off(),el.remove()},BacklogSortableDirective=function($repo,$rs,$rootscope,$tgConfirm){var link;return link=function($scope,$el){var getUsIndex;return getUsIndex=function(){return function(us){return $(us).index(".backlog-table-body .row")}}(this),bindOnce($scope,"project",function(project){var filterError;if(project.my_permissions.indexOf("modify_us")>-1)return filterError=function(){return $tgConfirm.notify("error","You can't drop on backlog when filters are open")},$el.sortable({items:".us-item-row",cancel:".popover",connectWith:".sprint",containment:".wrapper",dropOnEmpty:!0,placeholder:"row us-item-row us-item-drag sortable-placeholder",scroll:!0,tolerance:"pointer",revert:!1,cursorAt:{right:15},stop:function(){return $el.hasClass("active-filters")?($el.sortable("cancel"),filterError()):void 0}}),$el.on("multiplesortreceive",function(event,ui){var itemIndex,itemUs;return $el.hasClass("active-filters")?(ui.source.sortable("cancel"),void filterError()):(itemUs=ui.item.scope().us,itemIndex=getUsIndex(ui.item),deleteElement(ui.item),$scope.$emit("sprint:us:move",[itemUs],itemIndex,null),ui.item.find("a").removeClass("noclick"))}),$el.on("multiplesortstop",function(event,ui){var index,items,us;if(0!==$(ui.items[0]).parent().length)return items=_.sortBy(ui.items,function(item){return $(item).index()}),index=_.min(_.map(items,function(item){return getUsIndex(item)})),us=_.map(items,function(item){var itemUs;return item=$(item),itemUs=item.scope().us,setTimeout(function(){return function(){return item.find("a").removeClass("noclick")}}(this),300),itemUs}),$scope.$emit("sprint:us:move",us,index,null)}),$el.on("sortstart",function(event,ui){return ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},BacklogEmptySortableDirective=function(){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?($el.sortable({dropOnEmpty:!0}),$el.on("sortreceive",function(event,ui){var itemIndex,itemUs;return itemUs=ui.item.scope().us,itemIndex=ui.item.index(),deleteElement(ui.item),$scope.$emit("sprint:us:move",[itemUs],itemIndex,null),ui.item.find("a").removeClass("noclick")})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},SprintSortableDirective=function(){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?($el.sortable({scroll:!0,dropOnEmpty:!0,items:".sprint-table .milestone-us-item-row",connectWith:".sprint,.backlog-table-body,.empty-backlog"}),$el.on("multiplesortreceive",function(event,ui){var index,items,us;return items=_.sortBy(ui.items,function(item){return $(item).index()}),index=_.min(_.map(items,function(item){return $(item).index()})),us=_.map(items,function(item){var itemUs;return item=$(item),itemUs=item.scope().us,deleteElement(item),itemUs}),$scope.$emit("sprint:us:move",us,index,$scope.sprint.id)}),$el.on("multiplesortstop",function(event,ui){var itemIndex,itemUs;if(0!==ui.item.parent().length)return itemUs=ui.item.scope().us,itemIndex=ui.item.index(),setTimeout(function(){return function(){return ui.item.find("a").removeClass("noclick") -}}(this),300),$scope.$emit("sprint:us:move",[itemUs],itemIndex,$scope.sprint.id)}),$el.on("sortstart",function(event,ui){return ui.item.find("a").addClass("noclick")})):void 0})},{link:link}},module.directive("tgBacklogSortable",["$tgRepo","$tgResources","$rootScope","$tgConfirm",BacklogSortableDirective]),module.directive("tgBacklogEmptySortable",["$tgRepo","$tgResources","$rootScope",BacklogEmptySortableDirective]),module.directive("tgSprintSortable",["$tgRepo","$tgResources","$rootScope",SprintSortableDirective])}.call(this),function(){var BacklogSprintDirective,BacklogSprintHeaderDirective,ToggleExcludeClosedSprintsVisualization,module,taiga;taiga=this.taiga,module=angular.module("taigaBacklog"),BacklogSprintDirective=function($repo,$rootscope){var link,refreshSprintTableHeight,slideOptions,sprintTableMinHeight,toggleSprint;return sprintTableMinHeight=50,slideOptions={duration:500,easing:"linear"},refreshSprintTableHeight=function(){return function(sprintTable){return sprintTable.find(".row").length?sprintTable.css("height","auto"):sprintTable.css("height",sprintTableMinHeight)}}(this),toggleSprint=function(){return function($el){var sprintArrow,sprintTable;return sprintTable=$el.find(".sprint-table"),sprintArrow=$el.find(".icon-arrow-up"),sprintArrow.toggleClass("active"),sprintTable.toggleClass("open"),refreshSprintTableHeight(sprintTable)}}(this),link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBacklogSprint,function(sprint){return sprint=$scope.$eval($attrs.tgBacklogSprint),sprint.closed?$el.addClass("sprint-closed"):toggleSprint($el)}),$el.on("click",".sprint-name > .icon-arrow-up",function(event){return event.preventDefault(),toggleSprint($el),$el.find(".sprint-table").slideToggle(slideOptions)}),$el.on("click",".sprint-name > .icon-edit",function(event){var sprint;return event.preventDefault(),sprint=$scope.$eval($attrs.tgBacklogSprint),$rootscope.$broadcast("sprintform:edit",sprint)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogSprint",["$tgRepo","$rootScope",BacklogSprintDirective]),BacklogSprintHeaderDirective=function($navUrls,$template){var link,template;return template=$template.get("backlog/sprint-header.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,isVisible,render;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_milestone")},isVisible=function(){return-1!==$scope.project.my_permissions.indexOf("view_milestones")},render=function(sprint){var ctx,estimatedDateRange,finish,start,taskboardUrl;return taskboardUrl=$navUrls.resolve("project-taskboard",{project:$scope.project.slug,sprint:sprint.slug}),start=moment(sprint.estimated_start).format("DD MMM YYYY"),finish=moment(sprint.estimated_finish).format("DD MMM YYYY"),estimatedDateRange=start+"-"+finish,ctx={name:sprint.name,taskboardUrl:taskboardUrl,estimatedDateRange:estimatedDateRange,closedPoints:sprint.closed_points||0,totalPoints:sprint.total_points||0,isVisible:isVisible(),isEditable:isEditable()},$el.html(template(ctx))},$scope.$watch($attrs.ngModel,function(sprint){return render(sprint)}),$scope.$on("sprintform:edit:success",function(){return render($model.$modelValue)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgBacklogSprintHeader",["$tgNavUrls","$tgTemplate",BacklogSprintHeaderDirective]),ToggleExcludeClosedSprintsVisualization=function($rootscope,$loading){var excludeClosedSprints,link;return excludeClosedSprints=!0,link=function($scope,$el){var loadingElm;return loadingElm=$("
"),$el.after(loadingElm),$el.on("click",function(event){return event.preventDefault(),excludeClosedSprints=!excludeClosedSprints,$loading.start(loadingElm),$rootscope.$broadcast(excludeClosedSprints?"backlog:unload-closed-sprints":"backlog:load-closed-sprints")}),$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("closed-sprints:reloaded",function(){return function(ctx,sprints){var text;return $loading.finish(loadingElm),text=sprints.length>0?"Hide closed sprints":"Show closed sprints",$el.find(".text").text(text)}}(this))},{link:link}},module.directive("tgBacklogToggleClosedSprintsVisualization",["$rootScope","$tgLoading",ToggleExcludeClosedSprintsVisualization])}.call(this),function(){var SprintGraphDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,module=angular.module("taigaTaskboard"),SprintGraphDirective=function(){var link,redrawChart;return redrawChart=function(element,dataToDraw){var data,days,options,width;return width=element.width(),element.height(240),days=_.map(dataToDraw,function(x){return moment(x.day)}),data=[],data.unshift({data:_.zip(days,_.map(dataToDraw,function(d){return d.optimal_points})),lines:{fillColor:"rgba(120,120,120,0.2)"}}),data.unshift({data:_.zip(days,_.map(dataToDraw,function(d){return d.open_points})),lines:{fillColor:"rgba(102,153,51,0.3)"}}),options={grid:{borderWidth:{top:0,right:1,left:0,bottom:0},borderColor:"#ccc",hoverable:!0},xaxis:{tickSize:[1,"day"],min:days[0],max:_.last(days),mode:"time",daysNames:days,axisLabel:"Day",axisLabelUseCanvas:!0,axisLabelFontSizePixels:12,axisLabelFontFamily:"Verdana, Arial, Helvetica, Tahoma, sans-serif",axisLabelPadding:5},yaxis:{min:0},series:{shadowSize:0,lines:{show:!0,fill:!0},points:{show:!0,fill:!0,radius:4,lineWidth:2}},colors:["rgba(102,153,51,1)","rgba(120,120,120,0.2)"],tooltip:!0,tooltipOpts:{content:function(label,xval,yval,flotItem){var formattedDate,roundedValue;return formattedDate=moment(xval).format("DD MMM"),roundedValue=Math.round(yval),1===flotItem.seriesIndex?"Optimal pending points for day "+formattedDate+" should be "+roundedValue:"Real pending points for day "+formattedDate+" is "+roundedValue}}},element.empty(),element.plot(data,options).data("plot")},link=function($scope,$el){var element;return element=angular.element($el),$scope.$on("resize",function(){return $scope.stats?redrawChart(element,$scope.stats.days):void 0}),$scope.$on("taskboard:graph:toggle-visibility",function(){return $el.parent().toggleClass("open"),timeout(100,function(){return $scope.stats?redrawChart(element,$scope.stats.days):void 0})}),$scope.$watch("stats",function(){return null!=$scope.stats?redrawChart(element,$scope.stats.days):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgSprintGraph",SprintGraphDirective)}.call(this),function(){var CreateBulkTasksDirective,CreateEditTaskDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,CreateEditTaskDirective=function($repo,$model,$rs,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.isNew=!0,$scope.$on("taskform:new",function(ctx,sprintId,usId){return $scope.task={project:$scope.projectId,milestone:sprintId,user_story:usId,is_archived:!1,status:$scope.project.default_task_status,assigned_to:null,tags:[]},$scope.isNew=!0,$el.find(".button-green").html("Create"),$el.find(".title").html("New task "),$el.find(".tag-input").val(""),lightboxService.open($el)}),$scope.$on("taskform:edit",function(ctx,task){return $scope.task=task,$scope.isNew=!1,$el.find(".button-green").html("Save"),$el.find(".title").html("Edit task "),$el.find(".tag-input").val(""),lightboxService.open($el)}),submitButton=$el.find(".submit-button"),submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($scope.isNew?(promise=$repo.create("tasks",$scope.task),broadcastEvent="taskform:new:success"):(promise=$repo.save($scope.task),broadcastEvent="taskform:edit:success"),$loading.start(submitButton),promise.then(function(data){return $loading.finish(submitButton),lightboxService.close($el),$rootscope.$broadcast(broadcastEvent,data)})):void 0}}(this)),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},CreateBulkTasksDirective=function($repo,$rs,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.form={data:"",usId:null},submit=debounce(2e3,function(){return function(event){var data,form,projectId,promise,sprintId,usId;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),data=$scope.form.data,projectId=$scope.projectId,sprintId=$scope.form.sprintId,usId=$scope.form.usId,promise=$rs.tasks.bulkCreate(projectId,sprintId,usId,data),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("taskform:bulk:success",result),lightboxService.close($el)}),promise.then(null,function(){return $loading.finish(submitButton),console.log("FAIL")})):void 0}}(this)),$scope.$on("taskform:bulk",function(ctx,sprintId,usId){return lightboxService.open($el),$scope.form={data:"",sprintId:sprintId,usId:usId}}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaTaskboard"),module.directive("tgLbCreateEditTask",["$tgRepo","$tgModel","$tgResources","$rootScope","$tgLoading","lightboxService",CreateEditTaskDirective]),module.directive("tgLbCreateBulkTasks",["$tgRepo","$tgResources","$rootScope","$tgLoading","lightboxService",CreateBulkTasksDirective])}.call(this),function(){var TaskboardController,TaskboardDirective,TaskboardSquishColumnDirective,TaskboardTaskDirective,TaskboardUserDirective,bindMethods,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,toggleText=this.taiga.toggleText,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,scopeDefer=this.taiga.scopeDefer,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaTaskboard"),TaskboardController=function(superClass){function TaskboardController(scope,rootscope,repo,confirm,rs1,params1,q,appTitle,location,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs1,this.params=params1,this.q=q,this.appTitle=appTitle,this.location=location,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Taskboard",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Taskboard - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TaskboardController,superClass),TaskboardController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$appTitle","$tgLocation","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],TaskboardController.prototype.initializeEventHandlers=function(){return this.scope.$on("taskform:bulk:success",function(_this){return function(){return _this.loadTaskboard(),_this.analytics.trackEvent("task","create","bulk create task on taskboard",1)}}(this)),this.scope.$on("taskform:new:success",function(_this){return function(){return _this.loadTaskboard(),_this.analytics.trackEvent("task","create","create task on taskboard",1)}}(this)),this.scope.$on("taskform:edit:success",function(_this){return function(){return _this.loadTaskboard()}}(this)),this.scope.$on("taskboard:task:move",this.taskMove),this.scope.$on("assigned-to:added",function(_this){return function(ctx,userId,task){var promise;return task.assigned_to=userId,promise=_this.repo.save(task),promise.then(null,function(){return console.log("FAIL")})}}(this))},TaskboardController.prototype.initializeSubscription=function(){var routingKey,routingKey1;return routingKey="changes.project."+this.scope.projectId+".tasks",this.events.subscribe(this.scope,routingKey,function(_this){return function(){return _this.loadTaskboard()}}(this)),routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.refreshTagsColors(),_this.loadSprintStats(),_this.loadSprint()}}(this))},TaskboardController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.is_backlog_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(e){return e.id}),_this.scope.roleById=groupBy(project.roles,function(e){return e.id}),_this.scope.taskStatusList=_.sortBy(project.task_statuses,"order"),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.scope.usStatusById=groupBy(project.us_statuses,function(e){return e.id}),_this.scope.$emit("project:loaded",project),_this.fillUsersAndRoles(project.users,project.roles),project}}(this))},TaskboardController.prototype.loadSprintStats=function(){return this.rs.sprints.stats(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(stats){var completedPointsSum,remainingPointsSum,remainingTasks,totalPointsSum;return totalPointsSum=_.reduce(_.values(stats.total_points),function(res,n){return res+n},0),completedPointsSum=_.reduce(_.values(stats.completed_points),function(res,n){return res+n},0),remainingPointsSum=totalPointsSum-completedPointsSum,remainingTasks=stats.total_tasks-stats.completed_tasks,_this.scope.stats=stats,_this.scope.stats.totalPointsSum=totalPointsSum,_this.scope.stats.completedPointsSum=completedPointsSum,_this.scope.stats.remainingPointsSum=remainingPointsSum,_this.scope.stats.remainingTasks=remainingTasks,_this.scope.stats.completedPercentage=stats.totalPointsSum?Math.round(100*stats.completedPointsSum/stats.totalPointsSum):0,_this.scope.stats.openTasks=stats.total_tasks-stats.completed_tasks,stats}}(this))},TaskboardController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},TaskboardController.prototype.loadSprint=function(){return this.rs.sprints.get(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,_this.scope.userstories=_.sortBy(sprint.user_stories,"sprint_order"),sprint}}(this))},TaskboardController.prototype.loadTasks=function(){return this.rs.tasks.list(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(tasks){var i,j,k,len,len1,len2,ref,ref1,ref2,status,task,us;for(_this.scope.tasks=_.sortBy(tasks,"taskboard_order"),_this.scope.usTasks={},ref=_.union(_this.scope.userstories,[{id:null}]),i=0,len=ref.length;len>i;i++)for(us=ref[i],_this.scope.usTasks[us.id]={},ref1=_this.scope.taskStatusList,j=0,len1=ref1.length;len1>j;j++)status=ref1[j],_this.scope.usTasks[us.id][status.id]=[];for(ref2=_this.scope.tasks,k=0,len2=ref2.length;len2>k;k++)task=ref2[k],null!=_this.scope.usTasks[task.user_story]&&null!=_this.scope.usTasks[task.user_story][task.status]&&_this.scope.usTasks[task.user_story][task.status].push(task);return tasks}}(this))},TaskboardController.prototype.loadTaskboard=function(){return this.q.all([this.refreshTagsColors(),this.loadSprintStats(),this.loadSprint().then(function(_this){return function(){return _this.loadTasks()}}(this))])},TaskboardController.prototype.loadInitialData=function(){var params,promise;return params={pslug:this.params.pslug,sslug:this.params.sslug},promise=this.repo.resolve(params).then(function(_this){return function(data){return _this.scope.projectId=data.project,_this.scope.sprintId=data.milestone,_this.initializeSubscription(),data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadTaskboard()}}(this))},TaskboardController.prototype.refreshTasksOrder=function(tasks){var data,items;return items=this.resortTasks(tasks),data=this.prepareBulkUpdateData(items),this.rs.tasks.bulkUpdateTaskTaskboardOrder(this.scope.project.id,data)},TaskboardController.prototype.resortTasks=function(tasks){var i,index,item,items,len;for(items=[],index=i=0,len=tasks.length;len>i;index=++i)item=tasks[index],item.taskboard_order=index,item.isModified()&&items.push(item);return items},TaskboardController.prototype.prepareBulkUpdateData=function(uses){return _.map(uses,function(x){return{task_id:x.id,order:x.taskboard_order}})},TaskboardController.prototype.taskMove=function(ctx,task,usId,statusId,order){var promise,r,tasks;return r=this.scope.usTasks[task.user_story][task.status].indexOf(task),this.scope.usTasks[task.user_story][task.status].splice(r,1),tasks=this.scope.usTasks[usId][statusId],tasks.splice(order,0,task),task.user_story=usId,task.status=statusId,task.taskboard_order=order,promise=this.repo.save(task),this.rootscope.$broadcast("sprint:task:moved",task),promise.then(function(_this){return function(){return _this.refreshTasksOrder(tasks),_this.loadSprintStats()}}(this)),promise.then(null,function(){return function(){return console.log("FAIL TASK SAVE")}}(this))},TaskboardController.prototype.addNewTask=function(type,us){switch(type){case"standard":return this.rootscope.$broadcast("taskform:new",this.scope.sprintId,null!=us?us.id:void 0);case"bulk":return this.rootscope.$broadcast("taskform:bulk",this.scope.sprintId,null!=us?us.id:void 0)}},TaskboardController.prototype.editTaskAssignedTo=function(task){return this.rootscope.$broadcast("assigned-to:add",task)},TaskboardController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TaskboardController",TaskboardController),TaskboardDirective=function($rootscope){var link;return link=function($scope,$el){var $ctrl,tableBodyDom;return $ctrl=$el.controller(),$el.on("click",".toggle-analytics-visibility",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.toggleClass("active"),$rootscope.$broadcast("taskboard:graph:toggle-visibility")}),tableBodyDom=$el.find(".taskboard-table-body"),tableBodyDom.on("scroll",function(event){var tableHeaderDom,target;return target=angular.element(event.currentTarget),tableHeaderDom=$el.find(".taskboard-table-header .taskboard-table-inner"),tableHeaderDom.css("left",-1*target.scrollLeft())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgTaskboard",["$rootScope",TaskboardDirective]),TaskboardTaskDirective=function($rootscope){var link;return link=function($scope,$el){return $el.disableSelection(),$scope.$watch("task",function(task){return task.is_blocked&&!$el.hasClass("blocked")?$el.addClass("blocked"):!task.is_blocked&&$el.hasClass("blocked")?$el.removeClass("blocked"):void 0}),$el.find(".icon-edit").on("click",function(){return $el.find(".icon-edit").hasClass("noclick")?void 0:$scope.$apply(function(){return $rootscope.$broadcast("taskform:edit",$scope.task)})})},{link:link}},module.directive("tgTaskboardTask",["$rootScope",TaskboardTaskDirective]),TaskboardSquishColumnDirective=function(rs){var avatarWidth,link,maxColumnWidth;return avatarWidth=40,maxColumnWidth=300,link=function($scope,$el){var getCeilWidth,recalculateStatusColumnWidth,recalculateTaskboardWidth,refreshTaskboardTableWidth,setStatusColumnWidth;return $scope.$on("sprint:task:moved",function(){return function(){return recalculateTaskboardWidth()}}(this)),bindOnce($scope,"usTasks",function(){return $scope.statusesFolded=rs.tasks.getStatusColumnModes($scope.project.id),$scope.usFolded=rs.tasks.getUsRowModes($scope.project.id,$scope.sprintId),recalculateTaskboardWidth()}),$scope.foldStatus=function(status){return $scope.statusesFolded[status.id]=!$scope.statusesFolded[status.id],rs.tasks.storeStatusColumnModes($scope.projectId,$scope.statusesFolded),recalculateTaskboardWidth()},$scope.foldUs=function(us){return us?$scope.usFolded[us.id]=!$scope.usFolded[us.id]:$scope.usFolded[null]=!$scope.usFolded[null],rs.tasks.storeUsRowModes($scope.projectId,$scope.sprintId,$scope.usFolded),recalculateTaskboardWidth()},getCeilWidth=function(){return function(usId,statusId){var tasks,tasksMatrixSize,width;return tasks=$scope.usTasks[usId][statusId].length,$scope.statusesFolded[statusId]?(tasks&&$scope.usFolded[usId]?(tasksMatrixSize=Math.round(Math.sqrt(tasks)),width=avatarWidth*tasksMatrixSize):width=avatarWidth,width):0}}(this),setStatusColumnWidth=function(){return function(statusId,width){var column;return column=$el.find(".squish-status-"+statusId),width?column.css("max-width",width):column.css("max-width",maxColumnWidth)}}(this),refreshTaskboardTableWidth=function(){return function(){var columnWidths,columns,totalWidth;return columnWidths=[],columns=$el.find(".task-colum-name"),columnWidths=_.map(columns,function(column){return $(column).outerWidth(!0)}),totalWidth=_.reduce(columnWidths,function(total,width){return total+width}),$el.find(".taskboard-table-inner").css("width",totalWidth)}}(this),recalculateStatusColumnWidth=function(){return function(statusId){var statusFoldedWidth;return statusFoldedWidth=getCeilWidth(null,statusId),_.forEach($scope.userstories,function(us){var width;return width=getCeilWidth(us.id,statusId),width>statusFoldedWidth?statusFoldedWidth=width:void 0}),setStatusColumnWidth(statusId,statusFoldedWidth)}}(this),recalculateTaskboardWidth=function(){return function(){_.forEach($scope.taskStatusList,function(status){return recalculateStatusColumnWidth(status.id)}),refreshTaskboardTableWidth()}}(this)},{link:link}},module.directive("tgTaskboardSquishColumn",["$tgResources",TaskboardSquishColumnDirective]),TaskboardUserDirective=function(){var clickable,link;return clickable=!1,link=function($scope,$el){var username_label;return username_label=$el.parent().find("a.task-assigned"),username_label.addClass("not-clickable"),$scope.$watch("task.assigned_to",function(assigned_to){var user;return user=$scope.usersById[assigned_to],void 0===user?_.assign($scope,{name:"Unassigned",imgurl:"/images/unnamed.png",clickable:clickable}):_.assign($scope,{name:user.full_name_display,imgurl:user.photo,clickable:clickable}),username_label.text($scope.name)}),bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_task")>-1?(clickable=!0,$el.find(".avatar-assigned-to").on("click",function(){return function(){var $ctrl;if(!$el.find("a").hasClass("noclick"))return $ctrl=$el.controller(),$ctrl.editTaskAssignedTo($scope.task)}}(this)),username_label.removeClass("not-clickable"),username_label.on("click",function(){var $ctrl;if(!$el.find("a").hasClass("noclick"))return $ctrl=$el.controller(),$ctrl.editTaskAssignedTo($scope.task)})):void 0})},{link:link,templateUrl:"taskboard/taskboard-user.html",scope:{usersById:"=users",project:"=",task:"="}}},module.directive("tgTaskboardUserAvatar",["$log",TaskboardUserDirective])}.call(this),function(){var TaskboardSortableDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,module=angular.module("taigaBacklog"),TaskboardSortableDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){var deleteElement,itemEl,newParentScope,oldParentScope,tdom;if(project.my_permissions.indexOf("modify_us")>-1)return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el,deleteElement=function(itemEl){return itemEl.scope().$destroy(),itemEl.off(),itemEl.remove()},tdom.sortable({handle:".taskboard-task-inner",dropOnEmpty:!0,connectWith:".taskboard-tasks-box",revert:400}),tdom.on("sortstop",function(event,ui){var itemIndex,itemTask,newStatusId,newUsId,oldStatusId,oldUsId,parentEl;return parentEl=ui.item.parent(),itemEl=ui.item,itemTask=itemEl.scope().task,itemIndex=itemEl.index(),newParentScope=parentEl.scope(),oldUsId=oldParentScope.us?oldParentScope.us.id:null,oldStatusId=oldParentScope.st.id,newUsId=newParentScope.us?newParentScope.us.id:null,newStatusId=newParentScope.st.id,(newStatusId!==oldStatusId||newUsId!==oldUsId)&&deleteElement(itemEl),$scope.$apply(function(){return $rootscope.$broadcast("taskboard:task:move",itemTask,newUsId,newStatusId,itemIndex)}),ui.item.find("a").removeClass("noclick")}),tdom.on("sortstart",function(event,ui){return oldParentScope=ui.item.parent().scope(),ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgTaskboardSortable",["$tgRepo","$tgResources","$rootScope",TaskboardSortableDirective])}.call(this),function(){var KanbanArchivedStatusHeaderDirective,KanbanArchivedStatusIntroDirective,KanbanController,KanbanDirective,KanbanSquishColumnDirective,KanbanUserDirective,KanbanUserstoryDirective,KanbanWipLimitDirective,bindMethods,bindOnce,defaultViewMode,defaultViewModes,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaKanban"),defaultViewMode="maximized",defaultViewModes={maximized:{cardClass:"kanban-task-maximized"},minimized:{cardClass:"kanban-task-minimized"}},KanbanController=function(superClass){function KanbanController(scope,rootscope,repo,confirm,rs1,params1,q,location,appTitle,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs1,this.params=params1,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Kanban",this.scope.statusViewModes={},this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Kanban - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(KanbanController,superClass),KanbanController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],KanbanController.prototype.initializeEventHandlers=function(){return this.scope.$on("usform:new:success",function(_this){return function(){return _this.loadUserstories(),_this.refreshTagsColors(),_this.analytics.trackEvent("userstory","create","create userstory on kanban",1)}}(this)),this.scope.$on("usform:bulk:success",function(_this){return function(){return _this.loadUserstories(),_this.analytics.trackEvent("userstory","create","bulk create userstory on kanban",1)}}(this)),this.scope.$on("usform:edit:success",function(_this){return function(){return _this.loadUserstories(),_this.refreshTagsColors()}}(this)),this.scope.$on("assigned-to:added",this.onAssignedToChanged),this.scope.$on("kanban:us:move",this.moveUs),this.scope.$on("kanban:show-userstories-for-status",this.loadUserStoriesForStatus),this.scope.$on("kanban:hide-userstories-for-status",this.hideUserStoriesForStatus)},KanbanController.prototype.addNewUs=function(type,statusId){switch(type){case"standard":return this.rootscope.$broadcast("usform:new",this.scope.projectId,statusId,this.scope.usStatusList);case"bulk":return this.rootscope.$broadcast("usform:bulk",this.scope.projectId,statusId)}},KanbanController.prototype.changeUsAssignedTo=function(us){return this.rootscope.$broadcast("assigned-to:add",us)},KanbanController.prototype.onAssignedToChanged=function(ctx,userid,us){var promise;return us.assigned_to=userid,promise=this.repo.save(us),promise.then(null,function(){return console.log("FAIL")})},KanbanController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},KanbanController.prototype.loadUserstories=function(){var params;return params={status__is_archived:!1},this.rs.userstories.listAll(this.scope.projectId,params).then(function(_this){return function(userstories){var i,j,k,len,len1,len2,ref,ref1,ref2,status,us,usByStatus,us_archived;for(_this.scope.userstories=userstories,usByStatus=_.groupBy(userstories,"status"),us_archived=[],ref=_this.scope.usStatusList,i=0,len=ref.length;len>i;i++){if(status=ref[i],null==usByStatus[status.id]&&(usByStatus[status.id]=[]),null!=_this.scope.usByStatus)for(ref1=_this.scope.usByStatus[status.id],j=0,len1=ref1.length;len1>j;j++)us=ref1[j],us.status!==status.id&&us_archived.push(us);if(status.is_archived&&null!=_this.scope.usByStatus&&0!==_this.scope.usByStatus[status.id].length)for(ref2=_this.scope.usByStatus[status.id].concat(us_archived),k=0,len2=ref2.length;len2>k;k++)us=ref2[k],us.status===status.id&&usByStatus[status.id].push(us);usByStatus[status.id]=_.sortBy(usByStatus[status.id],"kanban_order")}return _this.scope.usByStatus=usByStatus,scopeDefer(_this.scope,function(){return _this.scope.$broadcast("userstories:loaded",userstories)}),userstories}}(this))},KanbanController.prototype.loadUserStoriesForStatus=function(ctx,statusId){var params;return params={status:statusId},this.rs.userstories.listAll(this.scope.projectId,params).then(function(_this){return function(userstories){return _this.scope.usByStatus[statusId]=_.sortBy(userstories,"kanban_order"),_this.scope.$broadcast("kanban:shown-userstories-for-status",statusId,userstories),userstories}}(this))},KanbanController.prototype.hideUserStoriesForStatus=function(ctx,statusId){return this.scope.usByStatus[statusId]=[],this.scope.$broadcast("kanban:hidden-userstories-for-status",statusId)},KanbanController.prototype.loadKanban=function(){return this.q.all([this.refreshTagsColors(),this.loadUserstories()])},KanbanController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_kanban_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.projectId=project.id,_this.scope.points=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(x){return x.id}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.generateStatusViewModes(),_this.scope.$emit("project:loaded",project),project}}(this))},KanbanController.prototype.initializeSubscription=function(){var routingKey1;return routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.loadUserstories()}}(this))},KanbanController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription(),_this.loadKanban().then(function(){return _this.scope.$broadcast("redraw:wip") -})}}(this))},KanbanController.prototype.generateStatusViewModes=function(){var i,len,mode,ref,status,storedStatusViewModes;for(storedStatusViewModes=this.rs.kanban.getStatusViewModes(this.scope.projectId),this.scope.statusViewModes={},ref=this.scope.usStatusList,i=0,len=ref.length;len>i;i++)status=ref[i],mode=storedStatusViewModes[status.id],this.scope.statusViewModes[status.id]=_.has(defaultViewModes,mode)?mode:defaultViewMode;return this.storeStatusViewModes()},KanbanController.prototype.storeStatusViewModes=function(){return this.rs.kanban.storeStatusViewModes(this.scope.projectId,this.scope.statusViewModes)},KanbanController.prototype.updateStatusViewMode=function(statusId,newViewMode){return this.scope.statusViewModes[statusId]=newViewMode,this.storeStatusViewModes()},KanbanController.prototype.getCardClass=function(statusId){var mode;return mode=this.scope.statusViewModes[statusId]||defaultViewMode,defaultViewModes[mode].cardClass||defaultViewModes[defaultViewMode].cardClass},KanbanController.prototype.prepareBulkUpdateData=function(uses,field){return null==field&&(field="kanban_order"),_.map(uses,function(x){return{us_id:x.id,order:x[field]}})},KanbanController.prototype.resortUserStories=function(uses){var i,index,item,items,len;for(items=[],index=i=0,len=uses.length;len>i;index=++i)item=uses[index],item.kanban_order=index,item.isModified()&&items.push(item);return items},KanbanController.prototype.moveUs=function(ctx,us,oldStatusId,newStatusId,index){var itemsToSave,promise,r;return oldStatusId!==newStatusId?(r=this.scope.usByStatus[oldStatusId].indexOf(us),this.scope.usByStatus[oldStatusId].splice(r,1),this.scope.usByStatus[newStatusId].splice(index,0,us),us.status=newStatusId):(r=this.scope.usByStatus[newStatusId].indexOf(us),this.scope.usByStatus[newStatusId].splice(r,1),this.scope.usByStatus[newStatusId].splice(index,0,us)),itemsToSave=this.resortUserStories(this.scope.usByStatus[newStatusId]),this.scope.usByStatus[newStatusId]=_.sortBy(this.scope.usByStatus[newStatusId],"kanban_order"),promise=this.repo.save(us),promise=promise.then(function(_this){return function(){var data;return itemsToSave=_.reject(itemsToSave,{id:us.id}),data=_this.prepareBulkUpdateData(itemsToSave),_this.rs.userstories.bulkUpdateKanbanOrder(us.project,data).then(function(){return itemsToSave})}}(this))},KanbanController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("KanbanController",KanbanController),KanbanDirective=function(){var link;return link=function($scope,$el){var tableBodyDom;return tableBodyDom=$el.find(".kanban-table-body"),tableBodyDom.on("scroll",function(event){var tableHeaderDom,target;return target=angular.element(event.currentTarget),tableHeaderDom=$el.find(".kanban-table-header .kanban-table-inner"),tableHeaderDom.css("left",-1*target.scrollLeft())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanban",["$tgRepo","$rootScope",KanbanDirective]),KanbanArchivedStatusHeaderDirective=function($rootscope){var hideArchivedText,link,showArchivedText;return showArchivedText="Show archived",hideArchivedText="Hide archived",link=function($scope,$el,$attrs){var hidden,status;return status=$scope.$eval($attrs.tgKanbanArchivedStatusHeader),hidden=!0,$scope["class"]="icon icon-open-eye",$scope.title=showArchivedText,$el.on("click",function(){return hidden=!hidden,$scope.$apply(function(){return hidden?($scope["class"]="icon icon-open-eye",$scope.title=showArchivedText,$rootscope.$broadcast("kanban:hide-userstories-for-status",status.id)):($scope["class"]="icon icon-closed-eye",$scope.title=hideArchivedText,$rootscope.$broadcast("kanban:show-userstories-for-status",status.id))})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanArchivedStatusHeader",["$rootScope",KanbanArchivedStatusHeaderDirective]),KanbanArchivedStatusIntroDirective=function(){var hiddenUserStoriexText,link,userStories;return hiddenUserStoriexText="The user stories in this status are hidden by default",userStories=[],link=function($scope,$el,$attrs){var status,updateIntroText;return status=$scope.$eval($attrs.tgKanbanArchivedStatusIntro),$el.text(hiddenUserStoriexText),updateIntroText=function(){return $el.text(userStories.length>0?"":hiddenUserStoriexText)},$scope.$on("kanban:us:move",function(ctx,itemUs,oldStatusId,newStatusId,itemIndex){var r;return status.id===newStatusId?status.id===oldStatusId?(r=userStories.indexOf(itemUs),userStories.splice(r,1),userStories.splice(itemIndex,0,itemUs)):(itemUs.isArchived=!0,userStories.splice(itemIndex,0,itemUs)):status.id===oldStatusId&&(itemUs.isArchived=!1,r=userStories.indexOf(itemUs),userStories.splice(r,1)),updateIntroText()}),$scope.$on("kanban:shown-userstories-for-status",function(ctx,statusId,userStoriesLoaded){return statusId===status.id?(userStories=_.filter(userStoriesLoaded,function(us){return us.status===status.id}),updateIntroText()):void 0}),$scope.$on("kanban:hidden-userstories-for-status",function(ctx,statusId){return statusId===status.id?(userStories=[],updateIntroText()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanArchivedStatusIntro",KanbanArchivedStatusIntroDirective),KanbanUserstoryDirective=function($rootscope){var link;return link=function($scope,$el,$attrs,$model){return $el.disableSelection(),$scope.$watch("us",function(us){return us.is_blocked&&!$el.hasClass("blocked")?$el.addClass("blocked"):!us.is_blocked&&$el.hasClass("blocked")?$el.removeClass("blocked"):void 0}),$el.find(".icon-edit").on("click",function(){return $el.find(".icon-edit").hasClass("noclick")?void 0:$scope.$apply(function(){return $rootscope.$broadcast("usform:edit",$model.$modelValue)})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"kanban/kanban-task.html",link:link,require:"ngModel"}},module.directive("tgKanbanUserstory",["$rootScope",KanbanUserstoryDirective]),KanbanSquishColumnDirective=function(rs){var link;return link=function($scope,$el){var updateTableWidth;return $scope.$on("project:loaded",function(event,project){return $scope.folds=rs.kanban.getStatusColumnModes(project.id),updateTableWidth()}),$scope.foldStatus=function(status){$scope.folds[status.id]=!$scope.folds[status.id],rs.kanban.storeStatusColumnModes($scope.projectId,$scope.folds),updateTableWidth()},updateTableWidth=function(){var columnWidths,totalWidth;return columnWidths=_.map($scope.usStatusList,function(status){return $scope.folds[status.id]?40:310}),totalWidth=_.reduce(columnWidths,function(total,width){return total+width}),$el.find(".kanban-table-inner").css("width",totalWidth)}},{link:link}},module.directive("tgKanbanSquishColumn",["$tgResources",KanbanSquishColumnDirective]),KanbanWipLimitDirective=function(){var link;return link=function($scope,$el,$attrs){var redrawWipLimit;return $el.disableSelection(),redrawWipLimit=function(){return $el.find(".kanban-wip-limit").remove(),timeout(200,function(){var element;return element=$el.find(".kanban-task")[$scope.$eval($attrs.tgKanbanWipLimit)],element?angular.element(element).before("
"):void 0})},$scope.$on("redraw:wip",redrawWipLimit),$scope.$on("kanban:us:move",redrawWipLimit),$scope.$on("usform:new:success",redrawWipLimit),$scope.$on("usform:bulk:success",redrawWipLimit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanWipLimit",KanbanWipLimitDirective),KanbanUserDirective=function($log){var clickable,link,template;return template=_.template('
\n class="not-clickable"<% } %>>\n <%- name %>\n \n
'),clickable=!1,link=function($scope,$el,$attrs,$model){var render,username_label,wtid;return username_label=$el.parent().find("a.task-assigned"),username_label.addClass("not-clickable"),$attrs.tgKanbanUserAvatar?(wtid=$scope.$watch($attrs.tgKanbanUserAvatar,function(v){var user;return null==$scope.usersById?($log.error("KanbanUserDirective requires userById set in scope."),wtid()):(user=$scope.usersById[v],render(user))}),render=function(user){var ctx,html;return ctx=void 0===user?{name:"Unassigned",imgurl:"/images/unnamed.png",clickable:clickable}:{name:user.full_name_display,imgurl:user.photo,clickable:clickable},html=template(ctx),$el.html(html),username_label.text(ctx.name)},bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?(clickable=!0,$el.on("click",function(){return function(){var $ctrl,us;if(!$el.find("a").hasClass("noclick"))return us=$model.$modelValue,$ctrl=$el.controller(),$ctrl.changeUsAssignedTo(us)}}(this)),username_label.removeClass("not-clickable"),username_label.on("click",function(){var $ctrl,us;if(!$el.find("a").hasClass("noclick"))return us=$model.$modelValue,$ctrl=$el.controller(),$ctrl.changeUsAssignedTo(us)})):void 0}),$scope.$on("$destroy",function(){return $el.off()})):$log.error("KanbanUserDirective: no attr is defined")},{link:link,require:"ngModel"}},module.directive("tgKanbanUserAvatar",["$log",KanbanUserDirective])}.call(this),function(){var KanbanSortableDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,module=angular.module("taigaKanban"),KanbanSortableDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){var deleteElement,itemEl,newParentScope,oldParentScope,tdom;if(project.my_permissions.indexOf("modify_us")>-1)return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el,deleteElement=function(itemEl){return itemEl.scope().$destroy(),itemEl.off(),itemEl.remove()},tdom.sortable({handle:".kanban-task-inner",dropOnEmpty:!0,connectWith:".kanban-uses-box",revert:400}),tdom.on("sortstop",function(event,ui){var itemIndex,itemUs,newStatusId,oldStatusId,parentEl;return parentEl=ui.item.parent(),itemEl=ui.item,itemUs=itemEl.scope().us,itemIndex=itemEl.index(),newParentScope=parentEl.scope(),newStatusId=newParentScope.s.id,oldStatusId=oldParentScope.s.id,newStatusId!==oldStatusId&&deleteElement(itemEl),$scope.$apply(function(){return $rootscope.$broadcast("kanban:us:move",itemUs,itemUs.status,newStatusId,itemIndex)}),ui.item.find("a").removeClass("noclick")}),tdom.on("sortstart",function(event,ui){return oldParentScope=ui.item.parent().scope(),ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanSortable",["$tgRepo","$tgResources","$rootScope",KanbanSortableDirective])}.call(this),function(){var IssueDetailController,IssuePriorityButtonDirective,IssueSeverityButtonDirective,IssueStatusButtonDirective,IssueStatusDisplayDirective,IssueTypeButtonDirective,PromoteIssueToUsButtonDirective,bindOnce,groupBy,joinStr,mixOf,module,taiga,toString,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaIssues"),IssueDetailController=function(superClass){function IssueDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,analytics,navUrls,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.analytics=analytics,this.navUrls=navUrls,this.scope.issueRef=this.params.issueref,this.scope.sectionName="Issue Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.issue.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(IssueDetailController,superClass),IssueDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgAnalytics","$tgNavUrls","tgLoader"],IssueDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("attachment:create",function(_this){return function(){return _this.rootscope.$broadcast("history:reload"),_this.analytics.trackEvent("attachment","create","create attachment on issue",1)}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("promote-issue-to-us:success",function(_this){return function(){return _this.analytics.trackEvent("issue","promoteToUserstory","promote issue to userstory",1),_this.rootscope.$broadcast("history:reload"),_this.loadIssue()}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},IssueDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;return ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.scope.project.is_issues_activated?this.navUrls.resolve("project-issues",ctx):this.navUrls.resolve("project",ctx)},IssueDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.issue_statuses,_this.scope.statusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.typeById=groupBy(project.issue_types,function(x){return x.id}),_this.scope.typeList=_.sortBy(project.issue_types,"order"),_this.scope.severityList=project.severities,_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.priorityList=project.priorities,_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},IssueDetailController.prototype.loadIssue=function(){return this.rs.issues.getByRef(this.scope.projectId,this.params.issueref).then(function(_this){return function(issue){var ctx;return _this.scope.issue=issue,_this.scope.issueId=issue.id,_this.scope.commentModel=issue,null!=_this.scope.issue.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.issue.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-issues-detail",ctx)),null!=_this.scope.issue.neighbors.next.ref?(ctx={project:_this.scope.project.slug,ref:_this.scope.issue.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-issues-detail",ctx)):void 0}}(this))},IssueDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadIssue()}}(this))},IssueDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("IssueDetailController",IssueDetailController),IssueStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(issue){var html;return html=template({status:$scope.statusById[issue.status]}),$el.html(html)},$scope.$watch($attrs.ngModel,function(issue){return null!=issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueStatusDisplay",["$tgTemplate",IssueStatusDisplayDirective]),IssueStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issues-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,status;return status=$scope.statusById[issue.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(statusId){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.status=statusId,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),save(target.data("status-id"))):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueStatusButtonDirective]),IssueTypeButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-type-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,type;return type=$scope.typeById[issue.type],html=template({type:type,typees:$scope.typeList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(type){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.type=type,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".type-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-type").popover().open():void 0}),$el.on("click",".type",function(event){var target,type;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),type=target.data("type-id"),save(type)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueTypeButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueTypeButtonDirective]),IssueSeverityButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-severity-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,severity;return severity=$scope.severityById[issue.severity],html=template({severity:severity,severityes:$scope.severityList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(severity){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.severity=severity,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".severity-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-severity").popover().open():void 0}),$el.on("click",".severity",function(event){var severity,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),severity=target.data("severity-id"),save(severity)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueSeverityButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueSeverityButtonDirective]),IssuePriorityButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-priority-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,priority;return priority=$scope.priorityById[issue.priority],html=template({priority:priority,priorityes:$scope.priorityList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(priority){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.priority=priority,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".priority-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-priority").popover().open():void 0}),$el.on("click",".priority",function(event){var priority,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),priority=target.data("priority-id"),save(priority)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssuePriorityButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssuePriorityButtonDirective]),PromoteIssueToUsButtonDirective=function($rootScope,$repo,$confirm,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var save;return save=$qqueue.bindAdd(function(){return function(issue,finish){var data,onError,onSuccess;return data={generated_from_issue:issue.id,project:issue.project,subject:issue.subject,description:issue.description,tags:issue.tags,is_blocked:issue.is_blocked,blocked_note:issue.blocked_note},onSuccess=function(){return finish(),$confirm.notify("success"),$rootScope.$broadcast("promote-issue-to-us:success")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.create("userstories",data).then(onSuccess,onError)}}(this)),$el.on("click","a",function(event){var issue,message,subtitle,title;return event.preventDefault(),issue=$model.$modelValue,title="Promote this issue to a new user story",message="Are you sure you want to create a new US from this Issue?",subtitle=issue.subject,$confirm.ask(title,subtitle,message).then(function(){return function(finish){return save(issue,finish)}}(this))}),$scope.$on("$destroy",function(){return $el.off()})},{restrict:"AE",require:"ngModel",templateUrl:"issue/promote-issue-to-us-button.html",link:link}},module.directive("tgPromoteIssueToUsButton",["$rootScope","$tgRepo","$tgConfirm","$tgQqueue",PromoteIssueToUsButtonDirective])}.call(this),function(){var CreateBulkIssuesDirective,CreateIssueDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaIssues"),CreateIssueDirective=function($repo,$confirm,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley(),$scope.issue={},$scope.$on("issueform:new",function(ctx,project){return $el.find(".tag-input").val(""),lightboxService.open($el),$scope.issue={project:project.id,subject:"",status:project.default_issue_status,type:project.default_issue_type,priority:project.default_priority,severity:project.default_severity,tags:[]}}),$scope.$on("$destroy",function(){return $el.off()}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.create("issues",$scope.issue),promise.then(function(data){return $loading.finish(submitButton),$rootscope.$broadcast("issueform:new:success",data),lightboxService.close($el),$confirm.notify("success")}),promise.then(null,function(){return $loading.finish(submitButton),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgLbCreateIssue",["$tgRepo","$tgConfirm","$rootScope","lightboxService","$tgLoading",CreateIssueDirective]),CreateBulkIssuesDirective=function($repo,$rs,$confirm,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.$on("issueform:bulk",function(ctx,projectId){return lightboxService.open($el),$scope["new"]={projectId:projectId,bulk:""}}),submit=debounce(2e3,function(){return function(event){var data,form,projectId,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),data=$scope["new"].bulk,projectId=$scope["new"].projectId,promise=$rs.issues.bulkCreate(projectId,data),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("issueform:new:success",result),lightboxService.close($el),$confirm.notify("success")}),promise.then(null,function(){return $loading.finish(submitButton),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateBulkIssues",["$tgRepo","$tgResources","$tgConfirm","$rootScope","$tgLoading","lightboxService",CreateBulkIssuesDirective])}.call(this),function(){var IssueAssignedToInlineEditionDirective,IssueStatusInlineEditionDirective,IssuesController,IssuesDirective,IssuesFiltersDirective,bindOnce,debounceLeading,groupBy,joinStr,mixOf,module,startswith,taiga,toString,trim,bind=function(fn,me){return function(){return fn.apply(me,arguments)}},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounceLeading=this.taiga.debounceLeading,startswith=this.taiga.startswith,module=angular.module("taigaIssues"),IssuesController=function(superClass){function IssuesController(scope,rootscope,repo,confirm,rs,urls,params,q,location,appTitle,navUrls,events,analytics,tgLoader){var filters,promise;return this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.urls=urls,this.params=params,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,this.loadIssues=bind(this.loadIssues,this),this.scope.sectionName="Issues",this.scope.filters={},_.isEmpty(this.location.search())?(filters=this.rs.issues.getFilters(this.params.pslug),filters.page=1,this.location.search(filters),void this.location.replace()):(promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Issues - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded),void this.scope.$on("issueform:new:success",function(_this){return function(){return _this.analytics.trackEvent("issue","create","create issue on issues list",1),_this.loadIssues(),_this.loadFilters()}}(this)))}return extend(IssuesController,superClass),IssuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$tgUrls","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],IssuesController.prototype.initializeSubscription=function(){var routingKey;return routingKey="changes.project."+this.scope.projectId+".issues",this.events.subscribe(this.scope,routingKey,function(_this){return function(){return _this.loadIssues()}}(this))},IssuesController.prototype.storeFilters=function(){return this.rs.issues.storeFilters(this.params.pslug,this.location.search())},IssuesController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_issues_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issueStatusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.severityList=_.sortBy(project.severities,"order"),_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.priorityList=_.sortBy(project.priorities,"order"),_this.scope.issueTypes=_.sortBy(project.issue_types,"order"),_this.scope.issueTypeById=groupBy(project.issue_types,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},IssuesController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page","tags","statuses","types","q","severities","priorities","assignedTo","createdBy","orderBy"),filters.page||(filters.page=1),filters},IssuesController.prototype.getUrlFilter=function(name){var filters;return filters=_.pick(this.location.search(),name),filters[name]},IssuesController.prototype.loadMyFilters=function(){return this.rs.issues.getMyFilters(this.scope.projectId).then(function(){return function(filters){return _.map(filters,function(value,key){return{id:key,name:key,type:"myFilters",selected:!1}})}}(this))},IssuesController.prototype.removeNotExistingFiltersFromUrl=function(){var currentSearch,existingValues,filterName,filterValue,splittedValues,urlfilters; -currentSearch=this.location.search(),urlfilters=this.getUrlFilters();for(filterName in urlfilters)filterValue=urlfilters[filterName],"page"!==filterName&&"orderBy"!==filterName&&"q"!==filterName&&(splittedValues="tags"===filterName?_.map((""+filterValue).split(",")):_.map((""+filterValue).split(","),function(x){return"null"===x?null:parseInt(x)}),existingValues=_.intersection(splittedValues,_.map(this.scope.filters[filterName],"id")),splittedValues.length!==existingValues.length&&this.location.search(filterName,existingValues.join()));return currentSearch!==this.location.search()?this.location.replace():void 0},IssuesController.prototype.markSelectedFilters=function(filters,urlfilters){var isSelected,j,key,len,name,obj,ref,ref1,results,searchdata,val,value;searchdata={},ref=_.omit(urlfilters,"page","orderBy");for(name in ref)for(value=ref[name],null==searchdata[name]&&(searchdata[name]={}),ref1=(""+value).split(","),j=0,len=ref1.length;len>j;j++)val=ref1[j],searchdata[name][val]=!0;isSelected=function(type,id){return null!=searchdata[type]&&searchdata[type][id]?!0:!1},results=[];for(key in filters)value=filters[key],results.push(function(){var k,len1,results1;for(results1=[],k=0,len1=value.length;len1>k;k++)obj=value[k],results1.push(obj.selected=isSelected(obj.type,obj.id)?!0:void 0);return results1}());return results},IssuesController.prototype.loadFilters=function(){var promise,urlfilters;return urlfilters=this.getUrlFilters(),urlfilters.q&&(this.scope.filtersQ=urlfilters.q),promise=this.loadMyFilters().then(function(_this){return function(myFilters){return _this.scope.filters.myFilters=myFilters,myFilters}}(this)),promise=promise.then(function(_this){return function(){return _this.rs.issues.filtersData(_this.scope.projectId)}}(this)),promise.then(function(_this){return function(data){var choicesFiltersFormat,tagsFilterFormat,usersFiltersFormat;return usersFiltersFormat=function(users,type,unknownOption){var reformatedUsers,unknownItem;return reformatedUsers=_.map(users,function(t){return{id:t[0],count:t[1],type:type,name:t[0]?_this.scope.usersById[t[0]].full_name_display:unknownOption}}),unknownItem=_.remove(reformatedUsers,function(u){return!u.id}),reformatedUsers=_.sortBy(reformatedUsers,function(u){return u.name.toUpperCase()}),unknownItem.length>0&&reformatedUsers.unshift(unknownItem[0]),reformatedUsers},choicesFiltersFormat=function(choices,type,byIdObject){return _.map(choices,function(t){return{id:t[0],name:byIdObject[t[0]].name,color:byIdObject[t[0]].color,count:t[1],type:type}})},tagsFilterFormat=function(tags){return _.map(tags,function(t){return{id:t[0],name:t[0],color:_this.scope.project.tags_colors[t[0]],count:t[1],type:"tags"}})},_this.scope.filters.statuses=choicesFiltersFormat(data.statuses,"statuses",_this.scope.issueStatusById),_this.scope.filters.severities=choicesFiltersFormat(data.severities,"severities",_this.scope.severityById),_this.scope.filters.priorities=choicesFiltersFormat(data.priorities,"priorities",_this.scope.priorityById),_this.scope.filters.assignedTo=usersFiltersFormat(data.assigned_to,"assignedTo","Unassigned"),_this.scope.filters.createdBy=usersFiltersFormat(data.created_by,"createdBy","Unknown"),_this.scope.filters.types=choicesFiltersFormat(data.types,"types",_this.scope.issueTypeById),_this.scope.filters.tags=tagsFilterFormat(data.tags),_this.removeNotExistingFiltersFromUrl(),_this.markSelectedFilters(_this.scope.filters,urlfilters),_this.rootscope.$broadcast("filters:loaded",_this.scope.filters)}}(this))},IssuesController.prototype.loadIssuesRequests=0,IssuesController.prototype.loadIssues=function(){var name,promise,ref,values;this.scope.urlFilters=this.getUrlFilters(),this.scope.httpParams={},ref=this.scope.urlFilters;for(name in ref)values=ref[name],"severities"===name?name="severity":"orderBy"===name?name="order_by":"priorities"===name?name="priority":"assignedTo"===name?name="assigned_to":"createdBy"===name?name="owner":"statuses"===name?name="status":"types"===name&&(name="type"),this.scope.httpParams[name]=values;return promise=this.rs.issues.list(this.scope.projectId,this.scope.httpParams),this.loadIssuesRequests+=1,promise.index=this.loadIssuesRequests,promise.then(function(_this){return function(data){return promise.index===_this.loadIssuesRequests&&(_this.scope.issues=data.models,_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy),data}}(this))},IssuesController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription(),_this.q.all([_this.loadFilters(),_this.loadIssues()])}}(this))},IssuesController.prototype.saveCurrentFiltersTo=function(newFilter){var deferred;return deferred=this.q.defer(),this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return filters[newFilter]=_this.location.search(),_this.rs.issues.storeMyFilters(_this.scope.projectId,filters).then(function(){return deferred.resolve()})}}(this)),deferred.promise},IssuesController.prototype.deleteMyFilter=function(filter){var deferred;return deferred=this.q.defer(),this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return delete filters[filter],_this.rs.issues.storeMyFilters(_this.scope.projectId,filters).then(function(){return deferred.resolve()})}}(this)),deferred.promise},IssuesController.prototype.addNewIssue=function(){return this.rootscope.$broadcast("issueform:new",this.scope.project)},IssuesController.prototype.addIssuesInBulk=function(){return this.rootscope.$broadcast("issueform:bulk",this.scope.projectId)},IssuesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("IssuesController",IssuesController),IssuesDirective=function($log,$location,$template){var link,linkOrdering,linkPagination,template;return template=$template.get("issue/issue-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".issues-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for($pagEl.show(),pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||pages.push(i===cpage?{classes:"active",num:i,type:"page-active"}:{classes:"page",num:i,type:"page"});return $pagEl.html(template(options))},$scope.$watch("issues",function(value){return value?renderPagination():void 0}),$el.on("click",".issues-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadIssues()})}),$el.on("click",".issues-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadIssues()})}),$el.on("click",".issues-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadIssues()})})},linkOrdering=function($scope,$el,$attrs,$ctrl){var colHeadElement,currentOrder,icon;return currentOrder=$ctrl.getUrlFilter("orderBy")||"created_date",currentOrder&&(icon=startswith(currentOrder,"-")?"icon-caret-up":"icon-caret-down",colHeadElement=$el.find(".row.title > div[data-fieldname='"+trim(currentOrder,"-")+"']"),colHeadElement.html(colHeadElement.html()+"")),$el.on("click",".row.title > div",function(event){var finalOrder,newOrder,target;return target=angular.element(event.currentTarget),currentOrder=$ctrl.getUrlFilter("orderBy"),newOrder=target.data("fieldname"),finalOrder=currentOrder===newOrder?"-"+newOrder:newOrder,$scope.$apply(function(){return $ctrl.replaceFilter("orderBy",finalOrder),$ctrl.storeFilters(),$ctrl.loadIssues().then(function(){return $el.find(".row.title > div > span.icon").remove(),icon=startswith(finalOrder,"-")?"icon-caret-up":"icon-caret-down",target.html(target.html()+"")})})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkOrdering($scope,$el,$attrs,$ctrl),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssues",["$log","$tgLocation","$tgTemplate",IssuesDirective]),IssuesFiltersDirective=function($log,$location,$rs,$confirm,$loading,$template){var link,template,templateSelected;return template=$template.get("issue/issues-filters.html",!0),templateSelected=$template.get("issue/issues-filters-selected.html",!0),link=function($scope,$el){var $ctrl,initializeSelectedFilters,renderFilters,renderSelectedFilters,selectQFilter,selectedFilters,showCategories,showFilters,toggleFilterSelection;return $ctrl=$el.closest(".wrapper").controller(),selectedFilters=[],showFilters=function(title,type){return $el.find(".filters-cats").hide(),$el.find(".filter-list").removeClass("hidden"),$el.find("h2.breadcrumb").removeClass("hidden"),$el.find("h2 a.subfilter span.title").html(title),$el.find("h2 a.subfilter span.title").prop("data-type",type)},showCategories=function(){return $el.find(".filters-cats").show(),$el.find(".filter-list").addClass("hidden"),$el.find("h2.breadcrumb").addClass("hidden")},initializeSelectedFilters=function(filters){var j,len,name,val,values;selectedFilters=[];for(name in filters)for(values=filters[name],j=0,len=values.length;len>j;j++)val=values[j],val.selected&&selectedFilters.push(val);return renderSelectedFilters(selectedFilters)},renderSelectedFilters=function(selectedFilters){var html;return _.filter(selectedFilters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=templateSelected({filters:selectedFilters}),$el.find(".filters-applied").html(html),selectedFilters.length>0?$el.find(".save-filters").show():$el.find(".save-filters").hide()},renderFilters=function(filters){var html;return _.filter(filters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=template({filters:filters}),$el.find(".filter-list").html(html)},toggleFilterSelection=function(type,id){var currentFiltersType,filter,filterId,filters;return"myFilters"===type?($rs.issues.getMyFilters($scope.projectId).then(function(data){var filters,myFilters;return myFilters=data,filters=myFilters[id],filters.page=1,$ctrl.replaceAllFilters(filters),$ctrl.storeFilters(),$ctrl.loadIssues(),$ctrl.markSelectedFilters($scope.filters,filters),initializeSelectedFilters($scope.filters)}),null):(filters=$scope.filters[type],filterId="tags"===type?taiga.toString(id):id,filter=_.find(filters,{id:filterId}),filter.selected=!filter.selected,null===id&&(id="null"),filter.selected?(selectedFilters.push(filter),$scope.$apply(function(){return $ctrl.selectFilter(type,id),$ctrl.selectFilter("page",1),$ctrl.storeFilters(),$ctrl.loadIssues()})):(selectedFilters=_.reject(selectedFilters,filter),$scope.$apply(function(){return $ctrl.unselectFilter(type,id),$ctrl.selectFilter("page",1),$ctrl.storeFilters(),$ctrl.loadIssues()})),renderSelectedFilters(selectedFilters),currentFiltersType=$el.find("h2 a.subfilter span.title").prop("data-type"),type===currentFiltersType?renderFilters(_.reject(filters,"selected")):void 0)},$scope.$on("filters:loaded",function(ctx,filters){return initializeSelectedFilters(filters)}),selectQFilter=debounceLeading(100,function(value){return void 0!==value?($ctrl.replaceFilter("page",null),0===value.length?($ctrl.replaceFilter("q",null),$ctrl.storeFilters()):($ctrl.replaceFilter("q",value),$ctrl.storeFilters()),$ctrl.loadIssues()):void 0}),$scope.$watch("filtersQ",selectQFilter),$el.on("click",".filters-cats > ul > li > a",function(event){var tags,target;return event.preventDefault(),target=angular.element(event.currentTarget),tags=$scope.filters[target.data("type")],renderFilters(_.reject(tags,"selected")),showFilters(target.attr("title"),target.data("type"))}),$el.on("click",".filters-inner > .filters-step-cat > .breadcrumb > .back",function(event){return event.preventDefault(),showCategories($el)}),$el.on("click",".filters-applied a",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),id=target.data("id")||null,type=target.data("type"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),target.toggleClass("active"),id=target.data("id")||null,type=target.data("type"),"myFilters"===type&&target.removeClass("active"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter .icon-delete",function(event){var customFilterName,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),customFilterName=target.parent().data("id"),title="Delete custom filter",message="the custom filter '"+customFilterName+"'",$confirm.askOnDelete(title,message).then(function(finish){var promise;return promise=$ctrl.deleteMyFilter(customFilterName),promise.then(function(){return promise=$ctrl.loadMyFilters(),promise.then(function(filters){return finish(),$scope.filters.myFilters=filters,renderFilters($scope.filters.myFilters)}),promise.then(null,function(){return finish()})}),promise.then(null,function(){return finish(!1),$confirm.notify("error")})})}),$el.on("click",".save-filters",function(event){return event.preventDefault(),renderFilters($scope.filters.myFilters),showFilters("My filters","myFilters"),$el.find(".save-filters").hide(),$el.find(".my-filter-name").removeClass("hidden"),$el.find(".my-filter-name").focus()}),$el.on("keyup",".my-filter-name",function(event){var newFilter,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newFilter=target.val(),$loading.start($el.find(".new")),promise=$ctrl.saveCurrentFiltersTo(newFilter),promise.then(function(){var loadPromise;return loadPromise=$ctrl.loadMyFilters(),loadPromise.then(function(filters){var currentfilterstype;return $loading.finish($el.find(".new")),$scope.filters.myFilters=filters,currentfilterstype=$el.find("h2 a.subfilter span.title").prop("data-type"),"myFilters"===currentfilterstype&&renderFilters($scope.filters.myFilters),$el.find(".my-filter-name").addClass("hidden"),$el.find(".save-filters").show()}),loadPromise.then(null,function(){return $loading.finish($el.find(".new")),$confirm.notify("error","Error loading custom filters")})}),promise.then(null,function(){return $loading.finish($el.find(".new")),$el.find(".my-filter-name").val(newFilter).focus().select(),$confirm.notify("error","Filter not saved")})):27===event.keyCode?($el.find(".my-filter-name").val(""),$el.find(".my-filter-name").addClass("hidden"),$el.find(".save-filters").show()):void 0})},{link:link}},module.directive("tgIssuesFilters",["$log","$tgLocation","$tgResources","$tgConfirm","$tgLoading","$tgTemplate",IssuesFiltersDirective]),IssueStatusInlineEditionDirective=function($repo,$template){var link,selectionTemplate,updateIssueStatus;return selectionTemplate=$template.get("issue/issue-status-inline-edition-selection.html",!0),updateIssueStatus=function($el,issue,issueStatusById){var issueStatusDom,issueStatusDomParent,status;return issueStatusDomParent=$el.find(".issue-status"),issueStatusDom=$el.find(".issue-status .issue-status-bind"),status=issueStatusById[issue.status],status?(issueStatusDom.text(status.name),issueStatusDom.prop("title",status.name),issueStatusDomParent.css("color",status.color)):void 0},link=function($scope,$el,$attrs){var $ctrl,issue;return $ctrl=$el.controller(),issue=$scope.$eval($attrs.tgIssueStatusInlineEdition),$el.on("click",".issue-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),issue.status=target.data("status-id"),$el.find(".pop-status").popover().close(),updateIssueStatus($el,issue,$scope.issueStatusById),$scope.$apply(function(){return $repo.save(issue).then})}),taiga.bindOnce($scope,"project",function(project){return $el.append(selectionTemplate({statuses:project.issue_statuses})),updateIssueStatus($el,issue,$scope.issueStatusById),-1===project.my_permissions.indexOf("modify_issue")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$watch($attrs.tgIssueStatusInlineEdition,function(){return function(val){return updateIssueStatus($el,val,$scope.issueStatusById)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssueStatusInlineEdition",["$tgRepo","$tgTemplate",IssueStatusInlineEditionDirective]),IssueAssignedToInlineEditionDirective=function($repo,$rootscope){var link,template;return template=_.template('<%- name %>\n
<%- name %>
'),link=function($scope,$el,$attrs){var $ctrl,issue,updateIssue;return updateIssue=function(issue){var ctx,member;return ctx={name:"Unassigned",imgurl:"/images/unnamed.png"},member=$scope.usersById[issue.assigned_to],member&&(ctx.imgurl=member.photo,ctx.name=member.full_name_display),$el.find(".avatar").html(template(ctx)),$el.find(".issue-assignedto").attr("title",ctx.name)},$ctrl=$el.controller(),issue=$scope.$eval($attrs.tgIssueAssignedToInlineEdition),updateIssue(issue),$el.on("click",".issue-assignedto",function(){return $rootscope.$broadcast("assigned-to:add",issue)}),taiga.bindOnce($scope,"project",function(project){return-1===project.my_permissions.indexOf("modify_issue")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("assigned-to:added",function(){return function(ctx,userId,updatedIssue){return updatedIssue.id===issue.id?(updatedIssue.assigned_to=userId,$repo.save(updatedIssue),updateIssue(updatedIssue)):void 0}}(this)),$scope.$watch($attrs.tgIssueAssignedToInlineEdition,function(){return function(val){return updateIssue(val)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssueAssignedToInlineEdition",["$tgRepo","$rootScope",IssueAssignedToInlineEditionDirective])}.call(this),function(){var UsClientRequirementButtonDirective,UsStatusButtonDirective,UsStatusDisplayDirective,UsTasksProgressDisplayDirective,UsTeamRequirementButtonDirective,UserStoryDetailController,bindOnce,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaUserStories"),UserStoryDetailController=function(superClass){function UserStoryDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,navUrls,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.usRef=this.params.usref,this.scope.sectionName="User Story Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.us.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(UserStoryDetailController,superClass),UserStoryDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],UserStoryDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("related-tasks:update",function(_this){return function(){return _this.loadUs(),_this.scope.tasks=_.clone(_this.scope.tasks,!1)}}(this)),this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on userstory",1),_this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},UserStoryDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;return ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx),this.scope.project.is_backlog_activated?this.scope.us.milestone?(ctx.sprint=this.scope.sprint.slug,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-taskboard",ctx)):this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-backlog",ctx):this.scope.project.is_kanban_activated?this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-kanban",ctx):void 0},UserStoryDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.us_statuses,_this.scope.statusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.taskStatusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(_this.scope.pointsList,function(e){return e.id}),project}}(this))},UserStoryDetailController.prototype.loadUs=function(){return this.rs.userstories.getByRef(this.scope.projectId,this.params.usref).then(function(_this){return function(us){var ctx;return _this.scope.us=us,_this.scope.usId=us.id,_this.scope.commentModel=us,null!=_this.scope.us.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.us.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-userstories-detail",ctx)),null!=_this.scope.us.neighbors.next.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.us.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-userstories-detail",ctx)),us}}(this))},UserStoryDetailController.prototype.loadSprint=function(){return this.scope.us.milestone?this.rs.sprints.get(this.scope.us.project,this.scope.us.milestone).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,sprint}}(this)):void 0},UserStoryDetailController.prototype.loadTasks=function(){return this.rs.tasks.list(this.scope.projectId,null,this.scope.usId).then(function(_this){return function(tasks){return _this.scope.tasks=tasks,tasks}}(this))},UserStoryDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadUs().then(function(){return _this.q.all([_this.loadSprint(),_this.loadTasks()])})}}(this))},UserStoryDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserStoryDetailController",UserStoryDetailController),UsStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(us){var html;return html=template({is_closed:us.is_closed,status:$scope.statusById[us.status]}),$el.html(html)},$scope.$watch($attrs.ngModel,function(us){return null!=us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsStatusDisplay",["$tgTemplate",UsStatusDisplayDirective]),UsTasksProgressDisplayDirective=function($template){var link,template;return template=$template.get("us/us-task-progress.html",!0),link=function($scope,$el,$attrs){var render;return render=function(tasks){var html,progress,totalClosedTasks,totalTasks;return totalTasks=tasks.length,totalClosedTasks=_.filter(tasks,function(){return function(task){return $scope.taskStatusById[task.status].is_closed}}(this)).length,progress=totalTasks>0?100*totalClosedTasks/totalTasks:0,html=template({totalTasks:totalTasks,totalClosedTasks:totalClosedTasks,progress:progress}),$el.html(html)},$scope.$watch($attrs.ngModel,function(tasks){return null!=tasks?render(tasks):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsTasksProgressDisplay",["$tgTemplate",UsTasksProgressDisplayDirective]),UsStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(){return function(us){var html,status;return status=$scope.statusById[us.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(status){var onError,onSuccess,us;return us=$model.$modelValue.clone(),us.status=status,$.fn.popover().closeAll(),$model.$setViewValue(us),onSuccess=function(){return $confirm.notify("success"),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),us.revert(),$model.$setViewValue(us),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save($model.$modelValue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var status,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),status=target.data("status-id"),save(status)):void 0}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsStatusButtonDirective]),UsTeamRequirementButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-team-requirement-button.html",!0),link=function($scope,$el,$attrs,$model){var canEdit,render,save;return canEdit=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(us){var ctx,html;return canEdit()||us.team_requirement?(ctx={canEdit:canEdit(),isRequired:us.team_requirement},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(team_requirement){var promise,us;return us=$model.$modelValue.clone(),us.team_requirement=team_requirement,$model.$setViewValue(us),$loading.start($el.find("label")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $loading.finish($el.find("label")),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $loading.finish($el.find("label")),$confirm.notify("error"),us.revert(),$model.$setViewValue(us)})}}(this)),$el.on("click",".team-requirement",function(){var team_requirement;if(canEdit())return team_requirement=!$model.$modelValue.team_requirement,save(team_requirement)}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsTeamRequirementButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsTeamRequirementButtonDirective]),UsClientRequirementButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-client-requirement-button.html",!0),link=function($scope,$el,$attrs,$model){var canEdit,render,save;return canEdit=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(us){var ctx,html;return canEdit()||us.client_requirement?(ctx={canEdit:canEdit(),isRequired:us.client_requirement},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(client_requirement){var promise,us;return us=$model.$modelValue.clone(),us.client_requirement=client_requirement,$model.$setViewValue(us),$loading.start($el.find("label")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $loading.finish($el.find("label")),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $loading.finish($el.find("label")),$confirm.notify("error"),us.revert(),$model.$setViewValue(us)})}}(this)),$el.on("click",".client-requirement",function(){var client_requirement;if(canEdit())return client_requirement=!$model.$modelValue.client_requirement,save(client_requirement)}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsClientRequirementButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsClientRequirementButtonDirective])}.call(this),function(){var TaskDetailController,TaskIsIocaineButtonDirective,TaskStatusButtonDirective,TaskStatusDisplayDirective,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,module=angular.module("taigaTasks"),TaskDetailController=function(superClass){function TaskDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,navUrls,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.taskRef=this.params.taskref,this.scope.sectionName="Task Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.task.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl() -}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TaskDetailController,superClass),TaskDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],TaskDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on task",1),_this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},TaskDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;if(ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx),this.scope.project.is_backlog_activated){if(this.scope.task.milestone)return ctx.sprint=this.scope.sprint.slug,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-taskboard",ctx);if(this.scope.task.us)return ctx.ref=this.scope.us.ref,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-userstories-detail",ctx)}else if(this.scope.project.is_kanban_activated&&this.scope.us)return ctx.ref=this.scope.us.ref,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-userstories-detail",ctx)},TaskDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.task_statuses,_this.scope.statusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},TaskDetailController.prototype.loadTask=function(){return this.rs.tasks.getByRef(this.scope.projectId,this.params.taskref).then(function(_this){return function(task){var ctx;return _this.scope.task=task,_this.scope.taskId=task.id,_this.scope.commentModel=task,null!=_this.scope.task.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.task.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-tasks-detail",ctx)),null!=_this.scope.task.neighbors.next.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.task.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-tasks-detail",ctx)),task}}(this))},TaskDetailController.prototype.loadSprint=function(){return this.scope.task.milestone?this.rs.sprints.get(this.scope.task.project,this.scope.task.milestone).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,sprint}}(this)):void 0},TaskDetailController.prototype.loadUserStory=function(){return this.scope.task.user_story?this.rs.userstories.get(this.scope.task.project,this.scope.task.user_story).then(function(_this){return function(us){return _this.scope.us=us,us}}(this)):void 0},TaskDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadTask().then(function(){return _this.q.all([_this.loadSprint(),_this.loadUserStory()])})}}(this))},TaskDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TaskDetailController",TaskDetailController),TaskStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(task){var html;return html=template({status:$scope.statusById[task.status]}),$el.html(html)},$scope.$watch($attrs.ngModel,function(task){return null!=task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskStatusDisplay",["$tgTemplate",TaskStatusDisplayDirective]),TaskStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue){var link,template;return template=_.template('
\n \n <%- status.name %>\n <% if(editable){ %><% }%>\n status\n\n
    \n <% _.each(statuses, function(st) { %>\n
  • <%- st.name %>
  • \n <% }); %>\n
\n
'),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_task")},render=function(){return function(task){var html,status;return status=$scope.statusById[task.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(status){var onError,onSuccess,task;return task=$model.$modelValue.clone(),task.status=status,$model.$setViewValue(task),onSuccess=function(){return $confirm.notify("success"),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),task.revert(),$model.$setViewValue(task),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save($model.$modelValue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),$.fn.popover().closeAll(),save(target.data("status-id"))):void 0}),$scope.$watch($attrs.ngModel,function(task){return task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue",TaskStatusButtonDirective]),TaskIsIocaineButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue){var link,template;return template=_.template('
\n \n \n
'),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_task")},render=function(task){var ctx,html;return isEditable()||task.is_iocaine?(ctx={isIocaine:task.is_iocaine,isEditable:isEditable()},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(is_iocaine){var promise,task;return task=$model.$modelValue.clone(),task.is_iocaine=is_iocaine,$model.$setViewValue(task),$loading.start($el.find("label")),promise=$tgrepo.save(task),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return task.revert(),$model.$setViewValue(task),$confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find("label"))})}}(this)),$el.on("click",".is-iocaine",function(){var is_iocaine;if(isEditable())return is_iocaine=!$model.$modelValue.is_iocaine,save(is_iocaine)}),$scope.$watch($attrs.ngModel,function(task){return task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskIsIocaineButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue",TaskIsIocaineButtonDirective])}.call(this),function(){var LeaveProjectDirective,TeamController,TeamFiltersDirective,TeamMemberCurrentUserDirective,TeamMemberStatsDirective,TeamMembersDirective,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,module=angular.module("taigaTeam"),TeamController=function(superClass){function TeamController(scope,rootscope,repo,rs,params,q,location,navUrls,appTitle,auth,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.auth=auth,this.scope.sectionName="Team",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Team - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TeamController,superClass),TeamController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$location","$tgNavUrls","$appTitle","$tgAuth","tgLoader"],TeamController.prototype.setRole=function(role){return this.scope.filtersRole=role?role:null},TeamController.prototype.loadMembers=function(){return this.rs.memberships.list(this.scope.projectId,{},!1).then(function(_this){return function(data){var currentUser,i,len,membership,ref;for(currentUser=_this.auth.getUser(),null!=currentUser&&null==currentUser.photo&&(currentUser.photo="/images/unnamed.png"),_this.scope.currentUser=_.find(data,function(membership){return null!=currentUser&&membership.user===currentUser.id}),_this.scope.totals={},_.forEach(data,function(membership){return _this.scope.totals[membership.user]=0}),_this.scope.memberships=_.filter(data,function(membership){return membership.user&&(null==currentUser||membership.user!==currentUser.id)&&membership.is_user_active?membership:void 0}),ref=_this.scope.memberships,i=0,len=ref.length;len>i;i++)membership=ref[i],null==membership.photo&&(membership.photo="/images/unnamed.png");return data}}(this))},TeamController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issuesEnabled=project.is_issues_activated,_this.scope.tasksEnabled=project.is_kanban_activated||project.is_backlog_activated,_this.scope.wikiEnabled=project.is_wiki_activated,project}}(this))},TeamController.prototype.loadMemberStats=function(){return this.rs.projects.memberStats(this.scope.projectId).then(function(_this){return function(stats){var totals;return totals={},_.forEach(_this.scope.totals,function(total,userId){var vals;return vals=_.map(stats,function(memberStats){return memberStats[userId]}),total=_.reduce(vals,function(sum,el){return sum+el}),_this.scope.totals[userId]=total}),_this.scope.stats=_this.processStats(stats),_this.scope.stats.totals=_this.scope.totals}}(this))},TeamController.prototype.processStat=function(stat){var max,min,singleStat;return max=_.max(stat),min=_.min(stat),singleStat=_.map(stat,function(value,key){return value===min?[key,.1]:value===max?[key,1]:[key,.5*value/max]}),singleStat=_.object(singleStat)},TeamController.prototype.processStats=function(stats){var key,value;for(key in stats)value=stats[key],stats[key]=this.processStat(value);return stats},TeamController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadMembers().then(function(){return _this.loadMemberStats()})}}(this))},TeamController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TeamController",TeamController),TeamFiltersDirective=function(){return{templateUrl:"team/team-filter.html"}},module.directive("tgTeamFilters",[TeamFiltersDirective]),TeamMemberStatsDirective=function(){return{templateUrl:"team/team-member-stats.html",scope:{stats:"=",userId:"=user",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamMemberStats",TeamMemberStatsDirective),TeamMemberCurrentUserDirective=function(){return{templateUrl:"team/team-member-current-user.html",scope:{projectId:"=projectid",currentUser:"=currentuser",stats:"=",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamCurrentUser",TeamMemberCurrentUserDirective),TeamMembersDirective=function(){var template;return template="team/team-members.html",{templateUrl:template,scope:{memberships:"=",filtersQ:"=filtersq",filtersRole:"=filtersrole",stats:"=",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamMembers",TeamMembersDirective),LeaveProjectDirective=function($repo,$confirm,$location,$rs,$navurls){var link;return link=function($scope,$el,$attrs){return $scope.leave=function(){return $confirm.ask("Leave this project","Are you sure you want to leave the project?").then(function(){return function(finish){var promise;return promise=$rs.projects.leave($attrs.projectid),promise.then(function(){return finish(),$confirm.notify("success"),$location.path($navurls.resolve("home"))}),promise.then(null,function(response){return finish(),$confirm.notify("error",response.data._error_message)})}}(this))}},{scope:{},templateUrl:"team/leave-project.html",link:link}},module.directive("tgLeaveProject",["$tgRepo","$tgConfirm","$tgLocation","$tgResources","$tgNavUrls",LeaveProjectDirective]),module.filter("membersRoleFilter",function(){return function(input,filtersRole){return null!=filtersRole?_.filter(input,{role:filtersRole.id}):input}})}.call(this),function(){var EditableWikiContentDirective,WikiDetailController,WikiSummaryDirective,bindOnce,debounce,groupBy,mixOf,module,taiga,unslugify,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,unslugify=this.taiga.unslugify,debounce=this.taiga.debounce,module=angular.module("taigaWiki"),WikiDetailController=function(superClass){function WikiDetailController(scope,rootscope,repo,model,confirm,rs,params,q,location,filter,log,appTitle,navUrls,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.model=model,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.filter=filter,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.projectSlug=this.params.pslug,this.scope.wikiSlug=this.params.slug,this.scope.sectionName="Wiki",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Wiki - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(WikiDetailController,superClass),WikiDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgModel","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$filter","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],WikiDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_wiki_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},WikiDetailController.prototype.loadWiki=function(){var promise;return promise=this.rs.wiki.getBySlug(this.scope.projectId,this.params.slug),promise.then(function(_this){return function(wiki){return _this.scope.wiki=wiki,_this.scope.wikiId=wiki.id,_this.scope.wiki}}(this)),promise.then(null,function(_this){return function(){var data;return _this.scope.wikiId=null,-1===_this.scope.project.my_permissions.indexOf("add_wiki_page")?null:(data={project:_this.scope.projectId,slug:_this.scope.wikiSlug,content:""},_this.scope.wiki=_this.model.make_model("wiki",data),_this.scope.wiki)}}(this))},WikiDetailController.prototype.loadWikiLinks=function(){return this.rs.wiki.listLinks(this.scope.projectId).then(function(_this){return function(wikiLinks){return _this.scope.wikiLinks=wikiLinks}}(this))},WikiDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.q.all([_this.loadWikiLinks(),_this.loadWiki()])}}(this))},WikiDetailController.prototype["delete"]=function(){var message,title;return title="Delete Wiki Page",message=unslugify(this.scope.wiki.slug),this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var onError,onSuccess;return onSuccess=function(){var ctx;return finish(),ctx={project:_this.scope.projectSlug},_this.location.path(_this.navUrls.resolve("project-wiki",ctx)),_this.confirm.notify("success")},onError=function(){return finish(!1),_this.confirm.notify("error")},_this.repo.remove(_this.scope.wiki).then(onSuccess,onError)}}(this))},WikiDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("WikiDetailController",WikiDetailController),WikiSummaryDirective=function($log,$template){var link,template;return template=$template.get("wiki/wiki-summary.html",!0),link=function($scope,$el,$attrs){var render;return render=function(wiki){var ctx,html,user;return null==$scope.usersById?$log.error("WikiSummaryDirective requires userById set in scope."):user=$scope.usersById[wiki.last_modifier],user=void 0===user?{name:"unknown",imgUrl:"/images/unnamed.png"}:{name:user.full_name_display,imgUrl:user.photo},ctx={totalEditions:wiki.editions,lastModifiedDate:moment(wiki.modified_date).format("DD MMM YYYY HH:mm"),user:user},html=template(ctx),$el.html(html)},$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?render(wikiPage):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgWikiSummary",["$log","$tgTemplate",WikiSummaryDirective]),EditableWikiContentDirective=function($window,$document,$repo,$confirm,$loading,$analytics,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var cancelEdition,disableEdition,getSelectedText,isEditable,save,switchToEditMode,switchToReadMode;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_wiki_page")},switchToEditMode=function(){return $el.find(".edit-wiki-content").show(),$el.find(".view-wiki-content").hide(),$el.find("textarea").focus()},switchToReadMode=function(){return $el.find(".edit-wiki-content").hide(),$el.find(".view-wiki-content").show()},disableEdition=function(){return $el.find(".view-wiki-content .edit").remove(),$el.find(".edit-wiki-content").remove()},cancelEdition=function(){return $model.$modelValue.id?($scope.$apply(function(){return function(){return $model.$modelValue.revert()}}(this)),switchToReadMode()):void 0},getSelectedText=function(){return $window.getSelection?$window.getSelection().toString():$document.selection?$document.selection.createRange().text:null},save=$qqueue.bindAdd(function(wiki){var onError,onSuccess,promise;return onSuccess=function(wikiPage){return null==wiki.id&&$analytics.trackEvent("wikipage","create","create wiki page",1),$model.$setViewValue(wikiPage),$confirm.notify("success"),switchToReadMode()},onError=function(){return $confirm.notify("error")},$loading.start($el.find(".save-container")),promise=null!=wiki.id?$repo.save(wiki).then(onSuccess,onError):$repo.create("wiki",wiki).then(onSuccess,onError),promise["finally"](function(){return $loading.finish($el.find(".save-container"))})}),$el.on("mousedown",".view-wiki-content",function(event){var target;target=angular.element(event.target),isEditable()&&2===event.button}),$el.on("mouseup",".view-wiki-content",function(event){var target;return target=angular.element(event.target),getSelectedText()||!isEditable()||target.is("a")||target.is("pre")?void 0:switchToEditMode()}),$el.on("click",".save",debounce(2e3,function(){return save($scope.wiki)})),$el.on("click",".cancel",function(){return cancelEdition()}),$el.on("keydown","textarea",function(event){return 27===event.keyCode?cancelEdition():void 0}),$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?isEditable()?($el.addClass("editable"),null==wikiPage.id?switchToEditMode():void 0):disableEdition():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",templateUrl:"wiki/editable-wiki-content.html"}},module.directive("tgEditableWikiContent",["$window","$document","$tgRepo","$tgConfirm","$tgLoading","$tgAnalytics","$tgQqueue",EditableWikiContentDirective])}.call(this),function(){var WikiNavDirective,bindOnce,groupBy,mixOf,module,slugify,taiga,unslugify;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,slugify=this.taiga.slugify,unslugify=this.taiga.slugify,module=angular.module("taigaWiki"),WikiNavDirective=function($tgrepo,$log,$location,$confirm,$navUrls,$analytics,$loading,$template){var link,template;return template=$template.get("wiki/wiki-nav.html",!0),link=function($scope,$el,$attrs){var $ctrl,render;return $ctrl=$el.controller(),null==$attrs.ngModel?$log.error("WikiNavDirective: no ng-model attr is defined"):(render=function(wikiLinks){var addWikiLinkPermission,deleteWikiLinkPermission,html;return addWikiLinkPermission=$scope.project.my_permissions.indexOf("add_wiki_link")>-1,deleteWikiLinkPermission=$scope.project.my_permissions.indexOf("delete_wiki_link")>-1,html=template({wikiLinks:wikiLinks,projectSlug:$scope.projectSlug,addWikiLinkPermission:addWikiLinkPermission,deleteWikiLinkPermission:deleteWikiLinkPermission}),$el.off(),$el.html(html),$el.on("click",".wiki-link .link-title",function(event){var linkId,linkSlug,target;return event.preventDefault(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),linkSlug=$scope.wikiLinks[linkId].href,$scope.$apply(function(){var ctx;return ctx={project:$scope.projectSlug,slug:linkSlug},$location.path($navUrls.resolve("project-wiki-page",ctx))})}),$el.on("click",".add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new input").focus(),$el.find(".add-button").hide()}),$el.on("click",".wiki-link .icon-delete",function(event){var linkId,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),title="Delete Wiki Link",message=$scope.wikiLinks[linkId].title,$confirm.askOnDelete(title,message).then(function(){return function(finish){var promise;return promise=$tgrepo.remove($scope.wikiLinks[linkId]),promise.then(function(){return promise=$ctrl.loadWikiLinks(),promise.then(function(){return finish(),render($scope.wikiLinks)}),promise.then(null,function(){return finish()})}),promise.then(null,function(){return finish(!1),$confirm.notify("error")})}}(this))}),$el.on("keyup",".new input",function(event){var newLink,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newLink=target.val(),$loading.start($el.find(".new")),promise=$tgrepo.create("wiki-links",{project:$scope.projectId,title:newLink,href:slugify(newLink)}),promise.then(function(){var loadPromise;return $analytics.trackEvent("wikilink","create","create wiki link",1),loadPromise=$ctrl.loadWikiLinks(),loadPromise.then(function(){return $loading.finish($el.find(".new")),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),render($scope.wikiLinks)}),loadPromise.then(null,function(){return $loading.finish($el.find(".new")),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),$confirm.notify("error","Error loading wiki links")})}),promise.then(null,function(error){var ref;return $loading.finish($el.find(".new")),$el.find(".new input").val(newLink),$el.find(".new input").focus().select(),null!=(null!=error&&null!=(ref=error.__all__)?ref[0]:void 0)?$confirm.notify("error","The link already exists"):$confirm.notify("error")})):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show()):void 0})},bindOnce($scope,$attrs.ngModel,render))},{link:link}},module.directive("tgWikiNav",["$tgRepo","$log","$tgLocation","$tgConfirm","$tgNavUrls","$tgAnalytics","$tgLoading","$tgTemplate",WikiNavDirective])}.call(this),function(){var CreateMembersDirective,MAX_MEMBERSHIP_FIELDSETS,debounce,module,taiga;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaKanban"),MAX_MEMBERSHIP_FIELDSETS=4,CreateMembersDirective=function($rs,$rootScope,$confirm,$loading,lightboxService){var extraTextTemplate,link,template;return extraTextTemplate='
\n \n
',template=_.template('
\n
\n data-required="true" <% } %> data-type="email" />\n
\n
\n \n \n
\n
'),link=function($scope,$el){var createFieldSet,resetForm,submit,submitButton;return createFieldSet=function(required){var ctx;return null==required&&(required=!0),ctx={roleList:$scope.roles,required:required},template(ctx)},resetForm=function(){var fieldSet,invitations;return $el.find("form textarea").remove(""),$el.find("form .add-member-wrapper").remove(),invitations=$el.find(".add-member-forms"),invitations.html(extraTextTemplate),fieldSet=createFieldSet(),invitations.prepend(fieldSet)},$scope.$on("membersform:new",function(){return resetForm(),lightboxService.open($el)}),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click",".delete-fieldset",function(event){var fieldSet,lastActionButton,target;return event.preventDefault(),target=angular.element(event.currentTarget),fieldSet=target.closest(".add-member-wrapper"),fieldSet.remove(),lastActionButton=$el.find("fieldset:last > a"),lastActionButton.hasClass("icon-delete delete-fieldset")?lastActionButton.removeClass("icon-delete delete-fieldset").addClass("icon-plus add-fieldset"):void 0}),$el.on("click",".add-fieldset",function(event){var fieldSet,newFieldSet,target;return event.preventDefault(),target=angular.element(event.currentTarget),fieldSet=target.closest(".add-member-wrapper"),target.removeClass("icon-plus add-fieldset").addClass("icon-delete delete-fieldset"),newFieldSet=createFieldSet(!1),fieldSet.after(newFieldSet),$el.find(".add-member-wrapper").length===MAX_MEMBERSHIP_FIELDSETS?$el.find(".add-member-wrapper fieldset:last > a").removeClass("icon-plus add-fieldset").addClass("icon-delete delete-fieldset"):void 0}),submit=debounce(2e3,function(){return function(event){var form,invitation_extra_text,invitations,memberWrappers,onError,onSuccess;return event.preventDefault(),$loading.start(submitButton),onSuccess=function(){return $loading.finish(submitButton),lightboxService.close($el),$confirm.notify("success"),$rootScope.$broadcast("membersform:new:success")},onError=function(){return $loading.finish(submitButton),lightboxService.close($el),$confirm.notify("error"),$rootScope.$broadcast("membersform:new:error")},form=$el.find("form").checksley(),form.destroy(),form.initialize(),form.validate()?(memberWrappers=$el.find("form .add-member-wrapper"),memberWrappers=_.filter(memberWrappers,function(mw){return angular.element(mw).find("input").hasClass("checksley-ok")}),invitations=_.map(memberWrappers,function(mw){var email,memberWrapper,role;return memberWrapper=angular.element(mw),email=memberWrapper.find("input"),role=memberWrapper.find("select"),{email:email.val(),role_id:role.val()}}),invitations.length?(invitation_extra_text=$el.find("form textarea").val(),$rs.memberships.bulkCreateMemberships($scope.project.id,invitations,invitation_extra_text).then(onSuccess,onError)):void 0):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgLbCreateMembers",["$tgResources","$rootScope","$tgConfirm","$tgLoading","lightboxService",CreateMembersDirective])}.call(this),function(){var MembershipsController,MembershipsDirective,MembershipsRowActionsDirective,MembershipsRowAdminCheckboxDirective,MembershipsRowAvatarDirective,MembershipsRowRoleSelectorDirective,bindMethods,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),MembershipsController=function(superClass){function MembershipsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,analytics,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.analytics=analytics,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Manage Members",this.scope.project={},this.scope.filters={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Membership - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("membersform:new:success",function(_this){return function(){return _this.loadMembers(),_this.analytics.trackEvent("membership","create","create memberships on admin",1)}}(this))}return extend(MembershipsController,superClass),MembershipsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAnalytics","$appTitle"],MembershipsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project -}}(this))},MembershipsController.prototype.loadMembers=function(){var httpFilters;return httpFilters=this.getUrlFilters(),this.rs.memberships.list(this.scope.projectId,httpFilters).then(function(_this){return function(data){return _this.scope.memberships=_.filter(data.models,function(membership){return null===membership.user||membership.is_user_active}),_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy,data}}(this))},MembershipsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadUsersAndRoles()}}(this)).then(function(_this){return function(){return _this.loadMembers()}}(this))},MembershipsController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page"),filters.page||(filters.page=1),filters},MembershipsController.prototype.addNewMembers=function(){return this.rootscope.$broadcast("membersform:new")},MembershipsController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("MembershipsController",MembershipsController),MembershipsDirective=function($template){var link,linkPagination,template;return template=$template.get("admin/admin-membership-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".memberships-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for(pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||pages.push(i===cpage?{classes:"active",num:i,type:"page-active"}:{classes:"page",num:i,type:"page"});return $pagEl.html(template(options))},$scope.$watch("memberships",function(value){return value?renderPagination():void 0}),$el.on("click",".memberships-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadMembers()})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMemberships",["$tgTemplate",MembershipsDirective]),MembershipsRowAvatarDirective=function($log,$template){var link,template;return template=$template.get("admin/memberships-row-avatar.html",!0),link=function($scope,$el,$attrs){var member,render;return render=function(member){var ctx,html;return ctx={full_name:member.full_name?member.full_name:"",email:member.user_email?member.user_email:member.email,imgurl:member.photo?member.photo:"/images/unnamed.png"},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAvatar?$log.error("MembershipsRowAvatarDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAvatar),render(member),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAvatar",["$log","$tgTemplate",MembershipsRowAvatarDirective]),MembershipsRowAdminCheckboxDirective=function($log,$repo,$confirm,$template){var link,template;return template=$template.get("admin/admin-memberships-row-checkbox.html",!0),link=function($scope,$el,$attrs){var html,member,render;return render=function(member){var ctx,html;return ctx={inputId:"is-admin-"+member.id},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAdminCheckbox?$log.error("MembershipsRowAdminCheckboxDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAdminCheckbox),html=render(member),member.is_owner&&$el.find(":checkbox").prop("checked",!0),$el.on("click",":checkbox",function(){return function(event){var onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(data){return member.revert(),$el.find(":checkbox").prop("checked",member.is_owner),$confirm.notify("error",data.is_owner[0])},target=angular.element(event.currentTarget),member.is_owner=target.prop("checked"),$repo.save(member).then(onSuccess,onError)}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAdminCheckbox",["$log","$tgRepo","$tgConfirm","$tgTemplate",MembershipsRowAdminCheckboxDirective]),MembershipsRowRoleSelectorDirective=function($log,$repo,$confirm){var link,template;return template=_.template(''),link=function($scope,$el,$attrs){var $ctrl,html,member,render;return render=function(member){var ctx,html;return ctx={roleList:$scope.roles,selectedRole:member.role},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowRoleSelector?$log.error("MembershipsRowRoleSelectorDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowRoleSelector),html=render(member),$el.on("change","select",function(){return function(event){var newRole,onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error")},target=angular.element(event.currentTarget),newRole=parseInt(target.val(),10),member.role!==newRole?(member.role=newRole,$repo.save(member).then(onSuccess,onError)):void 0}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowRoleSelector",["$log","$tgRepo","$tgConfirm",MembershipsRowRoleSelectorDirective]),MembershipsRowActionsDirective=function($log,$repo,$rs,$confirm){var activedTemplate,link,pendingTemplate;return activedTemplate=_.template('
\n Active\n
\n\n \n'),pendingTemplate=_.template('\n Pending\n \n\n\n \n'),link=function($scope,$el,$attrs){var $ctrl,member,render;return render=function(member){var html;return html=member.user?activedTemplate():pendingTemplate(),$el.html(html)},null==$attrs.tgMembershipsRowActions?$log.error("MembershipsRowActionsDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowActions),render(member),$el.on("click",".pending",function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(){return $confirm.notify("success","We've sent the invitationi again to '"+$scope.member.email+"'.")},onError=function(){return $confirm.notify("error","We haven't sent the invitation.")},$rs.memberships.resendInvitation($scope.member.id).then(onSuccess,onError)}),$el.on("click",".delete",function(event){var message,title;return event.preventDefault(),title="Delete member",message=member.user?member.full_name:"the invitation to "+member.email,$confirm.askOnDelete(title,message).then(function(finish){var onError,onSuccess;return onSuccess=function(){return finish(),$ctrl.loadMembers(),$confirm.notify("success",null,"We've deleted "+message+".")},onError=function(){return finish(!1),$confirm.notify("error",null,"We have not been able to delete "+message+".")},$repo.remove(member).then(onSuccess,onError)})}),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowActions",["$log","$tgRepo","$tgResources","$tgConfirm",MembershipsRowActionsDirective])}.call(this),function(){var AdminNavigationDirective,module;AdminNavigationDirective=function(){var link;return link=function($scope,$el,$attrs){var section;return section=$attrs.tgAdminNavigation,$el.find(".active").removeClass("active"),$el.find("#adminmenu-"+section+" a").addClass("active"),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaAdmin"),module.directive("tgAdminNavigation",AdminNavigationDirective)}.call(this),function(){var CsvExporterController,CsvExporterIssuesController,CsvExporterTasksController,CsvExporterUserstoriesController,ProjectDefaultValuesDirective,ProjectExportDirective,ProjectModulesDirective,ProjectProfileController,ProjectProfileDirective,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectProfileController=function(superClass){function ProjectProfileController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Project profile - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:loaded",function(_this){return function(){return _this.appTitle.set("Project profile - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this))}return extend(ProjectProfileController,superClass),ProjectProfileController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectProfileController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.scope.taskStatusList=_.sortBy(project.task_statuses,"order"),_this.scope.prioritiesList=_.sortBy(project.priorities,"order"),_this.scope.severitiesList=_.sortBy(project.severities,"order"),_this.scope.issueTypesList=_.sortBy(project.issue_types,"order"),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.$emit("project:loaded",project),project}}(this))},ProjectProfileController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ProjectProfileController.prototype.openDeleteLightbox=function(){return this.rootscope.$broadcast("deletelightbox:new",this.scope.project)},ProjectProfileController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectProfileController",ProjectProfileController),ProjectProfileDirective=function($repo,$confirm,$loading,$navurls,$location){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.save($scope.project),promise.then(function(){var newUrl;return $loading.finish(submitButton),$confirm.notify("success"),newUrl=$navurls.resolve("project-admin-project-profile-details",{project:$scope.project.slug}),$location.path(newUrl),$scope.$emit("project:loaded",$scope.project)}),promise.then(null,function(data){return $loading.finish(target),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgProjectProfile",["$tgRepo","$tgConfirm","$tgLoading","$tgNavUrls","$tgLocation",ProjectProfileDirective]),ProjectDefaultValuesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.save($scope.project),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(data){return $loading.finish(target),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectDefaultValues",["$tgRepo","$tgConfirm","$tgLoading",ProjectDefaultValuesDirective]),ProjectModulesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit;return form=$el.find("form").checksley(),submit=function(){return function(){var promise,target;if(form.validate())return target=angular.element(".admin-functionalities a.button-green"),$loading.start(target),promise=$repo.save($scope.project),promise.then(function(){return $loading.finish(target),$confirm.notify("success"),$scope.$emit("project:loaded",$scope.project)}),promise.then(null,function(data){return $loading.finish(target),$confirm.notify("error",data._error_message)})}}(this),$el.on("submit","form",function(event){return event.preventDefault(),submit()}),$el.on("click",".admin-functionalities a.button-green",function(event){return event.preventDefault(),submit()}),$scope.$watch("isVideoconferenceActivated",function(isVideoconferenceActivated){return isVideoconferenceActivated?$el.find(".videoconference-attributes").removeClass("hidden"):($el.find(".videoconference-attributes").addClass("hidden"),$scope.project.videoconferences=null,$scope.project.videoconferences_salt="")}),$scope.$watch("project",function(project){return $scope.isVideoconferenceActivated=null!=project.videoconferences?!0:!1})},{link:link}},module.directive("tgProjectModules",["$tgRepo","$tgConfirm","$tgLoading",ProjectModulesDirective]),ProjectExportDirective=function($window,$rs,$confirm){var link;return link=function($scope,$el){var buttonsEl,hideButtons,hideResult,hideSpinner,resultEl,resultMessageEl,resultTitleEl,setAsyncMessage,setAsyncTitle,setLoadingMessage,setLoadingTitle,setSyncMessage,setSyncTitle,showButtons,showErrorMode,showExportResultAsyncMode,showExportResultSyncMode,showLoadingMode,showResult,showSpinner,spinnerEl;return buttonsEl=$el.find(".admin-project-export-buttons"),showButtons=function(){return buttonsEl.removeClass("hidden")},hideButtons=function(){return buttonsEl.addClass("hidden")},resultEl=$el.find(".admin-project-export-result"),showResult=function(){return resultEl.removeClass("hidden")},hideResult=function(){return resultEl.addClass("hidden")},spinnerEl=$el.find(".spin"),showSpinner=function(){return spinnerEl.removeClass("hidden")},hideSpinner=function(){return spinnerEl.addClass("hidden")},resultTitleEl=$el.find(".result-title"),setLoadingTitle=function(){return resultTitleEl.html("We are generating your dump file")},setAsyncTitle=function(){return resultTitleEl.html("We are generating your dump file")},setSyncTitle=function(){return resultTitleEl.html("Your dump file is ready!")},resultMessageEl=$el.find(".result-message "),setLoadingMessage=function(){return resultMessageEl.html("Please don't close this page.")},setAsyncMessage=function(){return resultMessageEl.html("We will send you an email when ready.")},setSyncMessage=function(url){return resultMessageEl.html("If the download doesn't start automatically click here.")},showLoadingMode=function(){return showSpinner(),setLoadingTitle(),setLoadingMessage(),hideButtons(),showResult()},showExportResultAsyncMode=function(){return hideSpinner(),setAsyncTitle(),setAsyncMessage()},showExportResultSyncMode=function(url){return hideSpinner(),setSyncTitle(),setSyncMessage(url)},showErrorMode=function(){return hideSpinner(),hideResult(),showButtons()},$el.on("click","a.button-export",debounce(2e3,function(){return function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(result){var dumpUrl;return 202===result.status?showExportResultAsyncMode():(dumpUrl=result.data.url,showExportResultSyncMode(dumpUrl),$window.open(dumpUrl,"_blank"))},onError=function(result){var errorMsg,ref;return showErrorMode(),errorMsg="Our oompa loompas have some problems generasting your dump. Please try again. ",429===result.status?errorMsg="Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. ":(null!=(ref=result.data)?ref._error_message:void 0)&&(errorMsg="Our oompa loompas have some problems generasting your dump: "+result.data._error_message),$confirm.notify("error",errorMsg)},showLoadingMode(),$rs.projects["export"]($scope.projectId).then(onSuccess,onError)}}(this)))},{link:link}},module.directive("tgProjectExport",["$window","$tgResources","$tgConfirm",ProjectExportDirective]),CsvExporterController=function(superClass){function CsvExporterController(scope,rootscope,urls,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.urls=urls,this.confirm=confirm,this.rs=rs,this._generateUuid=bind(this._generateUuid,this),this.setCsvUuid=bind(this.setCsvUuid,this),this.rootscope.$on("project:loaded",this.setCsvUuid),this.scope.$watch("csvUuid",function(_this){return function(value){return _this.scope.csvUrl=value?_this.urls.resolveAbsolute(_this.type+"-csv",value):""}}(this))}return extend(CsvExporterController,superClass),CsvExporterController.$inject=["$scope","$rootScope","$tgUrls","$tgConfirm","$tgResources"],CsvExporterController.prototype.setCsvUuid=function(){return this.scope.csvUuid=this.scope.project[this.type+"_csv_uuid"]},CsvExporterController.prototype._generateUuid=function(finish){var promise;return promise=this.rs.projects["regenerate_"+this.type+"_csv_uuid"](this.scope.projectId),promise.then(function(_this){return function(data){var ref;return _this.scope.csvUuid=null!=(ref=data.data)?ref.uuid:void 0}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this)),promise["finally"](function(){return finish()}),promise},CsvExporterController.prototype.regenerateUuid=function(){var subtitle,title;return this.scope.csvUuid?(title="Change URL",subtitle="You going to change the CSV data access url. The previous url will be disabled. Are you sure?",this.confirm.ask(title,subtitle).then(this._generateUuid)):this._generateUuid(_.identity)},CsvExporterController}(taiga.Controller),CsvExporterUserstoriesController=function(superClass){function CsvExporterUserstoriesController(){return CsvExporterUserstoriesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterUserstoriesController,superClass),CsvExporterUserstoriesController.prototype.type="userstories",CsvExporterUserstoriesController}(CsvExporterController),CsvExporterTasksController=function(superClass){function CsvExporterTasksController(){return CsvExporterTasksController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterTasksController,superClass),CsvExporterTasksController.prototype.type="tasks",CsvExporterTasksController}(CsvExporterController),CsvExporterIssuesController=function(superClass){function CsvExporterIssuesController(){return CsvExporterIssuesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterIssuesController,superClass),CsvExporterIssuesController.prototype.type="issues",CsvExporterIssuesController}(CsvExporterController),module.controller("CsvExporterUserstoriesController",CsvExporterUserstoriesController),module.controller("CsvExporterTasksController",CsvExporterTasksController),module.controller("CsvExporterIssuesController",CsvExporterIssuesController)}.call(this),function(){var ColorSelectionDirective,ProjectCustomAttributesController,ProjectCustomAttributesDirective,ProjectValuesController,ProjectValuesDirective,ProjectValuesSectionController,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectValuesSectionController=function(superClass){function ProjectValuesSectionController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Project values - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(ProjectValuesSectionController,superClass),ProjectValuesSectionController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectValuesSectionController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},ProjectValuesSectionController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ProjectValuesSectionController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectValuesSectionController",ProjectValuesSectionController),ProjectValuesController=function(superClass){function ProjectValuesController(scope,rootscope,repo,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.moveValue=bind(this.moveValue,this),this.loadValues=bind(this.loadValues,this),this.scope.$on("admin:project-values:move",this.moveValue),this.rootscope.$on("project:loaded",this.loadValues)}return extend(ProjectValuesController,superClass),ProjectValuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources"],ProjectValuesController.prototype.loadValues=function(){return this.rs[this.scope.resource].listValues(this.scope.projectId,this.scope.type).then(function(_this){return function(values){return _this.scope.values=values,_this.scope.maxValueOrder=_.max(values,"order").order,values}}(this))},ProjectValuesController.prototype.moveValue=function(ctx,itemValue,itemIndex){var r,values;return values=this.scope.values,r=values.indexOf(itemValue),values.splice(r,1),values.splice(itemIndex,0,itemValue),_.each(values,function(value,index){return value.order=index}),this.repo.saveAll(values)},ProjectValuesController}(taiga.Controller),module.controller("ProjectValuesController",ProjectValuesController),ProjectValuesDirective=function($log,$repo,$confirm){var link,linkDragAndDrop,linkValue;return linkDragAndDrop=function($scope,$el){var itemEl,newParentScope,oldParentScope,tdom;return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el.find(".sortable"),tdom.sortable({handle:".row.table-main.visualization",dropOnEmpty:!0,connectWith:".project-values-body",revert:400,axis:"y"}),tdom.on("sortstop",function(event,ui){var itemIndex,itemValue;return itemEl=ui.item,itemValue=itemEl.scope().value,itemIndex=itemEl.index(),$scope.$broadcast("admin:project-values:move",itemValue,itemIndex)}),$scope.$on("$destroy",function(){return $el.off()})},linkValue=function($scope,$el,$attrs){var $ctrl,cancel,goToBottomList,initializeNewValue,saveNewValue,saveValue,valueType;return $ctrl=$el.controller(),valueType=$attrs.type,initializeNewValue=function(){return $scope.newValue={name:"",is_closed:!1,is_archived:!1}},initializeNewValue(),goToBottomList=function(){return function(focus){var table;return null==focus&&(focus=!1),table=$el.find(".table-main"),$(document.body).scrollTop(table.offset().top+table.height()),focus?$el.find(".new-value input:visible").first().focus():void 0}}(this),saveValue=function(target){var form,formEl,promise,value;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?(value=formEl.scope().value,promise=$repo.save(value),promise.then(function(){return function(){var row;return row=target.parents(".row.table-main"),row.addClass("hidden"),row.siblings(".visualization").removeClass("hidden")}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},saveNewValue=function(target){var form,formEl,promise;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,$scope.newValue.order=$scope.maxValueOrder?$scope.maxValueOrder+1:1,promise=$repo.create(valueType,$scope.newValue),promise.then(function(){return function(data){return target.addClass("hidden"),$scope.values.push(data),$scope.maxValueOrder=data.order,initializeNewValue()}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},cancel=function(target){var formEl,row,value;return row=target.parents(".row.table-main"),formEl=target.parents("form"),value=formEl.scope().value,$scope.$apply(function(){return row.addClass("hidden"),value.revert(),row.siblings(".visualization").removeClass("hidden")})},$el.on("click",".show-add-new",function(event){return event.preventDefault(),$el.find(".new-value").removeClass("hidden"),goToBottomList(!0)}),$el.on("click",".add-new",debounce(2e3,function(event){var target;return event.preventDefault(),target=$el.find(".new-value"),saveNewValue(target)})),$el.on("click",".delete-new",function(event){return event.preventDefault(),$el.find(".new-value").addClass("hidden"),initializeNewValue()}),$el.on("click",".edit-value",function(event){var editionRow,row,target;return event.preventDefault(),target=angular.element(event.currentTarget),row=target.parents(".row.table-main"),row.addClass("hidden"),editionRow=row.siblings(".edition"),editionRow.removeClass("hidden"),editionRow.find("input:visible").first().focus().select()}),$el.on("keyup",".edition input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),saveValue(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("keyup",".new-value input",function(event){var target;return 13===event.keyCode?(target=$el.find(".new-value"),saveNewValue(target)):27===event.keyCode?($el.find(".new-value").addClass("hidden"),initializeNewValue()):void 0}),$el.on("click",".save",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),saveValue(target)}),$el.on("click",".cancel",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),cancel(target)}),$el.on("click",".delete-value",function(event){var choices,formEl,replacement,subtitle,target,title,value;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.parents("form"),value=formEl.scope().value,choices={},_.each($scope.values,function(option){return value.id!==option.id?choices[option.id]=option.name:void 0}),title="Delete value",subtitle=value.name,replacement="All items with this value will be changed to",0===_.keys(choices).length?$confirm.error("You can't delete all values."):$confirm.askChoice(title,subtitle,choices,replacement).then(function(response){var onError,onSucces;return onSucces=function(){return $ctrl.loadValues()["finally"](function(){return response.finish()})},onError=function(){return $confirm.notify("error")},$repo.remove(value,{moveTo:response.selected}).then(onSucces,onError)})})},link=function($scope,$el,$attrs){return linkDragAndDrop($scope,$el,$attrs),linkValue($scope,$el,$attrs),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectValues",["$log","$tgRepo","$tgConfirm","$tgLocation","animationFrame",ProjectValuesDirective]),ColorSelectionDirective=function(){var link;return link=function($scope,$el,$attrs,$model){var $ctrl;return $ctrl=$el.controller(),$scope.$watch($attrs.ngModel,function(element){return $scope.color=element.color}),$el.on("click",".current-color",function(event){var body,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),$el.find(".select-color").hide(),target.siblings(".select-color").show(),body=angular.element("body"),body.on("click",function(){return function(event){return 0===angular.element(event.target).parent(".select-color").length?($el.find(".select-color").hide(),body.unbind("click")):void 0}}(this))}),$el.on("click",".select-color .color",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $model.$modelValue.color=target.data("color")}),$el.find(".select-color").hide()}),$el.on("click",".select-color .selected-color",function(event){return event.preventDefault(),$scope.$apply(function(){return $model.$modelValue.color=$scope.color}),$el.find(".select-color").hide()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgColorSelection",ColorSelectionDirective),ProjectCustomAttributesController=function(superClass){function ProjectCustomAttributesController(scope,rootscope,repo,rs,params,q,location,navUrls,appTitle){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.moveCustomAttributes=bind(this.moveCustomAttributes,this),this.deleteCustomAttribute=bind(this.deleteCustomAttribute,this),this.saveCustomAttribute=bind(this.saveCustomAttribute,this),this.createCustomAttribute=bind(this.createCustomAttribute,this),this.loadCustomAttributes=bind(this.loadCustomAttributes,this),this.scope.project={},this.rootscope.$on("project:loaded",function(_this){return function(){return _this.loadCustomAttributes(),_this.appTitle.set("Project Custom Attributes - "+_this.scope.sectionName+" - "+_this.scope.project.name) -}}(this))}return extend(ProjectCustomAttributesController,superClass),ProjectCustomAttributesController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectCustomAttributesController.prototype.loadCustomAttributes=function(){return this.rs.customAttributes[this.scope.type].list(this.scope.projectId).then(function(_this){return function(customAttributes){return _this.scope.customAttributes=customAttributes,_this.scope.maxOrder=_.max(customAttributes,"order").order,customAttributes}}(this))},ProjectCustomAttributesController.prototype.createCustomAttribute=function(attrValues){return this.repo.create("custom-attributes/"+this.scope.type,attrValues)},ProjectCustomAttributesController.prototype.saveCustomAttribute=function(attrModel){return this.repo.save(attrModel)},ProjectCustomAttributesController.prototype.deleteCustomAttribute=function(attrModel){return this.repo.remove(attrModel)},ProjectCustomAttributesController.prototype.moveCustomAttributes=function(attrModel,newIndex){var customAttributes,r;return customAttributes=this.scope.customAttributes,r=customAttributes.indexOf(attrModel),customAttributes.splice(r,1),customAttributes.splice(newIndex,0,attrModel),_.each(customAttributes,function(val,idx){return val.order=idx}),this.repo.saveAll(customAttributes)},ProjectCustomAttributesController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectCustomAttributesController",ProjectCustomAttributesController),ProjectCustomAttributesDirective=function($log,$confirm){var link;return link=function($scope,$el){var $ctrl,cancelCreate,cancelUpdate,create,deleteCustomAttribute,hideAddButton,hideCancelButton,hideCreateForm,hideEditForm,resetNewAttr,revertChangesInCustomAttribute,showAddButton,showCancelButton,showCreateForm,showEditForm,sortableEl,update;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),sortableEl=$el.find(".js-sortable"),sortableEl.sortable({handle:".js-view-custom-field",dropOnEmpty:!0,revert:400,axis:"y"}),sortableEl.on("sortstop",function(event,ui){var itemAttr,itemEl,itemIndex;return itemEl=ui.item,itemAttr=itemEl.scope().attr,itemIndex=itemEl.index(),$ctrl.moveCustomAttributes(itemAttr,itemIndex)}),showCreateForm=function(){return $el.find(".js-new-custom-field").removeClass("hidden"),$el.find(".js-new-custom-field input:visible").first().focus()},hideCreateForm=function(){return $el.find(".js-new-custom-field").addClass("hidden")},showAddButton=function(){return $el.find(".js-add-custom-field-button").removeClass("hidden")},hideAddButton=function(){return $el.find(".js-add-custom-field-button").addClass("hidden")},showCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").removeClass("hidden")},hideCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").addClass("hidden")},resetNewAttr=function(){return $scope.newAttr={}},create=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(){return function(){return $ctrl.loadCustomAttributes(),hideCreateForm(),resetNewAttr(),$confirm.notify("success")}}(this),onError=function(){return function(data){return form.setErrors(data)}}(this),attr=$scope.newAttr,attr.project=$scope.projectId,attr.order=$scope.maxOrder?$scope.maxOrder+1:1,$ctrl.createCustomAttribute(attr).then(onSucces,onError)):void 0},cancelCreate=function(){return hideCreateForm(),resetNewAttr()},$scope.$watch("customAttributes",function(customAttributes){return customAttributes?0===customAttributes.length?(hideCancelButton(),hideAddButton(),showCreateForm()):(hideCreateForm(),showAddButton(),showCancelButton()):void 0}),$el.on("click",".js-add-custom-field-button",function(event){return event.preventDefault(),showCreateForm()}),$el.on("click",".js-create-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)})),$el.on("click",".js-cancel-new-custom-field-button",function(event){return event.preventDefault(),cancelCreate()}),$el.on("keyup",".js-new-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)):27===event.keyCode?cancelCreate():void 0}),showEditForm=function(formEl){return formEl.find(".js-view-custom-field").addClass("hidden"),formEl.find(".js-edit-custom-field").removeClass("hidden"),formEl.find(".js-edit-custom-field input:visible").first().focus().select()},hideEditForm=function(formEl){return formEl.find(".js-edit-custom-field").addClass("hidden"),formEl.find(".js-view-custom-field").removeClass("hidden")},revertChangesInCustomAttribute=function(formEl){return $scope.$apply(function(){return formEl.scope().attr.revert()})},update=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(){return function(){return $ctrl.loadCustomAttributes(),hideEditForm(formEl),$confirm.notify("success")}}(this),onError=function(){return function(data){return form.setErrors(data)}}(this),attr=formEl.scope().attr,$ctrl.saveCustomAttribute(attr).then(onSucces,onError)):void 0},cancelUpdate=function(formEl){return hideEditForm(formEl),revertChangesInCustomAttribute(formEl)},$el.on("click",".js-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),showEditForm(formEl)}),$el.on("click",".js-update-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)})),$el.on("click",".js-cancel-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)}),$el.on("keyup",".js-edit-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)):27===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)):void 0}),deleteCustomAttribute=function(formEl){var attr,message,subtitle,title;return attr=formEl.scope().attr,title="Delete custom attribute",subtitle="Remeber that all values in this custom field will be deleted.
Are you sure you want to continue?",message=attr.name,$confirm.ask(title,subtitle,message).then(function(finish){var onError,onSucces;return onSucces=function(){return $ctrl.loadCustomAttributes()["finally"](function(){return finish()})},onError=function(){return finish(!1),$confirm.notify("error",null,"We have not been able to delete '"+message+"'.")},$ctrl.deleteCustomAttribute(attr).then(onSucces,onError)})},$el.on("click",".js-delete-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),deleteCustomAttribute(formEl)}))},{link:link}},module.directive("tgProjectCustomAttributes",["$log","$tgConfirm","animationFrame",ProjectCustomAttributesDirective])}.call(this),function(){var EditRoleDirective,NewRoleDirective,RolePermissionsDirective,RolesController,RolesDirective,bindMethods,bindOnce,debounce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,mixOf=this.taiga.mixOf,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),RolesController=function(superClass){function RolesController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Permissions",this.scope.project={},this.scope.anyComputableRole=!0,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Roles - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(RolesController,superClass),RolesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],RolesController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.anyComputableRole=_.some(_.map(project.roles,function(point){return point.computable})),project}}(this))},RolesController.prototype.loadExternalUserRole=function(roles){var public_permission;return roles=roles.map(function(role){return role.external_user=!1,role}),public_permission={name:"External User",permissions:this.scope.project.public_permissions,external_user:!0},roles.push(public_permission),roles},RolesController.prototype.loadRoles=function(){return this.rs.roles.list(this.scope.projectId).then(this.loadExternalUserRole).then(function(_this){return function(roles){return _this.scope.roles=roles,_this.scope.role=_this.scope.roles[0],roles}}(this))},RolesController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadUsersAndRoles()}}(this)).then(function(_this){return function(){return _this.loadRoles()}}(this))},RolesController.prototype.setRole=function(role){return this.scope.role=role,this.scope.$broadcast("role:changed",this.scope.role)},RolesController.prototype["delete"]=function(){var choices,i,len,ref,replacement,role,subtitle,title,warning;for(title="Delete Role",subtitle=this.scope.role.name,replacement="All the users with this role will be moved to",warning="Be careful, all role estimations will be removed",choices={},ref=this.scope.roles,i=0,len=ref.length;len>i;i++)role=ref[i],role.id!==this.scope.role.id&&(choices[role.id]=role.name);return 0===_.keys(choices).length?this.confirm.error("You can't delete all values."):this.confirm.askChoice(title,subtitle,choices,replacement,warning).then(function(_this){return function(response){var promise;return promise=_this.repo.remove(_this.scope.role,{moveTo:response.selected}),promise.then(function(){return _this.loadProject(),_this.loadRoles()["finally"](function(){return response.finish()})}),promise.then(null,function(){return _this.confirm.notify("error")})}}(this))},RolesController.prototype.setComputable=debounce(2e3,function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.confirm.notify("success"),_this.loadProject()}}(this),onError=function(_this){return function(){return _this.confirm.notify("error"),_this.scope.role.revert()}}(this),this.repo.save(this.scope.role).then(onSuccess,onError)}),RolesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("RolesController",RolesController),EditRoleDirective=function($repo,$confirm){var link;return link=function($scope,$el){var submit,toggleView;return toggleView=function(){return $el.find(".total").toggle(),$el.find(".edit-role").toggle()},submit=function(){var promise;return $scope.role.name=$el.find("input").val(),promise=$repo.save($scope.role),promise.then(function(){return $confirm.notify("success")}),promise.then(null,function(){return $confirm.notify("error")}),toggleView()},$el.on("click","a.icon-edit",function(){return toggleView(),$el.find("input").focus(),$el.find("input").val($scope.role.name)}),$el.on("click","a.save",submit),$el.on("keyup","input",function(event){return 13===event.keyCode?submit():27===event.keyCode?toggleView():void 0}),$scope.$on("role:changed",function(){return $el.find(".edit-role").is(":visible")?toggleView():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgEditRole",["$tgRepo","$tgConfirm",EditRoleDirective]),RolesDirective=function(){var link;return link=function($scope,$el){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRoles",RolesDirective),NewRoleDirective=function($tgrepo,$confirm){var DEFAULT_PERMISSIONS,link;return DEFAULT_PERMISSIONS=["view_project","view_milestones","view_us","view_tasks","view_issues"],link=function($scope,$el){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click","a.add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new").focus(),$el.find(".add-button").hide()}),$el.on("keyup",".new",function(event){var newRole,onError,onSuccess,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newRole={project:$scope.projectId,name:target.val(),permissions:DEFAULT_PERMISSIONS,order:_.max($scope.roles,function(r){return r.order}).order+1,computable:!1},$el.find(".new").addClass("hidden"),$el.find(".new").val(""),onSuccess=function(role){return $scope.roles.push(role),$ctrl.setRole(role),$el.find(".add-button").show(),$ctrl.loadProject()},onError=function(){return $confirm.notify("error")},$tgrepo.create("roles",newRole).then(onSuccess,onError)):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new").val(""),$el.find(".add-button").show()):void 0})},{link:link}},module.directive("tgNewRole",["$tgRepo","$tgConfirm",NewRoleDirective]),RolePermissionsDirective=function($rootscope,$repo,$confirm){var baseTemplate,categoryTemplate,link,resumeTemplate;return resumeTemplate=_.template('
<%- category.name %>
\n
\n
<%- category.activePermissions %>/<%- category.permissions.length %>
\n <% _.each(category.permissions, function(permission) { %>\n
\n <% }) %>\n
\n
'),categoryTemplate=_.template('
\n
\n
\n
\n
\n <% _.each(category.permissions, function(permission) { %>\n
\n <%- permission.description %>\n
\n disabled="disabled"<% } %> <% if(permission.active) { %>checked="checked"<% } %>/>\n
\n Yes\n No\n
\n
\n <% }) %>\n
\n
\n
'),baseTemplate=_.template('
'),link=function($scope,$el,$attrs){var $ctrl,generateCategoriesFromRole,renderCategory,renderPermissions,renderResume;return $ctrl=$el.controller(),generateCategoriesFromRole=function(role){var categories,isPermissionEditable,issuePermissions,milestonePermissions,setActivePermissions,setActivePermissionsPerCategory,taskPermissions,userStoryPermissions,wikiPermissions;return setActivePermissions=function(permissions){return _.map(permissions,function(x){var ref;return _.extend({},x,{active:(ref=x.key,indexOf.call(role.permissions,ref)>=0)})})},isPermissionEditable=function(permission,role,project){return role.external_user&&!project.is_private&&0===permission.key.indexOf("view_")?!1:!0},setActivePermissionsPerCategory=function(category){return _.map(category,function(cat){return cat.permissions=cat.permissions.map(function(permission){return permission.editable=isPermissionEditable(permission,role,$scope.project),permission}),_.extend({},cat,{activePermissions:_.filter(cat.permissions,"active").length})})},categories=[],milestonePermissions=[{key:"view_milestones",description:"View sprints"},{key:"add_milestone",description:"Add sprint"},{key:"modify_milestone",description:"Modify sprint"},{key:"delete_milestone",description:"Delete sprint"}],categories.push({name:"Sprints",permissions:setActivePermissions(milestonePermissions)}),userStoryPermissions=[{key:"view_us",description:"View user story"},{key:"add_us",description:"Add user story"},{key:"modify_us",description:"Modify user story"},{key:"delete_us",description:"Delete user story"}],categories.push({name:"User Stories",permissions:setActivePermissions(userStoryPermissions)}),taskPermissions=[{key:"view_tasks",description:"View tasks"},{key:"add_task",description:"Add task"},{key:"modify_task",description:"Modify task"},{key:"delete_task",description:"Delete task"}],categories.push({name:"Tasks",permissions:setActivePermissions(taskPermissions)}),issuePermissions=[{key:"view_issues",description:"View issues"},{key:"add_issue",description:"Add issue"},{key:"modify_issue",description:"Modify issue"},{key:"delete_issue",description:"Delete issue"}],categories.push({name:"Issues",permissions:setActivePermissions(issuePermissions)}),wikiPermissions=[{key:"view_wiki_pages",description:"View wiki pages"},{key:"add_wiki_page",description:"Add wiki page"},{key:"modify_wiki_page",description:"Modify wiki page"},{key:"delete_wiki_page",description:"Delete wiki page"},{key:"view_wiki_links",description:"View wiki links"},{key:"add_wiki_link",description:"Add wiki link"},{key:"delete_wiki_link",description:"Delete wiki link"}],categories.push({name:"Wiki",permissions:setActivePermissions(wikiPermissions)}),setActivePermissionsPerCategory(categories)},renderResume=function(element,category){return element.find(".resume").html(resumeTemplate({category:category}))},renderCategory=function(category,index){var html;return html=categoryTemplate({category:category,index:index}),html=angular.element(html),renderResume(html,category),html},renderPermissions=function(){var html;return $el.off(),html=baseTemplate(),_.each(generateCategoriesFromRole($scope.role),function(category,index){return html=angular.element(html).append(renderCategory(category,index))}),$el.html(html),$el.on("click",".resume",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.next().toggleClass("open")}),$el.on("change",".category-item input",function(event){var getActivePermissions,onError,onSuccess,target;return getActivePermissions=function(){var activePermissions;return activePermissions=_.filter($el.find(".category-item input"),function(t){return angular.element(t).is(":checked")}),activePermissions=_.sortBy(_.map(activePermissions,function(t){var permission;return permission=angular.element(t).parents(".category-item").data("id")})),activePermissions.push("view_project"),activePermissions},target=angular.element(event.currentTarget),$scope.role.permissions=getActivePermissions(),onSuccess=function(){var categories,categoryId;return categories=generateCategoriesFromRole($scope.role),categoryId=target.parents(".category-config").data("id"),renderResume(target.parents(".category-config"),categories[categoryId]),$rootscope.$broadcast("projects:reload"),$confirm.notify("success"),$ctrl.loadProject()},onError=function(){return $confirm.notify("error"),target.prop("checked",!target.prop("checked")),$scope.role.permissions=getActivePermissions()},$scope.role.external_user?($scope.project.public_permissions=$scope.role.permissions,$scope.project.anon_permissions=$scope.role.permissions.filter(function(permission){return 0===permission.indexOf("view_")}),$repo.save($scope.project).then(onSuccess,onError)):$repo.save($scope.role).then(onSuccess,onError)})},$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("role:changed",function(){return renderPermissions()}),bindOnce($scope,$attrs.ngModel,renderPermissions)},{link:link}},module.directive("tgRolePermissions",["$rootScope","$tgRepo","$tgConfirm",RolePermissionsDirective])}.call(this),function(){var BitbucketController,BitbucketWebhooksDirective,GithubController,GithubWebhooksDirective,GitlabController,GitlabWebhooksDirective,NewWebhookDirective,SelectInputText,ValidOriginIpsDirective,WebhookDirective,WebhooksController,bindMethods,debounce,mixOf,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,debounce=this.taiga.debounce,timeout=this.taiga.timeout,module=angular.module("taigaAdmin"),WebhooksController=function(superClass){function WebhooksController(scope,repo,rs,params,location,navUrls,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Webhooks",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Webhooks - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("webhooks:reload",this.loadWebhooks)}return extend(WebhooksController,superClass),WebhooksController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$tgLocation","$tgNavUrls","$appTitle"],WebhooksController.prototype.loadWebhooks=function(){return this.rs.webhooks.list(this.scope.projectId).then(function(_this){return function(webhooks){return _this.scope.webhooks=webhooks}}(this))},WebhooksController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},WebhooksController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadWebhooks()}}(this))},WebhooksController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("WebhooksController",WebhooksController),WebhookDirective=function($rs,$repo,$confirm){var link;return link=function($scope,$el,$attrs){var cancel,openHistory,save,showEditMode,showVisualizationMode,updateLogs,updateShowHideHistoryText,webhook;return webhook=$scope.$eval($attrs.tgWebhook),updateLogs=function(){return $rs.webhooklogs.list(webhook.id).then(function(){return function(webhooklogs){var i,len,log,ref;for(i=0,len=webhooklogs.length;len>i;i++)log=webhooklogs[i],log.validStatus=200<=(ref=log.status)&&300>ref,log.prettySentHeaders=_.map(_.pairs(log.request_headers),function(arg){var header,value;return header=arg[0],value=arg[1],header+": "+value}).join("\n"),log.prettySentData=JSON.stringify(log.request_data),log.prettyDate=moment(log.created).format("DD MMM YYYY [at] hh:mm:ss");return webhook.logs_counter=webhooklogs.length,webhook.logs=webhooklogs,updateShowHideHistoryText()}}(this))},updateShowHideHistoryText=function(){var historyElement,textElement;return textElement=$el.find(".toggle-history"),historyElement=textElement.parents(".single-webhook-wrapper").find(".webhooks-history"),textElement.text(historyElement.hasClass("open")?"(Hide history)":"(Show history)")},showVisualizationMode=function(){return $el.find(".edition-mode").addClass("hidden"),$el.find(".visualization-mode").removeClass("hidden")},showEditMode=function(){return $el.find(".visualization-mode").addClass("hidden"),$el.find(".edition-mode").removeClass("hidden")},openHistory=function(){return $el.find(".webhooks-history").addClass("open")},cancel=function(){return showVisualizationMode(),$scope.$apply(function(){return webhook.revert()})},save=debounce(2e3,function(target){var form,promise;return form=target.parents("form").checksley(),form.validate()?(promise=$repo.save(webhook),promise.then(function(){return function(){return showVisualizationMode()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),$el.on("click",".test-webhook",function(){return openHistory(),$rs.webhooks.test(webhook.id).then(function(){return function(){return updateLogs()}}(this))}),$el.on("click",".edit-webhook",function(){return showEditMode()}),$el.on("click",".cancel-existing",function(){return cancel()}),$el.on("click",".edit-existing",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),save(target)}),$el.on("keyup",".edition-mode input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),save(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("click",".delete-webhook",function(){var message,title;return title="Delete webhook",message="Webhook '"+webhook.name+"'",$confirm.askOnDelete(title,message).then(function(){return function(finish){var onError,onSucces;return onSucces=function(){return finish(),$scope.$emit("webhooks:reload")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.remove(webhook).then(onSucces,onError)}}(this))}),$el.on("click",".toggle-history",function(event){var target;return target=angular.element(event.currentTarget),null==webhook.logs||0===webhook.logs.length?updateLogs().then(function(){return timeout(0,function(){return $el.find(".webhooks-history").toggleClass("open"),updateShowHideHistoryText()})}):($el.find(".webhooks-history").toggleClass("open"),$scope.$apply(function(){return updateShowHideHistoryText()}))}),$el.on("click",".history-single",function(event){var target;return target=angular.element(event.currentTarget),target.toggleClass("history-single-open"),target.siblings(".history-single-response").toggleClass("open")}),$el.on("click",".resend-request",function(event){var log,target;return target=angular.element(event.currentTarget),log=target.data("log"),$rs.webhooklogs.resend(log).then(function(){return function(){return updateLogs()}}(this))})},{link:link}},module.directive("tgWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",WebhookDirective]),NewWebhookDirective=function($rs,$repo,$confirm){var link;return link=function($scope,$el,$attrs){var addWebhookDOMNode,formDOMNode,initializeNewValue,save,webhook;return webhook=$scope.$eval($attrs.tgWebhook),formDOMNode=$el.find(".new-webhook-form"),addWebhookDOMNode=$el.find(".add-webhook"),initializeNewValue=function(){return $scope.newValue={name:"",url:"",key:""}},initializeNewValue(),$scope.$watch("webhooks",function(webhooks){return null!=webhooks?0===webhooks.length?(formDOMNode.removeClass("hidden"),addWebhookDOMNode.addClass("hidden"),formDOMNode.find("input")[0].focus()):(formDOMNode.addClass("hidden"),addWebhookDOMNode.removeClass("hidden")):void 0}),save=debounce(2e3,function(){var form,promise;return form=formDOMNode.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,promise=$repo.create("webhooks",$scope.newValue),promise.then(function(){return function(){return $scope.$emit("webhooks:reload"),initializeNewValue()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),formDOMNode.on("click",".add-new",function(event){return event.preventDefault(),save()}),formDOMNode.on("keyup","input",function(event){return 13===event.keyCode?save():void 0}),formDOMNode.on("click",".cancel-new",function(){return $scope.$apply(function(){return initializeNewValue()})}),addWebhookDOMNode.on("click",function(){return formDOMNode.removeClass("hidden"),formDOMNode.find("input")[0].focus()})},{link:link}},module.directive("tgNewWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",NewWebhookDirective]),GithubController=function(superClass){function GithubController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Github",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Github - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(GithubController,superClass),GithubController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],GithubController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"github").then(function(_this){return function(github){return _this.scope.github=github}}(this))},GithubController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GithubController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},GithubController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GithubController",GithubController),GitlabController=function(superClass){function GitlabController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Gitlab",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Gitlab - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(GitlabController,superClass),GitlabController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],GitlabController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"gitlab").then(function(_this){return function(gitlab){return _this.scope.gitlab=gitlab}}(this))},GitlabController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GitlabController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data -}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},GitlabController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GitlabController",GitlabController),BitbucketController=function(superClass){function BitbucketController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Bitbucket",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Bitbucket - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(BitbucketController,superClass),BitbucketController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],BitbucketController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"bitbucket").then(function(_this){return function(bitbucket){return _this.scope.bitbucket=bitbucket}}(this))},BitbucketController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},BitbucketController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},BitbucketController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BitbucketController",BitbucketController),SelectInputText=function(){var link;return link=function($scope,$el){return $el.on("click",".select-input-content",function(){return $el.find("input").select(),$el.find(".help-copy").addClass("visible")})},{link:link}},module.directive("tgSelectInputText",SelectInputText),GithubWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.github,"github"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGithubWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GithubWebhooksDirective]),GitlabWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.gitlab,"gitlab"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGitlabWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GitlabWebhooksDirective]),BitbucketWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.bitbucket,"bitbucket"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgBitbucketWebhooks",["$tgRepo","$tgConfirm","$tgLoading",BitbucketWebhooksDirective]),ValidOriginIpsDirective=function(){var link;return link=function($scope,$el,$attrs,$ngModel){return $ngModel.$parsers.push(function(value){return value=$.trim(value),""===value?[]:value.split(",")})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgValidOriginIps",ValidOriginIpsDirective)}.call(this),function(){var CreateProject,DeleteProjectDirective,bindOnce,debounce,module,taiga,timeout;taiga=this.taiga,bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,debounce=this.taiga.debounce,module=angular.module("taigaProject"),CreateProject=function($rootscope,$repo,$confirm,$location,$navurls,$rs,$projectUrl,$loading,lightboxService,$cacheFactory){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit,submitButton;return $scope.data={},$scope.templates=[],form=$el.find("form").checksley({onlyOneErrorElement:!0}),onSuccessSubmit=function(response){return $cacheFactory.get("$http").removeAll(),$loading.finish(submitButton),$rootscope.$broadcast("projects:reload"),$confirm.notify("success","Success"),$location.url($projectUrl.get(response)),lightboxService.close($el)},onErrorSubmit=function(response){var error_field,error_step,i,len,ref,selectors;for($loading.finish(submitButton),form.setErrors(response),selectors=[],ref=_.keys(response),i=0,len=ref.length;len>i;i++)error_field=ref[i],selectors.push("[name="+error_field+"]");return $el.find(".active").removeClass("active"),error_step=$el.find(selectors.join(",")).first().parents(".wizard-step"),error_step.addClass("active"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(error_step.data("step"))},submit=function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.create("projects",$scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this),$scope.$on("projects:create",function(){return $scope.data={total_story_points:100,total_milestones:5},$scope.templates.length?$scope.data.creation_template=_.head(_.filter($scope.templates,function(x){return"scrum"===x.slug})).id:$rs.projects.templates().then(function(){return function(result){return $scope.templates=result,$scope.data.creation_template=_.head(_.filter($scope.templates,function(x){return"scrum"===x.slug})).id}}(this)),$el.find(".active").removeClass("active"),$el.find(".create-step1").addClass("active"),lightboxService.open($el),timeout(600,function(){return $el.find(".progress-bar").addClass("step1")})}),$el.on("click",".button-next",function(event){var current,field,i,len,next,ref,step,valid;for(event.preventDefault(),current=$el.find(".active"),valid=!0,ref=form.fields,i=0,len=ref.length;len>i;i++)field=ref[i],current.find("[name="+field.element.attr("name")+"]").length&&(valid=field.validate()!==!1&&valid);return valid?(next=current.next(),current.toggleClass("active"),next.toggleClass("active"),step=next.data("step"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(step)):void 0}),$el.on("click",".button-prev",function(event){var current,prev,step;return event.preventDefault(),current=$el.find(".active"),prev=current.prev(),current.toggleClass("active"),prev.toggleClass("active"),step=prev.data("step"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(step)}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".close",function(event){return event.preventDefault(),lightboxService.close($el)})},{link:link}},module.directive("tgLbCreateProject",["$rootScope","$tgRepo","$tgConfirm","$location","$tgNavUrls","$tgResources","$projectUrl","$tgLoading","lightboxService","$cacheFactory",CreateProject]),DeleteProjectDirective=function($repo,$rootscope,$auth,$location,$navUrls,$confirm,lightboxService,tgLoader){var link;return link=function($scope,$el){var projectToDelete,submit;return projectToDelete=null,$scope.$on("deletelightbox:new",function(ctx,project){return lightboxService.open($el),projectToDelete=project}),$scope.$on("$destroy",function(){return $el.off()}),submit=function(){var promise;return tgLoader.start(),lightboxService.close($el),promise=$repo.remove(projectToDelete),promise.then(function(){return tgLoader.pageLoaded(),$rootscope.$broadcast("projects:reload"),$location.path($navUrls.resolve("home")),$confirm.notify("success")}),promise.then(null,function(){return $confirm.notify("error"),lightboxService.close($el)})},$el.on("click",".button-red",function(event){return event.preventDefault(),lightboxService.close($el)}),$el.on("click",".button-green",function(event){return event.preventDefault(),submit()})},{link:link}},module.directive("tgLbDeleteProject",["$tgRepo","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","$tgConfirm","lightboxService","tgLoader",DeleteProjectDirective])}.call(this),function(){var ProjectController,ProjectsController,ProjectsListDirective,ProjectsPaginationDirective,bindOnce,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,module=angular.module("taigaProject"),bindOnce=this.taiga.bindOnce,ProjectsController=function(superClass){function ProjectsController(scope,q,rs,rootscope,navUrls,auth,location,appTitle,projectUrl,tgLoader){var promise;this.scope=scope,this.q=q,this.rs=rs,this.rootscope=rootscope,this.navUrls=navUrls,this.auth=auth,this.location=location,this.appTitle=appTitle,this.projectUrl=projectUrl,this.appTitle.set("Projects"),this.auth.isAuthenticated()||this.location.path(this.navUrls.resolve("login")),this.user=this.auth.getUser(),this.projects=[],promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.scope.$emit("projects:loaded",_this.projects)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(ProjectsController,superClass),ProjectsController.$inject=["$scope","$q","$tgResources","$rootScope","$tgNavUrls","$tgAuth","$tgLocation","$appTitle","$projectUrl","tgLoader"],ProjectsController.prototype.loadInitialData=function(){var ref;return this.rs.projects.listByMember(null!=(ref=this.rootscope.user)?ref.id:void 0).then(function(_this){return function(projects){var i,len,project;for(_this.projects={recents:projects.slice(0,8),all:projects},i=0,len=projects.length;len>i;i++)project=projects[i],project.url=_this.projectUrl.get(project);return projects}}(this))},ProjectsController.prototype.newProject=function(){return this.rootscope.$broadcast("projects:create")},ProjectsController.prototype.logout=function(){return this.auth.logout(),this.location.path(this.navUrls.resolve("login"))},ProjectsController}(taiga.Controller),module.controller("ProjectsController",ProjectsController),ProjectController=function(superClass){function ProjectController(scope,rs,repo,params,q,rootscope,appTitle,location,navUrls){var promise;this.scope=scope,this.rs=rs,this.repo=repo,this.params=params,this.q=q,this.rootscope=rootscope,this.appTitle=appTitle,this.location=location,this.navUrls=navUrls,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.project.name),_this.scope.$emit("regenerate:project-pagination")}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(ProjectController,superClass),ProjectController.$inject=["$scope","$tgResources","$tgRepo","$routeParams","$q","$rootScope","$appTitle","$tgLocation","$tgNavUrls"],ProjectController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadPageData()}}(this)).then(function(_this){return function(){return _this.scope.$emit("project:loaded",_this.scope.project)}}(this))},ProjectController.prototype.loadPageData=function(){return this.q.all([this.loadProjectStats(),this.loadProject()])},ProjectController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,project}}(this))},ProjectController.prototype.loadProjectStats=function(){return this.rs.projects.stats(this.scope.projectId).then(function(_this){return function(stats){return _this.scope.stats=stats,stats}}(this))},ProjectController}(taiga.Controller),module.controller("ProjectController",ProjectController),ProjectsPaginationDirective=function(){var link;return link=function($scope,$el){var checkButtonVisibility,container,containerSize,hasNextPage,hasPagination,hasPrevPage,hide,nextBtn,nextPage,pageSize,prevBtn,prevPage,remove,render,visible;return prevBtn=$el.find(".v-pagination-previous"),nextBtn=$el.find(".v-pagination-next"),container=$el.find("ul"),pageSize=0,containerSize=0,render=function(){return pageSize=$el.find(".v-pagination-list").height(),container.find("li").length&&hasPagination()?(hasNextPage()?visible(nextBtn):hide(nextBtn),hasPrevPage()?visible(prevBtn):hide(prevBtn)):remove()},hasPagination=function(){return containerSize=container.height(),containerSize>pageSize},hasPrevPage=function(top){return null==top&&(top=-parseInt(container.css("top"),10)||0),0!==top},hasNextPage=function(top){return containerSize=container.height(),top||(top=-parseInt(container.css("top"),10)||0),containerSize>pageSize&&containerSize>top+pageSize},nextPage=function(callback){var lastLi,maxTop,newTop,top;return top=parseInt(container.css("top"),10),newTop=top-pageSize,lastLi=$el.find(".v-pagination-list li:last-child"),maxTop=-(lastLi.position().top+lastLi.outerHeight()-pageSize),maxTop>newTop&&(newTop=maxTop),container.animate({top:newTop},callback),newTop},prevPage=function(callback){var newTop,top;return top=parseInt(container.css("top"),10),newTop=top+pageSize,newTop>0&&(newTop=0),container.animate({top:newTop},callback),newTop},visible=function(element){return element.css("visibility","visible")},hide=function(element){return element.css("visibility","hidden")},checkButtonVisibility=function(){},remove=function(){return container.css("top",0),hide(prevBtn),hide(nextBtn)},$el.on("click",".v-pagination-previous",function(event){var newTop;return event.preventDefault(),container.is(":animated")?void 0:(visible(nextBtn),newTop=prevPage(),hasPrevPage(newTop)?void 0:hide(prevBtn))}),$el.on("click",".v-pagination-next",function(event){var newTop;return event.preventDefault(),container.is(":animated")?void 0:(visible(prevBtn),newTop=-nextPage(),hasNextPage(newTop)?void 0:hide(nextBtn))}),$scope.$on("regenerate:project-pagination",function(){return remove(),render()}),$(window).on("resize.projects-pagination",render),$scope.$on("$destroy",function(){return $(window).off("resize.projects-pagination")})},{link:link}},module.directive("tgProjectsPagination",["$timeout",ProjectsPaginationDirective]),ProjectsListDirective=function($compile,$template){var link,template;return template=$template.get("project/project-list.html",!0),link=function($scope,$el){var render;return render=function(projects){return $el.html($compile(template({projects:projects}))($scope)),$scope.$emit("regenerate:project-pagination")},$scope.$on("projects:loaded",function(ctx,projects){return null!=projects.all?render(projects.all):void 0})},{link:link}},module.directive("tgProjectsList",["$compile","$tgTemplate",ProjectsListDirective])}.call(this),function(){var BindHtmlDirective,BindOnceAltDirective,BindOnceBindDirective,BindOnceHrefDirective,BindOnceHtmlDirective,BindOnceRefDirective,BindOnceSrcDirective,BindOnceTitleDirective,BindTitleDirective,bindOnce,module;bindOnce=this.taiga.bindOnce,BindOnceBindDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoBind,function(val){return $el.text(val)})},{link:link}},BindOnceHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHtml,function(val){return $el.html(val)})},{link:link}},BindOnceRefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoRef,function(val){return $el.html("#"+val+" ")})},{link:link}},BindOnceSrcDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoSrc,function(val){return $el.attr("src",val)})},{link:link}},BindOnceHrefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHref,function(val){return $el.attr("href",val)})},{link:link}},BindOnceAltDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoAlt,function(val){return $el.attr("alt",val)})},{link:link}},BindOnceTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoTitle,function(val){return $el.attr("title",val)})},{link:link}},BindTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgTitleHtml,function(val){return null!=val?$el.attr("title",val):void 0})},{link:link}},BindHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBindHtml,function(val){return null!=val?$el.html(val):void 0})},{link:link}},module=angular.module("taigaBase"),module.directive("tgBoBind",BindOnceBindDirective),module.directive("tgBoHtml",BindOnceHtmlDirective),module.directive("tgBoRef",BindOnceRefDirective),module.directive("tgBoSrc",BindOnceSrcDirective),module.directive("tgBoHref",BindOnceHrefDirective),module.directive("tgBoAlt",BindOnceAltDirective),module.directive("tgBoTitle",BindOnceTitleDirective),module.directive("tgBindTitle",BindTitleDirective),module.directive("tgBindHtml",BindHtmlDirective)}.call(this),function(){var ConfigurationService,module;ConfigurationService=function(){function ConfigurationService(){this.config=window.taigaConfig}return ConfigurationService.prototype.get=function(key,defaultValue){return null==defaultValue&&(defaultValue=null),_.has(this.config,key)?this.config[key]:defaultValue},ConfigurationService}(),module=angular.module("taigaBase"),module.service("$tgConfig",ConfigurationService)}.call(this),function(){var ContribController,module,taigaContribPlugins,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taigaContribPlugins=this.taigaContribPlugins=this.taigaContribPlugins||[],ContribController=function(superClass){function ContribController(rootScope,scope,params,repo,rs,confirm,appTitle){var promise;this.rootScope=rootScope,this.scope=scope,this.params=params,this.repo=repo,this.rs=rs,this.confirm=confirm,this.appTitle=appTitle,this.scope.currentPlugin=_.first(_.where(taigaContribPlugins,{slug:this.params.plugin})),this.scope.pluginTemplate="contrib/"+this.scope.currentPlugin.slug,this.scope.projectSlug=this.params.pslug,this.scope.adminPlugins=_.where(this.rootScope.contribPlugins,{type:"admin"}),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.project.name)}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this))}return extend(ContribController,superClass),ContribController.$inject=["$rootScope","$scope","$routeParams","$tgRepo","$tgResources","$tgConfirm","$appTitle"],ContribController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.$broadcast("project:loaded",project),project}}(this))},ContribController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ContribController}(taiga.Controller),module=angular.module("taigaBase"),module.controller("ContribController",ContribController)}.call(this),function(){var FiltersStorageService,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,FiltersStorageService=function(superClass){function FiltersStorageService(storage,params){this.storage=storage,this.params=params}return extend(FiltersStorageService,superClass),FiltersStorageService.$inject=["$tgStorage","$routeParams"],FiltersStorageService.prototype.generateHash=function(components){return null==components&&(components=[]),components=_.map(components,function(x){return JSON.stringify(x)}),hex_sha1(components.join(":"))},FiltersStorageService}(taiga.Service)}.call(this),function(){var HttpService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,HttpService=function(superClass){function HttpService(http,q,storage){this.http=http,this.q=q,this.storage=storage,HttpService.__super__.constructor.call(this)}return extend(HttpService,superClass),HttpService.$inject=["$http","$q","$tgStorage"],HttpService.prototype.headers=function(){var token;return token=this.storage.get("token"),token?{Authorization:"Bearer "+token}:{}},HttpService.prototype.request=function(options){return options.headers=_.merge({},options.headers||{},this.headers()),_.isPlainObject(options.data)&&(options.data=JSON.stringify(options.data)),this.http(options)},HttpService.prototype.get=function(url,params,options){return options=_.merge({method:"GET",url:url},options),params&&(options.params=params),this.request(options)},HttpService.prototype.post=function(url,data,params,options){return options=_.merge({method:"POST",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype.put=function(url,data,params,options){return options=_.merge({method:"PUT",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype.patch=function(url,data,params,options){return options=_.merge({method:"PATCH",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype["delete"]=function(url,data,params,options){return options=_.merge({method:"DELETE",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgHttp",HttpService)}.call(this),function(){var I18nDirective,I18nService,bindOnce,defaults,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,bindOnce=this.taiga.bindOnce,defaults={ns:"app",fallbackLng:"en",async:!1,lng:"en"},I18nService=function(superClass){function I18nService(rootscope,localesEn){this.rootscope=rootscope,this.options=_.clone(defaults,!0),this.options.resStore={en:{app:localesEn}}}return extend(I18nService,superClass),I18nService.prototype.setLanguage=function(language){return i18n.setLng(language),this.rootscope.currentLang=language,this.rootscope.$broadcast("i18n:changeLang",language)},I18nService.prototype.initialize=function(){return i18n.init(this.options),this.rootscope.t=i18n.t},I18nService.prototype.t=function(path,opts){return i18n.t(path,opts)},I18nService}(taiga.Service),I18nDirective=function($rootscope,$i18n){var link;return link=function($scope,$el,$attrs){var i,len,ns,options,opts,ref,results,v,values;for(values=$attrs.tr.split(","),options=$attrs.trOpts||"{}",opts=$scope.$eval(options),results=[],i=0,len=values.length;len>i;i++)v=values[i],-1===v.indexOf(":")?results.push($el.html(_.escape($i18n.t(v,opts)))):(ref=v.split(":"),ns=ref[0],v=ref[1],results.push($el.attr(ns,_.escape($i18n.t(v,opts)))));return results},{link:link,restrict:"A",scope:!1}},module=angular.module("taigaBase"),module.service("$tgI18n",["$rootScope","localesEn",I18nService]),module.directive("tr",["$rootScope","$tgI18n",I18nDirective])}.call(this),function(){var locationFactory,module;locationFactory=function($location,$route){return $location.noreload=function(scope){var lastRoute,un;return lastRoute=$route.current,un=scope.$on("$locationChangeSuccess",function(){return $route.current=lastRoute,un()}),$location},$location.isInCurrentRouteParams=function(name,value){return $route.current.params[name]===value},$location},module=angular.module("taigaBase"),module.factory("$tgLocation",["$location","$route","$rootScope",locationFactory])}.call(this),function(){var Model,ModelService,module,provider,taiga,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;Model=function(){function Model(name,data,dataTypes){this._attrs=data,this._name=name,this._dataTypes=dataTypes,this.setAttrs(data),this.initialize()}return Model.prototype.clone=function(){var instance;return instance=new Model(this._name,this._attrs,this._dataTypes),instance._modifiedAttrs=this._modifiedAttrs,instance._isModified=this._isModified,instance},Model.prototype.applyCasts=function(){var attrName,castMethod,castName,ref,results;ref=this._dataTypes,results=[];for(attrName in ref)castName=ref[attrName],castMethod=service.casts[castName],castMethod&&results.push(this._attrs[attrName]=castMethod(this._attrs[attrName]));return results},Model.prototype.getIdAttrName=function(){return"id"},Model.prototype.getName=function(){return this._name},Model.prototype.getAttrs=function(patch){return null==patch&&(patch=!1),null!=this._attrs.version&&(this._modifiedAttrs.version=this._attrs.version),patch?_.extend({},this._modifiedAttrs):_.extend({},this._attrs,this._modifiedAttrs)},Model.prototype.setAttrs=function(attrs){return this._attrs=attrs,this._modifiedAttrs={},this.applyCasts(),this._isModified=!1},Model.prototype.setAttr=function(name,value){return this._modifiedAttrs[name]=value,this._isModified=!0},Model.prototype.initialize=function(){var getter,self,setter;return self=this,getter=function(name){return function(){return"string"==typeof name&&"__"===name.substr(0,2)?self[name]:indexOf.call(_.keys(self._modifiedAttrs),name)<0?self._attrs[name]:self._modifiedAttrs[name]}},setter=function(name){return function(value){return"string"==typeof name&&"__"===name.substr(0,2)?void(self[name]=value):void(self._attrs[name]!==value?(self._modifiedAttrs[name]=value,self._isModified=!0):delete self._modifiedAttrs[name])}},_.each(this._attrs,function(value,name){var options;return options={get:getter(name),set:setter(name),enumerable:!0,configurable:!0},Object.defineProperty(self,name,options)})},Model.prototype.serialize=function(){var data;return data={data:_.clone(this._attrs),name:this._name},JSON.stringify(data)},Model.prototype.isModified=function(){return this._isModified},Model.prototype.isAttributeModified=function(attribute){return null!=this._modifiedAttrs[attribute]},Model.prototype.markSaved=function(){return this._isModified=!1,this._attrs=this.getAttrs(),this._modifiedAttrs={}},Model.prototype.revert=function(){return this._modifiedAttrs={},this._isModified=!1},Model.desSerialize=function(sdata){var ddata,model;return ddata=JSON.parse(sdata),model=new Model(ddata.url,ddata.data)},Model}(),taiga=this.taiga,ModelService=function(superClass){function ModelService(q,urls,storage,http){this.q=q,this.urls=urls,this.storage=storage,this.http=http,ModelService.__super__.constructor.call(this)}return extend(ModelService,superClass),ModelService.$inject=["$q","$tgUrls","$tgStorage","$tgHttp"],ModelService}(taiga.Service),provider=function(){var service;return service={},service.make_model=function(name,data,cls,dataTypes){return null==cls&&(cls=Model),null==dataTypes&&(dataTypes={}),new cls(name,data,dataTypes)},service.cls=Model,service.casts={"int":function(value){return parseInt(value,10)},"float":function(value){return parseFloat(value,10)}},service},module=angular.module("taigaBase"),module.factory("$tgModel",["$q","$http","$tgUrls","$tgStorage",provider])}.call(this),function(){var NavigationUrlsDirective,NavigationUrlsService,bindOnce,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,module=angular.module("taigaBase"),NavigationUrlsService=function(superClass){function NavigationUrlsService(){this.urls={}}return extend(NavigationUrlsService,superClass),NavigationUrlsService.prototype.update=function(urls){return this.urls=_.merge({},this.urls,urls||{})},NavigationUrlsService.prototype.formatUrl=function(url,ctx){var replacer;return null==ctx&&(ctx={}),replacer=function(match){return match=trim(match,":"),ctx[match]||"undefined"},url.replace(/(:\w+)/g,replacer)},NavigationUrlsService.prototype.resolve=function(name,ctx){var url;return url=this.urls[name],url?ctx?this.formatUrl(url,ctx):url:""},NavigationUrlsService}(taiga.Service),module.service("$tgNavUrls",NavigationUrlsService),NavigationUrlsDirective=function($navurls,$auth,$q,$location){var bindOnceP,link,parseNav;return bindOnceP=function($scope,attr){var defered;return defered=$q.defer(),bindOnce($scope,attr,function(v){return defered.resolve(v)}),defered.promise},parseNav=function(data,$scope){var name,params,promises,ref,values;return ref=_.map(data.split(":"),trim),name=ref[0],params=ref[1],params=params?_.map(params.split(","),trim):[],values=_.map(params,function(x){return trim(x.split("=")[1])}),promises=_.map(values,function(x){return bindOnceP($scope,x)}),$q.all(promises).then(function(){var i,item,key,len,options,ref1,value; -for(options={},i=0,len=params.length;len>i;i++)item=params[i],ref1=_.map(item.split("="),trim),key=ref1[0],value=ref1[1],options[key]=$scope.$eval(value);return[name,options]})},link=function($scope,$el,$attrs){return $el.is("a")&&$el.attr("href","#"),$el.on("mouseenter",function(event){var target;return target=$(event.currentTarget),target.data("fullUrl")?void 0:parseNav($attrs.tgNav,$scope).then(function(result){var fullUrl,name,options,url,user;return name=result[0],options=result[1],user=$auth.getUser(),user&&(options.user=user.username),url=$navurls.resolve(name),fullUrl=$navurls.formatUrl(url,options),target.data("fullUrl",fullUrl),target.is("a")&&target.attr("href",fullUrl),$el.on("click",function(event){if(event.preventDefault(),target=$(event.currentTarget),!target.hasClass("noclick"))switch(fullUrl=target.data("fullUrl"),event.which){case 1:return $location.url(fullUrl),$scope.$apply();case 2:return window.open(fullUrl)}})})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgNav",["$tgNavUrls","$tgAuth","$q","$tgLocation",NavigationUrlsDirective])}.call(this),function(){var RepositoryService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,RepositoryService=function(superClass){function RepositoryService(q,model1,storage,http,urls){this.q=q,this.model=model1,this.storage=storage,this.http=http,this.urls=urls,RepositoryService.__super__.constructor.call(this)}return extend(RepositoryService,superClass),RepositoryService.$inject=["$q","$tgModel","$tgStorage","$tgHttp","$tgUrls"],RepositoryService.prototype.resolveUrlForModel=function(model){var idAttrName;return idAttrName=model.getIdAttrName(),this.urls.resolve(model.getName())+"/"+model[idAttrName]},RepositoryService.prototype.resolveUrlForAttributeModel=function(model){return this.urls.resolve(model.getName(),model.parent)},RepositoryService.prototype.create=function(name,data,dataTypes,extraParams){var defered,promise,url;return null==dataTypes&&(dataTypes={}),null==extraParams&&(extraParams={}),defered=this.q.defer(),url=this.urls.resolve(name),promise=this.http.post(url,JSON.stringify(data)),promise.success(function(_this){return function(_data){return defered.resolve(_this.model.make_model(name,_data,null,dataTypes))}}(this)),promise.error(function(){return function(data){return defered.reject(data)}}(this)),defered.promise},RepositoryService.prototype.remove=function(model,params){var defered,promise,url;return null==params&&(params={}),defered=this.q.defer(),url=this.resolveUrlForModel(model),promise=this.http["delete"](url,{},params),promise.success(function(){return defered.resolve(model)}),promise.error(function(){return defered.reject(model)}),defered.promise},RepositoryService.prototype.saveAll=function(models,patch){var promises;return null==patch&&(patch=!0),promises=_.map(models,function(_this){return function(x){return _this.save(x,!0)}}(this)),this.q.all(promises)},RepositoryService.prototype.save=function(model,patch){var data,defered,promise,url;return null==patch&&(patch=!0),defered=this.q.defer(),!model.isModified()&&patch?(defered.resolve(model),defered.promise):(url=this.resolveUrlForModel(model),data=JSON.stringify(model.getAttrs(patch)),promise=patch?this.http.patch(url,data):this.http.put(url,data),promise.success(function(){return function(data){return model._isModified=!1,model._attrs=_.extend(model.getAttrs(),data),model._modifiedAttrs={},model.applyCasts(),defered.resolve(model)}}(this)),promise.error(function(data){return defered.reject(data)}),defered.promise)},RepositoryService.prototype.saveAttribute=function(model,attribute,patch){var data,defered,promise,url;return null==patch&&(patch=!0),defered=this.q.defer(),!model.isModified()&&patch?(defered.resolve(model),defered.promise):(url=this.resolveUrlForAttributeModel(model),data={},data[attribute]=model.getAttrs(),promise=patch?this.http.patch(url,data):this.http.put(url,data),promise.success(function(){return function(data){return model._isModified=!1,model._attrs=_.extend(model.getAttrs(),data),model._modifiedAttrs={},model.applyCasts(),defered.resolve(model)}}(this)),promise.error(function(data){return defered.reject(data)}),defered.promise)},RepositoryService.prototype.refresh=function(model){var defered,promise,url;return defered=this.q.defer(),url=this.resolveUrlForModel(model),promise=this.http.get(url),promise.success(function(data){return model._modifiedAttrs={},model._attrs=data,model._isModified=!1,model.applyCasts(),defered.resolve(model)}),promise.error(function(data){return defered.reject(data)}),defered.promise},RepositoryService.prototype.queryMany=function(name,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){return _.map(data.data,function(x){return _this.model.make_model(name,x)})}}(this))},RepositoryService.prototype.queryOneAttribute=function(name,id,attribute,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name,id),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){var model;return model=_this.model.make_model(name,data.data[attribute]),model.parent=id,model}}(this))},RepositoryService.prototype.queryOne=function(name,id,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),id&&(url=url+"/"+id),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){return _this.model.make_model(name,data.data)}}(this))},RepositoryService.prototype.queryOneRaw=function(name,id,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),id&&(url=url+"/"+id),httpOptions=_.merge({headers:{}},options),options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(){return function(data){return data.data}}(this))},RepositoryService.prototype.queryPaginated=function(name,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),httpOptions=_.merge({headers:{}},options),this.http.get(url,params,httpOptions).then(function(_this){return function(data){var headers,result;return headers=data.headers(),result={},result.models=_.map(data.data,function(x){return _this.model.make_model(name,x)}),result.count=parseInt(headers["x-pagination-count"],10),result.current=parseInt(headers["x-pagination-current"]||1,10),result.paginatedBy=parseInt(headers["x-paginated-by"],10),result}}(this))},RepositoryService.prototype.resolve=function(options){var cache,params;return params={},null!=options.pslug&&(params.project=options.pslug),null!=options.usref&&(params.us=options.usref),null!=options.taskref&&(params.task=options.taskref),null!=options.issueref&&(params.issue=options.issueref),null!=options.sslug&&(params.milestone=options.sslug),null!=options.wikipage&&(params.wikipage=options.wikipage),cache=!(options.wikipage||options.sslug),this.queryOneRaw("resolver",null,params,{cache:cache})},RepositoryService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgRepo",RepositoryService)}.call(this),function(){var StorageService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,StorageService=function(superClass){function StorageService(){StorageService.__super__.constructor.call(this)}return extend(StorageService,superClass),StorageService.$inject=["$rootScope"],StorageService.prototype.get=function(key,_default){var serializedValue;return serializedValue=localStorage.getItem(key),null===serializedValue?_default||null:JSON.parse(serializedValue)},StorageService.prototype.set=function(key,val){return _.isObject(key)?_.each(key,function(_this){return function(val,key){return _this.set(key,val)}}(this)):localStorage.setItem(key,JSON.stringify(val))},StorageService.prototype.contains=function(key){var value;return value=this.get(key),null!==value},StorageService.prototype.remove=function(key){return localStorage.removeItem(key)},StorageService.prototype.clear=function(){return localStorage.clear()},StorageService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgStorage",StorageService)}.call(this),function(){var UrlsService,format,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;format=function(fmt,obj){return obj=_.clone(obj),fmt.replace(/%s/g,function(){return String(obj.shift())})},taiga=this.taiga,UrlsService=function(superClass){function UrlsService(config){this.config=config,this.urls={},this.mainUrl=this.config.get("api")}return extend(UrlsService,superClass),UrlsService.$inject=["$tgConfig"],UrlsService.prototype.update=function(urls){return this.urls=_.merge(this.urls,urls)},UrlsService.prototype.resolve=function(){var args,name,url;if(args=_.toArray(arguments),0===args.length)throw Error("wrong arguments to setUrls");return name=args.slice(0,1)[0],url=format(this.urls[name],args.slice(1)),format("%s/%s",[_.str.rtrim(this.mainUrl,"/"),_.str.ltrim(url,"/")])},UrlsService.prototype.resolveAbsolute=function(){var url;return url=this.resolve.apply(this,arguments),/^https?:\/\//i.test(url)?url:/^\//.test(url)?window.location.protocol+"//"+window.location.host+url:window.location.protocol+"//"+window.location.host+"/"+url},UrlsService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgUrls",UrlsService)}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($rootScope,$config,$urls,$model,$repo,$auth,$q){var service;return service={},service.list=function(urlName,objectId,projectId){var params;return params={object_id:objectId,project:projectId},$repo.queryMany(urlName,params)},service.create=function(urlName,projectId,objectId,file){var data,defered,maxFileSize,response,uploadComplete,uploadFailed,uploadProgress,xhr;return defered=$q.defer(),void 0===file?(defered.reject(null),defered.promise):(maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered.reject(response),defered.promise):(uploadProgress=function(){return function(evt){return $rootScope.$apply(function(){return file.status="in-progress",file.size=sizeFormat(evt.total),file.progressMessage="upload "+sizeFormat(evt.loaded)+" of "+sizeFormat(evt.total),file.progressPercent=Math.round(evt.loaded/evt.total*100)+"%"})}}(this),uploadComplete=function(){return function(evt){return $rootScope.$apply(function(){var data,model;file.status="done";try{data=JSON.parse(evt.target.responseText)}catch(_error){data={}}return model=$model.make_model(urlName,data),defered.resolve(model)})}}(this),uploadFailed=function(){return function(){return $rootScope.$apply(function(){return file.status="error",defered.reject("fail")})}}(this),data=new FormData,data.append("project",projectId),data.append("object_id",objectId),data.append("attached_file",file),xhr=new XMLHttpRequest,xhr.upload.addEventListener("progress",uploadProgress,!1),xhr.addEventListener("load",uploadComplete,!1),xhr.addEventListener("error",uploadFailed,!1),xhr.open("POST",$urls.resolve(urlName)),xhr.setRequestHeader("Authorization","Bearer "+$auth.getToken()),xhr.setRequestHeader("Accept","application/json"),xhr.send(data),defered.promise))},function(instance){return instance.attachments=service}},module=angular.module("taigaResources"),module.factory("$tgAttachmentsResourcesProvider",["$rootScope","$tgConfig","$tgUrls","$tgModel","$tgRepo","$tgAuth","$q",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var _get,service;return _get=function(objectId,resource){return $repo.queryOne(resource,objectId)},service={userstory:{get:function(objectId){return _get(objectId,"custom-attributes-values/userstory")}},task:{get:function(objectId){return _get(objectId,"custom-attributes-values/task")}},issue:{get:function(objectId){return _get(objectId,"custom-attributes-values/issue")}}},function(instance){return instance.customAttributesValues=service}},module=angular.module("taigaResources"),module.factory("$tgCustomAttributesValuesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($repo){var _list,service;return _list=function(projectId,resource){return $repo.queryMany(resource,{project:projectId})},service={userstory:{list:function(projectId){return _list(projectId,"custom-attributes/userstory")}},task:{list:function(projectId){return _list(projectId,"custom-attributes/task")}},issue:{list:function(projectId){return _list(projectId,"custom-attributes/issue")}}},function(instance){return instance.customAttributes=service}},module=angular.module("taigaResources"),module.factory("$tgCustomAttributesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$http,$urls){var service;return service={},service.get=function(type,objectId){return $repo.queryOneRaw("history/"+type,objectId)},service.deleteComment=function(type,objectId,activityId){var params,url;return url=$urls.resolve("history/"+type),url=url+"/"+objectId+"/delete_comment",params={id:activityId},$http.post(url,null,params).then(function(){return function(data){return data.data}}(this))},service.undeleteComment=function(type,objectId,activityId){var params,url;return url=$urls.resolve("history/"+type),url=url+"/"+objectId+"/undelete_comment",params={id:activityId},$http.post(url,null,params).then(function(){return function(data){return data.data}}(this))},function(instance){return instance.history=service}},module=angular.module("taigaResources"),module.factory("$tgHistoryResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(token){return $repo.queryOne("invitations",token)},function(instance){return instance.invitations=service}},module=angular.module("taigaResources"),module.factory("$tgInvitationsResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage,$q){var filtersHashSuffix,hashSuffix,myFiltersHashSuffix,service;return service={},hashSuffix="issues-queryparams",filtersHashSuffix="issues-filters",myFiltersHashSuffix="issues-my-filters",service.get=function(projectId,issueId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("issues",issueId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("issues","by_ref",params)},service.list=function(projectId,filters,options){var params;return params={project:projectId},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryPaginated("issues",params,options)},service.bulkCreate=function(projectId,data){var params,url;return url=$urls.resolve("bulk-create-issues"),params={project_id:projectId,bulk_issues:data},$http.post(url,params)},service.stats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/issues_stats")},service.filtersData=function(projectId){return $repo.queryOneRaw("projects",projectId+"/issue_filters_data")},service.listValues=function(projectId,type){var params;return params={project:projectId},service.storeQueryParams(projectId,params),$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeFilters=function(projectSlug,params){var hash,ns;return ns=projectSlug+":"+filtersHashSuffix,hash=generateHash([projectSlug,ns]),$storage.set(hash,params)},service.getFilters=function(projectSlug){var hash,ns;return ns=projectSlug+":"+filtersHashSuffix,hash=generateHash([projectSlug,ns]),$storage.get(hash)||{}},service.storeMyFilters=function(projectId,myFilters){var deferred,hash,ns,promise,url;return deferred=$q.defer(),url=$urls.resolve("user-storage"),ns=projectId+":"+myFiltersHashSuffix,hash=generateHash([projectId,ns]),_.isEmpty(myFilters)?(promise=$http["delete"](url+"/"+hash,{key:hash,value:myFilters}),promise.then(function(){return deferred.resolve()}),promise.then(null,function(){return deferred.reject()})):(promise=$http.put(url+"/"+hash,{key:hash,value:myFilters}),promise.then(function(){return deferred.resolve()}),promise.then(null,function(){var innerPromise;return innerPromise=$http.post(""+url,{key:hash,value:myFilters}),innerPromise.then(function(){return deferred.resolve()}),innerPromise.then(null,function(){return deferred.reject()})})),deferred.promise},service.getMyFilters=function(projectId){var deferred,hash,ns,promise,url;return deferred=$q.defer(),url=$urls.resolve("user-storage"),ns=projectId+":"+myFiltersHashSuffix,hash=generateHash([projectId,ns]),promise=$http.get(url+"/"+hash),promise.then(function(data){return deferred.resolve(data.data.value)}),promise.then(null,function(){return deferred.resolve({})}),deferred.promise},function(instance){return instance.issues=service}},module=angular.module("taigaResources"),module.factory("$tgIssuesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage","$q",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($storage){var hashSuffixStatusColumnModes,hashSuffixStatusViewModes,service;return service={},hashSuffixStatusViewModes="kanban-statusviewmodels",hashSuffixStatusColumnModes="kanban-statuscolumnmodels",service.storeStatusViewModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusViewModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusViewModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusViewModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeStatusColumnModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusColumnModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},function(instance){return instance.kanban=service}},module=angular.module("taigaResources"),module.factory("$tgKanbanResourcesProvider",["$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$urls,$http){var service;return service={},service.render=function(projectId,content){var params,url;return(null==content||""===content)&&(content=" "),params={project_id:projectId,content:content},url=$urls.resolve("wiki"),$http.post(url+"/render",params).then(function(){return function(data){return data.data}}(this))},function(instance){return instance.mdrender=service}},module=angular.module("taigaResources"),module.factory("$tgMdRenderResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$http,$urls){var service;return service={},service.get=function(id){return $repo.queryOne("memberships",id)},service.list=function(projectId,filters,enablePagination){var options,params;return null==enablePagination&&(enablePagination=!0),params={project:projectId},params=_.extend({},params,filters||{}),enablePagination?$repo.queryPaginated("memberships",params):$repo.queryMany("memberships",params,options={enablePagination:enablePagination})},service.listByUser=function(userId,filters){var params;return params={user:userId},params=_.extend({},params,filters||{}),$repo.queryPaginated("memberships",params)},service.resendInvitation=function(id){var url;return url=$urls.resolve("memberships"),$http.post(url+"/"+id+"/resend_invitation",{})},service.bulkCreateMemberships=function(projectId,data,invitation_extra_text){var params,url;return url=$urls.resolve("bulk-create-memberships"),params={project_id:projectId,bulk_memberships:data,invitation_extra_text:invitation_extra_text},$http.post(url,params)},function(instance){return instance.memberships=service}},module=angular.module("taigaResources"),module.factory("$tgMembershipsResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo){var service;return service={},service.list=function(projectId,module){return $repo.queryOneAttribute("project-modules",projectId,module)},function(instance){return instance.modules=service}},module=angular.module("taigaResources"),module.factory("$tgModulesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(id){return $repo.queryOne("notify-policies",id)},service.list=function(filters){var params;return params=_.extend({},params,filters||{}),$repo.queryMany("notify-policies",params)},function(instance){return instance.notifyPolicies=service}},module=angular.module("taigaResources"),module.factory("$tgNotifyPoliciesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($config,$repo,$http,$urls,$auth,$q){var service;return service={},service.get=function(projectId){return $repo.queryOne("projects",projectId)},service.getBySlug=function(projectSlug){return $repo.queryOne("projects","by_slug?slug="+projectSlug)},service.list=function(){return $repo.queryMany("projects")},service.listByMember=function(memberId){var params;return params={member:memberId},$repo.queryMany("projects",params)},service.templates=function(){return $repo.queryMany("project-templates")},service.usersList=function(projectId){var params;return params={project:projectId},$repo.queryMany("users",params)},service.rolesList=function(projectId){var params;return params={project:projectId},$repo.queryMany("roles",params)},service.stats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/stats")},service.regenerate_userstories_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_userstories_csv_uuid",$http.post(url)},service.regenerate_issues_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_issues_csv_uuid",$http.post(url)},service.regenerate_tasks_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_tasks_csv_uuid",$http.post(url)},service.leave=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/leave",$http.post(url)},service.memberStats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/member_stats")},service.tagsColors=function(projectId){return $repo.queryOne("projects",projectId+"/tags_colors")},service["export"]=function(projectId){var url;return url=$urls.resolve("exporter")+"/"+projectId,$http.get(url)},service["import"]=function(file,statusUpdater){var complete,data,defered,failed,maxFileSize,response,uploadComplete,uploadFailed,uploadProgress,xhr;return defered=$q.defer(),maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered.reject(response),defered.promise):(uploadProgress=function(){return function(evt){var message,percent;return percent=Math.round(evt.loaded/evt.total*100),message="Uloaded "+sizeFormat(evt.loaded)+" of "+sizeFormat(evt.total),statusUpdater("in-progress",null,message,percent)}}(this),uploadComplete=function(){return function(){return statusUpdater("done","Importing Project","This process can take a while, please keep the window open.")}}(this),uploadFailed=function(){return function(){return statusUpdater("error")}}(this),complete=function(){return function(evt){var ref;response={};try{response.data=JSON.parse(evt.target.responseText)}catch(_error){response.data={}}return response.status=evt.target.status,(201===(ref=response.status)||202===ref)&&defered.resolve(response),defered.reject(response)}}(this),failed=function(){return function(){return defered.reject("fail")}}(this),data=new FormData,data.append("dump",file),xhr=new XMLHttpRequest,xhr.upload.addEventListener("progress",uploadProgress,!1),xhr.upload.addEventListener("load",uploadComplete,!1),xhr.upload.addEventListener("error",uploadFailed,!1),xhr.upload.addEventListener("abort",uploadFailed,!1),xhr.addEventListener("load",complete,!1),xhr.addEventListener("error",failed,!1),xhr.open("POST",$urls.resolve("importer")),xhr.setRequestHeader("Authorization","Bearer "+$auth.getToken()),xhr.setRequestHeader("Accept","application/json"),xhr.send(data),defered.promise)},function(instance){return instance.projects=service}},module=angular.module("taigaResources"),module.factory("$tgProjectsResourcesProvider",["$tgConfig","$tgRepo","$tgHttp","$tgUrls","$tgAuth","$q",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(id){return $repo.queryOne("roles",id)},service.list=function(projectId){return $repo.queryMany("roles",{project:projectId})},function(instance){return instance.roles=service}},module=angular.module("taigaResources"),module.factory("$tgRolesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$urls,$http){var service;return service={},service["do"]=function(projectId,term){var params,url;return url=$urls.resolve("search"),params={project:projectId,text:term,get_all:!1},$http.get(url,params).then(function(data){return data.data})},function(instance){return instance.search=service}},module=angular.module("taigaResources"),module.factory("$tgSearchResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$model,$storage){var hashSuffixUserstories,service;return service={},hashSuffixUserstories="userstories-queryparams",service.get=function(projectId,sprintId){return $repo.queryOne("milestones",sprintId).then(function(sprint){var uses;return service.storeUserstoriesQueryParams(projectId,{milestone:sprintId}),uses=sprint.user_stories,uses=_.map(uses,function(u){return $model.make_model("userstories",u)}),sprint._attrs.user_stories=uses,sprint})},service.stats=function(projectId,sprintId){return $repo.queryOneRaw("milestones",sprintId+"/stats")},service.list=function(projectId,filters){var params;return params={project:projectId},params=_.extend({},params,filters||{}),$repo.queryMany("milestones",params).then(function(){return function(milestones){var i,len,m,uses;for(i=0,len=milestones.length;len>i;i++)m=milestones[i],uses=m.user_stories,uses=_.map(uses,function(u){return $model.make_model("userstories",u)}),m._attrs.user_stories=uses;return milestones}}(this))},service.storeUserstoriesQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixUserstories,hash=generateHash([projectId,ns]),$storage.set(hash,params)},function(instance){return instance.sprints=service}},module=angular.module("taigaResources"),module.factory("$tgSprintsResourcesProvider",["$tgRepo","$tgModel","$tgStorage",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage){var hashSuffix,hashSuffixStatusColumnModes,hashSuffixUsRowModes,service;return service={},hashSuffix="tasks-queryparams",hashSuffixStatusColumnModes="tasks-statuscolumnmodels",hashSuffixUsRowModes="tasks-usrowmodels",service.get=function(projectId,taskId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("tasks",taskId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("tasks","by_ref",params)},service.list=function(projectId,sprintId,userStoryId){var params;return null==sprintId&&(sprintId=null),null==userStoryId&&(userStoryId=null),params={project:projectId},sprintId&&(params.milestone=sprintId),userStoryId&&(params.user_story=userStoryId),service.storeQueryParams(projectId,params),$repo.queryMany("tasks",params)},service.bulkCreate=function(projectId,sprintId,usId,data){var params,url;return url=$urls.resolve("bulk-create-tasks"),params={project_id:projectId,sprint_id:sprintId,us_id:usId,bulk_tasks:data},$http.post(url,params).then(function(result){return result.data})},service.bulkUpdateTaskTaskboardOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-task-taskboard-order"),params={project_id:projectId,bulk_tasks:data},$http.post(url,params)},service.listValues=function(projectId,type){var params;return params={project:projectId},$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeStatusColumnModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusColumnModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeUsRowModes=function(projectId,sprintId,params){var hash,ns;return ns=projectId+":"+hashSuffixUsRowModes,hash=generateHash([projectId,sprintId,ns]),$storage.set(hash,params) -},service.getUsRowModes=function(projectId,sprintId){var hash,ns;return ns=projectId+":"+hashSuffixUsRowModes,hash=generateHash([projectId,sprintId,ns]),$storage.get(hash)||{}},function(instance){return instance.tasks=service}},module=angular.module("taigaResources"),module.factory("$tgTasksResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($config,$repo,$http,$urls,$q){var service;return service={},service.changeAvatar=function(file){var data,defered,maxFileSize,options,response,url;return maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered=$q.defer(),defered.reject(response),defered.promise):(data=new FormData,data.append("avatar",file),options={transformRequest:angular.identity,headers:{"Content-Type":void 0}},url=$urls.resolve("users")+"/change_avatar",$http.post(url,data,{},options))},service.removeAvatar=function(){var url;return url=$urls.resolve("users")+"/remove_avatar",$http.post(url)},service.changePassword=function(currentPassword,newPassword){var data,url;return url=$urls.resolve("users")+"/change_password",data={current_password:currentPassword,password:newPassword},$http.post(url,data)},function(instance){return instance.userSettings=service}},module=angular.module("taigaResources"),module.factory("$tgUserSettingsResourcesProvider",["$tgConfig","$tgRepo","$tgHttp","$tgUrls","$q",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage){var hashSuffix,service;return service={},hashSuffix="userstories-queryparams",service.get=function(projectId,usId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("userstories",usId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("userstories","by_ref",params)},service.listUnassigned=function(projectId,filters){var params;return params={project:projectId,milestone:"null"},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryMany("userstories",params)},service.listAll=function(projectId,filters){var params;return params={project:projectId},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryMany("userstories",params)},service.bulkCreate=function(projectId,status,bulk){var data,url;return data={project_id:projectId,status_id:status,bulk_stories:bulk},url=$urls.resolve("bulk-create-us"),$http.post(url,data)},service.bulkUpdateBacklogOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-backlog-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.bulkUpdateSprintOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-sprint-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.bulkUpdateKanbanOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-kanban-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.listValues=function(projectId,type){var params;return params={project:projectId},service.storeQueryParams(projectId,params),$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeShowTags=function(projectId,showTags){var hash;return hash=generateHash([projectId,"showTags"]),$storage.set(hash,showTags)},service.getShowTags=function(projectId){var hash;return hash=generateHash([projectId,"showTags"]),$storage.get(hash)||null},function(instance){return instance.userstories=service}},module=angular.module("taigaResources"),module.factory("$tgUserstoriesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo,$urls,$http){var service;return service={},service.list=function(webhookId){var params;return params={webhook:webhookId},$repo.queryMany("webhooklogs",params)},service.resend=function(webhooklogId){var url;return url=$urls.resolve("webhooklogs-resend",webhooklogId),$http.post(url)},function(instance){return instance.webhooklogs=service}},module=angular.module("taigaResources"),module.factory("$tgWebhookLogsResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo,$urls,$http){var service;return service={},service.list=function(projectId){var params;return params={project:projectId},$repo.queryMany("webhooks",params)},service.test=function(webhookId){var url;return url=$urls.resolve("webhooks-test",webhookId),$http.post(url)},function(instance){return instance.webhooks=service}},module=angular.module("taigaResources"),module.factory("$tgWebhooksResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(wikiId){return $repo.queryOne("wiki",wikiId)},service.getBySlug=function(projectId,slug){return $repo.queryOne("wiki","by_slug?project="+projectId+"&slug="+slug)},service.listLinks=function(projectId){return $repo.queryMany("wiki-links",{project:projectId})},function(instance){return instance.wiki=service}},module=angular.module("taigaResources"),module.factory("$tgWikiResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var UserChangePasswordController,UserChangePasswordDirective,debounce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,debounce=this.taiga.debounce,module=angular.module("taigaUserSettings"),UserChangePasswordController=function(superClass){function UserChangePasswordController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,auth){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="Change Password",this.scope.project={},this.scope.user=this.auth.getUser(),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserChangePasswordController,superClass),UserChangePasswordController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserChangePasswordController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserChangePasswordController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},UserChangePasswordController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserChangePasswordController",UserChangePasswordController),UserChangePasswordDirective=function($rs,$confirm,$loading){var link;return link=function($scope,$el){var submit,submitButton;return submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),$scope.newPassword1!==$scope.newPassword2?void $confirm.notify("error","The passwords dosn't match"):($loading.start(submitButton),promise=$rs.userSettings.changePassword($scope.currentPassword,$scope.newPassword1),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(response){return $loading.finish(submitButton),$confirm.notify("error",response.data._error_message)}))}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserChangePassword",["$tgResources","$tgConfirm","$tgLoading",UserChangePasswordDirective])}.call(this),function(){var DeleteUserDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaUserSettings"),DeleteUserDirective=function($repo,$rootscope,$auth,$location,$navUrls,lightboxService){var link;return link=function($scope,$el){var submit;return $scope.$on("deletelightbox:new",function(){return lightboxService.open($el)}),$scope.$on("$destroy",function(){return $el.off()}),submit=function(){var promise;return promise=$repo.remove($scope.user),promise.then(function(){return lightboxService.close($el),$auth.logout(),$location.path($navUrls.resolve("login"))}),promise.then(null,function(){return console.log("FAIL")})},$el.on("click",".button-red",function(event){return event.preventDefault(),lightboxService.close($el)}),$el.on("click",".button-green",debounce(2e3,function(event){return event.preventDefault(),submit()}))},{link:link,templateUrl:"user/lightbox/lightbox-delete-account.html"}},module.directive("tgLbDeleteUser",["$tgRepo","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","lightboxService",DeleteUserDirective])}.call(this),function(){var TaigaAvatarModelDirective,UserAvatarDirective,UserProfileDirective,UserSettingsController,debounce,mixOf,module,sizeFormat,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,sizeFormat=this.taiga.sizeFormat,module=angular.module("taigaUserSettings"),debounce=this.taiga.debounce,UserSettingsController=function(superClass){function UserSettingsController(scope,rootscope,config,repo,confirm,rs,params,q,location,navUrls,auth){var maxFileSize,promise;this.scope=scope,this.rootscope=rootscope,this.config=config,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="User Profile",this.scope.project={},this.scope.user=this.auth.getUser(),maxFileSize=this.config.get("maxUploadFileSize",null),maxFileSize&&(this.scope.maxFileSizeMsg="[Max, size: "+sizeFormat(maxFileSize)),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserSettingsController,superClass),UserSettingsController.$inject=["$scope","$rootScope","$tgConfig","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserSettingsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserSettingsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},UserSettingsController.prototype.openDeleteLightbox=function(){return this.rootscope.$broadcast("deletelightbox:new",this.scope.user)},UserSettingsController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserSettingsController",UserSettingsController),UserProfileDirective=function($confirm,$auth,$repo){var link;return link=function($scope,$el){var submit;return submit=debounce(2e3,function(){return function(event){var changeEmail,form,onError,onSuccess;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?(changeEmail=$scope.user.isAttributeModified("email"),onSuccess=function(data){return $auth.setUser(data),changeEmail?$confirm.success("Check your inbox!
We have sent a mail to your account
with the instructions to set your new address"):$confirm.notify("success")},onError=function(data){return form.setErrors(data),$confirm.notify("error",data._error_message)},$repo.save($scope.user).then(onSuccess,onError)):void 0}}(this)),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserProfile",["$tgConfirm","$tgAuth","$tgRepo",UserProfileDirective]),UserAvatarDirective=function($auth,$model,$rs,$confirm){var link;return link=function($scope,$el){var onError,onSuccess,showSizeInfo;return showSizeInfo=function(){return $el.find(".size-info").removeClass("hidden")},onSuccess=function(response){var user;return user=$model.make_model("users",response.data),$auth.setUser(user),$scope.user=user,$el.find(".overlay").addClass("hidden"),$confirm.notify("success")},onError=function(response){return 413===response.status&&showSizeInfo(),$el.find(".overlay").addClass("hidden"),$confirm.notify("error",response.data._error_message)},$el.on("click",".js-change-avatar",function(){return $el.find("#avatar-field").click()}),$el.on("change","#avatar-field",function(){return $scope.avatarAttachment?($el.find(".overlay").removeClass("hidden"),$rs.userSettings.changeAvatar($scope.avatarAttachment).then(onSuccess,onError)):void 0}),$el.on("click","a.use-gravatar",function(){return $el.find(".overlay").removeClass("hidden"),$rs.userSettings.removeAvatar().then(onSuccess,onError)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserAvatar",["$tgAuth","$tgModel","$tgResources","$tgConfirm",UserAvatarDirective]),TaigaAvatarModelDirective=function($parse){var link;return link=function($scope,$el,$attrs){var model,modelSetter;return model=$parse($attrs.tgAvatarModel),modelSetter=model.assign,$el.bind("change",function(){return $scope.$apply(function(){return modelSetter($scope,$el[0].files[0])})})},{link:link}},module.directive("tgAvatarModel",["$parse",TaigaAvatarModelDirective])}.call(this),function(){var UserSettingsNavigationDirective,module;UserSettingsNavigationDirective=function(){var link;return link=function($scope,$el,$attrs){var section;return section=$attrs.tgUserSettingsNavigation,$el.find(".active").removeClass("active"),$el.find("#usersettingsmenu-"+section+" a").addClass("active"),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaUserSettings"),module.directive("tgUserSettingsNavigation",UserSettingsNavigationDirective)}.call(this),function(){var UserNotificationsController,UserNotificationsDirective,UserNotificationsListDirective,bindOnce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindOnce=this.taiga.bindOnce,module=angular.module("taigaUserSettings"),UserNotificationsController=function(superClass){function UserNotificationsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,auth){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="Email Notifications",this.scope.project={},this.scope.user=this.auth.getUser(),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserNotificationsController,superClass),UserNotificationsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserNotificationsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserNotificationsController.prototype.loadNotifyPolicies=function(){return this.rs.notifyPolicies.list().then(function(_this){return function(notifyPolicies){return _this.scope.notifyPolicies=notifyPolicies,notifyPolicies}}(this))},UserNotificationsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadNotifyPolicies()}}(this))},UserNotificationsController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserNotificationsController",UserNotificationsController),UserNotificationsDirective=function(){var link;return link=function($scope,$el){return $scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserNotifications",UserNotificationsDirective),UserNotificationsListDirective=function($repo,$confirm){var link,template;return template=_.template('<% _.each(notifyPolicies, function (notifyPolicy, index) { %>\n
\n
<%- notifyPolicy.project_name %>
\n
\n
\n checked="checked"<% } %>/>\n \n
\n
\n
\n
\n checked="checked"<% } %> />\n \n
\n
\n
\n
\n checked="checked"<% } %> />\n \n
\n
\n
\n<% }) %>'),link=function($scope,$el,$attrs){var render;return render=function(){return $el.off(),$el.html(template({notifyPolicies:$scope.notifyPolicies})),$el.on("change","input[type=radio]",function(event){var onError,onSuccess,policy,policyIndex,prev_level,target;return target=angular.element(event.currentTarget),policyIndex=target.parents(".policy-table-row").data("index"),policy=$scope.notifyPolicies[policyIndex],prev_level=policy.notify_level,policy.notify_level=parseInt(target.val(),10),onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error"),target.parents(".policy-table-row").find("input[value="+prev_level+"]").prop("checked",!0)},$repo.save(policy).then(onSuccess,onError)})},$scope.$on("$destroy",function(){return $el.off()}),bindOnce($scope,$attrs.ngModel,render)},{link:link}},module.directive("tgUserNotificationsList",["$tgRepo","$tgConfirm",UserNotificationsListDirective])}.call(this),function(){var module;module=angular.module("taigaPlugins",["ngRoute"])}.call(this),function(){var configure,module,taiga;taiga=this.taiga,module=angular.module("taigaPlugins"),configure=function($routeProvider){return $routeProvider.when("/humans.html",{templateUrl:"/plugins/humanshtml/templates/humans.html"})},module.config(["$routeProvider",configure])}.call(this),function(){var TermsNoticeDirective,module,taiga,template;taiga=this.taiga,module=angular.module("taigaPlugins"),template=_.template('

\n By clicking "Sign up", you agree to our
\n
terms of service\n and\n privacy policy.\n

'),TermsNoticeDirective=function($config){var privacyPolicyUrl,templateFn,termsOfServiceUrl;return privacyPolicyUrl=$config.get("privacyPolicyUrl"),termsOfServiceUrl=$config.get("termsOfServiceUrl"),templateFn=function(){var ctx;return privacyPolicyUrl&&termsOfServiceUrl?(ctx={termsUrl:termsOfServiceUrl,privacyUrl:privacyPolicyUrl},template(ctx)):""},{scope:{},restrict:"AE",template:templateFn}},module.directive("tgTermsNotice",["$tgConfig",TermsNoticeDirective])}.call(this),angular.module("taigaBase").value("localesEn",{checksley:{defaultMessage:"This value seems to be invalid.","type-email":"This value should be a valid email.","type-url":"This value should be a valid url.","type-urlstrict":"This value should be a valid url.","type-number":"This value should be a valid number.","type-digits":"This value should be digits.","type-dateIso":"This value should be a valid date (YYYY-MM-DD).","type-alphanum":"This value should be alphanumeric.","type-phone":"This value should be a valid phone number.",notnull:"This value should not be null.",notblank:"This value should not be blank.",required:"This value is required.",regexp:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or less.",rangelength:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or less.",rangecheck:"You must select between %s and %s choices.",equalto:"This value should be the same."},common:{subject:"Subject",save:"Save",blocked:"Blocked",cancel:"Cancel",status:"Status","new-bulk":"New bulk insert","one-item-line":"One item per line..."},pagination:{next:"Next",prev:"Previous"},"markdown-editor":{"heading-1":"First Level Heading","heading-2":"Second Level Heading","heading-3":"Third Level Heading",bold:"Bold",italic:"Italic",strike:"Strike","bulleted-list":"Bulleted List","numeric-list":"Numeric List",picture:"Picture",link:"Link",quotes:"Quotes","code-block":"Code Block / Code",preview:"Preview",help:"Help",placeholder:"Your title here...","link-placeholder":"Your text to link here..."},us:{"title-new":"New User Story","team-requirement":"Team Requirement","client-requirement":"Client Requirement"}}); +}),promise.then(null,function(){return $confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find(".save-container"))}),promise}}(this)),$el.click(function(){return isEditable()?($el.find(".edit-subject").show(),$el.find(".view-subject").hide(),$el.find("input").focus()):void 0}),$el.on("click",".save",function(){var subject;return subject=$scope.item.subject,save(subject)}),$el.on("keyup","input",function(event){var subject;return 13===event.keyCode?(subject=$scope.item.subject,save(subject)):27===event.keyCode?($scope.$apply(function(){return function(){return $model.$modelValue.revert()}}(this)),$el.find("div.edit-subject").hide(),$el.find("div.view-subject").show()):void 0}),$el.find("div.edit-subject").hide(),$el.find("div.view-subject span.edit").hide(),$scope.$watch($attrs.ngModel,function(value){return value?($scope.item=value,isEditable()?void 0:$el.find(".view-subject .edit").remove()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgEditableSubject",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",EditableSubjectDirective]),EditableDescriptionDirective=function($rootscope,$repo,$confirm,$compile,$loading,$selectedText,$qqueue,$template){var link,noDescriptionMegEditMode,noDescriptionMegReadMode,template;return template=$template.get("common/components/editable-description.html"),noDescriptionMegEditMode=$template.get("common/components/editable-description-msg-edit-mode.html"),noDescriptionMegReadMode=$template.get("common/components/editable-description-msg-read-mode.html"),link=function($scope,$el,$attrs,$model){var isEditable,save;return $el.find(".edit-description").hide(),$el.find(".view-description .edit").hide(),isEditable=function(){return-1!==$scope.project.my_permissions.indexOf($attrs.requiredPerm)},save=$qqueue.bindAdd(function(){return function(description){var promise;return $model.$modelValue.description=description,$loading.start($el.find(".save-container")),promise=$repo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload"),$el.find(".edit-description").hide(),$el.find(".view-description").show()}),promise.then(null,function(){return $confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find(".save-container"))})}}(this)),$el.on("mouseup",".view-description",function(event){var target;return target=angular.element(event.target),!isEditable()||target.is("a")||$selectedText.get().length?void 0:($el.find(".edit-description").show(),$el.find(".view-description").hide(),$el.find("textarea").focus())}),$el.on("click",".save",function(e){var description;return e.preventDefault(),description=$scope.item.description,save(description)}),$el.on("keydown","textarea",function(event){return 27===event.keyCode?($scope.$apply(function(){return function(){return $scope.item.revert()}}(this)),$el.find(".edit-description").hide(),$el.find(".view-description").show()):void 0}),$scope.$watch($attrs.ngModel,function(value){return value?($scope.item=value,isEditable()?($el.find(".view-description .edit").show(),$el.find(".view-description .us-content").addClass("editable"),$scope.noDescriptionMsg=noDescriptionMegEditMode):$scope.noDescriptionMsg=noDescriptionMegReadMode):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",template:template}},module.directive("tgEditableDescription",["$rootScope","$tgRepo","$tgConfirm","$compile","$tgLoading","$selectedText","$tgQqueue","$tgTemplate",EditableDescriptionDirective]),ListItemIssueStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var issue;return issue=$scope.$eval($attrs.tgListitemIssueStatus),bindOnce($scope,"issueStatusById",function(issueStatusById){return $el.html(issueStatusById[issue.status].name)})},{link:link}},ListItemTaskStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var task;return task=$scope.$eval($attrs.tgListitemTaskStatus),bindOnce($scope,"taskStatusById",function(taskStatusById){return $el.html(taskStatusById[task.status].name)})},{link:link}},ListItemUsStatusDirective=function(){var link;return link=function($scope,$el,$attrs){var us;return us=$scope.$eval($attrs.tgListitemUsStatus),bindOnce($scope,"usStatusById",function(usStatusById){return $el.html(usStatusById[us.status].name)})},{link:link}},ListItemAssignedtoDirective=function($template){var link,template;return template=$template.get("common/components/list-item-assigned-to-avatar.html",!0),link=function($scope,$el,$attrs){return bindOnce($scope,"membersById",function(membersById){var ctx,item,member;return item=$scope.$eval($attrs.tgListitemAssignedto),ctx={name:"Unassigned",imgurl:"/images/unnamed.png"},member=membersById[item.assigned_to],member&&(ctx.imgurl=member.photo,ctx.name=member.full_name),$el.html(template(ctx))})},{link:link}},module.directive("tgListitemAssignedto",["$tgTemplate",ListItemAssignedtoDirective]),ListItemPriorityDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(priorityById,issue){var domNode,priority;return priority=priorityById[issue.priority],domNode=$el.find(".level"),domNode.css("background-color",priority.color),domNode.attr("title",priority.name)},bindOnce($scope,"priorityById",function(priorityById){var issue;return issue=$scope.$eval($attrs.tgListitemPriority),render(priorityById,issue)}),$scope.$watch($attrs.tgListitemPriority,function(issue){return render($scope.priorityById,issue)})},{link:link,templateUrl:"common/components/level.html"}},module.directive("tgListitemPriority",ListItemPriorityDirective),ListItemSeverityDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(severityById,issue){var domNode,severity;return severity=severityById[issue.severity],domNode=$el.find(".level"),domNode.css("background-color",severity.color),domNode.attr("title",severity.name)},bindOnce($scope,"severityById",function(severityById){var issue;return issue=$scope.$eval($attrs.tgListitemSeverity),render(severityById,issue)}),$scope.$watch($attrs.tgListitemSeverity,function(issue){return render($scope.severityById,issue)})},{link:link,templateUrl:"common/components/level.html"}},ListItemTypeDirective=function(){var link;return link=function($scope,$el,$attrs){var render;return render=function(issueTypeById,issue){var domNode,type;return type=issueTypeById[issue.type],domNode=$el.find(".level"),domNode.css("background-color",type.color),domNode.attr("title",type.name)},bindOnce($scope,"issueTypeById",function(issueTypeById){var issue;return issue=$scope.$eval($attrs.tgListitemType),render(issueTypeById,issue)}),$scope.$watch($attrs.tgListitemType,function(issue){return render($scope.issueTypeById,issue)})},{link:link,templateUrl:"common/components/level.html"}},TgProgressBarDirective=function($template){var link,render,template;return template=$template.get("common/components/progress-bar.html",!0),render=function(el,percentage){return el.html(template({percentage:percentage}))},link=function($scope,$el,$attrs){var element;return element=angular.element($el),$scope.$watch($attrs.tgProgressBar,function(percentage){return percentage=_.max([0,percentage]),percentage=_.min([100,percentage]),render($el,percentage)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProgressBar",["$tgTemplate",TgProgressBarDirective]),TgMainTitleDirective=function($template){var link,render,template;return template=$template.get("common/components/main-title.html",!0),render=function(el,projectName,sectionName){return el.html(template({projectName:projectName,sectionName:sectionName}))},link=function($scope,$el){var element;return element=angular.element($el),$scope.$watch("project",function(project){return project?render($el,project.name,$scope.sectionName):void 0}),$scope.$on("project:loaded",function(){return function(ctx,project){return render($el,project.name,$scope.sectionName)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMainTitle",["$tgTemplate",TgMainTitleDirective]),module.directive("tgListitemType",ListItemTypeDirective),module.directive("tgListitemIssueStatus",ListItemIssueStatusDirective),module.directive("tgListitemSeverity",ListItemSeverityDirective),module.directive("tgListitemTaskStatus",ListItemTaskStatusDirective),module.directive("tgListitemUsStatus",ListItemUsStatusDirective)}.call(this),function(){var ConfirmService,NOTIFICATION_MSG,bindMethods,cancelTimeout,debounce,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,timeout=this.taiga.timeout,cancelTimeout=this.taiga.cancelTimeout,debounce=this.taiga.debounce,bindMethods=this.taiga.bindMethods,NOTIFICATION_MSG={success:{title:"Everything is ok",message:"Our Oompa Loompas saved all your changes!"},error:{title:"Oops, something happened...",message:"Our Oompa Loompas are sad, your changes were not saved!"},"light-error":{title:"Oops, something happened...",message:"Our Oompa Loompas are sad, your changes were not saved!"}},ConfirmService=function(superClass){function ConfirmService(q,lightboxService,loading){this.q=q,this.lightboxService=lightboxService,this.loading=loading,bindMethods(this)}return extend(ConfirmService,superClass),ConfirmService.$inject=["$q","lightboxService","$tgLoading"],ConfirmService.prototype.hide=function(el){return el?(this.lightboxService.close(el),el.off(".confirm-dialog")):void 0},ConfirmService.prototype.ask=function(title,subtitle,message,lightboxSelector){var defered,el;return null==lightboxSelector&&(lightboxSelector=".lightbox-generic-ask"),el=angular.element(lightboxSelector),el.find("h2.title").html(title),el.find("span.subtitle").html(subtitle),el.find("span.message").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",debounce(2e3,function(_this){return function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),_this.loading.start(target),defered.resolve(function(ok){return null==ok&&(ok=!0),_this.loading.finish(target),ok?_this.hide(el):void 0})}}(this))),el.on("click.confirm-dialog","a.button-red",function(_this){return function(event){return event.preventDefault(),defered.reject(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.askOnDelete=function(title,message){return this.ask(title,"Are you sure you want to delete?",message)},ConfirmService.prototype.askChoice=function(title,subtitle,choices,replacement,warning,lightboxSelector){var choicesField,defered,el;return null==lightboxSelector&&(lightboxSelector=".lightbox-ask-choice"),el=angular.element(lightboxSelector),el.find(".title").html(title),el.find(".subtitle").html(subtitle),replacement?el.find(".replacement").html(replacement):el.find(".replacement").remove(),warning?el.find(".warning").html(warning):el.find(".warning").remove(),choicesField=el.find(".choices"),choicesField.html(""),_.each(choices,function(value,key){return choicesField.append(angular.element(""))}),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",debounce(2e3,function(_this){return function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),_this.loading.start(target),defered.resolve({selected:choicesField.val(),finish:function(){return _this.loading.finish(target),_this.hide(el)}})}}(this))),el.on("click.confirm-dialog","a.button-red",function(_this){return function(event){return event.preventDefault(),defered.reject(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.error=function(message){var defered,el;return el=angular.element(".lightbox-generic-error"),el.find("h2.title").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),el.on("click.confirm-dialog","a.close",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.success=function(title,message){var defered,el;return el=angular.element(".lightbox-generic-success"),title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),defered=this.q.defer(),el.on("click.confirm-dialog","a.button-green",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),el.on("click.confirm-dialog","a.close",function(_this){return function(event){return event.preventDefault(),defered.resolve(),_this.hide(el)}}(this)),this.lightboxService.open(el),defered.promise},ConfirmService.prototype.loader=function(title,message){var el;return el=angular.element(".lightbox-generic-loading"),title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),{start:function(_this){return function(){return _this.lightboxService.open(el)}}(this),stop:function(_this){return function(){return _this.lightboxService.close(el)}}(this),update:function(){return function(status,title,message,percent){return title&&el.find("h2.title").html(title),message&&el.find("p.message").html(message),percent?(el.find(".spin").addClass("hidden"),el.find(".progress-bar-wrapper").removeClass("hidden"),el.find(".progress-bar-wrapper > .bar").width(percent+"%"),el.find(".progress-bar-wrapper > span").html(percent+"%").css("left",percent-9+"%")):(el.find(".spin").removeClass("hidden"),el.find(".progress-bar-wrapper").addClass("hidden"))}}(this)}},ConfirmService.prototype.notify=function(type,message,title,time){var body,el,selector;return selector=".notification-message-"+type,el=angular.element(selector),el.hasClass("active")?void 0:(el.find("h4").html(title?title:NOTIFICATION_MSG[type].title),el.find("p").html(message?message:NOTIFICATION_MSG[type].message),body=angular.element("body"),body.find(".notification-message .notification-light").removeClass("active").addClass("inactive"),body.find(selector).removeClass("inactive").addClass("active"),this.tsem&&cancelTimeout(this.tsem),time||(time="error"===type||"light-error"===type?3500:1500),this.tsem=timeout(time,function(_this){return function(){return body.find(selector).removeClass("active").addClass("inactive"),delete _this.tsem}}(this)),el.on("click",".icon-delete",function(){return function(){return body.find(selector).removeClass("active").addClass("inactive")}}(this)))},ConfirmService}(taiga.Service),module=angular.module("taigaCommon"),module.service("$tgConfirm",ConfirmService)}.call(this),function(){var CustomAttributeValueDirective,CustomAttributesValuesController,CustomAttributesValuesDirective,bindMethods,bindOnce,debounce,generateHash,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,bindMethods=this.taiga.bindMethods,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,generateHash=taiga.generateHash,module=angular.module("taigaCommon"),CustomAttributesValuesController=function(superClass){function CustomAttributesValuesController(scope,rootscope,repo,rs,confirm,q){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.confirm=confirm,this.q=q,bindMethods(this),this.type=null,this.objectId=null,this.projectId=null,this.customAttributes=[],this.customAttributesValues=null}return extend(CustomAttributesValuesController,superClass),CustomAttributesValuesController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$tgConfirm","$q"],CustomAttributesValuesController.prototype.initialize=function(type,objectId){return this.project=this.scope.project,this.type=type,this.objectId=objectId,this.projectId=this.scope.projectId},CustomAttributesValuesController.prototype.loadCustomAttributesValues=function(){return this.objectId?this.rs.customAttributesValues[this.type].get(this.objectId).then(function(_this){return function(customAttributesValues){return _this.customAttributes=_this.project[_this.type+"_custom_attributes"],_this.customAttributesValues=customAttributesValues,customAttributesValues}}(this)):this.customAttributesValues},CustomAttributesValuesController.prototype.getAttributeValue=function(attribute){var attributeValue;return attributeValue=_.clone(attribute,!1),attributeValue.value=this.customAttributesValues.attributes_values[attribute.id],attributeValue},CustomAttributesValuesController.prototype.updateAttributeValue=function(attributeValue){var attributesValues,onError,onSuccess;return onSuccess=function(_this){return function(){return _this.rootscope.$broadcast("custom-attributes-values:edit")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error"),_this.q.reject()}}(this),attributesValues=_.clone(this.customAttributesValues.attributes_values,!0),attributesValues[attributeValue.id]=attributeValue.value,this.customAttributesValues.attributes_values=attributesValues,this.customAttributesValues.id=this.objectId,this.repo.save(this.customAttributesValues).then(onSuccess,onError)},CustomAttributesValuesController}(taiga.Controller),CustomAttributesValuesDirective=function($templates,$storage){var collapsedHash,link,template,templateFn;return template=$templates.get("custom-attributes/custom-attributes-values.html",!0),collapsedHash=function(type){return generateHash(["custom-attributes-collapsed",type])},link=function($scope,$el,$attrs,$ctrls){var $ctrl,$model;return $ctrl=$ctrls[0],$model=$ctrls[1],bindOnce($scope,$attrs.ngModel,function(value){return $ctrl.initialize($attrs.type,value.id),$ctrl.loadCustomAttributesValues()}),$el.on("click",".custom-fields-header a",function(){var collapsed,hash;return hash=collapsedHash($attrs.type),collapsed=!$storage.get(hash),$storage.set(hash,collapsed),collapsed?($el.find(".custom-fields-header a").removeClass("open"),$el.find(".custom-fields-body").removeClass("open")):($el.find(".custom-fields-header a").addClass("open"),$el.find(".custom-fields-body").addClass("open"))}),$scope.$on("$destroy",function(){return $el.off()})},templateFn=function($el,$attrs){var collapsed;return collapsed=$storage.get(collapsedHash($attrs.type))||!1,template({requiredEditionPerm:$attrs.requiredEditionPerm,collapsed:collapsed})},{require:["tgCustomAttributesValues","ngModel"],controller:CustomAttributesValuesController,controllerAs:"ctrl",restrict:"AE",scope:!0,link:link,template:templateFn}},module.directive("tgCustomAttributesValues",["$tgTemplate","$tgStorage",CustomAttributesValuesDirective]),CustomAttributeValueDirective=function($template,$selectedText){var link,template,templateEdit;return template=$template.get("custom-attributes/custom-attribute-value.html",!0),templateEdit=$template.get("custom-attributes/custom-attribute-value-edit.html",!0),link=function($scope,$el,$attrs,$ctrl){var attributeValue,isEditable,render,saveAttributeValue,submit;return render=function(attributeValue,edit){var ctx,editable,html,value;return null==edit&&(edit=!1),value=attributeValue.value,editable=isEditable(),ctx={id:attributeValue.id,name:attributeValue.name,description:attributeValue.description,value:value,isEditable:editable},html=!editable||!edit&&value?template(ctx):templateEdit(ctx),$el.html(html)},isEditable=function(){var permissions,requiredEditionPerm;return permissions=$scope.project.my_permissions,requiredEditionPerm=$attrs.requiredEditionPerm,permissions.indexOf(requiredEditionPerm)>-1},saveAttributeValue=function(){return attributeValue.value=$el.find("input").val(),$scope.$apply(function(){return $ctrl.updateAttributeValue(attributeValue).then(function(){return render(attributeValue,!1)})})},$el.on("keyup","input[name=description]",function(event){return 13===event.keyCode?submit(event):27===event.keyCode?render(attributeValue,!1):void 0}),$el.on("click",".custom-field-value.read-mode",function(){return isEditable()&&!$selectedText.get().length?(render(attributeValue,!0),$el.find("input[name='description']").focus().select()):void 0}),$el.on("click","a.icon-edit",function(event){return event.preventDefault(),render(attributeValue,!0),$el.find("input[name='description']").focus().select()}),submit=debounce(2e3,function(){return function(event){return event.preventDefault(),saveAttributeValue()}}(this)),$el.on("submit","form",submit),$el.on("click","a.icon-floppy",submit),$scope.$on("$destroy",function(){return $el.off()}),attributeValue=$scope.$eval($attrs.tgCustomAttributeValue),render(attributeValue)},{link:link,require:"^tgCustomAttributesValues",restrict:"AE"}},module.directive("tgCustomAttributeValue",["$tgTemplate","$selectedText",CustomAttributeValueDirective])}.call(this),function(){var EstimationsService,LbUsEstimationDirective,UsEstimationDirective,groupBy,module,taiga,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,groupBy=this.taiga.groupBy,module=angular.module("taigaCommon"),LbUsEstimationDirective=function($tgEstimationsService,$rootScope,$repo,$confirm,$template){var link;return link=function($scope,$el,$attrs,$model){return $scope.$watch($attrs.ngModel,function(us){var estimationProcess;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),estimationProcess.onSelectedPointForRole=function(){return $scope.$apply(function(){return $model.$setViewValue(us)})},estimationProcess.render=function(){var ctx,html,mainTemplate,template;return ctx={totalPoints:this.calculateTotalPoints(),roles:this.calculateRoles(),editable:this.isEditable},mainTemplate="common/estimation/us-estimation-points-per-role.html",template=$template.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgLbUsEstimation",["$tgEstimationsService","$rootScope","$tgRepo","$tgConfirm","$tgTemplate",LbUsEstimationDirective]),UsEstimationDirective=function($tgEstimationsService,$rootScope,$repo,$confirm,$qqueue,$template){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.ngModel,function(us){var estimationProcess;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),estimationProcess.onSelectedPointForRole=function(roleId,pointId){return this.save(roleId,pointId).then(function(){return $rootScope.$broadcast("history:reload")})},estimationProcess.render=function(){var ctx,html,mainTemplate,template;return ctx={totalPoints:this.calculateTotalPoints(),roles:this.calculateRoles(),editable:this.isEditable},mainTemplate="common/estimation/us-estimation-points-per-role.html",template=$template.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsEstimation",["$tgEstimationsService","$rootScope","$tgRepo","$tgConfirm","$tgQqueue","$tgTemplate",UsEstimationDirective]),EstimationsService=function($template,$qqueue,$repo,$confirm,$q){var EstimationProcess,create,pointsTemplate;return pointsTemplate=$template.get("common/estimation/us-estimation-points.html",!0),EstimationProcess=function(){function EstimationProcess($el1,us1,project1){this.$el=$el1,this.us=us1,this.project=project1,this.bindClickEvents=bind(this.bindClickEvents,this),this.isEditable=-1!==this.project.my_permissions.indexOf("modify_us"),this.roles=this.project.roles,this.points=this.project.points,this.pointsById=groupBy(this.points,function(x){return x.id}),this.onSelectedPointForRole=function(){},this.render=function(){}}return EstimationProcess.prototype.save=function(){var deferred;return deferred=$q.defer(),$qqueue.add(function(_this){return function(){var onError,onSuccess;return onSuccess=function(){return deferred.resolve(),$confirm.notify("success")},onError=function(){return $confirm.notify("error"),_this.us.revert(),_this.render(),deferred.reject()},$repo.save(_this.us).then(onSuccess,onError)}}(this)),deferred.promise},EstimationProcess.prototype.calculateTotalPoints=function(){var notNullValues,values;return values=_.map(this.us.points,function(_this){return function(v){var ref;return null!=(ref=_this.pointsById[v])?ref.value:void 0}}(this)),0===values.length?"0":(notNullValues=_.filter(values,function(v){return null!=v}),0===notNullValues.length?"?":_.reduce(notNullValues,function(acc,num){return acc+num}))},EstimationProcess.prototype.calculateRoles=function(){var computableRoles,roles;return computableRoles=_.filter(this.project.roles,"computable"),roles=_.map(computableRoles,function(_this){return function(role){var pointId,pointObj;return pointId=_this.us.points[role.id],pointObj=_this.pointsById[pointId],role=_.clone(role,!0),role.points=null!=pointObj&&null!=pointObj.name?pointObj.name:"?",role}}(this))},EstimationProcess.prototype.bindClickEvents=function(){return this.$el.on("click",".total.clickable",function(_this){return function(event){var roleId,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),roleId=target.data("role-id"),_this.renderPointsSelector(roleId,target),target.siblings().removeClass("active"),target.addClass("active")}}(this)),this.$el.on("click",".point",function(_this){return function(event){var pointId,points,roleId,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),roleId=target.data("role-id"),pointId=target.data("point-id"),_this.$el.find(".popover").popover().close(),points=_.clone(_this.us.points,!0),points[roleId]=pointId,_this.us.points=points,_this.render(),_this.onSelectedPointForRole(roleId,pointId)}}(this))},EstimationProcess.prototype.renderPointsSelector=function(roleId,target){var horizontalList,html,maxPointLength,points;return points=_.map(this.points,function(_this){return function(point){return point=_.clone(point,!0),point.selected=_this.us.points[roleId]===point.id?!1:!0,point}}(this)),maxPointLength=5,horizontalList=_.some(points,function(){return function(point){return point.name.length>maxPointLength}}(this)),html=pointsTemplate({points:points,roleId:roleId,horizontal:horizontalList}),this.$el.find(".popover").popover().close(),this.$el.find(".pop-points-open").remove(),null!=target?this.$el.find(target).append(html):this.$el.append(html),this.$el.find(".pop-points-open").popover().open(function(){return $(this).removeClass("active").closest("li").removeClass("active")}),this.$el.find(".pop-points-open").show()},EstimationProcess}(),create=function($el,us,project){var estimationProcess;return $el.unbind("click"),estimationProcess=new EstimationProcess($el,us,project),estimationProcess.isEditable&&estimationProcess.bindClickEvents(),estimationProcess},{create:create}},module.factory("$tgEstimationsService",["$tgTemplate","$tgQqueue","$tgRepo","$tgConfirm","$q",EstimationsService])}.call(this),function(){var defaultFilter,module,momentFormat,momentFromNow,taiga,unslugify,yesNoFilter;taiga=this.taiga,module=angular.module("taigaCommon"),defaultFilter=function(){return function(value,defaultValue){return value===[null,void 0]?defaultValue:value}},module.filter("default",defaultFilter),yesNoFilter=function(){return function(value){return value?"Yes":"No"}},module.filter("yesNo",yesNoFilter),unslugify=function(){return taiga.unslugify},module.filter("unslugify",unslugify),momentFormat=function(){return function(input,format){return input?moment(input).format(format):""}},module.filter("momentFormat",momentFormat),momentFromNow=function(){return function(input,without_suffix){return input?moment(input).fromNow(without_suffix||!1):""}},module.filter("momentFromNow",momentFromNow)}.call(this),function(){var HistoryController,HistoryDirective,bindOnce,debounce,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaCommon"),HistoryController=function(superClass){function HistoryController(scope,repo,rs){this.scope=scope,this.repo=repo,this.rs=rs}return extend(HistoryController,superClass),HistoryController.$inject=["$scope","$tgRepo","$tgResources"],HistoryController.prototype.initialize=function(type,objectId){return this.type=type,this.objectId=objectId},HistoryController.prototype.loadHistory=function(type,objectId){return this.rs.history.get(type,objectId).then(function(_this){return function(history){var historyResult,i,len;for(i=0,len=history.length;len>i;i++)historyResult=history[i],null!=historyResult.values_diff.description_diff&&(historyResult.values_diff.description=historyResult.values_diff.description_diff),delete historyResult.values_diff.description_html,delete historyResult.values_diff.description_diff,null!=historyResult.values_diff.blocked_note_diff&&(historyResult.values_diff.blocked_note=historyResult.values_diff.blocked_note_diff),delete historyResult.values_diff.blocked_note_html,delete historyResult.values_diff.blocked_note_diff;return _this.scope.history=history,_this.scope.comments=_.filter(history,function(item){return""!==item.comment})}}(this))},HistoryController.prototype.deleteComment=function(type,objectId,activityId){return this.rs.history.deleteComment(type,objectId,activityId).then(function(_this){return function(){return _this.loadHistory(type,objectId)}}(this))},HistoryController.prototype.undeleteComment=function(type,objectId,activityId){return this.rs.history.undeleteComment(type,objectId,activityId).then(function(_this){return function(){return _this.loadHistory(type,objectId)}}(this))},HistoryController}(taiga.Controller),HistoryDirective=function($log,$loading,$qqueue,$template,$confirm){var link,templateActivity,templateBase,templateBaseEntries,templateChangeAttachment,templateChangeDiff,templateChangeGeneric,templateChangeList,templateChangePoints,templateDeletedComment,templateFn;return templateChangeDiff=$template.get("common/history/history-change-diff.html",!0),templateChangePoints=$template.get("common/history/history-change-points.html",!0),templateChangeGeneric=$template.get("common/history/history-change-generic.html",!0),templateChangeAttachment=$template.get("common/history/history-change-attachment.html",!0),templateChangeList=$template.get("common/history/history-change-list.html",!0),templateDeletedComment=$template.get("common/history/history-deleted-comment.html",!0),templateActivity=$template.get("common/history/history-activity.html",!0),templateBaseEntries=$template.get("common/history/history-base-entries.html",!0),templateBase=$template.get("common/history/history-base.html",!0),link=function($scope,$el,$attrs,$ctrl){var countChanges,formatChange,getHumanizedFieldName,getUserAvatar,getUserFullName,objectId,renderActivity,renderAttachmentEntry,renderChange,renderChangeEntries,renderChangeEntry,renderChangesHelperText,renderComment,renderComments,renderCustomAttributesEntry,renderHistory,save,showAllActivity,showAllComments,type;return type=$attrs.type,objectId=null,showAllComments=!1,showAllActivity=!1,bindOnce($scope,$attrs.ngModel,function(model){return type=$attrs.type,objectId=model.id,$ctrl.initialize(type,objectId),$ctrl.loadHistory(type,objectId) +}),getHumanizedFieldName=function(field){var humanizedFieldNames;return humanizedFieldNames={assigned_to:"assigned to",is_closed:"is closed",finish_date:"finish date",client_requirement:"client requirement",team_requirement:"team requirement",milestone:"sprint",user_story:"user story",is_iocaine:"is iocaine",is_deprecated:"is deprecated",blocked_note:"blocked note",is_blocked:"is blocked"},humanizedFieldNames[field]||field},getUserFullName=function(userId){var ref;return null!=(ref=$scope.usersById[userId])?ref.full_name_display:void 0},getUserAvatar=function(userId){return null!=$scope.usersById[userId]?$scope.usersById[userId].photo:"/images/unnamed.png"},countChanges=function(comment){return _.keys(comment.values_diff).length},formatChange=function(change){return _.isArray(change)?0===change.length?"empty":change.join(", "):""===change?"empty":null==change||change===!1?"no":change===!0?"yes":change},renderAttachmentEntry=function(value){var attachments;return attachments=_.map(value,function(changes,type){return"new"===type?_.map(changes,function(change){return templateChangeDiff({name:"new attachment",diff:change.filename})}):"deleted"===type?_.map(changes,function(change){return templateChangeDiff({name:"deleted attachment",diff:change.filename})}):_.map(changes,function(change){var diff,name;return name="updated attachment "+change.filename,diff=_.map(change.changes,function(values,name){return{name:getHumanizedFieldName(name),from:formatChange(values[0]),to:formatChange(values[1])}}),templateChangeAttachment({name:name,diff:diff})})}),_.flatten(attachments).join("\n")},renderCustomAttributesEntry=function(value){var customAttributes;return customAttributes=_.map(value,function(changes,type){return"new"===type?_.map(changes,function(change){return templateChangeGeneric({name:change.name,from:formatChange(""),to:formatChange(change.value)})}):"deleted"===type?_.map(changes,function(change){return templateChangeDiff({name:"deleted custom attribute",diff:change.name})}):_.map(changes,function(change){var customAttrsChanges;return customAttrsChanges=_.map(change.changes,function(values){return templateChangeGeneric({name:change.name,from:formatChange(values[0]),to:formatChange(values[1])})}),_.flatten(customAttrsChanges).join("\n")})}),_.flatten(customAttributes).join("\n")},renderChangeEntry=function(field,value){var added,from,name,removed,to;return"description"===field?templateChangeDiff({name:getHumanizedFieldName("description"),diff:value[1]}):"blocked_note"===field?templateChangeDiff({name:getHumanizedFieldName("blocked_note"),diff:value[1]}):"points"===field?templateChangePoints({points:value}):"attachments"===field?renderAttachmentEntry(value):"custom_attributes"===field?renderCustomAttributesEntry(value):"tags"===field||"watchers"===field?(name=getHumanizedFieldName(field),removed=_.difference(value[0],value[1]),added=_.difference(value[1],value[0]),templateChangeList({name:name,removed:removed,added:added})):"assigned_to"===field?(name=getHumanizedFieldName(field),from=formatChange(value[0]||"Unassigned"),to=formatChange(value[1]||"Unassigned"),templateChangeGeneric({name:name,from:from,to:to})):(name=getHumanizedFieldName(field),from=formatChange(value[0]),to=formatChange(value[1]),templateChangeGeneric({name:name,from:from,to:to}))},renderChangeEntries=function(change){return _.map(change.values_diff,function(value,field){return renderChangeEntry(field,value)})},renderChangesHelperText=function(change){var size;return size=countChanges(change),1===size?"Made "+size+" change":"Made "+size+" changes"},renderComment=function(comment){var ref,ref1,ref2;return comment.delete_comment_date||(null!=(ref=comment.delete_comment_user)?ref.name:void 0)?templateDeletedComment({deleteCommentDate:comment.delete_comment_date?moment(comment.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:comment.delete_comment_user.name,deleteComment:comment.comment_html,activityId:comment.id,canRestoreComment:comment.delete_comment_user.pk===$scope.user.id||$scope.project.my_permissions.indexOf("modify_project")>-1}):templateActivity({avatar:getUserAvatar(comment.user.pk),userFullName:comment.user.name,creationDate:moment(comment.created_at).format("DD MMM YYYY HH:mm"),comment:comment.comment_html,changesText:renderChangesHelperText(comment),changes:renderChangeEntries(comment),mode:"comment",deleteCommentDate:comment.delete_comment_date?moment(comment.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:(null!=(ref1=comment.delete_comment_user)?ref1.name:void 0)?comment.delete_comment_user.name:void 0,activityId:comment.id,canDeleteComment:comment.user.pk===(null!=(ref2=$scope.user)?ref2.id:void 0)||$scope.project.my_permissions.indexOf("modify_project")>-1})},renderChange=function(change){var ref;return templateActivity({avatar:getUserAvatar(change.user.pk),userFullName:change.user.name,creationDate:moment(change.created_at).format("DD MMM YYYY HH:mm"),comment:change.comment_html,changes:renderChangeEntries(change),changesText:"",mode:"activity",deleteCommentDate:change.delete_comment_date?moment(change.delete_comment_date).format("DD MMM YYYY HH:mm"):void 0,deleteCommentUser:(null!=(ref=change.delete_comment_user)?ref.name:void 0)?change.delete_comment_user.name:void 0,activityId:change.id})},renderHistory=function(entries,totalEntries){var showMore;return showMore=entries.length===totalEntries?0:totalEntries-entries.length,templateBaseEntries({entries:entries,showMore:showMore})},renderComments=function(){var comments,html,totalComments;return comments=$scope.comments||[],totalComments=comments.length,showAllComments||(comments=_.last(comments,4)),comments=_.map(comments,function(x){return renderComment(x)}),html=renderHistory(comments,totalComments),$el.find(".comments-list").html(html)},renderActivity=function(){var changes,html,totalChanges;return changes=$scope.history||[],totalChanges=changes.length,showAllActivity||(changes=_.last(changes,4)),changes=_.map(changes,function(x){return renderChange(x)}),html=renderHistory(changes,totalChanges),$el.find(".changes-list").html(html)},save=$qqueue.bindAdd(function(){return function(target){var model,onError,onSuccess;return $scope.$broadcast("markdown-editor:submit"),$el.find(".comment-list").addClass("activeanimation"),onSuccess=function(){return $ctrl.loadHistory(type,objectId)["finally"](function(){return $loading.finish(target)})},onError=function(){return $loading.finish(target),$confirm.notify("error")},model=$scope.$eval($attrs.ngModel),$loading.start(target),$ctrl.repo.save(model).then(onSuccess,onError)}}(this)),$scope.$watch("comments",renderComments),$scope.$watch("history",renderActivity),$scope.$on("history:reload",function(){return $ctrl.loadHistory(type,objectId)}),$el.on("click",".add-comment a.button-green",debounce(2e3,function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),save(target)})),$el.on("click",".show-more",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parent().is(".changes-list")?(showAllActivity=!showAllActivity,renderActivity()):(showAllComments=!showAllComments,renderComments())}),$el.on("click",".show-deleted-comment",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parents(".activity-single").find(".hide-deleted-comment").show(),target.parents(".activity-single").find(".show-deleted-comment").hide(),target.parents(".activity-single").find(".comment-body").show()}),$el.on("click",".hide-deleted-comment",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parents(".activity-single").find(".hide-deleted-comment").hide(),target.parents(".activity-single").find(".show-deleted-comment").show(),target.parents(".activity-single").find(".comment-body").hide()}),$el.on("click",".changes-title",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.parent().find(".change-entry").toggleClass("active")}),$el.on("focus",".add-comment textarea",function(){return $(this).addClass("active")}),$el.on("click",".history-tabs li a",function(){return $el.find(".history-tabs li a").toggleClass("active"),$el.find(".history section").toggleClass("hidden")}),$el.on("click",".comment-delete",debounce(2e3,function(event){var activityId,target;return event.preventDefault(),target=angular.element(event.currentTarget),activityId=target.data("activity-id"),$ctrl.deleteComment(type,objectId,activityId)})),$el.on("click",".comment-restore",debounce(2e3,function(event){var activityId,target;return event.preventDefault(),target=angular.element(event.currentTarget),activityId=target.data("activity-id"),$ctrl.undeleteComment(type,objectId,activityId)})),$scope.$on("$destroy",function(){return $el.off()})},templateFn=function($el,$attrs){return templateBase({ngmodel:$attrs.ngModel,type:$attrs.type,mode:$attrs.mode})},{controller:HistoryController,template:templateFn,restrict:"AE",link:link}},module.directive("tgHistory",["$log","$tgLoading","$tgQqueue","$tgTemplate","$tgConfirm",HistoryDirective])}.call(this),function(){var ImportProjectButtonDirective,module;module=angular.module("taigaCommon"),ImportProjectButtonDirective=function($rs,$confirm,$location,$navUrls){var link;return link=function($scope,$el){return $el.on("click",".import-project-button",function(event){return event.preventDefault(),$el.find("input.import-file").val(""),$el.find("input.import-file").trigger("click")}),$el.on("change","input.import-file",function(event){var file,loader,onError,onSuccess;return event.preventDefault(),(file=event.target.files[0])?(loader=$confirm.loader("Uploading dump file"),onSuccess=function(result){var ctx,message,title;return loader.stop(),202===result.status?(title="Our Oompa Loompas are importing your project",message="This process could take a few minutes
We will send you an email when ready",$confirm.success(title,message)):(ctx={project:result.data.slug},$location.path($navUrls.resolve("project-admin-project-profile-details",ctx)),$confirm.notify("success","Your project has been imported successfuly."))},onError=function(result){var errorMsg,ref;return loader.stop(),console.log("Error",result),errorMsg="Our oompa loompas have some problems importing your dump data. Please try again. ",429===result.status?errorMsg="Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. ":(null!=(ref=result.data)?ref._error_message:void 0)&&(errorMsg="Our oompa loompas have some problems importing your dump data: "+result.data._error_message),$confirm.notify("error",errorMsg)},loader.start(),$rs.projects["import"](file,loader.update).then(onSuccess,onError)):void 0})},{link:link}},module.directive("tgImportProjectButton",["$tgResources","$tgConfirm","$location","$tgNavUrls",ImportProjectButtonDirective])}.call(this),function(){var AssignedToLightboxDirective,BlockLightboxDirective,BlockingMessageInputDirective,CreateBulkUserstoriesDirective,CreateEditUserstoryDirective,LightboxDirective,LightboxKeyboardNavigationService,LightboxService,WatchersLightboxDirective,bindOnce,debounce,module,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;module=angular.module("taigaCommon"),bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,debounce=this.taiga.debounce,LightboxService=function(superClass){function LightboxService(animationFrame,q){this.animationFrame=animationFrame,this.q=q}return extend(LightboxService,superClass),LightboxService.prototype.open=function($el){var defered,docEl,lightboxContent;return defered=this.q.defer(),lightboxContent=$el.children().not(".close"),lightboxContent.hide(),$el.css("display","flex"),$el.find("input,textarea").first().focus(),this.animationFrame.add(function(){return function(){return $el.addClass("open")}}(this)),this.animationFrame.add(function(){return function(){return lightboxContent.show(),defered.resolve()}}(this)),docEl=angular.element(document),docEl.on("keydown.lightbox",function(_this){return function(e){var code;return code=e.keyCode?e.keyCode:e.which,27===code?_this.close($el):void 0}}(this)),defered.promise},LightboxService.prototype.close=function($el){var docEl;return docEl=angular.element(document),docEl.off(".lightbox"),docEl.off(".keyboard-navigation"),$el.one("transitionend",function(){return function(){return $el.removeAttr("style"),$el.removeClass("open").removeClass("close")}}(this)),$el.addClass("close")},LightboxService.prototype.closeAll=function(){var docEl,i,len,lightboxEl,ref,results;for(docEl=angular.element(document),ref=docEl.find(".lightbox.open"),results=[],i=0,len=ref.length;len>i;i++)lightboxEl=ref[i],results.push(this.close($(lightboxEl)));return results},LightboxService}(taiga.Service),module.service("lightboxService",["animationFrame","$q",LightboxService]),LightboxKeyboardNavigationService=function(superClass){function LightboxKeyboardNavigationService(){return LightboxKeyboardNavigationService.__super__.constructor.apply(this,arguments)}return extend(LightboxKeyboardNavigationService,superClass),LightboxKeyboardNavigationService.prototype.stop=function(){var docEl;return docEl=angular.element(document),docEl.off(".keyboard-navigation")},LightboxKeyboardNavigationService.prototype.dispatch=function($el,code){var activeElement,next,prev;if(activeElement=$el.find(".active"),13===code)return activeElement.trigger("click");if(40===code){if(!activeElement.length)return $el.find(".watcher-single:first").addClass("active");if(next=activeElement.next(".watcher-single"),next.length)return activeElement.removeClass("active"),next.addClass("active")}else if(38===code){if(!activeElement.length)return $el.find(".watcher-single:last").addClass("active");if(prev=activeElement.prev(".watcher-single"),prev.length)return activeElement.removeClass("active"),prev.addClass("active")}},LightboxKeyboardNavigationService.prototype.init=function($el){var docEl;return this.stop(),docEl=angular.element(document),docEl.on("keydown.keyboard-navigation",function(_this){return function(event){var code;return code=event.keyCode?event.keyCode:event.which,40===code||38===code||13===code?(event.preventDefault(),_this.dispatch($el,code)):void 0}}(this))},LightboxKeyboardNavigationService}(taiga.Service),module.service("lightboxKeyboardNavigationService",LightboxKeyboardNavigationService),LightboxDirective=function(lightboxService){var link;return link=function($scope,$el){return $el.on("click",".close",function(event){return event.preventDefault(),lightboxService.close($el)})},{restrict:"C",link:link}},module.directive("lightbox",["lightboxService",LightboxDirective]),BlockLightboxDirective=function($rootscope,$tgrepo,$confirm,lightboxService,$loading,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var block,unblock;return $el.find("h2.title").text($attrs.title),unblock=$qqueue.bindAdd(function(){return function(item,finishCallback){var promise;return promise=$tgrepo.save(item),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload"),$model.$setViewValue(item),finishCallback()}),promise.then(null,function(){return $confirm.notify("error"),item.revert(),$model.$setViewValue(item)}),promise["finally"](function(){return finishCallback()}),promise}}(this)),block=$qqueue.bindAdd(function(){return function(item){var promise;return $model.$setViewValue(item),$loading.start($el.find(".button-green")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $confirm.notify("error"),item.revert(),$model.$setViewValue(item)}),promise["finally"](function(){return $loading.finish($el.find(".button-green")),lightboxService.close($el)})}}(this)),$scope.$on("block",function(){return $el.find(".reason").val($model.$modelValue.blocked_note),lightboxService.open($el)}),$scope.$on("unblock",function(){return function(event,model,finishCallback){var item;return item=$model.$modelValue.clone(),item.is_blocked=!1,item.blocked_note="",unblock(item,finishCallback)}}(this)),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click",".button-green",function(event){var item;return event.preventDefault(),item=$model.$modelValue.clone(),item.is_blocked=!0,item.blocked_note=$el.find(".reason").val(),block(item)})},{templateUrl:"common/lightbox/lightbox-block.html",link:link,require:"ngModel"}},module.directive("tgLbBlock",["$rootScope","$tgRepo","$tgConfirm","lightboxService","$tgLoading","$tgQqueue",BlockLightboxDirective]),BlockingMessageInputDirective=function($log,$template){var link,template,templateFn;return template=$template.get("common/lightbox/lightbox-blocking-message-input.html",!0),link=function($scope,$el,$attrs){return $attrs.watch?$scope.$watch($attrs.watch,function(value){return value===!0&&value===!0?$el.find(".blocked-note").removeClass("hidden"):$el.find(".blocked-note").addClass("hidden")}):$log.error("No watch attribute on tg-blocking-message-input directive")},templateFn=function($el,$attrs){return template({ngmodel:$attrs.ngModel})},{template:templateFn,link:link,require:"ngModel",restrict:"EA"}},module.directive("tgBlockingMessageInput",["$log","$tgTemplate",BlockingMessageInputDirective]),CreateEditUserstoryDirective=function($repo,$model,$rs,$rootScope,lightboxService,$loading){var link;return link=function($scope,$el){var submit,submitButton;return $scope.isNew=!0,$scope.$on("usform:new",function(ctx,projectId,status,statusList){return $scope.isNew=!0,$scope.usStatusList=statusList,$scope.us=$model.make_model("userstories",{project:projectId,points:{},status:status,is_archived:!1,tags:[]}),$el.find(".button-green").html("Create"),$el.find(".title").html("New user story "),$el.find(".tag-input").val(""),$el.find(".blocked-note").addClass("hidden"),$el.find("label.blocked").removeClass("selected"),$el.find("label.team-requirement").removeClass("selected"),$el.find("label.client-requirement").removeClass("selected"),lightboxService.open($el)}),$scope.$on("usform:edit",function(ctx,us){return $scope.us=us,$scope.isNew=!1,$el.find(".button-green").html("Save"),$el.find(".title").html("Edit user story "),$el.find(".tag-input").val(""),us.is_blocked?($el.find(".blocked-note").removeClass("hidden"),$el.find("label.blocked").addClass("selected")):($el.find(".blocked-note").addClass("hidden"),$el.find("label.blocked").removeClass("selected")),us.team_requirement?$el.find("label.team-requirement").addClass("selected"):$el.find("label.team-requirement").removeClass("selected"),us.client_requirement?$el.find("label.client-requirement").addClass("selected"):$el.find("label.client-requirement").removeClass("selected"),lightboxService.open($el)}),submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),$scope.isNew?(promise=$repo.create("userstories",$scope.us),broadcastEvent="usform:new:success"):(promise=$repo.save($scope.us),broadcastEvent="usform:edit:success"),promise.then(function(data){return $loading.finish(submitButton),lightboxService.close($el),$rootScope.$broadcast(broadcastEvent,data)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".close",function(event){return event.preventDefault(),$scope.$apply(function(){return $scope.us.revert()}),lightboxService.close($el)}),$el.keydown(function(event){var code;return code=event.keyCode?event.keyCode:event.which,27===code?(lightboxService.close($el),$scope.$apply(function(){return $scope.us.revert()})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateEditUserstory",["$tgRepo","$tgModel","$tgResources","$rootScope","lightboxService","$tgLoading",CreateEditUserstoryDirective]),CreateBulkUserstoriesDirective=function($repo,$rs,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var submit,submitButton;return $scope.$on("usform:bulk",function(ctx,projectId,status){return $scope["new"]={projectId:projectId,statusId:status,bulk:""},lightboxService.open($el)}),submit=debounce(2e3,function(){return function(event){var form,promise;return event.preventDefault(),form=$el.find("form").checksley({onlyOneErrorElement:!0}),form.validate()?($loading.start(submitButton),promise=$rs.userstories.bulkCreate($scope["new"].projectId,$scope["new"].statusId,$scope["new"].bulk),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("usform:bulk:success",result),lightboxService.close($el)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateBulkUserstories",["$tgRepo","$tgResources","$rootScope","lightboxService","$tgLoading",CreateBulkUserstoriesDirective]),AssignedToLightboxDirective=function(lightboxService,lightboxKeyboardNavigationService,$template){var link;return link=function($scope,$el){var closeLightbox,filterUsers,normalizeString,render,selectedItem,selectedUser,usersTemplate;return selectedUser=null,selectedItem=null,usersTemplate=$template.get("common/lightbox/lightbox-assigned-to-users.html",!0),normalizeString=function(string){var normalizedString;return normalizedString=string,normalizedString=normalizedString.replace("Á","A").replace("Ä","A").replace("À","A"),normalizedString=normalizedString.replace("É","E").replace("Ë","E").replace("È","E"),normalizedString=normalizedString.replace("Í","I").replace("Ï","I").replace("Ì","I"),normalizedString=normalizedString.replace("Ó","O").replace("Ö","O").replace("Ò","O"),normalizedString=normalizedString.replace("Ú","U").replace("Ü","U").replace("Ù","U")},filterUsers=function(text,user){var username;return username=user.full_name_display.toUpperCase(),username=normalizeString(username),text=text.toUpperCase(),text=normalizeString(text),_.contains(username,text)},render=function(selected,text){var ctx,html,users;return users=_.clone($scope.activeUsers,!0),null!=selected&&(users=_.reject(users,{id:selected.id})),null!=text&&(users=_.filter(users,_.partial(filterUsers,text))),ctx={selected:selected,users:_.first(users,5),showMore:users.length>5},html=usersTemplate(ctx),$el.find("div.watchers").html(html),lightboxKeyboardNavigationService.init($el)},closeLightbox=function(){return lightboxKeyboardNavigationService.stop(),lightboxService.close($el)},$scope.$on("assigned-to:add",function(ctx,item){var assignedToId;return selectedItem=item,assignedToId=item.assigned_to,selectedUser=$scope.usersById[assignedToId],render(selectedUser),lightboxService.open($el).then(function(){return $el.find("input").focus()})}),$scope.$watch("usersSearch",function(searchingText){return null!=searchingText?(render(selectedUser,searchingText),$el.find("input").focus()):void 0}),$el.on("click",".watcher-single",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),closeLightbox(),$scope.$apply(function(){return $scope.$broadcast("assigned-to:added",target.data("user-id"),selectedItem),$scope.usersSearch=null})}),$el.on("click",".remove-assigned-to",function(event){return event.preventDefault(),event.stopPropagation(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null,$scope.$broadcast("assigned-to:added",null,selectedItem)})}),$el.on("click",".close",function(event){return event.preventDefault(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"common/lightbox/lightbox-assigned-to.html",link:link}},module.directive("tgLbAssignedto",["lightboxService","lightboxKeyboardNavigationService","$tgTemplate",AssignedToLightboxDirective]),WatchersLightboxDirective=function($repo,lightboxService,lightboxKeyboardNavigationService,$template){var link;return link=function($scope,$el){var closeLightbox,getFilteredUsers,render,selectedItem,usersTemplate;return selectedItem=null,usersTemplate=$template.get("common/lightbox/lightbox-assigned-to-users.html",!0),getFilteredUsers=function(text){var _filterUsers,users;return null==text&&(text=""),_filterUsers=function(text,user){var username;return selectedItem&&_.find(selectedItem.watchers,function(x){return x===user.id})?!1:(username=user.full_name_display.toUpperCase(),text=text.toUpperCase(),_.contains(username,text))},users=_.clone($scope.activeUsers,!0),users=_.filter(users,_.partial(_filterUsers,text))},render=function(users){var ctx,html;return ctx={selected:!1,users:_.first(users,5),showMore:users.length>5},html=usersTemplate(ctx),$el.find("div.watchers").html(html)},closeLightbox=function(){return lightboxKeyboardNavigationService.stop(),lightboxService.close($el)},$scope.$on("watcher:add",function(ctx,item){var users;return selectedItem=item,users=getFilteredUsers(),render(users),lightboxService.open($el).then(function(){return $el.find("input").focus()}),lightboxKeyboardNavigationService.init($el)}),$scope.$watch("usersSearch",function(searchingText){var users;if(null!=searchingText)return users=getFilteredUsers(searchingText),render(users),$el.find("input").focus()}),$el.on("click",".watcher-single",debounce(2e3,function(event){var target;return closeLightbox(),event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $scope.usersSearch=null,$scope.$broadcast("watcher:added",target.data("user-id"))})})),$el.on("click",".close",function(event){return event.preventDefault(),closeLightbox(),$scope.$apply(function(){return $scope.usersSearch=null})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"common/lightbox/lightbox-users.html",link:link}},module.directive("tgLbWatchers",["$tgRepo","lightboxService","lightboxKeyboardNavigationService","$tgTemplate",WatchersLightboxDirective])}.call(this),function(){var Loader,LoaderDirective,module,sizeFormat,taiga,timeout;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,timeout=this.taiga.timeout,module=angular.module("taigaCommon"),LoaderDirective=function(tgLoader,$rootscope){var link;return link=function($scope,$el){return tgLoader.onStart(function(){return $(document.body).addClass("loader-active"),$el.addClass("active")}),tgLoader.onEnd(function(){return $(document.body).removeClass("loader-active"),$el.removeClass("active")}),$rootscope.$on("$routeChangeSuccess",function(){return tgLoader.startCurrentPageLoader()}),$rootscope.$on("$locationChangeSuccess",function(){return tgLoader.reset()})},{link:link}},module.directive("tgLoader",["tgLoader","$rootScope",LoaderDirective]),Loader=function(){var config,defaultConfig,forceDisabled;forceDisabled=!1,defaultConfig={enabled:!1,minTime:300},config=_.merge({},defaultConfig),this.add=function(){return function(){return forceDisabled?void 0:config.enabled=!0}},this.$get=["$rootScope",function($rootscope){var pageLoaded,reset,start,startLoadTime;return startLoadTime=0,reset=function(){return config=_.merge({},defaultConfig)},pageLoaded=function(force){var diff,endTime,timeoutValue;return null==force&&(force=!1),startLoadTime?(timeoutValue=0,force||(endTime=(new Date).getTime(),diff=endTime-startLoadTime,diff"))},TgLoadingService.prototype.finish=function(target){var oldContent;return target.hasClass("loading")?(oldContent=target.data("loading-old-content"),target.data("loading-old-content",null),target.html(oldContent),target.removeClass("loading")):void 0},TgLoadingService}(taiga.Service),module.service("$tgLoading",TgLoadingService)}.call(this),function(){var RelatedTaskStatusDirective,UsStatusDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaCommon"),UsStatusDirective=function($repo,$template){var link,template;return template=$template.get("common/popover/popover-us-status.html",!0),link=function($scope,$el,$attrs){var $ctrl,render,us;return $ctrl=$el.controller(),render=function(us){var usStatusById,usStatusDom,usStatusDomParent;return usStatusDomParent=$el.find(".us-status"),usStatusDom=$el.find(".us-status .us-status-bind"),usStatusById=$scope.usStatusById,usStatusById[us.status]?(usStatusDom.text(usStatusById[us.status].name),usStatusDomParent.css("color",usStatusById[us.status].color)):void 0},$el.on("click",".us-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",debounce(2e3,function(event){var target,us;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),us=$scope.$eval($attrs.tgUsStatus),us.status=target.data("status-id"),render(us),$el.find(".pop-status").popover().close(),$scope.$apply(function(){return $repo.save(us).then(function(){return $scope.$eval($attrs.onUpdate)})})})),$scope.$on("userstories:loaded",function(){return render($scope.$eval($attrs.tgUsStatus))}),$scope.$on("$destroy",function(){return $el.off()}),us=$scope.$eval($attrs.tgUsStatus),render(us),bindOnce($scope,"project",function(project){var html;return html=template({statuses:project.us_statuses}),$el.append(html),-1===$scope.project.my_permissions.indexOf("modify_us")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0})},{link:link}},module.directive("tgUsStatus",["$tgRepo","$tgTemplate",UsStatusDirective]),RelatedTaskStatusDirective=function($repo,$template){var link,selectionTemplate,updateTaskStatus;return selectionTemplate=$template.get("common/popover/popover-related-task-status.html",!0),updateTaskStatus=function($el,task,taskStatusById){var taskStatusDom,taskStatusDomParent;return taskStatusDomParent=$el.find(".us-status"),taskStatusDom=$el.find(".task-status .task-status-bind"),taskStatusById[task.status]?(taskStatusDom.text(taskStatusById[task.status].name),taskStatusDomParent.css("color",taskStatusById[task.status].color)):void 0 +},link=function($scope,$el,$attrs){var $ctrl,autoSave,notAutoSave,task;return $ctrl=$el.controller(),task=$scope.$eval($attrs.tgRelatedTaskStatus),notAutoSave=$scope.$eval($attrs.notAutoSave),autoSave=!notAutoSave,$el.on("click",".task-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",debounce(2e3,function(event){var target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),task.status=target.data("status-id"),$el.find(".pop-status").popover().close(),updateTaskStatus($el,task,$scope.taskStatusById),autoSave?$scope.$apply(function(){return $repo.save(task).then(function(){return $scope.$eval($attrs.onUpdate),$scope.$emit("related-tasks:status-changed")})}):void 0})),taiga.bindOnce($scope,"project",function(project){return $el.append(selectionTemplate({statuses:project.task_statuses})),updateTaskStatus($el,task,$scope.taskStatusById),-1===project.my_permissions.indexOf("modify_task")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRelatedTaskStatus",["$tgRepo","$tgTemplate",RelatedTaskStatusDirective]),$.fn.popover=function(){var $el,close,closeAll,closePopover,isVisible,open;return $el=this,isVisible=function(){return function(){var docViewBottom,docViewLeft,docViewRight,docViewTop,docViewWidth,elemBottom,elemLeft,elemRight,elemTop,elemWidth;return $el.css({display:"block",visibility:"hidden"}),docViewTop=$(window).scrollTop(),docViewBottom=docViewTop+$(window).height(),docViewWidth=$(window).width(),docViewRight=docViewWidth,docViewLeft=0,elemTop=$el.offset().top,elemBottom=elemTop+$el.height(),elemWidth=$el.width(),elemLeft=$el.offset().left,elemRight=$el.offset().left+elemWidth,$el.css({display:"none",visibility:"visible"}),docViewBottom>=elemBottom&&elemTop>=docViewTop&&elemLeft>=docViewLeft&&docViewRight>=elemRight}}(this),closePopover=function(){return function(onClose){return onClose&&onClose.call($el),$el.fadeOut(function(){return $el.removeClass("active").removeClass("fix")}),$el.off("popup:close")}}(this),closeAll=function(){return function(){return $(".popover.active").each(function(){return $(this).trigger("popup:close")})}}(this),open=function(){return function(onClose){return $el.hasClass("active")?close():(closeAll(),isVisible()||$el.addClass("fix"),$el.fadeIn(function(){return $el.addClass("active"),$(document.body).off("popover"),$(document.body).one("click.popover",function(){return closeAll()})}),$el.on("popup:close",function(){return closePopover(onClose)}))}}(this),close=function(){return function(){return $el.trigger("popup:close")}}(this),{open:open,close:close,closeAll:closeAll}}}.call(this),function(){var ExceptionHandlerFactory,module,taiga;taiga=this.taiga,module=angular.module("taigaCommon"),ExceptionHandlerFactory=function($log,config){var ravenConfig;return this.config=config,ravenConfig=this.config.get("ravenConfig",null),ravenConfig?($log.debug("Using the RavenJS exception handler."),Raven.config(ravenConfig).install(),function(exception){return $log.error.apply($log,arguments),Raven.captureException(exception)}):($log.debug("Using the default logging exception handler."),function(){return $log.error.apply($log,arguments)})},module.factory("$exceptionHandler",["$log","$tgConfig",ExceptionHandlerFactory])}.call(this),function(){var ColorizeTagsDirective,LbTagLineDirective,TagLineDirective,TagsDirective,bindOnce,module,taiga,trim,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,module=angular.module("taigaCommon"),TagsDirective=function(){var formatter,link,parser;return formatter=function(v){return _.isArray(v)?v.join(", "):""},parser=function(v){var result;return v?(result=_(v.split(",")).map(function(x){return _.str.trim(x)}),result.value()):[]},link=function($scope,$el,$attrs,$ctrl){return $ctrl.$formatters.push(formatter),$ctrl.$parsers.push(parser),$scope.$on("$destroy",function(){return $el.off()})},{require:"ngModel",link:link}},module.directive("tgTags",TagsDirective),ColorizeTagsDirective=function(){var link,templates;return templates={backlog:_.template('<% _.each(tags, function(tag) { %>\n <%- tag.name %>\n<% }) %>'),kanban:_.template('<% _.each(tags, function(tag) { %>\n \n<% }) %>'),taskboard:_.template('<% _.each(tags, function(tag) { %>\n \n<% }) %>')},link=function($scope,$el,$attrs){var render;return render=function(srcTags){var html,tags,template;return template=templates[$attrs.tgColorizeTagsType],srcTags.sort(),tags=_.map(srcTags,function(tag){var color;return color=$scope.project.tags_colors[tag],{name:tag,color:color}}),html=template({tags:tags}),$el.html(html)},$scope.$watch($attrs.tgColorizeTags,function(tags){return null!=tags?render(tags):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgColorizeTags",ColorizeTagsDirective),LbTagLineDirective=function($rs,$template){var COMMA_KEY,ENTER_KEY,link,templateTags;return ENTER_KEY=13,COMMA_KEY=188,templateTags=$template.get("common/tag/lb-tag-line-tags.html",!0),link=function($scope,$el,$attrs,$model){var addValue,deleteValue,hideSaveButton,removeInputLastCharacter,renderTags,resetInput,saveInputTag,showSaveButton;return renderTags=function(tags,tagsColors){var ctx,html;return ctx={tags:_.map(tags,function(t){return{name:t,color:tagsColors[t]}})},_.map(ctx.tags,function(){return function(tag){return tag.color?tag.style="border-left: 5px solid "+tag.color:void 0}}(this)),html=templateTags(ctx),$el.find("div.tags-container").html(html)},showSaveButton=function(){return $el.find(".save").removeClass("hidden")},hideSaveButton=function(){return $el.find(".save").addClass("hidden")},resetInput=function(){return $el.find("input").val(""),$el.find("input").autocomplete("close")},addValue=function(value){var tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue,!1),null==tags&&(tags=[]),indexOf.call(tags,value)<0&&tags.push(value),$scope.$apply(function(){return $model.$setViewValue(tags)}),hideSaveButton()):void 0},deleteValue=function(value){var tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue,!1),tags=_.pull(tags,value),$scope.$apply(function(){return $model.$setViewValue(tags)})):void 0},saveInputTag=function(){var value;return value=$el.find("input").val(),addValue(value),resetInput()},removeInputLastCharacter=function(){return function(input){var inputValue;return inputValue=input.val(),input.val(inputValue.substring(0,inputValue.length-1))}}(this),$el.on("keypress","input",function(event){return event.keyCode===ENTER_KEY?event.preventDefault():void 0}),$el.on("keyup","input",function(event){var target;return target=angular.element(event.currentTarget),event.keyCode===ENTER_KEY?saveInputTag():event.keyCode===COMMA_KEY?(removeInputLastCharacter(target),saveInputTag()):target.val().length?showSaveButton():hideSaveButton()}),$el.on("click",".save",function(event){return event.preventDefault(),saveInputTag()}),$el.on("click",".icon-delete",function(event){var target,value;return event.preventDefault(),target=angular.element(event.currentTarget),value=target.siblings(".tag-name").text(),deleteValue(value)}),bindOnce($scope,"project",function(project){var positioningFunction;return positioningFunction=function(position,elements){var menu;return menu=elements.element.element,menu.css("width",elements.target.width),menu.css("top",position.top),menu.css("left",position.left)},$el.find("input").autocomplete({source:_.keys(project.tags_colors),position:{my:"left top",using:positioningFunction},select:function(event,ui){return addValue(ui.item.value),ui.item.value=""}})}),$scope.$watch($attrs.ngModel,function(tags){var ref,tagsColors;return tagsColors=(null!=(ref=$scope.project)?ref.tags_colors:void 0)||[],renderTags(tags,tagsColors)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel",templateUrl:"common/tag/lb-tag-line.html"}},module.directive("tgLbTagLine",["$tgResources","$tgTemplate",LbTagLineDirective]),TagLineDirective=function($rootScope,$repo,$rs,$confirm,$qqueue,$template){var COMMA_KEY,ENTER_KEY,ESC_KEY,link,templateTags;return ENTER_KEY=13,ESC_KEY=27,COMMA_KEY=188,templateTags=$template.get("common/tag/tags-line-tags.html",!0),link=function($scope,$el,$attrs,$model){var addValue,deleteValue,hideAddTagButton,hideAddTagButtonText,hideInput,hideSaveButton,isEditable,removeInputLastCharacter,renderInReadModeOnly,renderTags,resetInput,saveInputTag,showAddTagButton,showAddTagButtonText,showInput,showSaveButton;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf($attrs.requiredPerm)},renderTags=function(tags,tagsColors){var ctx,html;return ctx={tags:_.map(tags,function(t){return{name:t,color:tagsColors[t]}}),isEditable:isEditable()},html=templateTags(ctx),$el.find("div.tags-container").html(html)},renderInReadModeOnly=function(){return $el.find(".add-tag").remove(),$el.find("input").remove(),$el.find(".save").remove()},showAddTagButton=function(){return $el.find(".add-tag").removeClass("hidden")},hideAddTagButton=function(){return $el.find(".add-tag").addClass("hidden")},showAddTagButtonText=function(){return $el.find(".add-tag-text").removeClass("hidden")},hideAddTagButtonText=function(){return $el.find(".add-tag-text").addClass("hidden")},showSaveButton=function(){return $el.find(".save").removeClass("hidden")},hideSaveButton=function(){return $el.find(".save").addClass("hidden")},showInput=function(){return $el.find("input").removeClass("hidden").focus()},hideInput=function(){return $el.find("input").addClass("hidden").blur()},resetInput=function(){return $el.find("input").val(""),$el.find("input").autocomplete("close")},addValue=$qqueue.bindAdd(function(value){var model,onError,onSuccess,tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue.tags,!1),null==tags&&(tags=[]),indexOf.call(tags,value)<0&&tags.push(value),model=$model.$modelValue.clone(),model.tags=tags,$model.$setViewValue(model),onSuccess=function(){return $rootScope.$broadcast("history:reload")},onError=function(){return $confirm.notify("error"),model.revert(),$model.$setViewValue(model)},$repo.save(model).then(onSuccess,onError),hideSaveButton()):void 0}),deleteValue=$qqueue.bindAdd(function(value){var model,onError,onSuccess,tags;return value=trim(value.toLowerCase()),0!==value.length?(tags=_.clone($model.$modelValue.tags,!1),tags=_.pull(tags,value),model=$model.$modelValue.clone(),model.tags=tags,$model.$setViewValue(model),onSuccess=function(){return $rootScope.$broadcast("history:reload")},onError=function(){return $confirm.notify("error"),model.revert(),$model.$setViewValue(model)},$repo.save(model).then(onSuccess,onError)):void 0}),saveInputTag=function(){var value;return value=$el.find("input").val(),addValue(value),resetInput()},removeInputLastCharacter=function(){return function(input){var inputValue;return inputValue=input.val(),input.val(inputValue.substring(0,inputValue.length-1))}}(this),$el.on("keypress","input",function(event){var ref;if((ref=event.keyCode)===ENTER_KEY||ref===ESC_KEY)return event.preventDefault()}),$el.on("keyup","input",function(event){var target;return target=angular.element(event.currentTarget),event.keyCode===ENTER_KEY?saveInputTag():event.keyCode===COMMA_KEY?(removeInputLastCharacter(target),saveInputTag()):event.keyCode===ESC_KEY?(resetInput(),hideInput(),hideSaveButton(),showAddTagButton()):target.val().length?showSaveButton():hideSaveButton()}),$el.on("click",".save",function(event){return event.preventDefault(),saveInputTag()}),$el.on("click",".add-tag",function(event){return event.preventDefault(),hideAddTagButton(),showInput()}),$el.on("click",".icon-delete",function(event){var target,value;return event.preventDefault(),target=angular.element(event.currentTarget),value=target.siblings(".tag-name").text(),deleteValue(value)}),bindOnce($scope,"project",function(project){var positioningFunction;return isEditable()?(showAddTagButton(),positioningFunction=function(position,elements){var menu;return menu=elements.element.element,menu.css("width",elements.target.width),menu.css("top",position.top),menu.css("left",position.left)},$el.find("input").autocomplete({source:_.keys(project.tags_colors),position:{my:"left top",using:positioningFunction},select:function(event,ui){return addValue(ui.item.value),ui.item.value=""}})):void renderInReadModeOnly()}),$scope.$watch($attrs.ngModel,function(model){var ref,ref1,tagsColors;if(model)return(null!=(ref=model.tags)?ref.length:void 0)?hideAddTagButtonText():showAddTagButtonText(),tagsColors=(null!=(ref1=$scope.project)?ref1.tags_colors:void 0)||[],renderTags(model.tags,tagsColors)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel",templateUrl:"common/tag/tag-line.html"}},module.directive("tgTagLine",["$rootScope","$tgRepo","$tgResources","$tgConfirm","$tgQqueue","$tgTemplate",TagLineDirective])}.call(this),function(){var bindOnce,module,taiga,tgMarkitupDirective,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,bindOnce=this.taiga.bindOnce,module=angular.module("taigaCommon"),tgMarkitupDirective=function($rootscope,$rs,$tr,$selectedText,$template){var link,previewTemplate;return previewTemplate=$template.get("common/wysiwyg/wysiwyg-markitup-preview.html",!0),link=function($scope,$el,$attrs,$model){var addLine,closePreviewMode,element,markdownSettings,markdownTitle,prepareUrlFormatting,preview,previewDomNode,setCaretPosition,urlFormatting;return element=angular.element($el),previewDomNode=$("
",{"class":"preview"}),closePreviewMode=function(){return element.parents(".markdown").find(".preview").remove(),element.parents(".markItUp").show()},$scope.$on("markdown-editor:submit",function(){return closePreviewMode()}),preview=function(){var markItUpDomNode,markdownDomNode;return markdownDomNode=element.parents(".markdown"),markItUpDomNode=element.parents(".markItUp"),$rs.mdrender.render($scope.projectId,$model.$modelValue).then(function(data){var markdown;return markdownDomNode.append(previewTemplate({data:data.data})),markItUpDomNode.hide(),markdown=element.closest(".markdown"),markdown.on("mouseup.preview",".preview",function(event){var target;return event.preventDefault(),target=angular.element(event.target),target.is("a")||!$selectedText.get().length?(markdown.off(".preview"),closePreviewMode()):void 0})})},setCaretPosition=function(textarea,caretPosition){var line,range,scrollRelation,totalLines;return textarea.createTextRange?(range=textarea.createTextRange(),range.move("character",caretPosition),range.select()):textarea.selectionStart&&(textarea.focus(),textarea.setSelectionRange(caretPosition,caretPosition)),totalLines=textarea.value.split("\n").length,line=textarea.value.slice(0,+(caretPosition-1)+1||9e9).split("\n").length,scrollRelation=line/totalLines,$el.scrollTop(scrollRelation*$el[0].scrollHeight-$el.height()/2)},addLine=function(textarea,nline,replace){var cursorPosition,j,key,len,line,lines;for(lines=textarea.value.split("\n"),lines[nline]=replace?replace+lines[nline]:"",cursorPosition=0,key=j=0,len=lines.length;len>j&&(line=lines[key],cursorPosition+=line.length+1||1,key!==nline);key=++j);return textarea.value=lines.join("\n"),replace?cursorPosition-lines[nline].length+replace.length-1:cursorPosition},markdownSettings={nameSpace:"markdown",onShiftEnter:{keepDefault:!1,openWith:"\n\n"},onEnter:{keepDefault:!1,replaceWith:function(){return"\n"},afterInsert:function(data){var cursorLine,emptyListItem,lastLine,lines,markdownCaretPositon,match,newLineContent;return lines=data.textarea.value.split("\n"),cursorLine=data.textarea.value.slice(0,+(data.caretPosition-1)+1||9e9).split("\n").length,newLineContent=data.textarea.value.slice(data.caretPosition).split("\n")[0],lastLine=lines[cursorLine-1],match=lastLine.match(/^(\s*- ).*/),match&&(emptyListItem=lastLine.match(/^(\s*)\-\s$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,""+match[1])),match=lastLine.match(/^(\s*\* ).*/),match&&(emptyListItem=lastLine.match(/^(\s*\* )$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,""+match[1])),match=lastLine.match(/^(\s*)(\d+)\.\s/),match&&(emptyListItem=lastLine.match(/^(\s*)(\d+)\.\s$/),markdownCaretPositon=emptyListItem?addLine(data.textarea,cursorLine-1):addLine(data.textarea,cursorLine,match[1]+(parseInt(match[2],10)+1)+". ")),markdownCaretPositon?setCaretPosition(data.textarea,markdownCaretPositon):void 0}},markupSet:[{name:$tr.t("markdown-editor.heading-1"),key:"1",placeHolder:$tr.t("markdown-editor.placeholder"),closeWith:function(markItUp){return markdownTitle(markItUp,"=")}},{name:$tr.t("markdown-editor.heading-2"),key:"2",placeHolder:$tr.t("markdown-editor.placeholder"),closeWith:function(markItUp){return markdownTitle(markItUp,"-")}},{name:$tr.t("markdown-editor.heading-3"),key:"3",openWith:"### ",placeHolder:$tr.t("markdown-editor.placeholder")},{separator:"---------------"},{name:$tr.t("markdown-editor.bold"),key:"B",openWith:"**",closeWith:"**"},{name:$tr.t("markdown-editor.italic"),key:"I",openWith:"_",closeWith:"_"},{name:$tr.t("markdown-editor.strike"),key:"S",openWith:"~~",closeWith:"~~"},{separator:"---------------"},{name:$tr.t("markdown-editor.bulleted-list"),openWith:"- "},{name:$tr.t("markdown-editor.numeric-list"),openWith:function(markItUp){return markItUp.line+". "}},{separator:"---------------"},{name:$tr.t("markdown-editor.picture"),key:"P",replaceWith:'![[![Alternative text]!]](<<<[![Url:!:http://]!]>>> "[![Title]!]")',beforeInsert:function(markItUp){return prepareUrlFormatting(markItUp)},afterInsert:function(markItUp){return urlFormatting(markItUp)}},{name:$tr.t("markdown-editor.link"),key:"L",openWith:"[",closeWith:'](<<<[![Url:!:http://]!]>>> "[![Title]!]")',placeHolder:$tr.t("markdown-editor.link-placeholder"),beforeInsert:function(markItUp){return prepareUrlFormatting(markItUp)},afterInsert:function(markItUp){return urlFormatting(markItUp)}},{separator:"---------------"},{name:$tr.t("markdown-editor.quotes"),openWith:"> "},{name:$tr.t("markdown-editor.code-block"),openWith:"```\n",closeWith:"\n```"},{separator:"---------------"},{name:$tr.t("markdown-editor.preview"),call:preview,className:"preview-icon"}],afterInsert:function(event){var target;return target=angular.element(event.textarea),$model.$setViewValue(target.val())}},prepareUrlFormatting=function(markItUp){var indices,regex,result;for(console.log(markItUp),regex=/(<<<|>>>)/gi,result=0,indices=[];result=regex.exec(markItUp.textarea.value);)indices.push(result.index);return markItUp.donotparse=indices,console.log(indices)},urlFormatting=function(markItUp){var endIndex,ref,ref1,regex,result,startIndex,url,value;for(console.log(markItUp.donotparse),regex=/<<>>/gi,endIndex=0;;){if(result=regex.exec(markItUp.textarea.value),!result)break;if(ref1=result.index,indexOf.call(markItUp.donotparse,ref1)<0){endIndex=result.index;break}}return value=markItUp.textarea.value,url=value.substring(startIndex,endIndex).replace("<<<","").replace(">>>",""),url=url.replace("(","%28").replace(")","%29"),url=url.replace("[","%5B").replace("]","%5D"),value=value.substring(0,startIndex)+url+value.substring(endIndex+3,value.length),markItUp.textarea.value=value,markItUp.donotparse=void 0},markdownTitle=function(markItUp,char){var heading,i,j,n,ref;for(heading="",n=$.trim(markItUp.selection||markItUp.placeHolder).length,i=j=0,ref=n-1;ref>=0?ref>=j:j>=ref;i=ref>=0?++j:--j)heading+=char;return"\n"+heading+"\n"},element.markItUp(markdownSettings),element.on("keypress",function(){return $scope.$apply()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgMarkitup",["$rootScope","$tgResources","$tgI18n","$selectedText","$tgTemplate",tgMarkitupDirective])}.call(this),function(){var BacklogFiltersDirective,bindOnce,debounceLeading,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,debounceLeading=this.taiga.debounceLeading,module=angular.module("taigaBacklog"),BacklogFiltersDirective=function($log,$location,$templates){var link,template,templateSelected;return template=$templates.get("backlog/filters.html",!0),templateSelected=$templates.get("backlog/filter-selected.html",!0),link=function($scope,$el){var $ctrl,initializeSelectedFilters,renderFilters,renderSelectedFilters,selectQFilter,selectedFilters,showCategories,showFilters,toggleFilterSelection;return $ctrl=$el.closest(".wrapper").controller(),selectedFilters=[],showFilters=function(title,type){return $el.find(".filters-cats").hide(),$el.find(".filter-list").removeClass("hidden"),$el.find("h2.breadcrumb").removeClass("hidden"),$el.find("h2 a.subfilter span.title").html(title),$el.find("h2 a.subfilter span.title").prop("data-type",type)},showCategories=function(){return $el.find(".filters-cats").show(),$el.find(".filter-list").addClass("hidden"),$el.find("h2.breadcrumb").addClass("hidden")},initializeSelectedFilters=function(filters){var i,len,name,val,values;showCategories(),selectedFilters=[];for(name in filters)for(values=filters[name],i=0,len=values.length;len>i;i++)val=values[i],val.selected&&selectedFilters.push(val);return renderSelectedFilters()},renderSelectedFilters=function(){var html;return _.map(selectedFilters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=templateSelected({filters:selectedFilters}),$el.find(".filters-applied").html(html)},renderFilters=function(filters){var html;return _.map(filters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=template({filters:filters}),$el.find(".filter-list").html(html)},toggleFilterSelection=function(type,id){var currentFiltersType,filter,filters;return filters=$scope.filters[type],filter=_.find(filters,{id:taiga.toString(id)}),filter.selected=!filter.selected,filter.selected?(selectedFilters.push(filter),$scope.$apply(function(){return $ctrl.selectFilter(type,id)})):(selectedFilters=_.reject(selectedFilters,filter),$scope.$apply(function(){return $ctrl.unselectFilter(type,id)})),renderSelectedFilters(selectedFilters),currentFiltersType=$el.find("h2 a.subfilter span.title").prop("data-type"),type===currentFiltersType&&renderFilters(_.reject(filters,"selected")),$ctrl.loadUserstories()},selectQFilter=debounceLeading(100,function(value){return void 0!==value?(0===value.length?$ctrl.replaceFilter("q",null):$ctrl.replaceFilter("q",value),$ctrl.loadUserstories()):void 0}),$scope.$watch("filtersQ",selectQFilter),$scope.$on("filters:loaded",function(ctx,filters){return initializeSelectedFilters(filters)}),$el.on("click",".filters-cats > ul > li > a",function(event){var tags,target;return event.preventDefault(),target=angular.element(event.currentTarget),tags=$scope.filters[target.data("type")],renderFilters(_.reject(tags,"selected")),showFilters(target.attr("title"),target.data("type"))}),$el.on("click",".filters-inner > .filters-step-cat > .breadcrumb > .back",function(event){return event.preventDefault(),showCategories()}),$el.on("click",".filters-applied a",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),id=target.data("id"),type=target.data("type"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),target.hasClass("active")?target.removeClass("active"):target.addClass("active"),id=target.data("id"),type=target.data("type"),toggleFilterSelection(type,id)})},{link:link}},module.directive("tgBacklogFilters",["$log","$tgLocation","$tgTemplate",BacklogFiltersDirective])}.call(this),function(){var CreateEditSprint,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaBacklog"),CreateEditSprint=function($repo,$confirm,$rs,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var createSprint,hasErrors,remove,submit,submitButton;return hasErrors=!1,createSprint=!0,$scope.sprint={project:null,name:null,estimated_start:null,estimated_finish:null},submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,newSprint,promise,target;return event.preventDefault(),target=angular.element(event.currentTarget),form=$el.find("form").checksley(),form.validate()?(hasErrors=!1,newSprint=angular.copy($scope.sprint),broadcastEvent=null,createSprint?(newSprint.estimated_start=moment(newSprint.estimated_start).format("YYYY-MM-DD"),newSprint.estimated_finish=moment(newSprint.estimated_finish).format("YYYY-MM-DD"),promise=$repo.create("milestones",newSprint),broadcastEvent="sprintform:create:success"):(newSprint.setAttr("estimated_start",moment(newSprint.estimated_start).format("YYYY-MM-DD")),newSprint.setAttr("estimated_finish",moment(newSprint.estimated_finish).format("YYYY-MM-DD")),promise=$repo.save(newSprint),broadcastEvent="sprintform:edit:success"),$loading.start(submitButton),promise.then(function(data){return $loading.finish(submitButton),createSprint&&($scope.sprintsCounter+=1),$rootscope.$broadcast(broadcastEvent,data),lightboxService.close($el)}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("light-error",data._error_message):data.__all__?$confirm.notify("light-error",data.__all__[0]):void 0})):(hasErrors=!0,void $el.find(".last-sprint-name").addClass("disappear"))}}(this)),remove=function(){var message,title;return title="Delete sprint",message=$scope.sprint.name,$confirm.askOnDelete(title,message).then(function(){return function(finish){var onError,onSuccess;return onSuccess=function(){return finish(),$scope.milestonesCounter-=1,lightboxService.close($el),$rootscope.$broadcast("sprintform:remove:success")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.remove($scope.sprint).then(onSuccess,onError)}}(this))},$scope.$on("sprintform:create",function(event,projectId){var estimatedFinish,estimatedStart,form,lastSprint,lastSprintNameDom;return form=$el.find("form").checksley(),form.reset(),createSprint=!0,$scope.sprint.project=projectId,$scope.sprint.name=null,$scope.sprint.slug=null,lastSprint=$scope.sprints[0],estimatedStart=moment(),$scope.sprint.estimated_start?estimatedStart=moment($scope.sprint.estimated_start):null!=lastSprint&&(estimatedStart=moment(lastSprint.estimated_finish)),$scope.sprint.estimated_start=estimatedStart.format("DD MMM YYYY"),estimatedFinish=moment().add(2,"weeks"),$scope.sprint.estimated_finish?estimatedFinish=moment($scope.sprint.estimated_finish):null!=lastSprint&&(estimatedFinish=moment(lastSprint.estimated_finish).add(2,"weeks")),$scope.sprint.estimated_finish=estimatedFinish.format("DD MMM YYYY"),lastSprintNameDom=$el.find(".last-sprint-name"),null!=(null!=lastSprint?lastSprint.name:void 0)&&lastSprintNameDom.html(" last sprint is "+lastSprint.name+" ;-) "),$el.find(".delete-sprint").addClass("hidden"),$el.find(".title").text("New sprint"),$el.find(".button-green").text("Create"),lightboxService.open($el),$el.find(".sprint-name").focus(),$el.find(".last-sprint-name").removeClass("disappear")}),$scope.$on("sprintform:edit",function(ctx,sprint){return createSprint=!1,$scope.$apply(function(){return $scope.sprint=sprint,$scope.sprint.estimated_start=moment($scope.sprint.estimated_start).format("DD MMM YYYY"),$scope.sprint.estimated_finish=moment($scope.sprint.estimated_finish).format("DD MMM YYYY")}),$el.find(".delete-sprint").removeClass("hidden"),$el.find(".title").text("Edit sprint"),$el.find(".button-green").text("Save"),lightboxService.open($el),$el.find(".sprint-name").focus().select(),$el.find(".last-sprint-name").addClass("disappear")}),$el.on("keyup",".sprint-name",function(){return $el.find(".sprint-name").val().length>0||hasErrors?$el.find(".last-sprint-name").addClass("disappear"):$el.find(".last-sprint-name").removeClass("disappear")}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".delete-sprint .icon-delete",function(event){return event.preventDefault(),remove()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateEditSprint",["$tgRepo","$tgConfirm","$tgResources","$rootScope","lightboxService","$tgLoading",CreateEditSprint])}.call(this),function(){var BacklogController,BacklogDirective,TgBacklogProgressBarDirective,UsPointsDirective,UsRolePointsSelectorDirective,bindMethods,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,tgBacklogGraphDirective,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaBacklog"),BacklogController=function(superClass){function BacklogController(scope,rootscope,repo,confirm,rs,params1,q,location,appTitle,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params1,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Backlog",this.showTags=!1,this.activeFilters=!1,this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Backlog - "+_this.scope.project.name),_this.rs.userstories.getShowTags(_this.scope.projectId)?(_this.showTags=!0,_this.scope.$broadcast("showTags",_this.showTags)):void 0}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(BacklogController,superClass),BacklogController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],BacklogController.prototype.initializeEventHandlers=function(){return this.scope.$on("usform:bulk:success",function(_this){return function(){return _this.loadUserstories(),_this.loadProjectStats(),_this.analytics.trackEvent("userstory","create","bulk create userstory on backlog",1)}}(this)),this.scope.$on("sprintform:create:success",function(_this){return function(){return _this.loadSprints(),_this.loadProjectStats(),_this.analytics.trackEvent("sprint","create","create sprint on backlog",1)}}(this)),this.scope.$on("usform:new:success",function(_this){return function(){return _this.loadUserstories(),_this.loadProjectStats(),_this.analytics.trackEvent("userstory","create","create userstory on backlog",1) +}}(this)),this.scope.$on("sprintform:edit:success",function(_this){return function(){return _this.loadProjectStats()}}(this)),this.scope.$on("sprintform:remove:success",function(_this){return function(){return _this.loadSprints(),_this.loadProjectStats(),_this.loadUserstories()}}(this)),this.scope.$on("usform:edit:success",function(_this){return function(){return _this.loadUserstories()}}(this)),this.scope.$on("sprint:us:move",this.moveUs),this.scope.$on("sprint:us:moved",this.loadSprints),this.scope.$on("sprint:us:moved",this.loadProjectStats),this.scope.$on("backlog:load-closed-sprints",this.loadClosedSprints),this.scope.$on("backlog:unload-closed-sprints",this.unloadClosedSprints)},BacklogController.prototype.initializeSubscription=function(){var routingKey1,routingKey2;return routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.loadUserstories(),_this.loadSprints()}}(this)),routingKey2="changes.project."+this.scope.projectId+".milestones",this.events.subscribe(this.scope,routingKey2,function(_this){return function(){return _this.loadSprints()}}(this))},BacklogController.prototype.toggleShowTags=function(){return this.scope.$apply(function(_this){return function(){return _this.showTags=!_this.showTags,_this.rs.userstories.storeShowTags(_this.scope.projectId,_this.showTags)}}(this))},BacklogController.prototype.toggleActiveFilters=function(){return this.activeFilters=!this.activeFilters},BacklogController.prototype.loadProjectStats=function(){return this.rs.projects.stats(this.scope.projectId).then(function(_this){return function(stats){return _this.scope.stats=stats,_this.scope.stats.completedPercentage=stats.total_points?Math.round(100*stats.closed_points/stats.total_points):0,stats}}(this))},BacklogController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},BacklogController.prototype.unloadClosedSprints=function(){return this.scope.$apply(function(_this){return function(){return _this.scope.closedSprints=[],_this.rootscope.$broadcast("closed-sprints:reloaded",[])}}(this))},BacklogController.prototype.loadClosedSprints=function(){var params;return params={closed:!0},this.rs.sprints.list(this.scope.projectId,params).then(function(_this){return function(sprints){var j,len,sprint;for(j=0,len=sprints.length;len>j;j++)sprint=sprints[j],sprint.user_stories=_.sortBy(sprint.user_stories,"sprint_order");return _this.scope.closedSprints=sprints,_this.rootscope.$broadcast("closed-sprints:reloaded",sprints),sprints}}(this))},BacklogController.prototype.loadSprints=function(){var params;return params={closed:!1},this.rs.sprints.list(this.scope.projectId,params).then(function(_this){return function(sprints){var j,len,sprint;for(j=0,len=sprints.length;len>j;j++)sprint=sprints[j],sprint.user_stories=_.sortBy(sprint.user_stories,"sprint_order");return _this.scope.sprints=sprints,_this.scope.openSprints=_.filter(sprints,function(sprint){return!sprint.closed}).reverse(),_this.scope.closedSprints||(_this.scope.closedSprints=[]),_this.scope.sprintsCounter=sprints.length,_this.scope.sprintsById=groupBy(sprints,function(x){return x.id}),_this.rootscope.$broadcast("sprints:loaded",sprints),sprints}}(this))},BacklogController.prototype.resetFilters=function(){var selectedStatuses,selectedTags;return selectedTags=_.filter(this.scope.filters.tags,"selected"),selectedStatuses=_.filter(this.scope.filters.statuses,"selected"),this.scope.filtersQ="",_.each([selectedTags,selectedStatuses],function(_this){return function(filterGrp){return _.each(filterGrp,function(item){var filter,filters;return filters=_this.scope.filters[item.type],filter=_.find(filters,{id:taiga.toString(item.id)}),filter.selected=!1,_this.unselectFilter(item.type,item.id)})}}(this)),this.loadUserstories()},BacklogController.prototype.loadUserstories=function(){var promise;return this.scope.httpParams=this.getUrlFilters(),this.rs.userstories.storeQueryParams(this.scope.projectId,this.scope.httpParams),promise=this.q.all([this.refreshTagsColors(),this.rs.userstories.listUnassigned(this.scope.projectId,this.scope.httpParams)]),promise.then(function(_this){return function(data){var userstories;return userstories=data[1],_this.scope.userstories=_.sortBy(userstories,"backlog_order"),_this.setSearchDataFilters(),_this.filterVisibleUserstories(),_this.generateFilters(),_this.rootscope.$broadcast("filters:loaded",_this.scope.filters),scopeDefer(_this.scope,function(){return _this.scope.$broadcast("userstories:loaded")}),userstories}}(this))},BacklogController.prototype.loadBacklog=function(){return this.q.all([this.loadProjectStats(),this.loadSprints(),this.loadUserstories()])},BacklogController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_backlog_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.totalClosedMilestones=project.total_closed_milestones,_this.scope.$emit("project:loaded",project),_this.scope.points=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(x){return x.id}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.usStatusList=_.sortBy(project.us_statuses,"id"),project}}(this))},BacklogController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription()}}(this)),promise.then(function(_this){return function(){return _this.loadBacklog()}}(this))},BacklogController.prototype.filterVisibleUserstories=function(){return this.scope.visibleUserstories=[],this.scope.visibleUserstories=_.reject(this.scope.userstories,function(_this){return function(us){return _.some(us.tags,function(tag){return _this.isFilterSelected("tag",tag)})}}(this)),this.scope.visibleUserstories=_.filter(this.scope.visibleUserstories,function(_this){return function(us){return _this.searchdata.statuses&&Object.keys(_this.searchdata.statuses).length?_this.isFilterSelected("statuses",taiga.toString(us.status)):!0}}(this))},BacklogController.prototype.prepareBulkUpdateData=function(uses,field){return null==field&&(field="backlog_order"),_.map(uses,function(x){return{us_id:x.id,order:x[field]}})},BacklogController.prototype.resortUserStories=function(uses,field){var index,item,items,j,len;for(null==field&&(field="backlog_order"),items=[],index=j=0,len=uses.length;len>j;index=++j)item=uses[index],item[field]=index,item.isModified()&&items.push(item);return items},BacklogController.prototype.moveUs=function(ctx,usList,newUsIndex,newSprintId){var data,items,j,l,len,len1,len2,m,newSprint,oldSprintId,project,promise,promises,us,userstories;if(oldSprintId=usList[0].milestone,project=usList[0].project,newSprintId===oldSprintId)return items=null,userstories=null,userstories=null===newSprintId?this.scope.userstories:this.scope.sprintsById[newSprintId].user_stories,this.scope.$apply(function(){var args,j,key,len,r,us;for(key=j=0,len=usList.length;len>j;key=++j)us=usList[key],r=userstories.indexOf(us),userstories.splice(r,1);return args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(userstories,args)}),null===newSprintId?(items=this.resortUserStories(userstories,"backlog_order"),data=this.prepareBulkUpdateData(items,"backlog_order"),this.rs.userstories.bulkUpdateBacklogOrder(project,data).then(function(_this){return function(){var j,len,results,us;for(results=[],j=0,len=usList.length;len>j;j++)us=usList[j],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results}}(this))):(items=this.resortUserStories(userstories,"sprint_order"),data=this.prepareBulkUpdateData(items,"sprint_order"),this.rs.userstories.bulkUpdateSprintOrder(project,data).then(function(_this){return function(){var j,len,results,us;for(results=[],j=0,len=usList.length;len>j;j++)us=usList[j],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results}}(this))),promise;if(null===newSprintId){for(j=0,len=usList.length;len>j;j++)us=usList[j],us.milestone=null;return this.scope.$apply(function(_this){return function(){var args,key,l,len1,r,results,sprint;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(_this.scope.userstories,args),Array.prototype.splice.apply(_this.scope.visibleUserstories,args),_this.filterVisibleUserstories(),sprint=_this.scope.sprintsById[oldSprintId],results=[],key=l=0,len1=usList.length;len1>l;key=++l)us=usList[key],r=sprint.user_stories.indexOf(us),results.push(sprint.user_stories.splice(r,1));return results}}(this)),promise=this.repo.save(us),promise=promise.then(function(_this){return function(){return items=_this.resortUserStories(_this.scope.userstories,"backlog_order"),data=_this.prepareBulkUpdateData(items,"backlog_order"),_this.rs.userstories.bulkUpdateBacklogOrder(us.project,data).then(function(){return _this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId)})}}(this)),promise.then(null,function(){return console.log("FAIL")}),promise}if(newSprint=this.scope.sprintsById[newSprintId],null===oldSprintId){for(l=0,len1=usList.length;len1>l;l++)us=usList[l],us.milestone=newSprintId;this.scope.$apply(function(_this){return function(){var args,key,len2,m,r,results;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(newSprint.user_stories,args),results=[],key=m=0,len2=usList.length;len2>m;key=++m)us=usList[key],r=_this.scope.visibleUserstories.indexOf(us),_this.scope.visibleUserstories.splice(r,1),r=_this.scope.userstories.indexOf(us),results.push(_this.scope.userstories.splice(r,1));return results}}(this))}else{for(m=0,len2=usList.length;len2>m;m++)us=usList[m],us.milestone=newSprintId;this.scope.$apply(function(_this){return function(){var args,len3,n,oldSprint,r,results;for(args=[newUsIndex,0].concat(usList),Array.prototype.splice.apply(newSprint.user_stories,args),results=[],n=0,len3=usList.length;len3>n;n++)us=usList[n],oldSprint=_this.scope.sprintsById[oldSprintId],r=oldSprint.user_stories.indexOf(us),results.push(oldSprint.user_stories.splice(r,1));return results}}(this))}return promises=_.map(usList,function(_this){return function(us){return _this.repo.save(us)}}(this)),promise=this.q.all(promises).then(function(_this){return function(){return items=_this.resortUserStories(newSprint.user_stories,"sprint_order"),data=_this.prepareBulkUpdateData(items,"sprint_order"),_this.rs.userstories.bulkUpdateSprintOrder(project,data).then(function(){return _this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId)}),_this.rs.userstories.bulkUpdateBacklogOrder(project,data).then(function(){var len3,n,results;for(results=[],n=0,len3=usList.length;len3>n;n++)us=usList[n],results.push(_this.rootscope.$broadcast("sprint:us:moved",us,oldSprintId,newSprintId));return results})}}(this)),promise.then(null,function(){return console.log("FAIL")}),promise},BacklogController.prototype.isFilterSelected=function(type,id){return null!=this.searchdata[type]&&this.searchdata[type][id]?!0:!1},BacklogController.prototype.setSearchDataFilters=function(){var name,results,urlfilters,val,value;urlfilters=this.getUrlFilters(),urlfilters.q&&(this.scope.filtersQ=this.scope.filtersQ||urlfilters.q),this.searchdata={},results=[];for(name in urlfilters)value=urlfilters[name],null==this.searchdata[name]&&(this.searchdata[name]={}),results.push(function(){var j,len,ref,results1;for(ref=taiga.toString(value).split(","),results1=[],j=0,len=ref.length;len>j;j++)val=ref[j],results1.push(this.searchdata[name][val]=!0);return results1}.call(this));return results},BacklogController.prototype.getUrlFilters=function(){return _.pick(this.location.search(),"statuses","tags","q")},BacklogController.prototype.generateFilters=function(){var plainStatuses,plainTags,selectedStatuses,selectedTags;return this.scope.filters={},plainTags=_.flatten(_.filter(_.map(this.scope.visibleUserstories,"tags"))),plainTags.sort(),this.scope.filters.tags=_.map(_.countBy(plainTags),function(_this){return function(v,k){var obj;return obj={id:k,type:"tags",name:k,color:_this.scope.project.tags_colors[k],count:v},_this.isFilterSelected("tags",obj.id)&&(obj.selected=!0),obj}}(this)),selectedTags=_.filter(this.scope.filters.tags,"selected"),selectedTags=_.map(selectedTags,"name"),plainStatuses=_.map(this.scope.visibleUserstories,"status"),plainStatuses=_.filter(plainStatuses,function(){return function(status){return status?status:void 0}}(this)),this.scope.filters.statuses=_.map(_.countBy(plainStatuses),function(_this){return function(v,k){var obj;return obj={id:k,type:"statuses",name:_this.scope.usStatusById[k].name,color:_this.scope.usStatusById[k].color,count:v},_this.isFilterSelected("statuses",obj.id)&&(obj.selected=!0),obj}}(this)),selectedStatuses=_.filter(this.scope.filters.statuses,"selected"),selectedStatuses=_.map(selectedStatuses,"id"),this.rs.userstories.storeQueryParams(this.scope.projectId,{status:selectedStatuses,tags:selectedTags,project:this.scope.projectId,milestone:null})},BacklogController.prototype.editUserStory=function(us){return this.rootscope.$broadcast("usform:edit",us)},BacklogController.prototype.deleteUserStory=function(us){var message,title;return title="Delete User Story",message=us.subject,this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var promise;return _this.scope.userstories=_.without(_this.scope.userstories,us),_this.filterVisibleUserstories(),promise=_this.repo.remove(us),promise.then(function(){return finish(),_this.loadBacklog()}),promise.then(null,function(){return finish(!1),_this.confirm.notify("error")})}}(this))},BacklogController.prototype.addNewUs=function(type){switch(type){case"standard":return this.rootscope.$broadcast("usform:new",this.scope.projectId,this.scope.project.default_us_status,this.scope.usStatusList);case"bulk":return this.rootscope.$broadcast("usform:bulk",this.scope.projectId,this.scope.project.default_us_status)}},BacklogController.prototype.addNewSprint=function(){return this.rootscope.$broadcast("sprintform:create",this.scope.projectId)},BacklogController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BacklogController",BacklogController),BacklogDirective=function($repo,$rootscope){var doomLineTemplate,link,linkDoomLine,linkFilters,linkToolbar,showHideFilter,showHideTags;return doomLineTemplate=_.template('
Project Scope [Doomline]
'),linkDoomLine=function($scope,$el){var addDoomLineDom,getUsItems,reloadDoomLine,removeDoomlineDom;return reloadDoomLine=function(){var current_sum,domElement,i,j,len,ref,results,stats,total_points,us;if(null!=$scope.stats){if(removeDoomlineDom(),stats=$scope.stats,total_points=stats.total_points,current_sum=stats.assigned_points,!$scope.visibleUserstories)return;for(ref=$scope.visibleUserstories,results=[],i=j=0,len=ref.length;len>j;i=++j){if(us=ref[i],current_sum+=us.total_points,current_sum>total_points){domElement=$el.find(".backlog-table-body .us-item-row")[i],addDoomLineDom(domElement);break}results.push(void 0)}return results}},removeDoomlineDom=function(){return $el.find(".doom-line").remove()},addDoomLineDom=function(element){return $(element).before(doomLineTemplate({}))},getUsItems=function(){var rowElements;return rowElements=$el.find(".backlog-table-body .us-item-row"),_.map(rowElements,function(x){return angular.element(x)})},$scope.$on("userstories:loaded",reloadDoomLine),$scope.$watch("stats",reloadDoomLine)},linkToolbar=function($scope,$el,$attrs,$ctrl){var moveToCurrentSprint;return moveToCurrentSprint=function(selectedUss){var extraPoints,totalExtraPoints,ussCurrent;return ussCurrent=_($scope.userstories),$scope.userstories=ussCurrent.without.apply(ussCurrent,selectedUss).value(),extraPoints=_.map(selectedUss,function(v){return v.total_points}),totalExtraPoints=_.reduce(extraPoints,function(acc,num){return acc+num}),$scope.sprints[0].user_stories=_.union($scope.sprints[0].user_stories,selectedUss),$scope.sprints[0].total_points+=totalExtraPoints,$ctrl.filterVisibleUserstories(),$repo.saveAll(selectedUss).then(function(){return $ctrl.loadSprints(),$ctrl.loadProjectStats()})},$el.on("change",".backlog-table-body .user-stories input:checkbox",function(event){var moveToCurrentSprintDom,selectedUsDom,target;return target=angular.element(event.currentTarget),moveToCurrentSprintDom=$el.find("#move-to-current-sprint"),selectedUsDom=$el.find(".backlog-table-body .user-stories input:checkbox:checked"),selectedUsDom.length>0&&$scope.sprints.length>0?moveToCurrentSprintDom.show():moveToCurrentSprintDom.hide(),target.closest(".us-item-row").toggleClass("ui-multisortable-multiple")}),$el.on("click","#move-to-current-sprint",function(){return function(){var ussDom,ussToMove;return ussDom=$el.find(".backlog-table-body .user-stories input:checkbox:checked"),ussToMove=_.map(ussDom,function(item){var itemScope;return item=$(item).closest(".tg-scope"),itemScope=item.scope(),itemScope.us.milestone=$scope.sprints[0].id,itemScope.us}),$scope.$apply(_.partial(moveToCurrentSprint,ussToMove))}}(this)),$el.on("click","#show-tags",function(event){return event.preventDefault(),$ctrl.toggleShowTags(),showHideTags($ctrl)})},showHideTags=function($ctrl){var elm;return elm=angular.element("#show-tags"),$ctrl.showTags?(elm.addClass("active"),elm.find(".text").text("Hide Tags")):(elm.removeClass("active"),elm.find(".text").text("Show Tags"))},showHideFilter=function($scope,$el,$ctrl){var sidebar,target;return sidebar=$el.find("sidebar.filters-bar"),sidebar.one("transitionend",function(){return timeout(150,function(){return $rootscope.$broadcast("resize"),$(".burndown").css("visibility","visible")})}),target=angular.element("#show-filters-button"),$(".burndown").css("visibility","hidden"),sidebar.toggleClass("active"),target.toggleClass("active"),toggleText(target.find(".text"),["Remove Filters","Show Filters"]),sidebar.hasClass("active")||$ctrl.resetFilters(),$ctrl.toggleActiveFilters()},linkFilters=function($scope,$el,$attrs,$ctrl){return $scope.filtersSearch={},$el.on("click","#show-filters-button",function(event){return event.preventDefault(),$scope.$apply(function(){return showHideFilter($scope,$el,$ctrl)})})},link=function($scope,$el,$attrs){var $ctrl,filters;return $ctrl=$el.controller(),linkToolbar($scope,$el,$attrs,$ctrl),linkFilters($scope,$el,$attrs,$ctrl),linkDoomLine($scope,$el,$attrs,$ctrl),$el.find(".backlog-table-body").disableSelection(),filters=$ctrl.getUrlFilters(),(filters.statuses||filters.tags||filters.q)&&showHideFilter($scope,$el,$ctrl),$scope.$on("showTags",function(){return showHideTags($ctrl)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklog",["$tgRepo","$rootScope",BacklogDirective]),UsRolePointsSelectorDirective=function($rootscope,$template){var link,selectionTemplate;return selectionTemplate=$template.get("backlog/us-role-points-popover.html",!0),link=function($scope,$el){return bindOnce($scope,"project",function(project){var numberOfRoles,roles;return roles=_.filter(project.roles,"computable"),numberOfRoles=_.size(roles),numberOfRoles>1?$el.append(selectionTemplate({roles:roles})):($el.find(".icon-arrow-bottom").remove(),$el.find(".header-points").addClass("not-clickable"))}),$scope.$on("uspoints:select",function(ctx,roleId,roleName){return $el.find(".popover").popover().close(),$el.find(".header-points").html(roleName+"/Total")}),$scope.$on("uspoints:clear-selection",function(){return $el.find(".popover").popover().close(),$el.find(".header-points").text("Points")}),$el.on("click",function(event){var target;return target=angular.element(event.target),(target.is("span")||target.is("div"))&&event.stopPropagation(),$el.find(".popover").popover().open()}),$el.on("click",".clear-selection",function(event){return event.preventDefault(),event.stopPropagation(),$rootscope.$broadcast("uspoints:clear-selection")}),$el.on("click",".role",function(event){var rolScope,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),rolScope=target.scope(),$rootscope.$broadcast("uspoints:select",target.data("role-id"),target.text())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUsRolePointsSelector",["$rootScope","$tgTemplate",UsRolePointsSelectorDirective]),UsPointsDirective=function($tgEstimationsService,$repo,$tgTemplate){var link,rolesTemplate;return rolesTemplate=$tgTemplate.get("common/estimation/us-points-roles-popover.html",!0),link=function($scope,$el,$attrs){var $ctrl,bindClickElements,estimationProcess,filteringRoleId,renderRolesSelector,selectedRoleId,updatingSelectedRoleId;return $ctrl=$el.controller(),updatingSelectedRoleId=null,selectedRoleId=null,filteringRoleId=null,estimationProcess=null,$scope.$on("uspoints:select",function(ctx,roleId){var us;return us=$scope.$eval($attrs.tgBacklogUsPoints),selectedRoleId=roleId,estimationProcess.render()}),$scope.$on("uspoints:clear-selection",function(){var us;return us=$scope.$eval($attrs.tgBacklogUsPoints),selectedRoleId=null,estimationProcess.render()}),$scope.$watch($attrs.tgBacklogUsPoints,function(us){var roles;return us?(estimationProcess=$tgEstimationsService.create($el,us,$scope.project),roles=estimationProcess.calculateRoles(),0===roles.length?($el.find(".icon-arrow-bottom").remove(),$el.find("a.us-points").addClass("not-clickable")):1===roles.length&&(selectedRoleId=_.keys(us.points)[0]),estimationProcess.isEditable&&bindClickElements(),estimationProcess.onSelectedPointForRole=function(roleId,pointId){return this.save(roleId,pointId).then(function(){return $ctrl.loadProjectStats()})},estimationProcess.render=function(){var ctx,html,mainTemplate,pointId,pointObj,template,text,title,totalPoints;return totalPoints=this.calculateTotalPoints(),null==selectedRoleId||1===roles.length?(text=totalPoints,title=totalPoints):(pointId=this.us.points[selectedRoleId],pointObj=this.pointsById[pointId],text=pointObj.name+" / "+totalPoints+"",title=pointObj.name+" / "+totalPoints),ctx={totalPoints:totalPoints,roles:this.calculateRoles(),editable:this.isEditable,text:text,title:title},mainTemplate="common/estimation/us-estimation-total.html",template=$tgTemplate.get(mainTemplate,!0),html=template(ctx),this.$el.html(html)},estimationProcess.render()):void 0}),renderRolesSelector=function(){var html,roles;return roles=estimationProcess.calculateRoles(),html=rolesTemplate({roles:roles}),$el.append(html),$el.find(".pop-role").popover().open(function(){return $(this).remove()})},bindClickElements=function(){return $el.on("click","a.us-points span",function(event){var us;return event.preventDefault(),event.stopPropagation(),us=$scope.$eval($attrs.tgBacklogUsPoints),updatingSelectedRoleId=selectedRoleId,null!=selectedRoleId?estimationProcess.renderPointsSelector(selectedRoleId):renderRolesSelector()}),$el.on("click",".role",function(event){var popRolesDom,target,us;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),us=$scope.$eval($attrs.tgBacklogUsPoints),updatingSelectedRoleId=target.data("role-id"),popRolesDom=$el.find(".pop-role"),popRolesDom.find("a").removeClass("active"),popRolesDom.find("a[data-role-id='"+updatingSelectedRoleId+"']").addClass("active"),estimationProcess.renderPointsSelector(updatingSelectedRoleId)})},$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogUsPoints",["$tgEstimationsService","$tgRepo","$tgTemplate",UsPointsDirective]),tgBacklogGraphDirective=function(){var link,redrawChart;return redrawChart=function(element,dataToDraw){var client_increment_line,colors,data,evolution_line,milestonesRange,optimal_line,options,results,team_increment_line,width,zero_line;return width=element.width(),element.height(width/6),milestonesRange=function(){results=[];for(var j=0,ref=dataToDraw.milestones.length-1;ref>=0?ref>=j:j>=ref;ref>=0?j++:j--)results.push(j);return results}.apply(this),data=[],zero_line=_.map(dataToDraw.milestones,function(){return 0}),data.push({data:_.zip(milestonesRange,zero_line),lines:{fillColor:"rgba(0,0,0,0)"},points:{show:!1}}),optimal_line=_.map(dataToDraw.milestones,function(ml){return ml.optimal}),data.push({data:_.zip(milestonesRange,optimal_line),lines:{fillColor:"rgba(120,120,120,0.2)"}}),evolution_line=_.filter(_.map(dataToDraw.milestones,function(ml){return ml.evolution}),function(evolution){return null!=evolution}),data.push({data:_.zip(milestonesRange,evolution_line),lines:{fillColor:"rgba(102,153,51,0.3)"}}),team_increment_line=_.map(dataToDraw.milestones,function(ml){return-ml["team-increment"]}),data.push({data:_.zip(milestonesRange,team_increment_line),lines:{fillColor:"rgba(153,51,51,0.3)"}}),client_increment_line=_.map(dataToDraw.milestones,function(ml){return-ml["team-increment"]-ml["client-increment"]}),data.push({data:_.zip(milestonesRange,client_increment_line),lines:{fillColor:"rgba(255,51,51,0.3)"}}),colors=["rgba(0,0,0,1)","rgba(120,120,120,0.2)","rgba(102,153,51,1)","rgba(153,51,51,1)","rgba(255,51,51,1)"],options={grid:{borderWidth:{top:0,right:1,left:0,bottom:0},borderColor:"#ccc",hoverable:!0},xaxis:{ticks:dataToDraw.milestones.length,axisLabel:"Sprints",axisLabelUseCanvas:!0,axisLabelFontSizePixels:14,axisLabelFontFamily:"Verdana, Arial, Helvetica, Tahoma, sans-serif",axisLabelPadding:15,tickFormatter:function(){return""}},series:{shadowSize:0,lines:{show:!0,fill:!0},points:{show:!0,fill:!0,radius:4,lineWidth:2}},colors:colors,tooltip:!0,tooltipOpts:{content:function(label,xval,yval,flotItem){return 1===flotItem.seriesIndex?"Optimal pending points for sprint "+xval+" should be "+yval:2===flotItem.seriesIndex?"Real pending points for sprint "+xval+" is "+yval:3===flotItem.seriesIndex?"Incremented points by team requirements for sprint "+xval+" is "+Math.abs(yval):"Incremented points by client requirements for sprint "+xval+" is "+Math.abs(yval)}}},element.empty(),element.plot(data,options).data("plot")},link=function($scope,$el){var element;return element=angular.element($el),$scope.$watch("stats",function(){return null!=$scope.stats?(redrawChart(element,$scope.stats),$scope.$on("resize",function(){return redrawChart(element,$scope.stats)})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgGmBacklogGraph",tgBacklogGraphDirective),TgBacklogProgressBarDirective=function($template){var adjustPercentaje,link,render,template;return template=$template.get("backlog/progress-bar.html",!0),render=function(el,projectPointsPercentaje,closedPointsPercentaje){return el.html(template({projectPointsPercentaje:projectPointsPercentaje,closedPointsPercentaje:closedPointsPercentaje}))},adjustPercentaje=function(percentage){var adjusted;return adjusted=_.max([0,percentage]),adjusted=_.min([100,adjusted]),Math.round(adjusted)},link=function($scope,$el,$attrs){var element;return element=angular.element($el),$scope.$watch($attrs.tgBacklogProgressBar,function(stats){var closedPoints,closedPointsPercentaje,definedPoints,projectPointsPercentaje,totalPoints;return null!=stats?(totalPoints=stats.total_points,definedPoints=stats.defined_points,closedPoints=stats.closed_points,definedPoints>totalPoints?(projectPointsPercentaje=100*totalPoints/definedPoints,closedPointsPercentaje=100*closedPoints/definedPoints):(projectPointsPercentaje=100,closedPointsPercentaje=100*closedPoints/totalPoints),projectPointsPercentaje=adjustPercentaje(projectPointsPercentaje-3),closedPointsPercentaje=adjustPercentaje(closedPointsPercentaje-3),render($el,projectPointsPercentaje,closedPointsPercentaje)):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogProgressBar",["$tgTemplate",TgBacklogProgressBarDirective])}.call(this),function(){var BacklogEmptySortableDirective,BacklogSortableDirective,SprintSortableDirective,bindOnce,deleteElement,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,module=angular.module("taigaBacklog"),deleteElement=function(el){return el.scope().$destroy(),el.off(),el.remove()},BacklogSortableDirective=function($repo,$rs,$rootscope,$tgConfirm){var link;return link=function($scope,$el){var getUsIndex;return getUsIndex=function(){return function(us){return $(us).index(".backlog-table-body .row")}}(this),bindOnce($scope,"project",function(project){var filterError;if(project.my_permissions.indexOf("modify_us")>-1)return filterError=function(){var text;return text=$translate.instant("BACKLOG.SORTABLE_FILTER_ERROR"),$tgConfirm.notify("error",text)},$el.sortable({items:".us-item-row",cancel:".popover",connectWith:".sprint",containment:".wrapper",dropOnEmpty:!0,placeholder:"row us-item-row us-item-drag sortable-placeholder",scroll:!0,tolerance:"pointer",revert:!1,cursorAt:{right:15},stop:function(){return $el.hasClass("active-filters")?($el.sortable("cancel"),filterError()):void 0}}),$el.on("multiplesortreceive",function(event,ui){var itemIndex,itemUs;return $el.hasClass("active-filters")?(ui.source.sortable("cancel"),void filterError()):(itemUs=ui.item.scope().us,itemIndex=getUsIndex(ui.item),deleteElement(ui.item),$scope.$emit("sprint:us:move",[itemUs],itemIndex,null),ui.item.find("a").removeClass("noclick"))}),$el.on("multiplesortstop",function(event,ui){var index,items,us;if(0!==$(ui.items[0]).parent().length&&!$el.hasClass("active-filters"))return items=_.sortBy(ui.items,function(item){return $(item).index()}),index=_.min(_.map(items,function(item){return getUsIndex(item)})),us=_.map(items,function(item){var itemUs;return item=$(item),itemUs=item.scope().us,setTimeout(function(){return function(){return item.find("a").removeClass("noclick")}}(this),300),itemUs}),$scope.$emit("sprint:us:move",us,index,null)}),$el.on("sortstart",function(event,ui){return ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},BacklogEmptySortableDirective=function(){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?($el.sortable({dropOnEmpty:!0}),$el.on("sortreceive",function(event,ui){var itemIndex,itemUs;return itemUs=ui.item.scope().us,itemIndex=ui.item.index(),deleteElement(ui.item),$scope.$emit("sprint:us:move",[itemUs],itemIndex,null),ui.item.find("a").removeClass("noclick")})):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},SprintSortableDirective=function(){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?($el.sortable({scroll:!0,dropOnEmpty:!0,items:".sprint-table .milestone-us-item-row",connectWith:".sprint,.backlog-table-body,.empty-backlog"}),$el.on("multiplesortreceive",function(event,ui){var index,items,us;return items=_.sortBy(ui.items,function(item){return $(item).index()}),index=_.min(_.map(items,function(item){return $(item).index()})),us=_.map(items,function(item){var itemUs;return item=$(item),itemUs=item.scope().us,deleteElement(item),itemUs}),$scope.$emit("sprint:us:move",us,index,$scope.sprint.id)}),$el.on("multiplesortstop",function(event,ui){var itemIndex,itemUs;if(0!==ui.item.parent().length)return itemUs=ui.item.scope().us,itemIndex=ui.item.index(),setTimeout(function(){return function(){return ui.item.find("a").removeClass("noclick")}}(this),300),$scope.$emit("sprint:us:move",[itemUs],itemIndex,$scope.sprint.id) +}),$el.on("sortstart",function(event,ui){return ui.item.find("a").addClass("noclick")})):void 0})},{link:link}},module.directive("tgBacklogSortable",["$tgRepo","$tgResources","$rootScope","$tgConfirm",BacklogSortableDirective]),module.directive("tgBacklogEmptySortable",["$tgRepo","$tgResources","$rootScope",BacklogEmptySortableDirective]),module.directive("tgSprintSortable",["$tgRepo","$tgResources","$rootScope",SprintSortableDirective])}.call(this),function(){var BacklogSprintDirective,BacklogSprintHeaderDirective,ToggleExcludeClosedSprintsVisualization,module,taiga;taiga=this.taiga,module=angular.module("taigaBacklog"),BacklogSprintDirective=function($repo,$rootscope){var link,refreshSprintTableHeight,slideOptions,sprintTableMinHeight,toggleSprint;return sprintTableMinHeight=50,slideOptions={duration:500,easing:"linear"},refreshSprintTableHeight=function(){return function(sprintTable){return sprintTable.find(".row").length?sprintTable.css("height","auto"):sprintTable.css("height",sprintTableMinHeight)}}(this),toggleSprint=function(){return function($el){var sprintArrow,sprintTable;return sprintTable=$el.find(".sprint-table"),sprintArrow=$el.find(".icon-arrow-up"),sprintArrow.toggleClass("active"),sprintTable.toggleClass("open"),refreshSprintTableHeight(sprintTable)}}(this),link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBacklogSprint,function(sprint){return sprint=$scope.$eval($attrs.tgBacklogSprint),sprint.closed?$el.addClass("sprint-closed"):toggleSprint($el)}),$el.on("click",".sprint-name > .icon-arrow-up",function(event){return event.preventDefault(),toggleSprint($el),$el.find(".sprint-table").slideToggle(slideOptions)}),$el.on("click",".sprint-name > .icon-edit",function(event){var sprint;return event.preventDefault(),sprint=$scope.$eval($attrs.tgBacklogSprint),$rootscope.$broadcast("sprintform:edit",sprint)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgBacklogSprint",["$tgRepo","$rootScope",BacklogSprintDirective]),BacklogSprintHeaderDirective=function($navUrls,$template){var link,template;return template=$template.get("backlog/sprint-header.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,isVisible,render;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_milestone")},isVisible=function(){return-1!==$scope.project.my_permissions.indexOf("view_milestones")},render=function(sprint){var ctx,estimatedDateRange,finish,start,taskboardUrl;return taskboardUrl=$navUrls.resolve("project-taskboard",{project:$scope.project.slug,sprint:sprint.slug}),start=moment(sprint.estimated_start).format("DD MMM YYYY"),finish=moment(sprint.estimated_finish).format("DD MMM YYYY"),estimatedDateRange=start+"-"+finish,ctx={name:sprint.name,taskboardUrl:taskboardUrl,estimatedDateRange:estimatedDateRange,closedPoints:sprint.closed_points||0,totalPoints:sprint.total_points||0,isVisible:isVisible(),isEditable:isEditable()},$el.html(template(ctx))},$scope.$watch($attrs.ngModel,function(sprint){return render(sprint)}),$scope.$on("sprintform:edit:success",function(){return render($model.$modelValue)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgBacklogSprintHeader",["$tgNavUrls","$tgTemplate",BacklogSprintHeaderDirective]),ToggleExcludeClosedSprintsVisualization=function($rootscope,$loading){var excludeClosedSprints,link;return excludeClosedSprints=!0,link=function($scope,$el){var loadingElm;return loadingElm=$("
"),$el.after(loadingElm),$el.on("click",function(event){return event.preventDefault(),excludeClosedSprints=!excludeClosedSprints,$loading.start(loadingElm),$rootscope.$broadcast(excludeClosedSprints?"backlog:unload-closed-sprints":"backlog:load-closed-sprints")}),$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("closed-sprints:reloaded",function(){return function(ctx,sprints){var text;return $loading.finish(loadingElm),text=sprints.length>0?"Hide closed sprints":"Show closed sprints",$el.find(".text").text(text)}}(this))},{link:link}},module.directive("tgBacklogToggleClosedSprintsVisualization",["$rootScope","$tgLoading",ToggleExcludeClosedSprintsVisualization])}.call(this),function(){var SprintGraphDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,module=angular.module("taigaTaskboard"),SprintGraphDirective=function(){var link,redrawChart;return redrawChart=function(element,dataToDraw){var data,days,options,width;return width=element.width(),element.height(240),days=_.map(dataToDraw,function(x){return moment(x.day)}),data=[],data.unshift({data:_.zip(days,_.map(dataToDraw,function(d){return d.optimal_points})),lines:{fillColor:"rgba(120,120,120,0.2)"}}),data.unshift({data:_.zip(days,_.map(dataToDraw,function(d){return d.open_points})),lines:{fillColor:"rgba(102,153,51,0.3)"}}),options={grid:{borderWidth:{top:0,right:1,left:0,bottom:0},borderColor:"#ccc",hoverable:!0},xaxis:{tickSize:[1,"day"],min:days[0],max:_.last(days),mode:"time",daysNames:days,axisLabel:"Day",axisLabelUseCanvas:!0,axisLabelFontSizePixels:12,axisLabelFontFamily:"Verdana, Arial, Helvetica, Tahoma, sans-serif",axisLabelPadding:5},yaxis:{min:0},series:{shadowSize:0,lines:{show:!0,fill:!0},points:{show:!0,fill:!0,radius:4,lineWidth:2}},colors:["rgba(102,153,51,1)","rgba(120,120,120,0.2)"],tooltip:!0,tooltipOpts:{content:function(label,xval,yval,flotItem){var formattedDate,roundedValue;return formattedDate=moment(xval).format("DD MMM"),roundedValue=Math.round(yval),1===flotItem.seriesIndex?"Optimal pending points for day "+formattedDate+" should be "+roundedValue:"Real pending points for day "+formattedDate+" is "+roundedValue}}},element.empty(),element.plot(data,options).data("plot")},link=function($scope,$el){var element;return element=angular.element($el),$scope.$on("resize",function(){return $scope.stats?redrawChart(element,$scope.stats.days):void 0}),$scope.$on("taskboard:graph:toggle-visibility",function(){return $el.parent().toggleClass("open"),timeout(100,function(){return $scope.stats?redrawChart(element,$scope.stats.days):void 0})}),$scope.$watch("stats",function(){return null!=$scope.stats?redrawChart(element,$scope.stats.days):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgSprintGraph",SprintGraphDirective)}.call(this),function(){var CreateBulkTasksDirective,CreateEditTaskDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,CreateEditTaskDirective=function($repo,$model,$rs,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.isNew=!0,$scope.$on("taskform:new",function(ctx,sprintId,usId){return $scope.task={project:$scope.projectId,milestone:sprintId,user_story:usId,is_archived:!1,status:$scope.project.default_task_status,assigned_to:null,tags:[]},$scope.isNew=!0,$el.find(".button-green").html("Create"),$el.find(".title").html("New task "),$el.find(".tag-input").val(""),lightboxService.open($el)}),$scope.$on("taskform:edit",function(ctx,task){return $scope.task=task,$scope.isNew=!1,$el.find(".button-green").html("Save"),$el.find(".title").html("Edit task "),$el.find(".tag-input").val(""),lightboxService.open($el)}),submitButton=$el.find(".submit-button"),submit=debounce(2e3,function(){return function(event){var broadcastEvent,form,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($scope.isNew?(promise=$repo.create("tasks",$scope.task),broadcastEvent="taskform:new:success"):(promise=$repo.save($scope.task),broadcastEvent="taskform:edit:success"),$loading.start(submitButton),promise.then(function(data){return $loading.finish(submitButton),lightboxService.close($el),$rootscope.$broadcast(broadcastEvent,data)})):void 0}}(this)),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},CreateBulkTasksDirective=function($repo,$rs,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.form={data:"",usId:null},submit=debounce(2e3,function(){return function(event){var data,form,projectId,promise,sprintId,usId;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),data=$scope.form.data,projectId=$scope.projectId,sprintId=$scope.form.sprintId,usId=$scope.form.usId,promise=$rs.tasks.bulkCreate(projectId,sprintId,usId,data),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("taskform:bulk:success",result),lightboxService.close($el)}),promise.then(null,function(){return $loading.finish(submitButton),console.log("FAIL")})):void 0}}(this)),$scope.$on("taskform:bulk",function(ctx,sprintId,usId){return lightboxService.open($el),$scope.form={data:"",sprintId:sprintId,usId:usId}}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaTaskboard"),module.directive("tgLbCreateEditTask",["$tgRepo","$tgModel","$tgResources","$rootScope","$tgLoading","lightboxService",CreateEditTaskDirective]),module.directive("tgLbCreateBulkTasks",["$tgRepo","$tgResources","$rootScope","$tgLoading","lightboxService",CreateBulkTasksDirective])}.call(this),function(){var TaskboardController,TaskboardDirective,TaskboardSquishColumnDirective,TaskboardTaskDirective,TaskboardUserDirective,bindMethods,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,toggleText=this.taiga.toggleText,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,scopeDefer=this.taiga.scopeDefer,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaTaskboard"),TaskboardController=function(superClass){function TaskboardController(scope,rootscope,repo,confirm,rs1,params1,q,appTitle,location,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs1,this.params=params1,this.q=q,this.appTitle=appTitle,this.location=location,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Taskboard",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Taskboard - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TaskboardController,superClass),TaskboardController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$appTitle","$tgLocation","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],TaskboardController.prototype.initializeEventHandlers=function(){return this.scope.$on("taskform:bulk:success",function(_this){return function(){return _this.loadTaskboard(),_this.analytics.trackEvent("task","create","bulk create task on taskboard",1)}}(this)),this.scope.$on("taskform:new:success",function(_this){return function(){return _this.loadTaskboard(),_this.analytics.trackEvent("task","create","create task on taskboard",1)}}(this)),this.scope.$on("taskform:edit:success",function(_this){return function(){return _this.loadTaskboard()}}(this)),this.scope.$on("taskboard:task:move",this.taskMove),this.scope.$on("assigned-to:added",function(_this){return function(ctx,userId,task){var promise;return task.assigned_to=userId,promise=_this.repo.save(task),promise.then(null,function(){return console.log("FAIL")})}}(this))},TaskboardController.prototype.initializeSubscription=function(){var routingKey,routingKey1;return routingKey="changes.project."+this.scope.projectId+".tasks",this.events.subscribe(this.scope,routingKey,function(_this){return function(){return _this.loadTaskboard()}}(this)),routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.refreshTagsColors(),_this.loadSprintStats(),_this.loadSprint()}}(this))},TaskboardController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.is_backlog_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(e){return e.id}),_this.scope.roleById=groupBy(project.roles,function(e){return e.id}),_this.scope.taskStatusList=_.sortBy(project.task_statuses,"order"),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.scope.usStatusById=groupBy(project.us_statuses,function(e){return e.id}),_this.scope.$emit("project:loaded",project),_this.fillUsersAndRoles(project.users,project.roles),project}}(this))},TaskboardController.prototype.loadSprintStats=function(){return this.rs.sprints.stats(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(stats){var completedPointsSum,remainingPointsSum,remainingTasks,totalPointsSum;return totalPointsSum=_.reduce(_.values(stats.total_points),function(res,n){return res+n},0),completedPointsSum=_.reduce(_.values(stats.completed_points),function(res,n){return res+n},0),remainingPointsSum=totalPointsSum-completedPointsSum,remainingTasks=stats.total_tasks-stats.completed_tasks,_this.scope.stats=stats,_this.scope.stats.totalPointsSum=totalPointsSum,_this.scope.stats.completedPointsSum=completedPointsSum,_this.scope.stats.remainingPointsSum=remainingPointsSum,_this.scope.stats.remainingTasks=remainingTasks,_this.scope.stats.completedPercentage=stats.totalPointsSum?Math.round(100*stats.completedPointsSum/stats.totalPointsSum):0,_this.scope.stats.openTasks=stats.total_tasks-stats.completed_tasks,stats}}(this))},TaskboardController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},TaskboardController.prototype.loadSprint=function(){return this.rs.sprints.get(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,_this.scope.userstories=_.sortBy(sprint.user_stories,"sprint_order"),sprint}}(this))},TaskboardController.prototype.loadTasks=function(){return this.rs.tasks.list(this.scope.projectId,this.scope.sprintId).then(function(_this){return function(tasks){var i,j,k,len,len1,len2,ref,ref1,ref2,status,task,us;for(_this.scope.tasks=_.sortBy(tasks,"taskboard_order"),_this.scope.usTasks={},ref=_.union(_this.scope.userstories,[{id:null}]),i=0,len=ref.length;len>i;i++)for(us=ref[i],_this.scope.usTasks[us.id]={},ref1=_this.scope.taskStatusList,j=0,len1=ref1.length;len1>j;j++)status=ref1[j],_this.scope.usTasks[us.id][status.id]=[];for(ref2=_this.scope.tasks,k=0,len2=ref2.length;len2>k;k++)task=ref2[k],null!=_this.scope.usTasks[task.user_story]&&null!=_this.scope.usTasks[task.user_story][task.status]&&_this.scope.usTasks[task.user_story][task.status].push(task);return tasks}}(this))},TaskboardController.prototype.loadTaskboard=function(){return this.q.all([this.refreshTagsColors(),this.loadSprintStats(),this.loadSprint().then(function(_this){return function(){return _this.loadTasks()}}(this))])},TaskboardController.prototype.loadInitialData=function(){var params,promise;return params={pslug:this.params.pslug,sslug:this.params.sslug},promise=this.repo.resolve(params).then(function(_this){return function(data){return _this.scope.projectId=data.project,_this.scope.sprintId=data.milestone,_this.initializeSubscription(),data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadTaskboard()}}(this))},TaskboardController.prototype.refreshTasksOrder=function(tasks){var data,items;return items=this.resortTasks(tasks),data=this.prepareBulkUpdateData(items),this.rs.tasks.bulkUpdateTaskTaskboardOrder(this.scope.project.id,data)},TaskboardController.prototype.resortTasks=function(tasks){var i,index,item,items,len;for(items=[],index=i=0,len=tasks.length;len>i;index=++i)item=tasks[index],item.taskboard_order=index,item.isModified()&&items.push(item);return items},TaskboardController.prototype.prepareBulkUpdateData=function(uses){return _.map(uses,function(x){return{task_id:x.id,order:x.taskboard_order}})},TaskboardController.prototype.taskMove=function(ctx,task,usId,statusId,order){var promise,r,tasks;return r=this.scope.usTasks[task.user_story][task.status].indexOf(task),this.scope.usTasks[task.user_story][task.status].splice(r,1),tasks=this.scope.usTasks[usId][statusId],tasks.splice(order,0,task),task.user_story=usId,task.status=statusId,task.taskboard_order=order,promise=this.repo.save(task),this.rootscope.$broadcast("sprint:task:moved",task),promise.then(function(_this){return function(){return _this.refreshTasksOrder(tasks),_this.loadSprintStats()}}(this)),promise.then(null,function(){return function(){return console.log("FAIL TASK SAVE")}}(this))},TaskboardController.prototype.addNewTask=function(type,us){switch(type){case"standard":return this.rootscope.$broadcast("taskform:new",this.scope.sprintId,null!=us?us.id:void 0);case"bulk":return this.rootscope.$broadcast("taskform:bulk",this.scope.sprintId,null!=us?us.id:void 0)}},TaskboardController.prototype.editTaskAssignedTo=function(task){return this.rootscope.$broadcast("assigned-to:add",task)},TaskboardController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TaskboardController",TaskboardController),TaskboardDirective=function($rootscope){var link;return link=function($scope,$el){var $ctrl,tableBodyDom;return $ctrl=$el.controller(),$el.on("click",".toggle-analytics-visibility",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.toggleClass("active"),$rootscope.$broadcast("taskboard:graph:toggle-visibility")}),tableBodyDom=$el.find(".taskboard-table-body"),tableBodyDom.on("scroll",function(event){var tableHeaderDom,target;return target=angular.element(event.currentTarget),tableHeaderDom=$el.find(".taskboard-table-header .taskboard-table-inner"),tableHeaderDom.css("left",-1*target.scrollLeft())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgTaskboard",["$rootScope",TaskboardDirective]),TaskboardTaskDirective=function($rootscope){var link;return link=function($scope,$el){return $el.disableSelection(),$scope.$watch("task",function(task){return task.is_blocked&&!$el.hasClass("blocked")?$el.addClass("blocked"):!task.is_blocked&&$el.hasClass("blocked")?$el.removeClass("blocked"):void 0}),$el.find(".icon-edit").on("click",function(){return $el.find(".icon-edit").hasClass("noclick")?void 0:$scope.$apply(function(){return $rootscope.$broadcast("taskform:edit",$scope.task)})})},{link:link}},module.directive("tgTaskboardTask",["$rootScope",TaskboardTaskDirective]),TaskboardSquishColumnDirective=function(rs){var avatarWidth,link,maxColumnWidth;return avatarWidth=40,maxColumnWidth=300,link=function($scope,$el){var getCeilWidth,recalculateStatusColumnWidth,recalculateTaskboardWidth,refreshTaskboardTableWidth,setStatusColumnWidth;return $scope.$on("sprint:task:moved",function(){return function(){return recalculateTaskboardWidth()}}(this)),bindOnce($scope,"usTasks",function(){return $scope.statusesFolded=rs.tasks.getStatusColumnModes($scope.project.id),$scope.usFolded=rs.tasks.getUsRowModes($scope.project.id,$scope.sprintId),recalculateTaskboardWidth()}),$scope.foldStatus=function(status){return $scope.statusesFolded[status.id]=!$scope.statusesFolded[status.id],rs.tasks.storeStatusColumnModes($scope.projectId,$scope.statusesFolded),recalculateTaskboardWidth()},$scope.foldUs=function(us){return us?$scope.usFolded[us.id]=!$scope.usFolded[us.id]:$scope.usFolded[null]=!$scope.usFolded[null],rs.tasks.storeUsRowModes($scope.projectId,$scope.sprintId,$scope.usFolded),recalculateTaskboardWidth()},getCeilWidth=function(){return function(usId,statusId){var tasks,tasksMatrixSize,width;return tasks=$scope.usTasks[usId][statusId].length,$scope.statusesFolded[statusId]?(tasks&&$scope.usFolded[usId]?(tasksMatrixSize=Math.round(Math.sqrt(tasks)),width=avatarWidth*tasksMatrixSize):width=avatarWidth,width):0}}(this),setStatusColumnWidth=function(){return function(statusId,width){var column;return column=$el.find(".squish-status-"+statusId),width?column.css("max-width",width):column.css("max-width",maxColumnWidth)}}(this),refreshTaskboardTableWidth=function(){return function(){var columnWidths,columns,totalWidth;return columnWidths=[],columns=$el.find(".task-colum-name"),columnWidths=_.map(columns,function(column){return $(column).outerWidth(!0)}),totalWidth=_.reduce(columnWidths,function(total,width){return total+width}),$el.find(".taskboard-table-inner").css("width",totalWidth)}}(this),recalculateStatusColumnWidth=function(){return function(statusId){var statusFoldedWidth;return statusFoldedWidth=getCeilWidth(null,statusId),_.forEach($scope.userstories,function(us){var width;return width=getCeilWidth(us.id,statusId),width>statusFoldedWidth?statusFoldedWidth=width:void 0}),setStatusColumnWidth(statusId,statusFoldedWidth)}}(this),recalculateTaskboardWidth=function(){return function(){_.forEach($scope.taskStatusList,function(status){return recalculateStatusColumnWidth(status.id)}),refreshTaskboardTableWidth()}}(this)},{link:link}},module.directive("tgTaskboardSquishColumn",["$tgResources",TaskboardSquishColumnDirective]),TaskboardUserDirective=function(){var clickable,link;return clickable=!1,link=function($scope,$el){var username_label;return username_label=$el.parent().find("a.task-assigned"),username_label.addClass("not-clickable"),$scope.$watch("task.assigned_to",function(assigned_to){var user;return user=$scope.usersById[assigned_to],void 0===user?_.assign($scope,{name:"Unassigned",imgurl:"/images/unnamed.png",clickable:clickable}):_.assign($scope,{name:user.full_name_display,imgurl:user.photo,clickable:clickable}),username_label.text($scope.name)}),bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_task")>-1?(clickable=!0,$el.find(".avatar-assigned-to").on("click",function(){return function(){var $ctrl;if(!$el.find("a").hasClass("noclick"))return $ctrl=$el.controller(),$ctrl.editTaskAssignedTo($scope.task)}}(this)),username_label.removeClass("not-clickable"),username_label.on("click",function(){var $ctrl;if(!$el.find("a").hasClass("noclick"))return $ctrl=$el.controller(),$ctrl.editTaskAssignedTo($scope.task)})):void 0})},{link:link,templateUrl:"taskboard/taskboard-user.html",scope:{usersById:"=users",project:"=",task:"="}}},module.directive("tgTaskboardUserAvatar",["$log",TaskboardUserDirective])}.call(this),function(){var TaskboardSortableDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,module=angular.module("taigaBacklog"),TaskboardSortableDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){var deleteElement,itemEl,newParentScope,oldParentScope,tdom;if(project.my_permissions.indexOf("modify_us")>-1)return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el,deleteElement=function(itemEl){return itemEl.scope().$destroy(),itemEl.off(),itemEl.remove()},tdom.sortable({handle:".taskboard-task-inner",dropOnEmpty:!0,connectWith:".taskboard-tasks-box",revert:400}),tdom.on("sortstop",function(event,ui){var itemIndex,itemTask,newStatusId,newUsId,oldStatusId,oldUsId,parentEl;return parentEl=ui.item.parent(),itemEl=ui.item,itemTask=itemEl.scope().task,itemIndex=itemEl.index(),newParentScope=parentEl.scope(),oldUsId=oldParentScope.us?oldParentScope.us.id:null,oldStatusId=oldParentScope.st.id,newUsId=newParentScope.us?newParentScope.us.id:null,newStatusId=newParentScope.st.id,(newStatusId!==oldStatusId||newUsId!==oldUsId)&&deleteElement(itemEl),$scope.$apply(function(){return $rootscope.$broadcast("taskboard:task:move",itemTask,newUsId,newStatusId,itemIndex)}),ui.item.find("a").removeClass("noclick")}),tdom.on("sortstart",function(event,ui){return oldParentScope=ui.item.parent().scope(),ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgTaskboardSortable",["$tgRepo","$tgResources","$rootScope",TaskboardSortableDirective])}.call(this),function(){var KanbanArchivedStatusHeaderDirective,KanbanArchivedStatusIntroDirective,KanbanController,KanbanDirective,KanbanSquishColumnDirective,KanbanUserDirective,KanbanUserstoryDirective,KanbanWipLimitDirective,bindMethods,bindOnce,defaultViewMode,defaultViewModes,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,bindMethods=this.taiga.bindMethods,module=angular.module("taigaKanban"),defaultViewMode="maximized",defaultViewModes={maximized:{cardClass:"kanban-task-maximized"},minimized:{cardClass:"kanban-task-minimized"}},KanbanController=function(superClass){function KanbanController(scope,rootscope,repo,confirm,rs1,params1,q,location,appTitle,navUrls,events,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs1,this.params=params1,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,bindMethods(this),this.scope.sectionName="Kanban",this.scope.statusViewModes={},this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Kanban - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(KanbanController,superClass),KanbanController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],KanbanController.prototype.initializeEventHandlers=function(){return this.scope.$on("usform:new:success",function(_this){return function(){return _this.loadUserstories(),_this.refreshTagsColors(),_this.analytics.trackEvent("userstory","create","create userstory on kanban",1)}}(this)),this.scope.$on("usform:bulk:success",function(_this){return function(){return _this.loadUserstories(),_this.analytics.trackEvent("userstory","create","bulk create userstory on kanban",1)}}(this)),this.scope.$on("usform:edit:success",function(_this){return function(){return _this.loadUserstories(),_this.refreshTagsColors()}}(this)),this.scope.$on("assigned-to:added",this.onAssignedToChanged),this.scope.$on("kanban:us:move",this.moveUs),this.scope.$on("kanban:show-userstories-for-status",this.loadUserStoriesForStatus),this.scope.$on("kanban:hide-userstories-for-status",this.hideUserStoriesForStatus)},KanbanController.prototype.addNewUs=function(type,statusId){switch(type){case"standard":return this.rootscope.$broadcast("usform:new",this.scope.projectId,statusId,this.scope.usStatusList);case"bulk":return this.rootscope.$broadcast("usform:bulk",this.scope.projectId,statusId)}},KanbanController.prototype.changeUsAssignedTo=function(us){return this.rootscope.$broadcast("assigned-to:add",us)},KanbanController.prototype.onAssignedToChanged=function(ctx,userid,us){var promise;return us.assigned_to=userid,promise=this.repo.save(us),promise.then(null,function(){return console.log("FAIL")})},KanbanController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},KanbanController.prototype.loadUserstories=function(){var params;return params={status__is_archived:!1},this.rs.userstories.listAll(this.scope.projectId,params).then(function(_this){return function(userstories){var i,j,k,len,len1,len2,ref,ref1,ref2,status,us,usByStatus,us_archived;for(_this.scope.userstories=userstories,usByStatus=_.groupBy(userstories,"status"),us_archived=[],ref=_this.scope.usStatusList,i=0,len=ref.length;len>i;i++){if(status=ref[i],null==usByStatus[status.id]&&(usByStatus[status.id]=[]),null!=_this.scope.usByStatus)for(ref1=_this.scope.usByStatus[status.id],j=0,len1=ref1.length;len1>j;j++)us=ref1[j],us.status!==status.id&&us_archived.push(us);if(status.is_archived&&null!=_this.scope.usByStatus&&0!==_this.scope.usByStatus[status.id].length)for(ref2=_this.scope.usByStatus[status.id].concat(us_archived),k=0,len2=ref2.length;len2>k;k++)us=ref2[k],us.status===status.id&&usByStatus[status.id].push(us);usByStatus[status.id]=_.sortBy(usByStatus[status.id],"kanban_order")}return _this.scope.usByStatus=usByStatus,scopeDefer(_this.scope,function(){return _this.scope.$broadcast("userstories:loaded",userstories)}),userstories}}(this))},KanbanController.prototype.loadUserStoriesForStatus=function(ctx,statusId){var params;return params={status:statusId},this.rs.userstories.listAll(this.scope.projectId,params).then(function(_this){return function(userstories){return _this.scope.usByStatus[statusId]=_.sortBy(userstories,"kanban_order"),_this.scope.$broadcast("kanban:shown-userstories-for-status",statusId,userstories),userstories}}(this))},KanbanController.prototype.hideUserStoriesForStatus=function(ctx,statusId){return this.scope.usByStatus[statusId]=[],this.scope.$broadcast("kanban:hidden-userstories-for-status",statusId)},KanbanController.prototype.loadKanban=function(){return this.q.all([this.refreshTagsColors(),this.loadUserstories()])},KanbanController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_kanban_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.projectId=project.id,_this.scope.points=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(x){return x.id}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.generateStatusViewModes(),_this.scope.$emit("project:loaded",project),project}}(this))},KanbanController.prototype.initializeSubscription=function(){var routingKey1;return routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(){return _this.loadUserstories()}}(this))},KanbanController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription(),_this.loadKanban().then(function(){return _this.scope.$broadcast("redraw:wip") +})}}(this))},KanbanController.prototype.generateStatusViewModes=function(){var i,len,mode,ref,status,storedStatusViewModes;for(storedStatusViewModes=this.rs.kanban.getStatusViewModes(this.scope.projectId),this.scope.statusViewModes={},ref=this.scope.usStatusList,i=0,len=ref.length;len>i;i++)status=ref[i],mode=storedStatusViewModes[status.id],this.scope.statusViewModes[status.id]=_.has(defaultViewModes,mode)?mode:defaultViewMode;return this.storeStatusViewModes()},KanbanController.prototype.storeStatusViewModes=function(){return this.rs.kanban.storeStatusViewModes(this.scope.projectId,this.scope.statusViewModes)},KanbanController.prototype.updateStatusViewMode=function(statusId,newViewMode){return this.scope.statusViewModes[statusId]=newViewMode,this.storeStatusViewModes()},KanbanController.prototype.getCardClass=function(statusId){var mode;return mode=this.scope.statusViewModes[statusId]||defaultViewMode,defaultViewModes[mode].cardClass||defaultViewModes[defaultViewMode].cardClass},KanbanController.prototype.prepareBulkUpdateData=function(uses,field){return null==field&&(field="kanban_order"),_.map(uses,function(x){return{us_id:x.id,order:x[field]}})},KanbanController.prototype.resortUserStories=function(uses){var i,index,item,items,len;for(items=[],index=i=0,len=uses.length;len>i;index=++i)item=uses[index],item.kanban_order=index,item.isModified()&&items.push(item);return items},KanbanController.prototype.moveUs=function(ctx,us,oldStatusId,newStatusId,index){var itemsToSave,promise,r;return oldStatusId!==newStatusId?(r=this.scope.usByStatus[oldStatusId].indexOf(us),this.scope.usByStatus[oldStatusId].splice(r,1),this.scope.usByStatus[newStatusId].splice(index,0,us),us.status=newStatusId):(r=this.scope.usByStatus[newStatusId].indexOf(us),this.scope.usByStatus[newStatusId].splice(r,1),this.scope.usByStatus[newStatusId].splice(index,0,us)),itemsToSave=this.resortUserStories(this.scope.usByStatus[newStatusId]),this.scope.usByStatus[newStatusId]=_.sortBy(this.scope.usByStatus[newStatusId],"kanban_order"),promise=this.repo.save(us),promise=promise.then(function(_this){return function(){var data;return itemsToSave=_.reject(itemsToSave,{id:us.id}),data=_this.prepareBulkUpdateData(itemsToSave),_this.rs.userstories.bulkUpdateKanbanOrder(us.project,data).then(function(){return itemsToSave})}}(this))},KanbanController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("KanbanController",KanbanController),KanbanDirective=function(){var link;return link=function($scope,$el){var tableBodyDom;return tableBodyDom=$el.find(".kanban-table-body"),tableBodyDom.on("scroll",function(event){var tableHeaderDom,target;return target=angular.element(event.currentTarget),tableHeaderDom=$el.find(".kanban-table-header .kanban-table-inner"),tableHeaderDom.css("left",-1*target.scrollLeft())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanban",["$tgRepo","$rootScope",KanbanDirective]),KanbanArchivedStatusHeaderDirective=function($rootscope){var hideArchivedText,link,showArchivedText;return showArchivedText="Show archived",hideArchivedText="Hide archived",link=function($scope,$el,$attrs){var hidden,status;return status=$scope.$eval($attrs.tgKanbanArchivedStatusHeader),hidden=!0,$scope["class"]="icon icon-open-eye",$scope.title=showArchivedText,$el.on("click",function(){return hidden=!hidden,$scope.$apply(function(){return hidden?($scope["class"]="icon icon-open-eye",$scope.title=showArchivedText,$rootscope.$broadcast("kanban:hide-userstories-for-status",status.id)):($scope["class"]="icon icon-closed-eye",$scope.title=hideArchivedText,$rootscope.$broadcast("kanban:show-userstories-for-status",status.id))})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanArchivedStatusHeader",["$rootScope",KanbanArchivedStatusHeaderDirective]),KanbanArchivedStatusIntroDirective=function(){var hiddenUserStoriexText,link,userStories;return hiddenUserStoriexText="The user stories in this status are hidden by default",userStories=[],link=function($scope,$el,$attrs){var status,updateIntroText;return status=$scope.$eval($attrs.tgKanbanArchivedStatusIntro),$el.text(hiddenUserStoriexText),updateIntroText=function(){return $el.text(userStories.length>0?"":hiddenUserStoriexText)},$scope.$on("kanban:us:move",function(ctx,itemUs,oldStatusId,newStatusId,itemIndex){var r;return status.id===newStatusId?status.id===oldStatusId?(r=userStories.indexOf(itemUs),userStories.splice(r,1),userStories.splice(itemIndex,0,itemUs)):(itemUs.isArchived=!0,userStories.splice(itemIndex,0,itemUs)):status.id===oldStatusId&&(itemUs.isArchived=!1,r=userStories.indexOf(itemUs),userStories.splice(r,1)),updateIntroText()}),$scope.$on("kanban:shown-userstories-for-status",function(ctx,statusId,userStoriesLoaded){return statusId===status.id?(userStories=_.filter(userStoriesLoaded,function(us){return us.status===status.id}),updateIntroText()):void 0}),$scope.$on("kanban:hidden-userstories-for-status",function(ctx,statusId){return statusId===status.id?(userStories=[],updateIntroText()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanArchivedStatusIntro",KanbanArchivedStatusIntroDirective),KanbanUserstoryDirective=function($rootscope){var link;return link=function($scope,$el,$attrs,$model){return $el.disableSelection(),$scope.$watch("us",function(us){return us.is_blocked&&!$el.hasClass("blocked")?$el.addClass("blocked"):!us.is_blocked&&$el.hasClass("blocked")?$el.removeClass("blocked"):void 0}),$el.find(".icon-edit").on("click",function(){return $el.find(".icon-edit").hasClass("noclick")?void 0:$scope.$apply(function(){return $rootscope.$broadcast("usform:edit",$model.$modelValue)})}),$scope.$on("$destroy",function(){return $el.off()})},{templateUrl:"kanban/kanban-task.html",link:link,require:"ngModel"}},module.directive("tgKanbanUserstory",["$rootScope",KanbanUserstoryDirective]),KanbanSquishColumnDirective=function(rs){var link;return link=function($scope,$el){var updateTableWidth;return $scope.$on("project:loaded",function(event,project){return $scope.folds=rs.kanban.getStatusColumnModes(project.id),updateTableWidth()}),$scope.foldStatus=function(status){$scope.folds[status.id]=!$scope.folds[status.id],rs.kanban.storeStatusColumnModes($scope.projectId,$scope.folds),updateTableWidth()},updateTableWidth=function(){var columnWidths,totalWidth;return columnWidths=_.map($scope.usStatusList,function(status){return $scope.folds[status.id]?40:310}),totalWidth=_.reduce(columnWidths,function(total,width){return total+width}),$el.find(".kanban-table-inner").css("width",totalWidth)}},{link:link}},module.directive("tgKanbanSquishColumn",["$tgResources",KanbanSquishColumnDirective]),KanbanWipLimitDirective=function(){var link;return link=function($scope,$el,$attrs){var redrawWipLimit;return $el.disableSelection(),redrawWipLimit=function(){return $el.find(".kanban-wip-limit").remove(),timeout(200,function(){var element;return element=$el.find(".kanban-task")[$scope.$eval($attrs.tgKanbanWipLimit)],element?angular.element(element).before("
"):void 0})},$scope.$on("redraw:wip",redrawWipLimit),$scope.$on("kanban:us:move",redrawWipLimit),$scope.$on("usform:new:success",redrawWipLimit),$scope.$on("usform:bulk:success",redrawWipLimit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanWipLimit",KanbanWipLimitDirective),KanbanUserDirective=function($log){var clickable,link,template;return template=_.template('
\n class="not-clickable"<% } %>>\n <%- name %>\n \n
'),clickable=!1,link=function($scope,$el,$attrs,$model){var render,username_label,wtid;return username_label=$el.parent().find("a.task-assigned"),username_label.addClass("not-clickable"),$attrs.tgKanbanUserAvatar?(wtid=$scope.$watch($attrs.tgKanbanUserAvatar,function(v){var user;return null==$scope.usersById?($log.error("KanbanUserDirective requires userById set in scope."),wtid()):(user=$scope.usersById[v],render(user))}),render=function(user){var ctx,html;return ctx=void 0===user?{name:"Unassigned",imgurl:"/images/unnamed.png",clickable:clickable}:{name:user.full_name_display,imgurl:user.photo,clickable:clickable},html=template(ctx),$el.html(html),username_label.text(ctx.name)},bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?(clickable=!0,$el.on("click",function(){return function(){var $ctrl,us;if(!$el.find("a").hasClass("noclick"))return us=$model.$modelValue,$ctrl=$el.controller(),$ctrl.changeUsAssignedTo(us)}}(this)),username_label.removeClass("not-clickable"),username_label.on("click",function(){var $ctrl,us;if(!$el.find("a").hasClass("noclick"))return us=$model.$modelValue,$ctrl=$el.controller(),$ctrl.changeUsAssignedTo(us)})):void 0}),$scope.$on("$destroy",function(){return $el.off()})):$log.error("KanbanUserDirective: no attr is defined")},{link:link,require:"ngModel"}},module.directive("tgKanbanUserAvatar",["$log",KanbanUserDirective])}.call(this),function(){var KanbanSortableDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,module=angular.module("taigaKanban"),KanbanSortableDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el){return bindOnce($scope,"project",function(project){var deleteElement,itemEl,newParentScope,oldParentScope,tdom;if(project.my_permissions.indexOf("modify_us")>-1)return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el,deleteElement=function(itemEl){return itemEl.scope().$destroy(),itemEl.off(),itemEl.remove()},tdom.sortable({handle:".kanban-task-inner",dropOnEmpty:!0,connectWith:".kanban-uses-box",revert:400}),tdom.on("sortstop",function(event,ui){var itemIndex,itemUs,newStatusId,oldStatusId,parentEl;return parentEl=ui.item.parent(),itemEl=ui.item,itemUs=itemEl.scope().us,itemIndex=itemEl.index(),newParentScope=parentEl.scope(),newStatusId=newParentScope.s.id,oldStatusId=oldParentScope.s.id,newStatusId!==oldStatusId&&deleteElement(itemEl),$scope.$apply(function(){return $rootscope.$broadcast("kanban:us:move",itemUs,itemUs.status,newStatusId,itemIndex)}),ui.item.find("a").removeClass("noclick")}),tdom.on("sortstart",function(event,ui){return oldParentScope=ui.item.parent().scope(),ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanSortable",["$tgRepo","$tgResources","$rootScope",KanbanSortableDirective])}.call(this),function(){var IssueDetailController,IssuePriorityButtonDirective,IssueSeverityButtonDirective,IssueStatusButtonDirective,IssueStatusDisplayDirective,IssueTypeButtonDirective,PromoteIssueToUsButtonDirective,bindOnce,groupBy,joinStr,mixOf,module,taiga,toString,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaIssues"),IssueDetailController=function(superClass){function IssueDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,analytics,navUrls,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.analytics=analytics,this.navUrls=navUrls,this.scope.issueRef=this.params.issueref,this.scope.sectionName="Issue Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.issue.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(IssueDetailController,superClass),IssueDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgAnalytics","$tgNavUrls","tgLoader"],IssueDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("attachment:create",function(_this){return function(){return _this.rootscope.$broadcast("history:reload"),_this.analytics.trackEvent("attachment","create","create attachment on issue",1)}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("promote-issue-to-us:success",function(_this){return function(){return _this.analytics.trackEvent("issue","promoteToUserstory","promote issue to userstory",1),_this.rootscope.$broadcast("history:reload"),_this.loadIssue()}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},IssueDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;return ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.scope.project.is_issues_activated?this.navUrls.resolve("project-issues",ctx):this.navUrls.resolve("project",ctx)},IssueDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.issue_statuses,_this.scope.statusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.typeById=groupBy(project.issue_types,function(x){return x.id}),_this.scope.typeList=_.sortBy(project.issue_types,"order"),_this.scope.severityList=project.severities,_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.priorityList=project.priorities,_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},IssueDetailController.prototype.loadIssue=function(){return this.rs.issues.getByRef(this.scope.projectId,this.params.issueref).then(function(_this){return function(issue){var ctx;return _this.scope.issue=issue,_this.scope.issueId=issue.id,_this.scope.commentModel=issue,null!=_this.scope.issue.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.issue.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-issues-detail",ctx)),null!=_this.scope.issue.neighbors.next.ref?(ctx={project:_this.scope.project.slug,ref:_this.scope.issue.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-issues-detail",ctx)):void 0}}(this))},IssueDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadIssue()}}(this))},IssueDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("IssueDetailController",IssueDetailController),IssueStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(issue){var html,status;return status=$scope.statusById[issue.status],html=template({is_closed:status.is_closed,status:status}),$el.html(html)},$scope.$watch($attrs.ngModel,function(issue){return null!=issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueStatusDisplay",["$tgTemplate",IssueStatusDisplayDirective]),IssueStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issues-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,status;return status=$scope.statusById[issue.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(statusId){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.status=statusId,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),save(target.data("status-id"))):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueStatusButtonDirective]),IssueTypeButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-type-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,type;return type=$scope.typeById[issue.type],html=template({type:type,typees:$scope.typeList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(type){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.type=type,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".type-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-type").popover().open():void 0}),$el.on("click",".type",function(event){var target,type;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),type=target.data("type-id"),save(type)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueTypeButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueTypeButtonDirective]),IssueSeverityButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-severity-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,severity;return severity=$scope.severityById[issue.severity],html=template({severity:severity,severityes:$scope.severityList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(severity){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.severity=severity,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".severity-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-severity").popover().open():void 0}),$el.on("click",".severity",function(event){var severity,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),severity=target.data("severity-id"),save(severity)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueSeverityButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssueSeverityButtonDirective]),IssuePriorityButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("issue/issue-priority-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(){return function(issue){var html,priority;return priority=$scope.priorityById[issue.priority],html=template({priority:priority,priorityes:$scope.priorityList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(priority){var issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.priority=priority,onSuccess=function(){return $confirm.notify("success"),$model.$setViewValue(issue),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".priority-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-priority").popover().open():void 0}),$el.on("click",".priority",function(event){var priority,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),priority=target.data("priority-id"),save(priority)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssuePriorityButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",IssuePriorityButtonDirective]),PromoteIssueToUsButtonDirective=function($rootScope,$repo,$confirm,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var save;return save=$qqueue.bindAdd(function(){return function(issue,finish){var data,onError,onSuccess;return data={generated_from_issue:issue.id,project:issue.project,subject:issue.subject,description:issue.description,tags:issue.tags,is_blocked:issue.is_blocked,blocked_note:issue.blocked_note},onSuccess=function(){return finish(),$confirm.notify("success"),$rootScope.$broadcast("promote-issue-to-us:success")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.create("userstories",data).then(onSuccess,onError)}}(this)),$el.on("click","a",function(event){var issue,message,subtitle,title;return event.preventDefault(),issue=$model.$modelValue,title="Promote this issue to a new user story",message="Are you sure you want to create a new US from this Issue?",subtitle=issue.subject,$confirm.ask(title,subtitle,message).then(function(){return function(finish){return save(issue,finish)}}(this))}),$scope.$on("$destroy",function(){return $el.off()})},{restrict:"AE",require:"ngModel",templateUrl:"issue/promote-issue-to-us-button.html",link:link}},module.directive("tgPromoteIssueToUsButton",["$rootScope","$tgRepo","$tgConfirm","$tgQqueue",PromoteIssueToUsButtonDirective])}.call(this),function(){var CreateBulkIssuesDirective,CreateIssueDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaIssues"),CreateIssueDirective=function($repo,$confirm,$rootscope,lightboxService,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley(),$scope.issue={},$scope.$on("issueform:new",function(ctx,project){return $el.find(".tag-input").val(""),lightboxService.open($el),$scope.issue={project:project.id,subject:"",status:project.default_issue_status,type:project.default_issue_type,priority:project.default_priority,severity:project.default_severity,tags:[]}}),$scope.$on("$destroy",function(){return $el.off()}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.create("issues",$scope.issue),promise.then(function(data){return $loading.finish(submitButton),$rootscope.$broadcast("issueform:new:success",data),lightboxService.close($el),$confirm.notify("success")}),promise.then(null,function(){return $loading.finish(submitButton),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgLbCreateIssue",["$tgRepo","$tgConfirm","$rootScope","lightboxService","$tgLoading",CreateIssueDirective]),CreateBulkIssuesDirective=function($repo,$rs,$confirm,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el){var submit,submitButton;return $scope.$on("issueform:bulk",function(ctx,projectId){return lightboxService.open($el),$scope["new"]={projectId:projectId,bulk:""}}),submit=debounce(2e3,function(){return function(event){var data,form,projectId,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?($loading.start(submitButton),data=$scope["new"].bulk,projectId=$scope["new"].projectId,promise=$rs.issues.bulkCreate(projectId,data),promise.then(function(result){return $loading.finish(submitButton),$rootscope.$broadcast("issueform:new:success",result),lightboxService.close($el),$confirm.notify("success")}),promise.then(null,function(){return $loading.finish(submitButton),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateBulkIssues",["$tgRepo","$tgResources","$tgConfirm","$rootScope","$tgLoading","lightboxService",CreateBulkIssuesDirective])}.call(this),function(){var IssueAssignedToInlineEditionDirective,IssueStatusInlineEditionDirective,IssuesController,IssuesDirective,IssuesFiltersDirective,bindOnce,debounceLeading,groupBy,joinStr,mixOf,module,startswith,taiga,toString,trim,bind=function(fn,me){return function(){return fn.apply(me,arguments)}},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounceLeading=this.taiga.debounceLeading,startswith=this.taiga.startswith,module=angular.module("taigaIssues"),IssuesController=function(superClass){function IssuesController(scope,rootscope,repo,confirm,rs,urls,params,q,location,appTitle,navUrls,events,analytics,tgLoader){var filters,promise;return this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.urls=urls,this.params=params,this.q=q,this.location=location,this.appTitle=appTitle,this.navUrls=navUrls,this.events=events,this.analytics=analytics,this.loadIssues=bind(this.loadIssues,this),this.scope.sectionName="Issues",this.scope.filters={},_.isEmpty(this.location.search())?(filters=this.rs.issues.getFilters(this.params.pslug),filters.page=1,this.location.search(filters),void this.location.replace()):(promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Issues - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded),void this.scope.$on("issueform:new:success",function(_this){return function(){return _this.analytics.trackEvent("issue","create","create issue on issues list",1),_this.loadIssues(),_this.loadFilters()}}(this)))}return extend(IssuesController,superClass),IssuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$tgUrls","$routeParams","$q","$tgLocation","$appTitle","$tgNavUrls","$tgEvents","$tgAnalytics","tgLoader"],IssuesController.prototype.initializeSubscription=function(){var routingKey;return routingKey="changes.project."+this.scope.projectId+".issues",this.events.subscribe(this.scope,routingKey,function(_this){return function(){return _this.loadIssues()}}(this))},IssuesController.prototype.storeFilters=function(){return this.rs.issues.storeFilters(this.params.pslug,this.location.search())},IssuesController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_issues_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issueStatusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.severityList=_.sortBy(project.severities,"order"),_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.priorityList=_.sortBy(project.priorities,"order"),_this.scope.issueTypes=_.sortBy(project.issue_types,"order"),_this.scope.issueTypeById=groupBy(project.issue_types,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},IssuesController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page","tags","statuses","types","q","severities","priorities","assignedTo","createdBy","orderBy"),filters.page||(filters.page=1),filters},IssuesController.prototype.getUrlFilter=function(name){var filters;return filters=_.pick(this.location.search(),name),filters[name]},IssuesController.prototype.loadMyFilters=function(){return this.rs.issues.getMyFilters(this.scope.projectId).then(function(){return function(filters){return _.map(filters,function(value,key){return{id:key,name:key,type:"myFilters",selected:!1}})}}(this))},IssuesController.prototype.removeNotExistingFiltersFromUrl=function(){var currentSearch,existingValues,filterName,filterValue,splittedValues,urlfilters; +currentSearch=this.location.search(),urlfilters=this.getUrlFilters();for(filterName in urlfilters)filterValue=urlfilters[filterName],"page"!==filterName&&"orderBy"!==filterName&&"q"!==filterName&&(splittedValues="tags"===filterName?_.map((""+filterValue).split(",")):_.map((""+filterValue).split(","),function(x){return"null"===x?null:parseInt(x)}),existingValues=_.intersection(splittedValues,_.map(this.scope.filters[filterName],"id")),splittedValues.length!==existingValues.length&&this.location.search(filterName,existingValues.join()));return currentSearch!==this.location.search()?this.location.replace():void 0},IssuesController.prototype.markSelectedFilters=function(filters,urlfilters){var isSelected,j,key,len,name,obj,ref,ref1,results,searchdata,val,value;searchdata={},ref=_.omit(urlfilters,"page","orderBy");for(name in ref)for(value=ref[name],null==searchdata[name]&&(searchdata[name]={}),ref1=(""+value).split(","),j=0,len=ref1.length;len>j;j++)val=ref1[j],searchdata[name][val]=!0;isSelected=function(type,id){return null!=searchdata[type]&&searchdata[type][id]?!0:!1},results=[];for(key in filters)value=filters[key],results.push(function(){var k,len1,results1;for(results1=[],k=0,len1=value.length;len1>k;k++)obj=value[k],results1.push(obj.selected=isSelected(obj.type,obj.id)?!0:void 0);return results1}());return results},IssuesController.prototype.loadFilters=function(){var promise,urlfilters;return urlfilters=this.getUrlFilters(),urlfilters.q&&(this.scope.filtersQ=urlfilters.q),promise=this.loadMyFilters().then(function(_this){return function(myFilters){return _this.scope.filters.myFilters=myFilters,myFilters}}(this)),promise=promise.then(function(_this){return function(){return _this.rs.issues.filtersData(_this.scope.projectId)}}(this)),promise.then(function(_this){return function(data){var choicesFiltersFormat,tagsFilterFormat,usersFiltersFormat;return usersFiltersFormat=function(users,type,unknownOption){var reformatedUsers,unknownItem;return reformatedUsers=_.map(users,function(t){return{id:t[0],count:t[1],type:type,name:t[0]?_this.scope.usersById[t[0]].full_name_display:unknownOption}}),unknownItem=_.remove(reformatedUsers,function(u){return!u.id}),reformatedUsers=_.sortBy(reformatedUsers,function(u){return u.name.toUpperCase()}),unknownItem.length>0&&reformatedUsers.unshift(unknownItem[0]),reformatedUsers},choicesFiltersFormat=function(choices,type,byIdObject){return _.map(choices,function(t){return{id:t[0],name:byIdObject[t[0]].name,color:byIdObject[t[0]].color,count:t[1],type:type}})},tagsFilterFormat=function(tags){return _.map(tags,function(t){return{id:t[0],name:t[0],color:_this.scope.project.tags_colors[t[0]],count:t[1],type:"tags"}})},_this.scope.filters.statuses=choicesFiltersFormat(data.statuses,"statuses",_this.scope.issueStatusById),_this.scope.filters.severities=choicesFiltersFormat(data.severities,"severities",_this.scope.severityById),_this.scope.filters.priorities=choicesFiltersFormat(data.priorities,"priorities",_this.scope.priorityById),_this.scope.filters.assignedTo=usersFiltersFormat(data.assigned_to,"assignedTo","Unassigned"),_this.scope.filters.createdBy=usersFiltersFormat(data.created_by,"createdBy","Unknown"),_this.scope.filters.types=choicesFiltersFormat(data.types,"types",_this.scope.issueTypeById),_this.scope.filters.tags=tagsFilterFormat(data.tags),_this.removeNotExistingFiltersFromUrl(),_this.markSelectedFilters(_this.scope.filters,urlfilters),_this.rootscope.$broadcast("filters:loaded",_this.scope.filters)}}(this))},IssuesController.prototype.loadIssuesRequests=0,IssuesController.prototype.loadIssues=function(){var name,promise,ref,values;this.scope.urlFilters=this.getUrlFilters(),this.scope.httpParams={},ref=this.scope.urlFilters;for(name in ref)values=ref[name],"severities"===name?name="severity":"orderBy"===name?name="order_by":"priorities"===name?name="priority":"assignedTo"===name?name="assigned_to":"createdBy"===name?name="owner":"statuses"===name?name="status":"types"===name&&(name="type"),this.scope.httpParams[name]=values;return promise=this.rs.issues.list(this.scope.projectId,this.scope.httpParams),this.loadIssuesRequests+=1,promise.index=this.loadIssuesRequests,promise.then(function(_this){return function(data){return promise.index===_this.loadIssuesRequests&&(_this.scope.issues=data.models,_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy),data}}(this))},IssuesController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.initializeSubscription(),_this.q.all([_this.loadFilters(),_this.loadIssues()])}}(this))},IssuesController.prototype.saveCurrentFiltersTo=function(newFilter){var deferred;return deferred=this.q.defer(),this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return filters[newFilter]=_this.location.search(),_this.rs.issues.storeMyFilters(_this.scope.projectId,filters).then(function(){return deferred.resolve()})}}(this)),deferred.promise},IssuesController.prototype.deleteMyFilter=function(filter){var deferred;return deferred=this.q.defer(),this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return delete filters[filter],_this.rs.issues.storeMyFilters(_this.scope.projectId,filters).then(function(){return deferred.resolve()})}}(this)),deferred.promise},IssuesController.prototype.addNewIssue=function(){return this.rootscope.$broadcast("issueform:new",this.scope.project)},IssuesController.prototype.addIssuesInBulk=function(){return this.rootscope.$broadcast("issueform:bulk",this.scope.projectId)},IssuesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("IssuesController",IssuesController),IssuesDirective=function($log,$location,$template){var link,linkOrdering,linkPagination,template;return template=$template.get("issue/issue-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".issues-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for($pagEl.show(),pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||pages.push(i===cpage?{classes:"active",num:i,type:"page-active"}:{classes:"page",num:i,type:"page"});return $pagEl.html(template(options))},$scope.$watch("issues",function(value){return value?renderPagination():void 0}),$el.on("click",".issues-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadIssues()})}),$el.on("click",".issues-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadIssues()})}),$el.on("click",".issues-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadIssues()})})},linkOrdering=function($scope,$el,$attrs,$ctrl){var colHeadElement,currentOrder,icon;return currentOrder=$ctrl.getUrlFilter("orderBy")||"created_date",currentOrder&&(icon=startswith(currentOrder,"-")?"icon-caret-up":"icon-caret-down",colHeadElement=$el.find(".row.title > div[data-fieldname='"+trim(currentOrder,"-")+"']"),colHeadElement.html(colHeadElement.html()+"")),$el.on("click",".row.title > div",function(event){var finalOrder,newOrder,target;return target=angular.element(event.currentTarget),currentOrder=$ctrl.getUrlFilter("orderBy"),newOrder=target.data("fieldname"),finalOrder=currentOrder===newOrder?"-"+newOrder:newOrder,$scope.$apply(function(){return $ctrl.replaceFilter("orderBy",finalOrder),$ctrl.storeFilters(),$ctrl.loadIssues().then(function(){return $el.find(".row.title > div > span.icon").remove(),icon=startswith(finalOrder,"-")?"icon-caret-up":"icon-caret-down",target.html(target.html()+"")})})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkOrdering($scope,$el,$attrs,$ctrl),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssues",["$log","$tgLocation","$tgTemplate",IssuesDirective]),IssuesFiltersDirective=function($log,$location,$rs,$confirm,$loading,$template){var link,template,templateSelected;return template=$template.get("issue/issues-filters.html",!0),templateSelected=$template.get("issue/issues-filters-selected.html",!0),link=function($scope,$el){var $ctrl,initializeSelectedFilters,renderFilters,renderSelectedFilters,selectQFilter,selectedFilters,showCategories,showFilters,toggleFilterSelection;return $ctrl=$el.closest(".wrapper").controller(),selectedFilters=[],showFilters=function(title,type){return $el.find(".filters-cats").hide(),$el.find(".filter-list").removeClass("hidden"),$el.find("h2.breadcrumb").removeClass("hidden"),$el.find("h2 a.subfilter span.title").html(title),$el.find("h2 a.subfilter span.title").prop("data-type",type)},showCategories=function(){return $el.find(".filters-cats").show(),$el.find(".filter-list").addClass("hidden"),$el.find("h2.breadcrumb").addClass("hidden")},initializeSelectedFilters=function(filters){var j,len,name,val,values;selectedFilters=[];for(name in filters)for(values=filters[name],j=0,len=values.length;len>j;j++)val=values[j],val.selected&&selectedFilters.push(val);return renderSelectedFilters(selectedFilters)},renderSelectedFilters=function(selectedFilters){var html;return _.filter(selectedFilters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=templateSelected({filters:selectedFilters}),$el.find(".filters-applied").html(html),selectedFilters.length>0?$el.find(".save-filters").show():$el.find(".save-filters").hide()},renderFilters=function(filters){var html;return _.filter(filters,function(){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=template({filters:filters}),$el.find(".filter-list").html(html)},toggleFilterSelection=function(type,id){var currentFiltersType,filter,filterId,filters;return"myFilters"===type?($rs.issues.getMyFilters($scope.projectId).then(function(data){var filters,myFilters;return myFilters=data,filters=myFilters[id],filters.page=1,$ctrl.replaceAllFilters(filters),$ctrl.storeFilters(),$ctrl.loadIssues(),$ctrl.markSelectedFilters($scope.filters,filters),initializeSelectedFilters($scope.filters)}),null):(filters=$scope.filters[type],filterId="tags"===type?taiga.toString(id):id,filter=_.find(filters,{id:filterId}),filter.selected=!filter.selected,null===id&&(id="null"),filter.selected?(selectedFilters.push(filter),$scope.$apply(function(){return $ctrl.selectFilter(type,id),$ctrl.selectFilter("page",1),$ctrl.storeFilters(),$ctrl.loadIssues()})):(selectedFilters=_.reject(selectedFilters,filter),$scope.$apply(function(){return $ctrl.unselectFilter(type,id),$ctrl.selectFilter("page",1),$ctrl.storeFilters(),$ctrl.loadIssues()})),renderSelectedFilters(selectedFilters),currentFiltersType=$el.find("h2 a.subfilter span.title").prop("data-type"),type===currentFiltersType?renderFilters(_.reject(filters,"selected")):void 0)},$scope.$on("filters:loaded",function(ctx,filters){return initializeSelectedFilters(filters)}),$scope.$on("filters:issueupdate",function(ctx,filters){var html;return html=template({filters:filters.statuses}),$el.find(".filter-list").html(html)}),selectQFilter=debounceLeading(100,function(value){return void 0!==value?($ctrl.replaceFilter("page",null),0===value.length?($ctrl.replaceFilter("q",null),$ctrl.storeFilters()):($ctrl.replaceFilter("q",value),$ctrl.storeFilters()),$ctrl.loadIssues()):void 0}),$scope.$watch("filtersQ",selectQFilter),$el.on("click",".filters-cats > ul > li > a",function(event){var tags,target;return event.preventDefault(),target=angular.element(event.currentTarget),tags=$scope.filters[target.data("type")],renderFilters(_.reject(tags,"selected")),showFilters(target.attr("title"),target.data("type"))}),$el.on("click",".filters-inner > .filters-step-cat > .breadcrumb > .back",function(event){return event.preventDefault(),showCategories($el)}),$el.on("click",".filters-applied a",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),id=target.data("id")||null,type=target.data("type"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),target.toggleClass("active"),id=target.data("id")||null,type=target.data("type"),"myFilters"===type&&target.removeClass("active"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter .icon-delete",function(event){var customFilterName,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),customFilterName=target.parent().data("id"),title="Delete custom filter",message="the custom filter '"+customFilterName+"'",$confirm.askOnDelete(title,message).then(function(finish){var promise;return promise=$ctrl.deleteMyFilter(customFilterName),promise.then(function(){return promise=$ctrl.loadMyFilters(),promise.then(function(filters){return finish(),$scope.filters.myFilters=filters,renderFilters($scope.filters.myFilters)}),promise.then(null,function(){return finish()})}),promise.then(null,function(){return finish(!1),$confirm.notify("error")})})}),$el.on("click",".save-filters",function(event){return event.preventDefault(),renderFilters($scope.filters.myFilters),showFilters("My filters","myFilters"),$el.find(".save-filters").hide(),$el.find(".my-filter-name").removeClass("hidden"),$el.find(".my-filter-name").focus()}),$el.on("keyup",".my-filter-name",function(event){var newFilter,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newFilter=target.val(),$loading.start($el.find(".new")),promise=$ctrl.saveCurrentFiltersTo(newFilter),promise.then(function(){var loadPromise;return loadPromise=$ctrl.loadMyFilters(),loadPromise.then(function(filters){var currentfilterstype;return $loading.finish($el.find(".new")),$scope.filters.myFilters=filters,currentfilterstype=$el.find("h2 a.subfilter span.title").prop("data-type"),"myFilters"===currentfilterstype&&renderFilters($scope.filters.myFilters),$el.find(".my-filter-name").addClass("hidden"),$el.find(".save-filters").show()}),loadPromise.then(null,function(){return $loading.finish($el.find(".new")),$confirm.notify("error","Error loading custom filters")})}),promise.then(null,function(){return $loading.finish($el.find(".new")),$el.find(".my-filter-name").val(newFilter).focus().select(),$confirm.notify("error","Filter not saved")})):27===event.keyCode?($el.find(".my-filter-name").val(""),$el.find(".my-filter-name").addClass("hidden"),$el.find(".save-filters").show()):void 0})},{link:link}},module.directive("tgIssuesFilters",["$log","$tgLocation","$tgResources","$tgConfirm","$tgLoading","$tgTemplate",IssuesFiltersDirective]),IssueStatusInlineEditionDirective=function($repo,$template,$rootscope){var link,selectionTemplate,updateIssueStatus;return selectionTemplate=$template.get("issue/issue-status-inline-edition-selection.html",!0),updateIssueStatus=function($el,issue,issueStatusById){var issueStatusDom,issueStatusDomParent,status;return issueStatusDomParent=$el.find(".issue-status"),issueStatusDom=$el.find(".issue-status .issue-status-bind"),status=issueStatusById[issue.status],status?(issueStatusDom.text(status.name),issueStatusDom.prop("title",status.name),issueStatusDomParent.css("color",status.color)):void 0},link=function($scope,$el,$attrs){var $ctrl,issue;return $ctrl=$el.controller(),issue=$scope.$eval($attrs.tgIssueStatusInlineEdition),$el.on("click",".issue-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",function(event){var filter,j,len,ref,target;for(event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),ref=$scope.filters.statuses,j=0,len=ref.length;len>j;j++)filter=ref[j],filter.id===issue.status&&filter.count--;return issue.status=target.data("status-id"),$el.find(".pop-status").popover().close(),updateIssueStatus($el,issue,$scope.issueStatusById),$scope.$apply(function(){var k,len1,ref1;for($repo.save(issue).then,ref1=$scope.filters.statuses,k=0,len1=ref1.length;len1>k;k++)filter=ref1[k],filter.id===issue.status&&filter.count++;return $rootscope.$broadcast("filters:issueupdate",$scope.filters)})}),taiga.bindOnce($scope,"project",function(project){return $el.append(selectionTemplate({statuses:project.issue_statuses})),updateIssueStatus($el,issue,$scope.issueStatusById),-1===project.my_permissions.indexOf("modify_issue")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$watch($attrs.tgIssueStatusInlineEdition,function(){return function(val){return updateIssueStatus($el,val,$scope.issueStatusById)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssueStatusInlineEdition",["$tgRepo","$tgTemplate","$rootScope",IssueStatusInlineEditionDirective]),IssueAssignedToInlineEditionDirective=function($repo,$rootscope){var link,template;return template=_.template('<%- name %>\n
<%- name %>
'),link=function($scope,$el,$attrs){var $ctrl,issue,updateIssue;return updateIssue=function(issue){var ctx,member;return ctx={name:"Unassigned",imgurl:"/images/unnamed.png"},member=$scope.usersById[issue.assigned_to],member&&(ctx.imgurl=member.photo,ctx.name=member.full_name_display),$el.find(".avatar").html(template(ctx)),$el.find(".issue-assignedto").attr("title",ctx.name)},$ctrl=$el.controller(),issue=$scope.$eval($attrs.tgIssueAssignedToInlineEdition),updateIssue(issue),$el.on("click",".issue-assignedto",function(){return $rootscope.$broadcast("assigned-to:add",issue)}),taiga.bindOnce($scope,"project",function(project){return-1===project.my_permissions.indexOf("modify_issue")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("assigned-to:added",function(){return function(ctx,userId,updatedIssue){return updatedIssue.id===issue.id?(updatedIssue.assigned_to=userId,$repo.save(updatedIssue),updateIssue(updatedIssue)):void 0}}(this)),$scope.$watch($attrs.tgIssueAssignedToInlineEdition,function(){return function(val){return updateIssue(val)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssueAssignedToInlineEdition",["$tgRepo","$rootScope",IssueAssignedToInlineEditionDirective])}.call(this),function(){var UsClientRequirementButtonDirective,UsStatusButtonDirective,UsStatusDisplayDirective,UsTasksProgressDisplayDirective,UsTeamRequirementButtonDirective,UserStoryDetailController,bindOnce,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaUserStories"),UserStoryDetailController=function(superClass){function UserStoryDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,navUrls,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.usRef=this.params.usref,this.scope.sectionName="User Story Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.us.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(UserStoryDetailController,superClass),UserStoryDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],UserStoryDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("related-tasks:update",function(_this){return function(){return _this.loadUs(),_this.scope.tasks=_.clone(_this.scope.tasks,!1)}}(this)),this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on userstory",1),_this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},UserStoryDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;return ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx),this.scope.project.is_backlog_activated?this.scope.us.milestone?(ctx.sprint=this.scope.sprint.slug,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-taskboard",ctx)):this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-backlog",ctx):this.scope.project.is_kanban_activated?this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-kanban",ctx):void 0},UserStoryDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.us_statuses,_this.scope.statusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.taskStatusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(_this.scope.pointsList,function(e){return e.id}),project}}(this))},UserStoryDetailController.prototype.loadUs=function(){return this.rs.userstories.getByRef(this.scope.projectId,this.params.usref).then(function(_this){return function(us){var ctx;return _this.scope.us=us,_this.scope.usId=us.id,_this.scope.commentModel=us,null!=_this.scope.us.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.us.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-userstories-detail",ctx)),null!=_this.scope.us.neighbors.next.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.us.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-userstories-detail",ctx)),us}}(this))},UserStoryDetailController.prototype.loadSprint=function(){return this.scope.us.milestone?this.rs.sprints.get(this.scope.us.project,this.scope.us.milestone).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,sprint}}(this)):void 0},UserStoryDetailController.prototype.loadTasks=function(){return this.rs.tasks.list(this.scope.projectId,null,this.scope.usId).then(function(_this){return function(tasks){return _this.scope.tasks=tasks,tasks}}(this))},UserStoryDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadUs().then(function(){return _this.q.all([_this.loadSprint(),_this.loadTasks()])})}}(this))},UserStoryDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserStoryDetailController",UserStoryDetailController),UsStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(us){var html;return html=template({is_closed:us.is_closed,status:$scope.statusById[us.status]}),$el.html(html)},$scope.$watch($attrs.ngModel,function(us){return null!=us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsStatusDisplay",["$tgTemplate",UsStatusDisplayDirective]),UsTasksProgressDisplayDirective=function($template){var link,template;return template=$template.get("us/us-task-progress.html",!0),link=function($scope,$el,$attrs){var render;return render=function(tasks){var html,progress,totalClosedTasks,totalTasks;return totalTasks=tasks.length,totalClosedTasks=_.filter(tasks,function(){return function(task){return $scope.taskStatusById[task.status].is_closed}}(this)).length,progress=totalTasks>0?100*totalClosedTasks/totalTasks:0,html=template({totalTasks:totalTasks,totalClosedTasks:totalClosedTasks,progress:progress}),$el.html(html)},$scope.$watch($attrs.ngModel,function(tasks){return null!=tasks?render(tasks):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsTasksProgressDisplay",["$tgTemplate",UsTasksProgressDisplayDirective]),UsStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(){return function(us){var html,status;return status=$scope.statusById[us.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(status){var onError,onSuccess,us;return us=$model.$modelValue.clone(),us.status=status,$.fn.popover().closeAll(),$model.$setViewValue(us),onSuccess=function(){return $confirm.notify("success"),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),us.revert(),$model.$setViewValue(us),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save($model.$modelValue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var status,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),status=target.data("status-id"),save(status)):void 0}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsStatusButtonDirective]),UsTeamRequirementButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-team-requirement-button.html",!0),link=function($scope,$el,$attrs,$model){var canEdit,render,save;return canEdit=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(us){var ctx,html;return canEdit()||us.team_requirement?(ctx={canEdit:canEdit(),isRequired:us.team_requirement},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(team_requirement){var promise,us;return us=$model.$modelValue.clone(),us.team_requirement=team_requirement,$model.$setViewValue(us),$loading.start($el.find("label")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $loading.finish($el.find("label")),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $loading.finish($el.find("label")),$confirm.notify("error"),us.revert(),$model.$setViewValue(us)})}}(this)),$el.on("click",".team-requirement",function(){var team_requirement;if(canEdit())return team_requirement=!$model.$modelValue.team_requirement,save(team_requirement)}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsTeamRequirementButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsTeamRequirementButtonDirective]),UsClientRequirementButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-client-requirement-button.html",!0),link=function($scope,$el,$attrs,$model){var canEdit,render,save;return canEdit=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(us){var ctx,html;return canEdit()||us.client_requirement?(ctx={canEdit:canEdit(),isRequired:us.client_requirement},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(client_requirement){var promise,us;return us=$model.$modelValue.clone(),us.client_requirement=client_requirement,$model.$setViewValue(us),$loading.start($el.find("label")),promise=$tgrepo.save($model.$modelValue),promise.then(function(){return $loading.finish($el.find("label")),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return $loading.finish($el.find("label")),$confirm.notify("error"),us.revert(),$model.$setViewValue(us)})}}(this)),$el.on("click",".client-requirement",function(){var client_requirement;if(canEdit())return client_requirement=!$model.$modelValue.client_requirement,save(client_requirement)}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsClientRequirementButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsClientRequirementButtonDirective])}.call(this),function(){var TaskDetailController,TaskIsIocaineButtonDirective,TaskStatusButtonDirective,TaskStatusDisplayDirective,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,module=angular.module("taigaTasks"),TaskDetailController=function(superClass){function TaskDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appTitle,navUrls,analytics,tgLoader){var promise; +this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.taskRef=this.params.taskref,this.scope.sectionName="Task Details",this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.task.subject+" - "+_this.scope.project.name),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TaskDetailController,superClass),TaskDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],TaskDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on task",1),_this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("attachment:delete",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("history:reload")}}(this))},TaskDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;if(ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx),this.scope.project.is_backlog_activated){if(this.scope.task.milestone)return ctx.sprint=this.scope.sprint.slug,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-taskboard",ctx);if(this.scope.task.us)return ctx.ref=this.scope.us.ref,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-userstories-detail",ctx)}else if(this.scope.project.is_kanban_activated&&this.scope.us)return ctx.ref=this.scope.us.ref,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-userstories-detail",ctx)},TaskDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.task_statuses,_this.scope.statusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},TaskDetailController.prototype.loadTask=function(){return this.rs.tasks.getByRef(this.scope.projectId,this.params.taskref).then(function(_this){return function(task){var ctx;return _this.scope.task=task,_this.scope.taskId=task.id,_this.scope.commentModel=task,null!=_this.scope.task.neighbors.previous.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.task.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-tasks-detail",ctx)),null!=_this.scope.task.neighbors.next.ref&&(ctx={project:_this.scope.project.slug,ref:_this.scope.task.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-tasks-detail",ctx)),task}}(this))},TaskDetailController.prototype.loadSprint=function(){return this.scope.task.milestone?this.rs.sprints.get(this.scope.task.project,this.scope.task.milestone).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,sprint}}(this)):void 0},TaskDetailController.prototype.loadUserStory=function(){return this.scope.task.user_story?this.rs.userstories.get(this.scope.task.project,this.scope.task.user_story).then(function(_this){return function(us){return _this.scope.us=us,us}}(this)):void 0},TaskDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadTask().then(function(){return _this.q.all([_this.loadSprint(),_this.loadUserStory()])})}}(this))},TaskDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TaskDetailController",TaskDetailController),TaskStatusDisplayDirective=function($template){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(task){var html,status;return status=$scope.statusById[task.status],html=template({is_closed:status.is_closed,status:status}),$el.html(html)},$scope.$watch($attrs.ngModel,function(task){return null!=task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskStatusDisplay",["$tgTemplate",TaskStatusDisplayDirective]),TaskStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue){var link,template;return template=_.template('
\n \n <%- status.name %>\n <% if(editable){ %><% }%>\n status\n\n
    \n <% _.each(statuses, function(st) { %>\n
  • <%- st.name %>
  • \n <% }); %>\n
\n
'),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_task")},render=function(){return function(task){var html,status;return status=$scope.statusById[task.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(){return function(status){var onError,onSuccess,task;return task=$model.$modelValue.clone(),task.status=status,$model.$setViewValue(task),onSuccess=function(){return $confirm.notify("success"),$rootScope.$broadcast("history:reload"),$loading.finish($el.find(".level-name"))},onError=function(){return $confirm.notify("error"),task.revert(),$model.$setViewValue(task),$loading.finish($el.find(".level-name"))},$loading.start($el.find(".level-name")),$repo.save($model.$modelValue).then(onSuccess,onError)}}(this)),$el.on("click",".status-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),$.fn.popover().closeAll(),save(target.data("status-id"))):void 0}),$scope.$watch($attrs.ngModel,function(task){return task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue",TaskStatusButtonDirective]),TaskIsIocaineButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue){var link,template;return template=_.template('
\n \n \n
'),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_task")},render=function(task){var ctx,html;return isEditable()||task.is_iocaine?(ctx={isIocaine:task.is_iocaine,isEditable:isEditable()},html=template(ctx),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(){return function(is_iocaine){var promise,task;return task=$model.$modelValue.clone(),task.is_iocaine=is_iocaine,$model.$setViewValue(task),$loading.start($el.find("label")),promise=$tgrepo.save(task),promise.then(function(){return $confirm.notify("success"),$rootscope.$broadcast("history:reload")}),promise.then(null,function(){return task.revert(),$model.$setViewValue(task),$confirm.notify("error")}),promise["finally"](function(){return $loading.finish($el.find("label"))})}}(this)),$el.on("click",".is-iocaine",function(){var is_iocaine;if(isEditable())return is_iocaine=!$model.$modelValue.is_iocaine,save(is_iocaine)}),$scope.$watch($attrs.ngModel,function(task){return task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskIsIocaineButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue",TaskIsIocaineButtonDirective])}.call(this),function(){var LeaveProjectDirective,TeamController,TeamFiltersDirective,TeamMemberCurrentUserDirective,TeamMemberStatsDirective,TeamMembersDirective,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,module=angular.module("taigaTeam"),TeamController=function(superClass){function TeamController(scope,rootscope,repo,rs,params,q,location,navUrls,appTitle,auth,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.auth=auth,this.scope.sectionName="Team",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Team - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(TeamController,superClass),TeamController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$location","$tgNavUrls","$appTitle","$tgAuth","tgLoader"],TeamController.prototype.setRole=function(role){return this.scope.filtersRole=role?role:null},TeamController.prototype.loadMembers=function(){return this.rs.memberships.list(this.scope.projectId,{},!1).then(function(_this){return function(data){var currentUser,i,len,membership,ref;for(currentUser=_this.auth.getUser(),null!=currentUser&&null==currentUser.photo&&(currentUser.photo="/images/unnamed.png"),_this.scope.currentUser=_.find(data,function(membership){return null!=currentUser&&membership.user===currentUser.id}),_this.scope.totals={},_.forEach(data,function(membership){return _this.scope.totals[membership.user]=0}),_this.scope.memberships=_.filter(data,function(membership){return membership.user&&(null==currentUser||membership.user!==currentUser.id)&&membership.is_user_active?membership:void 0}),ref=_this.scope.memberships,i=0,len=ref.length;len>i;i++)membership=ref[i],null==membership.photo&&(membership.photo="/images/unnamed.png");return data}}(this))},TeamController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issuesEnabled=project.is_issues_activated,_this.scope.tasksEnabled=project.is_kanban_activated||project.is_backlog_activated,_this.scope.wikiEnabled=project.is_wiki_activated,project}}(this))},TeamController.prototype.loadMemberStats=function(){return this.rs.projects.memberStats(this.scope.projectId).then(function(_this){return function(stats){var totals;return totals={},_.forEach(_this.scope.totals,function(total,userId){var vals;return vals=_.map(stats,function(memberStats){return memberStats[userId]}),total=_.reduce(vals,function(sum,el){return sum+el}),_this.scope.totals[userId]=total}),_this.scope.stats=_this.processStats(stats),_this.scope.stats.totals=_this.scope.totals}}(this))},TeamController.prototype.processStat=function(stat){var max,min,singleStat;return max=_.max(stat),min=_.min(stat),singleStat=_.map(stat,function(value,key){return value===min?[key,.1]:value===max?[key,1]:[key,.5*value/max]}),singleStat=_.object(singleStat)},TeamController.prototype.processStats=function(stats){var key,value;for(key in stats)value=stats[key],stats[key]=this.processStat(value);return stats},TeamController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.loadMembers().then(function(){return _this.loadMemberStats()})}}(this))},TeamController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TeamController",TeamController),TeamFiltersDirective=function(){return{templateUrl:"team/team-filter.html"}},module.directive("tgTeamFilters",[TeamFiltersDirective]),TeamMemberStatsDirective=function(){return{templateUrl:"team/team-member-stats.html",scope:{stats:"=",userId:"=user",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamMemberStats",TeamMemberStatsDirective),TeamMemberCurrentUserDirective=function(){return{templateUrl:"team/team-member-current-user.html",scope:{projectId:"=projectid",currentUser:"=currentuser",stats:"=",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamCurrentUser",TeamMemberCurrentUserDirective),TeamMembersDirective=function(){var template;return template="team/team-members.html",{templateUrl:template,scope:{memberships:"=",filtersQ:"=filtersq",filtersRole:"=filtersrole",stats:"=",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamMembers",TeamMembersDirective),LeaveProjectDirective=function($repo,$confirm,$location,$rs,$navurls){var link;return link=function($scope,$el,$attrs){return $scope.leave=function(){return $confirm.ask("Leave this project","Are you sure you want to leave the project?").then(function(){return function(finish){var promise;return promise=$rs.projects.leave($attrs.projectid),promise.then(function(){return finish(),$confirm.notify("success"),$location.path($navurls.resolve("home"))}),promise.then(null,function(response){return finish(),$confirm.notify("error",response.data._error_message)})}}(this))}},{scope:{},templateUrl:"team/leave-project.html",link:link}},module.directive("tgLeaveProject",["$tgRepo","$tgConfirm","$tgLocation","$tgResources","$tgNavUrls",LeaveProjectDirective]),module.filter("membersRoleFilter",function(){return function(input,filtersRole){return null!=filtersRole?_.filter(input,{role:filtersRole.id}):input}})}.call(this),function(){var EditableWikiContentDirective,WikiDetailController,WikiSummaryDirective,bindOnce,debounce,groupBy,mixOf,module,taiga,unslugify,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,unslugify=this.taiga.unslugify,debounce=this.taiga.debounce,module=angular.module("taigaWiki"),WikiDetailController=function(superClass){function WikiDetailController(scope,rootscope,repo,model,confirm,rs,params,q,location,filter,log,appTitle,navUrls,analytics,tgLoader){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.model=model,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.filter=filter,this.log=log,this.appTitle=appTitle,this.navUrls=navUrls,this.analytics=analytics,this.scope.projectSlug=this.params.pslug,this.scope.wikiSlug=this.params.slug,this.scope.sectionName="Wiki",promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Wiki - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(WikiDetailController,superClass),WikiDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgModel","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$filter","$log","$appTitle","$tgNavUrls","$tgAnalytics","tgLoader"],WikiDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_wiki_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.membersById=groupBy(project.memberships,function(x){return x.user}),project}}(this))},WikiDetailController.prototype.loadWiki=function(){var promise;return promise=this.rs.wiki.getBySlug(this.scope.projectId,this.params.slug),promise.then(function(_this){return function(wiki){return _this.scope.wiki=wiki,_this.scope.wikiId=wiki.id,_this.scope.wiki}}(this)),promise.then(null,function(_this){return function(){var data;return _this.scope.wikiId=null,-1===_this.scope.project.my_permissions.indexOf("add_wiki_page")?null:(data={project:_this.scope.projectId,slug:_this.scope.wikiSlug,content:""},_this.scope.wiki=_this.model.make_model("wiki",data),_this.scope.wiki)}}(this))},WikiDetailController.prototype.loadWikiLinks=function(){return this.rs.wiki.listLinks(this.scope.projectId).then(function(_this){return function(wikiLinks){return _this.scope.wikiLinks=wikiLinks}}(this))},WikiDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.users,project.roles),_this.q.all([_this.loadWikiLinks(),_this.loadWiki()])}}(this))},WikiDetailController.prototype["delete"]=function(){var message,title;return title="Delete Wiki Page",message=unslugify(this.scope.wiki.slug),this.confirm.askOnDelete(title,message).then(function(_this){return function(finish){var onError,onSuccess;return onSuccess=function(){var ctx;return finish(),ctx={project:_this.scope.projectSlug},_this.location.path(_this.navUrls.resolve("project-wiki",ctx)),_this.confirm.notify("success")},onError=function(){return finish(!1),_this.confirm.notify("error")},_this.repo.remove(_this.scope.wiki).then(onSuccess,onError)}}(this))},WikiDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("WikiDetailController",WikiDetailController),WikiSummaryDirective=function($log,$template){var link,template;return template=$template.get("wiki/wiki-summary.html",!0),link=function($scope,$el,$attrs){var render;return render=function(wiki){var ctx,html,user;return null==$scope.usersById?$log.error("WikiSummaryDirective requires userById set in scope."):user=$scope.usersById[wiki.last_modifier],user=void 0===user?{name:"unknown",imgUrl:"/images/unnamed.png"}:{name:user.full_name_display,imgUrl:user.photo},ctx={totalEditions:wiki.editions,lastModifiedDate:moment(wiki.modified_date).format("DD MMM YYYY HH:mm"),user:user},html=template(ctx),$el.html(html)},$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?render(wikiPage):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgWikiSummary",["$log","$tgTemplate",WikiSummaryDirective]),EditableWikiContentDirective=function($window,$document,$repo,$confirm,$loading,$analytics,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var cancelEdition,disableEdition,getSelectedText,isEditable,save,switchToEditMode,switchToReadMode;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_wiki_page")},switchToEditMode=function(){return $el.find(".edit-wiki-content").show(),$el.find(".view-wiki-content").hide(),$el.find("textarea").focus()},switchToReadMode=function(){return $el.find(".edit-wiki-content").hide(),$el.find(".view-wiki-content").show()},disableEdition=function(){return $el.find(".view-wiki-content .edit").remove(),$el.find(".edit-wiki-content").remove()},cancelEdition=function(){return $model.$modelValue.id?($scope.$apply(function(){return function(){return $model.$modelValue.revert()}}(this)),switchToReadMode()):void 0},getSelectedText=function(){return $window.getSelection?$window.getSelection().toString():$document.selection?$document.selection.createRange().text:null},save=$qqueue.bindAdd(function(wiki){var onError,onSuccess,promise;return onSuccess=function(wikiPage){return null==wiki.id&&$analytics.trackEvent("wikipage","create","create wiki page",1),$model.$setViewValue(wikiPage),$confirm.notify("success"),switchToReadMode()},onError=function(){return $confirm.notify("error")},$loading.start($el.find(".save-container")),promise=null!=wiki.id?$repo.save(wiki).then(onSuccess,onError):$repo.create("wiki",wiki).then(onSuccess,onError),promise["finally"](function(){return $loading.finish($el.find(".save-container"))})}),$el.on("mousedown",".view-wiki-content",function(event){var target;target=angular.element(event.target),isEditable()&&2===event.button}),$el.on("mouseup",".view-wiki-content",function(event){var target;return target=angular.element(event.target),getSelectedText()||!isEditable()||target.is("a")||target.is("pre")?void 0:switchToEditMode()}),$el.on("click",".save",debounce(2e3,function(){return save($scope.wiki)})),$el.on("click",".cancel",function(){return cancelEdition()}),$el.on("keydown","textarea",function(event){return 27===event.keyCode?cancelEdition():void 0}),$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?isEditable()?($el.addClass("editable"),null==wikiPage.id?switchToEditMode():void 0):disableEdition():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",templateUrl:"wiki/editable-wiki-content.html"}},module.directive("tgEditableWikiContent",["$window","$document","$tgRepo","$tgConfirm","$tgLoading","$tgAnalytics","$tgQqueue",EditableWikiContentDirective])}.call(this),function(){var WikiNavDirective,bindOnce,groupBy,mixOf,module,slugify,taiga,unslugify;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,slugify=this.taiga.slugify,unslugify=this.taiga.slugify,module=angular.module("taigaWiki"),WikiNavDirective=function($tgrepo,$log,$location,$confirm,$navUrls,$analytics,$loading,$template){var link,template;return template=$template.get("wiki/wiki-nav.html",!0),link=function($scope,$el,$attrs){var $ctrl,render;return $ctrl=$el.controller(),null==$attrs.ngModel?$log.error("WikiNavDirective: no ng-model attr is defined"):(render=function(wikiLinks){var addWikiLinkPermission,deleteWikiLinkPermission,html;return addWikiLinkPermission=$scope.project.my_permissions.indexOf("add_wiki_link")>-1,deleteWikiLinkPermission=$scope.project.my_permissions.indexOf("delete_wiki_link")>-1,html=template({wikiLinks:wikiLinks,projectSlug:$scope.projectSlug,addWikiLinkPermission:addWikiLinkPermission,deleteWikiLinkPermission:deleteWikiLinkPermission}),$el.off(),$el.html(html),$el.on("click",".wiki-link .link-title",function(event){var linkId,linkSlug,target;return event.preventDefault(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),linkSlug=$scope.wikiLinks[linkId].href,$scope.$apply(function(){var ctx;return ctx={project:$scope.projectSlug,slug:linkSlug},$location.path($navUrls.resolve("project-wiki-page",ctx))})}),$el.on("click",".add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new input").focus(),$el.find(".add-button").hide()}),$el.on("click",".wiki-link .icon-delete",function(event){var linkId,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),title="Delete Wiki Link",message=$scope.wikiLinks[linkId].title,$confirm.askOnDelete(title,message).then(function(){return function(finish){var promise;return promise=$tgrepo.remove($scope.wikiLinks[linkId]),promise.then(function(){return promise=$ctrl.loadWikiLinks(),promise.then(function(){return finish(),render($scope.wikiLinks)}),promise.then(null,function(){return finish()})}),promise.then(null,function(){return finish(!1),$confirm.notify("error")})}}(this))}),$el.on("keyup",".new input",function(event){var newLink,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newLink=target.val(),$loading.start($el.find(".new")),promise=$tgrepo.create("wiki-links",{project:$scope.projectId,title:newLink,href:slugify(newLink)}),promise.then(function(){var loadPromise;return $analytics.trackEvent("wikilink","create","create wiki link",1),loadPromise=$ctrl.loadWikiLinks(),loadPromise.then(function(){return $loading.finish($el.find(".new")),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),render($scope.wikiLinks)}),loadPromise.then(null,function(){return $loading.finish($el.find(".new")),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),$confirm.notify("error","Error loading wiki links")})}),promise.then(null,function(error){var ref;return $loading.finish($el.find(".new")),$el.find(".new input").val(newLink),$el.find(".new input").focus().select(),null!=(null!=error&&null!=(ref=error.__all__)?ref[0]:void 0)?$confirm.notify("error","The link already exists"):$confirm.notify("error")})):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show()):void 0})},bindOnce($scope,$attrs.ngModel,render))},{link:link}},module.directive("tgWikiNav",["$tgRepo","$log","$tgLocation","$tgConfirm","$tgNavUrls","$tgAnalytics","$tgLoading","$tgTemplate",WikiNavDirective])}.call(this),function(){var CreateMembersDirective,MAX_MEMBERSHIP_FIELDSETS,debounce,module,taiga;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaKanban"),MAX_MEMBERSHIP_FIELDSETS=4,CreateMembersDirective=function($rs,$rootScope,$confirm,$loading,lightboxService){var extraTextTemplate,link,template;return extraTextTemplate='
\n \n
',template=_.template('
\n
\n data-required="true" <% } %> data-type="email" />\n
\n
\n \n \n
\n
'),link=function($scope,$el){var createFieldSet,resetForm,submit,submitButton;return createFieldSet=function(required){var ctx;return null==required&&(required=!0),ctx={roleList:$scope.roles,required:required},template(ctx)},resetForm=function(){var fieldSet,invitations;return $el.find("form textarea").remove(""),$el.find("form .add-member-wrapper").remove(),invitations=$el.find(".add-member-forms"),invitations.html(extraTextTemplate),fieldSet=createFieldSet(),invitations.prepend(fieldSet)},$scope.$on("membersform:new",function(){return resetForm(),lightboxService.open($el)}),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click",".delete-fieldset",function(event){var fieldSet,lastActionButton,target;return event.preventDefault(),target=angular.element(event.currentTarget),fieldSet=target.closest(".add-member-wrapper"),fieldSet.remove(),lastActionButton=$el.find("fieldset:last > a"),lastActionButton.hasClass("icon-delete delete-fieldset")?lastActionButton.removeClass("icon-delete delete-fieldset").addClass("icon-plus add-fieldset"):void 0}),$el.on("click",".add-fieldset",function(event){var fieldSet,newFieldSet,target;return event.preventDefault(),target=angular.element(event.currentTarget),fieldSet=target.closest(".add-member-wrapper"),target.removeClass("icon-plus add-fieldset").addClass("icon-delete delete-fieldset"),newFieldSet=createFieldSet(!1),fieldSet.after(newFieldSet),$el.find(".add-member-wrapper").length===MAX_MEMBERSHIP_FIELDSETS?$el.find(".add-member-wrapper fieldset:last > a").removeClass("icon-plus add-fieldset").addClass("icon-delete delete-fieldset"):void 0}),submit=debounce(2e3,function(){return function(event){var form,invitation_extra_text,invitations,memberWrappers,onError,onSuccess;return event.preventDefault(),$loading.start(submitButton),onSuccess=function(){return $loading.finish(submitButton),lightboxService.close($el),$confirm.notify("success"),$rootScope.$broadcast("membersform:new:success")},onError=function(){return $loading.finish(submitButton),lightboxService.close($el),$confirm.notify("error"),$rootScope.$broadcast("membersform:new:error")},form=$el.find("form").checksley(),form.destroy(),form.initialize(),form.validate()?(memberWrappers=$el.find("form .add-member-wrapper"),memberWrappers=_.filter(memberWrappers,function(mw){return angular.element(mw).find("input").hasClass("checksley-ok")}),invitations=_.map(memberWrappers,function(mw){var email,memberWrapper,role;return memberWrapper=angular.element(mw),email=memberWrapper.find("input"),role=memberWrapper.find("select"),{email:email.val(),role_id:role.val()}}),invitations.length?(invitation_extra_text=$el.find("form textarea").val(),$rs.memberships.bulkCreateMemberships($scope.project.id,invitations,invitation_extra_text).then(onSuccess,onError)):void 0):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgLbCreateMembers",["$tgResources","$rootScope","$tgConfirm","$tgLoading","lightboxService",CreateMembersDirective])}.call(this),function(){var MembershipsController,MembershipsDirective,MembershipsRowActionsDirective,MembershipsRowAdminCheckboxDirective,MembershipsRowAvatarDirective,MembershipsRowRoleSelectorDirective,bindMethods,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),MembershipsController=function(superClass){function MembershipsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,analytics,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.analytics=analytics,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Manage Members",this.scope.project={},this.scope.filters={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Membership - "+_this.scope.project.name) +}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("membersform:new:success",function(_this){return function(){return _this.loadMembers(),_this.analytics.trackEvent("membership","create","create memberships on admin",1)}}(this))}return extend(MembershipsController,superClass),MembershipsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAnalytics","$appTitle"],MembershipsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},MembershipsController.prototype.loadMembers=function(){var httpFilters;return httpFilters=this.getUrlFilters(),this.rs.memberships.list(this.scope.projectId,httpFilters).then(function(_this){return function(data){return _this.scope.memberships=_.filter(data.models,function(membership){return null===membership.user||membership.is_user_active}),_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy,data}}(this))},MembershipsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadUsersAndRoles()}}(this)).then(function(_this){return function(){return _this.loadMembers()}}(this))},MembershipsController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page"),filters.page||(filters.page=1),filters},MembershipsController.prototype.addNewMembers=function(){return this.rootscope.$broadcast("membersform:new")},MembershipsController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("MembershipsController",MembershipsController),MembershipsDirective=function($template){var link,linkPagination,template;return template=$template.get("admin/admin-membership-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".memberships-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for(pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||pages.push(i===cpage?{classes:"active",num:i,type:"page-active"}:{classes:"page",num:i,type:"page"});return $pagEl.html(template(options))},$scope.$watch("memberships",function(value){return value?renderPagination():void 0}),$el.on("click",".memberships-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadMembers()})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMemberships",["$tgTemplate",MembershipsDirective]),MembershipsRowAvatarDirective=function($log,$template){var link,template;return template=$template.get("admin/memberships-row-avatar.html",!0),link=function($scope,$el,$attrs){var member,render;return render=function(member){var ctx,html;return ctx={full_name:member.full_name?member.full_name:"",email:member.user_email?member.user_email:member.email,imgurl:member.photo?member.photo:"/images/unnamed.png"},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAvatar?$log.error("MembershipsRowAvatarDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAvatar),render(member),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAvatar",["$log","$tgTemplate",MembershipsRowAvatarDirective]),MembershipsRowAdminCheckboxDirective=function($log,$repo,$confirm,$template){var link,template;return template=$template.get("admin/admin-memberships-row-checkbox.html",!0),link=function($scope,$el,$attrs){var html,member,render;return render=function(member){var ctx,html;return ctx={inputId:"is-admin-"+member.id},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAdminCheckbox?$log.error("MembershipsRowAdminCheckboxDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAdminCheckbox),html=render(member),member.is_owner&&$el.find(":checkbox").prop("checked",!0),$el.on("click",":checkbox",function(){return function(event){var onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(data){return member.revert(),$el.find(":checkbox").prop("checked",member.is_owner),$confirm.notify("error",data.is_owner[0])},target=angular.element(event.currentTarget),member.is_owner=target.prop("checked"),$repo.save(member).then(onSuccess,onError)}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAdminCheckbox",["$log","$tgRepo","$tgConfirm","$tgTemplate",MembershipsRowAdminCheckboxDirective]),MembershipsRowRoleSelectorDirective=function($log,$repo,$confirm){var link,template;return template=_.template(''),link=function($scope,$el,$attrs){var $ctrl,html,member,render;return render=function(member){var ctx,html;return ctx={roleList:$scope.roles,selectedRole:member.role},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowRoleSelector?$log.error("MembershipsRowRoleSelectorDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowRoleSelector),html=render(member),$el.on("change","select",function(){return function(event){var newRole,onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error")},target=angular.element(event.currentTarget),newRole=parseInt(target.val(),10),member.role!==newRole?(member.role=newRole,$repo.save(member).then(onSuccess,onError)):void 0}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowRoleSelector",["$log","$tgRepo","$tgConfirm",MembershipsRowRoleSelectorDirective]),MembershipsRowActionsDirective=function($log,$repo,$rs,$confirm){var activedTemplate,link,pendingTemplate;return activedTemplate=_.template('
\n Active\n
\n\n \n'),pendingTemplate=_.template('\n Pending\n \n\n\n \n'),link=function($scope,$el,$attrs){var $ctrl,member,render;return render=function(member){var html;return html=member.user?activedTemplate():pendingTemplate(),$el.html(html)},null==$attrs.tgMembershipsRowActions?$log.error("MembershipsRowActionsDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowActions),render(member),$el.on("click",".pending",function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(){return $confirm.notify("success","We've sent the invitationi again to '"+$scope.member.email+"'.")},onError=function(){return $confirm.notify("error","We haven't sent the invitation.")},$rs.memberships.resendInvitation($scope.member.id).then(onSuccess,onError)}),$el.on("click",".delete",function(event){var message,title;return event.preventDefault(),title="Delete member",message=member.user?member.full_name:"the invitation to "+member.email,$confirm.askOnDelete(title,message).then(function(finish){var onError,onSuccess;return onSuccess=function(){return finish(),$ctrl.loadMembers(),$confirm.notify("success",null,"We've deleted "+message+".")},onError=function(){return finish(!1),$confirm.notify("error",null,"We have not been able to delete "+message+".")},$repo.remove(member).then(onSuccess,onError)})}),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowActions",["$log","$tgRepo","$tgResources","$tgConfirm",MembershipsRowActionsDirective])}.call(this),function(){var AdminNavigationDirective,module;AdminNavigationDirective=function(){var link;return link=function($scope,$el,$attrs){var section;return section=$attrs.tgAdminNavigation,$el.find(".active").removeClass("active"),$el.find("#adminmenu-"+section+" a").addClass("active"),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaAdmin"),module.directive("tgAdminNavigation",AdminNavigationDirective)}.call(this),function(){var CsvExporterController,CsvExporterIssuesController,CsvExporterTasksController,CsvExporterUserstoriesController,ProjectDefaultValuesDirective,ProjectExportDirective,ProjectModulesDirective,ProjectProfileController,ProjectProfileDirective,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectProfileController=function(superClass){function ProjectProfileController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Project profile - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:loaded",function(_this){return function(){return _this.appTitle.set("Project profile - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this))}return extend(ProjectProfileController,superClass),ProjectProfileController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectProfileController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.scope.taskStatusList=_.sortBy(project.task_statuses,"order"),_this.scope.prioritiesList=_.sortBy(project.priorities,"order"),_this.scope.severitiesList=_.sortBy(project.severities,"order"),_this.scope.issueTypesList=_.sortBy(project.issue_types,"order"),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.$emit("project:loaded",project),project}}(this))},ProjectProfileController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ProjectProfileController.prototype.openDeleteLightbox=function(){return this.rootscope.$broadcast("deletelightbox:new",this.scope.project)},ProjectProfileController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectProfileController",ProjectProfileController),ProjectProfileDirective=function($repo,$confirm,$loading,$navurls,$location){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.save($scope.project),promise.then(function(){var newUrl;return $loading.finish(submitButton),$confirm.notify("success"),newUrl=$navurls.resolve("project-admin-project-profile-details",{project:$scope.project.slug}),$location.path(newUrl),$scope.$emit("project:loaded",$scope.project)}),promise.then(null,function(data){return $loading.finish(target),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgProjectProfile",["$tgRepo","$tgConfirm","$tgLoading","$tgNavUrls","$tgLocation",ProjectProfileDirective]),ProjectDefaultValuesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.save($scope.project),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(data){return $loading.finish(target),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectDefaultValues",["$tgRepo","$tgConfirm","$tgLoading",ProjectDefaultValuesDirective]),ProjectModulesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit;return form=$el.find("form").checksley(),submit=function(){return function(){var promise,target;if(form.validate())return target=angular.element(".admin-functionalities a.button-green"),$loading.start(target),promise=$repo.save($scope.project),promise.then(function(){return $loading.finish(target),$confirm.notify("success"),$scope.$emit("project:loaded",$scope.project)}),promise.then(null,function(data){return $loading.finish(target),$confirm.notify("error",data._error_message)})}}(this),$el.on("submit","form",function(event){return event.preventDefault(),submit()}),$el.on("click",".admin-functionalities a.button-green",function(event){return event.preventDefault(),submit()}),$scope.$watch("isVideoconferenceActivated",function(isVideoconferenceActivated){return isVideoconferenceActivated?$el.find(".videoconference-attributes").removeClass("hidden"):($el.find(".videoconference-attributes").addClass("hidden"),$scope.project.videoconferences=null,$scope.project.videoconferences_salt="")}),$scope.$watch("project",function(project){return $scope.isVideoconferenceActivated=null!=project.videoconferences?!0:!1})},{link:link}},module.directive("tgProjectModules",["$tgRepo","$tgConfirm","$tgLoading",ProjectModulesDirective]),ProjectExportDirective=function($window,$rs,$confirm){var link;return link=function($scope,$el){var buttonsEl,hideButtons,hideResult,hideSpinner,resultEl,resultMessageEl,resultTitleEl,setAsyncMessage,setAsyncTitle,setLoadingMessage,setLoadingTitle,setSyncMessage,setSyncTitle,showButtons,showErrorMode,showExportResultAsyncMode,showExportResultSyncMode,showLoadingMode,showResult,showSpinner,spinnerEl;return buttonsEl=$el.find(".admin-project-export-buttons"),showButtons=function(){return buttonsEl.removeClass("hidden")},hideButtons=function(){return buttonsEl.addClass("hidden")},resultEl=$el.find(".admin-project-export-result"),showResult=function(){return resultEl.removeClass("hidden")},hideResult=function(){return resultEl.addClass("hidden")},spinnerEl=$el.find(".spin"),showSpinner=function(){return spinnerEl.removeClass("hidden")},hideSpinner=function(){return spinnerEl.addClass("hidden")},resultTitleEl=$el.find(".result-title"),setLoadingTitle=function(){return resultTitleEl.html("We are generating your dump file")},setAsyncTitle=function(){return resultTitleEl.html("We are generating your dump file")},setSyncTitle=function(){return resultTitleEl.html("Your dump file is ready!")},resultMessageEl=$el.find(".result-message "),setLoadingMessage=function(){return resultMessageEl.html("Please don't close this page.")},setAsyncMessage=function(){return resultMessageEl.html("We will send you an email when ready.")},setSyncMessage=function(url){return resultMessageEl.html("If the download doesn't start automatically click here.")},showLoadingMode=function(){return showSpinner(),setLoadingTitle(),setLoadingMessage(),hideButtons(),showResult()},showExportResultAsyncMode=function(){return hideSpinner(),setAsyncTitle(),setAsyncMessage()},showExportResultSyncMode=function(url){return hideSpinner(),setSyncTitle(),setSyncMessage(url)},showErrorMode=function(){return hideSpinner(),hideResult(),showButtons()},$el.on("click","a.button-export",debounce(2e3,function(){return function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(result){var dumpUrl;return 202===result.status?showExportResultAsyncMode():(dumpUrl=result.data.url,showExportResultSyncMode(dumpUrl),$window.open(dumpUrl,"_blank"))},onError=function(result){var errorMsg,ref;return showErrorMode(),errorMsg="Our oompa loompas have some problems generasting your dump. Please try again. ",429===result.status?errorMsg="Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. ":(null!=(ref=result.data)?ref._error_message:void 0)&&(errorMsg="Our oompa loompas have some problems generasting your dump: "+result.data._error_message),$confirm.notify("error",errorMsg)},showLoadingMode(),$rs.projects["export"]($scope.projectId).then(onSuccess,onError)}}(this)))},{link:link}},module.directive("tgProjectExport",["$window","$tgResources","$tgConfirm",ProjectExportDirective]),CsvExporterController=function(superClass){function CsvExporterController(scope,rootscope,urls,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.urls=urls,this.confirm=confirm,this.rs=rs,this._generateUuid=bind(this._generateUuid,this),this.setCsvUuid=bind(this.setCsvUuid,this),this.rootscope.$on("project:loaded",this.setCsvUuid),this.scope.$watch("csvUuid",function(_this){return function(value){return _this.scope.csvUrl=value?_this.urls.resolveAbsolute(_this.type+"-csv",value):""}}(this))}return extend(CsvExporterController,superClass),CsvExporterController.$inject=["$scope","$rootScope","$tgUrls","$tgConfirm","$tgResources"],CsvExporterController.prototype.setCsvUuid=function(){return this.scope.csvUuid=this.scope.project[this.type+"_csv_uuid"]},CsvExporterController.prototype._generateUuid=function(finish){var promise;return promise=this.rs.projects["regenerate_"+this.type+"_csv_uuid"](this.scope.projectId),promise.then(function(_this){return function(data){var ref;return _this.scope.csvUuid=null!=(ref=data.data)?ref.uuid:void 0}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this)),promise["finally"](function(){return finish()}),promise},CsvExporterController.prototype.regenerateUuid=function(){var subtitle,title;return this.scope.csvUuid?(title="Change URL",subtitle="You going to change the CSV data access url. The previous url will be disabled. Are you sure?",this.confirm.ask(title,subtitle).then(this._generateUuid)):this._generateUuid(_.identity)},CsvExporterController}(taiga.Controller),CsvExporterUserstoriesController=function(superClass){function CsvExporterUserstoriesController(){return CsvExporterUserstoriesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterUserstoriesController,superClass),CsvExporterUserstoriesController.prototype.type="userstories",CsvExporterUserstoriesController}(CsvExporterController),CsvExporterTasksController=function(superClass){function CsvExporterTasksController(){return CsvExporterTasksController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterTasksController,superClass),CsvExporterTasksController.prototype.type="tasks",CsvExporterTasksController}(CsvExporterController),CsvExporterIssuesController=function(superClass){function CsvExporterIssuesController(){return CsvExporterIssuesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterIssuesController,superClass),CsvExporterIssuesController.prototype.type="issues",CsvExporterIssuesController}(CsvExporterController),module.controller("CsvExporterUserstoriesController",CsvExporterUserstoriesController),module.controller("CsvExporterTasksController",CsvExporterTasksController),module.controller("CsvExporterIssuesController",CsvExporterIssuesController)}.call(this),function(){var ColorSelectionDirective,ProjectCustomAttributesController,ProjectCustomAttributesDirective,ProjectValuesController,ProjectValuesDirective,ProjectValuesSectionController,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectValuesSectionController=function(superClass){function ProjectValuesSectionController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Project values - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(ProjectValuesSectionController,superClass),ProjectValuesSectionController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectValuesSectionController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},ProjectValuesSectionController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ProjectValuesSectionController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectValuesSectionController",ProjectValuesSectionController),ProjectValuesController=function(superClass){function ProjectValuesController(scope,rootscope,repo,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.moveValue=bind(this.moveValue,this),this.loadValues=bind(this.loadValues,this),this.scope.$on("admin:project-values:move",this.moveValue),this.rootscope.$on("project:loaded",this.loadValues)}return extend(ProjectValuesController,superClass),ProjectValuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources"],ProjectValuesController.prototype.loadValues=function(){return this.rs[this.scope.resource].listValues(this.scope.projectId,this.scope.type).then(function(_this){return function(values){return _this.scope.values=values,_this.scope.maxValueOrder=_.max(values,"order").order,values}}(this))},ProjectValuesController.prototype.moveValue=function(ctx,itemValue,itemIndex){var r,values;return values=this.scope.values,r=values.indexOf(itemValue),values.splice(r,1),values.splice(itemIndex,0,itemValue),_.each(values,function(value,index){return value.order=index}),this.repo.saveAll(values)},ProjectValuesController}(taiga.Controller),module.controller("ProjectValuesController",ProjectValuesController),ProjectValuesDirective=function($log,$repo,$confirm){var link,linkDragAndDrop,linkValue;return linkDragAndDrop=function($scope,$el){var itemEl,newParentScope,oldParentScope,tdom;return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el.find(".sortable"),tdom.sortable({handle:".row.table-main.visualization",dropOnEmpty:!0,connectWith:".project-values-body",revert:400,axis:"y"}),tdom.on("sortstop",function(event,ui){var itemIndex,itemValue;return itemEl=ui.item,itemValue=itemEl.scope().value,itemIndex=itemEl.index(),$scope.$broadcast("admin:project-values:move",itemValue,itemIndex)}),$scope.$on("$destroy",function(){return $el.off()})},linkValue=function($scope,$el,$attrs){var $ctrl,cancel,goToBottomList,initializeNewValue,saveNewValue,saveValue,valueType;return $ctrl=$el.controller(),valueType=$attrs.type,initializeNewValue=function(){return $scope.newValue={name:"",is_closed:!1,is_archived:!1}},initializeNewValue(),goToBottomList=function(){return function(focus){var table;return null==focus&&(focus=!1),table=$el.find(".table-main"),$(document.body).scrollTop(table.offset().top+table.height()),focus?$el.find(".new-value input:visible").first().focus():void 0}}(this),saveValue=function(target){var form,formEl,promise,value;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?(value=formEl.scope().value,promise=$repo.save(value),promise.then(function(){return function(){var row;return row=target.parents(".row.table-main"),row.addClass("hidden"),row.siblings(".visualization").removeClass("hidden")}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},saveNewValue=function(target){var form,formEl,promise;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,$scope.newValue.order=$scope.maxValueOrder?$scope.maxValueOrder+1:1,promise=$repo.create(valueType,$scope.newValue),promise.then(function(){return function(data){return target.addClass("hidden"),$scope.values.push(data),$scope.maxValueOrder=data.order,initializeNewValue()}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},cancel=function(target){var formEl,row,value;return row=target.parents(".row.table-main"),formEl=target.parents("form"),value=formEl.scope().value,$scope.$apply(function(){return row.addClass("hidden"),value.revert(),row.siblings(".visualization").removeClass("hidden")})},$el.on("click",".show-add-new",function(event){return event.preventDefault(),$el.find(".new-value").removeClass("hidden"),goToBottomList(!0)}),$el.on("click",".add-new",debounce(2e3,function(event){var target;return event.preventDefault(),target=$el.find(".new-value"),saveNewValue(target)})),$el.on("click",".delete-new",function(event){return event.preventDefault(),$el.find(".new-value").addClass("hidden"),initializeNewValue()}),$el.on("click",".edit-value",function(event){var editionRow,row,target;return event.preventDefault(),target=angular.element(event.currentTarget),row=target.parents(".row.table-main"),row.addClass("hidden"),editionRow=row.siblings(".edition"),editionRow.removeClass("hidden"),editionRow.find("input:visible").first().focus().select()}),$el.on("keyup",".edition input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),saveValue(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("keyup",".new-value input",function(event){var target;return 13===event.keyCode?(target=$el.find(".new-value"),saveNewValue(target)):27===event.keyCode?($el.find(".new-value").addClass("hidden"),initializeNewValue()):void 0}),$el.on("click",".save",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),saveValue(target)}),$el.on("click",".cancel",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),cancel(target)}),$el.on("click",".delete-value",function(event){var choices,formEl,replacement,subtitle,target,title,value;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.parents("form"),value=formEl.scope().value,choices={},_.each($scope.values,function(option){return value.id!==option.id?choices[option.id]=option.name:void 0}),title="Delete value",subtitle=value.name,replacement="All items with this value will be changed to",0===_.keys(choices).length?$confirm.error("You can't delete all values."):$confirm.askChoice(title,subtitle,choices,replacement).then(function(response){var onError,onSucces;return onSucces=function(){return $ctrl.loadValues()["finally"](function(){return response.finish()})},onError=function(){return $confirm.notify("error")},$repo.remove(value,{moveTo:response.selected}).then(onSucces,onError)})})},link=function($scope,$el,$attrs){return linkDragAndDrop($scope,$el,$attrs),linkValue($scope,$el,$attrs),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectValues",["$log","$tgRepo","$tgConfirm","$tgLocation","animationFrame",ProjectValuesDirective]),ColorSelectionDirective=function(){var link;return link=function($scope,$el,$attrs,$model){var $ctrl;return $ctrl=$el.controller(),$scope.$watch($attrs.ngModel,function(element){return $scope.color=element.color}),$el.on("click",".current-color",function(event){var body,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),$el.find(".select-color").hide(),target.siblings(".select-color").show(),body=angular.element("body"),body.on("click",function(){return function(event){return 0===angular.element(event.target).parent(".select-color").length?($el.find(".select-color").hide(),body.unbind("click")):void 0 +}}(this))}),$el.on("click",".select-color .color",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $model.$modelValue.color=target.data("color")}),$el.find(".select-color").hide()}),$el.on("click",".select-color .selected-color",function(event){return event.preventDefault(),$scope.$apply(function(){return $model.$modelValue.color=$scope.color}),$el.find(".select-color").hide()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgColorSelection",ColorSelectionDirective),ProjectCustomAttributesController=function(superClass){function ProjectCustomAttributesController(scope,rootscope,repo,rs,params,q,location,navUrls,appTitle){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,this.moveCustomAttributes=bind(this.moveCustomAttributes,this),this.deleteCustomAttribute=bind(this.deleteCustomAttribute,this),this.saveCustomAttribute=bind(this.saveCustomAttribute,this),this.createCustomAttribute=bind(this.createCustomAttribute,this),this.loadCustomAttributes=bind(this.loadCustomAttributes,this),this.scope.project={},this.rootscope.$on("project:loaded",function(_this){return function(){return _this.loadCustomAttributes(),_this.appTitle.set("Project Custom Attributes - "+_this.scope.sectionName+" - "+_this.scope.project.name)}}(this))}return extend(ProjectCustomAttributesController,superClass),ProjectCustomAttributesController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],ProjectCustomAttributesController.prototype.loadCustomAttributes=function(){return this.rs.customAttributes[this.scope.type].list(this.scope.projectId).then(function(_this){return function(customAttributes){return _this.scope.customAttributes=customAttributes,_this.scope.maxOrder=_.max(customAttributes,"order").order,customAttributes}}(this))},ProjectCustomAttributesController.prototype.createCustomAttribute=function(attrValues){return this.repo.create("custom-attributes/"+this.scope.type,attrValues)},ProjectCustomAttributesController.prototype.saveCustomAttribute=function(attrModel){return this.repo.save(attrModel)},ProjectCustomAttributesController.prototype.deleteCustomAttribute=function(attrModel){return this.repo.remove(attrModel)},ProjectCustomAttributesController.prototype.moveCustomAttributes=function(attrModel,newIndex){var customAttributes,r;return customAttributes=this.scope.customAttributes,r=customAttributes.indexOf(attrModel),customAttributes.splice(r,1),customAttributes.splice(newIndex,0,attrModel),_.each(customAttributes,function(val,idx){return val.order=idx}),this.repo.saveAll(customAttributes)},ProjectCustomAttributesController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectCustomAttributesController",ProjectCustomAttributesController),ProjectCustomAttributesDirective=function($log,$confirm){var link;return link=function($scope,$el){var $ctrl,cancelCreate,cancelUpdate,create,deleteCustomAttribute,hideAddButton,hideCancelButton,hideCreateForm,hideEditForm,resetNewAttr,revertChangesInCustomAttribute,showAddButton,showCancelButton,showCreateForm,showEditForm,sortableEl,update;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),sortableEl=$el.find(".js-sortable"),sortableEl.sortable({handle:".js-view-custom-field",dropOnEmpty:!0,revert:400,axis:"y"}),sortableEl.on("sortstop",function(event,ui){var itemAttr,itemEl,itemIndex;return itemEl=ui.item,itemAttr=itemEl.scope().attr,itemIndex=itemEl.index(),$ctrl.moveCustomAttributes(itemAttr,itemIndex)}),showCreateForm=function(){return $el.find(".js-new-custom-field").removeClass("hidden"),$el.find(".js-new-custom-field input:visible").first().focus()},hideCreateForm=function(){return $el.find(".js-new-custom-field").addClass("hidden")},showAddButton=function(){return $el.find(".js-add-custom-field-button").removeClass("hidden")},hideAddButton=function(){return $el.find(".js-add-custom-field-button").addClass("hidden")},showCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").removeClass("hidden")},hideCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").addClass("hidden")},resetNewAttr=function(){return $scope.newAttr={}},create=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(){return function(){return $ctrl.loadCustomAttributes(),hideCreateForm(),resetNewAttr(),$confirm.notify("success")}}(this),onError=function(){return function(data){return form.setErrors(data)}}(this),attr=$scope.newAttr,attr.project=$scope.projectId,attr.order=$scope.maxOrder?$scope.maxOrder+1:1,$ctrl.createCustomAttribute(attr).then(onSucces,onError)):void 0},cancelCreate=function(){return hideCreateForm(),resetNewAttr()},$scope.$watch("customAttributes",function(customAttributes){return customAttributes?0===customAttributes.length?(hideCancelButton(),hideAddButton(),showCreateForm()):(hideCreateForm(),showAddButton(),showCancelButton()):void 0}),$el.on("click",".js-add-custom-field-button",function(event){return event.preventDefault(),showCreateForm()}),$el.on("click",".js-create-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)})),$el.on("click",".js-cancel-new-custom-field-button",function(event){return event.preventDefault(),cancelCreate()}),$el.on("keyup",".js-new-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)):27===event.keyCode?cancelCreate():void 0}),showEditForm=function(formEl){return formEl.find(".js-view-custom-field").addClass("hidden"),formEl.find(".js-edit-custom-field").removeClass("hidden"),formEl.find(".js-edit-custom-field input:visible").first().focus().select()},hideEditForm=function(formEl){return formEl.find(".js-edit-custom-field").addClass("hidden"),formEl.find(".js-view-custom-field").removeClass("hidden")},revertChangesInCustomAttribute=function(formEl){return $scope.$apply(function(){return formEl.scope().attr.revert()})},update=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(){return function(){return $ctrl.loadCustomAttributes(),hideEditForm(formEl),$confirm.notify("success")}}(this),onError=function(){return function(data){return form.setErrors(data)}}(this),attr=formEl.scope().attr,$ctrl.saveCustomAttribute(attr).then(onSucces,onError)):void 0},cancelUpdate=function(formEl){return hideEditForm(formEl),revertChangesInCustomAttribute(formEl)},$el.on("click",".js-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),showEditForm(formEl)}),$el.on("click",".js-update-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)})),$el.on("click",".js-cancel-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)}),$el.on("keyup",".js-edit-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)):27===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)):void 0}),deleteCustomAttribute=function(formEl){var attr,message,subtitle,title;return attr=formEl.scope().attr,title="Delete custom attribute",subtitle="Remeber that all values in this custom field will be deleted.
Are you sure you want to continue?",message=attr.name,$confirm.ask(title,subtitle,message).then(function(finish){var onError,onSucces;return onSucces=function(){return $ctrl.loadCustomAttributes()["finally"](function(){return finish()})},onError=function(){return finish(!1),$confirm.notify("error",null,"We have not been able to delete '"+message+"'.")},$ctrl.deleteCustomAttribute(attr).then(onSucces,onError)})},$el.on("click",".js-delete-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),deleteCustomAttribute(formEl)}))},{link:link}},module.directive("tgProjectCustomAttributes",["$log","$tgConfirm","animationFrame",ProjectCustomAttributesDirective])}.call(this),function(){var EditRoleDirective,NewRoleDirective,RolePermissionsDirective,RolesController,RolesDirective,bindMethods,bindOnce,debounce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,mixOf=this.taiga.mixOf,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),RolesController=function(superClass){function RolesController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appTitle){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Permissions",this.scope.project={},this.scope.anyComputableRole=!0,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Roles - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(RolesController,superClass),RolesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$appTitle"],RolesController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.anyComputableRole=_.some(_.map(project.roles,function(point){return point.computable})),project}}(this))},RolesController.prototype.loadExternalUserRole=function(roles){var public_permission;return roles=roles.map(function(role){return role.external_user=!1,role}),public_permission={name:"External User",permissions:this.scope.project.public_permissions,external_user:!0},roles.push(public_permission),roles},RolesController.prototype.loadRoles=function(){return this.rs.roles.list(this.scope.projectId).then(this.loadExternalUserRole).then(function(_this){return function(roles){return _this.scope.roles=roles,_this.scope.role=_this.scope.roles[0],roles}}(this))},RolesController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadUsersAndRoles()}}(this)).then(function(_this){return function(){return _this.loadRoles()}}(this))},RolesController.prototype.setRole=function(role){return this.scope.role=role,this.scope.$broadcast("role:changed",this.scope.role)},RolesController.prototype["delete"]=function(){var choices,i,len,ref,replacement,role,subtitle,title,warning;for(title="Delete Role",subtitle=this.scope.role.name,replacement="All the users with this role will be moved to",warning="Be careful, all role estimations will be removed",choices={},ref=this.scope.roles,i=0,len=ref.length;len>i;i++)role=ref[i],role.id!==this.scope.role.id&&(choices[role.id]=role.name);return 0===_.keys(choices).length?this.confirm.error("You can't delete all values."):this.confirm.askChoice(title,subtitle,choices,replacement,warning).then(function(_this){return function(response){var promise;return promise=_this.repo.remove(_this.scope.role,{moveTo:response.selected}),promise.then(function(){return _this.loadProject(),_this.loadRoles()["finally"](function(){return response.finish()})}),promise.then(null,function(){return _this.confirm.notify("error")})}}(this))},RolesController.prototype.setComputable=debounce(2e3,function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.confirm.notify("success"),_this.loadProject()}}(this),onError=function(_this){return function(){return _this.confirm.notify("error"),_this.scope.role.revert()}}(this),this.repo.save(this.scope.role).then(onSuccess,onError)}),RolesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("RolesController",RolesController),EditRoleDirective=function($repo,$confirm){var link;return link=function($scope,$el){var submit,toggleView;return toggleView=function(){return $el.find(".total").toggle(),$el.find(".edit-role").toggle()},submit=function(){var promise;return $scope.role.name=$el.find("input").val(),promise=$repo.save($scope.role),promise.then(function(){return $confirm.notify("success")}),promise.then(null,function(){return $confirm.notify("error")}),toggleView()},$el.on("click","a.icon-edit",function(){return toggleView(),$el.find("input").focus(),$el.find("input").val($scope.role.name)}),$el.on("click","a.save",submit),$el.on("keyup","input",function(event){return 13===event.keyCode?submit():27===event.keyCode?toggleView():void 0}),$scope.$on("role:changed",function(){return $el.find(".edit-role").is(":visible")?toggleView():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgEditRole",["$tgRepo","$tgConfirm",EditRoleDirective]),RolesDirective=function(){var link;return link=function($scope,$el){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRoles",RolesDirective),NewRoleDirective=function($tgrepo,$confirm){var DEFAULT_PERMISSIONS,link;return DEFAULT_PERMISSIONS=["view_project","view_milestones","view_us","view_tasks","view_issues"],link=function($scope,$el){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click","a.add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new").focus(),$el.find(".add-button").hide()}),$el.on("keyup",".new",function(event){var newRole,onError,onSuccess,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newRole={project:$scope.projectId,name:target.val(),permissions:DEFAULT_PERMISSIONS,order:_.max($scope.roles,function(r){return r.order}).order+1,computable:!1},$el.find(".new").addClass("hidden"),$el.find(".new").val(""),onSuccess=function(role){return $scope.roles.push(role),$ctrl.setRole(role),$el.find(".add-button").show(),$ctrl.loadProject()},onError=function(){return $confirm.notify("error")},$tgrepo.create("roles",newRole).then(onSuccess,onError)):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new").val(""),$el.find(".add-button").show()):void 0})},{link:link}},module.directive("tgNewRole",["$tgRepo","$tgConfirm",NewRoleDirective]),RolePermissionsDirective=function($rootscope,$repo,$confirm){var baseTemplate,categoryTemplate,link,resumeTemplate;return resumeTemplate=_.template('
<%- category.name %>
\n
\n
<%- category.activePermissions %>/<%- category.permissions.length %>
\n <% _.each(category.permissions, function(permission) { %>\n
\n <% }) %>\n
\n
'),categoryTemplate=_.template('
\n
\n
\n
\n
\n <% _.each(category.permissions, function(permission) { %>\n
\n <%- permission.description %>\n
\n disabled="disabled"<% } %> <% if(permission.active) { %>checked="checked"<% } %>/>\n
\n Yes\n No\n
\n
\n <% }) %>\n
\n
\n
'),baseTemplate=_.template('
'),link=function($scope,$el,$attrs){var $ctrl,generateCategoriesFromRole,renderCategory,renderPermissions,renderResume;return $ctrl=$el.controller(),generateCategoriesFromRole=function(role){var categories,isPermissionEditable,issuePermissions,milestonePermissions,setActivePermissions,setActivePermissionsPerCategory,taskPermissions,userStoryPermissions,wikiPermissions;return setActivePermissions=function(permissions){return _.map(permissions,function(x){var ref;return _.extend({},x,{active:(ref=x.key,indexOf.call(role.permissions,ref)>=0)})})},isPermissionEditable=function(permission,role,project){return role.external_user&&!project.is_private&&0===permission.key.indexOf("view_")?!1:!0},setActivePermissionsPerCategory=function(category){return _.map(category,function(cat){return cat.permissions=cat.permissions.map(function(permission){return permission.editable=isPermissionEditable(permission,role,$scope.project),permission}),_.extend({},cat,{activePermissions:_.filter(cat.permissions,"active").length})})},categories=[],milestonePermissions=[{key:"view_milestones",description:"View sprints"},{key:"add_milestone",description:"Add sprint"},{key:"modify_milestone",description:"Modify sprint"},{key:"delete_milestone",description:"Delete sprint"}],categories.push({name:"Sprints",permissions:setActivePermissions(milestonePermissions)}),userStoryPermissions=[{key:"view_us",description:"View user story"},{key:"add_us",description:"Add user story"},{key:"modify_us",description:"Modify user story"},{key:"delete_us",description:"Delete user story"}],categories.push({name:"User Stories",permissions:setActivePermissions(userStoryPermissions)}),taskPermissions=[{key:"view_tasks",description:"View tasks"},{key:"add_task",description:"Add task"},{key:"modify_task",description:"Modify task"},{key:"delete_task",description:"Delete task"}],categories.push({name:"Tasks",permissions:setActivePermissions(taskPermissions)}),issuePermissions=[{key:"view_issues",description:"View issues"},{key:"add_issue",description:"Add issue"},{key:"modify_issue",description:"Modify issue"},{key:"delete_issue",description:"Delete issue"}],categories.push({name:"Issues",permissions:setActivePermissions(issuePermissions)}),wikiPermissions=[{key:"view_wiki_pages",description:"View wiki pages"},{key:"add_wiki_page",description:"Add wiki page"},{key:"modify_wiki_page",description:"Modify wiki page"},{key:"delete_wiki_page",description:"Delete wiki page"},{key:"view_wiki_links",description:"View wiki links"},{key:"add_wiki_link",description:"Add wiki link"},{key:"delete_wiki_link",description:"Delete wiki link"}],categories.push({name:"Wiki",permissions:setActivePermissions(wikiPermissions)}),setActivePermissionsPerCategory(categories)},renderResume=function(element,category){return element.find(".resume").html(resumeTemplate({category:category}))},renderCategory=function(category,index){var html;return html=categoryTemplate({category:category,index:index}),html=angular.element(html),renderResume(html,category),html},renderPermissions=function(){var html;return $el.off(),html=baseTemplate(),_.each(generateCategoriesFromRole($scope.role),function(category,index){return html=angular.element(html).append(renderCategory(category,index))}),$el.html(html),$el.on("click",".resume",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.next().toggleClass("open")}),$el.on("change",".category-item input",function(event){var getActivePermissions,onError,onSuccess,target;return getActivePermissions=function(){var activePermissions;return activePermissions=_.filter($el.find(".category-item input"),function(t){return angular.element(t).is(":checked")}),activePermissions=_.sortBy(_.map(activePermissions,function(t){var permission;return permission=angular.element(t).parents(".category-item").data("id")})),activePermissions.push("view_project"),activePermissions},target=angular.element(event.currentTarget),$scope.role.permissions=getActivePermissions(),onSuccess=function(){var categories,categoryId;return categories=generateCategoriesFromRole($scope.role),categoryId=target.parents(".category-config").data("id"),renderResume(target.parents(".category-config"),categories[categoryId]),$rootscope.$broadcast("projects:reload"),$confirm.notify("success"),$ctrl.loadProject()},onError=function(){return $confirm.notify("error"),target.prop("checked",!target.prop("checked")),$scope.role.permissions=getActivePermissions()},$scope.role.external_user?($scope.project.public_permissions=$scope.role.permissions,$scope.project.anon_permissions=$scope.role.permissions.filter(function(permission){return 0===permission.indexOf("view_")}),$repo.save($scope.project).then(onSuccess,onError)):$repo.save($scope.role).then(onSuccess,onError)})},$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("role:changed",function(){return renderPermissions()}),bindOnce($scope,$attrs.ngModel,renderPermissions)},{link:link}},module.directive("tgRolePermissions",["$rootScope","$tgRepo","$tgConfirm",RolePermissionsDirective])}.call(this),function(){var BitbucketController,BitbucketWebhooksDirective,GithubController,GithubWebhooksDirective,GitlabController,GitlabWebhooksDirective,NewWebhookDirective,SelectInputText,ValidOriginIpsDirective,WebhookDirective,WebhooksController,bindMethods,debounce,mixOf,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,debounce=this.taiga.debounce,timeout=this.taiga.timeout,module=angular.module("taigaAdmin"),WebhooksController=function(superClass){function WebhooksController(scope,repo,rs,params,location,navUrls,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.location=location,this.navUrls=navUrls,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Webhooks",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Webhooks - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("webhooks:reload",this.loadWebhooks)}return extend(WebhooksController,superClass),WebhooksController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$tgLocation","$tgNavUrls","$appTitle"],WebhooksController.prototype.loadWebhooks=function(){return this.rs.webhooks.list(this.scope.projectId).then(function(_this){return function(webhooks){return _this.scope.webhooks=webhooks}}(this))},WebhooksController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return project.i_am_owner||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},WebhooksController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadWebhooks()}}(this))},WebhooksController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("WebhooksController",WebhooksController),WebhookDirective=function($rs,$repo,$confirm){var link;return link=function($scope,$el,$attrs){var cancel,openHistory,save,showEditMode,showVisualizationMode,updateLogs,updateShowHideHistoryText,webhook;return webhook=$scope.$eval($attrs.tgWebhook),updateLogs=function(){return $rs.webhooklogs.list(webhook.id).then(function(){return function(webhooklogs){var i,len,log,ref;for(i=0,len=webhooklogs.length;len>i;i++)log=webhooklogs[i],log.validStatus=200<=(ref=log.status)&&300>ref,log.prettySentHeaders=_.map(_.pairs(log.request_headers),function(arg){var header,value;return header=arg[0],value=arg[1],header+": "+value}).join("\n"),log.prettySentData=JSON.stringify(log.request_data),log.prettyDate=moment(log.created).format("DD MMM YYYY [at] hh:mm:ss");return webhook.logs_counter=webhooklogs.length,webhook.logs=webhooklogs,updateShowHideHistoryText()}}(this))},updateShowHideHistoryText=function(){var historyElement,textElement;return textElement=$el.find(".toggle-history"),historyElement=textElement.parents(".single-webhook-wrapper").find(".webhooks-history"),textElement.text(historyElement.hasClass("open")?"(Hide history)":"(Show history)")},showVisualizationMode=function(){return $el.find(".edition-mode").addClass("hidden"),$el.find(".visualization-mode").removeClass("hidden")},showEditMode=function(){return $el.find(".visualization-mode").addClass("hidden"),$el.find(".edition-mode").removeClass("hidden")},openHistory=function(){return $el.find(".webhooks-history").addClass("open")},cancel=function(){return showVisualizationMode(),$scope.$apply(function(){return webhook.revert()})},save=debounce(2e3,function(target){var form,promise;return form=target.parents("form").checksley(),form.validate()?(promise=$repo.save(webhook),promise.then(function(){return function(){return showVisualizationMode()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),$el.on("click",".test-webhook",function(){return openHistory(),$rs.webhooks.test(webhook.id).then(function(){return function(){return updateLogs()}}(this))}),$el.on("click",".edit-webhook",function(){return showEditMode()}),$el.on("click",".cancel-existing",function(){return cancel()}),$el.on("click",".edit-existing",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),save(target)}),$el.on("keyup",".edition-mode input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),save(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("click",".delete-webhook",function(){var message,title;return title="Delete webhook",message="Webhook '"+webhook.name+"'",$confirm.askOnDelete(title,message).then(function(){return function(finish){var onError,onSucces;return onSucces=function(){return finish(),$scope.$emit("webhooks:reload")},onError=function(){return finish(!1),$confirm.notify("error")},$repo.remove(webhook).then(onSucces,onError)}}(this))}),$el.on("click",".toggle-history",function(event){var target;return target=angular.element(event.currentTarget),null==webhook.logs||0===webhook.logs.length?updateLogs().then(function(){return timeout(0,function(){return $el.find(".webhooks-history").toggleClass("open"),updateShowHideHistoryText()})}):($el.find(".webhooks-history").toggleClass("open"),$scope.$apply(function(){return updateShowHideHistoryText()}))}),$el.on("click",".history-single",function(event){var target;return target=angular.element(event.currentTarget),target.toggleClass("history-single-open"),target.siblings(".history-single-response").toggleClass("open")}),$el.on("click",".resend-request",function(event){var log,target;return target=angular.element(event.currentTarget),log=target.data("log"),$rs.webhooklogs.resend(log).then(function(){return function(){return updateLogs()}}(this))})},{link:link}},module.directive("tgWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",WebhookDirective]),NewWebhookDirective=function($rs,$repo,$confirm){var link;return link=function($scope,$el,$attrs){var addWebhookDOMNode,formDOMNode,initializeNewValue,save,webhook;return webhook=$scope.$eval($attrs.tgWebhook),formDOMNode=$el.find(".new-webhook-form"),addWebhookDOMNode=$el.find(".add-webhook"),initializeNewValue=function(){return $scope.newValue={name:"",url:"",key:""}},initializeNewValue(),$scope.$watch("webhooks",function(webhooks){return null!=webhooks?0===webhooks.length?(formDOMNode.removeClass("hidden"),addWebhookDOMNode.addClass("hidden"),formDOMNode.find("input")[0].focus()):(formDOMNode.addClass("hidden"),addWebhookDOMNode.removeClass("hidden")):void 0}),save=debounce(2e3,function(){var form,promise;return form=formDOMNode.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,promise=$repo.create("webhooks",$scope.newValue),promise.then(function(){return function(){return $scope.$emit("webhooks:reload"),initializeNewValue()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),formDOMNode.on("click",".add-new",function(event){return event.preventDefault(),save()}),formDOMNode.on("keyup","input",function(event){return 13===event.keyCode?save():void 0}),formDOMNode.on("click",".cancel-new",function(){return $scope.$apply(function(){return initializeNewValue()})}),addWebhookDOMNode.on("click",function(){return formDOMNode.removeClass("hidden"),formDOMNode.find("input")[0].focus()})},{link:link}},module.directive("tgNewWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",NewWebhookDirective]),GithubController=function(superClass){function GithubController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Github",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Github - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(GithubController,superClass),GithubController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],GithubController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"github").then(function(_this){return function(github){return _this.scope.github=github}}(this))},GithubController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GithubController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject() +}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},GithubController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GithubController",GithubController),GitlabController=function(superClass){function GitlabController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Gitlab",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Gitlab - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(GitlabController,superClass),GitlabController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],GitlabController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"gitlab").then(function(_this){return function(gitlab){return _this.scope.gitlab=gitlab}}(this))},GitlabController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GitlabController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},GitlabController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GitlabController",GitlabController),BitbucketController=function(superClass){function BitbucketController(scope,repo,rs,params,appTitle){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appTitle=appTitle,bindMethods(this),this.scope.sectionName="Bitbucket",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set("Bitbucket - "+_this.scope.project.name)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(BitbucketController,superClass),BitbucketController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$appTitle"],BitbucketController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"bitbucket").then(function(_this){return function(bitbucket){return _this.scope.bitbucket=bitbucket}}(this))},BitbucketController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},BitbucketController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadModules()}}(this))},BitbucketController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BitbucketController",BitbucketController),SelectInputText=function(){var link;return link=function($scope,$el){return $el.on("click",".select-input-content",function(){return $el.find("input").select(),$el.find(".help-copy").addClass("visible")})},{link:link}},module.directive("tgSelectInputText",SelectInputText),GithubWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.github,"github"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGithubWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GithubWebhooksDirective]),GitlabWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.gitlab,"gitlab"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGitlabWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GitlabWebhooksDirective]),BitbucketWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.saveAttribute($scope.bitbucket,"bitbucket"),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return $loading.finish(submitButton),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgBitbucketWebhooks",["$tgRepo","$tgConfirm","$tgLoading",BitbucketWebhooksDirective]),ValidOriginIpsDirective=function(){var link;return link=function($scope,$el,$attrs,$ngModel){return $ngModel.$parsers.push(function(value){return value=$.trim(value),""===value?[]:value.split(",")})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgValidOriginIps",ValidOriginIpsDirective)}.call(this),function(){var CreateProject,DeleteProjectDirective,bindOnce,debounce,module,taiga,timeout;taiga=this.taiga,bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,debounce=this.taiga.debounce,module=angular.module("taigaProject"),CreateProject=function($rootscope,$repo,$confirm,$location,$navurls,$rs,$projectUrl,$loading,lightboxService,$cacheFactory){var link;return link=function($scope,$el){var form,onErrorSubmit,onSuccessSubmit,submit,submitButton;return $scope.data={},$scope.templates=[],form=$el.find("form").checksley({onlyOneErrorElement:!0}),onSuccessSubmit=function(response){return $cacheFactory.get("$http").removeAll(),$loading.finish(submitButton),$rootscope.$broadcast("projects:reload"),$confirm.notify("success","Success"),$location.url($projectUrl.get(response)),lightboxService.close($el)},onErrorSubmit=function(response){var error_field,error_step,i,len,ref,selectors;for($loading.finish(submitButton),form.setErrors(response),selectors=[],ref=_.keys(response),i=0,len=ref.length;len>i;i++)error_field=ref[i],selectors.push("[name="+error_field+"]");return $el.find(".active").removeClass("active"),error_step=$el.find(selectors.join(",")).first().parents(".wizard-step"),error_step.addClass("active"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(error_step.data("step"))},submit=function(){return function(event){var promise;return event.preventDefault(),form.validate()?($loading.start(submitButton),promise=$repo.create("projects",$scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this),$scope.$on("projects:create",function(){return $scope.data={total_story_points:100,total_milestones:5},$scope.templates.length?$scope.data.creation_template=_.head(_.filter($scope.templates,function(x){return"scrum"===x.slug})).id:$rs.projects.templates().then(function(){return function(result){return $scope.templates=result,$scope.data.creation_template=_.head(_.filter($scope.templates,function(x){return"scrum"===x.slug})).id}}(this)),$el.find(".active").removeClass("active"),$el.find(".create-step1").addClass("active"),lightboxService.open($el),timeout(600,function(){return $el.find(".progress-bar").addClass("step1")})}),$el.on("click",".button-next",function(event){var current,field,i,len,next,ref,step,valid;for(event.preventDefault(),current=$el.find(".active"),valid=!0,ref=form.fields,i=0,len=ref.length;len>i;i++)field=ref[i],current.find("[name="+field.element.attr("name")+"]").length&&(valid=field.validate()!==!1&&valid);return valid?(next=current.next(),current.toggleClass("active"),next.toggleClass("active"),step=next.data("step"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(step)):void 0}),$el.on("click",".button-prev",function(event){var current,prev,step;return event.preventDefault(),current=$el.find(".active"),prev=current.prev(),current.toggleClass("active"),prev.toggleClass("active"),step=prev.data("step"),$el.find(".progress-bar").removeClass().addClass("progress-bar").addClass(step)}),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".close",function(event){return event.preventDefault(),lightboxService.close($el)})},{link:link}},module.directive("tgLbCreateProject",["$rootScope","$tgRepo","$tgConfirm","$location","$tgNavUrls","$tgResources","$projectUrl","$tgLoading","lightboxService","$cacheFactory",CreateProject]),DeleteProjectDirective=function($repo,$rootscope,$auth,$location,$navUrls,$confirm,lightboxService,tgLoader){var link;return link=function($scope,$el){var projectToDelete,submit;return projectToDelete=null,$scope.$on("deletelightbox:new",function(ctx,project){return lightboxService.open($el),projectToDelete=project}),$scope.$on("$destroy",function(){return $el.off()}),submit=function(){var promise;return tgLoader.start(),lightboxService.close($el),promise=$repo.remove(projectToDelete),promise.then(function(){return tgLoader.pageLoaded(),$rootscope.$broadcast("projects:reload"),$location.path($navUrls.resolve("home")),$confirm.notify("success")}),promise.then(null,function(){return $confirm.notify("error"),lightboxService.close($el)})},$el.on("click",".button-red",function(event){return event.preventDefault(),lightboxService.close($el)}),$el.on("click",".button-green",function(event){return event.preventDefault(),submit()})},{link:link}},module.directive("tgLbDeleteProject",["$tgRepo","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","$tgConfirm","lightboxService","tgLoader",DeleteProjectDirective])}.call(this),function(){var ProjectController,ProjectsController,ProjectsListDirective,ProjectsPaginationDirective,bindOnce,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,module=angular.module("taigaProject"),bindOnce=this.taiga.bindOnce,ProjectsController=function(superClass){function ProjectsController(scope,q,rs,rootscope,navUrls,auth,location,appTitle,projectUrl,tgLoader){var promise;this.scope=scope,this.q=q,this.rs=rs,this.rootscope=rootscope,this.navUrls=navUrls,this.auth=auth,this.location=location,this.appTitle=appTitle,this.projectUrl=projectUrl,this.appTitle.set("Projects"),this.auth.isAuthenticated()||this.location.path(this.navUrls.resolve("login")),this.user=this.auth.getUser(),this.projects=[],promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.scope.$emit("projects:loaded",_this.projects)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),promise["finally"](tgLoader.pageLoaded)}return extend(ProjectsController,superClass),ProjectsController.$inject=["$scope","$q","$tgResources","$rootScope","$tgNavUrls","$tgAuth","$tgLocation","$appTitle","$projectUrl","tgLoader"],ProjectsController.prototype.loadInitialData=function(){var ref;return this.rs.projects.listByMember(null!=(ref=this.rootscope.user)?ref.id:void 0).then(function(_this){return function(projects){var i,len,project;for(_this.projects={recents:projects.slice(0,8),all:projects},i=0,len=projects.length;len>i;i++)project=projects[i],project.url=_this.projectUrl.get(project);return projects}}(this))},ProjectsController.prototype.newProject=function(){return this.rootscope.$broadcast("projects:create")},ProjectsController.prototype.logout=function(){return this.auth.logout(),this.location.path(this.navUrls.resolve("login"))},ProjectsController}(taiga.Controller),module.controller("ProjectsController",ProjectsController),ProjectController=function(superClass){function ProjectController(scope,rs,repo,params,q,rootscope,appTitle,location,navUrls){var promise;this.scope=scope,this.rs=rs,this.repo=repo,this.params=params,this.q=q,this.rootscope=rootscope,this.appTitle=appTitle,this.location=location,this.navUrls=navUrls,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.project.name),_this.scope.$emit("regenerate:project-pagination")}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(ProjectController,superClass),ProjectController.$inject=["$scope","$tgResources","$tgRepo","$routeParams","$q","$rootScope","$appTitle","$tgLocation","$tgNavUrls"],ProjectController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadPageData()}}(this)).then(function(_this){return function(){return _this.scope.$emit("project:loaded",_this.scope.project)}}(this))},ProjectController.prototype.loadPageData=function(){return this.q.all([this.loadProjectStats(),this.loadProject()])},ProjectController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,project}}(this))},ProjectController.prototype.loadProjectStats=function(){return this.rs.projects.stats(this.scope.projectId).then(function(_this){return function(stats){return _this.scope.stats=stats,stats}}(this))},ProjectController}(taiga.Controller),module.controller("ProjectController",ProjectController),ProjectsPaginationDirective=function(){var link;return link=function($scope,$el){var checkButtonVisibility,container,containerSize,hasNextPage,hasPagination,hasPrevPage,hide,nextBtn,nextPage,pageSize,prevBtn,prevPage,remove,render,visible;return prevBtn=$el.find(".v-pagination-previous"),nextBtn=$el.find(".v-pagination-next"),container=$el.find("ul"),pageSize=0,containerSize=0,render=function(){return pageSize=$el.find(".v-pagination-list").height(),container.find("li").length&&hasPagination()?(hasNextPage()?visible(nextBtn):hide(nextBtn),hasPrevPage()?visible(prevBtn):hide(prevBtn)):remove()},hasPagination=function(){return containerSize=container.height(),containerSize>pageSize},hasPrevPage=function(top){return null==top&&(top=-parseInt(container.css("top"),10)||0),0!==top},hasNextPage=function(top){return containerSize=container.height(),top||(top=-parseInt(container.css("top"),10)||0),containerSize>pageSize&&containerSize>top+pageSize},nextPage=function(callback){var lastLi,maxTop,newTop,top;return top=parseInt(container.css("top"),10),newTop=top-pageSize,lastLi=$el.find(".v-pagination-list li:last-child"),maxTop=-(lastLi.position().top+lastLi.outerHeight()-pageSize),maxTop>newTop&&(newTop=maxTop),container.animate({top:newTop},callback),newTop},prevPage=function(callback){var newTop,top;return top=parseInt(container.css("top"),10),newTop=top+pageSize,newTop>0&&(newTop=0),container.animate({top:newTop},callback),newTop},visible=function(element){return element.css("visibility","visible")},hide=function(element){return element.css("visibility","hidden")},checkButtonVisibility=function(){},remove=function(){return container.css("top",0),hide(prevBtn),hide(nextBtn)},$el.on("click",".v-pagination-previous",function(event){var newTop;return event.preventDefault(),container.is(":animated")?void 0:(visible(nextBtn),newTop=prevPage(),hasPrevPage(newTop)?void 0:hide(prevBtn))}),$el.on("click",".v-pagination-next",function(event){var newTop;return event.preventDefault(),container.is(":animated")?void 0:(visible(prevBtn),newTop=-nextPage(),hasNextPage(newTop)?void 0:hide(nextBtn))}),$scope.$on("regenerate:project-pagination",function(){return remove(),render()}),$(window).on("resize.projects-pagination",render),$scope.$on("$destroy",function(){return $(window).off("resize.projects-pagination")})},{link:link}},module.directive("tgProjectsPagination",["$timeout",ProjectsPaginationDirective]),ProjectsListDirective=function($compile,$template){var link,template;return template=$template.get("project/project-list.html",!0),link=function($scope,$el){var render;return render=function(projects){return $el.html($compile(template({projects:projects}))($scope)),$scope.$emit("regenerate:project-pagination")},$scope.$on("projects:loaded",function(ctx,projects){return null!=projects.all?render(projects.all):void 0})},{link:link}},module.directive("tgProjectsList",["$compile","$tgTemplate",ProjectsListDirective])}.call(this),function(){var BindHtmlDirective,BindOnceAltDirective,BindOnceBindDirective,BindOnceHrefDirective,BindOnceHtmlDirective,BindOnceRefDirective,BindOnceSrcDirective,BindOnceTitleDirective,BindTitleDirective,bindOnce,module;bindOnce=this.taiga.bindOnce,BindOnceBindDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoBind,function(val){return $el.text(val)})},{link:link}},BindOnceHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHtml,function(val){return $el.html(val)})},{link:link}},BindOnceRefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoRef,function(val){return $el.html("#"+val+" ")})},{link:link}},BindOnceSrcDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoSrc,function(val){return $el.attr("src",val)})},{link:link}},BindOnceHrefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHref,function(val){return $el.attr("href",val)})},{link:link}},BindOnceAltDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoAlt,function(val){return $el.attr("alt",val)})},{link:link}},BindOnceTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoTitle,function(val){return $el.attr("title",val)})},{link:link}},BindTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgTitleHtml,function(val){return null!=val?$el.attr("title",val):void 0})},{link:link}},BindHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBindHtml,function(val){return null!=val?$el.html(val):void 0})},{link:link}},module=angular.module("taigaBase"),module.directive("tgBoBind",BindOnceBindDirective),module.directive("tgBoHtml",BindOnceHtmlDirective),module.directive("tgBoRef",BindOnceRefDirective),module.directive("tgBoSrc",BindOnceSrcDirective),module.directive("tgBoHref",BindOnceHrefDirective),module.directive("tgBoAlt",BindOnceAltDirective),module.directive("tgBoTitle",BindOnceTitleDirective),module.directive("tgBindTitle",BindTitleDirective),module.directive("tgBindHtml",BindHtmlDirective)}.call(this),function(){var ConfigurationService,module;ConfigurationService=function(){function ConfigurationService(){this.config=window.taigaConfig}return ConfigurationService.prototype.get=function(key,defaultValue){return null==defaultValue&&(defaultValue=null),_.has(this.config,key)?this.config[key]:defaultValue},ConfigurationService}(),module=angular.module("taigaBase"),module.service("$tgConfig",ConfigurationService)}.call(this),function(){var ContribController,module,taigaContribPlugins,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taigaContribPlugins=this.taigaContribPlugins=this.taigaContribPlugins||[],ContribController=function(superClass){function ContribController(rootScope,scope,params,repo,rs,confirm,appTitle){var promise;this.rootScope=rootScope,this.scope=scope,this.params=params,this.repo=repo,this.rs=rs,this.confirm=confirm,this.appTitle=appTitle,this.scope.adminPlugins=_.where(this.rootScope.contribPlugins,{type:"admin"}),this.scope.currentPlugin=_.first(_.where(this.scope.adminPlugins,{slug:this.params.plugin})),this.scope.pluginTemplate="contrib/"+this.scope.currentPlugin.slug,this.scope.projectSlug=this.params.pslug,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this.appTitle.set(_this.scope.project.name)}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this))}return extend(ContribController,superClass),ContribController.$inject=["$rootScope","$scope","$routeParams","$tgRepo","$tgResources","$tgConfirm","$appTitle"],ContribController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.$broadcast("project:loaded",project),project}}(this))},ContribController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},ContribController}(taiga.Controller),module=angular.module("taigaBase"),module.controller("ContribController",ContribController)}.call(this),function(){var FiltersStorageService,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,FiltersStorageService=function(superClass){function FiltersStorageService(storage,params){this.storage=storage,this.params=params}return extend(FiltersStorageService,superClass),FiltersStorageService.$inject=["$tgStorage","$routeParams"],FiltersStorageService.prototype.generateHash=function(components){return null==components&&(components=[]),components=_.map(components,function(x){return JSON.stringify(x)}),hex_sha1(components.join(":"))},FiltersStorageService}(taiga.Service)}.call(this),function(){var HttpService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,HttpService=function(superClass){function HttpService(http,q,storage){this.http=http,this.q=q,this.storage=storage,HttpService.__super__.constructor.call(this)}return extend(HttpService,superClass),HttpService.$inject=["$http","$q","$tgStorage"],HttpService.prototype.headers=function(){var token;return token=this.storage.get("token"),token?{Authorization:"Bearer "+token}:{}},HttpService.prototype.request=function(options){return options.headers=_.merge({},options.headers||{},this.headers()),_.isPlainObject(options.data)&&(options.data=JSON.stringify(options.data)),this.http(options)},HttpService.prototype.get=function(url,params,options){return options=_.merge({method:"GET",url:url},options),params&&(options.params=params),this.request(options)},HttpService.prototype.post=function(url,data,params,options){return options=_.merge({method:"POST",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype.put=function(url,data,params,options){return options=_.merge({method:"PUT",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype.patch=function(url,data,params,options){return options=_.merge({method:"PATCH",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype["delete"]=function(url,data,params,options){return options=_.merge({method:"DELETE",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgHttp",HttpService)}.call(this),function(){var I18nDirective,I18nService,bindOnce,defaults,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,bindOnce=this.taiga.bindOnce,defaults={ns:"app",fallbackLng:"en",async:!1,lng:"en"},I18nService=function(superClass){function I18nService(rootscope,localesEn){this.rootscope=rootscope,this.options=_.clone(defaults,!0),this.options.resStore={en:{app:localesEn}}}return extend(I18nService,superClass),I18nService.prototype.setLanguage=function(language){return i18n.setLng(language),this.rootscope.currentLang=language,this.rootscope.$broadcast("i18n:changeLang",language)},I18nService.prototype.initialize=function(){return i18n.init(this.options),this.rootscope.t=i18n.t},I18nService.prototype.t=function(path,opts){return i18n.t(path,opts)},I18nService}(taiga.Service),I18nDirective=function($rootscope,$i18n){var link;return link=function($scope,$el,$attrs){var i,len,ns,options,opts,ref,results,v,values;for(values=$attrs.tr.split(","),options=$attrs.trOpts||"{}",opts=$scope.$eval(options),results=[],i=0,len=values.length;len>i;i++)v=values[i],-1===v.indexOf(":")?results.push($el.html(_.escape($i18n.t(v,opts)))):(ref=v.split(":"),ns=ref[0],v=ref[1],results.push($el.attr(ns,_.escape($i18n.t(v,opts)))));return results},{link:link,restrict:"A",scope:!1}},module=angular.module("taigaBase"),module.service("$tgI18n",["$rootScope","localesEn",I18nService]),module.directive("tr",["$rootScope","$tgI18n",I18nDirective])}.call(this),function(){var locationFactory,module;locationFactory=function($location,$route){return $location.noreload=function(scope){var lastRoute,un;return lastRoute=$route.current,un=scope.$on("$locationChangeSuccess",function(){return $route.current=lastRoute,un()}),$location},$location.isInCurrentRouteParams=function(name,value){var params;return params=_.merge($route.current.params,$location.search()),params[name]===value},$location},module=angular.module("taigaBase"),module.factory("$tgLocation",["$location","$route","$rootScope",locationFactory])}.call(this),function(){var Model,ModelService,module,provider,taiga,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;Model=function(){function Model(name,data,dataTypes){this._attrs=data,this._name=name,this._dataTypes=dataTypes,this.setAttrs(data),this.initialize()}return Model.prototype.clone=function(){var instance;return instance=new Model(this._name,this._attrs,this._dataTypes),instance._modifiedAttrs=this._modifiedAttrs,instance._isModified=this._isModified,instance},Model.prototype.applyCasts=function(){var attrName,castMethod,castName,ref,results;ref=this._dataTypes,results=[];for(attrName in ref)castName=ref[attrName],castMethod=service.casts[castName],castMethod&&results.push(this._attrs[attrName]=castMethod(this._attrs[attrName]));return results},Model.prototype.getIdAttrName=function(){return"id"},Model.prototype.getName=function(){return this._name},Model.prototype.getAttrs=function(patch){return null==patch&&(patch=!1),null!=this._attrs.version&&(this._modifiedAttrs.version=this._attrs.version),patch?_.extend({},this._modifiedAttrs):_.extend({},this._attrs,this._modifiedAttrs)},Model.prototype.setAttrs=function(attrs){return this._attrs=attrs,this._modifiedAttrs={},this.applyCasts(),this._isModified=!1},Model.prototype.setAttr=function(name,value){return this._modifiedAttrs[name]=value,this._isModified=!0},Model.prototype.initialize=function(){var getter,self,setter;return self=this,getter=function(name){return function(){return"string"==typeof name&&"__"===name.substr(0,2)?self[name]:indexOf.call(_.keys(self._modifiedAttrs),name)<0?self._attrs[name]:self._modifiedAttrs[name]}},setter=function(name){return function(value){return"string"==typeof name&&"__"===name.substr(0,2)?void(self[name]=value):void(self._attrs[name]!==value?(self._modifiedAttrs[name]=value,self._isModified=!0):delete self._modifiedAttrs[name])}},_.each(this._attrs,function(value,name){var options;return options={get:getter(name),set:setter(name),enumerable:!0,configurable:!0},Object.defineProperty(self,name,options)})},Model.prototype.serialize=function(){var data;return data={data:_.clone(this._attrs),name:this._name},JSON.stringify(data)},Model.prototype.isModified=function(){return this._isModified},Model.prototype.isAttributeModified=function(attribute){return null!=this._modifiedAttrs[attribute]},Model.prototype.markSaved=function(){return this._isModified=!1,this._attrs=this.getAttrs(),this._modifiedAttrs={}},Model.prototype.revert=function(){return this._modifiedAttrs={},this._isModified=!1},Model.desSerialize=function(sdata){var ddata,model;return ddata=JSON.parse(sdata),model=new Model(ddata.url,ddata.data)},Model}(),taiga=this.taiga,ModelService=function(superClass){function ModelService(q,urls,storage,http){this.q=q,this.urls=urls,this.storage=storage,this.http=http,ModelService.__super__.constructor.call(this)}return extend(ModelService,superClass),ModelService.$inject=["$q","$tgUrls","$tgStorage","$tgHttp"],ModelService}(taiga.Service),provider=function(){var service;return service={},service.make_model=function(name,data,cls,dataTypes){return null==cls&&(cls=Model),null==dataTypes&&(dataTypes={}),new cls(name,data,dataTypes)},service.cls=Model,service.casts={"int":function(value){return parseInt(value,10)},"float":function(value){return parseFloat(value,10)}},service},module=angular.module("taigaBase"),module.factory("$tgModel",["$q","$http","$tgUrls","$tgStorage",provider])}.call(this),function(){var NavigationUrlsDirective,NavigationUrlsService,bindOnce,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child +}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,module=angular.module("taigaBase"),NavigationUrlsService=function(superClass){function NavigationUrlsService(){this.urls={}}return extend(NavigationUrlsService,superClass),NavigationUrlsService.prototype.update=function(urls){return this.urls=_.merge({},this.urls,urls||{})},NavigationUrlsService.prototype.formatUrl=function(url,ctx){var replacer;return null==ctx&&(ctx={}),replacer=function(match){return match=trim(match,":"),ctx[match]||"undefined"},url.replace(/(:\w+)/g,replacer)},NavigationUrlsService.prototype.resolve=function(name,ctx){var url;return url=this.urls[name],url?ctx?this.formatUrl(url,ctx):url:""},NavigationUrlsService}(taiga.Service),module.service("$tgNavUrls",NavigationUrlsService),NavigationUrlsDirective=function($navurls,$auth,$q,$location){var bindOnceP,link,parseNav;return bindOnceP=function($scope,attr){var defered;return defered=$q.defer(),bindOnce($scope,attr,function(v){return defered.resolve(v)}),defered.promise},parseNav=function(data,$scope){var name,params,promises,ref,values;return ref=_.map(data.split(":"),trim),name=ref[0],params=ref[1],params=params?_.map(params.split(","),trim):[],values=_.map(params,function(x){return trim(x.split("=")[1])}),promises=_.map(values,function(x){return bindOnceP($scope,x)}),$q.all(promises).then(function(){var i,item,key,len,options,ref1,value;for(options={},i=0,len=params.length;len>i;i++)item=params[i],ref1=_.map(item.split("="),trim),key=ref1[0],value=ref1[1],options[key]=$scope.$eval(value);return[name,options]})},link=function($scope,$el,$attrs){return $el.is("a")&&$el.attr("href","#"),$el.on("mouseenter",function(event){var target;return target=$(event.currentTarget),target.data("fullUrl")?void 0:parseNav($attrs.tgNav,$scope).then(function(result){var fullUrl,name,options,url,user;return name=result[0],options=result[1],user=$auth.getUser(),user&&(options.user=user.username),url=$navurls.resolve(name),fullUrl=$navurls.formatUrl(url,options),target.data("fullUrl",fullUrl),target.is("a")&&target.attr("href",fullUrl),$el.on("click",function(event){if(event.preventDefault(),target=$(event.currentTarget),!target.hasClass("noclick"))switch(fullUrl=target.data("fullUrl"),event.which){case 1:return $location.url(fullUrl),$scope.$apply();case 2:return window.open(fullUrl)}})})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgNav",["$tgNavUrls","$tgAuth","$q","$tgLocation",NavigationUrlsDirective])}.call(this),function(){var RepositoryService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,RepositoryService=function(superClass){function RepositoryService(q,model1,storage,http,urls){this.q=q,this.model=model1,this.storage=storage,this.http=http,this.urls=urls,RepositoryService.__super__.constructor.call(this)}return extend(RepositoryService,superClass),RepositoryService.$inject=["$q","$tgModel","$tgStorage","$tgHttp","$tgUrls"],RepositoryService.prototype.resolveUrlForModel=function(model){var idAttrName;return idAttrName=model.getIdAttrName(),this.urls.resolve(model.getName())+"/"+model[idAttrName]},RepositoryService.prototype.resolveUrlForAttributeModel=function(model){return this.urls.resolve(model.getName(),model.parent)},RepositoryService.prototype.create=function(name,data,dataTypes,extraParams){var defered,promise,url;return null==dataTypes&&(dataTypes={}),null==extraParams&&(extraParams={}),defered=this.q.defer(),url=this.urls.resolve(name),promise=this.http.post(url,JSON.stringify(data)),promise.success(function(_this){return function(_data){return defered.resolve(_this.model.make_model(name,_data,null,dataTypes))}}(this)),promise.error(function(){return function(data){return defered.reject(data)}}(this)),defered.promise},RepositoryService.prototype.remove=function(model,params){var defered,promise,url;return null==params&&(params={}),defered=this.q.defer(),url=this.resolveUrlForModel(model),promise=this.http["delete"](url,{},params),promise.success(function(){return defered.resolve(model)}),promise.error(function(){return defered.reject(model)}),defered.promise},RepositoryService.prototype.saveAll=function(models,patch){var promises;return null==patch&&(patch=!0),promises=_.map(models,function(_this){return function(x){return _this.save(x,!0)}}(this)),this.q.all(promises)},RepositoryService.prototype.save=function(model,patch){var data,defered,promise,url;return null==patch&&(patch=!0),defered=this.q.defer(),!model.isModified()&&patch?(defered.resolve(model),defered.promise):(url=this.resolveUrlForModel(model),data=JSON.stringify(model.getAttrs(patch)),promise=patch?this.http.patch(url,data):this.http.put(url,data),promise.success(function(){return function(data){return model._isModified=!1,model._attrs=_.extend(model.getAttrs(),data),model._modifiedAttrs={},model.applyCasts(),defered.resolve(model)}}(this)),promise.error(function(data){return defered.reject(data)}),defered.promise)},RepositoryService.prototype.saveAttribute=function(model,attribute,patch){var data,defered,promise,url;return null==patch&&(patch=!0),defered=this.q.defer(),!model.isModified()&&patch?(defered.resolve(model),defered.promise):(url=this.resolveUrlForAttributeModel(model),data={},data[attribute]=model.getAttrs(),promise=patch?this.http.patch(url,data):this.http.put(url,data),promise.success(function(){return function(data){return model._isModified=!1,model._attrs=_.extend(model.getAttrs(),data),model._modifiedAttrs={},model.applyCasts(),defered.resolve(model)}}(this)),promise.error(function(data){return defered.reject(data)}),defered.promise)},RepositoryService.prototype.refresh=function(model){var defered,promise,url;return defered=this.q.defer(),url=this.resolveUrlForModel(model),promise=this.http.get(url),promise.success(function(data){return model._modifiedAttrs={},model._attrs=data,model._isModified=!1,model.applyCasts(),defered.resolve(model)}),promise.error(function(data){return defered.reject(data)}),defered.promise},RepositoryService.prototype.queryMany=function(name,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){return _.map(data.data,function(x){return _this.model.make_model(name,x)})}}(this))},RepositoryService.prototype.queryOneAttribute=function(name,id,attribute,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name,id),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){var model;return model=_this.model.make_model(name,data.data[attribute]),model.parent=id,model}}(this))},RepositoryService.prototype.queryOne=function(name,id,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),id&&(url=url+"/"+id),httpOptions={headers:{}},options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(_this){return function(data){return _this.model.make_model(name,data.data)}}(this))},RepositoryService.prototype.queryOneRaw=function(name,id,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),id&&(url=url+"/"+id),httpOptions=_.merge({headers:{}},options),options.enablePagination||(httpOptions.headers["x-disable-pagination"]="1"),this.http.get(url,params,httpOptions).then(function(){return function(data){return data.data}}(this))},RepositoryService.prototype.queryPaginated=function(name,params,options){var httpOptions,url;return null==options&&(options={}),url=this.urls.resolve(name),httpOptions=_.merge({headers:{}},options),this.http.get(url,params,httpOptions).then(function(_this){return function(data){var headers,result;return headers=data.headers(),result={},result.models=_.map(data.data,function(x){return _this.model.make_model(name,x)}),result.count=parseInt(headers["x-pagination-count"],10),result.current=parseInt(headers["x-pagination-current"]||1,10),result.paginatedBy=parseInt(headers["x-paginated-by"],10),result}}(this))},RepositoryService.prototype.resolve=function(options){var cache,params;return params={},null!=options.pslug&&(params.project=options.pslug),null!=options.usref&&(params.us=options.usref),null!=options.taskref&&(params.task=options.taskref),null!=options.issueref&&(params.issue=options.issueref),null!=options.sslug&&(params.milestone=options.sslug),null!=options.wikipage&&(params.wikipage=options.wikipage),cache=!(options.wikipage||options.sslug),this.queryOneRaw("resolver",null,params,{cache:cache})},RepositoryService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgRepo",RepositoryService)}.call(this),function(){var StorageService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,StorageService=function(superClass){function StorageService(){StorageService.__super__.constructor.call(this)}return extend(StorageService,superClass),StorageService.$inject=["$rootScope"],StorageService.prototype.get=function(key,_default){var serializedValue;return serializedValue=localStorage.getItem(key),null===serializedValue?_default||null:JSON.parse(serializedValue)},StorageService.prototype.set=function(key,val){return _.isObject(key)?_.each(key,function(_this){return function(val,key){return _this.set(key,val)}}(this)):localStorage.setItem(key,JSON.stringify(val))},StorageService.prototype.contains=function(key){var value;return value=this.get(key),null!==value},StorageService.prototype.remove=function(key){return localStorage.removeItem(key)},StorageService.prototype.clear=function(){return localStorage.clear()},StorageService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgStorage",StorageService)}.call(this),function(){var UrlsService,format,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;format=function(fmt,obj){return obj=_.clone(obj),fmt.replace(/%s/g,function(){return String(obj.shift())})},taiga=this.taiga,UrlsService=function(superClass){function UrlsService(config){this.config=config,this.urls={},this.mainUrl=this.config.get("api")}return extend(UrlsService,superClass),UrlsService.$inject=["$tgConfig"],UrlsService.prototype.update=function(urls){return this.urls=_.merge(this.urls,urls)},UrlsService.prototype.resolve=function(){var args,name,url;if(args=_.toArray(arguments),0===args.length)throw Error("wrong arguments to setUrls");return name=args.slice(0,1)[0],url=format(this.urls[name],args.slice(1)),format("%s/%s",[_.str.rtrim(this.mainUrl,"/"),_.str.ltrim(url,"/")])},UrlsService.prototype.resolveAbsolute=function(){var url;return url=this.resolve.apply(this,arguments),/^https?:\/\//i.test(url)?url:/^\//.test(url)?window.location.protocol+"//"+window.location.host+url:window.location.protocol+"//"+window.location.host+"/"+url},UrlsService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgUrls",UrlsService)}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($rootScope,$config,$urls,$model,$repo,$auth,$q){var service;return service={},service.list=function(urlName,objectId,projectId){var params;return params={object_id:objectId,project:projectId},$repo.queryMany(urlName,params)},service.create=function(urlName,projectId,objectId,file){var data,defered,maxFileSize,response,uploadComplete,uploadFailed,uploadProgress,xhr;return defered=$q.defer(),void 0===file?(defered.reject(null),defered.promise):(maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered.reject(response),defered.promise):(uploadProgress=function(){return function(evt){return $rootScope.$apply(function(){return file.status="in-progress",file.size=sizeFormat(evt.total),file.progressMessage="upload "+sizeFormat(evt.loaded)+" of "+sizeFormat(evt.total),file.progressPercent=Math.round(evt.loaded/evt.total*100)+"%"})}}(this),uploadComplete=function(){return function(evt){return $rootScope.$apply(function(){var data,model;file.status="done";try{data=JSON.parse(evt.target.responseText)}catch(_error){data={}}return model=$model.make_model(urlName,data),defered.resolve(model)})}}(this),uploadFailed=function(){return function(){return $rootScope.$apply(function(){return file.status="error",defered.reject("fail")})}}(this),data=new FormData,data.append("project",projectId),data.append("object_id",objectId),data.append("attached_file",file),xhr=new XMLHttpRequest,xhr.upload.addEventListener("progress",uploadProgress,!1),xhr.addEventListener("load",uploadComplete,!1),xhr.addEventListener("error",uploadFailed,!1),xhr.open("POST",$urls.resolve(urlName)),xhr.setRequestHeader("Authorization","Bearer "+$auth.getToken()),xhr.setRequestHeader("Accept","application/json"),xhr.send(data),defered.promise))},function(instance){return instance.attachments=service}},module=angular.module("taigaResources"),module.factory("$tgAttachmentsResourcesProvider",["$rootScope","$tgConfig","$tgUrls","$tgModel","$tgRepo","$tgAuth","$q",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var _get,service;return _get=function(objectId,resource){return $repo.queryOne(resource,objectId)},service={userstory:{get:function(objectId){return _get(objectId,"custom-attributes-values/userstory")}},task:{get:function(objectId){return _get(objectId,"custom-attributes-values/task")}},issue:{get:function(objectId){return _get(objectId,"custom-attributes-values/issue")}}},function(instance){return instance.customAttributesValues=service}},module=angular.module("taigaResources"),module.factory("$tgCustomAttributesValuesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($repo){var _list,service;return _list=function(projectId,resource){return $repo.queryMany(resource,{project:projectId})},service={userstory:{list:function(projectId){return _list(projectId,"custom-attributes/userstory")}},task:{list:function(projectId){return _list(projectId,"custom-attributes/task")}},issue:{list:function(projectId){return _list(projectId,"custom-attributes/issue")}}},function(instance){return instance.customAttributes=service}},module=angular.module("taigaResources"),module.factory("$tgCustomAttributesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$http,$urls){var service;return service={},service.get=function(type,objectId){return $repo.queryOneRaw("history/"+type,objectId)},service.deleteComment=function(type,objectId,activityId){var params,url;return url=$urls.resolve("history/"+type),url=url+"/"+objectId+"/delete_comment",params={id:activityId},$http.post(url,null,params).then(function(){return function(data){return data.data}}(this))},service.undeleteComment=function(type,objectId,activityId){var params,url;return url=$urls.resolve("history/"+type),url=url+"/"+objectId+"/undelete_comment",params={id:activityId},$http.post(url,null,params).then(function(){return function(data){return data.data}}(this))},function(instance){return instance.history=service}},module=angular.module("taigaResources"),module.factory("$tgHistoryResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(token){return $repo.queryOne("invitations",token)},function(instance){return instance.invitations=service}},module=angular.module("taigaResources"),module.factory("$tgInvitationsResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage,$q){var filtersHashSuffix,hashSuffix,myFiltersHashSuffix,service;return service={},hashSuffix="issues-queryparams",filtersHashSuffix="issues-filters",myFiltersHashSuffix="issues-my-filters",service.get=function(projectId,issueId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("issues",issueId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("issues","by_ref",params)},service.list=function(projectId,filters,options){var params;return params={project:projectId},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryPaginated("issues",params,options)},service.bulkCreate=function(projectId,data){var params,url;return url=$urls.resolve("bulk-create-issues"),params={project_id:projectId,bulk_issues:data},$http.post(url,params)},service.stats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/issues_stats")},service.filtersData=function(projectId){return $repo.queryOneRaw("projects",projectId+"/issue_filters_data")},service.listValues=function(projectId,type){var params;return params={project:projectId},service.storeQueryParams(projectId,params),$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeFilters=function(projectSlug,params){var hash,ns;return ns=projectSlug+":"+filtersHashSuffix,hash=generateHash([projectSlug,ns]),$storage.set(hash,params)},service.getFilters=function(projectSlug){var hash,ns;return ns=projectSlug+":"+filtersHashSuffix,hash=generateHash([projectSlug,ns]),$storage.get(hash)||{}},service.storeMyFilters=function(projectId,myFilters){var deferred,hash,ns,promise,url;return deferred=$q.defer(),url=$urls.resolve("user-storage"),ns=projectId+":"+myFiltersHashSuffix,hash=generateHash([projectId,ns]),_.isEmpty(myFilters)?(promise=$http["delete"](url+"/"+hash,{key:hash,value:myFilters}),promise.then(function(){return deferred.resolve()}),promise.then(null,function(){return deferred.reject()})):(promise=$http.put(url+"/"+hash,{key:hash,value:myFilters}),promise.then(function(){return deferred.resolve()}),promise.then(null,function(){var innerPromise;return innerPromise=$http.post(""+url,{key:hash,value:myFilters}),innerPromise.then(function(){return deferred.resolve()}),innerPromise.then(null,function(){return deferred.reject()})})),deferred.promise},service.getMyFilters=function(projectId){var deferred,hash,ns,promise,url;return deferred=$q.defer(),url=$urls.resolve("user-storage"),ns=projectId+":"+myFiltersHashSuffix,hash=generateHash([projectId,ns]),promise=$http.get(url+"/"+hash),promise.then(function(data){return deferred.resolve(data.data.value)}),promise.then(null,function(){return deferred.resolve({})}),deferred.promise},function(instance){return instance.issues=service}},module=angular.module("taigaResources"),module.factory("$tgIssuesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage","$q",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($storage){var hashSuffixStatusColumnModes,hashSuffixStatusViewModes,service;return service={},hashSuffixStatusViewModes="kanban-statusviewmodels",hashSuffixStatusColumnModes="kanban-statuscolumnmodels",service.storeStatusViewModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusViewModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusViewModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusViewModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeStatusColumnModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusColumnModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},function(instance){return instance.kanban=service}},module=angular.module("taigaResources"),module.factory("$tgKanbanResourcesProvider",["$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$urls,$http){var service;return service={},service.render=function(projectId,content){var params,url;return(null==content||""===content)&&(content=" "),params={project_id:projectId,content:content},url=$urls.resolve("wiki"),$http.post(url+"/render",params).then(function(){return function(data){return data.data}}(this))},function(instance){return instance.mdrender=service}},module=angular.module("taigaResources"),module.factory("$tgMdRenderResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$http,$urls){var service;return service={},service.get=function(id){return $repo.queryOne("memberships",id)},service.list=function(projectId,filters,enablePagination){var options,params;return null==enablePagination&&(enablePagination=!0),params={project:projectId},params=_.extend({},params,filters||{}),enablePagination?$repo.queryPaginated("memberships",params):$repo.queryMany("memberships",params,options={enablePagination:enablePagination})},service.listByUser=function(userId,filters){var params;return params={user:userId},params=_.extend({},params,filters||{}),$repo.queryPaginated("memberships",params)},service.resendInvitation=function(id){var url;return url=$urls.resolve("memberships"),$http.post(url+"/"+id+"/resend_invitation",{})},service.bulkCreateMemberships=function(projectId,data,invitation_extra_text){var params,url;return url=$urls.resolve("bulk-create-memberships"),params={project_id:projectId,bulk_memberships:data,invitation_extra_text:invitation_extra_text},$http.post(url,params)},function(instance){return instance.memberships=service}},module=angular.module("taigaResources"),module.factory("$tgMembershipsResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo){var service;return service={},service.list=function(projectId,module){return $repo.queryOneAttribute("project-modules",projectId,module)},function(instance){return instance.modules=service}},module=angular.module("taigaResources"),module.factory("$tgModulesResourcesProvider",["$tgRepo",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(id){return $repo.queryOne("notify-policies",id)},service.list=function(filters){var params;return params=_.extend({},params,filters||{}),$repo.queryMany("notify-policies",params)},function(instance){return instance.notifyPolicies=service}},module=angular.module("taigaResources"),module.factory("$tgNotifyPoliciesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($config,$repo,$http,$urls,$auth,$q){var service;return service={},service.get=function(projectId){return $repo.queryOne("projects",projectId)},service.getBySlug=function(projectSlug){return $repo.queryOne("projects","by_slug?slug="+projectSlug)},service.list=function(){return $repo.queryMany("projects")},service.listByMember=function(memberId){var params;return params={member:memberId},$repo.queryMany("projects",params)},service.templates=function(){return $repo.queryMany("project-templates")},service.usersList=function(projectId){var params;return params={project:projectId},$repo.queryMany("users",params)},service.rolesList=function(projectId){var params;return params={project:projectId},$repo.queryMany("roles",params)},service.stats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/stats")},service.regenerate_userstories_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_userstories_csv_uuid",$http.post(url)},service.regenerate_issues_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_issues_csv_uuid",$http.post(url)},service.regenerate_tasks_csv_uuid=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/regenerate_tasks_csv_uuid",$http.post(url)},service.leave=function(projectId){var url;return url=$urls.resolve("projects")+"/"+projectId+"/leave",$http.post(url)},service.memberStats=function(projectId){return $repo.queryOneRaw("projects",projectId+"/member_stats")},service.tagsColors=function(projectId){return $repo.queryOne("projects",projectId+"/tags_colors")},service["export"]=function(projectId){var url;return url=$urls.resolve("exporter")+"/"+projectId,$http.get(url)},service["import"]=function(file,statusUpdater){var complete,data,defered,failed,maxFileSize,response,uploadComplete,uploadFailed,uploadProgress,xhr;return defered=$q.defer(),maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered.reject(response),defered.promise):(uploadProgress=function(){return function(evt){var message,percent;return percent=Math.round(evt.loaded/evt.total*100),message="Uloaded "+sizeFormat(evt.loaded)+" of "+sizeFormat(evt.total),statusUpdater("in-progress",null,message,percent)}}(this),uploadComplete=function(){return function(){return statusUpdater("done","Importing Project","This process can take a while, please keep the window open.")}}(this),uploadFailed=function(){return function(){return statusUpdater("error")}}(this),complete=function(){return function(evt){var ref;response={};try{response.data=JSON.parse(evt.target.responseText)}catch(_error){response.data={}}return response.status=evt.target.status,(201===(ref=response.status)||202===ref)&&defered.resolve(response),defered.reject(response)}}(this),failed=function(){return function(){return defered.reject("fail")}}(this),data=new FormData,data.append("dump",file),xhr=new XMLHttpRequest,xhr.upload.addEventListener("progress",uploadProgress,!1),xhr.upload.addEventListener("load",uploadComplete,!1),xhr.upload.addEventListener("error",uploadFailed,!1),xhr.upload.addEventListener("abort",uploadFailed,!1),xhr.addEventListener("load",complete,!1),xhr.addEventListener("error",failed,!1),xhr.open("POST",$urls.resolve("importer")),xhr.setRequestHeader("Authorization","Bearer "+$auth.getToken()),xhr.setRequestHeader("Accept","application/json"),xhr.send(data),defered.promise)},function(instance){return instance.projects=service}},module=angular.module("taigaResources"),module.factory("$tgProjectsResourcesProvider",["$tgConfig","$tgRepo","$tgHttp","$tgUrls","$tgAuth","$q",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(id){return $repo.queryOne("roles",id)},service.list=function(projectId){return $repo.queryMany("roles",{project:projectId})},function(instance){return instance.roles=service}},module=angular.module("taigaResources"),module.factory("$tgRolesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo,$urls,$http){var service;return service={},service["do"]=function(projectId,term){var params,url;return url=$urls.resolve("search"),params={project:projectId,text:term,get_all:!1},$http.get(url,params).then(function(data){return data.data})},function(instance){return instance.search=service}},module=angular.module("taigaResources"),module.factory("$tgSearchResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$model,$storage){var hashSuffixUserstories,service;return service={},hashSuffixUserstories="userstories-queryparams",service.get=function(projectId,sprintId){return $repo.queryOne("milestones",sprintId).then(function(sprint){var uses;return service.storeUserstoriesQueryParams(projectId,{milestone:sprintId}),uses=sprint.user_stories,uses=_.map(uses,function(u){return $model.make_model("userstories",u)}),sprint._attrs.user_stories=uses,sprint})},service.stats=function(projectId,sprintId){return $repo.queryOneRaw("milestones",sprintId+"/stats")},service.list=function(projectId,filters){var params;return params={project:projectId},params=_.extend({},params,filters||{}),$repo.queryMany("milestones",params).then(function(){return function(milestones){var i,len,m,uses;for(i=0,len=milestones.length;len>i;i++)m=milestones[i],uses=m.user_stories,uses=_.map(uses,function(u){return $model.make_model("userstories",u)}),m._attrs.user_stories=uses;return milestones}}(this))},service.storeUserstoriesQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixUserstories,hash=generateHash([projectId,ns]),$storage.set(hash,params)},function(instance){return instance.sprints=service}},module=angular.module("taigaResources"),module.factory("$tgSprintsResourcesProvider",["$tgRepo","$tgModel","$tgStorage",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage){var hashSuffix,hashSuffixStatusColumnModes,hashSuffixUsRowModes,service;return service={},hashSuffix="tasks-queryparams",hashSuffixStatusColumnModes="tasks-statuscolumnmodels",hashSuffixUsRowModes="tasks-usrowmodels",service.get=function(projectId,taskId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("tasks",taskId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("tasks","by_ref",params)},service.list=function(projectId,sprintId,userStoryId){var params;return null==sprintId&&(sprintId=null),null==userStoryId&&(userStoryId=null),params={project:projectId},sprintId&&(params.milestone=sprintId),userStoryId&&(params.user_story=userStoryId),service.storeQueryParams(projectId,params),$repo.queryMany("tasks",params) +},service.bulkCreate=function(projectId,sprintId,usId,data){var params,url;return url=$urls.resolve("bulk-create-tasks"),params={project_id:projectId,sprint_id:sprintId,us_id:usId,bulk_tasks:data},$http.post(url,params).then(function(result){return result.data})},service.bulkUpdateTaskTaskboardOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-task-taskboard-order"),params={project_id:projectId,bulk_tasks:data},$http.post(url,params)},service.listValues=function(projectId,type){var params;return params={project:projectId},$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeStatusColumnModes=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getStatusColumnModes=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffixStatusColumnModes,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeUsRowModes=function(projectId,sprintId,params){var hash,ns;return ns=projectId+":"+hashSuffixUsRowModes,hash=generateHash([projectId,sprintId,ns]),$storage.set(hash,params)},service.getUsRowModes=function(projectId,sprintId){var hash,ns;return ns=projectId+":"+hashSuffixUsRowModes,hash=generateHash([projectId,sprintId,ns]),$storage.get(hash)||{}},function(instance){return instance.tasks=service}},module=angular.module("taigaResources"),module.factory("$tgTasksResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider,sizeFormat,taiga;taiga=this.taiga,sizeFormat=this.taiga.sizeFormat,resourceProvider=function($config,$repo,$http,$urls,$q){var service;return service={},service.changeAvatar=function(file){var data,defered,maxFileSize,options,response,url;return maxFileSize=$config.get("maxUploadFileSize",null),maxFileSize&&file.size>maxFileSize?(response={status:413,data:{_error_message:"'"+file.name+"' ("+sizeFormat(file.size)+") is too heavy for our oompa loompas, try it with a smaller than ("+sizeFormat(maxFileSize)+")"}},defered=$q.defer(),defered.reject(response),defered.promise):(data=new FormData,data.append("avatar",file),options={transformRequest:angular.identity,headers:{"Content-Type":void 0}},url=$urls.resolve("users")+"/change_avatar",$http.post(url,data,{},options))},service.removeAvatar=function(){var url;return url=$urls.resolve("users")+"/remove_avatar",$http.post(url)},service.changePassword=function(currentPassword,newPassword){var data,url;return url=$urls.resolve("users")+"/change_password",data={current_password:currentPassword,password:newPassword},$http.post(url,data)},function(instance){return instance.userSettings=service}},module=angular.module("taigaResources"),module.factory("$tgUserSettingsResourcesProvider",["$tgConfig","$tgRepo","$tgHttp","$tgUrls","$q",resourceProvider])}.call(this),function(){var generateHash,module,resourceProvider,taiga;taiga=this.taiga,generateHash=taiga.generateHash,resourceProvider=function($repo,$http,$urls,$storage){var hashSuffix,service;return service={},hashSuffix="userstories-queryparams",service.get=function(projectId,usId){var params;return params=service.getQueryParams(projectId),params.project=projectId,$repo.queryOne("userstories",usId,params)},service.getByRef=function(projectId,ref){var params;return params=service.getQueryParams(projectId),params.project=projectId,params.ref=ref,$repo.queryOne("userstories","by_ref",params)},service.listUnassigned=function(projectId,filters){var params;return params={project:projectId,milestone:"null"},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryMany("userstories",params)},service.listAll=function(projectId,filters){var params;return params={project:projectId},params=_.extend({},params,filters||{}),service.storeQueryParams(projectId,params),$repo.queryMany("userstories",params)},service.bulkCreate=function(projectId,status,bulk){var data,url;return data={project_id:projectId,status_id:status,bulk_stories:bulk},url=$urls.resolve("bulk-create-us"),$http.post(url,data)},service.bulkUpdateBacklogOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-backlog-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.bulkUpdateSprintOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-sprint-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.bulkUpdateKanbanOrder=function(projectId,data){var params,url;return url=$urls.resolve("bulk-update-us-kanban-order"),params={project_id:projectId,bulk_stories:data},$http.post(url,params)},service.listValues=function(projectId,type){var params;return params={project:projectId},service.storeQueryParams(projectId,params),$repo.queryMany(type,params)},service.storeQueryParams=function(projectId,params){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.set(hash,params)},service.getQueryParams=function(projectId){var hash,ns;return ns=projectId+":"+hashSuffix,hash=generateHash([projectId,ns]),$storage.get(hash)||{}},service.storeShowTags=function(projectId,showTags){var hash;return hash=generateHash([projectId,"showTags"]),$storage.set(hash,showTags)},service.getShowTags=function(projectId){var hash;return hash=generateHash([projectId,"showTags"]),$storage.get(hash)||null},function(instance){return instance.userstories=service}},module=angular.module("taigaResources"),module.factory("$tgUserstoriesResourcesProvider",["$tgRepo","$tgHttp","$tgUrls","$tgStorage",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo,$urls,$http){var service;return service={},service.list=function(webhookId){var params;return params={webhook:webhookId},$repo.queryMany("webhooklogs",params)},service.resend=function(webhooklogId){var url;return url=$urls.resolve("webhooklogs-resend",webhooklogId),$http.post(url)},function(instance){return instance.webhooklogs=service}},module=angular.module("taigaResources"),module.factory("$tgWebhookLogsResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider;resourceProvider=function($repo,$urls,$http){var service;return service={},service.list=function(projectId){var params;return params={project:projectId},$repo.queryMany("webhooks",params)},service.test=function(webhookId){var url;return url=$urls.resolve("webhooks-test",webhookId),$http.post(url)},function(instance){return instance.webhooks=service}},module=angular.module("taigaResources"),module.factory("$tgWebhooksResourcesProvider",["$tgRepo","$tgUrls","$tgHttp",resourceProvider])}.call(this),function(){var module,resourceProvider,taiga;taiga=this.taiga,resourceProvider=function($repo){var service;return service={},service.get=function(wikiId){return $repo.queryOne("wiki",wikiId)},service.getBySlug=function(projectId,slug){return $repo.queryOne("wiki","by_slug?project="+projectId+"&slug="+slug)},service.listLinks=function(projectId){return $repo.queryMany("wiki-links",{project:projectId})},function(instance){return instance.wiki=service}},module=angular.module("taigaResources"),module.factory("$tgWikiResourcesProvider",["$tgRepo","$tgHttp","$tgUrls",resourceProvider])}.call(this),function(){var UserChangePasswordController,UserChangePasswordDirective,debounce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,debounce=this.taiga.debounce,module=angular.module("taigaUserSettings"),UserChangePasswordController=function(superClass){function UserChangePasswordController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,auth){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="Change Password",this.scope.project={},this.scope.user=this.auth.getUser(),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserChangePasswordController,superClass),UserChangePasswordController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserChangePasswordController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserChangePasswordController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},UserChangePasswordController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserChangePasswordController",UserChangePasswordController),UserChangePasswordDirective=function($rs,$confirm,$loading){var link;return link=function($scope,$el){var submit,submitButton;return submit=debounce(2e3,function(){return function(event){var promise;return event.preventDefault(),$scope.newPassword1!==$scope.newPassword2?void $confirm.notify("error","The passwords dosn't match"):($loading.start(submitButton),promise=$rs.userSettings.changePassword($scope.currentPassword,$scope.newPassword1),promise.then(function(){return $loading.finish(submitButton),$confirm.notify("success")}),promise.then(null,function(response){return $loading.finish(submitButton),$confirm.notify("error",response.data._error_message)}))}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserChangePassword",["$tgResources","$tgConfirm","$tgLoading",UserChangePasswordDirective])}.call(this),function(){var DeleteUserDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaUserSettings"),DeleteUserDirective=function($repo,$rootscope,$auth,$location,$navUrls,lightboxService){var link;return link=function($scope,$el){var submit;return $scope.$on("deletelightbox:new",function(){return lightboxService.open($el)}),$scope.$on("$destroy",function(){return $el.off()}),submit=function(){var promise;return promise=$repo.remove($scope.user),promise.then(function(){return lightboxService.close($el),$auth.logout(),$location.path($navUrls.resolve("login"))}),promise.then(null,function(){return console.log("FAIL")})},$el.on("click",".button-red",function(event){return event.preventDefault(),lightboxService.close($el)}),$el.on("click",".button-green",debounce(2e3,function(event){return event.preventDefault(),submit()}))},{link:link,templateUrl:"user/lightbox/lightbox-delete-account.html"}},module.directive("tgLbDeleteUser",["$tgRepo","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","lightboxService",DeleteUserDirective])}.call(this),function(){var TaigaAvatarModelDirective,UserAvatarDirective,UserProfileDirective,UserSettingsController,debounce,mixOf,module,sizeFormat,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,sizeFormat=this.taiga.sizeFormat,module=angular.module("taigaUserSettings"),debounce=this.taiga.debounce,UserSettingsController=function(superClass){function UserSettingsController(scope,rootscope,config,repo,confirm,rs,params,q,location,navUrls,auth){var maxFileSize,promise;this.scope=scope,this.rootscope=rootscope,this.config=config,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="User Profile",this.scope.project={},this.scope.user=this.auth.getUser(),maxFileSize=this.config.get("maxUploadFileSize",null),maxFileSize&&(this.scope.maxFileSizeMsg="[Max, size: "+sizeFormat(maxFileSize)),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserSettingsController,superClass),UserSettingsController.$inject=["$scope","$rootScope","$tgConfig","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserSettingsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserSettingsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this))},UserSettingsController.prototype.openDeleteLightbox=function(){return this.rootscope.$broadcast("deletelightbox:new",this.scope.user)},UserSettingsController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserSettingsController",UserSettingsController),UserProfileDirective=function($confirm,$auth,$repo){var link;return link=function($scope,$el){var submit;return submit=debounce(2e3,function(){return function(event){var changeEmail,form,onError,onSuccess;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?(changeEmail=$scope.user.isAttributeModified("email"),onSuccess=function(data){return $auth.setUser(data),changeEmail?$confirm.success("Check your inbox!
We have sent a mail to your account
with the instructions to set your new address"):$confirm.notify("success")},onError=function(data){return form.setErrors(data),$confirm.notify("error",data._error_message)},$repo.save($scope.user).then(onSuccess,onError)):void 0}}(this)),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserProfile",["$tgConfirm","$tgAuth","$tgRepo",UserProfileDirective]),UserAvatarDirective=function($auth,$model,$rs,$confirm){var link;return link=function($scope,$el){var onError,onSuccess,showSizeInfo;return showSizeInfo=function(){return $el.find(".size-info").removeClass("hidden")},onSuccess=function(response){var user;return user=$model.make_model("users",response.data),$auth.setUser(user),$scope.user=user,$el.find(".overlay").addClass("hidden"),$confirm.notify("success")},onError=function(response){return 413===response.status&&showSizeInfo(),$el.find(".overlay").addClass("hidden"),$confirm.notify("error",response.data._error_message)},$el.on("click",".js-change-avatar",function(){return $el.find("#avatar-field").click()}),$el.on("change","#avatar-field",function(){return $scope.avatarAttachment?($el.find(".overlay").removeClass("hidden"),$rs.userSettings.changeAvatar($scope.avatarAttachment).then(onSuccess,onError)):void 0}),$el.on("click","a.use-gravatar",function(){return $el.find(".overlay").removeClass("hidden"),$rs.userSettings.removeAvatar().then(onSuccess,onError)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserAvatar",["$tgAuth","$tgModel","$tgResources","$tgConfirm",UserAvatarDirective]),TaigaAvatarModelDirective=function($parse){var link;return link=function($scope,$el,$attrs){var model,modelSetter;return model=$parse($attrs.tgAvatarModel),modelSetter=model.assign,$el.bind("change",function(){return $scope.$apply(function(){return modelSetter($scope,$el[0].files[0])})})},{link:link}},module.directive("tgAvatarModel",["$parse",TaigaAvatarModelDirective])}.call(this),function(){var UserSettingsNavigationDirective,module;UserSettingsNavigationDirective=function(){var link;return link=function($scope,$el,$attrs){var section;return section=$attrs.tgUserSettingsNavigation,$el.find(".active").removeClass("active"),$el.find("#usersettingsmenu-"+section+" a").addClass("active"),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaUserSettings"),module.directive("tgUserSettingsNavigation",UserSettingsNavigationDirective)}.call(this),function(){var UserNotificationsController,UserNotificationsDirective,UserNotificationsListDirective,bindOnce,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindOnce=this.taiga.bindOnce,module=angular.module("taigaUserSettings"),UserNotificationsController=function(superClass){function UserNotificationsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,auth){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.auth=auth,this.scope.sectionName="Email Notifications",this.scope.project={},this.scope.user=this.auth.getUser(),promise=this.loadInitialData(),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserNotificationsController,superClass),UserNotificationsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAuth"],UserNotificationsController.prototype.loadProject=function(){return this.rs.projects.get(this.scope.projectId).then(function(_this){return function(project){return _this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},UserNotificationsController.prototype.loadNotifyPolicies=function(){return this.rs.notifyPolicies.list().then(function(_this){return function(notifyPolicies){return _this.scope.notifyPolicies=notifyPolicies,notifyPolicies}}(this))},UserNotificationsController.prototype.loadInitialData=function(){var promise;return promise=this.repo.resolve({pslug:this.params.pslug}).then(function(_this){return function(data){return _this.scope.projectId=data.project,data}}(this)),promise.then(function(_this){return function(){return _this.loadProject()}}(this)).then(function(_this){return function(){return _this.loadNotifyPolicies()}}(this))},UserNotificationsController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserNotificationsController",UserNotificationsController),UserNotificationsDirective=function(){var link;return link=function($scope,$el){return $scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgUserNotifications",UserNotificationsDirective),UserNotificationsListDirective=function($repo,$confirm){var link,template;return template=_.template('<% _.each(notifyPolicies, function (notifyPolicy, index) { %>\n
\n
<%- notifyPolicy.project_name %>
\n
\n
\n checked="checked"<% } %>/>\n \n
\n
\n
\n
\n checked="checked"<% } %> />\n \n
\n
\n
\n
\n checked="checked"<% } %> />\n \n
\n
\n
\n<% }) %>'),link=function($scope,$el,$attrs){var render;return render=function(){return $el.off(),$el.html(template({notifyPolicies:$scope.notifyPolicies})),$el.on("change","input[type=radio]",function(event){var onError,onSuccess,policy,policyIndex,prev_level,target;return target=angular.element(event.currentTarget),policyIndex=target.parents(".policy-table-row").data("index"),policy=$scope.notifyPolicies[policyIndex],prev_level=policy.notify_level,policy.notify_level=parseInt(target.val(),10),onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error"),target.parents(".policy-table-row").find("input[value="+prev_level+"]").prop("checked",!0)},$repo.save(policy).then(onSuccess,onError)})},$scope.$on("$destroy",function(){return $el.off()}),bindOnce($scope,$attrs.ngModel,render)},{link:link}},module.directive("tgUserNotificationsList",["$tgRepo","$tgConfirm",UserNotificationsListDirective])}.call(this),function(){var module;module=angular.module("taigaPlugins",["ngRoute"])}.call(this),function(){var configure,module,taiga;taiga=this.taiga,module=angular.module("taigaPlugins"),configure=function($routeProvider){return $routeProvider.when("/humans.html",{templateUrl:"/plugins/humanshtml/templates/humans.html"})},module.config(["$routeProvider",configure])}.call(this),function(){var TermsNoticeDirective,module,taiga,template;taiga=this.taiga,module=angular.module("taigaPlugins"),template=_.template('

\n By clicking "Sign up", you agree to our
\n
terms of service\n and\n privacy policy.\n

'),TermsNoticeDirective=function($config){var privacyPolicyUrl,templateFn,termsOfServiceUrl;return privacyPolicyUrl=$config.get("privacyPolicyUrl"),termsOfServiceUrl=$config.get("termsOfServiceUrl"),templateFn=function(){var ctx;return privacyPolicyUrl&&termsOfServiceUrl?(ctx={termsUrl:termsOfServiceUrl,privacyUrl:privacyPolicyUrl},template(ctx)):""},{scope:{},restrict:"AE",template:templateFn}},module.directive("tgTermsNotice",["$tgConfig",TermsNoticeDirective])}.call(this),angular.module("taigaBase").value("localesEn",{checksley:{defaultMessage:"This value seems to be invalid.","type-email":"This value should be a valid email.","type-url":"This value should be a valid url.","type-urlstrict":"This value should be a valid url.","type-number":"This value should be a valid number.","type-digits":"This value should be digits.","type-dateIso":"This value should be a valid date (YYYY-MM-DD).","type-alphanum":"This value should be alphanumeric.","type-phone":"This value should be a valid phone number.",notnull:"This value should not be null.",notblank:"This value should not be blank.",required:"This value is required.",regexp:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or less.",rangelength:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or less.",rangecheck:"You must select between %s and %s choices.",equalto:"This value should be the same."},common:{subject:"Subject",save:"Save",blocked:"Blocked",cancel:"Cancel",status:"Status","new-bulk":"New bulk insert","one-item-line":"One item per line..."},pagination:{next:"Next",prev:"Previous"},"markdown-editor":{"heading-1":"First Level Heading","heading-2":"Second Level Heading","heading-3":"Third Level Heading",bold:"Bold",italic:"Italic",strike:"Strike","bulleted-list":"Bulleted List","numeric-list":"Numeric List",picture:"Picture",link:"Link",quotes:"Quotes","code-block":"Code Block / Code",preview:"Preview",help:"Help",placeholder:"Your title here...","link-placeholder":"Your text to link here..."},us:{"title-new":"New User Story","team-requirement":"Team Requirement","client-requirement":"Client Requirement"}}); //# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/dist/js/app.js.map b/dist/js/app.js.map index f31e2cf..682a200 100644 --- a/dist/js/app.js.map +++ b/dist/js/app.js.map @@ -1 +1 @@ -{"version":3,"sources":["app.js","classes.js","utils.js","controllerMixins.js","admin.js","auth.js","backlog.js","base.js","common.js","events.js","feedback.js","integrations.js","issues.js","kanban.js","locales.js","nav.js","projects.js","related-tasks.js","resources.js","search.js","taskboard.js","tasks.js","team.js","user-settings.js","userstories.js","wiki.js","analytics.js","attachments.js","bind-scope.js","components.js","confirm.js","custom-field-values.js","estimation.js","filters.js","history.js","importer.js","lightboxes.js","loader.js","loading.js","popovers.js","raven-logger.js","tags.js","wisiwyg.js","main.js","sortable.js","sprints.js","charts.js","detail.js","list.js","memberships.js","project-profile.js","project-values.js","roles.js","third-parties.js","bind.js","conf.js","contrib.js","http.js","i18n.js","location.js","model.js","navurls.js","repository.js","storage.js","urls.js","custom-attributes-values.js","custom-attributes.js","invitations.js","mdrender.js","modules.js","notify-policies.js","webhooklogs.js","webhooks.js","change-password.js","notifications.js","humanshtml/humanshtml.js","terms/terms.js","locales.en.js"],"names":["configure","init","module","modules","taiga","this","taigaContribPlugins","generateHash","components","_","map","x","JSON","stringify","hex_sha1","join","generateUniqueSessionIdentifier","date","randomNumber","Date","getTime","Math","floor","random","sessionId","$routeProvider","$locationProvider","$httpProvider","$provide","$tgEventsProvider","tgLoaderProvider","$compileProvider","authHttpIntercept","defaultHeaders","versionCheckHttpIntercept","when","templateUrl","resolve","loader","add","reloadOnSearch","redirectTo","params","pslug","otherwise","html5Mode","enabled","requireBase","Content-Type","Accept-Language","X-Session-Id","defaults","headers","patch","post","put","get","setSessionId","$q","$location","$navUrls","$lightboxService","httpResponseError","response","nextPath","status","closeAll","path","replace","url","search","reject","responseError","factory","interceptors","push","$confirm","versionErrorMsg","data","version","notify","window","checksley","updateValidators","linewidth","val","width","lines","valid","nl2br","split","every","line","length","updateMessages","debugInfoEnabled","taigaConfig","debugInfo","$log","$i18n","$config","$rootscope","$auth","$events","$analytics","initialize","debug","contribPlugins","isAuthenticated","setupConnection","concat","plugin","angular","config","run","call","TaigaBase","TaigaController","TaigaService","extend","child","parent","ctor","constructor","key","hasProp","prototype","__super__","hasOwnProperty","bind","fn","me","apply","arguments","superClass","onInitialDataError","xhr","location","navUrls","q","Base","Service","Controller","bindMethods","bindOnce","cancelTimeout","debounce","debounceLeading","groupBy","joinStr","mixOf","scopeDefer","sizeFormat","slugify","startswith","timeout","toString","toggleText","trim","unslugify","indexOf","item","i","l","slice","str","breakTag","object","dependencies","methods","keys","forIn","value","bindAll","scope","attr","continuation","delBind","$eval","$watch","Mixed","base","method","mixin","mixins","name","ref","char","capitalize","element","texts","nextTextPosition","text","coll","pred","len","result","wait","setTimeout","timeoutVar","clearTimeout","func","defer","$apply","isNumber","isString","isPlainObject","isUndefined","leading","trailing","str1","str2","startsWith","input","precision","number","size","units","isNaN","parseFloat","isFinite","log","pow","toFixed","FiltersMixin","PageMixin","fillUsersAndRoles","users","roles","activeUsers","availableRoles","filter","user","is_active","sortBy","activeUsersById","e","id","usersById","project","memberships","uniq","computableRoles","contains","loadUsersAndRoles","promise","all","rs","projects","usersList","projectId","rolesList","then","_this","results","selectFilter","load","existing","compact","isInCurrentRouteParams","noreload","replaceFilter","replaceAllFilters","filters","unselectFilter","newValues","parsedValues","isEmpty","AuthService","CancelAccountDirective","ChangeEmailDirective","ChangePasswordFromRecoveryDirective","ForgotPasswordDirective","InvitationDirective","LoginDirective","PublicRegisterMessageDirective","RegisterDirective","rootscope","storage","model","http","urls","$inject","getUser","userData","make_model","setUser","auth","$broadcast","default_language","set","getAttrs","clear","remove","setToken","token","getToken","removeToken","login","type","clone","auth_token","logout","register","getInvitation","invitations","acceptInvitiationWithNewUser","acceptInvitiationWithExistingUser","forgotPassword","changePasswordFromRecovery","changeEmail","cancelAccount","service","templates","template","templateFn","publicRegisterEnabled","restrict","directive","$routeParams","link","$scope","$el","onError","onSuccess","submit","nextUrl","event","form","loginFormType","preventDefault","Form","find","validate","username","password","on","onErrorSubmit","onSuccessSubmit","onlyOneErrorElement","trackEvent","_error_message","setErrors","success","email","$params","tokenInParams","loginForm","onErrorSubmitLogin","onErrorSubmitRegister","onSuccessSubmitLogin","onSuccessSubmitRegister","registerForm","submitLogin","submitRegister","invitation","dataLogin","project_slug","escape","project_name","dataRegister","$repo","$model","email_token","queryOne","cancel_token","TaigaMainDirective","$window","onresize","home","error","not-found","permission-denied","forgot-password","change-password","change-email","cancel-account","create-project","profile","project-backlog","project-taskboard","project-kanban","project-issues","project-search","project-userstories-detail","project-tasks-detail","project-issues-detail","project-wiki","project-wiki-page","project-team","project-admin-home","project-admin-project-profile-details","project-admin-project-profile-default-values","project-admin-project-profile-modules","project-admin-project-profile-export","project-admin-project-profile-reports","project-admin-project-values-status","project-admin-project-values-points","project-admin-project-values-priorities","project-admin-project-values-severities","project-admin-project-values-types","project-admin-project-values-custom-fields","project-admin-memberships","project-admin-roles","project-admin-third-parties-webhooks","project-admin-third-parties-github","project-admin-third-parties-gitlab","project-admin-third-parties-bitbucket","project-admin-contrib","user-settings-user-profile","user-settings-user-change-password","user-settings-user-avatar","user-settings-mail-notifications","$navurls","update","AnimationFrame","AppTitle","CheckPermissionDirective","ClassPermissionDirective","LimitLineLengthDirective","ProjectUrl","Qqueue","SelectedText","Template","ToggleCommentDirective","$document","getSelection","selection","createRange","render","permission","my_permissions","removeClass","$attrs","addClass","tgCheckPermission","$on","off","checkPermissions","tgClassPermissionWatchAction","unbindWatcher","className","negation","classes","animationFrame","performAnimation","tail","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","shift","$","ctx","slug","is_backlog_activated","is_kanban_activated","is_wiki_activated","is_issues_activated","maxColsPerLine","parseInt","code","keyCode","each","index","substring","deferred","lastPromise","qqueue","bindAdd","args","$templateCache","lodash","tmp","EventsProvider","EventsService","win","subscriptions","connected","pendingMessages","WebSocket","info","loc","scheme","stopExistingConnection","protocol","ltrim","host","ws","addEventListener","onOpen","onMessage","onClose","removeEventListener","close","serialize","message","isObject","sendMessage","messages","msg","send","subscribe","routingKey","callback","subscription","cmd","routing_key","unsubscribe","parse","$get","$win","$conf","provider","FeedbackDirective","$loading","submitButton","start","create","feedback","finish","open","focus","ProjectMenuDirective","ProjectsNavigationController","ProjectsNavigationDirective","navurls","projectUrl","loadInitialData","console","listByMember","filteredProjects","filterText","newProject","filterProjects","toLowerCase","controller","$timeout","tgLoader","$compile","$template","baseTemplate","hideMenu","loadingStart","overlay","projectsTemplate","difftime","timeoutValue","is","one","document","body","css","hide","disablePreventLoading","$ctrls","$ctrl","renderProjects","html","$emit","which","hasClass","show","toggleClass","currentUrl","target","currentTarget","prop","absUrl","preventLoading","require","$tgAuth","getSectionName","mainTemplate","menuEntriesTemplate","renderMainMenu","renderMenuEntries","videoConferenceUrl","sectionName","oldSectionName","targetScope","container","dom","section","feedbackEnabled","replaceWith","baseUrl","videoconferences","videoconferences_salt","popover","listener","stopPropagation","videoconferenceUrl","RelatedTaskAssignedToInlineEditionDirective","RelatedTaskCreateButtonDirective","RelatedTaskCreateFormDirective","RelatedTaskRowDirective","RelatedTasksDirective","templateEdit","templateView","renderEdit","renderView","saveTask","task","subject","save","$modelValue","perms","modify_task","delete_task","select","title","askOnDelete","ngModel","$tgmodel","newTask","assigned_to","createTask","default_task_status","us","$rs","loadTasks","tasks","list","usId","autoSave","notAutoSave","updateRelatedTask","member","imgurl","photo","full_name_display","tgRelatedTaskAssignedToInlineEdition","unbind","userId","updatedRelatedTask","ResourcesService","initResources","initUrls","auth-register","permissions","notify-policies","bulk-create-memberships","milestones","userstories","bulk-create-us","bulk-update-us-backlog-order","bulk-update-us-sprint-order","bulk-update-us-kanban-order","userstories-restore","bulk-create-tasks","bulk-update-task-taskboard-order","tasks-restore","issues","bulk-create-issues","issues-restore","wiki","wiki-restore","wiki-links","choices/userstory-statuses","choices/userstory-statuses/bulk-update-order","choices/points","choices/points/bulk-update-order","choices/task-statuses","choices/task-statuses/bulk-update-order","choices/issue-statuses","choices/issue-statuses/bulk-update-order","choices/issue-types","choices/issue-types/bulk-update-order","choices/priorities","choices/priorities/bulk-update-order","choices/severities","choices/severities/bulk-update-order","sites","project-templates","site-members","site-projects","users-password-recovery","users-change-password-from-recovery","users-change-password","users-change-email","users-cancel-account","user-storage","resolver","userstory-statuses","points","task-statuses","issue-statuses","issue-types","priorities","severities","project-modules","webhooks","webhooks-test","webhooklogs","webhooklogs-resend","history/us","history/issue","history/task","history/wiki","attachments/us","attachments/issue","attachments/task","attachments/wiki_page","custom-attributes/userstory","custom-attributes/issue","custom-attributes/task","custom-attributes-values/userstory","custom-attributes-values/issue","custom-attributes-values/task","exporter","importer","userstories-csv","tasks-csv","issues-csv","$urls","providers","toArray","SearchBoxDirective","SearchController","SearchDirective","scope1","repo","appTitle","loadSearchData","searchTerm","t","term","pageLoaded","loadFilters","defered","loadProject","getBySlug","issueStatusById","issue_statuses","taskStatusById","task_statuses","severityById","priorityById","membersById","usStatusById","us_statuses","searchResults","$route","reload","$templatecache","$routeparams","linkTable","getActiveSection","lastSeatchResults","markSectionTabActive","renderFilterTabs","renderTableContent","tabsDom","maxVal","selectedSectionData","selectedSectionName","wikipages","oldElements","oldScope","children","$destroy","$new","parseHTML","activeSection","sectionData","searchText","AnalyticsService","doc","conf","initialized","accountId","pageEvent","trackRoutes","ignoreFirstPageLoad","injectAnalytics","ga","getUrl","trackPage","s","o","g","r","a","m","createElement","getElementsByTagName","async","src","parentNode","insertBefore","page","category","action","label","AttachmentDirective","AttachmentsController","AttachmentsDirective","confirm","objectId","uploadingAttachments","attachments","attachmentsCount","deprecatedAttachmentsCount","showDeprecated","loadAttachments","urlname","updateCounters","is_deprecated","_createAttachment","attachment","urlName","isCreatedRightNow","splice","createAttachments","promises","addUploadingAttachments","union","reorderAttachment","newIndex","oldIndex","order","updateAttachment","saveAttachments","saveAll","j","revert","removeAttachment","filterAttachments","$templates","showSizeInfo","tdom","sortable","items","handle","containment","dropOnEmpty","scroll","tolerance","placeholder","ui","attach","files","maxFileSize","maxFileSizeMsg","controllerAs","saveAttachment","edit","modifyPermission","created_date","moment","format","description","isDeprecated","tgAttachment","BindScope","jQuery","AssignedToDirective","BlockButtonDirective","CreatedByDisplayDirective","DateRangeDirective","DateSelectorDirective","DeleteButtonDirective","EditableDescriptionDirective","EditableSubjectDirective","ListItemAssignedtoDirective","ListItemIssueStatusDirective","ListItemPriorityDirective","ListItemSeverityDirective","ListItemTaskStatusDirective","ListItemTypeDirective","ListItemUsStatusDirective","SprintProgressBarDirective","TgMainTitleDirective","TgProgressBarDirective","WatchersDirective","renderRange","first","second","endDate","initDate","tgDateRange","valFirst","valSecond","selectedDate","picker","Pikaday","field","onSelect","setDate","renderProgress","percentage","visual_percentage","tgSprintProgressbar","sprint","closedPoints","totalPoints","closed_points","total_points","round","owner","$qqueue","deleteWatcher","isEditable","renderWatchers","ref1","requiredPerm","watchers","$setViewValue","watcherId","watcherIds","pull","renderAssignedTo","issue","assignedTo","assignedToId","ask","instance","is_blocked","onDeleteGoToUrl","onDeleteTitle","subtitle","click","$selectedText","noDescriptionMegEditMode","noDescriptionMegReadMode","noDescriptionMsg","tgListitemIssueStatus","tgListitemTaskStatus","tgListitemUsStatus","tgListitemAssignedto","full_name","domNode","priority","color","tgListitemPriority","severity","tgListitemSeverity","issueTypeById","tgListitemType","el","tgProgressBar","max","min","projectName","ConfirmService","NOTIFICATION_MSG","light-error","lightboxService","loading","lightboxSelector","ok","askChoice","choices","replacement","warning","choicesField","append","selected","stop","percent","time","selector","tsem","CustomAttributeValueDirective","CustomAttributesValuesController","CustomAttributesValuesDirective","customAttributes","customAttributesValues","loadCustomAttributesValues","getAttributeValue","attribute","attributeValue","attributes_values","updateAttributeValue","attributesValues","$storage","collapsedHash","collapsed","hash","requiredEditionPerm","saveAttributeValue","editable","tgCustomAttributeValue","EstimationsService","LbUsEstimationDirective","UsEstimationDirective","$tgEstimationsService","$rootScope","estimationProcess","onSelectedPointForRole","calculateTotalPoints","calculateRoles","roleId","pointId","EstimationProcess","pointsTemplate","$el1","us1","project1","bindClickEvents","pointsById","notNullValues","values","v","reduce","acc","num","role","pointObj","renderPointsSelector","siblings","horizontalList","maxPointLength","point","some","horizontal","closest","defaultFilter","momentFormat","momentFromNow","yesNoFilter","defaultValue","without_suffix","fromNow","HistoryController","HistoryDirective","loadHistory","history","historyResult","values_diff","description_diff","description_html","blocked_note_diff","blocked_note","blocked_note_html","comments","comment","deleteComment","activityId","undeleteComment","templateActivity","templateBase","templateBaseEntries","templateChangeAttachment","templateChangeDiff","templateChangeGeneric","templateChangeList","templateChangePoints","templateDeletedComment","countChanges","formatChange","getHumanizedFieldName","getUserAvatar","getUserFullName","renderActivity","renderAttachmentEntry","renderChange","renderChangeEntries","renderChangeEntry","renderChangesHelperText","renderComment","renderComments","renderCustomAttributesEntry","renderHistory","showAllActivity","showAllComments","humanizedFieldNames","is_closed","finish_date","client_requirement","team_requirement","milestone","user_story","is_iocaine","change","isArray","changes","diff","filename","from","to","flatten","customAttrsChanges","added","removed","difference","ref2","delete_comment_date","delete_comment_user","deleteCommentDate","deleteCommentUser","comment_html","canRestoreComment","pk","avatar","userFullName","creationDate","created_at","changesText","mode","canDeleteComment","entries","totalEntries","showMore","totalComments","last","totalChanges","parents","ngmodel","ImportProjectButtonDirective","trigger","file","errorMsg","AssignedToLightboxDirective","BlockLightboxDirective","BlockingMessageInputDirective","CreateBulkUserstoriesDirective","CreateEditUserstoryDirective","LightboxDirective","LightboxKeyboardNavigationService","LightboxService","WatchersLightboxDirective","docEl","lightboxContent","not","removeAttr","lightboxEl","dispatch","activeElement","next","prev","$tgrepo","block","unblock","finishCallback","watch","isNew","statusList","usStatusList","is_archived","tags","broadcastEvent","keydown","statusId","bulk","bulkCreate","lightboxKeyboardNavigationService","closeLightbox","filterUsers","normalizeString","selectedItem","selectedUser","usersTemplate","string","normalizedString","toUpperCase","partial","searchingText","usersSearch","getFilteredUsers","_filterUsers","Loader","LoaderDirective","onStart","onEnd","startCurrentPageLoader","reset","defaultConfig","forceDisabled","minTime","merge","startLoadTime","force","endTime","TgLoadingService","oldContent","RelatedTaskStatusDirective","UsStatusDirective","usStatusDom","usStatusDomParent","tgUsStatus","onUpdate","statuses","selectionTemplate","updateTaskStatus","taskStatusDom","taskStatusDomParent","tgRelatedTaskStatus","closePopover","isVisible","docViewBottom","docViewLeft","docViewRight","docViewTop","docViewWidth","elemBottom","elemLeft","elemRight","elemTop","elemWidth","display","visibility","scrollTop","height","offset","top","left","fadeOut","fadeIn","ExceptionHandlerFactory","ravenConfig","Raven","install","exception","captureException","ColorizeTagsDirective","LbTagLineDirective","TagLineDirective","TagsDirective","formatter","parser","$formatters","$parsers","backlog","kanban","taskboard","srcTags","tgColorizeTagsType","sort","tag","tags_colors","tgColorizeTags","COMMA_KEY","ENTER_KEY","templateTags","addValue","deleteValue","hideSaveButton","removeInputLastCharacter","renderTags","resetInput","saveInputTag","showSaveButton","tagsColors","style","autocomplete","inputValue","positioningFunction","position","elements","menu","source","my","using","ESC_KEY","hideAddTagButton","hideAddTagButtonText","hideInput","renderInReadModeOnly","showAddTagButton","showAddTagButtonText","showInput","blur","tgMarkitupDirective","$tr","previewTemplate","addLine","closePreviewMode","markdownSettings","markdownTitle","prepareUrlFormatting","preview","previewDomNode","setCaretPosition","urlFormatting","class","markItUpDomNode","markdownDomNode","mdrender","markdown","textarea","caretPosition","range","scrollRelation","totalLines","createTextRange","move","selectionStart","setSelectionRange","scrollHeight","nline","cursorPosition","nameSpace","onShiftEnter","keepDefault","openWith","onEnter","afterInsert","cursorLine","emptyListItem","lastLine","markdownCaretPositon","match","newLineContent","markupSet","placeHolder","closeWith","markItUp","separator","beforeInsert","indices","regex","exec","donotparse","endIndex","startIndex","heading","n","BacklogFiltersDirective","templateSelected","initializeSelectedFilters","renderFilters","renderSelectedFilters","selectQFilter","selectedFilters","showCategories","showFilters","toggleFilterSelection","f","currentFiltersType","loadUserstories","CreateEditSprint","createSprint","hasErrors","estimated_start","estimated_finish","newSprint","copy","setAttr","sprintsCounter","__all__","milestonesCounter","estimatedFinish","estimatedStart","lastSprint","lastSprintNameDom","sprints","BacklogController","BacklogDirective","TgBacklogProgressBarDirective","UsPointsDirective","UsRolePointsSelectorDirective","tgBacklogGraphDirective","params1","events","analytics","showTags","activeFilters","initializeEventHandlers","getShowTags","loadProjectStats","loadSprints","moveUs","loadClosedSprints","unloadClosedSprints","initializeSubscription","routingKey1","routingKey2","toggleShowTags","storeShowTags","toggleActiveFilters","stats","completedPercentage","refreshTagsColors","closedSprints","closed","user_stories","openSprints","reverse","sprintsById","resetFilters","selectedStatuses","selectedTags","filtersQ","filterGrp","httpParams","getUrlFilters","storeQueryParams","listUnassigned","setSearchDataFilters","filterVisibleUserstories","generateFilters","loadBacklog","totalClosedMilestones","total_closed_milestones","visibleUserstories","isFilterSelected","searchdata","Object","prepareBulkUpdateData","uses","us_id","resortUserStories","isModified","usList","newUsIndex","newSprintId","len1","len2","oldSprintId","Array","bulkUpdateBacklogOrder","bulkUpdateSprintOrder","len3","oldSprint","urlfilters","results1","pick","plainStatuses","plainTags","countBy","k","obj","count","editUserStory","deleteUserStory","without","addNewUs","default_us_status","addNewSprint","doomLineTemplate","linkDoomLine","linkFilters","linkToolbar","showHideFilter","showHideTags","addDoomLineDom","getUsItems","reloadDoomLine","removeDoomlineDom","current_sum","domElement","assigned_points","before","rowElements","moveToCurrentSprint","selectedUss","extraPoints","totalExtraPoints","ussCurrent","moveToCurrentSprintDom","selectedUsDom","ussDom","ussToMove","itemScope","elm","sidebar","filtersSearch","disableSelection","numberOfRoles","roleName","rolScope","$tgTemplate","rolesTemplate","bindClickElements","filteringRoleId","renderRolesSelector","selectedRoleId","updatingSelectedRoleId","tgBacklogUsPoints","popRolesDom","redrawChart","dataToDraw","client_increment_line","colors","evolution_line","milestonesRange","optimal_line","options","team_increment_line","zero_line","zip","fillColor","ml","optimal","evolution","grid","borderWidth","right","bottom","borderColor","hoverable","xaxis","ticks","axisLabel","axisLabelUseCanvas","axisLabelFontSizePixels","axisLabelFontFamily","axisLabelPadding","tickFormatter","series","shadowSize","fill","radius","lineWidth","tooltip","tooltipOpts","content","xval","yval","flotItem","seriesIndex","abs","empty","plot","adjustPercentaje","projectPointsPercentaje","closedPointsPercentaje","adjusted","tgBacklogProgressBar","definedPoints","defined_points","BacklogEmptySortableDirective","BacklogSortableDirective","SprintSortableDirective","deleteElement","$tgConfirm","getUsIndex","filterError","cancel","connectWith","cursorAt","itemIndex","itemUs","BacklogSprintDirective","BacklogSprintHeaderDirective","ToggleExcludeClosedSprintsVisualization","refreshSprintTableHeight","slideOptions","sprintTableMinHeight","toggleSprint","duration","easing","sprintTable","sprintArrow","tgBacklogSprint","slideToggle","estimatedDateRange","taskboardUrl","excludeClosedSprints","loadingElm","after","SprintGraphDirective","days","day","unshift","d","optimal_points","open_points","tickSize","daysNames","yaxis","formattedDate","roundedValue","CreateBulkTasksDirective","CreateEditTaskDirective","sprintId","TaskboardController","TaskboardDirective","TaskboardSquishColumnDirective","TaskboardTaskDirective","TaskboardUserDirective","rs1","loadTaskboard","taskMove","loadSprintStats","loadSprint","pointsList","roleById","taskStatusList","completedPointsSum","remainingPointsSum","remainingTasks","totalPointsSum","res","completed_points","total_tasks","completed_tasks","openTasks","usTasks","sslug","refreshTasksOrder","resortTasks","bulkUpdateTaskTaskboardOrder","task_id","taskboard_order","addNewTask","editTaskAssignedTo","tableBodyDom","tableHeaderDom","scrollLeft","avatarWidth","maxColumnWidth","getCeilWidth","recalculateStatusColumnWidth","recalculateTaskboardWidth","refreshTaskboardTableWidth","setStatusColumnWidth","statusesFolded","getStatusColumnModes","usFolded","getUsRowModes","foldStatus","storeStatusColumnModes","foldUs","storeUsRowModes","tasksMatrixSize","sqrt","column","columnWidths","columns","totalWidth","outerWidth","total","statusFoldedWidth","forEach","clickable","username_label","assign","TaskboardSortableDirective","itemEl","newParentScope","oldParentScope","itemTask","newStatusId","newUsId","oldStatusId","oldUsId","parentEl","st","KanbanArchivedStatusHeaderDirective","KanbanArchivedStatusIntroDirective","KanbanController","KanbanDirective","KanbanSquishColumnDirective","KanbanUserDirective","KanbanUserstoryDirective","KanbanWipLimitDirective","defaultViewMode","defaultViewModes","maximized","cardClass","minimized","statusViewModes","onAssignedToChanged","loadUserStoriesForStatus","hideUserStoriesForStatus","changeUsAssignedTo","userid","status__is_archived","listAll","usByStatus","us_archived","loadKanban","generateStatusViewModes","storedStatusViewModes","getStatusViewModes","has","storeStatusViewModes","updateStatusViewMode","newViewMode","getCardClass","kanban_order","itemsToSave","bulkUpdateKanbanOrder","hideArchivedText","showArchivedText","hidden","tgKanbanArchivedStatusHeader","hiddenUserStoriexText","userStories","updateIntroText","tgKanbanArchivedStatusIntro","isArchived","userStoriesLoaded","updateTableWidth","folds","redrawWipLimit","tgKanbanWipLimit","wtid","tgKanbanUserAvatar","KanbanSortableDirective","IssueDetailController","IssuePriorityButtonDirective","IssueSeverityButtonDirective","IssueStatusButtonDirective","IssueStatusDisplayDirective","IssueTypeButtonDirective","PromoteIssueToUsButtonDirective","issueRef","issueref","initializeOnDeleteGoToUrl","loadIssue","statusById","typeById","issue_types","typeList","severityList","priorityList","getByRef","issueId","commentModel","neighbors","previous","previousUrl","typees","severityes","priorityes","generated_from_issue","CreateBulkIssuesDirective","CreateIssueDirective","default_issue_status","default_issue_type","default_priority","default_severity","IssueAssignedToInlineEditionDirective","IssueStatusInlineEditionDirective","IssuesController","IssuesDirective","IssuesFiltersDirective","loadIssues","getFilters","storeFilters","issueStatusList","issueTypes","getUrlFilter","loadMyFilters","getMyFilters","removeNotExistingFiltersFromUrl","currentSearch","existingValues","filterName","filterValue","splittedValues","intersection","markSelectedFilters","isSelected","omit","myFilters","filtersData","choicesFiltersFormat","tagsFilterFormat","usersFiltersFormat","unknownOption","reformatedUsers","unknownItem","u","byIdObject","createdBy","created_by","types","loadIssuesRequests","urlFilters","models","current","paginatedBy","saveCurrentFiltersTo","newFilter","storeMyFilters","deleteMyFilter","addNewIssue","addIssuesInBulk","linkOrdering","linkPagination","$pagEl","afterCurrent","atBegin","atEnd","beforeCurrent","getNumPages","renderPagination","numPages","cpage","pages","showPrevious","showNext","pagenum","colHeadElement","currentOrder","icon","finalOrder","newOrder","filterId","customFilterName","loadPromise","currentfilterstype","updateIssueStatus","issueStatusDom","issueStatusDomParent","tgIssueStatusInlineEdition","updateIssue","tgIssueAssignedToInlineEdition","updatedIssue","UsClientRequirementButtonDirective","UsStatusButtonDirective","UsStatusDisplayDirective","UsTasksProgressDisplayDirective","UsTeamRequirementButtonDirective","UserStoryDetailController","usRef","usref","loadUs","progress","totalClosedTasks","totalTasks","canEdit","isRequired","TaskDetailController","TaskIsIocaineButtonDirective","TaskStatusButtonDirective","TaskStatusDisplayDirective","taskRef","taskref","loadTask","taskId","loadUserStory","isIocaine","LeaveProjectDirective","TeamController","TeamFiltersDirective","TeamMemberCurrentUserDirective","TeamMemberStatsDirective","TeamMembersDirective","setRole","filtersRole","loadMembers","currentUser","membership","totals","is_user_active","issuesEnabled","tasksEnabled","wikiEnabled","loadMemberStats","memberStats","vals","sum","processStats","processStat","stat","singleStat","leave","projectid","EditableWikiContentDirective","WikiDetailController","WikiSummaryDirective","projectSlug","wikiSlug","loadWiki","wikiId","loadWikiLinks","listLinks","wikiLinks","last_modifier","imgUrl","totalEditions","editions","lastModifiedDate","modified_date","wikiPage","cancelEdition","disableEdition","getSelectedText","switchToEditMode","switchToReadMode","button","WikiNavDirective","addWikiLinkPermission","deleteWikiLinkPermission","linkId","linkSlug","href","newLink","CreateMembersDirective","MAX_MEMBERSHIP_FIELDSETS","extraTextTemplate","createFieldSet","resetForm","required","roleList","fieldSet","prepend","lastActionButton","newFieldSet","invitation_extra_text","memberWrappers","destroy","mw","memberWrapper","role_id","bulkCreateMemberships","MembershipsController","MembershipsDirective","MembershipsRowActionsDirective","MembershipsRowAdminCheckboxDirective","MembershipsRowAvatarDirective","MembershipsRowRoleSelectorDirective","i_am_owner","httpFilters","addNewMembers","user_email","tgMembershipsRowAvatar","inputId","tgMembershipsRowAdminCheckbox","is_owner","selectedRole","tgMembershipsRowRoleSelector","newRole","activedTemplate","pendingTemplate","tgMembershipsRowActions","resendInvitation","AdminNavigationDirective","tgAdminNavigation","CsvExporterController","CsvExporterIssuesController","CsvExporterTasksController","CsvExporterUserstoriesController","ProjectDefaultValuesDirective","ProjectExportDirective","ProjectModulesDirective","ProjectProfileController","ProjectProfileDirective","prioritiesList","severitiesList","issueTypesList","openDeleteLightbox","newUrl","isVideoconferenceActivated","buttonsEl","hideButtons","hideResult","hideSpinner","resultEl","resultMessageEl","resultTitleEl","setAsyncMessage","setAsyncTitle","setLoadingMessage","setLoadingTitle","setSyncMessage","setSyncTitle","showButtons","showErrorMode","showExportResultAsyncMode","showExportResultSyncMode","showLoadingMode","showResult","showSpinner","spinnerEl","dumpUrl","_generateUuid","setCsvUuid","csvUrl","resolveAbsolute","csvUuid","uuid","regenerateUuid","identity","ColorSelectionDirective","ProjectCustomAttributesController","ProjectCustomAttributesDirective","ProjectValuesController","ProjectValuesDirective","ProjectValuesSectionController","moveValue","loadValues","resource","listValues","maxValueOrder","itemValue","linkDragAndDrop","linkValue","axis","goToBottomList","initializeNewValue","saveNewValue","saveValue","valueType","newValue","table","formEl","row","editionRow","option","onSucces","moveTo","moveCustomAttributes","deleteCustomAttribute","saveCustomAttribute","createCustomAttribute","loadCustomAttributes","maxOrder","attrValues","attrModel","idx","cancelCreate","cancelUpdate","hideAddButton","hideCancelButton","hideCreateForm","hideEditForm","resetNewAttr","revertChangesInCustomAttribute","showAddButton","showCancelButton","showCreateForm","showEditForm","sortableEl","itemAttr","newAttr","EditRoleDirective","NewRoleDirective","RolePermissionsDirective","RolesController","RolesDirective","anyComputableRole","computable","loadExternalUserRole","public_permission","external_user","public_permissions","loadRoles","setComputable","toggleView","toggle","DEFAULT_PERMISSIONS","categoryTemplate","resumeTemplate","generateCategoriesFromRole","renderCategory","renderPermissions","renderResume","categories","isPermissionEditable","issuePermissions","milestonePermissions","setActivePermissions","setActivePermissionsPerCategory","taskPermissions","userStoryPermissions","wikiPermissions","active","is_private","cat","activePermissions","getActivePermissions","categoryId","anon_permissions","BitbucketController","BitbucketWebhooksDirective","GithubController","GithubWebhooksDirective","GitlabController","GitlabWebhooksDirective","NewWebhookDirective","SelectInputText","ValidOriginIpsDirective","WebhookDirective","WebhooksController","loadWebhooks","openHistory","showEditMode","showVisualizationMode","updateLogs","updateShowHideHistoryText","webhook","tgWebhook","validStatus","prettySentHeaders","pairs","request_headers","arg","header","prettySentData","request_data","prettyDate","created","logs_counter","logs","historyElement","textElement","test","resend","addWebhookDOMNode","formDOMNode","loadModules","github","gitlab","bitbucket","saveAttribute","$ngModel","CreateProject","DeleteProjectDirective","$projectUrl","$cacheFactory","removeAll","error_field","error_step","selectors","total_story_points","total_milestones","creation_template","head","step","fields","projectToDelete","ProjectController","ProjectsController","ProjectsListDirective","ProjectsPaginationDirective","recents","loadPageData","checkButtonVisibility","containerSize","hasNextPage","hasPagination","hasPrevPage","nextBtn","nextPage","pageSize","prevBtn","prevPage","visible","lastLi","maxTop","newTop","outerHeight","animate","BindHtmlDirective","BindOnceAltDirective","BindOnceBindDirective","BindOnceHrefDirective","BindOnceHtmlDirective","BindOnceRefDirective","BindOnceSrcDirective","BindOnceTitleDirective","BindTitleDirective","tgBoBind","tgBoHtml","tgBoRef","tgBoSrc","tgBoHref","tgBoAlt","tgBoTitle","tgTitleHtml","tgBindHtml","ConfigurationService","ContribController","rootScope","currentPlugin","where","pluginTemplate","adminPlugins","FiltersStorageService","HttpService","Authorization","request","I18nDirective","I18nService","ns","fallbackLng","lng","localesEn","resStore","en","app","setLanguage","language","i18n","setLng","currentLang","opts","tr","trOpts","locationFactory","lastRoute","un","Model","ModelService","dataTypes","_attrs","_name","_dataTypes","setAttrs","_modifiedAttrs","_isModified","applyCasts","attrName","castMethod","castName","casts","getIdAttrName","getName","attrs","getter","self","setter","substr","enumerable","configurable","defineProperty","isAttributeModified","markSaved","desSerialize","sdata","ddata","cls","int","float","NavigationUrlsDirective","NavigationUrlsService","formatUrl","replacer","bindOnceP","parseNav","tgNav","fullUrl","RepositoryService","model1","resolveUrlForModel","idAttrName","resolveUrlForAttributeModel","extraParams","_data","refresh","queryMany","httpOptions","enablePagination","queryOneAttribute","queryOneRaw","queryPaginated","cache","wikipage","StorageService","_default","serializedValue","localStorage","getItem","setItem","removeItem","UrlsService","fmt","String","mainUrl","Error","rtrim","resourceProvider","object_id","uploadComplete","uploadFailed","uploadProgress","evt","progressMessage","loaded","progressPercent","responseText","_error","FormData","XMLHttpRequest","upload","setRequestHeader","_get","userstory","_list","$http","filtersHashSuffix","hashSuffix","myFiltersHashSuffix","getQueryParams","project_id","bulk_issues","innerPromise","hashSuffixStatusColumnModes","hashSuffixStatusViewModes","listByUser","bulk_memberships","notifyPolicies","memberId","regenerate_userstories_csv_uuid","regenerate_issues_csv_uuid","regenerate_tasks_csv_uuid","statusUpdater","complete","failed","get_all","hashSuffixUserstories","storeUserstoriesQueryParams","hashSuffixUsRowModes","userStoryId","sprint_id","bulk_tasks","changeAvatar","transformRequest","removeAvatar","changePassword","currentPassword","newPassword","current_password","userSettings","status_id","bulk_stories","webhookId","webhooklogId","UserChangePasswordController","UserChangePasswordDirective","newPassword1","newPassword2","DeleteUserDirective","TaigaAvatarModelDirective","UserAvatarDirective","UserProfileDirective","UserSettingsController","avatarAttachment","$parse","modelSetter","tgAvatarModel","UserSettingsNavigationDirective","tgUserSettingsNavigation","UserNotificationsController","UserNotificationsDirective","UserNotificationsListDirective","loadNotifyPolicies","policy","policyIndex","prev_level","notify_level","TermsNoticeDirective","privacyPolicyUrl","termsOfServiceUrl","termsUrl","privacyUrl","defaultMessage","type-email","type-url","type-urlstrict","type-number","type-digits","type-dateIso","type-alphanum","type-phone","notnull","notblank","regexp","minlength","maxlength","rangelength","mincheck","maxcheck","rangecheck","equalto","common","blocked","new-bulk","one-item-line","pagination","markdown-editor","heading-1","heading-2","heading-3","bold","italic","strike","bulleted-list","numeric-list","picture","quotes","code-block","help","link-placeholder","title-new","team-requirement","client-requirement"],"mappings":"CAsBA,WACA,GAAAA,WAAAC,KAAAC,OAAAC,QAAAC,KAEAC,MAAAD,MAAAA,SAEAC,KAAAC,oBAAAD,KAAAC,wBAEAF,MAAAG,aAAA,SAAAC,YAOA,MANA,OAAAA,aACAA,eAEAA,WAAAC,EAAAC,IAAAF,WAAA,SAAAG,GACA,MAAAC,MAAAC,UAAAF,KAEAG,SAAAN,WAAAO,KAAA,OAGAX,MAAAY,gCAAA,WACA,GAAAC,MAAAC,YAGA,OAFAD,OAAA,GAAAE,OAAAC,UACAF,aAAAG,KAAAC,MAAA,UAAAD,KAAAE,UACAnB,MAAAG,cAAAU,KAAAC,gBAGAd,MAAAoB,UAAApB,MAAAY,kCAEAhB,UAAA,SAAAyB,eAAAC,kBAAAC,cAAAC,SAAAC,kBAAAC,iBAAAC,kBACA,GAAAC,mBAAAC,eAAAC,yBAiPA,OAhPAT,gBAAAU,KAAA,KACAC,YAAA,wBACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,oBACAC,YAAA,yBAEAX,eAAAU,KAAA,0BACAC,YAAA,qBACAI,gBAAA,IAEAf,eAAAU,KAAA,2BACAC,YAAA,uBACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,0BACAC,YAAA,qBACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,oCACAC,YAAA,2BACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,6BACAC,YAAA,oBACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,iCACAC,YAAA,wBACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,wBACAM,WAAA,SAAAC,QACA,MAAA,YAAAA,OAAAC,MAAA,gBAGAlB,eAAAU,KAAA,8BACAC,YAAA,iBACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,wBACAC,YAAA,iBACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,0BACAC,YAAA,oBACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,mCACAC,YAAA,2BACAC,SACAC,OAAAR,iBAAAS,SAGAd,eAAAU,KAAA,iDACAC,YAAA,qCAEAX,eAAAU,KAAA,wDACAC,YAAA,4CAEAX,eAAAU,KAAA,iDACAC,YAAA,qCAEAX,eAAAU,KAAA,gDACAC,YAAA,oCAEAX,eAAAU,KAAA,iDACAC,YAAA,qCAEAX,eAAAU,KAAA,+CACAC,YAAA,2CAEAX,eAAAU,KAAA,+CACAC,YAAA,2CAEAX,eAAAU,KAAA,mDACAC,YAAA,+CAEAX,eAAAU,KAAA,mDACAC,YAAA,+CAEAX,eAAAU,KAAA,8CACAC,YAAA,0CAEAX,eAAAU,KAAA,sDACAC,YAAA,kDAEAX,eAAAU,KAAA,qCACAC,YAAA,iCAEAX,eAAAU,KAAA,+BACAC,YAAA,2BAEAX,eAAAU,KAAA,gDACAC,YAAA,4CAEAX,eAAAU,KAAA,8CACAC,YAAA,0CAEAX,eAAAU,KAAA,8CACAC,YAAA,0CAEAX,eAAAU,KAAA,iDACAC,YAAA,6CAEAX,eAAAU,KAAA,yCACAC,YAAA,sBAEAX,eAAAU,KAAA,8CACAC,YAAA,2BAEAX,eAAAU,KAAA,sDACAC,YAAA,mCAEAX,eAAAU,KAAA,6CACAC,YAAA,0BAEAX,eAAAU,KAAA,oDACAC,YAAA,iCAEAX,eAAAU,KAAA,8BACAC,YAAA,2BAEAX,eAAAU,KAAA,iCACAC,YAAA,6BAEAX,eAAAU,KAAA,UACAC,YAAA,oBAEAX,eAAAU,KAAA,aACAC,YAAA,uBAEAX,eAAAU,KAAA,oBACAC,YAAA,8BAEAX,eAAAU,KAAA,oBACAC,YAAA,4CAEAX,eAAAU,KAAA,2BACAC,YAAA,4CAEAX,eAAAU,KAAA,sBACAC,YAAA,yBAEAX,eAAAU,KAAA,UACAC,YAAA,qBAEAX,eAAAU,KAAA,cACAC,YAAA,yBAEAX,eAAAU,KAAA,sBACAC,YAAA,iCAEAX,eAAAmB,WACAH,WAAA,eAEAf,kBAAAmB,WACAC,SAAA,EACAC,aAAA,IAEAd,gBACAe,eAAA,mBACAC,kBAAA,KACAC,eAAA9C,MAAAoB,WAEAG,cAAAwB,SAAAC,QAAA,UAAAnB,eACAN,cAAAwB,SAAAC,QAAAC,MAAApB,eACAN,cAAAwB,SAAAC,QAAAE,KAAArB,eACAN,cAAAwB,SAAAC,QAAAG,IAAAtB,eACAN,cAAAwB,SAAAC,QAAAI,KACAN,eAAA9C,MAAAoB,WAEAK,kBAAA4B,aAAArD,MAAAoB,WACAQ,kBAAA,SAAA0B,GAAAC,UAAAC,SAAAC,kBACA,GAAAC,kBAaA,OAZAA,mBAAA,SAAAC,UACA,GAAAC,SASA,OARA,KAAAD,SAAAE,QACAJ,iBAAAK,WACAP,UAAAQ,KAAAP,SAAAvB,QAAA,UACAsB,UAAAS,WACA,MAAAL,SAAAE,SACAD,SAAAL,UAAAQ,OACAR,UAAAU,IAAAT,SAAAvB,QAAA,UAAAiC,OAAA,QAAAN,WAEAN,GAAAa,OAAAR,YAGAS,cAAAV,oBAGAlC,SAAA6C,QAAA,qBAAA,KAAA,YAAA,aAAA,kBAAAzC,oBACAL,cAAA+C,aAAAC,KAAA,qBACAzC,0BAAA,SAAAwB,GAAAkB,UACA,GAAAd,mBAAAe,eASA,OARAA,iBAAA,gKACAf,kBAAA,SAAAC,UACA,MAAA,OAAAA,SAAAE,QAAAF,SAAAe,KAAAC,SACAH,SAAAI,OAAA,QAAAH,gBAAA,KAAA,KACAnB,GAAAa,OAAAR,WAEAL,GAAAa,OAAAR,YAGAS,cAAAV,oBAGAlC,SAAA6C,QAAA,6BAAA,KAAA,aAAAvC,4BACAP,cAAA+C,aAAAC,KAAA,6BACAM,OAAAC,UAAAC,kBACAC,UAAA,SAAAC,IAAAC,OACA,GAAAC,OAAAC,KAKA,OAJAD,OAAAnF,MAAAqF,MAAAJ,KAAAK,MAAA,UACAF,MAAA/E,EAAAkF,MAAAJ,MAAA,SAAAK,MACA,MAAAA,MAAAC,OAAAP,WAKAL,OAAAC,UAAAY,eAAA,WACAV,UAAA,+CAEArD,iBAAAgE,iBAAAd,OAAAe,YAAAC,YAAA,IAGAhG,KAAA,SAAAiG,KAAAC,MAAAC,QAAAC,WAAAC,MAAAC,QAAAC,YAOA,MANAL,OAAAM,WAAAL,QAAA5C,IAAA,oBACA0C,KAAAQ,MAAA,0BACAL,WAAAM,eAAAtG,KAAAC,oBACAgG,MAAAM,mBACAL,QAAAM,kBAEAL,WAAAC,cAGAtG,SAAA,YAAA,cAAA,iBAAA,eAAA,YAAA,cAAA,oBAAA,eAAA,iBAAA,cAAA,cAAA,mBAAA,aAAA,YAAA,YAAA,cAAA,aAAA,eAAA,eAAA,oBAAA,gBAAA,eAAA,oBAAA,YAAA,UAAA,aAAA2G,OAAArG,EAAAC,IAAAL,KAAAC,oBAAA,SAAAyG,QACA,MAAAA,QAAA7G,UAGAA,OAAA8G,QAAA9G,OAAA,QAAAC,SAEAD,OAAA+G,QAAA,iBAAA,oBAAA,gBAAA,WAAA,oBAAA,mBAAA,mBAAAjH,YAEAE,OAAAgH,KAAA,OAAA,UAAA,YAAA,aAAA,UAAA,YAAA,eAAAjH,SAEAkH,KAAA9G,MCnSA,WACA,GAAA+G,WAAAC,gBAAAC,aACAC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,eACAC,KAAA,SAAAC,GAAAC,IAAA,MAAA,YAAA,MAAAD,IAAAE,MAAAD,GAAAE,YAEAjB,WAAA,WACA,QAAAA,cAEA,MAAAA,cAIAE,aAAA,SAAAgB,YAGA,QAAAhB,gBACA,MAAAA,cAAAS,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAGA,MANAd,QAAAD,aAAAgB,YAMAhB,cAEAF,WAEAC,gBAAA,SAAAiB,YAGA,QAAAjB,mBAEA,MADAhH,MAAAkI,mBAAAN,KAAA5H,KAAAkI,mBAAAlI,MACAgH,gBAAAU,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAgBA,MApBAd,QAAAF,gBAAAiB,YAOAjB,gBAAAS,UAAAS,mBAAA,SAAAC,KAUA,MATAA,OACA,MAAAA,IAAAvE,QACA5D,KAAAoI,SAAAtE,KAAA9D,KAAAqI,QAAArG,QAAA,cACAhC,KAAAoI,SAAArE,WACA,MAAAoE,IAAAvE,SACA5D,KAAAoI,SAAAtE,KAAA9D,KAAAqI,QAAArG,QAAA,sBACAhC,KAAAoI,SAAArE,YAGA/D,KAAAsI,EAAApE,OAAAiE,MAGAnB,iBAEAD,WAEA/G,KAAAD,MAAAwI,KAAAxB,UAEA/G,KAAAD,MAAAyI,QAAAvB,aAEAjH,KAAAD,MAAA0I,WAAAzB,iBAEAF,KAAA9G,MCvDA,WACA,GAAA0I,aAAAC,SAAAC,cAAAC,SAAAC,gBAAAC,QAAAC,QAAAC,MAAA7D,MAAA8D,WAAAC,WAAAC,QAAAC,WAAAtJ,MAAAuJ,QAAAC,SAAAC,WAAAC,KAAAC,UACAC,WAAAA,SAAA,SAAAC,MAAA,IAAA,GAAAC,GAAA,EAAAC,EAAA9J,KAAAwF,OAAAsE,EAAAD,EAAAA,IAAA,GAAAA,IAAA7J,OAAAA,KAAA6J,KAAAD,KAAA,MAAAC,EAAA,OAAA,IACAE,SAAAA,MACA7C,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEAvC,OAAA,WACA,MAAA,UAAA4E,KACA,GAAAC,SAEA,OADAA,UAAA,UACAD,IAAA,IAAAjG,QAAA,gCAAA,KAAAkG,SAAA,QAEAjK,MAEA0I,YAAA,WACA,MAAA,UAAAwB,QACA,GAAAC,cAAAC,OAQA,OAPAD,cAAA/J,EAAAiK,KAAAH,QACAE,WACAhK,EAAAkK,MAAAJ,OAAA,SAAAK,MAAAhD,KACA,MAAAoC,SAAA7C,KAAAqD,aAAA5C,KAAA,EACA6C,QAAA9F,KAAAiD,KADA,SAIAnH,EAAAoK,QAAAN,OAAAE,WAEApK,MAEA2I,SAAA,WACA,MAAA,UAAA8B,MAAAC,KAAAC,cACA,GAAAC,SAAA5F,GAEA,OADAA,KAAAyF,MAAAI,MAAAH,MACA,SAAA1F,IACA2F,aAAA3F,MAEA4F,QAAA,KACAA,QAAAH,MAAAK,OAAAJ,KAAA,SAAA1F,KACA,MAAA,UAAAA,KAGA2F,aAAA3F,KACA4F,QACAA,UADA,QAJA,YASA5K,MAEAiJ,MAAA,WACA,GAAA8B,OAAAC,KAAAnB,EAAAoB,OAAAC,MAAAC,OAAAC,KAAAC,GAYA,KAXAL,KAAAhD,UAAA,GAAAmD,OAAA,GAAAnD,UAAAxC,OAAAuE,MAAAjD,KAAAkB,UAAA,MACA+C,MAAA,SAAA9C,YAGA,QAAA8C,SACA,MAAAA,OAAArD,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAGA,MANAd,QAAA6D,MAAA9C,YAMA8C,OAEAC,MACAnB,EAAAsB,OAAA3F,OAAA,EAAAqE,GAAA,EAAAA,GAAA,GAAA,CACAqB,MAAAC,OAAAtB,GACAwB,IAAAH,MAAAzD,SACA,KAAA2D,OAAAC,KACAJ,OAAAI,IAAAD,MACAL,MAAAtD,UAAA2D,MAAAH,OAGA,MAAAF,QAGAtB,KAAA,SAAAhF,KAAA6G,MACA,MAAAlL,GAAA4J,IAAAP,KAAAhF,KAAA6G,OAGAlC,QAAA,SAAA3E,MACA,MAAArE,GAAA4J,IAAAZ,QAAA3E,OAGAiF,UAAA,SAAAjF,MACA,MAAAA,MACArE,EAAA4J,IAAAuB,WAAA9G,KAAAV,QAAA,KAAA,MAEAU,MAGA+E,WAAA,SAAAgC,QAAAC,OACA,GAAAC,kBAAAC,IAOA,OANAD,kBAAAF,QAAA/G,KAAA,qBACA,MAAAiH,kBAAAA,kBAAAD,MAAAjG,UACAkG,iBAAA,GAEAC,KAAAF,MAAAC,kBACAF,QAAA/G,KAAA,mBAAAiH,iBAAA,GACAF,QAAAG,KAAAA,OAGA5C,QAAA,SAAA6C,KAAAC,MACA,GAAAhC,GAAAD,KAAAkC,IAAAC,MAEA,KADAA,UACAlC,EAAA,EAAAiC,IAAAF,KAAApG,OAAAsG,IAAAjC,EAAAA,IACAD,KAAAgC,KAAA/B,GACAkC,OAAAF,KAAAjC,OAAAA,IAEA,OAAAmC,SAGAzC,QAAA,SAAA0C,KAAArB,cACA,MAAA/F,QAAAqH,WAAAtB,aAAAqB,OAGApD,cAAA,SAAAsD,YACA,MAAAtH,QAAAuH,aAAAD,aAGAhD,WAAA,SAAAuB,MAAA2B,MACA,MAAAhM,GAAAiM,MAAA,WACA,MAAA,YACA,MAAA5B,OAAA6B,OAAAF,QAEApM,QAGAuJ,SAAA,SAAAgB,OACA,MAAAnK,GAAAmM,SAAAhC,OACAA,MAAA,GACAnK,EAAAoM,SAAAjC,OACAA,MACAnK,EAAAqM,cAAAlC,OACAhK,KAAAC,UAAA+J,OACAnK,EAAAsM,YAAAnC,OACA,GAEAA,MAAAhB,YAGAP,QAAA,SAAAgB,IAAA4B,MACA,MAAAxL,GAAA4J,IAAAtJ,KAAAsJ,IAAA4B,OAGA/C,SAAA,SAAAmD,KAAAI,MACA,MAAAhM,GAAAyI,SAAAuD,KAAAJ,MACAW,SAAA,EACAC,UAAA,KAIA9D,gBAAA,SAAAkD,KAAAI,MACA,MAAAhM,GAAAyI,SAAAuD,KAAAJ,MACAW,SAAA,EACAC,UAAA,KAIAvD,WAAA,SAAAwD,KAAAC,MACA,MAAA1M,GAAA4J,IAAA+C,WAAAF,KAAAC,OAGA3D,WAAA,SAAA6D,MAAAC,WACA,GAAAC,QAAAC,KAAAC,KAIA,OAHA,OAAAH,YACAA,UAAA,GAEAI,MAAAC,WAAAN,UAAAO,SAAAP,OACA,IAEA,IAAAA,MACA,WAEAI,OAAA,QAAA,KAAA,KAAA,KAAA,KAAA,MACAF,OAAAlM,KAAAC,MAAAD,KAAAwM,IAAAR,OAAAhM,KAAAwM,IAAA,OACAN,OAAA,IACAA,OAAA,GAEAC,MAAAH,MAAAhM,KAAAyM,IAAA,KAAAP,SAAAQ,QAAAT,WACAE,KAAA,IAAAC,MAAAF,UAGAnN,MAAAC,KAAAD,MAEAA,MAAAqF,MAAAA,MAEArF,MAAA2I,YAAAA,YAEA3I,MAAA4I,SAAAA,SAEA5I,MAAAkJ,MAAAA,MAEAlJ,MAAA0J,KAAAA,KAEA1J,MAAAqJ,QAAAA,QAEArJ,MAAA2J,UAAAA,UAEA3J,MAAAyJ,WAAAA,WAEAzJ,MAAAgJ,QAAAA,QAEAhJ,MAAAuJ,QAAAA,QAEAvJ,MAAA6I,cAAAA,cAEA7I,MAAAmJ,WAAAA,WAEAnJ,MAAAwJ,SAAAA,SAEAxJ,MAAAiJ,QAAAA,QAEAjJ,MAAA8I,SAAAA,SAEA9I,MAAA+I,gBAAAA,gBAEA/I,MAAAsJ,WAAAA,WAEAtJ,MAAAoJ,WAAAA,YAEArC,KAAA9G,MC1NA,WACA,GAAA2N,cAAAC,UAAA7E,QAAAC,QAAAjJ,MAAAwJ,SAAAE,IAEA1J,OAAAC,KAAAD,MAEAgJ,QAAA/I,KAAAD,MAAAgJ,QAEAC,QAAAhJ,KAAAD,MAAAiJ,QAEAS,KAAAzJ,KAAAD,MAAA0J,KAEAF,SAAAvJ,KAAAD,MAAAwJ,SAEAqE,UAAA,WACA,QAAAA,cAqCA,MAnCAA,WAAAnG,UAAAoG,kBAAA,SAAAC,MAAAC,OACA,GAAAC,aAAAC,cAgBA,OAfAD,aAAA5N,EAAA8N,OAAAJ,MAAA,WACA,MAAA,UAAAK,MACA,MAAAA,MAAAC,YAEApO,OACAA,KAAAyK,MAAAuD,YAAA5N,EAAAiO,OAAAL,YAAA,qBACAhO,KAAAyK,MAAA6D,gBAAAvF,QAAA/I,KAAAyK,MAAAuD,YAAA,SAAAO,GACA,MAAAA,GAAAC,KAEAxO,KAAAyK,MAAAqD,MAAA1N,EAAAiO,OAAAP,MAAA,qBACA9N,KAAAyK,MAAAgE,UAAA1F,QAAA/I,KAAAyK,MAAAqD,MAAA,SAAAS,GACA,MAAAA,GAAAC,KAEAxO,KAAAyK,MAAAsD,MAAA3N,EAAAiO,OAAAN,MAAA,SACAE,eAAA7N,EAAAJ,KAAAyK,MAAAiE,QAAAC,aAAAtO,IAAA,QAAAuO,OAAArE,QACAvK,KAAAyK,MAAAoE,gBAAAzO,EAAA2N,OAAAG,OAAA,cAAAA,OAAA,SAAA5N,GACA,MAAAF,GAAA0O,SAAAb,eAAA3N,EAAAkO,MACAjE,SAGAqD,UAAAnG,UAAAsH,kBAAA,WACA,GAAAC,QAEA,OADAA,SAAAhP,KAAAsI,EAAA2G,KAAAjP,KAAAkP,GAAAC,SAAAC,UAAApP,KAAAyK,MAAA4E,WAAArP,KAAAkP,GAAAC,SAAAG,UAAAtP,KAAAyK,MAAA4E,aACAL,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAC,SACA,GAAA1B,OAAAD,KAGA,OAFAA,OAAA2B,QAAA,GAAA1B,MAAA0B,QAAA,GACAD,MAAA3B,kBAAAC,MAAAC,OACA0B,UAEAzP,QAGA4N,aAIA7N,MAAA6N,UAAAA,UAEAD,aAAA,WACA,QAAAA,iBAsEA,MApEAA,cAAAlG,UAAAiI,aAAA,SAAAtE,KAAAb,MAAAoF,MACA,GAAAC,UAAAxH,SAAA/F,MAaA,OAZA,OAAAsN,OACAA,MAAA,GAEAtN,OAAArC,KAAAoI,SAAAnE,SACA,SAAA5B,OAAA+I,OAAA,SAAAA,OACAwE,SAAAxP,EAAAC,IAAAN,MAAAwJ,SAAAlH,OAAA+I,OAAA/F,MAAA,KAAA,SAAA/E,GACA,MAAAmJ,MAAAnJ,KAEAsP,SAAAtL,KAAAvE,MAAAwJ,SAAAgB,QACAqF,SAAAxP,EAAAyP,QAAAD,UACArF,MAAAvB,QAAA,IAAA5I,EAAAwO,KAAAgB,YAEA5P,KAAAoI,SAAA0H,uBAAA1E,KAAAb,OAAA,QACAnC,SAAAuH,KAAA3P,KAAAoI,SAAApI,KAAAoI,SAAA2H,SAAA/P,KAAAyK,OACArC,SAAAnE,OAAAmH,KAAAb,SAIAoD,aAAAlG,UAAAuI,cAAA,SAAA5E,KAAAb,MAAAoF,MACA,GAAAvH,SAIA,OAHA,OAAAuH,OACAA,MAAA,GAEA3P,KAAAoI,SAAA0H,uBAAA1E,KAAAb,OAAA,QACAnC,SAAAuH,KAAA3P,KAAAoI,SAAApI,KAAAoI,SAAA2H,SAAA/P,KAAAyK,OACArC,SAAAnE,OAAAmH,KAAAb,SAIAoD,aAAAlG,UAAAwI,kBAAA,SAAAC,QAAAP,MACA,GAAAvH,SAKA,OAJA,OAAAuH,OACAA,MAAA,GAEAvH,SAAAuH,KAAA3P,KAAAoI,SAAApI,KAAAoI,SAAA2H,SAAA/P,KAAAyK,OACArC,SAAAnE,OAAAiM,UAGAvC,aAAAlG,UAAA0I,eAAA,SAAA/E,KAAAb,MAAAoF,MACA,GAAAvH,UAAAgI,UAAA/N,OAAAgO,YAKA,OAJA,OAAAV,OACAA,MAAA,GAEAtN,OAAArC,KAAAoI,SAAAnE,SACA,SAAA5B,OAAA+I,QAGA,SAAAb,OAAA,OAAAA,cACAlI,QAAA+I,MAEAiF,aAAAjQ,EAAAC,IAAAN,MAAAwJ,SAAAlH,OAAA+I,OAAA/F,MAAA,KAAA,SAAA/E,GACA,MAAAmJ,MAAAnJ,KAEA8P,UAAAhQ,EAAA8D,OAAAmM,aAAA,SAAA/P,GACA,MAAAA,KAAAP,MAAAwJ,SAAAgB,SAEA6F,UAAAhQ,EAAAyP,QAAAO,WAEA7F,MADAnK,EAAAkQ,QAAAF,WACA,KAEApH,QAAA,IAAA5I,EAAAwO,KAAAwB,YAEAhI,SAAAuH,KAAA3P,KAAAoI,SAAApI,KAAAoI,SAAA2H,SAAA/P,KAAAyK,OACArC,SAAAnE,OAAAmH,KAAAb,QAnBA,QAsBAoD,gBAIA5N,MAAA4N,aAAAA,cAEA7G,KAAA9G,MCtIA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,kBAEAiH,KAAA9G,MCLA,WACA,GAAAuQ,aAAAC,uBAAAC,qBAAAC,oCAAAC,wBAAAC,oBAAAC,eAAAC,+BAAAC,kBAAAlI,SAAAhJ,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEA8I,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,aAAA,mBAEA0Q,YAAA,SAAAtI,YAKA,QAAAsI,aAAAS,UAAAC,QAAAC,MAAAhC,GAAAiC,KAAAC,MACApR,KAAAgR,UAAAA,UACAhR,KAAAiR,QAAAA,QACAjR,KAAAkR,MAAAA,MACAlR,KAAAkP,GAAAA,GACAlP,KAAAmR,KAAAA,KACAnR,KAAAoR,KAAAA,KACAb,YAAA7I,UAAAJ,YAAAR,KAAA9G,MAqIA,MAhJAkH,QAAAqJ,YAAAtI,YAEAsI,YAAAc,SAAA,aAAA,aAAA,WAAA,eAAA,UAAA,WAYAd,YAAA9I,UAAA6J,QAAA,WACA,GAAAnD,MAAAoD,QACA,OAAAvR,MAAAgR,UAAA7C,KACAnO,KAAAgR,UAAA7C,MAEAoD,SAAAvR,KAAAiR,QAAA9N,IAAA,YACAoO,UACApD,KAAAnO,KAAAkR,MAAAM,WAAA,QAAAD,UACAvR,KAAAgR,UAAA7C,KAAAA,KACAA,MAEA,OAGAoC,YAAA9I,UAAAgK,QAAA,SAAAtD,MAIA,MAHAnO,MAAAgR,UAAAU,KAAAvD,KACAnO,KAAAgR,UAAAW,WAAA,cAAAxD,KAAAyD,kBACA5R,KAAAiR,QAAAY,IAAA,WAAA1D,KAAA2D,YACA9R,KAAAgR,UAAA7C,KAAAA,MAGAoC,YAAA9I,UAAAsK,MAAA,WAGA,MAFA/R,MAAAgR,UAAAU,KAAA,KACA1R,KAAAgR,UAAA7C,KAAA,KACAnO,KAAAiR,QAAAe,OAAA,aAGAzB,YAAA9I,UAAAwK,SAAA,SAAAC,OACA,MAAAlS,MAAAiR,QAAAY,IAAA,QAAAK,QAGA3B,YAAA9I,UAAA0K,SAAA,WACA,MAAAnS,MAAAiR,QAAA9N,IAAA,UAGAoN,YAAA9I,UAAA2K,YAAA,WACA,MAAApS,MAAAiR,QAAAe,OAAA,UAGAzB,YAAA9I,UAAAlB,gBAAA,WACA,MAAA,QAAAvG,KAAAsR,WACA,GAEA,GAGAf,YAAA9I,UAAA4K,MAAA,SAAA5N,KAAA6N,MACA,GAAAtO,IAKA,OAJAA,KAAAhE,KAAAoR,KAAApP,QAAA,QACAyC,KAAArE,EAAAmS,MAAA9N,MAAA,GACAA,KAAA6N,KAAAA,KAAAA,KAAA,SACAtS,KAAAoS,cACApS,KAAAmR,KAAAlO,KAAAe,IAAAS,MAAA8K,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAA0J,KAIA,OAHAA,MAAAqB,MAAA0B,MAAAM,WAAA,QAAA/M,KAAAA,MACA+K,MAAAyC,SAAA9D,KAAAqE,YACAhD,MAAAiC,QAAAtD,MACAA,OAEAnO,QAGAuQ,YAAA9I,UAAAgL,OAAA,WAEA,MADAzS,MAAAoS,cACApS,KAAA+R,SAGAxB,YAAA9I,UAAAiL,SAAA,SAAAjO,KAAA6N,KAAA1C,UACA,GAAA5L,IAQA,OAPAA,KAAAhE,KAAAoR,KAAApP,QAAA,iBACAyC,KAAArE,EAAAmS,MAAA9N,MAAA,GACAA,KAAA6N,KAAAA,KAAAA,KAAA,SACA,YAAAA,OACA7N,KAAAmL,SAAAA,SAAAA,UAAA,GAEA5P,KAAAoS,cACApS,KAAAmR,KAAAlO,KAAAe,IAAAS,MAAA8K,KAAA,SAAAC,OACA,MAAA,UAAA9L,UACA,GAAAyK,KAIA,OAHAA,MAAAqB,MAAA0B,MAAAM,WAAA,QAAA9N,SAAAe,MACA+K,MAAAyC,SAAA9D,KAAAqE,YACAhD,MAAAiC,QAAAtD,MACAA,OAEAnO,QAGAuQ,YAAA9I,UAAAkL,cAAA,SAAAT,OACA,MAAAlS,MAAAkP,GAAA0D,YAAAzP,IAAA+O,QAGA3B,YAAA9I,UAAAoL,6BAAA,SAAApO,MACA,MAAAzE,MAAA0S,SAAAjO,KAAA,WAAA,IAGA8L,YAAA9I,UAAAqL,kCAAA,SAAArO,MACA,MAAAzE,MAAA0S,SAAAjO,KAAA,WAAA,IAGA8L,YAAA9I,UAAAsL,eAAA,SAAAtO,MACA,GAAAT,IAIA,OAHAA,KAAAhE,KAAAoR,KAAApP,QAAA,2BACAyC,KAAArE,EAAAmS,MAAA9N,MAAA,GACAzE,KAAAoS,cACApS,KAAAmR,KAAAlO,KAAAe,IAAAS,OAGA8L,YAAA9I,UAAAuL,2BAAA,SAAAvO,MACA,GAAAT,IAIA,OAHAA,KAAAhE,KAAAoR,KAAApP,QAAA,uCACAyC,KAAArE,EAAAmS,MAAA9N,MAAA,GACAzE,KAAAoS,cACApS,KAAAmR,KAAAlO,KAAAe,IAAAS,OAGA8L,YAAA9I,UAAAwL,YAAA,SAAAxO,MACA,GAAAT,IAGA,OAFAA,KAAAhE,KAAAoR,KAAApP,QAAA,sBACAyC,KAAArE,EAAAmS,MAAA9N,MAAA,GACAzE,KAAAmR,KAAAlO,KAAAe,IAAAS,OAGA8L,YAAA9I,UAAAyL,cAAA,SAAAzO,MACA,GAAAT,IAGA,OAFAA,KAAAhE,KAAAoR,KAAApP,QAAA,wBACAyC,KAAArE,EAAAmS,MAAA9N,MAAA,GACAzE,KAAAmR,KAAAlO,KAAAe,IAAAS,OAGA8L,aAEAxQ,MAAAyI,SAEA3I,OAAAsT,QAAA,UAAA5C,aAEAO,+BAAA,SAAA/K,QAAAxC,SAAA6P,WACA,GAAAC,UAAAC,UAYA,OAXAD,UAAAD,UAAAjQ,IAAA,wBAAA,GACAmQ,WAAA,WACA,GAAAC,sBAEA,OADAA,uBAAAxN,QAAA5C,IAAA,yBACAoQ,sBAGAF,UACArP,IAAAT,SAAAvB,QAAA,cAHA,KAOAwR,SAAA,KACA/I,SACA4I,SAAAC,aAIAzT,OAAA4T,UAAA,2BAAA,YAAA,aAAA,cAAA3C,iCAEAD,eAAA,SAAA5K,MAAA1B,SAAAjB,UAAAyC,QAAA2N,aAAAnQ,SAAA2C,SACA,GAAAyN,KAmCA,OAlCAA,MAAA,SAAAC,OAAAC,KACA,GAAAC,SAAAC,UAAAC,MA+BA,OA9BAD,WAAA,WACA,GAAAE,QAOA,OALAA,SADAP,aAAA,MAAAA,aAAA,OAAAnQ,SAAAvB,QAAA,SACA0R,aAAA,KAEAnQ,SAAAvB,QAAA,QAEAkE,QAAAM,kBACAlD,UAAAQ,KAAAmQ,UAEAH,QAAA,WACA,MAAAvP,UAAAI,OAAA,cAAA,mFAEAqP,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAzP,MAAA0P,KAAAC,cAAApF,OAGA,OAFAkF,OAAAG,iBACAF,KAAA,GAAAtP,WAAAyP,KAAAT,IAAAU,KAAA,oBACAJ,KAAAK,YAGA/P,MACAgQ,SAAAZ,IAAAU,KAAA,wCAAAvP,MACA0P,SAAAb,IAAAU,KAAA,wCAAAvP,OAEAoP,cAAArO,QAAA5C,IAAA,gBAAA,UACA6L,QAAA/I,MAAAoM,MAAA5N,KAAA2P,eACApF,QAAAO,KAAAwE,UAAAD,UATA,SAWA9T,OACA6T,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,WAAA,UAAA,aAAA,cAAA,YAAA,eAAA,aAAA,YAAA5C,iBAEAE,kBAAA,SAAA9K,MAAA1B,SAAAjB,UAAAC,SAAAwC,QAAAI,YACA,GAAAwN,KAmCA,OAlCAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAS,cAAAC,gBAAAb,MA+BA,OA9BAjO,SAAA5C,IAAA,2BACAG,UAAAQ,KAAAP,SAAAvB,QAAA,cACAsB,UAAAS,WAEA6P,OAAAnP,QACA0P,KAAAN,IAAAU,KAAA,QAAA1P,WACAiQ,qBAAA,IAEAD,gBAAA,WAGA,MAFA1O,YAAA4O,WAAA,OAAA,WAAA,oBAAA,GACAxQ,SAAAI,OAAA,UAAA,kDACArB,UAAAQ,KAAAP,SAAAvB,QAAA,UAEA4S,cAAA,SAAAlR,UAIA,MAHA,OAAAA,SAAAe,KAAAuQ,gBACAzQ,SAAAI,OAAA,cAAA,sDAAAjB,SAAAe,KAAAuQ,gBAEAb,KAAAc,UAAAvR,SAAAe,OAEAuP,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAxF,QAAA/I,MAAAyM,SAAAkB,OAAAnP,MACAuK,QAAAO,KAAAsF,gBAAAD,gBAJA,SAMA5U,OACA6T,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,cAAA,UAAA,aAAA,cAAA,aAAA,YAAA,eAAA1C,oBAEAJ,wBAAA,SAAA1K,MAAA1B,SAAAjB,UAAAC,UACA,GAAAoQ,KAyBA,OAxBAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAS,cAAAC,gBAAAb,MAqBA,OApBAJ,QAAAnP,QACA0P,KAAAN,IAAAU,KAAA,QAAA1P,YACAgQ,gBAAA,SAAAnR,UAEA,MADAJ,WAAAQ,KAAAP,SAAAvB,QAAA,UACAuC,SAAA2Q,QAAA,iFAAAxR,SAAAe,KAAA0Q,MAAA,gEAEAP,cAAA,WACA,MAAArQ,UAAAI,OAAA,cAAA,iEAEAqP,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAxF,QAAA/I,MAAA8M,eAAAa,OAAAnP,MACAuK,QAAAO,KAAAsF,gBAAAD,gBAJA,SAMA5U,OACA6T,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAA,UAAA,aAAA,cAAA,aAAA9C,0BAEAD,oCAAA,SAAAzK,MAAA1B,SAAAjB,UAAA8R,QAAA7R,UACA,GAAAoQ,KA+BA,OA9BAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAS,cAAAC,gBAAAb,MA2BA,OA1BAJ,QAAAnP,QACA,MAAA2Q,QAAAlD,OACA0B,OAAAyB,eAAA,EACAzB,OAAAnP,KAAAyN,MAAAkD,QAAAlD,OAEA0B,OAAAyB,eAAA,EAEAlB,KAAAN,IAAAU,KAAA,QAAA1P,YACAgQ,gBAAA,WAEA,MADAvR,WAAAQ,KAAAP,SAAAvB,QAAA,UACAuC,SAAA2Q,QAAA,8FAEAN,cAAA,SAAAlR,UACA,MAAAa,UAAAI,OAAA,cAAA,iCAAAjB,SAAAe,KAAAuQ,eAAA,OAEAhB,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAxF,QAAA/I,MAAA+M,2BAAAY,OAAAnP,MACAuK,QAAAO,KAAAsF,gBAAAD,gBAJA,SAMA5U,OACA6T,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,gCAAA,UAAA,aAAA,cAAA,eAAA,aAAA/C,sCAEAE,oBAAA,SAAA3K,MAAA1B,SAAAjB,UAAA8R,QAAA7R,SAAA4C,YACA,GAAAwN,KAmEA,OAlEAA,MAAA,SAAAC,OAAAC,KACA,GAAAyB,WAAAC,mBAAAC,sBAAAC,qBAAAC,wBAAA1G,QAAA2G,aAAAC,YAAAC,eAAA3D,KA+DA,OA9DAA,OAAAkD,QAAAlD,MACAlD,QAAA/I,MAAA0M,cAAAT,OACAlD,QAAAO,KAAA,SAAAuG,YACA,MAAAlC,QAAAkC,WAAAA,aAEA9G,QAAAO,KAAA,KAAA,WAEA,MADAjM,WAAAQ,KAAAP,SAAAvB,QAAA,UACAuC,SAAA2Q,QAAA,mGAEAtB,OAAAmC,WACA7D,MAAAA,OAEAoD,UAAAzB,IAAAU,KAAA,mBAAA1P,WACAiQ,qBAAA,IAEAW,qBAAA,WAKA,MAJAtP,YAAA4O,WAAA,OAAA,mBAAA,uCAAA,GACAzR,UAAAQ,KAAAP,SAAAvB,QAAA,WACA0M,QAAAkF,OAAAkC,WAAAE,gBAEAzR,SAAAI,OAAA,UAAA,0CAAA,cAAAvE,EAAA6V,OAAArC,OAAAkC,WAAAI,gBAEAX,mBAAA,WACA,MAAAhR,UAAAI,OAAA,cAAA,8FAEAiR,YAAA/M,SAAA,IAAA,WACA,MAAA,UAAAqL,OAEA,MADAA,OAAAG,iBACAiB,UAAAd,YAGAxF,QAAA/I,MAAA6M,kCAAAc,OAAAmC,WACA/G,QAAAO,KAAAkG,qBAAAF,qBAJA,SAMAvV,OACA6T,IAAAc,GAAA,SAAA,kBAAAiB,aACA/B,IAAAc,GAAA,QAAA,gBAAAiB,aACAhC,OAAAuC,cACAjE,MAAAA,OAEAyD,aAAA9B,IAAAU,KAAA,sBAAA1P,YACA6Q,wBAAA,WAKA,MAJAvP,YAAA4O,WAAA,OAAA,mBAAA,kCAAA,GACAzR,UAAAQ,KAAAP,SAAAvB,QAAA,WACA0M,QAAAkF,OAAAkC,WAAAE,gBAEAzR,SAAAI,OAAA,UAAA,0CAAA,cAAAvE,EAAA6V,OAAArC,OAAAkC,WAAAI,gBAEAV,sBAAA,WACA,MAAAjR,UAAAI,OAAA,cAAA,8EAEAkR,eAAAhN,SAAA,IAAA,WACA,MAAA,UAAAqL,OAEA,MADAA,OAAAG,iBACAsB,aAAAnB,YAGAxF,QAAA/I,MAAA4M,6BAAAe,OAAAuC,cACAnH,QAAAO,KAAAmG,wBAAAF,wBAJA,SAMAxV,OACA6T,IAAAc,GAAA,SAAA,qBAAAkB,gBACAhC,IAAAc,GAAA,QAAA,mBAAAkB,kBAGAlC,KAAAA,OAIA9T,OAAA4T,UAAA,gBAAA,UAAA,aAAA,cAAA,eAAA,aAAA,eAAA7C,sBAEAH,qBAAA,SAAA2F,MAAAC,OAAApQ,MAAA1B,SAAAjB,UAAA8R,QAAA7R,UACA,GAAAoQ,KAmCA,OAlCAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAS,cAAAC,gBAAAb,MA4BA,OA3BAJ,QAAAnP,QACAmP,OAAAnP,KAAA6R,YAAAlB,QAAAkB,YACAnC,KAAAN,IAAAU,KAAA,QAAA1P,YACAgQ,gBAAA,WACA,MAAAuB,OAAAG,SAAA,QAAAtQ,MAAAqL,UAAA9C,IAAAe,KAAA,WACA,MAAA,UAAA9K,MAGA,MAFAwB,OAAAwL,QAAAhN,MACAnB,UAAAQ,KAAAP,SAAAvB,QAAA,SACAuC,SAAA2Q,QAAA,0CAEAlV,QAEA4U,cAAA,SAAAlR,UACA,MAAAa,UAAAI,OAAA,QAAA,kCAAAjB,SAAAe,KAAAuQ,eAAA,OAEAhB,OAAA,WACA,GAAAhF,QACA,IAAAmF,KAAAK,WAIA,MADAxF,SAAA/I,MAAAgN,YAAAW,OAAAnP,MACAuK,QAAAO,KAAAsF,gBAAAD,gBAEAf,IAAAc,GAAA,SAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAL,WAEAH,IAAAc,GAAA,QAAA,wBAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAL,aAIAL,KAAAA,OAIA9T,OAAA4T,UAAA,iBAAA,UAAA,WAAA,UAAA,aAAA,cAAA,eAAA,aAAAhD,uBAEAD,uBAAA,SAAA4F,MAAAC,OAAApQ,MAAA1B,SAAAjB,UAAA8R,QAAA7R,UACA,GAAAoQ,KA2BA,OA1BAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAS,cAAAC,gBAAAb,MAuBA,OAtBAJ,QAAAnP,QACAmP,OAAAnP,KAAA+R,aAAApB,QAAAoB,aACArC,KAAAN,IAAAU,KAAA,QAAA1P,YACAgQ,gBAAA,WAGA,MAFA5O,OAAAwM,SACAnP,UAAAQ,KAAAP,SAAAvB,QAAA,SACAuC,SAAA2Q,QAAA,2CAEAN,cAAA,SAAAlR,UACA,MAAAa,UAAAI,OAAA,QAAA,kCAAAjB,SAAAe,KAAAuQ,eAAA,OAEAhB,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAxF,QAAA/I,MAAAiN,cAAAU,OAAAnP,MACAuK,QAAAO,KAAAsF,gBAAAD,gBAJA,SAMA5U,OACA6T,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAA,UAAA,WAAA,UAAA,aAAA,cAAA,eAAA,aAAAjD,0BAEA1J,KAAA9G,MC/eA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,oBAEAiH,KAAA9G,MCLA,WACA,GAAAyW,oBAAA9N,SAAAI,QAAAnJ,KAAAC,OAAAE,MAAAqR,IAEArR,OAAAC,KAAAD,MAEAgJ,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEA9I,OAAA8G,QAAA9G,OAAA,aAAA,iBAEA4W,mBAAA,SAAAzQ,WAAA0Q,SACA,GAAA/C,KAMA,OALAA,MAAA,WACA,MAAA+C,SAAAC,SAAA,WACA,MAAA3Q,YAAA2L,WAAA,aAIAgC,KAAAA,OAIA9T,OAAA4T,UAAA,UAAA,aAAA,UAAAgD,qBAEArF,MACAwF,KAAA,IACAC,MAAA,SACAC,YAAA,aACAC,oBAAA,qBACA1E,MAAA,SACA2E,kBAAA,mBACAC,kBAAA,0BACAC,eAAA,uBACAC,iBAAA,yBACAzE,SAAA,YACAoD,WAAA,qBACAsB,iBAAA,kBACAC,QAAA,SACA3I,QAAA,oBACA4I,kBAAA,4BACAC,oBAAA,sCACAC,iBAAA,2BACAC,iBAAA,2BACAC,iBAAA,2BACAC,6BAAA,4BACAC,uBAAA,8BACAC,wBAAA,+BACAC,eAAA,yBACAC,oBAAA,+BACAC,eAAA,yBACAC,qBAAA,kDACAC,wCAAA,kDACAC,+CAAA,yDACAC,wCAAA,kDACAC,uCAAA,iDACAC,wCAAA,kDACAC,sCAAA,gDACAC,sCAAA,gDACAC,0CAAA,oDACAC,0CAAA,oDACAC,qCAAA,+CACAC,6CAAA,uDACAC,4BAAA,sCACAC,sBAAA,gCACAC,uCAAA,iDACAC,qCAAA,+CACAC,qCAAA,+CACAC,wCAAA,kDACAC,wBAAA,0CACAC,6BAAA,+CACAC,qCAAA,uDACAC,4BAAA,8CACAC,mCAAA,sDAGA3Z,KAAA,SAAAiG,KAAA2T,UAEA,MADA3T,MAAAQ,MAAA,8BACAmT,SAAAC,OAAArI;EAGAvR,OAAAgH,KAAA,OAAA,aAAAjH,QAEAkH,KAAA9G,MCnFA,WACA,GAAA0Z,gBAAAC,SAAAC,yBAAAC,yBAAAC,yBAAAC,WAAAC,OAAAC,aAAAC,SAAAC,uBAAAta,OAAAE,MACAgK,SAAAA,KAEAhK,OAAAC,KAAAD,MAEAF,OAAA8G,QAAA9G,OAAA,kBAEAoa,aAAA,SAAAvD,QAAA0D,WACA,GAAAjX,IASA,OARAA,KAAA,WACA,MAAAuT,SAAA2D,aACA3D,QAAA2D,eAAA9Q,WACA6Q,UAAAE,UACAF,UAAAE,UAAAC,cAAA5O,KAEA,KAGAxI,IAAAA,MAIAtD,OAAAuE,QAAA,iBAAA,UAAA,YAAA6V,eAEAL,yBAAA,WACA,GAAAjG,MAAA6G,MAmBA,OAlBAA,QAAA,SAAA3G,IAAAnF,QAAA+L,YACA,MAAA/L,SAAAgM,eAAA/Q,QAAA8Q,YAAA,GACA5G,IAAA8G,YAAA,UADA,QAIAhH,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAH,WAQA,OAPA5G,KAAAgH,SAAA,UACAJ,WAAAG,OAAAE,kBACAlH,OAAA9I,OAAA,UAAA,SAAA4D,SACA,MAAA,OAAAA,QACA8L,OAAA3G,IAAAnF,QAAA+L,YADA,SAIA7G,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAAmG,0BAEAC,yBAAA,WACA,GAAAlG,MAAAvI,IAiCA,OAhCAA,MAAA,oBACAuI,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAK,kBAAAC,6BAAAC,aA4BA,OA3BAF,kBAAA,SAAAvM,QAAA0M,UAAAX,YACA,GAAAY,SAKA,OAJAA,UAAA,MAAAZ,WAAA,GACAY,WACAZ,WAAAA,WAAA1Q,MAAA,IAEAsR,UAAA,KAAA3M,QAAAgM,eAAA/Q,QAAA8Q,YACA5G,IAAAgH,SAAAO,WACAC,UAAA,KAAA3M,QAAAgM,eAAA/Q,QAAA8Q,YAGA5G,IAAA8G,YAAAS,WAFAvH,IAAAgH,SAAAO,YAKAF,6BAAA,SAAAxM,SACA,GAAA0M,WAAAE,QAAAb,WAAAhL,OACA,IAAAf,QAAA,CACAyM,gBACAG,QAAA1H,OAAA/I,MAAA+P,OAAAxP,OACAqE,UACA,KAAA2L,YAAAE,SACAb,WAAAa,QAAAF,WACA3L,QAAAnL,KAAA2W,iBAAAvM,QAAA0M,UAAAX,YAEA,OAAAhL,WAGA0L,cAAAvH,OAAA9I,OAAA,UAAAoQ,gCAGAvH,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAAoG,0BAEAH,eAAA,WACA,GAAAxX,KAAAqZ,eAAAC,iBAAAC,IA2BA,OA1BAF,gBAAA3W,OAAA8W,uBAAA9W,OAAA+W,6BAAA/W,OAAAgX,yBACAJ,iBAAA,WACA,MAAA,YACA,GAAA3T,GAGA,OAFAA,IAAA4T,KAAAI,QACAhU,KACA4T,KAAAjW,OACA+V,eAAAC,kBADA,SAIAxb,MACAyb,QACAvZ,IAAA,WACA,GAAA2F,IAAAgC,EAAAiC,IAAA2D,OAEA,KADAA,WACA5F,EAAA,EAAAiC,IAAA9D,UAAAxC,OAAAsG,IAAAjC,EAAAA,IACAhC,GAAAG,UAAA6B,GACA4R,KAAAnX,KAAAuD,IAEA4H,QAAAnL,KADA,IAAAmX,KAAAjW,OACA+V,eAAAC,kBAEA,OAGA,OAAA/L,WAGAvN,IAAAA,MAIArC,OAAAuE,QAAA,iBAAAsV,gBAEAS,uBAAA,WACA,GAAAxG,KAMA,OALAA,MAAA,SAAAC,OAAAC,KACA,MAAAA,KAAAU,KAAA,YAAAI,GAAA,QAAA,WACA,MAAAd,KAAAgH,SAAA,cAIAlH,KAAAA,OAIA9T,OAAA4T,UAAA,kBAAA0G,wBAEAR,SAAA,WACA,GAAA9H,IAIA,OAHAA,KAAA,SAAAlG,MACA,MAAAmQ,GAAA,SAAAnQ,KAAAA,QAGAkG,IAAAA,MAIAhS,OAAAuE,QAAA,YAAAuV,UAEAI,WAAA,SAAAP,UACA,GAAArW,IAoBA,OAnBAA,KAAA,SAAAuL,SACA,GAAAqN,IAIA,OAHAA,MACArN,QAAAA,QAAAsN,MAEAtN,QAAAuN,sBAAAvN,QAAAgM,eAAA/Q,QAAA,WAAA,GACA6P,SAAAxX,QAAA,kBAAA+Z,KAEArN,QAAAwN,qBAAAxN,QAAAgM,eAAA/Q,QAAA,WAAA,GACA6P,SAAAxX,QAAA,iBAAA+Z,KAEArN,QAAAyN,mBAAAzN,QAAAgM,eAAA/Q,QAAA,mBAAA,GACA6P,SAAAxX,QAAA,eAAA+Z,KAEArN,QAAA0N,qBAAA1N,QAAAgM,eAAA/Q,QAAA,eAAA,GACA6P,SAAAxX,QAAA,iBAAA+Z,KAEAvC,SAAAxX,QAAA,UAAA+Z,OAGA5Y,IAAAA,MAIAtD,OAAAuE,QAAA,eAAA,aAAA2V,aAEAD,yBAAA,WACA,GAAAnG,KAcA,OAbAA,MAAA,SAAAC,OAAAC,KACA,GAAAwI,eAEA,OADAA,gBAAAC,SAAAzI,IAAAnJ,KAAA,SACAmJ,IAAAc,GAAA,QAAA,SAAAT,OACA,GAAAqI,MAAArX,KAMA,OALAqX,MAAArI,MAAAsI,QACAtX,MAAA2O,IAAA7O,MAAAK,MAAA,MACAjF,EAAAqc,KAAAvX,MAAA,SAAAK,KAAAmX,OACA,MAAAxX,OAAAwX,OAAAnX,KAAAoX,UAAA,EAAAN,eAAA,KAEAxI,IAAA7O,IAAAE,MAAAxE,KAAA,WAIAiT,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAAqG,0BAEAE,OAAA,SAAA3W,IACA,GAAAuZ,UAAAC,YAAAC,MA4BA,OA3BAF,UAAAvZ,GAAAgJ,QACAuQ,SAAA5a,UACA6a,YAAAD,SAAA5N,QACA8N,QACAC,QAAA,SAAAvN,OACA,MAAA,UAAA3H,IACA,MAAA,YACA,GAAAmV,KAEA,OADAA,MAAA,GAAAhV,UAAAxC,OAAAuE,MAAAjD,KAAAkB,UAAA,MACA6U,YAAAA,YAAAtN,KAAA,WACA,MAAA1H,IAAAE,MAAAyH,MAAAwN,WAKAhd,MACAkC,IAAA,WACA,MAAA,UAAA2F,IAMA,MAFAgV,aAHAA,YAGAA,YAAAtN,KAAA1H,IAFAA,KAIAiV,SAEA9c,QAKAH,OAAAuE,QAAA,aAAA,KAAA4V,SAEAE,SAAA,SAAA+C,gBACA,OACA9Z,IAAA,WACA,MAAA,UAAAiI,KAAA8R,QACA,GAAAC,IAQA,OAPA,OAAAD,SACAA,QAAA,GAEAC,IAAAF,eAAA9Z,IAAAiI,MACA8R,SACAC,IAAA/c,EAAAiT,SAAA8J,MAEAA,MAEAnd,QAIAH,OAAAuE,QAAA,eAAA,iBAAA8V,YAEApT,KAAA9G,MClQA,WACA,GAAAod,gBAAAC,cAAA3U,YAAA7I,OAAAwJ,WAAAtJ,KAEAA,OAAAC,KAAAD,MAEAsJ,WAAArJ,KAAAD,MAAAsJ,WAEAX,YAAA1I,KAAAD,MAAA2I,YAEA7I,OAAA8G,QAAA9G,OAAA,kBAEAwd,cAAA,WACA,QAAAA,eAAAC,IAAA9P,IAAA5G,OAAA8K,MACA1R,KAAAsd,IAAAA,IACAtd,KAAAwN,IAAAA,IACAxN,KAAA4G,OAAAA,OACA5G,KAAA0R,KAAAA,KACAhJ,YAAA1I,MAoJA,MAjJAqd,eAAA5V,UAAArB,WAAA,SAAAjF,WAMA,MALAnB,MAAAmB,UAAAA,UACAnB,KAAAud,iBACAvd,KAAAwd,WAAA,EACAxd,KAAA6W,OAAA,EACA7W,KAAAyd,mBACA,SAAAzd,KAAAsd,IAAAI,UACA1d,KAAAwN,IAAAmQ,KAAA,4CADA,QAKAN,cAAA5V,UAAAjB,gBAAA,WACA,GAAAoX,KAAA9Z,KAAA+Z,OAAA7Z,GAGA,OAFAhE,MAAA8d,0BACA9Z,IAAAhE,KAAA4G,OAAAzD,IAAA,eAIAkG,WAAArF,IAAA,QAAAqF,WAAArF,IAAA,UACA4Z,IAAA5d,KAAAsd,IAAAlV,SACAyV,OAAA,WAAAD,IAAAG,SAAA,OAAA,MACAja,KAAA1D,EAAA4J,IAAAgU,MAAAha,IAAA,KACAA,IAAA6Z,OAAA,KAAAD,IAAAK,KAAA,IAAAna,MAEA9D,KAAAke,GAAA,GAAAle,MAAAsd,IAAAI,UAAA1Z,KACAhE,KAAAke,GAAAC,iBAAA,OAAAne,KAAAoe,QACApe,KAAAke,GAAAC,iBAAA,UAAAne,KAAAqe,WACAre,KAAAke,GAAAC,iBAAA,QAAAne,KAAA8T,SACA9T,KAAAke,GAAAC,iBAAA,QAAAne,KAAAse,UAbA,QAgBAjB,cAAA5V,UAAAqW,uBAAA,WACA,MAAA,UAAA9d,KAAAke,IAGAle,KAAAke,GAAAK,oBAAA,OAAAve,KAAAoe,QACApe,KAAAke,GAAAK,oBAAA,QAAAve,KAAAse,SACAte,KAAAke,GAAAK,oBAAA,QAAAve,KAAA8T,SACA9T,KAAAke,GAAAK,oBAAA,UAAAve,KAAAqe,WACAre,KAAAke,GAAAM,cACAxe,MAAAke,IARA,QAWAb,cAAA5V,UAAAgX,UAAA,SAAAC,SACA,MAAAte,GAAAue,SAAAD,SACAne,KAAAC,UAAAke,SAEAA,SAGArB,cAAA5V,UAAAmX,YAAA,SAAAF,SACA,GAAA7U,GAAAiC,IAAA+S,SAAAC,IAAArP,OAEA,IADAzP,KAAAyd,gBAAAnZ,KAAAoa,SACA1e,KAAAwd,UAAA,CAMA,IAHAqB,SAAAze,EAAAC,IAAAL,KAAAyd,gBAAAzd,KAAAye,WACAze,KAAAyd,mBACAhO,WACA5F,EAAA,EAAAiC,IAAA+S,SAAArZ,OAAAsG,IAAAjC,EAAAA,IACAiV,IAAAD,SAAAhV,GACA4F,QAAAnL,KAAAtE,KAAAke,GAAAa,KAAAD,KAEA,OAAArP,WAGA4N,cAAA5V,UAAAuX,UAAA,SAAAvU,MAAAwU,WAAAC,UACA,GAAAR,SAAAS,YACA,KAAAnf,KAAA6W,MAkBA,MAfA7W,MAAAwN,IAAAnH,MAAA,iBAAA4Y,YACAE,cACA1U,MAAAA,MACAwU,WAAAA,WACAC,SAAA9e,EAAAyI,SAAAqW,SAAA,KACAvS,SAAA,EACAC,UAAA,KAGA8R,SACAU,IAAA,YACAC,YAAAJ,YAEAjf,KAAAud,cAAA0B,YAAAE,aACAnf,KAAA4e,YAAAF,SACAjU,MAAAsQ,IAAA,WAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAA8P,YAAAL,cAEAjf,QAGAqd,cAAA5V,UAAA6X,YAAA,SAAAL,YACA,GAAAP,QACA,KAAA1e,KAAA6W,MAQA,MALA7W,MAAAwN,IAAAnH,MAAA,qBAAA4Y,YACAP,SACAU,IAAA,cACAC,YAAAJ,YAEAjf,KAAA4e,YAAAF,UAGArB,cAAA5V,UAAA2W,OAAA,WACA,GAAAM,SAAAxM,KAWA,OAVAlS,MAAAwd,WAAA,EACAxd,KAAAwN,IAAAnH,MAAA,+BACA6L,MAAAlS,KAAA0R,KAAAS,WACAuM,SACAU,IAAA,OACA3a,MACAyN,MAAAA,MACA/Q,UAAAnB,KAAAmB,YAGAnB,KAAA4e,YAAAF,UAGArB,cAAA5V,UAAA4W,UAAA,SAAAnK,OACA,GAAAzP,MAAAwa,WAAAE,YAIA,OAHAnf,MAAAwN,IAAAnH,MAAA,+BAAA6N,MAAAzP,MACAA,KAAAlE,KAAAgf,MAAArL,MAAAzP,MACAwa,WAAAxa,KAAA4a,YACA,MAAArf,KAAAud,cAAA0B,aAGAE,aAAAnf,KAAAud,cAAA0B,YACAE,aAAA1U,MAAA6B,OAAA,WACA,MAAA6S,cAAAD,SAAAza,KAAAA,SALA,QASA4Y,cAAA5V,UAAAqM,QAAA,SAAA+C,OAEA,MADA7W,MAAAwN,IAAAqJ,MAAA,oBAAAA,OACA7W,KAAA6W,OAAA,GAGAwG,cAAA5V,UAAA6W,QAAA,WAEA,MADAte,MAAAwN,IAAAnH,MAAA,qBACArG,KAAAwd,WAAA,GAGAH,iBAIAD,eAAA,WACA,QAAAA,mBAeA,MAbAA,gBAAA3V,UAAArE,aAAA,SAAAjC,WACA,MAAAnB,MAAAmB,UAAAA,WAGAic,eAAA3V,UAAA+X,KAAA,SAAAC,KAAA5Z,KAAA6Z,MAAAzZ,OACA,GAAAkN,QAGA,OAFAA,SAAA,GAAAkK,eAAAoC,KAAA5Z,KAAA6Z,MAAAzZ,OACAkN,QAAA/M,WAAApG,KAAAmB,WACAgS,SAGAiK,eAAA3V,UAAA+X,KAAAnO,SAAA,UAAA,OAAA,YAAA,WAEA+L,kBAIAvd,OAAA8f,SAAA,YAAAvC,iBAEAtW,KAAA9G,MC/LA,WACA,GAAA4f,mBAAAjX,SAAAE,SAAAE,QAAAE,MAAApJ,OAAAE,MAAA0J,IAEA1J,OAAAC,KAAAD,MAEAgJ,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAM,MAAAjJ,KAAAD,MAAAkJ,MAEAJ,SAAA7I,KAAAD,MAAA8I,SAEAY,KAAAzJ,KAAAD,MAAA0J,KAEA5J,OAAA8G,QAAA9G,OAAA,oBAEA+f,kBAAA,SAAApc,iBAAA4S,MAAA7R,SAAAsb,UACA,GAAAlM,KAqCA,OApCAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAH,OAAA8L,YA+BA,OA9BA3L,MAAAN,IAAAU,KAAA,QAAA1P,YACAmP,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAoH,MAAA4J,OAAA,WAAApM,OAAAqM,UACAjR,QAAAO,KAAA,WAGA,MAFAsQ,UAAAK,OAAAJ,cACAtc,iBAAAgb,MAAA3K,KACAtP,SAAAI,OAAA,UAAA,sCAEAqK,QAAAO,KAAA,KAAA,WAEA,MADAsQ,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,YAZA,SAeA3E,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAJ,OAAAmH,IAAA,gBAAA,WAKA,MAJAnH,QAAAtH,OAAA,WACA,MAAAsH,QAAAqM,cAEAzc,iBAAA2c,KAAAtM,KACAA,IAAAU,KAAA,YAAA6L,UAEAxM,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,gBAAA,kBAAA,UAAA,aAAA,aAAAmM,qBAEA9Y,KAAA9G,MC9DA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,yBAEAiH,KAAA9G,MCLA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,mBAEAiH,KAAA9G,MCLA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,mBAEAiH,KAAA9G,MCLA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,oBAEAiH,KAAA9G,MCLA,WACA,GAAAqgB,sBAAAC,6BAAAC,4BAAA5X,SAAAI,QAAAlJ,OAAAE,MAAAuJ,QACApC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAgJ,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAW,QAAAtJ,KAAAD,MAAAuJ,QAEAzJ,OAAA8G,QAAA9G,OAAA,mBAEAygB,6BAAA,SAAArY,YAKA,QAAAqY,8BAAA7V,MAAAuG,UAAA9B,GAAAsR,QAAAC,YACA,GAAAzR,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAAkP,GAAAA,GACAlP,KAAAwgB,QAAAA,QACAxgB,KAAAygB,WAAAA,WACAzR,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,KAAA,WACA,MAAAoR,SAAAnT,IAAA,UAEAxN,KAAAyK,MAAAsQ,IAAA,kBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAkR,oBAEA1gB,OACAA,KAAAyK,MAAAsQ,IAAA,iBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAkR,oBAEA1gB,OAoCA,MA5DAkH,QAAAoZ,6BAAArY,YAEAqY,6BAAAjP,SAAA,SAAA,aAAA,eAAA,aAAA,eAyBAiP,6BAAA7Y,UAAAiZ,gBAAA,WACA,GAAArV,IACA,OAAArL,MAAAkP,GAAAC,SAAAyR,aAAA,OAAAvV,IAAArL,KAAAgR,UAAA7C,MAAA9C,IAAAmD,GAAA,QAAAe,KAAA,SAAAC,OACA,MAAA,UAAAL,UACA,GAAAtF,GAAAiC,IAAA4C,OACA,KAAA7E,EAAA,EAAAiC,IAAAqD,SAAA3J,OAAAsG,IAAAjC,EAAAA,IACA6E,QAAAS,SAAAtF,GACA6E,QAAA1K,IAAAwL,MAAAiR,WAAAtd,IAAAuL,QAKA,OAHAc,OAAA/E,MAAA0E,SAAAA,SACAK,MAAA/E,MAAAoW,iBAAA1R,SACAK,MAAA/E,MAAAqW,WAAA,GACA3R,WAEAnP,QAGAsgB,6BAAA7Y,UAAAsZ,WAAA,WACA,MAAA/gB,MAAAyK,MAAA6B,OAAA,SAAAkD,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,qBAEA3R,QAGAsgB,6BAAA7Y,UAAAuZ,eAAA,SAAArV,MAKA,MAJA3L,MAAAyK,MAAAoW,iBAAAzgB,EAAA8N,OAAAlO,KAAAyK,MAAA0E,SAAA,SAAAT,SACA,MAAAA,SAAAtD,KAAA6V,cAAAtX,QAAAgC,MAAA,KAEA3L,KAAAyK,MAAAqW,WAAAnV,KACA3L,KAAAgR,UAAAW,WAAA,sBAGA2O,8BAEAvgB,MAAA0I,YAEA5I,OAAAqhB,WAAA,+BAAAZ,8BAEAC,4BAAA,SAAAva,WAAAuV,eAAA4F,SAAAC,SAAA9d,UAAA+d,SAAAC,WACA,GAAAC,cAAAC,SAAA7N,KAAA8N,aAAAC,QAAAC,gBAoGA,OAnGAJ,cAAAD,UAAAne,IAAA,wCAAA,GACAwe,iBAAAL,UAAAne,IAAA,wCAAA,GACAue,QAAA5F,EAAA,yBACA2F,aAAA,EACAD,SAAA,WACA,GAAAI,UAAAC,YACA,OAAAH,SAAAI,GAAA,aACAF,UAAA,GAAA9gB,OAAAC,UAAA0gB,aACAI,aAAA,EACA,IAAAD,WACAC,aAAA,IAAAA,cAEAvY,QAAAuY,aAAA,WAMA,MALAH,SAAAK,IAAA,gBAAA,WAEA,MADAjG,GAAAkG,SAAAC,MAAAtH,YAAA,yDAAAuH,IAAA,aAAA,WACAR,QAAAS,SAEArG,EAAAkG,SAAAC,MAAApH,SAAA,uBACAuG,SAAAgB,2BAZA,QAgBAzO,KAAA,SAAAC,OAAAC,IAAA+G,OAAAyH,QACA,GAAAC,OAAA9H,OAAA+H,cAsEA,OArEAD,OAAAD,OAAA,GACArc,WAAA+U,IAAA,iBAAAyG,UACAe,eAAA,SAAApT,UACA,GAAAqT,KAKA,OAJAA,MAAAb,kBACAxS,SAAAA,WAEA0E,IAAAU,KAAA,kBAAAiO,KAAAA,MACA5O,OAAA6O,MAAA,kCAEAjI,OAAA,SAAArL,UAEA,MADA0E,KAAA2O,KAAAnB,SAAAE,gBAAA3N,SACA2O,eAAApT,WAEAuS,QAAA/M,GAAA,QAAA,WACA,MAAA6M,cAEA1F,EAAAkG,UAAArN,GAAA,UAAA,WACA,MAAA,UAAApG,GACA,GAAAgO,KAEA,OADAA,MAAAhO,EAAAiO,QAAAjO,EAAAiO,QAAAjO,EAAAmU,MACA,KAAAnG,KACAiF,WADA,SAIAxhB,OACA4T,OAAAmH,IAAA,yBAAA,WAQA,MAPAe,GAAAkG,SAAAC,MAAAU,SAAA,sBACApH,eAAArZ,IAAA,WACA,MAAA,YACA,MAAAwf,SAAAkB,SAEA5iB,OAEAub,eAAArZ,IAAA,WACA,MAAA,YACA,MAAA4Z,GAAAkG,SAAAC,MAAAC,IAAA,aAAA,YAEAliB,MAAA,WACA,MAAA,YACA,MAAA8b,GAAAkG,SAAAC,MAAAY,YAAA,uBAEA7iB,SAEA6T,IAAAc,GAAA,QAAA,0BAAA,SAAAT,OACA,GAAA4O,YAAA7O,QAAA8O,MAIA,OAHAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACA/O,QAAA8O,OAAAE,KAAA,QACAH,WAAAxf,UAAA4f,SACAjP,UAAA6O,eACAtB,aAGA1F,EAAAkG,SAAAC,MAAApH,SAAA,mBACAuG,SAAA+B,iBACA1B,cAAA,GAAA3gB,OAAAC,aAEA8S,IAAAc,GAAA,QAAA,yBAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAiO,MAAAvB,eAEAlN,IAAAc,GAAA,QAAA,kBAAA,SAAAT,OACA,GAAA6O,OAEA,OADAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACAV,MAAAtB,eAAA+B,OAAA/d,SAEA4O,OAAAmH,IAAA,oBAAA,WACA,MAAAwH,gBAAA3O,OAAAiN,oBAEAjN,OAAA9I,OAAA,WAAA,SAAAqE,UACA,MAAA,OAAAA,SACAqL,OAAArL,UADA,WAMAiU,SAAA,iBACAlC,WAAAZ,6BACA3M,KAAAA,OAIA9T,OAAA4T,UAAA,iBAAA,aAAA,iBAAA,WAAA,WAAA,cAAA,WAAA,cAAA8M,8BAEAF,qBAAA,SAAAxa,KAAAwb,SAAApb,MAAAD,WAAAqd,QAAA/f,UAAAC,SAAAwC,QAAAub,WACA,GAAAgC,gBAAA3P,KAAA4P,aAAAC,oBAAAC,eAAAC,kBAAAC,kBAiGA,OAhGAH,qBAAAlC,UAAAne,IAAA,6BAAA,GACAogB,aAAAnjB,EAAAiT,SAAA,8uDACAiQ,eAAA,SAAAzP,IAAA+P,YAAAlV,SACA,GAAAmV,gBAAAxY,GAWA,OAVAwY,gBAAA,OAAAxY,IAAAwI,IAAAU,KAAA,YAAAnN,SAAAsD,KAAA,OAAAW,IAAAtH,QAAA,OAAA,IAAA,OACA,mBAAA6f,cACA,YAAAC,gBAAA,WAAAA,eACAD,YAAAC,eACAnV,QAAAuN,uBAAAvN,QAAAwN,oBACA0H,YAAA,WACAlV,QAAAuN,sBAAAvN,QAAAwN,sBACA0H,YAAA,WAGAA,aAEAH,eAAA,SAAA5P,KACA,GAAA2O,KAEA,OADAA,MAAAe,iBACA1P,IAAA2O,KAAAA,OAEAkB,kBAAA,SAAA7P,IAAAiQ,YAAApV,SACA,GAAAqV,WAAAhI,IAAAiI,IAAAJ,WAcA,OAbA,OAAAlV,UACAA,YAEAqV,UAAAlQ,IAAAU,KAAA,mBACAqP,YAAAN,eAAAzP,IAAAiQ,YAAAG,QAAAvV,SACAqN,KACA5N,KAAAlI,MAAAqL,UACA5C,QAAAA,QACAwV,gBAAAne,QAAA5C,IAAA,oBAEA6gB,IAAA3C,SAAAmC,oBAAAzH,MAAA+H,aACAE,IAAAzP,KAAA,YAAAoG,YAAA,UACAqJ,IAAAzP,KAAA,QAAAqP,YAAA,QAAA/I,SAAA,UACAkJ,UAAAI,YAAAH,MAEAL,mBAAA,SAAAjV,SACA,GAAA0V,SAAApgB,GACA,IAAA,cAAA0K,QAAA2V,iBACAD,QAAA,yBACA,CAAA,GAAA,UAAA1V,QAAA2V,iBAGA,MAAA,EAFAD,SAAA,oBASA,MAJApgB,KADA0K,QAAA4V,sBACA5V,QAAAsN,KAAA,IAAAtN,QAAA4V,sBAEA,GAAA5V,QAAAsN,KAEAoI,QAAApgB,KAEA2P,KAAA,SAAAC,OAAAC,KACA,GAAAnF,QAgCA,OA/BA+U,gBAAA5P,KACAnF,QAAA,KACAmF,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAhd,WAAA2L,WAAA,4BAEAkC,IAAAc,GAAA,QAAA,yBAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAR,IAAAU,KAAA,2BAAAgQ,UAAApE,SAEAtM,IAAAc,GAAA,QAAA,UAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACApO,MAAAwM,SACAmB,OAAAtH,OAAA,WACA,MAAAhJ,WAAAQ,KAAAP,SAAAvB,QAAA,cAGA6R,IAAAc,GAAA,QAAA,kBAAA,SAAAT,OAEA,MADAA,OAAAG,iBACArO,WAAA2L,WAAA,kBAAAjD,WAEAmF,IAAAc,GAAA,QAAA,YAAA,SAAAT,OAEA,MADAA,OAAAG,iBACArO,WAAA2L,WAAA,mBAEAiC,OAAAmH,IAAA,kBAAA,SAAAyJ,UAEA,MADA3Q,KAAAgH,SAAA,UACA2J,SAAAC,oBAEA7Q,OAAAmH,IAAA,iBAAA,SAAAgB,IAAAgF,YAMA,MALArS,SAAAqS,WACAlN,IAAA8O,SAAA,WACA9O,IAAA8G,YAAA,UAEAjM,QAAAgW,mBAAAf,mBAAAjV,SACAgV,kBAAA7P,IAAAkI,IAAA+H,YAAApV,aAIAiF,KAAAA,OAIA9T,OAAA4T,UAAA,iBAAA,OAAA,WAAA,UAAA,aAAA,UAAA,cAAA,aAAA,YAAA,cAAA4M,wBAEAvZ,KAAA9G,MCzSA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,oBAEAiH,KAAA9G,MCLA,WACA,GAAA2kB,6CAAAC,iCAAAC,+BAAAC,wBAAAC,sBAAAlc,SAAAhJ,OAAAE,MAAA0J,IAEA1J,OAAAC,KAAAD,MAEA0J,KAAAzJ,KAAAD,MAAA0J,KAEAZ,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,wBAEAilB,wBAAA,SAAA1O,MAAAiL,SAAA9c,SAAAyB,WAAA6Z,SAAAyB,WACA,GAAA3N,MAAAqR,aAAAC,YAkGA,OAjGAA,cAAA3D,UAAAne,IAAA,8BAAA,GACA6hB,aAAA1D,UAAAne,IAAA,mCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA6O,YAAAC,WAAAC,QA0FA,OAzFAA,UAAAvc,SAAA,IAAA,SAAAwc,MACA,GAAArW,QAkBA,OAjBAqW,MAAAC,QAAAzR,IAAAU,KAAA,SAAAvP,MACA6a,SAAAE,MAAAlM,IAAAU,KAAA,eACAvF,QAAAoH,MAAAmP,KAAAF,MACArW,QAAAO,KAAA,WACA,MAAA,YAGA,MAFAsQ,UAAAK,OAAArM,IAAAU,KAAA,eACAhQ,SAAAI,OAAA,WACAqB,WAAA2L,WAAA,0BAEA3R,OACAgP,QAAAO,KAAA,KAAA,WACA,MAAA,YAGA,MAFAsQ,UAAAK,OAAArM,IAAAU,KAAA,eACAV,IAAAU,KAAA,SAAAvP,IAAAqgB,KAAAC,SACA/gB,SAAAI,OAAA,WAEA3E,OACAgP,UAEAkW,WAAA,SAAAG,MAkBA,MAjBAxR,KAAA2O,KAAAnB,SAAA2D,cACAK,KAAAA,QACAzR,SACAC,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,MAAA,MAAAA,MAAAsI,QACA4I,SAAA/O,OAAAmP,aAAAjW,KAAA,WACA,MAAA4V,YAAA9O,OAAAmP,eAEA,KAAAtR,MAAAsI,QACA2I,WAAA9O,OAAAmP,aADA,SAIA3R,IAAAc,GAAA,QAAA,eAAA,WACA,MAAAyQ,UAAA/O,OAAAmP,aAAAjW,KAAA,WACA,MAAA4V,YAAA9O,OAAAmP,iBAGA3R,IAAAc,GAAA,QAAA,eAAA,WACA,MAAAwQ,YAAA9O,OAAAmP,gBAGAL,WAAA,SAAAE,MACA,GAAAI,MAcA,OAbA5R,KAAAmH,MACAyK,OACAC,YAAA,KAAA9R,OAAAlF,QAAAgM,eAAA/Q,QAAA,eACAgc,YAAA,KAAA/R,OAAAlF,QAAAgM,eAAA/Q,QAAA,gBAEAkK,IAAA2O,KAAAnB,SAAA4D,cACAI,KAAAA,KACAI,MAAAA,SACA7R,SACAC,IAAAc,GAAA,QAAA,aAAA,WAEA,MADAuQ,YAAA7O,OAAAmP,aACA3R,IAAAU,KAAA,SAAA6L,QAAAwF,WAEA/R,IAAAc,GAAA,QAAA,eAAA,WACA,GAAA+J,SAAAmH,KAIA,OAHAR,MAAAhP,OAAAmP,YACAK,MAAA,cACAnH,QAAA2G,KAAAC,QACA/gB,SAAAuhB,YAAAD,MAAAnH,SAAAnP,KAAA,SAAA2Q,QACA,GAAAlR,QAOA,OANAA,SAAAoH,MAAApE,OAAAqT,MACArW,QAAAO,KAAA,WAGA,MAFA2Q,UACA3b,SAAAI,OAAA,WACAiP,OAAA6O,MAAA,0BAEAzT,QAAAO,KAAA,KAAA,WACA,MAAAhL,UAAAI,OAAA,gBAKAiP,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAA/gB,KACA,MAAAA,KAGAmgB,WAAAngB,KAHA,SAKA4O,OAAAmH,IAAA,oCAAA,WACA,MAAA/U,YAAA2L,WAAA,0BAEAiC,OAAAmH,IAAA,+BAAA,WACA,MAAA/U,YAAA2L,WAAA,0BAEAiC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,oBAAA,UAAA,WAAA,aAAA,aAAA,aAAA,cAAAqR,0BAEAD,+BAAA,SAAAzO,MAAAiL,SAAA9c,SAAAyhB,SAAAnG,SAAA1Z,WAAAmb,WACA,GAAA3N,MAAAsS,QAAA5S,QAmEA,OAlEAA,UAAAiO,UAAAne,IAAA,sCAAA,GACA8iB,SACAX,QAAA,GACAY,YAAA,MAEAvS,KAAA,SAAAC,OAAAC,KACA,GAAAsS,YAAA3L,MAwDA,OAvDA2L,YAAAtd,SAAA,IAAA,SAAAwc,MACA,GAAArW,QAmBA,OAlBAqW,MAAAC,QAAAzR,IAAAU,KAAA,SAAAvP,MACAqgB,KAAAa,YAAAtS,OAAAqS,QAAAC,YACAb,KAAAzhB,OAAAgQ,OAAAqS,QAAAriB,OACAgQ,OAAAqS,QAAAriB,OAAAgQ,OAAAlF,QAAA0X,oBACAxS,OAAAqS,QAAAC,YAAA,KACArG,SAAAE,MAAAlM,IAAAU,KAAA,eACAvF,QAAAoH,MAAA4J,OAAA,QAAAqF,MACArW,QAAAO,KAAA,WAIA,MAHApJ,YAAA4O,WAAA,OAAA,SAAA,2BAAA,GACA8K,SAAAK,OAAArM,IAAAU,KAAA,eACAX,OAAA6O,MAAA,qBACAle,SAAAI,OAAA,aAEAqK,QAAAO,KAAA,KAAA,WAGA,MAFAsE,KAAAU,KAAA,SAAAvP,IAAAqgB,KAAAC,SACAzF,SAAAK,OAAArM,IAAAU,KAAA,eACAhQ,SAAAI,OAAA,WAEAqK,UAEAwL,OAAA,WAiBA,MAhBA3G,KAAAmH,MACAnH,IAAA2O,KAAAnB,SAAAhO,YAAAO,SACAC,IAAAU,KAAA,SAAA6L,QAAAwF,SACA/R,IAAAgH,SAAA,UACAhH,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,MAAA,MAAAA,MAAAsI,QACA2J,WAAAF,SAAA1W,KAAA,WACA,MAAAiL,YAEA,KAAAtG,MAAAsI,QACA3I,IAAA2O,KAAA,IADA,SAIA3O,IAAAc,GAAA,QAAA,eAAA,WACA,MAAAd,KAAA2O,KAAA,MAEA3O,IAAAc,GAAA,QAAA,eAAA,WACA,MAAAwR,YAAAF,SAAA1W,KAAA,WACA,MAAAsE,KAAA2O,KAAA,SAIAziB,MAAA4I,SAAAiL,OAAA,KAAA,WAKA,MAJAqS,SAAA,OAAArS,OAAAlF,QAAA0X,oBACAH,QAAA,QAAArS,OAAAlF,QAAAF,GACAyX,QAAA,WAAArS,OAAAyS,GAAA7X,GACAoF,OAAAqS,QAAAD,SAAAxU,WAAA,QAAAyU,SACApS,IAAA2O,KAAA,MAEA5O,OAAAmH,IAAA,0BAAA,WACA,MAAAP,YAEA5G,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,2BAAA,UAAA,WAAA,aAAA,WAAA,aAAA,eAAA,cAAAoR,iCAEAD,iCAAA,WACA,GAAAjR,MAAAN,QAqBA,OApBAA,UAAAjT,EAAAiT,SAAA,wDACAM,KAAA,SAAAC,OAAAC,KAeA,MAdAD,QAAA9I,OAAA,UAAA,SAAA9F,KACA,MAAAA,MAGA6O,IAAAmH,MAEAnH,IAAA2O,KADA,KAAA5O,OAAAlF,QAAAgM,eAAA/Q,QAAA,YACA0J,WAEA,IAEAQ,IAAAc,GAAA,QAAA,QAAA,WACA,MAAAf,QAAA6O,MAAA,oCAVA,SAaA7O,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,6BAAA,UAAA,WAAA,aAAA,WAAAmR,mCAEAG,sBAAA,SAAA3O,MAAAkQ,IAAAtgB,YACA,GAAA2N,KA+BA,OA9BAA,MAAA,SAAAC,OAAAC,KACA,GAAA0S,UAyBA,OAxBAA,WAAA,WACA,MAAAD,KAAAE,MAAAC,KAAA7S,OAAAvE,UAAA,KAAAuE,OAAA8S,MAAAnX,KAAA,WACA,MAAA,UAAAiX,OAEA,MADA5S,QAAA4S,MAAAA,MACAA,QAEAxmB,QAEA4T,OAAAmH,IAAA,oBAAA,WACA,MAAAwL,aAAAhX,KAAA,WACA,MAAAvJ,YAAA2L,WAAA,4BAGAiC,OAAAmH,IAAA,uBAAA,WACA,MAAAwL,aAAAhX,KAAA,WACA,MAAAvJ,YAAA2L,WAAA,4BAGAiC,OAAAmH,IAAA,gCAAA,WACA,MAAAnH,QAAAjC,WAAA,6BAEA5R,MAAA4I,SAAAiL,OAAA,KAAA,WACA,MAAA2S,eAEA3S,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,kBAAA,UAAA,eAAA,aAAAsR,wBAEAJ,4CAAA,SAAAvO,MAAApQ,YACA,GAAA2N,MAAAN,QAiDA,OAhDAA,UAAAjT,EAAAiT,SAAA,sFACAM,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAAqE,SAAAC,YAAAvB,KAAAwB,iBA0CA,OAzCAA,mBAAA,SAAAxB,MACA,GAAAtJ,KAAA+K,MAWA,OAVA/K,MACA3Q,KAAA,aACA2b,OAAA,uBAEAD,OAAAlT,OAAAnF,UAAA4W,KAAAa,aACAY,SACA/K,IAAAgL,OAAAD,OAAAE,MACAjL,IAAA3Q,KAAA0b,OAAAG,mBAEApT,IAAAU,KAAA,WAAAiO,KAAAnP,SAAA0I,MACAlI,IAAAU,KAAA,oBAAA7J,KAAA,QAAAqR,IAAA3Q,OAEAkX,MAAAzO,IAAAqN,aACAmE,KAAAzR,OAAA/I,MAAA+P,OAAAsM,sCACAN,YAAAhT,OAAA/I,MAAA+P,OAAAgM,aACAD,UAAAC,YACAC,kBAAAxB,MACAxR,IAAAc,GAAA,QAAA,mBAAA,WACA,MAAA3O,YAAA2L,WAAA,kBAAA0T,QAEAtlB,MAAA4I,SAAAiL,OAAA,UAAA,SAAAlF,SACA,MAAA,KAAAA,QAAAgM,eAAA/Q,QAAA,gBACAkK,IAAAsT,OAAA,SACAtT,IAAAU,KAAA,KAAAsG,SAAA,kBAFA,SAKAjH,OAAAmH,IAAA,oBAAAlS,SAAA,IAAA,WACA,MAAA,UAAAkT,IAAAqL,OAAAC,oBACA,MAAAA,oBAAA7Y,KAAA6W,KAAA7W,IACA6Y,mBAAAnB,YAAAkB,OACAT,UACAvQ,MAAAmP,KAAA8B,oBAAA9X,KAAA,WACA,MAAAqE,QAAA6O,MAAA,uCAGAoE,kBAAAQ,qBAPA,SAUArnB,QACA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,wCAAA,UAAA,aAAAkR,+CAEA7d,KAAA9G,MC9TA,WACA,GAAAsnB,kBAAAC,cAAAC,SAAA3nB,OAAAE,MAAAqR,KACAlK,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAunB,iBAAA,SAAArf,YAGA,QAAAqf,oBACA,MAAAA,kBAAA5f,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAGA,MANAd,QAAAogB,iBAAArf,YAMAqf,kBAEAvnB,MAAAyI,SAEA4I,MACAM,KAAA,QACA+V,gBAAA,iBACA7U,YAAA,eACA8U,YAAA,eACA3Z,MAAA,SACAoB,SAAA,YACAR,YAAA,eACAgZ,kBAAA,mBACAC,0BAAA,2BACAC,WAAA,cACAC,YAAA,eACAC,iBAAA,2BACAC,+BAAA,yCACAC,8BAAA,wCACAC,8BAAA,wCACAC,sBAAA,0BACA3B,MAAA,SACA4B,oBAAA,qBACAC,mCAAA,qCACAC,gBAAA,oBACAC,OAAA,UACAC,qBAAA,sBACAC,iBAAA,qBACAC,KAAA,QACAC,eAAA,mBACAC,aAAA,cACAC,6BAAA,sBACAC,+CAAA,wCACAC,iBAAA,UACAC,mCAAA,4BACAC,wBAAA,iBACAC,0CAAA,mCACAC,yBAAA,kBACAC,2CAAA,oCACAC,sBAAA,eACAC,wCAAA,iCACAC,qBAAA,cACAC,uCAAA,gCACAC,qBAAA,cACAC,uCAAA,gCACAzlB,OAAA,UACA0lB,MAAA,SACAC,oBAAA,qBACAC,eAAA,gBACAC,gBAAA,iBACAhc,MAAA,SACAic,0BAAA,2BACAC,sCAAA,uCACAC,wBAAA,yBACAC,qBAAA,sBACAC,uBAAA,gBACAC,eAAA,gBACAC,SAAA,YACAC,qBAAA,sBACAC,OAAA,UACAC,gBAAA,iBACAC,iBAAA,kBACAC,cAAA,eACAC,WAAA,cACAC,WAAA,cACAC,kBAAA,uBACAC,SAAA,YACAC,gBAAA,oBACAC,YAAA,eACAC,qBAAA,yBACAC,aAAA,qBACAC,gBAAA,iBACAC,eAAA,gBACAC,eAAA,gBACAC,iBAAA,2BACAC,oBAAA,sBACAC,mBAAA,qBACAC,wBAAA,oBACAC,8BAAA,+BACAC,0BAAA,2BACAC,yBAAA,0BACAC,qCAAA,wCACAC,iCAAA,mCACAC,gCAAA,kCACA9L,SAAA,YACA+L,SAAA,YACAC,SAAA,sBACAC,kBAAA,2BACAC,YAAA,qBACAC,aAAA,uBAGA5E,SAAA,SAAA3hB,KAAAwmB,OAEA,MADAxmB,MAAAQ,MAAA,uBACAgmB,MAAA5S,OAAArI;EAGAmW,cAAA,SAAA1hB,KAAAygB,KACA,GAAAzc,GAAAiC,IAAA6T,SAAA2M,UAAA7c,OAIA,KAHA5J,KAAAQ,MAAA,wBACAimB,UAAAlsB,EAAAmsB,QAAAvkB,WAAA+B,MAAA,GACA0F,WACA5F,EAAA,EAAAiC,IAAAwgB,UAAA9mB,OAAAsG,IAAAjC,EAAAA,IACA8V,SAAA2M,UAAAziB,GACA4F,QAAAnL,KAAAqb,SAAA2G,KAEA,OAAA7W,UAGA5P,OAAA8G,QAAA9G,OAAA,kBAAA,cAEAA,OAAAsT,QAAA,eAAAmU,kBAEAznB,OAAAgH,KAAA,OAAA,UAAA2gB,WAEA3nB,OAAAgH,KAAA,OAAA,eAAA,+BAAA,uCAAA,6CAAA,kCAAA,qCAAA,kCAAA,4BAAA,mCAAA,8BAAA,kCAAA,4BAAA,6BAAA,2BAAA,6BAAA,kCAAA,+BAAA,8BAAA,6BAAA,8BAAA,+BAAA,kCAAA0gB,iBAEAzgB,KAAA9G,MCnIA,WACA,GAAAwsB,oBAAAC,iBAAAC,gBAAA/jB,SAAAE,SAAAC,gBAAAC,QAAAE,MAAApJ,OAAAE,MAAA0J,KACAvC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAgJ,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAM,MAAAjJ,KAAAD,MAAAkJ,MAEAH,gBAAA9I,KAAAD,MAAA+I,gBAEAW,KAAAzJ,KAAAD,MAAA0J,KAEAZ,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,kBAEA4sB,iBAAA,SAAAxkB,YAKA,QAAAwkB,kBAAAE,OAAAC,KAAA1d,GAAA7M,OAAAiG,EAAAF,SAAAykB,SAAAxkB,QAAA+Y,UACA,GAAA0L,gBAAA9d,OACAhP,MAAAyK,MAAAkiB,OACA3sB,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAA6sB,SAAAA,SACA7sB,KAAAqI,QAAAA,QACArI,KAAAohB,SAAAA,SACAphB,KAAAyK,MAAAmZ,YAAA,SACA5U,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,YAEA7R,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAA,KAAAyK,MAAAsiB,WAAA,GACAD,eAAAhkB,gBAAA,IAAA,SAAA0G,OACA,MAAA,UAAAwd,GACA,MAAAxd,OAAAsd,eAAAE,KAEAhtB,OACAA,KAAAyK,MAAAK,OAAA,aAAA,SAAA0E,OACA,MAAA,UAAAyd,MACA,MAAAA,MAGAH,eAAAG,MAFAzd,MAAA4R,SAAA8L,eAKAltB,OA+DA,MApGAkH,QAAAulB,iBAAAxkB,YAEAwkB,iBAAApb,SAAA,SAAA,UAAA,eAAA,eAAA,KAAA,cAAA,YAAA,aAAA,YAsCAob,iBAAAhlB,UAAA0lB,YAAA,WACA,GAAAC,QAGA,OAFAA,SAAAptB,KAAAsI,EAAA+D,QACA+gB,QAAAprB,UACAorB,QAAApe,SAGAyd,iBAAAhlB,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SAqBA,MApBAc,OAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAA8iB,gBAAAxkB,QAAA2F,QAAA8e,eAAA,SAAAltB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAgjB,eAAA1kB,QAAA2F,QAAAgf,cAAA,SAAAptB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAkjB,aAAA5kB,QAAA2F,QAAAkc,WAAA,SAAAtqB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAmjB,aAAA7kB,QAAA2F,QAAAic,WAAA,SAAArqB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAojB,YAAA9kB,QAAA2F,QAAAC,YAAA,SAAArO,GACA,MAAAA,GAAA6N,OAEAqB,MAAA/E,MAAAqjB,aAAA/kB,QAAA2F,QAAAqf,YAAA,SAAAztB,GACA,MAAAA,GAAAkO,KAEAE,UAEA1O,QAGAysB,iBAAAhlB,UAAAqlB,eAAA,SAAAG,MACA,GAAAje,QAYA,OAXAA,SAAAhP,KAAAkP,GAAAjL,OAAA,MAAAjE,KAAAyK,MAAA4E,UAAA4d,MAAA1d,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAAujB,cAAAvpB,KACAA,OAEAzE,OACAgP,QAAA,WAAA,SAAAQ,OACA,MAAA,YACA,MAAAA,OAAA4R,SAAA8L,eAEAltB,OACAgP,SAGAyd,iBAAAhlB,UAAAiZ,gBAAA,WACA,MAAA1gB,MAAAqtB,cAAA9d,KAAA,SAAAC,OACA,MAAA,UAAAd,SAEA,MADAc,OAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,SAEA/N,QAGAysB,kBAEAxjB,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,mBAAAuL,kBAEAD,mBAAA,SAAAhpB,iBAAAgW,SAAAlW,UAAA2qB,QACA,GAAAta,KA+BA,OA9BAA,MAAA,SAAAC,OAAAC,KACA,GAAAnF,SAAAsF,MA2BA,OA1BAtF,SAAA,KACAsF,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAC,MAAAxI,KAAA3H,GAGA,OAFAkQ,OAAAG,iBACAF,KAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAK,YAGA7I,KAAAkI,IAAAU,KAAA,gBAAAvP,MACAhB,IAAAwV,SAAAxX,QAAA,kBACA0M,QAAAA,QAAAsN,OAEAxY,iBAAAgb,MAAA3K,KACAD,OAAAtH,OAAA,WAGA,MAFAhJ,WAAAQ,KAAAE,KACAV,UAAAW,OAAA,OAAA0H,MAAA7H,KAAAE,KACAiqB,OAAAC,YAXA,SAcAluB,OACA4T,OAAAmH,IAAA,kBAAA,SAAAgB,IAAAgF,YAGA,MAFArS,SAAAqS,WACAvd,iBAAA2c,KAAAtM,KACAA,IAAAU,KAAA,gBAAAvP,IAAA,MAEA6O,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,eAAA,kBAAA,aAAA,cAAA,SAAA+Y,qBAEAE,gBAAA,SAAA7mB,KAAAwb,SAAA8M,eAAAC,aAAA9qB,WACA,GAAAqQ,MAAA0a,SA4GA,OA3GAA,WAAA,SAAAza,OAAAC,KACA,GAAAya,kBAAAC,kBAAAC,qBAAAC,iBAAAC,mBAAAC,QAAAvb,SA+EA,OA9EAub,SAAA9a,IAAAU,KAAA,yBACAga,kBAAA,KACAD,iBAAA,SAAA7pB,MACA,GAAAmqB,QAAAxjB,KAAAyjB,oBAAAC,oBAAAvkB,KACAqkB,QAAA,EACAE,oBAAA,KACAD,oBAAA,IACA,KAAAzjB,OAAA3G,MACA8F,MAAA9F,KAAA2G,MACA,UAAAA,MAGAb,MAAA/E,OAAAopB,SACAA,OAAArkB,MAAA/E,OACAspB,oBAAA1jB,KACAyjB,oBAAAtkB,MAGA,OAAA,KAAAqkB,QAEAxjB,KAAA,cACAb,WAIAa,KAAA0jB,oBACAvkB,MAAAskB,sBAGAJ,iBAAA,SAAAhqB,MACA,GAAA2G,MAAAqE,QAAAlF,KACAkF,WACA,KAAArE,OAAA3G,MACA8F,MAAA9F,KAAA2G,MACA,UAAAA,MAGAqE,QAAAnL,KAAAqqB,QAAApa,KAAA,MAAAnJ,KAAA,SAAAoX,KAAAjY,MAAA/E,QAEA,OAAAiK,UAEA+e,qBAAA,SAAAvK,SAEA,MADA0K,SAAApa,KAAA,YAAAoG,YAAA,UACAgU,QAAApa,KAAA,MAAA0P,QAAA7Y,KAAA,MAAAyP,SAAA,WAEAzH,WACAmV,OAAA4F,eAAAhrB,IAAA,iBACAqjB,MAAA2H,eAAAhrB,IAAA,gBACA2kB,YAAAqG,eAAAhrB,IAAA,sBACA4rB,UAAAZ,eAAAhrB,IAAA,qBAEAurB,mBAAA,SAAAzK,SACA,GAAAzY,SAAAwjB,YAAAC,SAAAxkB,MAAA4I,QAWA,OAVA2b,aAAAnb,IAAAU,KAAA,wBAAA2a,WACAD,SAAAD,YAAAvkB,QACAwkB,WACAA,SAAAE,WACAH,YAAAhd,UAEAvH,MAAAmJ,OAAAwb,OACA3kB,MAAAwZ,QAAA7Y,MAAA6Y,QAAA1Z,MACA8I,SAAA1M,QAAA6E,QAAA6jB,UAAA5lB,KAAA2J,UAAA6Q,QAAA7Y,QACAI,QAAA6V,SAAAhO,UAAA5I,OACAoJ,IAAAU,KAAA,wBAAAiO,KAAAhX,UAEAoI,OAAA9I,OAAA,gBAAA,SAAArG,MACA,GAAA6qB,cAKA,OAJAf,mBAAA9pB,KACA6qB,cAAAhB,iBAAA7pB,MACAgqB,iBAAAhqB,MACAiqB,mBAAAY,eACAd,qBAAAc,iBAEA1b,OAAA9I,OAAA,aAAA,SAAAiiB,YACA,MAAAA,YACAzpB,UAAAW,OAAA,OAAA8oB,YADA,SAIAlZ,IAAAc,GAAA,QAAA,wBAAA,SAAAT,OACA,GAAA+P,SAAAsL,YAAA3L,YAAAb,MASA,OARA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAY,YAAAb,OAAA3b,SAAA3C,KAAA,QACA8qB,YAAAhB,kBAAA3K,aACAK,SACA7Y,KAAAwY,YACArZ,MAAAglB,aAEA3b,OAAAtH,OAAA,WAEA,MADAoiB,oBAAAzK,SACAuK,qBAAAvK,cAIAtQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAAkN,UAIA,OAHAlN,OAAAzO,IAAAqN,aACAmN,UAAAza,OAAAC,IAAA+G,OAAA0H,OACAkN,WAAApB,aAAAziB,KACAiI,OAAA9I,OAAA,YAAA,SAAAuE,WACA,MAAA,OAAAA,UACAuE,OAAAmZ,WAAAyC,WADA,WAMA7b,KAAAA,OAIA9T,OAAA4T,UAAA,YAAA,OAAA,WAAA,iBAAA,eAAA,cAAAiZ,mBAEA5lB,KAAA9G,MC3RA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,sBAEAiH,KAAA9G,MCLA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,kBAEAiH,KAAA9G,MCLA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,iBAEAiH,KAAA9G,MCLA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,yBAEAiH,KAAA9G,MCLA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,wBAEAiH,KAAA9G,MCLA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,iBAEAiH,KAAA9G,MCLA,WACA,GAAAyvB,kBAAA5vB,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAF,OAAA8G,QAAA9G,OAAA,eAEA4vB,iBAAA,SAAAxnB,YAKA,QAAAwnB,kBAAAze,UAAAxD,IAAA5G,OAAA0W,IAAAoS,IAAAtnB,UACA,GAAAunB,KACA3vB,MAAAgR,UAAAA,UACAhR,KAAAwN,IAAAA,IACAxN,KAAA4G,OAAAA,OACA5G,KAAAsd,IAAAA,IACAtd,KAAA0vB,IAAAA,IACA1vB,KAAAoI,SAAAA,SACApI,KAAA4vB,aAAA,EACAD,KAAA3vB,KAAA4G,OAAAzD,IAAA,gBACAnD,KAAA6vB,UAAAF,KAAAE,UACA7vB,KAAA8vB,UAAAH,KAAAG,WAAA,sBACA9vB,KAAA+vB,YAAAJ,KAAAI,cAAA,EACA/vB,KAAAgwB,oBAAAL,KAAAK,sBAAA,EA4DA,MA7EA9oB,QAAAuoB,iBAAAxnB,YAEAwnB,iBAAApe,SAAA,aAAA,OAAA,YAAA,UAAA,YAAA,aAkBAoe,iBAAAhoB,UAAArB,WAAA,WACA,MAAApG,MAAA6vB,WAIA7vB,KAAAiwB,kBACAjwB,KAAAsd,IAAA4S,GAAA,SAAAlwB,KAAA6vB,UAAA,QACA7vB,KAAAsd,IAAA4S,GAAA,UAAA,mBACAlwB,KAAA+vB,cAAA/vB,KAAAgwB,qBACAhwB,KAAAsd,IAAA4S,GAAA,OAAA,WAAAlwB,KAAAmwB,UAEAnwB,KAAA+vB,aACA/vB,KAAAgR,UAAA+J,IAAA/a,KAAA8vB,UAAA,SAAAtgB,OACA,MAAA,YACA,MAAAA,OAAA4gB,UAAA5gB,MAAA2gB,SAAA,WAEAnwB,OAEAA,KAAA4vB,aAAA,OAhBA5vB,MAAAwN,IAAAnH,MAAA,iDAmBAopB,iBAAAhoB,UAAA0oB,OAAA,WACA,MAAAnwB,MAAAoI,SAAAtE,QAGA2rB,iBAAAhoB,UAAAwoB,gBAAA,WACA,GAAApoB,GAIA,QAHAA,GAAA,SAAAgC,EAAAwmB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAA7mB,EAAA,sBAAA2mB,EAAA3mB,EAAA2mB,GAAA3mB,EAAA2mB,IAAA,YACA3mB,EAAA2mB,GAAAloB,EAAAuB,EAAA2mB,GAAAloB,OAAAhE,KAAA0D,YAAA6B,EAAA2mB,GAAA1mB,EAAA,EAAA,GAAAhJ,MAAA2vB,EAAAJ,EAAAM,cAAAL,GACAI,EAAAL,EAAAO,qBAAAN,GAAA,GAAAG,EAAAI,MAAA,EAAAJ,EAAAK,IAAAP,EAAAG,EAAAK,WAAAC,aAAAP,EAAAC,KACA9rB,OAAAod,SAAA,SAAA,0CAAA,OAGAyN,iBAAAhoB,UAAA2oB,UAAA,SAAApsB,IAAA6hB,OACA,MAAA7lB,MAAA4vB,aAGA5vB,KAAAsd,IAAA4S,IAGArK,MAAAA,OAAA7lB,KAAA0vB,IAAA,GAAA7J,MACA7lB,KAAAsd,IAAA4S,GAAA,OAAA,YACAe,KAAAjtB,IACA6hB,MAAAA,SATA,QAaA4J,iBAAAhoB,UAAAsN,WAAA,SAAAmc,SAAAC,OAAAC,MAAA7mB,OACA,MAAAvK,MAAA4vB,aAGA5vB,KAAAsd,IAAA4S,GAGAlwB,KAAAsd,IAAA4S,GAAA,OAAA,QAAAgB,SAAAC,OAAAC,MAAA7mB,OANA,QASAklB,kBAEA1vB,MAAAyI,SAEA3I,OAAAsT,QAAA,eAAAsc,mBAEA3oB,KAAA9G,MC7FA,WACA,GAAAqxB,qBAAAC,sBAAAC,qBAAA7oB,YAAAC,SAAA9I,OAAAsJ,WAAApJ,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAoJ,WAAAnJ,KAAAD,MAAAoJ,WAEAR,SAAA3I,KAAAD,MAAA4I,SAEAD,YAAA1I,KAAAD,MAAA2I,YAEA7I,OAAA8G,QAAA9G,OAAA,eAEAyxB,sBAAA,SAAArpB,YAKA,QAAAqpB,uBAAA7mB,MAAAuG,UAAA4b,KAAA1d,GAAAsiB,QAAAlpB,GACAtI,KAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAwxB,QAAAA,QACAxxB,KAAAsI,EAAAA,EACAI,YAAA1I,MACAA,KAAAsS,KAAA,KACAtS,KAAAyxB,SAAA,KACAzxB,KAAAqP,UAAA,KACArP,KAAA0xB,wBACA1xB,KAAA2xB,eACA3xB,KAAA4xB,iBAAA,EACA5xB,KAAA6xB,2BAAA,EACA7xB,KAAA8xB,gBAAA,EA6JA,MAhLA5qB,QAAAoqB,sBAAArpB,YAEAqpB,sBAAAjgB,SAAA,SAAA,aAAA,UAAA,eAAA,aAAA,MAoBAigB,sBAAA7pB,UAAArB,WAAA,SAAAkM,KAAAmf,UAGA,MAFAzxB,MAAAsS,KAAAA,KACAtS,KAAAyxB,SAAAA,SACAzxB,KAAAqP,UAAArP,KAAAyK,MAAA4E,WAGAiiB,sBAAA7pB,UAAAsqB,gBAAA,WACA,GAAAC,QACA,OAAAhyB,MAAAyxB,UAGAO,QAAA,eAAAhyB,KAAAsS,KACAtS,KAAAkP,GAAAyiB,YAAAlL,KAAAuL,QAAAhyB,KAAAyxB,SAAAzxB,KAAAqP,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAmiB,aAGA,MAFAniB,OAAAmiB,YAAAvxB,EAAAiO,OAAAsjB,YAAA,SACAniB,MAAAyiB,iBACAN,cAEA3xB,QATAA,KAAA2xB,aAYAL,sBAAA7pB,UAAAwqB,eAAA,WAEA,MADAjyB,MAAA4xB,iBAAA5xB,KAAA2xB,YAAAnsB,OACAxF,KAAA6xB,2BAAAzxB,EAAA8N,OAAAlO,KAAA2xB,aACAO,eAAA,IACA1sB,QAGA8rB,sBAAA7pB,UAAA0qB,kBAAA,SAAAC,YACA,GAAApjB,SAAAqjB,OAyBA,OAxBAA,SAAA,eAAAryB,KAAAsS,KACAtD,QAAAhP,KAAAkP,GAAAyiB,YAAA3R,OAAAqS,QAAAryB,KAAAqP,UAAArP,KAAAyxB,SAAAW,YACApjB,QAAAA,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAAiY,MAKA,OAJAjY,MAAA6tB,mBAAA,EACA5V,MAAAlN,MAAAkiB,qBAAA/nB,QAAAyoB,YACA5iB,MAAAkiB,qBAAAa,OAAA7V,MAAA,GACAlN,MAAAmiB,YAAArtB,KAAAG,MACA+K,MAAAwB,UAAAW,WAAA,uBAEA3R,OACAgP,QAAAA,QAAAO,KAAA,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAAiY,MAOA,OANA,OAAAjY,KAAAb,QACA4L,MAAA/E,MAAAgY,MAAA,0BAEA/F,MAAAlN,MAAAkiB,qBAAA/nB,QAAAyoB,YACA5iB,MAAAkiB,qBAAAa,OAAA7V,MAAA,GACAlN,MAAAgiB,QAAA7sB,OAAA,QAAA,oCAAAytB,WAAAhnB,KAAA,MAAA3G,KAAAA,KAAAuQ,gBACAxF,MAAAlH,EAAApE,OAAAO,QAEAzE,QAIAsxB,sBAAA7pB,UAAA+qB,kBAAA,SAAAb,aACA,GAAAc,SAMA,OALAA,UAAAryB,EAAAC,IAAAsxB,YAAA,SAAAniB,OACA,MAAA,UAAAlP,GACA,MAAAkP,OAAA2iB,kBAAA7xB,KAEAN,OACAA,KAAAsI,EAAA2G,IAAAwjB,UAAAljB,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAyiB,mBAEAjyB,QAGAsxB,sBAAA7pB,UAAAirB,wBAAA,SAAAf,aACA,MAAA3xB,MAAA0xB,qBAAAtxB,EAAAuyB,MAAA3yB,KAAA0xB,qBAAAC,cAGAL,sBAAA7pB,UAAAmrB,kBAAA,SAAAR,WAAAS,UACA,GAAAC,SAEA,OADAA,UAAA9yB,KAAA2xB,YAAAhoB,QAAAyoB,YACAU,WAAAD,UAGA7yB,KAAA2xB,YAAAY,OAAAO,SAAA,GACA9yB,KAAA2xB,YAAAY,OAAAM,SAAA,EAAAT,YACAhyB,EAAAqc,KAAAzc,KAAA2xB,YAAA,SAAArxB,EAAAuJ,GACA,MAAAvJ,GAAAyyB,MAAAlpB,EAAA,KANA,QAUAynB,sBAAA7pB,UAAAurB,iBAAA,SAAAZ,YACA,GAAAte,SAAAC,SAgBA,OAfAA,WAAA,SAAAvE,OACA,MAAA,YAEA,MADAA,OAAAyiB,iBACAziB,MAAAwB,UAAAW,WAAA,qBAEA3R,MACA8T,QAAA,SAAAtE,OACA,MAAA,UAAA9L,UAKA,MAJA,OAAAA,SAAAE,QACAgQ,OAAA6O,MAAA,0BAEAjT,MAAAgiB,QAAA7sB,OAAA,SACA6K,MAAAlH,EAAApE,WAEAlE,MACAA,KAAA4sB,KAAArH,KAAA6M,YAAA7iB,KAAAwE,UAAAD,UAGAwd,sBAAA7pB,UAAAwrB,gBAAA,WACA,MAAAjzB,MAAA4sB,KAAAsG,QAAAlzB,KAAA2xB,aAAApiB,KAAA,KAAA,SAAAC,OACA,MAAA,YACA,GAAA5F,MAAAupB,EAAArnB,IAAAT,GAEA,KADAA,IAAAmE,MAAAmiB,YACAwB,EAAA,EAAArnB,IAAAT,IAAA7F,OAAAsG,IAAAqnB,EAAAA,IACAvpB,KAAAyB,IAAA8nB,GACAvpB,KAAAwpB,QAEA,OAAA5jB,OAAAmiB,YAAAvxB,EAAAiO,OAAAmB,MAAAmiB,YAAA,WAEA3xB,QAGAsxB,sBAAA7pB,UAAA4rB,iBAAA,SAAAjB,YACA,GAAA1T,SAAAmH,KAGA,OAFAA,OAAA,oBACAnH,QAAA,mBAAA0T,WAAAhnB,KAAA,IACApL,KAAAwxB,QAAA1L,YAAAD,MAAAnH,SAAAnP,KAAA,SAAAC,OACA,MAAA,UAAA0Q,QACA,GAAApM,SAAAC,SAcA,OAbAA,WAAA,WACA,GAAA2I,MAKA,OAJAwD,UACAxD,MAAAlN,MAAAmiB,YAAAhoB,QAAAyoB,YACA5iB,MAAAmiB,YAAAY,OAAA7V,MAAA,GACAlN,MAAAyiB,iBACAziB,MAAAwB,UAAAW,WAAA,sBAEAmC,QAAA,WAGA,MAFAoM,SAAA,GACA1Q,MAAAgiB,QAAA7sB,OAAA,QAAA,KAAA,mCAAA+Z,QAAA,KACAlP,MAAAlH,EAAApE,UAEAsL,MAAAod,KAAA5a,OAAAogB,YAAA7iB,KAAAwE,UAAAD,WAEA9T,QAGAsxB,sBAAA7pB,UAAA6rB,kBAAA,SAAA1pB,MACA,MAAA5J,MAAA8xB,gBACA,GAEAloB,KAAAsoB,eAGAZ,uBAEAvxB,MAAA0I,YAEA8oB,qBAAA,SAAAxrB,QAAAxB,SAAAgvB,YACA,GAAA5f,MAAAN,SAAAC,UAgFA,OA/EAD,UAAAkgB,WAAApwB,IAAA,+BAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAyH,QACA,GAAAC,OAAAjM,OAAAmd,aAAAC,IA2DA,OA1DAnR,OAAAD,OAAA,GACAhM,OAAAgM,OAAA,GACA1Z,SAAAiL,OAAAgH,OAAAmL,QAAA,SAAAxb,OAEA,MADA+X,OAAAlc,WAAAwU,OAAAtI,KAAA/H,MAAAiE,IACA8T,MAAAyP,oBAEA0B,KAAA5f,IAAAU,KAAA,gCACAkf,KAAAC,UACAC,MAAA,wBACAC,OAAA,8BACAC,YAAA,eACAC,aAAA,EACAC,QAAA,EACAC,UAAA,UACAC,YAAA,2CAEAR,KAAA9e,GAAA,WAAA,SAAAT,MAAAggB,IACA,GAAA9B,YAAAS,QAIA,OAHAT,YAAA8B,GAAAtqB,KAAAa,QAAA0pB,OACAtB,SAAAqB,GAAAtqB,KAAA8S,QACA4F,MAAAsQ,kBAAAR,WAAAS,UACAvQ,MAAA2Q,kBAAA1jB,KAAA,WACA,MAAAqE,QAAA6O,MAAA,uBAGA+Q,aAAA,WACA,MAAA3f,KAAAU,KAAA,cAAAoG,YAAA,WAEA/G,OAAAmH,IAAA,yBAAA,WACA,MAAAyY,kBAEA3f,IAAAc,GAAA,SAAA,4BAAA,SAAAT,OACA,GAAAkgB,MAEA,OADAA,OAAAh0B,EAAAmsB,QAAArY,MAAA6O,OAAAqR,OACAA,MAAA5uB,OAAA,EAAA,OAGAoO,OAAAtH,OAAA,WAEA,MADAgW,OAAAoQ,wBAAA0B,OACA9R,MAAAkQ,kBAAA4B,WAGAvgB,IAAAc,GAAA,QAAA,oBAAA,SAAAT,OACA,GAAA6O,OAOA,OANA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACApP,OAAAtH,OAAA,WACA,MAAAgW,OAAAwP,gBAAAxP,MAAAwP,iBAEA/O,OAAAxO,KAAA,aAAAsG,SAAA,UACAyH,MAAAwP,gBACA/O,OAAAxO,KAAA,wBAAAoG,YAAA,UACAoI,OAAAxO,KAAA,wBAAAsG,SAAA,YAEAkI,OAAAxO,KAAA,wBAAAoG,YAAA,UACAoI,OAAAxO,KAAA,wBAAAoG,YAAA,aAGA/G,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,SAGA1H,WAAA,SAAAO,IAAA+G,QACA,GAAAmB,KAAAsY,YAAAC,cAWA,OAVAD,aAAAtuB,QAAA5C,IAAA,oBAAA,MACAkxB,cACAA,YAAAlrB,WAAAkrB,cAEAC,eAAAD,YAAA,0BAAAA,YAAA,GACAtY,KACAzJ,KAAAsI,OAAAtI,KACA+hB,YAAAA,YACAC,eAAAA,gBAEAjhB,SAAA0I,OAGAqH,SAAA,gBAAA,WACAlC,WAAAoQ,sBACAiD,aAAA,OACA/gB,SAAA,KACA/I,OAAA,EACAkJ,KAAAA,KACAN,SAAAC,aAIAzT,OAAA4T,UAAA,iBAAA,YAAA,aAAA,cAAA8d,uBAEAF,oBAAA,SAAA/P,WACA,GAAA3N,MAAAN,SAAA2R,YA6EA,OA5EA3R,UAAAiO,UAAAne,IAAA,8BAAA,GACA6hB,aAAA1D,UAAAne,IAAA,mCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAA0H,OACA,GAAA8P,YAAA5X,OAAAga,cAqEA,OApEAha,QAAA,SAAA4X,WAAAqC,MACA,GAAA1Y,KAAAyG,KAAAkS,iBAAAhN,WAsBA,OArBA,OAAA+M,OACAA,MAAA,GAEA/M,YAAA9T,OAAAlF,QAAAgM,eACAga,iBAAAhN,YAAA/d,QAAA,UAAA2Y,MAAAhQ,MAAA,GACAyJ,KACAvN,GAAA4jB,WAAA5jB,GACApD,KAAAgnB,WAAAhnB,KACAupB,aAAAC,OAAAxC,WAAAuC,cAAAE,OAAA,0BACA7wB,IAAAouB,WAAApuB,IACAmJ,KAAAhE,WAAAipB,WAAAjlB,MACA2nB,YAAA1C,WAAA0C,YACAC,aAAA3C,WAAAF,cACAwC,iBAAAA,kBAGAlS,KADAiS,KACAzP,aAAAjJ,KAEA1I,SAAA0I,KAEAlI,IAAA2O,KAAAA,MACA4P,WAAAF,eACAre,IAAAgH,SAAA,cACAhH,IAAAU,KAAA,kBAAA0O,KAAA,WAAA,IAFA,QAKAuR,eAAA,WAGA,MAFApC,YAAA0C,YAAAjhB,IAAAU,KAAA,6BAAAvP,MACAotB,WAAAF,cAAAre,IAAAU,KAAA,+BAAA0O,KAAA,WACArP,OAAAtH,OAAA,WACA,MAAAgW,OAAA0Q,iBAAAZ,YAAA7iB,KAAA,WACA,MAAAiL,QAAA4X,YAAA,QAIAve,IAAAc,GAAA,QAAA,kCAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAmgB,mBAEA3gB,IAAAc,GAAA,QAAA,0BAAA,SAAAT,OACA,MAAA,MAAAA,MAAAsI,QACAgY,iBACA,KAAAtgB,MAAAsI,QACAhC,OAAA4X,YAAA,GADA,SAIAve,IAAAc,GAAA,QAAA,kCAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAmG,OAAA4X,YAAA,KAEAve,IAAAc,GAAA,QAAA,uBAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAmG,OAAA4X,YAAA,GACAve,IAAAU,KAAA,6BAAA6L,QAAAwF,WAEA/R,IAAAc,GAAA,QAAA,yBAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAT,OAAAtH,OAAA,WACA,MAAAgW,OAAA+Q,iBAAAjB,gBAGAxe,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAoX,WAAAxe,OAAA/I,MAAA+P,OAAAoa,cACAxa,OAAA4X,WAAAA,WAAAE,mBACAF,WAAAE,kBACAze,IAAAU,KAAA,6BAAA6L,QAAAwF,SADA,SAKAjS,KAAAA,KACAyP,QAAA,iBACA5P,SAAA,OAIA3T,OAAA4T,UAAA,gBAAA,cAAA4d,uBAEAvqB,KAAA9G,MC/YA,WACA,GAAAi1B,WAAAp1B,MAEAA,QAAA8G,QAAA9G,OAAA,eAEAo1B,UAAA,SAAAruB,QACA,GAAA+M,KAWA,OAVA/M,QAAAhB,YACAsvB,OAAArtB,GAAA4C,MAAA,WACA,MAAAzK,MAAAyE,KAAA,WAGAkP,KAAA,SAAAC,OAAAC,KACA,MAAAjN,QAAAhB,UAAA,OACAiO,IAAApP,KAAA,QAAAmP,QAAAiH,SAAA,cAIAlH,KAAAA,OAIA9T,OAAA4T,UAAA,eAAA,YAAAwhB,aAEAnuB,KAAA9G,MCFA,WACA,GAAAm1B,qBAAAC,qBAAAC,0BAAAC,mBAAAC,sBAAAC,sBAAAC,6BAAAC,yBAAAC,4BAAAC,6BAAAC,0BAAAC,0BAAAC,4BAAAC,sBAAAC,0BAAAC,2BAAAC,qBAAAC,uBAAAC,kBAAA1tB,SAAA9I,OAAAE,KAEAA,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEA9I,OAAA8G,QAAA9G,OAAA,eAEAy1B,mBAAA,WACA,GAAA3hB,MAAA2iB,WAgBA,OAfAA,aAAA,SAAAziB,IAAA0iB,MAAAC,QACA,GAAAC,SAAAC,QAGA,OAFAA,UAAA9B,OAAA2B,OAAA1B,OAAA,eACA4B,QAAA7B,OAAA4B,QAAA3B,OAAA,eACAhhB,IAAA2O,KAAAkU,SAAA,IAAAD,UAEA9iB,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA2b,OAAAlrB,IAAAmrB,MAEA,OADAnrB,KAAAuP,OAAA+b,YAAAtxB,MAAA,KAAAkxB,MAAAlrB,IAAA,GAAAmrB,OAAAnrB,IAAA,GACA1C,SAAAiL,OAAA2iB,MAAA,SAAAK,UACA,MAAAjuB,UAAAiL,OAAA4iB,OAAA,SAAAK,WACA,MAAAP,aAAAziB,IAAA+iB,SAAAC,iBAKAljB,KAAAA,OAIA9T,OAAA4T,UAAA,cAAA6hB,oBAEAC,sBAAA,WACA,GAAA5hB,KA0BA,OAzBAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAkc,aAkBA,OAjBAA,cAAA,KACAjjB,IAAAkjB,OAAA,GAAAC,UACAC,MAAApjB,IAAA,GACAghB,OAAA,cACAqC,SAAA,WACA,MAAA,UAAAt2B,MACA,MAAAk2B,cAAAl2B,OAEAZ,MACAoe,OAAA,WACA,MAAA,YACA,MAAA,OAAA0Y,aACAjjB,IAAAkjB,OAAAI,QAAAL,cADA,SAIA92B,QAEA4T,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAA/gB,KACA,MAAA,OAAAA,IACA6O,IAAAkjB,OAAAI,QAAAnyB,KADA,WAMA2O,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,iBAAA8hB,uBAEAW,2BAAA,WACA,GAAAviB,MAAAyjB,cAyBA,OAxBAA,gBAAA,SAAAvjB,IAAAwjB,WAAAC,mBACA,MAAAzjB,KAAA8O,SAAA,qBACA9O,IAAAqO,IAAA,QAAAmV,WAAA,MAEAxjB,IAAAU,KAAA,qBAAA2N,IAAA,QAAAoV,kBAAA,KACAzjB,IAAAU,KAAA,WAAAiO,KAAA6U,WAAA,QAGA1jB,KAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAAgH,OAAA2c,oBAAA,SAAAC,QACA,GAAAC,cAAAJ,WAAAK,YAAAJ,iBAWA,OAVAG,cAAAD,OAAAG,cACAD,YAAAF,OAAAI,aACAP,WAAA,EACA,IAAAK,cACAL,WAAAr2B,KAAA62B,MAAA,KAAAJ,aAAAC,eAEAJ,kBAAA,EACA,IAAAI,cACAJ,kBAAAt2B,KAAA62B,MAAA,IAAAJ,aAAAC,eAEAN,eAAAvjB,IAAAwjB,WAAAC,uBAIA3jB,KAAAA,OAIA9T,OAAA4T,UAAA,sBAAAyiB,4BAEAb,0BAAA,SAAA/T,WACA,GAAA3N,MAAAN,QAyBA,OAxBAA,UAAAiO,UAAAne,IAAA,qCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAkBA,OAjBAA,QAAA,SAAAtJ,OACA,GAAAsR,MAAAsV,MAAAzsB,GASA,OARAysB,QAAA,OAAAzsB,IAAAuI,OAAAnF,WAAApD,IAAA6F,MAAA4mB,OAAA,UACA7Q,kBAAA,gBACAD,MAAA,uBAEAxE,KAAAnP,UACAykB,MAAAA,MACAl3B,KAAAg0B,OAAA1jB,MAAAyjB,cAAAE,OAAA,uBAEAhhB,IAAA2O,KAAAA,OAEA7Z,SAAAiL,OAAAgH,OAAAmL,QAAA,SAAA7U,OACA,MAAA,OAAAA,MACAsJ,OAAAtJ,OADA,SAIA0C,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,sBAAA,cAAA4hB,4BAEAgB,kBAAA,SAAArwB,WAAAzB,SAAA6R,MAAA2hB,QAAAzW,WACA,GAAA3N,MAAAN,QAiHA,OAhHAA,UAAAiO,UAAAne,IAAA,mCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA2hB,eAAAC,WAAAC,eAAA3S,IA0GA,OAzGA0S,YAAA,WACA,GAAA5sB,KAAA8sB,IACA,OAAA,MAAA,OAAA9sB,IAAAuI,OAAAlF,UAAA,OAAAypB,KAAA9sB,IAAAqP,gBAAAyd,KAAAxuB,QAAAiR,OAAAwd,cAAA,SAEA7S,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAsb,UACA,GAAAzuB,MAAAoF,OAaA,OAZApF,MAAAyM,OAAAmP,YAAAjT,QACA3I,KAAAyuB,SAAAA,SACAhiB,OAAAiiB,cAAA1uB,MACAoF,QAAAoH,MAAAmP,KAAAlP,OAAAmP,aACAxW,QAAAO,KAAA,WAMA,MALAhL,UAAAI,OAAA,WACA0zB,SAAAj4B,EAAAC,IAAAg4B,SAAA,SAAAE,WACA,MAAA3kB,QAAAnF,UAAA8pB,aAEAL,eAAAG,UACAryB,WAAA2L,WAAA,oBAEA3C,QAAAO,KAAA,KAAA,WACA,MAAA8G,QAAAmP,YAAA4N,aAGApzB,OACAg4B,cAAAD,QAAAhb,QAAA,WACA,MAAA,UAAAyb,YACA,GAAA5uB,MAAAoF,OAcA,OAbApF,MAAAyM,OAAAmP,YAAAjT,QACA3I,KAAAyuB,SAAAG,WACAniB,OAAAiiB,cAAA1uB,MACAoF,QAAAoH,MAAAmP,KAAAlP,OAAAmP,aACAxW,QAAAO,KAAA,WACA,GAAA8oB,SAMA,OALA9zB,UAAAI,OAAA,WACA0zB,SAAAj4B,EAAAC,IAAAuJ,KAAAyuB,SAAA,SAAAE,WACA,MAAA3kB,QAAAnF,UAAA8pB,aAEAL,eAAAG,UACAryB,WAAA2L,WAAA,oBAEA3C,QAAAO,KAAA,KAAA,WAEA,MADA3F,MAAAwpB,SACA7uB,SAAAI,OAAA,aAGA3E,OACAk4B,eAAA,SAAAG,UACA,GAAAtc,KAAAyG,IAOA,OANAzG,MACAsc,SAAAA,SACAJ,WAAAA,cAEAzV,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,MACAyV,cAAA,IAAAI,SAAA7yB,QACAqO,IAAAU,KAAA,UAAA5I,KAAA,gBACAkI,IAAAU,KAAA,oBAAAsG,SAAA,gBAFA,QAKAhH,IAAAc,GAAA,QAAA,eAAA,SAAAT,OACA,GAAAwK,SAAAqE,OAAA8C,MAAA0S,SAEA,OADArkB,OAAAG,iBACA4jB,cAGAlV,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAuV,UAAAxV,OAAAte,KAAA,cACAohB,MAAA,iBACAnH,QAAA9K,OAAAnF,UAAA8pB,WAAAtR,kBACA1iB,SAAAuhB,YAAAD,MAAAnH,SAAAnP,KAAA,WACA,MAAA,UAAA2Q,QACA,GAAAsY,WAIA,OAHAtY,UACAsY,WAAAp4B,EAAAmS,MAAA8D,OAAAmP,YAAA6S,UAAA,GACAG,WAAAp4B,EAAAq4B,KAAAD,WAAAD,WACAP,cAAAQ,cAEAx4B,QAfA,SAiBA6T,IAAAc,GAAA,QAAA,eAAA,SAAAT,OAEA,MADAA,OAAAG,iBACA4jB,aAGArkB,OAAAtH,OAAA,WACA,MAAAtG,YAAA2L,WAAA,cAAA0E,OAAAmP,eAJA,SAOA5R,OAAAmH,IAAA,gBAAA,SAAAgB,IAAAwc,WACA,GAAAF,SAIA,OAHAA,UAAAj4B,EAAAmS,MAAA8D,OAAAmP,YAAA6S,UAAA,GACAA,SAAA/zB,KAAAi0B,WACAF,SAAAj4B,EAAAwO,KAAAypB,UACA9S,KAAA8S,YAEAzkB,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAnc,MACA,GAAAyuB,SACA,IAAA,MAAAzuB,KAMA,MAHAyuB,UAAAj4B,EAAAC,IAAAuJ,KAAAyuB,SAAA,SAAAE,WACA,MAAA3kB,QAAAnF,UAAA8pB,aAEAL,eAAAG,YAEAzkB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,cAAA,aAAA,aAAA,UAAA,YAAA,cAAA4iB,oBAEAlB,oBAAA,SAAAnvB,WAAAzB,SAAA6R,MAAAyJ,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QA4EA,OA3EAA,UAAAiO,UAAAne,IAAA,sCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAAS,iBAAAnT,IAqEA,OApEA0S,YAAA,WACA,GAAA5sB,KAAA8sB,IACA,OAAA,MAAA,OAAA9sB,IAAAuI,OAAAlF,UAAA,OAAAypB,KAAA9sB,IAAAqP,gBAAAyd,KAAAxuB,QAAAiR,OAAAwd,cAAA,SAEA7S,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAqK,QACA,GAAApY,QAeA,OAdAqH,QAAAmP,YAAAU,YAAAkB,OACAvH,SAAAE,MAAAlM,KACA7E,QAAAoH,MAAAmP,KAAAlP,OAAAmP,aACAxW,QAAAO,KAAA,WAIA,MAHAsQ,UAAAK,OAAArM,KACAtP,SAAAI,OAAA,WACA+zB,iBAAAriB,OAAAmP,aACAxf,WAAA2L,WAAA,oBAEA3C,QAAAO,KAAA,KAAA,WAGA,MAFA8G,QAAAmP,YAAA4N,SACA7uB,SAAAI,OAAA,SACAkb,SAAAK,OAAArM,OAEA7E,UAEAhP,OACA04B,iBAAA,SAAAC,OACA,GAAAC,YAAAC,aAAA9c,IAAAyG,IAQA,OAPAqW,cAAA,MAAAF,MAAAA,MAAAzS,YAAA,OACA0S,WAAA,MAAAC,aAAAjlB,OAAAnF,UAAAoqB,cAAA,KACA9c,KACA6c,WAAAA,WACAX,WAAAA,cAEAzV,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,OAEA3O,IAAAc,GAAA,QAAA,iBAAA,SAAAT,OAEA,MADAA,OAAAG,iBACA4jB,aAGArkB,OAAAtH,OAAA,WACA,MAAAtG,YAAA2L,WAAA,kBAAA0E,OAAAmP,eAJA,SAOA3R,IAAAc,GAAA,QAAA,eAAA,SAAAT,OACA,GAAA2R,MAEA,OADA3R,OAAAG,iBACA4jB,cAGApS,MAAA,gDACAthB,SAAAu0B,IAAAjT,OAAAtW,KAAA,WACA,MAAA,UAAA2Q,QAGA,MAFAA,UACA7J,OAAAmP,YAAAU,YAAA,KACAX,KAAA,QAEAvlB,QAVA,SAYA4T,OAAAmH,IAAA,oBAAA,SAAAgB,IAAAqL,OAAAxd,MACA,MAAAA,MAAA4E,KAAA6H,OAAAmP,YAAAhX,GAGA+W,KAAA6B,QAHA,SAKAxT,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAgT,UACA,MAAAL,kBAAAK,YAEAnlB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,gBAAA,aAAA,aAAA,UAAA,aAAA,YAAA,cAAA0hB,sBAEAC,qBAAA,SAAApvB,WAAA6Z,SAAAyB,WACA,GAAA3N,MAAAN,QAuCA,OAtCAA,UAAAiO,UAAAne,IAAA,uCACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,WAgCA,OA/BAA,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,cAEAiK,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAnc,MACA,MAAAA,OAGAquB,cACApkB,IAAAU,KAAA,eAAAsG,SAAA,YAEAjR,KAAAovB,YACAnlB,IAAAU,KAAA,eAAA4N,OACAtO,IAAAU,KAAA,iBAAAqO,SAEA/O,IAAAU,KAAA,eAAAqO,OACA/O,IAAAU,KAAA,iBAAA4N,SAXA,SAcAtO,IAAAc,GAAA,QAAA,cAAA,SAAAT,OAEA,MADAA,OAAAG,iBACArO,WAAA2L,WAAA,QAAA0E,OAAAmP,eAEA3R,IAAAc,GAAA,QAAA,gBAAA,SAAAT,OACA,GAAAgM,OAMA,OALAhM,OAAAG,iBACAwL,SAAAE,MAAAlM,IAAAU,KAAA,kBACA2L,OAAA,WACA,MAAAL,UAAAK,OAAArM,IAAAU,KAAA,mBAEAvO,WAAA2L,WAAA,UAAA0E,OAAAmP,YAAAtF,UAEAtM,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,UACA/P,SAAAA,WAIAxT,OAAA4T,UAAA,iBAAA,aAAA,aAAA,cAAA2hB,uBAEAI,sBAAA,SAAA3vB,KAAAuQ,MAAA7R,SAAAjB,UAAAge,WACA,GAAA3N,MAAAN,QAkCA,OAjCAA,UAAAiO,UAAAne,IAAA,wCACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,MAAAuE,QAAAqe,gBAGAre,OAAAse,eAGArlB,IAAAc,GAAA,QAAA,UAAA,WACA,GAAAwkB,UAAAtT,KAGA,OAFAA,OAAAjS,OAAA/I,MAAA+P,OAAAse,eACAC,SAAA9iB,OAAAmP,YAAAF,QACA/gB,SAAAuhB,YAAAD,MAAAsT,UAAA5pB,KAAA,WACA,MAAA,UAAA2Q,QACA,GAAAlR,QAQA,OAPAA,SAAAoH,MAAApE,OAAAqE,OAAAmP,aACAxW,QAAAO,KAAA,WACA,GAAAvL,IAGA,OAFAkc,UACAlc,IAAA4P,OAAA/I,MAAA+P,OAAAqe,iBACA31B,UAAAQ,KAAAE,OAEAgL,QAAAO,KAAA,KAAA,WAEA,MADA2Q,SAAA,GACA3b,SAAAI,OAAA,aAGA3E,SAEA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,SAxBAnV,KAAAgR,MAAA,gEAHAhR,KAAAgR,MAAA,sEA+BAlD,KAAAA,KACAH,SAAA,KACA4P,QAAA,UACA/P,SAAAA,WAIAxT,OAAA4T,UAAA,kBAAA,OAAA,UAAA,aAAA,cAAA,cAAA+hB,wBAEAE,yBAAA,SAAA1vB,WAAAoQ,MAAA7R,SAAAsb,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QAuEA,OAtEAA,UAAAiO,UAAAne,IAAA,2CACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAA1S,IAgEA,OA/DA0S,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAAiR,OAAAwd,eAEA7S,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAuI,SACA,GAAAtW,QAgBA,OAfAqH,QAAAmP,YAAAF,QAAAA,QACAzF,SAAAE,MAAAlM,IAAAU,KAAA,oBACAvF,QAAAoH,MAAAmP,KAAAlP,OAAAmP,aACAxW,QAAAO,KAAA,WAIA,MAHAhL,UAAAI,OAAA,WACAqB,WAAA2L,WAAA,kBACAkC,IAAAU,KAAA,iBAAA4N,OACAtO,IAAAU,KAAA,iBAAAqO;GAEA5T,QAAAO,KAAA,KAAA,WACA,MAAAhL,UAAAI,OAAA,WAEAqK,QAAA,WAAA,WACA,MAAA6Q,UAAAK,OAAArM,IAAAU,KAAA,sBAEAvF,UAEAhP,OACA6T,IAAAulB,MAAA,WACA,MAAAnB,eAGApkB,IAAAU,KAAA,iBAAAqO,OACA/O,IAAAU,KAAA,iBAAA4N,OACAtO,IAAAU,KAAA,SAAA6L,SALA,SAOAvM,IAAAc,GAAA,QAAA,QAAA,WACA,GAAA2Q,QAEA,OADAA,SAAA1R,OAAAhK,KAAA0b,QACAC,KAAAD,WAEAzR,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,GAAAoR,QACA,OAAA,MAAApR,MAAAsI,SACA8I,QAAA1R,OAAAhK,KAAA0b,QACAC,KAAAD,UACA,KAAApR,MAAAsI,SACA5I,OAAAtH,OAAA,WACA,MAAA,YACA,MAAA+J,QAAAmP,YAAA4N,WAEApzB,OACA6T,IAAAU,KAAA,oBAAA4N,OACAtO,IAAAU,KAAA,oBAAAqO,QAPA,SAUA/O,IAAAU,KAAA,oBAAA4N,OACAtO,IAAAU,KAAA,8BAAA4N,OACAvO,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAxb,OACA,MAAAA,QAGAqJ,OAAAhK,KAAAW,MACA0tB,aAAA,OACApkB,IAAAU,KAAA,uBAAAvC,UALA,SAQA4B,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,UACA/P,SAAAA,WAIAxT,OAAA4T,UAAA,qBAAA,aAAA,UAAA,aAAA,aAAA,YAAA,cAAAiiB,2BAEAD,6BAAA,SAAAzvB,WAAAoQ,MAAA7R,SAAA8c,SAAAxB,SAAAwZ,cAAAtB,QAAAzW,WACA,GAAA3N,MAAA2lB,yBAAAC,yBAAAlmB,QAiFA,OAhFAA,UAAAiO,UAAAne,IAAA,+CACAm2B,yBAAAhY,UAAAne,IAAA,6DACAo2B,yBAAAjY,UAAAne,IAAA,6DACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAA1S,IAwEA,OAvEA1R,KAAAU,KAAA,qBAAA4N,OACAtO,IAAAU,KAAA,2BAAA4N,OACA8V,WAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAAiR,OAAAwd,eAEA7S,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAA+X,aACA,GAAA9lB,QAaA,OAZAqH,QAAAmP,YAAAsP,YAAAA,YACAjV,SAAAE,MAAAlM,IAAAU,KAAA,oBACAvF,QAAAoH,MAAAmP,KAAAlP,OAAAmP,aACAxW,QAAAO,KAAA,WAIA,MAHAhL,UAAAI,OAAA,WACAqB,WAAA2L,WAAA,kBACAkC,IAAAU,KAAA,qBAAA4N,OACAtO,IAAAU,KAAA,qBAAAqO,SAEA5T,QAAAO,KAAA,KAAA,WACA,MAAAhL,UAAAI,OAAA,WAEAqK,QAAA,WAAA,WACA,MAAA6Q,UAAAK,OAAArM,IAAAU,KAAA,wBAGAvU,OACA6T,IAAAc,GAAA,UAAA,oBAAA,SAAAT,OACA,GAAA6O,OAEA,OADAA,QAAApc,QAAA6E,QAAA0I,MAAA6O,SACAkV,cAGAlV,OAAAjB,GAAA,MAGAuX,cAAAl2B,MAAAqC,OANA,QASAqO,IAAAU,KAAA,qBAAAqO,OACA/O,IAAAU,KAAA,qBAAA4N,OACAtO,IAAAU,KAAA,YAAA6L,WAEAvM,IAAAc,GAAA,QAAA,QAAA,SAAApG,GACA,GAAAumB,YAGA,OAFAvmB,GAAA8F,iBACAygB,YAAAlhB,OAAAhK,KAAAkrB,YACAvP,KAAAuP,eAEAjhB,IAAAc,GAAA,UAAA,WAAA,SAAAT,OACA,MAAA,MAAAA,MAAAsI,SACA5I,OAAAtH,OAAA,WACA,MAAA,YACA,MAAAsH,QAAAhK,KAAAwpB,WAEApzB,OACA6T,IAAAU,KAAA,qBAAA4N,OACAtO,IAAAU,KAAA,qBAAAqO,QAPA,SAUAhP,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAxb,OACA,MAAAA,QAGAqJ,OAAAhK,KAAAW,MACA0tB,cACApkB,IAAAU,KAAA,2BAAAqO,OACA/O,IAAAU,KAAA,iCAAAsG,SAAA,YACAjH,OAAA4lB,iBAAAF,0BAEA1lB,OAAA4lB,iBAAAD,0BATA,SAYA3lB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,UACA/P,SAAAA,WAIAxT,OAAA4T,UAAA,yBAAA,aAAA,UAAA,aAAA,WAAA,aAAA,gBAAA,YAAA,cAAAgiB,+BAEAG,6BAAA,WACA,GAAAjiB,KAQA,OAPAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA+d,MAEA,OADAA,OAAA/kB,OAAA/I,MAAA+P,OAAA6e,uBACA9wB,SAAAiL,OAAA,kBAAA,SAAA2Z,iBACA,MAAA1Z,KAAA2O,KAAA+K,gBAAAoL,MAAA/0B,QAAAwH,UAIAuI,KAAAA,OAIAoiB,4BAAA,WACA,GAAApiB,KAQA,OAPAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAyK,KAEA,OADAA,MAAAzR,OAAA/I,MAAA+P,OAAA8e,sBACA/wB,SAAAiL,OAAA,iBAAA,SAAA6Z,gBACA,MAAA5Z,KAAA2O,KAAAiL,eAAApI,KAAAzhB,QAAAwH,UAIAuI,KAAAA,OAIAsiB,0BAAA,WACA,GAAAtiB,KAQA,OAPAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAyL,GAEA,OADAA,IAAAzS,OAAA/I,MAAA+P,OAAA+e,oBACAhxB,SAAAiL,OAAA,eAAA,SAAAka,cACA,MAAAja,KAAA2O,KAAAsL,aAAAzH,GAAAziB,QAAAwH,UAIAuI,KAAAA,OAIAgiB,4BAAA,SAAArU,WACA,GAAA3N,MAAAN,QAkBA,OAjBAA,UAAAiO,UAAAne,IAAA,uDAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAA,cAAA,SAAAia,aACA,GAAA9R,KAAAnS,KAAAkd,MAWA,OAVAld,MAAAgK,OAAA/I,MAAA+P,OAAAgf,sBACA7d,KACA3Q,KAAA,aACA2b,OAAA,uBAEAD,OAAA+G,YAAAjkB,KAAAsc,aACAY,SACA/K,IAAAgL,OAAAD,OAAAE,MACAjL,IAAA3Q,KAAA0b,OAAA+S,WAEAhmB,IAAA2O,KAAAnP,SAAA0I,UAIApI,KAAAA,OAIA9T,OAAA4T,UAAA,wBAAA,cAAAkiB,8BAEAE,0BAAA,WACA,GAAAliB,KAmBA,OAlBAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAaA,OAZAA,QAAA,SAAAoT,aAAA+K,OACA,GAAAmB,SAAAC,QAIA,OAHAA,UAAAnM,aAAA+K,MAAAoB,UACAD,QAAAjmB,IAAAU,KAAA,UACAulB,QAAA5X,IAAA,mBAAA6X,SAAAC,OACAF,QAAApvB,KAAA,QAAAqvB,SAAA3uB,OAEAzC,SAAAiL,OAAA,eAAA,SAAAga,cACA,GAAA+K,MAEA,OADAA,OAAA/kB,OAAA/I,MAAA+P,OAAAqf,oBACAzf,OAAAoT,aAAA+K,SAEA/kB,OAAA9I,OAAA8P,OAAAqf,mBAAA,SAAAtB,OACA,MAAAne,QAAA5G,OAAAga,aAAA+K,WAIAhlB,KAAAA,KACA5R,YAAA,iCAIAlC,OAAA4T,UAAA,qBAAAoiB,2BAEAC,0BAAA,WACA,GAAAniB,KAmBA,OAlBAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAaA,OAZAA,QAAA,SAAAmT,aAAAgL,OACA,GAAAmB,SAAAI,QAIA,OAHAA,UAAAvM,aAAAgL,MAAAuB,UACAJ,QAAAjmB,IAAAU,KAAA,UACAulB,QAAA5X,IAAA,mBAAAgY,SAAAF,OACAF,QAAApvB,KAAA,QAAAwvB,SAAA9uB,OAEAzC,SAAAiL,OAAA,eAAA,SAAA+Z,cACA,GAAAgL,MAEA,OADAA,OAAA/kB,OAAA/I,MAAA+P,OAAAuf,oBACA3f,OAAAmT,aAAAgL,SAEA/kB,OAAA9I,OAAA8P,OAAAuf,mBAAA,SAAAxB,OACA,MAAAne,QAAA5G,OAAA+Z,aAAAgL,WAIAhlB,KAAAA,KACA5R,YAAA,iCAIAi0B,sBAAA,WACA,GAAAriB,KAmBA,OAlBAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAaA,OAZAA,QAAA,SAAA4f,cAAAzB,OACA,GAAAmB,SAAAxnB,IAIA,OAHAA,MAAA8nB,cAAAzB,MAAArmB,MACAwnB,QAAAjmB,IAAAU,KAAA,UACAulB,QAAA5X,IAAA,mBAAA5P,KAAA0nB,OACAF,QAAApvB,KAAA,QAAA4H,KAAAlH,OAEAzC,SAAAiL,OAAA,gBAAA,SAAAwmB,eACA,GAAAzB,MAEA,OADAA,OAAA/kB,OAAA/I,MAAA+P,OAAAyf,gBACA7f,OAAA4f,cAAAzB,SAEA/kB,OAAA9I,OAAA8P,OAAAyf,eAAA,SAAA1B,OACA,MAAAne,QAAA5G,OAAAwmB,cAAAzB,WAIAhlB,KAAAA,KACA5R,YAAA,iCAIAq0B,uBAAA,SAAA9U,WACA,GAAA3N,MAAA6G,OAAAnH,QAmBA,OAlBAA,UAAAiO,UAAAne,IAAA,uCAAA,GACAqX,OAAA,SAAA8f,GAAAjD,YACA,MAAAiD,IAAA9X,KAAAnP,UACAgkB,WAAAA,eAGA1jB,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAApP,QAOA,OANAA,SAAA7E,QAAA6E,QAAAqI,KACAD,OAAA9I,OAAA8P,OAAA2f,cAAA,SAAAlD,YAGA,MAFAA,YAAAj3B,EAAAo6B,KAAA,EAAAnD,aACAA,WAAAj3B,EAAAq6B,KAAA,IAAApD,aACA7c,OAAA3G,IAAAwjB,cAEAzjB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,iBAAA,cAAA2iB,yBAEAD,qBAAA,SAAA7U,WACA,GAAA3N,MAAA6G,OAAAnH,QAyBA,OAxBAA,UAAAiO,UAAAne,IAAA,qCAAA,GACAqX,OAAA,SAAA8f,GAAAI,YAAA9W,aACA,MAAA0W,IAAA9X,KAAAnP,UACAqnB,YAAAA,YACA9W,YAAAA,gBAGAjQ,KAAA,SAAAC,OAAAC,KACA,GAAArI,QAYA,OAXAA,SAAA7E,QAAA6E,QAAAqI,KACAD,OAAA9I,OAAA,UAAA,SAAA4D,SACA,MAAAA,SACA8L,OAAA3G,IAAAnF,QAAAtD,KAAAwI,OAAAgQ,aADA,SAIAhQ,OAAAmH,IAAA,iBAAA,WACA,MAAA,UAAAgB,IAAArN,SACA,MAAA8L,QAAA3G,IAAAnF,QAAAtD,KAAAwI,OAAAgQ,eAEA5jB,OACA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,eAAA,cAAA0iB,uBAEAt2B,OAAA4T,UAAA,iBAAAuiB,uBAEAn2B,OAAA4T,UAAA,wBAAAmiB,8BAEA/1B,OAAA4T,UAAA,qBAAAqiB,2BAEAj2B,OAAA4T,UAAA,uBAAAsiB,6BAEAl2B,OAAA4T,UAAA,qBAAAwiB,4BAEAnvB,KAAA9G,MC9zBA,WACA,GAAA26B,gBAAAC,iBAAAlyB,YAAAE,cAAAC,SAAAhJ,OAAAE,MAAAuJ,QACApC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAuJ,QAAAtJ,KAAAD,MAAAuJ,QAEAV,cAAA5I,KAAAD,MAAA6I,cAEAC,SAAA7I,KAAAD,MAAA8I,SAEAH,YAAA1I,KAAAD,MAAA2I,YAEAkyB,kBACA1lB,SACA2Q,MAAA,mBACAnH,QAAA,6CAEA7H,OACAgP,MAAA,8BACAnH,QAAA,2DAEAmc,eACAhV,MAAA,8BACAnH,QAAA,4DAIAic,eAAA,SAAA1yB,YAKA,QAAA0yB,gBAAAryB,EAAAwyB,gBAAAC,SACA/6B,KAAAsI,EAAAA,EACAtI,KAAA86B,gBAAAA,gBACA96B,KAAA+6B,QAAAA,QACAryB,YAAA1I,MA0OA,MAlPAkH,QAAAyzB,eAAA1yB,YAEA0yB,eAAAtpB,SAAA,KAAA,kBAAA,cASAspB,eAAAlzB,UAAA0a,KAAA,SAAAmY,IACA,MAAAA,KACAt6B,KAAA86B,gBAAAtc,MAAA8b,IACAA,GAAAtf,IAAA,oBAFA,QAMA2f,eAAAlzB,UAAAqxB,IAAA,SAAAjT,MAAAsT,SAAAza,QAAAsc,kBACA,GAAA5N,SAAAkN,EAkCA,OAjCA,OAAAU,mBACAA,iBAAA,yBAEAV,GAAA3zB,QAAA6E,QAAAwvB,kBACAV,GAAA/lB,KAAA,YAAAiO,KAAAqD,OACAyU,GAAA/lB,KAAA,iBAAAiO,KAAA2W,UACAmB,GAAA/lB,KAAA,gBAAAiO,KAAA9D,SACA0O,QAAAptB,KAAAsI,EAAA+D,QACAiuB,GAAA3lB,GAAA,uBAAA,iBAAA9L,SAAA,IAAA,SAAA2G,OACA,MAAA,UAAA0E,OACA,GAAA6O,OAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAxT,MAAAurB,QAAAhb,MAAAgD,QACAqK,QAAAprB,QAAA,SAAAi5B,IAKA,MAJA,OAAAA,KACAA,IAAA,GAEAzrB,MAAAurB,QAAA7a,OAAA6C,QACAkY,GACAzrB,MAAA2S,KAAAmY,IADA,WAKAt6B,QACAs6B,GAAA3lB,GAAA,uBAAA,eAAA,SAAAnF,OACA,MAAA,UAAA0E,OAGA,MAFAA,OAAAG,iBACA+Y,QAAAlpB,SACAsL,MAAA2S,KAAAmY,MAEAt6B,OACAA,KAAA86B,gBAAA3a,KAAAma,IACAlN,QAAApe,SAGA2rB,eAAAlzB,UAAAqe,YAAA,SAAAD,MAAAnH,SACA,MAAA1e,MAAA84B,IAAAjT,MAAA,mCAAAnH,UAGAic,eAAAlzB,UAAAyzB,UAAA,SAAArV,MAAAsT,SAAAgC,QAAAC,YAAAC,QAAAL,kBACA,GAAAM,cAAAlO,QAAAkN,EA8CA,OA7CA,OAAAU,mBACAA,iBAAA,wBAEAV,GAAA3zB,QAAA6E,QAAAwvB,kBACAV,GAAA/lB,KAAA,UAAAiO,KAAAqD,OACAyU,GAAA/lB,KAAA,aAAAiO,KAAA2W,UACAiC,YACAd,GAAA/lB,KAAA,gBAAAiO,KAAA4Y,aAEAd,GAAA/lB,KAAA,gBAAAvC,SAEAqpB,QACAf,GAAA/lB,KAAA,YAAAiO,KAAA6Y,SAEAf,GAAA/lB,KAAA,YAAAvC,SAEAspB,aAAAhB,GAAA/lB,KAAA,YACA+mB,aAAA9Y,KAAA,IACApiB,EAAAqc,KAAA0e,QAAA,SAAA5wB,MAAAhD,KACA,MAAA+zB,cAAAC,OAAA50B,QAAA6E,QAAA,kBAAAjE,IAAA,KAAAgD,MAAA,gBAEA6iB,QAAAptB,KAAAsI,EAAA+D,QACAiuB,GAAA3lB,GAAA,uBAAA,iBAAA9L,SAAA,IAAA,SAAA2G,OACA,MAAA,UAAA0E,OACA,GAAA6O,OAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAxT,MAAAurB,QAAAhb,MAAAgD,QACAqK,QAAAprB,SACAw5B,SAAAF,aAAAt2B,MACAkb,OAAA,WAEA,MADA1Q,OAAAurB,QAAA7a,OAAA6C,QACAvT,MAAA2S,KAAAmY,SAIAt6B,QACAs6B,GAAA3lB,GAAA,uBAAA,eAAA,SAAAnF,OACA,MAAA,UAAA0E,OAGA,MAFAA,OAAAG,iBACA+Y,QAAAlpB,SACAsL,MAAA2S,KAAAmY,MAEAt6B,OACAA,KAAA86B,gBAAA3a,KAAAma,IACAlN,QAAApe,SAGA2rB,eAAAlzB,UAAAoP,MAAA,SAAA6H,SACA,GAAA0O,SAAAkN,EAmBA,OAlBAA,IAAA3zB,QAAA6E,QAAA,2BACA8uB,GAAA/lB,KAAA,YAAAiO,KAAA9D,SACA0O,QAAAptB,KAAAsI,EAAA+D,QACAiuB,GAAA3lB,GAAA,uBAAA,iBAAA,SAAAnF,OACA,MAAA,UAAA0E,OAGA,MAFAA,OAAAG,iBACA+Y,QAAAprB,UACAwN,MAAA2S,KAAAmY,MAEAt6B,OACAs6B,GAAA3lB,GAAA,uBAAA,UAAA,SAAAnF,OACA,MAAA,UAAA0E,OAGA,MAFAA,OAAAG,iBACA+Y,QAAAprB,UACAwN,MAAA2S,KAAAmY,MAEAt6B,OACAA,KAAA86B,gBAAA3a,KAAAma,IACAlN,QAAApe,SAGA2rB,eAAAlzB,UAAAyN,QAAA,SAAA2Q,MAAAnH,SACA,GAAA0O,SAAAkN,EAwBA,OAvBAA,IAAA3zB,QAAA6E,QAAA,6BACAqa,OACAyU,GAAA/lB,KAAA,YAAAiO,KAAAqD,OAEAnH,SACA4b,GAAA/lB,KAAA,aAAAiO,KAAA9D,SAEA0O,QAAAptB,KAAAsI,EAAA+D,QACAiuB,GAAA3lB,GAAA,uBAAA,iBAAA,SAAAnF,OACA,MAAA,UAAA0E,OAGA,MAFAA,OAAAG,iBACA+Y,QAAAprB,UACAwN,MAAA2S,KAAAmY,MAEAt6B,OACAs6B,GAAA3lB,GAAA,uBAAA,UAAA,SAAAnF,OACA,MAAA,UAAA0E,OAGA,MAFAA,OAAAG,iBACA+Y,QAAAprB,UACAwN,MAAA2S,KAAAmY,MAEAt6B,OACAA,KAAA86B,gBAAA3a,KAAAma,IACAlN,QAAApe,SAGA2rB,eAAAlzB,UAAAxF,OAAA,SAAA4jB,MAAAnH,SACA,GAAA4b,GAQA,OAPAA,IAAA3zB,QAAA6E,QAAA,6BACAqa,OACAyU,GAAA/lB,KAAA,YAAAiO,KAAAqD,OAEAnH,SACA4b,GAAA/lB,KAAA,aAAAiO,KAAA9D,UAGAqB,MAAA,SAAAvQ,OACA,MAAA,YACA,MAAAA,OAAAsrB,gBAAA3a,KAAAma,MAEAt6B,MACAy7B,KAAA,SAAAjsB,OACA,MAAA,YACA,MAAAA,OAAAsrB,gBAAAtc,MAAA8b,MAEAt6B,MACAyZ,OAAA,WACA,MAAA,UAAA7V,OAAAiiB,MAAAnH,QAAAgd,SAOA,MANA7V,QACAyU,GAAA/lB,KAAA,YAAAiO,KAAAqD,OAEAnH,SACA4b,GAAA/lB,KAAA,aAAAiO,KAAA9D,SAEAgd,SACApB,GAAA/lB,KAAA,SAAAsG,SAAA,UACAyf,GAAA/lB,KAAA,yBAAAoG,YAAA,UACA2f,GAAA/lB,KAAA,gCAAAtP,MAAAy2B,QAAA,KACApB,GAAA/lB,KAAA,gCAAAiO,KAAAkZ,QAAA,KAAAxZ,IAAA,OAAAwZ,QAAA,EAAA,OAEApB,GAAA/lB,KAAA,SAAAoG,YAAA,UACA2f,GAAA/lB,KAAA,yBAAAsG,SAAA,aAGA7a,QAIA26B,eAAAlzB,UAAA9C,OAAA,SAAA2N,KAAAoM,QAAAmH,MAAA8V,MACA,GAAA1Z,MAAAqY,GAAAsB,QAGA,OAFAA,UAAA,yBAAAtpB,KACAgoB,GAAA3zB,QAAA6E,QAAAowB,UACAtB,GAAA3X,SAAA,UAAA,QAIA2X,GAAA/lB,KAAA,MAAAiO,KADAqD,MACAA,MAEA+U,iBAAAtoB,MAAAuT,OAGAyU,GAAA/lB,KAAA,KAAAiO,KADA9D,QACAA,QAEAkc,iBAAAtoB,MAAAoM,SAEAuD,KAAAtb,QAAA6E,QAAA,QACAyW,KAAA1N,KAAA,6CAAAoG,YAAA,UAAAE,SAAA,YACAoH,KAAA1N,KAAAqnB,UAAAjhB,YAAA,YAAAE,SAAA,UACA7a,KAAA67B,MACAjzB,cAAA5I,KAAA67B,MAEAF,OACAA,KAAA,UAAArpB,MAAA,gBAAAA,KAAA,KAAA,MAEAtS,KAAA67B,KAAAvyB,QAAAqyB,KAAA,SAAAnsB,OACA,MAAA,YAEA,MADAyS,MAAA1N,KAAAqnB,UAAAjhB,YAAA,UAAAE,SAAA,kBACArL,OAAAqsB,OAEA77B,OACAs6B,GAAA3lB,GAAA,QAAA,eAAA,WACA,MAAA,YACA,MAAAsN,MAAA1N,KAAAqnB,UAAAjhB,YAAA,UAAAE,SAAA,cAEA7a,SAGA26B,gBAEA56B,MAAAyI,SAEA3I,OAAA8G,QAAA9G,OAAA,eAEAA,OAAAsT,QAAA,aAAAwnB,iBAEA7zB,KAAA9G,MCzRA,WACA,GAAA87B,+BAAAC,iCAAAC,gCAAAtzB,YAAAC,SAAAE,SAAA3I,aAAAL,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEA2I,YAAA1I,KAAAD,MAAA2I,YAEAC,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEA3I,aAAAH,MAAAG,aAEAL,OAAA8G,QAAA9G,OAAA,eAEAk8B,iCAAA,SAAA9zB,YAKA,QAAA8zB,kCAAAtxB,MAAAuG,UAAA4b,KAAA1d,GAAAsiB,QAAAlpB,GACAtI,KAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAwxB,QAAAA,QACAxxB,KAAAsI,EAAAA,EACAI,YAAA1I,MACAA,KAAAsS,KAAA,KACAtS,KAAAyxB,SAAA,KACAzxB,KAAAqP,UAAA,KACArP,KAAAi8B,oBACAj8B,KAAAk8B,uBAAA,KAkDA,MAlEAh1B,QAAA60B,iCAAA9zB,YAEA8zB,iCAAA1qB,SAAA,SAAA,aAAA,UAAA,eAAA,aAAA,MAiBA0qB,iCAAAt0B,UAAArB,WAAA,SAAAkM,KAAAmf,UAIA,MAHAzxB,MAAA0O,QAAA1O,KAAAyK,MAAAiE,QACA1O,KAAAsS,KAAAA,KACAtS,KAAAyxB,SAAAA,SACAzxB,KAAAqP,UAAArP,KAAAyK,MAAA4E,WAGA0sB,iCAAAt0B,UAAA00B,2BAAA,WACA,MAAAn8B,MAAAyxB,SAGAzxB,KAAAkP,GAAAgtB,uBAAAl8B,KAAAsS,MAAAnP,IAAAnD,KAAAyxB,UAAAliB,KAAA,SAAAC,OACA,MAAA,UAAA0sB,wBAGA,MAFA1sB,OAAAysB,iBAAAzsB,MAAAd,QAAAc,MAAA8C,KAAA,sBACA9C,MAAA0sB,uBAAAA,uBACAA,yBAEAl8B,OARAA,KAAAk8B,wBAWAH,iCAAAt0B,UAAA20B,kBAAA,SAAAC,WACA,GAAAC,eAGA,OAFAA,gBAAAl8B,EAAAmS,MAAA8pB,WAAA,GACAC,eAAA/xB,MAAAvK,KAAAk8B,uBAAAK,kBAAAF,UAAA7tB,IACA8tB,gBAGAP,iCAAAt0B,UAAA+0B,qBAAA,SAAAF,gBACA,GAAAG,kBAAA3oB,QAAAC,SAgBA,OAfAA,WAAA,SAAAvE,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,mCAEA3R,MACA8T,QAAA,SAAAtE,OACA,MAAA,YAEA,MADAA,OAAAgiB,QAAA7sB,OAAA,SACA6K,MAAAlH,EAAApE,WAEAlE,MACAy8B,iBAAAr8B,EAAAmS,MAAAvS,KAAAk8B,uBAAAK,mBAAA,GACAE,iBAAAH,eAAA9tB,IAAA8tB,eAAA/xB,MACAvK,KAAAk8B,uBAAAK,kBAAAE,iBACAz8B,KAAAk8B,uBAAA1tB,GAAAxO,KAAAyxB,SACAzxB,KAAA4sB,KAAArH,KAAAvlB,KAAAk8B,wBAAA3sB,KAAAwE,UAAAD,UAGAioB,kCAEAh8B,MAAA0I,YAEAuzB,gCAAA,SAAAzI,WAAAmJ,UACA,GAAAC,eAAAhpB,KAAAN,SAAAC,UAsCA,OArCAD,UAAAkgB,WAAApwB,IAAA,mDAAA,GACAw5B,cAAA,SAAArqB,MACA,MAAApS,eAAA,8BAAAoS,QAEAqB,KAAA,SAAAC,OAAAC,IAAA+G,OAAAyH,QACA,GAAAC,OAAAjM,MAoBA,OAnBAiM,OAAAD,OAAA,GACAhM,OAAAgM,OAAA,GACA1Z,SAAAiL,OAAAgH,OAAAmL,QAAA,SAAAxb,OAEA,MADA+X,OAAAlc,WAAAwU,OAAAtI,KAAA/H,MAAAiE,IACA8T,MAAA6Z,+BAEAtoB,IAAAc,GAAA,QAAA,0BAAA,WACA,GAAAioB,WAAAC,IAIA,OAHAA,MAAAF,cAAA/hB,OAAAtI,MACAsqB,WAAAF,SAAAv5B,IAAA05B,MACAH,SAAA7qB,IAAAgrB,KAAAD,WACAA,WACA/oB,IAAAU,KAAA,2BAAAoG,YAAA,QACA9G,IAAAU,KAAA,uBAAAoG,YAAA,UAEA9G,IAAAU,KAAA,2BAAAsG,SAAA,QACAhH,IAAAU,KAAA,uBAAAsG,SAAA,WAGAjH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,SAGA1H,WAAA,SAAAO,IAAA+G,QACA,GAAAgiB,UAEA,OADAA,WAAAF,SAAAv5B,IAAAw5B,cAAA/hB,OAAAtI,SAAA,EACAe,UACAypB,oBAAAliB,OAAAkiB,oBACAF,UAAAA,cAIAxZ,SAAA,2BAAA,WACAlC,WAAA6a,iCACAxH,aAAA,OACA/gB,SAAA,KACA/I,OAAA,EACAkJ,KAAAA,KACAN,SAAAC,aAIAzT,OAAA4T,UAAA,4BAAA,cAAA,aAAAuoB,kCAEAF,8BAAA,SAAAxa,UAAA+X,eACA,GAAA1lB,MAAAN,SAAA2R,YA4EA,OA3EA3R,UAAAiO,UAAAne,IAAA,iDAAA,GACA6hB,aAAA1D,UAAAne,IAAA,sDAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAA0H,OACA,GAAAga,gBAAArE,WAAAzd,OAAAuiB,mBAAA/oB,MAsEA,OArEAwG,QAAA,SAAA8hB,eAAA7H,MACA,GAAA1Y,KAAAihB,SAAAxa,KAAAjY,KAkBA,OAjBA,OAAAkqB,OACAA,MAAA,GAEAlqB,MAAA+xB,eAAA/xB,MACAyyB,SAAA/E,aACAlc,KACAvN,GAAA8tB,eAAA9tB,GACApD,KAAAkxB,eAAAlxB,KACA0pB,YAAAwH,eAAAxH,YACAvqB,MAAAA,MACA0tB,WAAA+E,UAKAxa,MAHAwa,WAAAvI,MAAAlqB,MAGA8I,SAAA0I,KAFAiJ,aAAAjJ,KAIAlI,IAAA2O,KAAAA,OAEAyV,WAAA,WACA,GAAAvQ,aAAAoV,mBAGA,OAFApV,aAAA9T,OAAAlF,QAAAgM,eACAoiB,oBAAAliB,OAAAkiB,oBACApV,YAAA/d,QAAAmzB,qBAAA,IAEAC,mBAAA,WAEA,MADAT,gBAAA/xB,MAAAsJ,IAAAU,KAAA,SAAAvP,MACA4O,OAAAtH,OAAA,WACA,MAAAgW,OAAAka,qBAAAF,gBAAA/sB,KAAA,WACA,MAAAiL,QAAA8hB,gBAAA,QAIAzoB,IAAAc,GAAA,QAAA,0BAAA,SAAAT,OACA,MAAA,MAAAA,MAAAsI,QACAxI,OAAAE,OACA,KAAAA,MAAAsI,QACAhC,OAAA8hB,gBAAA,GADA,SAIAzoB,IAAAc,GAAA,QAAA,gCAAA,WACA,MAAAsjB,gBAGAoB,cAAAl2B,MAAAqC,QAGAgV,OAAA8hB,gBAAA,GACAzoB,IAAAU,KAAA,6BAAA6L,QAAAwF,UAPA,SASA/R,IAAAc,GAAA,QAAA,cAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAmG,OAAA8hB,gBAAA,GACAzoB,IAAAU,KAAA,6BAAA6L,QAAAwF,WAEA5R,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OAEA,MADAA,OAAAG,iBACA0oB,uBAEA/8B,OACA6T,IAAAc,GAAA,SAAA,OAAAX,QACAH,IAAAc,GAAA,QAAA,gBAAAX,QACAJ,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAshB,eAAA1oB,OAAA/I,MAAA+P,OAAAqiB,wBACAziB,OAAA8hB,kBAGA3oB,KAAAA,KACAyP,QAAA,4BACA5P,SAAA,OAIA3T,OAAA4T,UAAA,0BAAA,cAAA,gBAAAqoB,iCAEAh1B,KAAA9G,MClOA,WACA,GAAAk9B,oBAAAC,wBAAAC,sBAAAr0B,QAAAlJ,OAAAE,MACA6H,KAAA,SAAAC,GAAAC,IAAA,MAAA,YAAA,MAAAD,IAAAE,MAAAD,GAAAE,YAEAjI,OAAAC,KAAAD,MAEAgJ,QAAA/I,KAAAD,MAAAgJ,QAEAlJ,OAAA8G,QAAA9G,OAAA,eAEAs9B,wBAAA,SAAAE,sBAAAC,WAAAlnB,MAAA7R,SAAA+c,WACA,GAAA3N,KA8BA,OA7BAA,MAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QAyBA,MAxBAzC,QAAA9I,OAAA8P,OAAAmL,QAAA,SAAAM,IACA,GAAAkX,kBACA,OAAAlX,KACAkX,kBAAAF,sBAAArd,OAAAnM,IAAAwS,GAAAzS,OAAAlF,SACA6uB,kBAAAC,uBAAA,WACA,MAAA5pB,QAAAtH,OAAA,WACA,MAAA+J,QAAAiiB,cAAAjS,OAGAkX,kBAAA/iB,OAAA,WACA,GAAAuB,KAAAyG,KAAAe,aAAAlQ,QASA,OARA0I,MACA2b,YAAA13B,KAAAy9B,uBACA1vB,MAAA/N,KAAA09B,iBACAV,SAAAh9B,KAAAi4B,YAEA1U,aAAA,uDACAlQ,SAAAiO,UAAAne,IAAAogB,cAAA,GACAf,KAAAnP,SAAA0I,KACA/b,KAAA6T,IAAA2O,KAAAA,OAEA+a,kBAAA/iB,UAnBA,SAsBA5G,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,oBAAA,wBAAA,aAAA,UAAA,aAAA,cAAA0pB,0BAEAC,sBAAA,SAAAC,sBAAAC,WAAAlnB,MAAA7R,SAAAwzB,QAAAzW,WACA,GAAA3N,KA8BA,OA7BAA,MAAA,SAAAC,OAAAC,IAAA+G,QAyBA,MAxBAhH,QAAA9I,OAAA8P,OAAAmL,QAAA,SAAAM,IACA,GAAAkX,kBACA,OAAAlX,KACAkX,kBAAAF,sBAAArd,OAAAnM,IAAAwS,GAAAzS,OAAAlF,SACA6uB,kBAAAC,uBAAA,SAAAG,OAAAC,SACA,MAAA59B,MAAAulB,KAAAoY,OAAAC,SAAAruB,KAAA,WACA,MAAA+tB,YAAA3rB,WAAA,qBAGA4rB,kBAAA/iB,OAAA,WACA,GAAAuB,KAAAyG,KAAAe,aAAAlQ,QASA,OARA0I,MACA2b,YAAA13B,KAAAy9B,uBACA1vB,MAAA/N,KAAA09B,iBACAV,SAAAh9B,KAAAi4B,YAEA1U,aAAA,uDACAlQ,SAAAiO,UAAAne,IAAAogB,cAAA,GACAf,KAAAnP,SAAA0I,KACA/b,KAAA6T,IAAA2O,KAAAA,OAEA+a,kBAAA/iB,UAnBA,SAsBA5G,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,kBAAA,wBAAA,aAAA,UAAA,aAAA,YAAA,cAAA2pB,wBAEAF,mBAAA,SAAA5b,UAAAyW,QAAA3hB,MAAA7R,SAAAlB,IACA,GAAAw6B,mBAAA7d,OAAA8d,cA+JA,OA9JAA,gBAAAxc,UAAAne,IAAA,+CAAA,GACA06B,kBAAA,WACA,QAAAA,mBAAAE,KAAAC,IAAAC,UACAj+B,KAAA6T,IAAAkqB,KACA/9B,KAAAqmB,GAAA2X,IACAh+B,KAAA0O,QAAAuvB,SACAj+B,KAAAk+B,gBAAAt2B,KAAA5H,KAAAk+B,gBAAAl+B,MACAA,KAAAi4B,WAAA,KAAAj4B,KAAA0O,QAAAgM,eAAA/Q,QAAA,aACA3J,KAAA+N,MAAA/N,KAAA0O,QAAAX,MACA/N,KAAAuqB,OAAAvqB,KAAA0O,QAAA6b,OACAvqB,KAAAm+B,WAAAp1B,QAAA/I,KAAAuqB,OAAA,SAAAjqB,GACA,MAAAA,GAAAkO,KAEAxO,KAAAw9B,uBAAA,aACAx9B,KAAAwa,OAAA,aA+HA,MA5HAqjB,mBAAAp2B,UAAA8d,KAAA,WACA,GAAA3I,SAkBA,OAjBAA,UAAAvZ,GAAAgJ,QACA0rB,QAAA71B,IAAA,SAAAsN,OACA,MAAA,YACA,GAAAsE,SAAAC,SAWA,OAVAA,WAAA,WAEA,MADA6I,UAAA5a,UACAuC,SAAAI,OAAA,YAEAmP,QAAA,WAIA,MAHAvP,UAAAI,OAAA,SACA6K,MAAA6W,GAAA+M,SACA5jB,MAAAgL,SACAoC,SAAA1Y,UAEAkS,MAAAmP,KAAA/V,MAAA6W,IAAA9W,KAAAwE,UAAAD,WAEA9T,OACA4c,SAAA5N,SAGA6uB,kBAAAp2B,UAAAg2B,qBAAA,WACA,GAAAW,eAAAC,MAOA,OANAA,QAAAj+B,EAAAC,IAAAL,KAAAqmB,GAAAkE,OAAA,SAAA/a,OACA,MAAA,UAAA8uB,GACA,GAAAjzB,IACA,OAAA,QAAAA,IAAAmE,MAAA2uB,WAAAG,IAAAjzB,IAAAd,MAAA,SAEAvK,OACA,IAAAq+B,OAAA74B,OACA,KAEA44B,cAAAh+B,EAAA8N,OAAAmwB,OAAA,SAAAC,GACA,MAAA,OAAAA,IAEA,IAAAF,cAAA54B,OACA,IAEApF,EAAAm+B,OAAAH,cAAA,SAAAI,IAAAC,KACA,MAAAD,KAAAC,QAIAZ,kBAAAp2B,UAAAi2B,eAAA,WACA,GAAA7uB,iBAAAd,KAYA,OAXAc,iBAAAzO,EAAA8N,OAAAlO,KAAA0O,QAAAX,MAAA,cACAA,MAAA3N,EAAAC,IAAAwO,gBAAA,SAAAW,OACA,MAAA,UAAAkvB,MACA,GAAAd,SAAAe,QAKA,OAJAf,SAAApuB,MAAA6W,GAAAkE,OAAAmU,KAAAlwB,IACAmwB,SAAAnvB,MAAA2uB,WAAAP,SACAc,KAAAt+B,EAAAmS,MAAAmsB,MAAA,GACAA,KAAAnU,OAAA,MAAAoU,UAAA,MAAAA,SAAAvzB,KAAAuzB,SAAAvzB,KAAA,IACAszB,OAEA1+B,QAIA69B,kBAAAp2B,UAAAy2B,gBAAA,WAaA,MAZAl+B,MAAA6T,IAAAc,GAAA,QAAA,mBAAA,SAAAnF,OACA,MAAA,UAAA0E,OACA,GAAAypB,QAAA5a,MAOA,OANA7O,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA2a,OAAA5a,OAAAte,KAAA,WACA+K,MAAAovB,qBAAAjB,OAAA5a,QACAA,OAAA8b,WAAAlkB,YAAA,UACAoI,OAAAlI,SAAA,YAEA7a,OACAA,KAAA6T,IAAAc,GAAA,QAAA,SAAA,SAAAnF,OACA,MAAA,UAAA0E,OACA,GAAA0pB,SAAArT,OAAAoT,OAAA5a,MAWA,OAVA7O,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA2a,OAAA5a,OAAAte,KAAA,WACAm5B,QAAA7a,OAAAte,KAAA,YACA+K,MAAAqE,IAAAU,KAAA,YAAAgQ,UAAA/F,QACA+L,OAAAnqB,EAAAmS,MAAA/C,MAAA6W,GAAAkE,QAAA,GACAA,OAAAoT,QAAAC,QACApuB,MAAA6W,GAAAkE,OAAAA,OACA/a,MAAAgL,SACAhL,MAAAguB,uBAAAG,OAAAC,WAEA59B,QAGA69B,kBAAAp2B,UAAAm3B,qBAAA,SAAAjB,OAAA5a,QACA,GAAA+b,gBAAAtc,KAAAuc,eAAAxU,MA6BA,OA5BAA,QAAAnqB,EAAAC,IAAAL,KAAAuqB,OAAA,SAAA/a,OACA,MAAA,UAAAwvB,OAGA,MAFAA,OAAA5+B,EAAAmS,MAAAysB,OAAA,GACAA,MAAAxD,SAAAhsB,MAAA6W,GAAAkE,OAAAoT,UAAAqB,MAAAxwB,IAAA,GAAA,EACAwwB,QAEAh/B,OACA++B,eAAA,EACAD,eAAA1+B,EAAA6+B,KAAA1U,OAAA,WACA,MAAA,UAAAyU,OACA,MAAAA,OAAA5zB,KAAA5F,OAAAu5B,iBAEA/+B,OACAwiB,KAAAsb,gBACAvT,OAAAA,OACAoT,OAAAA,OACAuB,WAAAJ,iBAEA9+B,KAAA6T,IAAAU,KAAA,YAAAgQ,UAAA/F,QACAxe,KAAA6T,IAAAU,KAAA,oBAAAvC,SACA,MAAA+Q,OACA/iB,KAAA6T,IAAAU,KAAAwO,QAAAwY,OAAA/Y,MAEAxiB,KAAA6T,IAAA0nB,OAAA/Y,MAEAxiB,KAAA6T,IAAAU,KAAA,oBAAAgQ,UAAApE,KAAA,WACA,MAAArE,GAAA9b,MAAA2a,YAAA,UAAAwkB,QAAA,MAAAxkB,YAAA,YAEA3a,KAAA6T,IAAAU,KAAA,oBAAAqO,QAGAib,qBAGA7d,OAAA,SAAAnM,IAAAwS,GAAA3X,SACA,GAAA6uB,kBAWA,OAVAA,mBAAA1pB,IAAApP,KAAA,qBACA84B,oBACAA,kBAAA,GAAAM,mBAAAhqB,IAAAwS,GAAA3X,SACAmF,IAAApP,KAAA,oBAAA84B,oBAEAA,kBAAAtF,WACAsF,kBAAAW,kBAEArqB,IAAAsT,OAAA,SAEAoW,oBAGAvd,OAAAA,SAIAngB,OAAAuE,QAAA,yBAAA,cAAA,YAAA,UAAA,aAAA,KAAA84B,sBAEAp2B,KAAA9G,MCjQA,WACA,GAAAo/B,eAAAv/B,OAAAw/B,aAAAC,cAAAv/B,MAAA2J,UAAA61B,WAEAx/B,OAAAC,KAAAD,MAEAF,OAAA8G,QAAA9G,OAAA,eAEAu/B,cAAA,WACA,MAAA,UAAA70B,MAAAi1B,cACA,MAAAj1B,UAAA,KAAA,QACAi1B,aAEAj1B,QAIA1K,OAAAqO,OAAA,UAAAkxB,eAEAG,YAAA,WACA,MAAA,UAAAh1B,OACA,MAAAA,OACA,MAEA,OAIA1K,OAAAqO,OAAA,QAAAqxB,aAEA71B,UAAA,WACA,MAAA3J,OAAA2J,WAGA7J,OAAAqO,OAAA,YAAAxE,WAEA21B,aAAA,WACA,MAAA,UAAAryB,MAAA6nB,QACA,MAAA7nB,OACA4nB,OAAA5nB,OAAA6nB,OAAAA,QAEA,KAIAh1B,OAAAqO,OAAA,eAAAmxB,cAEAC,cAAA,WACA,MAAA,UAAAtyB,MAAAyyB,gBACA,MAAAzyB,OACA4nB,OAAA5nB,OAAA0yB,QAAAD,iBAAA,GAEA,KAIA5/B,OAAAqO,OAAA,gBAAAoxB,gBAEAx4B,KAAA9G,MCzDA,WACA,GAAA2/B,mBAAAC,iBAAAj3B,SAAAE,SAAAhJ,OAAAE,MAAA0J,KACAvC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEA0J,KAAAzJ,KAAAD,MAAA0J,KAEAd,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,eAEA8/B,kBAAA,SAAA13B,YAKA,QAAA03B,mBAAAl1B,MAAAmiB,KAAA1d,IACAlP,KAAAyK,MAAAA,MACAzK,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GAiDA,MAxDAhI,QAAAy4B,kBAAA13B,YAEA03B,kBAAAtuB,SAAA,SAAA,UAAA,gBAQAsuB,kBAAAl4B,UAAArB,WAAA,SAAAkM,KAAAmf,UAEA,MADAzxB,MAAAsS,KAAAA,KACAtS,KAAAyxB,SAAAA,UAGAkO,kBAAAl4B,UAAAo4B,YAAA,SAAAvtB,KAAAmf,UACA,MAAAzxB,MAAAkP,GAAA4wB,QAAA38B,IAAAmP,KAAAmf,UAAAliB,KAAA,SAAAC,OACA,MAAA,UAAAswB,SACA,GAAAC,eAAAl2B,EAAAiC,GACA,KAAAjC,EAAA,EAAAiC,IAAAg0B,QAAAt6B,OAAAsG,IAAAjC,EAAAA,IACAk2B,cAAAD,QAAAj2B,GACA,MAAAk2B,cAAAC,YAAAC,mBACAF,cAAAC,YAAAlL,YAAAiL,cAAAC,YAAAC,wBAEAF,eAAAC,YAAAE,uBACAH,eAAAC,YAAAC,iBACA,MAAAF,cAAAC,YAAAG,oBACAJ,cAAAC,YAAAI,aAAAL,cAAAC,YAAAG,yBAEAJ,eAAAC,YAAAK,wBACAN,eAAAC,YAAAG,iBAGA,OADA3wB,OAAA/E,MAAAq1B,QAAAA,QACAtwB,MAAA/E,MAAA61B,SAAAlgC,EAAA8N,OAAA4xB,QAAA,SAAAl2B,MACA,MAAA,KAAAA,KAAA22B,YAGAvgC,QAGA2/B,kBAAAl4B,UAAA+4B,cAAA,SAAAluB,KAAAmf,SAAAgP,YACA,MAAAzgC,MAAAkP,GAAA4wB,QAAAU,cAAAluB,KAAAmf,SAAAgP,YAAAlxB,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqwB,YAAAvtB,KAAAmf,YAEAzxB,QAGA2/B,kBAAAl4B,UAAAi5B,gBAAA,SAAApuB,KAAAmf,SAAAgP,YACA,MAAAzgC,MAAAkP,GAAA4wB,QAAAY,gBAAApuB,KAAAmf,SAAAgP,YAAAlxB,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqwB,YAAAvtB,KAAAmf,YAEAzxB,QAGA2/B,mBAEA5/B,MAAA0I,YAEAm3B,iBAAA,SAAA/5B,KAAAga,SAAAkY,QAAAzW,UAAA/c,UACA,GAAAoP,MAAAgtB,iBAAAC,aAAAC,oBAAAC,yBAAAC,mBAAAC,sBAAAC,mBAAAC,qBAAAC,uBAAA7tB,UA0XA,OAzXAytB,oBAAAzf,UAAAne,IAAA,2CAAA,GACA+9B,qBAAA5f,UAAAne,IAAA,6CAAA,GACA69B,sBAAA1f,UAAAne,IAAA,8CAAA,GACA29B,yBAAAxf,UAAAne,IAAA,iDAAA,GACA89B,mBAAA3f,UAAAne,IAAA,2CAAA,GACAg+B,uBAAA7f,UAAAne,IAAA,+CAAA,GACAw9B,iBAAArf,UAAAne,IAAA,wCAAA,GACA09B,oBAAAvf,UAAAne,IAAA,4CAAA,GACAy9B,aAAAtf,UAAAne,IAAA,oCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAA0H,OACA,GAAA8e,cAAAC,aAAAC,sBAAAC,cAAAC,gBAAA/P,SAAAgQ,eAAAC,sBAAAC,aAAAC,oBAAAC,kBAAAC,wBAAAC,cAAAC,eAAAC,4BAAAC,cAAA3c,KAAA4c,gBAAAC,gBAAA9vB,IAoWA;MAnWAA,MAAAsI,OAAAtI,KACAmf,SAAA,KACA2Q,iBAAA,EACAD,iBAAA,EACAx5B,SAAAiL,OAAAgH,OAAAmL,QAAA,SAAA7U,OAIA,MAHAoB,MAAAsI,OAAAtI,KACAmf,SAAAvgB,MAAA1C,GACA8T,MAAAlc,WAAAkM,KAAAmf,UACAnP,MAAAud,YAAAvtB,KAAAmf,YAEA6P,sBAAA,SAAArK,OACA,GAAAoL,oBAcA,OAbAA,sBACAnc,YAAA,cACAoc,UAAA,YACAC,YAAA,cACAC,mBAAA,qBACAC,iBAAA,mBACAC,UAAA,SACAC,WAAA,aACAC,WAAA,aACA1Q,cAAA,gBACAkO,aAAA,eACApH,WAAA,cAEAqJ,oBAAApL,QAAAA,OAEAuK,gBAAA,SAAApa,QACA,GAAA/b,IACA,OAAA,QAAAA,IAAAuI,OAAAnF,UAAA2Y,SAAA/b,IAAA4b,kBAAA,QAEAsa,cAAA,SAAAna,QACA,MAAA,OAAAxT,OAAAnF,UAAA2Y,QACAxT,OAAAnF,UAAA2Y,QAAAJ,MAEA,uBAGAoa,aAAA,SAAAb,SACA,MAAAngC,GAAAiK,KAAAk2B,QAAAP,aAAAx6B,QAEA67B,aAAA,SAAAwB,QACA,MAAAziC,GAAA0iC,QAAAD,QACA,IAAAA,OAAAr9B,OACA,QAEAq9B,OAAAniC,KAAA,MAEA,KAAAmiC,OACA,QAEA,MAAAA,QAAAA,UAAA,EACA,KAEAA,UAAA,EACA,MAEAA,QAEAnB,sBAAA,SAAAn3B,OACA,GAAAonB,YAkCA,OAjCAA,aAAAvxB,EAAAC,IAAAkK,MAAA,SAAAw4B,QAAAzwB,MACA,MAAA,QAAAA,KACAlS,EAAAC,IAAA0iC,QAAA,SAAAF,QACA,MAAA9B,qBACA31B,KAAA,iBACA43B,KAAAH,OAAAI,aAGA,YAAA3wB,KACAlS,EAAAC,IAAA0iC,QAAA,SAAAF,QACA,MAAA9B,qBACA31B,KAAA,qBACA43B,KAAAH,OAAAI,aAIA7iC,EAAAC,IAAA0iC,QAAA,SAAAF,QACA,GAAAG,MAAA53B,IASA,OARAA,MAAA,sBAAAy3B,OAAAI,SACAD,KAAA5iC,EAAAC,IAAAwiC,OAAAE,QAAA,SAAA1E,OAAAjzB,MACA,OACAA,KAAAk2B,sBAAAl2B,MACA83B,KAAA7B,aAAAhD,OAAA,IACA8E,GAAA9B,aAAAhD,OAAA,OAGAyC,0BACA11B,KAAAA,KACA43B,KAAAA,WAKA5iC,EAAAgjC,QAAAzR,aAAAjxB,KAAA,OAEAuhC,4BAAA,SAAA13B,OACA,GAAA0xB,iBA+BA,OA9BAA,kBAAA77B,EAAAC,IAAAkK,MAAA,SAAAw4B,QAAAzwB,MACA,MAAA,QAAAA,KACAlS,EAAAC,IAAA0iC,QAAA,SAAAF,QACA,MAAA7B,wBACA51B,KAAAy3B,OAAAz3B,KACA83B,KAAA7B,aAAA,IACA8B,GAAA9B,aAAAwB,OAAAt4B,WAGA,YAAA+H,KACAlS,EAAAC,IAAA0iC,QAAA,SAAAF,QACA,MAAA9B,qBACA31B,KAAA,2BACA43B,KAAAH,OAAAz3B,SAIAhL,EAAAC,IAAA0iC,QAAA,SAAAF,QACA,GAAAQ,mBAQA,OAPAA,oBAAAjjC,EAAAC,IAAAwiC,OAAAE,QAAA,SAAA1E,QACA,MAAA2C,wBACA51B,KAAAy3B,OAAAz3B,KACA83B,KAAA7B,aAAAhD,OAAA,IACA8E,GAAA9B,aAAAhD,OAAA,QAGAj+B,EAAAgjC,QAAAC,oBAAA3iC,KAAA,UAIAN,EAAAgjC,QAAAnH,kBAAAv7B,KAAA,OAEAmhC,kBAAA,SAAA5K,MAAA1sB,OACA,GAAA+4B,OAAAJ,KAAA93B,KAAAm4B,QAAAJ,EACA,OAAA,gBAAAlM,MACA8J,oBACA31B,KAAAk2B,sBAAA,eACA0B,KAAAz4B,MAAA,KAEA,iBAAA0sB,MACA8J,oBACA31B,KAAAk2B,sBAAA,gBACA0B,KAAAz4B,MAAA,KAEA,WAAA0sB,MACAiK,sBACA3W,OAAAhgB,QAEA,gBAAA0sB,MACAyK,sBAAAn3B,OACA,sBAAA0sB,MACAgL,4BAAA13B,OACA,SAAA0sB,OAAA,aAAAA,OACA7rB,KAAAk2B,sBAAArK,OACAsM,QAAAnjC,EAAAojC,WAAAj5B,MAAA,GAAAA,MAAA,IACA+4B,MAAAljC,EAAAojC,WAAAj5B,MAAA,GAAAA,MAAA,IACA02B,oBACA71B,KAAAA,KACAm4B,QAAAA,QACAD,MAAAA,SAEA,gBAAArM,OACA7rB,KAAAk2B,sBAAArK,OACAiM,KAAA7B,aAAA92B,MAAA,IAAA,cACA44B,GAAA9B,aAAA92B,MAAA,IAAA,cACAy2B,uBACA51B,KAAAA,KACA83B,KAAAA,KACAC,GAAAA,OAGA/3B,KAAAk2B,sBAAArK,OACAiM,KAAA7B,aAAA92B,MAAA,IACA44B,GAAA9B,aAAA92B,MAAA,IACAy2B,uBACA51B,KAAAA,KACA83B,KAAAA,KACAC,GAAAA,OAIAvB,oBAAA,SAAAiB,QACA,MAAAziC,GAAAC,IAAAwiC,OAAA7C,YAAA,SAAAz1B,MAAA0sB,OACA,MAAA4K,mBAAA5K,MAAA1sB,UAGAu3B,wBAAA,SAAAe,QACA,GAAA11B,KAEA,OADAA,MAAAi0B,aAAAyB,QACA,IAAA11B,KACA,QAAAA,KAAA,UAEA,QAAAA,KAAA,YAEA40B,cAAA,SAAAxB,SACA,GAAAl1B,KAAA8sB,KAAAsL,IACA,OAAAlD,SAAAmD,sBAAA,OAAAr4B,IAAAk1B,QAAAoD,qBAAAt4B,IAAAD,KAAA,QACA+1B,wBACAyC,kBAAArD,QAAAmD,oBAAA9O,OAAA2L,QAAAmD,qBAAA7O,OAAA,qBAAA,OACAgP,kBAAAtD,QAAAoD,oBAAAv4B,KACAo1B,cAAAD,QAAAuD,aACArD,WAAAF,QAAA/xB,GACAu1B,kBAAAxD,QAAAoD,oBAAAK,KAAApwB,OAAAzF,KAAAK,IAAAoF,OAAAlF,QAAAgM,eAAA/Q,QAAA,kBAAA,KAGAg3B,kBACAsD,OAAA1C,cAAAhB,QAAApyB,KAAA61B,IACAE,aAAA3D,QAAApyB,KAAA/C,KACA+4B,aAAAvP,OAAA2L,QAAA6D,YAAAvP,OAAA,qBACA0L,QAAAA,QAAAuD,aACAO,YAAAvC,wBAAAvB,SACAwC,QAAAnB,oBAAArB,SACA+D,KAAA,UACAV,kBAAArD,QAAAmD,oBAAA9O,OAAA2L,QAAAmD,qBAAA7O,OAAA,qBAAA,OACAgP,mBAAA,OAAA1L,KAAAoI,QAAAoD,qBAAAxL,KAAA/sB,KAAA,QAAAm1B,QAAAoD,oBAAAv4B,KAAA,OACAq1B,WAAAF,QAAA/xB,GACA+1B,iBAAAhE,QAAApyB,KAAA61B,MAAA,OAAAP,KAAA7vB,OAAAzF,MAAAs1B,KAAAj1B,GAAA,SAAAoF,OAAAlF,QAAAgM,eAAA/Q,QAAA,kBAAA,MAGAg4B,aAAA,SAAAkB,QACA,GAAAx3B,IACA,OAAAs1B,mBACAsD,OAAA1C,cAAAsB,OAAA10B,KAAA61B,IACAE,aAAArB,OAAA10B,KAAA/C,KACA+4B,aAAAvP,OAAAiO,OAAAuB,YAAAvP,OAAA,qBACA0L,QAAAsC,OAAAiB,aACAf,QAAAnB,oBAAAiB,QACAwB,YAAA,GACAC,KAAA,WACAV,kBAAAf,OAAAa,oBAAA9O,OAAAiO,OAAAa,qBAAA7O,OAAA,qBAAA,OACAgP,mBAAA,OAAAx4B,IAAAw3B,OAAAc,qBAAAt4B,IAAAD,KAAA,QAAAy3B,OAAAc,oBAAAv4B,KAAA,OACAq1B,WAAAoC,OAAAr0B,MAGA0zB,cAAA,SAAAsC,QAAAC,cACA,GAAAC,SAMA,OAJAA,UADAF,QAAAh/B,SAAAi/B,aACA,EAEAA,aAAAD,QAAAh/B,OAEAq7B,qBACA2D,QAAAA,QACAE,SAAAA,YAGA1C,eAAA,WACA,GAAA1B,UAAA9d,KAAAmiB,aAUA,OATArE,UAAA1sB,OAAA0sB,aACAqE,cAAArE,SAAA96B,OACA48B,kBACA9B,SAAAlgC,EAAAwkC,KAAAtE,SAAA,IAEAA,SAAAlgC,EAAAC,IAAAigC,SAAA,SAAAhgC,GACA,MAAAyhC,eAAAzhC,KAEAkiB,KAAA0f,cAAA5B,SAAAqE,eACA9wB,IAAAU,KAAA,kBAAAiO,KAAAA,OAEAif,eAAA,WACA,GAAAsB,SAAAvgB,KAAAqiB,YAUA,OATA9B,SAAAnvB,OAAAksB,YACA+E,aAAA9B,QAAAv9B,OACA28B,kBACAY,QAAA3iC,EAAAwkC,KAAA7B,QAAA,IAEAA,QAAA3iC,EAAAC,IAAA0iC,QAAA,SAAAziC,GACA,MAAAqhC,cAAArhC,KAEAkiB,KAAA0f,cAAAa,QAAA8B,cACAhxB,IAAAU,KAAA,iBAAAiO,KAAAA,OAEA+C,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAgG,QACA,GAAA7R,OAAA4C,QAAAC,SAcA,OAbAH,QAAAjC,WAAA,0BACAkC,IAAAU,KAAA,iBAAAsG,SAAA,mBACA9G,UAAA,WACA,MAAAuO,OAAAud,YAAAvtB,KAAAmf,UAAA,WAAA,WACA,MAAA5R,UAAAK,OAAA6C,WAGAjP,QAAA,WAEA,MADA+L,UAAAK,OAAA6C,QACAxe,SAAAI,OAAA,UAEAuM,MAAA0C,OAAA/I,MAAA+P,OAAAmL,SACAlG,SAAAE,MAAAgD,QACAT,MAAAsK,KAAArH,KAAArU,OAAA3B,KAAAwE,UAAAD,WAEA9T,OACA4T,OAAA9I,OAAA,WAAAk3B,gBACApuB,OAAA9I,OAAA,UAAA22B,gBACA7tB,OAAAmH,IAAA,iBAAA,WACA,MAAAuH,OAAAud,YAAAvtB,KAAAmf,YAEA5d,IAAAc,GAAA,QAAA,8BAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAuC,KAAAxC,WAEAlP,IAAAc,GAAA,QAAA,aAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAA3b,SAAA0a,GAAA,kBACAqgB,iBAAAA,gBACAV,mBAEAW,iBAAAA,gBACAJ,oBAGAnuB,IAAAc,GAAA,QAAA,wBAAA,SAAAT,OACA,GAAA6O,OAKA,OAJA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAA+hB,QAAA,oBAAAvwB,KAAA,yBAAAqO,OACAG,OAAA+hB,QAAA,oBAAAvwB,KAAA,yBAAA4N,OACAY,OAAA+hB,QAAA,oBAAAvwB,KAAA,iBAAAqO,SAEA/O,IAAAc,GAAA,QAAA,wBAAA,SAAAT,OACA,GAAA6O,OAKA,OAJA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAA+hB,QAAA,oBAAAvwB,KAAA,yBAAA4N,OACAY,OAAA+hB,QAAA,oBAAAvwB,KAAA,yBAAAqO,OACAG,OAAA+hB,QAAA,oBAAAvwB,KAAA,iBAAA4N,SAEAtO,IAAAc,GAAA,QAAA,iBAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAA3b,SAAAmN,KAAA,iBAAAsO,YAAA,YAEAhP,IAAAc,GAAA,QAAA,wBAAA,WACA,MAAAmH,GAAA9b,MAAA6a,SAAA,YAEAhH,IAAAc,GAAA,QAAA,qBAAA,WAEA,MADAd,KAAAU,KAAA,sBAAAsO,YAAA,UACAhP,IAAAU,KAAA,oBAAAsO,YAAA,YAEAhP,IAAAc,GAAA,QAAA,kBAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAAusB,YAAA1d,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAyd,WAAA1d,OAAAte,KAAA,eACA6d,MAAAke,cAAAluB,KAAAmf,SAAAgP,eAEA5sB,IAAAc,GAAA,QAAA,mBAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAAusB,YAAA1d,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAyd,WAAA1d,OAAAte,KAAA,eACA6d,MAAAoe,gBAAApuB,KAAAmf,SAAAgP,eAEA7sB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,SAGA1H,WAAA,SAAAO,IAAA+G,QACA,MAAAgmB,eACAmE,QAAAnqB,OAAAmL,QACAzT,KAAAsI,OAAAtI,KACAgyB,KAAA1pB,OAAA0pB,SAIApjB,WAAAye,kBACAtsB,SAAAC,WACAE,SAAA,KACAG,KAAAA,OAIA9T,OAAA4T,UAAA,aAAA,OAAA,aAAA,YAAA,cAAA,aAAAmsB,oBAEA94B,KAAA9G,MCjdA,WACA,GAAAglC,8BAAAnlC,MAEAA,QAAA8G,QAAA9G,OAAA,eAEAmlC,6BAAA,SAAA1e,IAAA/hB,SAAAjB,UAAAC,UACA,GAAAoQ,KA8CA,OA7CAA,MAAA,SAAAC,OAAAC,KAMA,MALAA,KAAAc,GAAA,QAAA,yBAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAR,IAAAU,KAAA,qBAAAvP,IAAA,IACA6O,IAAAU,KAAA,qBAAA0wB,QAAA,WAEApxB,IAAAc,GAAA,SAAA,oBAAA,SAAAT,OACA,GAAAgxB,MAAAjjC,OAAA6R,QAAAC,SAGA,OAFAG,OAAAG,kBACA6wB,KAAAhxB,MAAA6O,OAAAqR,MAAA,KAIAnyB,OAAAsC,SAAAtC,OAAA,uBACA8R,UAAA,SAAAhI,QACA,GAAAgQ,KAAA2C,QAAAmH,KAEA,OADA5jB,QAAAw5B,OACA,MAAA1vB,OAAAnI,QACAiiB,MAAA,+CACAnH,QAAA,mFACAna,SAAA2Q,QAAA2Q,MAAAnH,WAEA3C,KACArN,QAAA3C,OAAAtH,KAAAuX,MAEA1Y,UAAAQ,KAAAP,SAAAvB,QAAA,wCAAA+Z,MACAxX,SAAAI,OAAA,UAAA,iDAGAmP,QAAA,SAAA/H,QACA,GAAAo5B,UAAA95B,GASA,OARApJ,QAAAw5B,OACA9a,QAAAnT,IAAA,QAAAzB,QACAo5B,SAAA,oFACA,MAAAp5B,OAAAnI,OACAuhC,SAAA,yFACA,OAAA95B,IAAAU,OAAAtH,MAAA4G,IAAA2J,eAAA,UACAmwB,SAAA,kEAAAp5B,OAAAtH,KAAAuQ,gBAEAzQ,SAAAI,OAAA,QAAAwgC,WAEAljC,OAAA8d,QACAuG,IAAAnX,SAAA,UAAA+1B,KAAAjjC,OAAAwX,QAAAlK,KAAAwE,UAAAD,UAhCA,WAoCAH,KAAAA,OAIA9T,OAAA4T,UAAA,yBAAA,eAAA,aAAA,YAAA,aAAAuxB,gCAEAl+B,KAAA9G,MC3DA,WACA,GAAAolC,6BAAAC,uBAAAC,8BAAAC,+BAAAC,6BAAAC,kBAAAC,kCAAAC,gBAAAC,0BAAAj9B,SAAAE,SAAAhJ,OAAAyJ,QACApC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA9H,QAAA8G,QAAA9G,OAAA,eAEA8I,SAAA3I,KAAAD,MAAA4I,SAEAW,QAAAtJ,KAAAD,MAAAuJ,QAEAT,SAAA7I,KAAAD,MAAA8I,SAEA88B,gBAAA,SAAA19B,YAGA,QAAA09B,iBAAApqB,eAAAjT,GACAtI,KAAAub,eAAAA,eACAvb,KAAAsI,EAAAA,EA4DA,MAhEApB,QAAAy+B,gBAAA19B,YAOA09B,gBAAAl+B,UAAA0Y,KAAA,SAAAtM,KACA,GAAAuZ,SAAAyY,MAAAC,eA2BA,OA1BA1Y,SAAAptB,KAAAsI,EAAA+D,QACAy5B,gBAAAjyB,IAAAqb,WAAA6W,IAAA,UACAD,gBAAA3jB,OACAtO,IAAAqO,IAAA,UAAA,QACArO,IAAAU,KAAA,kBAAAgiB,QAAAnW,QACApgB,KAAAub,eAAArZ,IAAA,WACA,MAAA,YACA,MAAA2R,KAAAgH,SAAA,UAEA7a,OACAA,KAAAub,eAAArZ,IAAA,WACA,MAAA,YAEA,MADA4jC,iBAAAljB,OACAwK,QAAAprB,YAEAhC,OACA6lC,MAAAl/B,QAAA6E,QAAAwW,UACA6jB,MAAAlxB,GAAA,mBAAA,SAAAnF,OACA,MAAA,UAAAjB,GACA,GAAAgO,KAEA,OADAA,MAAAhO,EAAAiO,QAAAjO,EAAAiO,QAAAjO,EAAAmU,MACA,KAAAnG,KACA/M,MAAAgP,MAAA3K,KADA,SAIA7T,OACAotB,QAAApe,SAGA22B,gBAAAl+B,UAAA+W,MAAA,SAAA3K,KACA,GAAAgyB,MAUA,OATAA,OAAAl/B,QAAA6E,QAAAwW,UACA6jB,MAAA7qB,IAAA,aACA6qB,MAAA7qB,IAAA,wBACAnH,IAAAkO,IAAA,gBAAA,WACA,MAAA,YAEA,MADAlO,KAAAmyB,WAAA,SACAnyB,IAAA8G,YAAA,QAAAA,YAAA,WAEA3a,OACA6T,IAAAgH,SAAA,UAGA8qB,gBAAAl+B,UAAA5D,SAAA,WACA,GAAAgiC,OAAAh8B,EAAAiC,IAAAm6B,WAAA56B,IAAAoE,OAIA,KAHAo2B,MAAAl/B,QAAA6E,QAAAwW,UACA3W,IAAAw6B,MAAAtxB,KAAA,kBACA9E,WACA5F,EAAA,EAAAiC,IAAAT,IAAA7F,OAAAsG,IAAAjC,EAAAA,IACAo8B,WAAA56B,IAAAxB,GACA4F,QAAAnL,KAAAtE,KAAAwe,MAAA1C,EAAAmqB,aAEA,OAAAx2B,UAGAk2B,iBAEA5lC,MAAAyI,SAEA3I,OAAAsT,QAAA,mBAAA,iBAAA,KAAAwyB,kBAEAD,kCAAA,SAAAz9B,YAGA,QAAAy9B,qCACA,MAAAA,mCAAAh+B,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAqDA,MAxDAd,QAAAw+B,kCAAAz9B,YAMAy9B,kCAAAj+B,UAAAg0B,KAAA,WACA,GAAAoK,MAEA,OADAA,OAAAl/B,QAAA6E,QAAAwW,UACA6jB,MAAA7qB,IAAA,yBAGA0qB,kCAAAj+B,UAAAy+B,SAAA,SAAAryB,IAAA0I,MACA,GAAA4pB,eAAAC,KAAAC,IAEA,IADAF,cAAAtyB,IAAAU,KAAA,WACA,KAAAgI,KACA,MAAA4pB,eAAAlB,QAAA,QACA,IAAA,KAAA1oB,KAAA,CACA,IAAA4pB,cAAA3gC,OACA,MAAAqO,KAAAU,KAAA,yBAAAsG,SAAA,SAGA,IADAurB,KAAAD,cAAAC,KAAA,mBACAA,KAAA5gC,OAEA,MADA2gC,eAAAxrB,YAAA,UACAyrB,KAAAvrB,SAAA,cAGA,IAAA,KAAA0B,KAAA,CACA,IAAA4pB,cAAA3gC,OACA,MAAAqO,KAAAU,KAAA,wBAAAsG,SAAA,SAGA,IADAwrB,KAAAF,cAAAE,KAAA,mBACAA,KAAA7gC,OAEA,MADA2gC,eAAAxrB,YAAA,UACA0rB,KAAAxrB,SAAA,YAMA6qB,kCAAAj+B,UAAA7H,KAAA,SAAAiU,KACA,GAAAgyB,MAGA,OAFA7lC,MAAAy7B,OACAoK,MAAAl/B,QAAA6E,QAAAwW,UACA6jB,MAAAlxB,GAAA,8BAAA,SAAAnF,OACA,MAAA,UAAA0E,OACA,GAAAqI,KAEA,OADAA,MAAArI,MAAAsI,QAAAtI,MAAAsI,QAAAtI,MAAAwO,MACA,KAAAnG,MAAA,KAAAA,MAAA,KAAAA,MACArI,MAAAG,iBACA7E,MAAA02B,SAAAryB,IAAA0I,OAFA,SAKAvc,QAGA0lC,mCAEA3lC,MAAAyI,SAEA3I,OAAAsT,QAAA,oCAAAuyB,mCAEAD,kBAAA,SAAA3K,iBACA,GAAAnnB,KAOA,OANAA,MAAA,SAAAC,OAAAC,KACA,MAAAA,KAAAc,GAAA,QAAA,SAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAymB,gBAAAtc,MAAA3K,SAIAL,SAAA,IACAG,KAAAA,OAIA9T,OAAA4T,UAAA,YAAA,kBAAAgyB,oBAEAJ,uBAAA,SAAAr/B,WAAAsgC,QAAA/hC,SAAAu2B,gBAAAjb,SAAAkY,SACA,GAAApkB,KAuEA,OAtEAA,MAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAAkwB,OAAAC,OA4DA,OA3DA3yB,KAAAU,KAAA,YAAA5I,KAAAiP,OAAAiL,OACA2gB,QAAAzO,QAAAhb,QAAA,WACA,MAAA,UAAAnT,KAAA68B,gBACA,GAAAz3B,QAgBA,OAfAA,SAAAs3B,QAAA/gB,KAAA3b,MACAoF,QAAAO,KAAA,WAIA,MAHAhL,UAAAI,OAAA,WACAqB,WAAA2L,WAAA,kBACA0E,OAAAiiB,cAAA1uB,MACA68B,mBAEAz3B,QAAAO,KAAA,KAAA,WAGA,MAFAhL,UAAAI,OAAA,SACAiF,KAAAwpB,SACA/c,OAAAiiB,cAAA1uB,QAEAoF,QAAA,WAAA,WACA,MAAAy3B,oBAEAz3B,UAEAhP,OACAumC,MAAAxO,QAAAhb,QAAA,WACA,MAAA,UAAAnT,MACA,GAAAoF,QAaA,OAZAqH,QAAAiiB,cAAA1uB,MACAiW,SAAAE,MAAAlM,IAAAU,KAAA,kBACAvF,QAAAs3B,QAAA/gB,KAAAlP,OAAAmP,aACAxW,QAAAO,KAAA,WAEA,MADAhL,UAAAI,OAAA,WACAqB,WAAA2L,WAAA,oBAEA3C,QAAAO,KAAA,KAAA,WAGA,MAFAhL,UAAAI,OAAA,SACAiF,KAAAwpB,SACA/c,OAAAiiB,cAAA1uB,QAEAoF,QAAA,WAAA,WAEA,MADA6Q,UAAAK,OAAArM,IAAAU,KAAA,kBACAumB,gBAAAtc,MAAA3K,SAGA7T,OACA4T,OAAAmH,IAAA,QAAA,WAEA,MADAlH,KAAAU,KAAA,WAAAvP,IAAAqR,OAAAmP,YAAA4a,cACAtF,gBAAA3a,KAAAtM,OAEAD,OAAAmH,IAAA,UAAA,WACA,MAAA,UAAA7G,MAAAhD,MAAAu1B,gBACA,GAAA78B,KAIA,OAHAA,MAAAyM,OAAAmP,YAAAjT,QACA3I,KAAAovB,YAAA,EACApvB,KAAAw2B,aAAA,GACAoG,QAAA58B,KAAA68B,kBAEAzmC,OACA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAnH,IAAAc,GAAA,QAAA,gBAAA,SAAAT,OACA,GAAAtK,KAKA,OAJAsK,OAAAG,iBACAzK,KAAAyM,OAAAmP,YAAAjT,QACA3I,KAAAovB,YAAA,EACApvB,KAAAw2B,aAAAvsB,IAAAU,KAAA,WAAAvP,MACAuhC,MAAA38B,UAIA7H,YAAA,sCACA4R,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,aAAA,aAAA,UAAA,aAAA,kBAAA,aAAA,YAAA4xB,yBAEAC,8BAAA,SAAAz/B,KAAAyb,WACA,GAAA3N,MAAAN,SAAAC,UAmBA,OAlBAD,UAAAiO,UAAAne,IAAA,wDAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAA,QAAA8rB,MAGA9yB,OAAA9I,OAAA8P,OAAA8rB,MAAA,SAAAn8B,OACA,MAAAA,UAAA,GAAAA,SAAA,EACAsJ,IAAAU,KAAA,iBAAAoG,YAAA,UAEA9G,IAAAU,KAAA,iBAAAsG,SAAA,YANAhV,KAAAgR,MAAA,8DAUAvD,WAAA,SAAAO,IAAA+G,QACA,MAAAvH,WACA0xB,QAAAnqB,OAAAmL,YAIA1S,SAAAC,WACAK,KAAAA,KACAyP,QAAA,UACA5P,SAAA,OAIA3T,OAAA4T,UAAA,0BAAA,OAAA,cAAA6xB,gCAEAE,6BAAA,SAAApvB,MAAAC,OAAAiQ,IAAAgX,WAAAxC,gBAAAjb,UACA,GAAAlM,KAqGA,OApGAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,QAAA8L,YA+FA,OA9FAlM,QAAA+yB,OAAA,EACA/yB,OAAAmH,IAAA,aAAA,SAAAgB,IAAA1M,UAAAzL,OAAAgjC,YAiBA,MAhBAhzB,QAAA+yB,OAAA,EACA/yB,OAAAizB,aAAAD,WACAhzB,OAAAyS,GAAAhQ,OAAA7E,WAAA,eACA9C,QAAAW,UACAkb,UACA3mB,OAAAA,OACAkjC,aAAA,EACAC,UAEAlzB,IAAAU,KAAA,iBAAAiO,KAAA,UACA3O,IAAAU,KAAA,UAAAiO,KAAA,oBACA3O,IAAAU,KAAA,cAAAvP,IAAA,IACA6O,IAAAU,KAAA,iBAAAsG,SAAA,UACAhH,IAAAU,KAAA,iBAAAoG,YAAA,YACA9G,IAAAU,KAAA,0BAAAoG,YAAA,YACA9G,IAAAU,KAAA,4BAAAoG,YAAA,YACAmgB,gBAAA3a,KAAAtM,OAEAD,OAAAmH,IAAA,cAAA,SAAAgB,IAAAsK,IAuBA,MAtBAzS,QAAAyS,GAAAA,GACAzS,OAAA+yB,OAAA,EACA9yB,IAAAU,KAAA,iBAAAiO,KAAA,QACA3O,IAAAU,KAAA,UAAAiO,KAAA,qBACA3O,IAAAU,KAAA,cAAAvP,IAAA,IACAqhB,GAAA2S,YACAnlB,IAAAU,KAAA,iBAAAoG,YAAA,UACA9G,IAAAU,KAAA,iBAAAsG,SAAA,cAEAhH,IAAAU,KAAA,iBAAAsG,SAAA,UACAhH,IAAAU,KAAA,iBAAAoG,YAAA,aAEA0L,GAAAoc,iBACA5uB,IAAAU,KAAA,0BAAAsG,SAAA,YAEAhH,IAAAU,KAAA,0BAAAoG,YAAA,YAEA0L,GAAAmc,mBACA3uB,IAAAU,KAAA,4BAAAsG,SAAA,YAEAhH,IAAAU,KAAA,4BAAAoG,YAAA,YAEAmgB,gBAAA3a,KAAAtM,OAEAG,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAA8yB,gBAAA7yB,KAAAnF,OAGA,OAFAkF,OAAAG,iBACAF,KAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAK,YAGAqL,SAAAE,MAAAD,cACAlM,OAAA+yB,OACA33B,QAAAoH,MAAA4J,OAAA,cAAApM,OAAAyS,IACA2gB,eAAA,uBAEAh4B,QAAAoH,MAAAmP,KAAA3R,OAAAyS,IACA2gB,eAAA,uBAEAh4B,QAAAO,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAAJ,cACAgb,gBAAAtc,MAAA3K,KACAypB,WAAA3rB,WAAAq1B,eAAAviC,QAEAuK,QAAAO,KAAA,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAAJ,cACA3L,KAAAc,UAAAxQ,MACAA,KAAAuQ,eACAzQ,SAAAI,OAAA,QAAAF,KAAAuQ,gBADA,UAnBA,SAwBAhV,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAH,IAAAc,GAAA,QAAA,SAAA,SAAAT,OAKA,MAJAA,OAAAG,iBACAT,OAAAtH,OAAA,WACA,MAAAsH,QAAAyS,GAAA+M,WAEA0H,gBAAAtc,MAAA3K,OAEAA,IAAAozB,QAAA,SAAA/yB,OACA,GAAAqI,KAEA,OADAA,MAAArI,MAAAsI,QAAAtI,MAAAsI,QAAAtI,MAAAwO,MACA,KAAAnG,MACAue,gBAAAtc,MAAA3K,KACAD,OAAAtH,OAAA,WACA,MAAAsH,QAAAyS,GAAA+M,YAHA,SAOAxf,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,2BAAA,UAAA,WAAA,eAAA,aAAA,kBAAA,aAAA+xB,+BAEAD,+BAAA,SAAAnvB,MAAAkQ,IAAAtgB,WAAA80B,gBAAAjb,UACA,GAAAlM,KA2CA,OA1CAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,QAAA8L,YAqCA,OApCAlM,QAAAmH,IAAA,cAAA,SAAAgB,IAAA1M,UAAAzL,QAMA,MALAgQ,QAAA,QACAvE,UAAAA,UACA63B,SAAAtjC,OACAujC,KAAA,IAEArM,gBAAA3a,KAAAtM,OAEAG,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAC,MAAAnF,OAKA,OAJAkF,OAAAG,iBACAF,KAAAN,IAAAU,KAAA,QAAA1P,WACAiQ,qBAAA,IAEAX,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAsX,IAAAwB,YAAAsf,WAAAxzB,OAAA,OAAAvE,UAAAuE,OAAA,OAAAszB,SAAAtzB,OAAA,OAAAuzB,MACAn4B,QAAAO,KAAA,SAAAxD,QAGA,MAFA8T,UAAAK,OAAAJ,cACA9Z,WAAA2L,WAAA,sBAAA5F,QACA+uB,gBAAAtc,MAAA3K,OAEA7E,QAAAO,KAAA,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAAJ,cACA3L,KAAAc,UAAAxQ,MACAA,KAAAuQ,eACAzQ,SAAAI,OAAA,QAAAF,KAAAuQ,gBADA,UAbA,SAkBAhV,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAJ,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,6BAAA,UAAA,eAAA,aAAA,kBAAA,aAAA8xB,iCAEAH,4BAAA,SAAAtK,gBAAAuM,kCAAA/lB,WACA,GAAA3N,KA8FA,OA7FAA,MAAA,SAAAC,OAAAC,KACA,GAAAyzB,eAAAC,YAAAC,gBAAAhtB,OAAAitB,aAAAC,aAAAC,aAwFA,OAvFAD,cAAA,KACAD,aAAA,KACAE,cAAArmB,UAAAne,IAAA,mDAAA,GACAqkC,gBAAA,SAAAI,QACA,GAAAC,iBAOA,OANAA,kBAAAD,OACAC,iBAAAA,iBAAA9jC,QAAA,IAAA,KAAAA,QAAA,IAAA,KAAAA,QAAA,IAAA,KACA8jC,iBAAAA,iBAAA9jC,QAAA,IAAA,KAAAA,QAAA,IAAA,KAAAA,QAAA,IAAA,KACA8jC,iBAAAA,iBAAA9jC,QAAA,IAAA,KAAAA,QAAA,IAAA,KAAAA,QAAA,IAAA,KACA8jC,iBAAAA,iBAAA9jC,QAAA,IAAA,KAAAA,QAAA,IAAA,KAAAA,QAAA,IAAA,KACA8jC,iBAAAA,iBAAA9jC,QAAA,IAAA,KAAAA,QAAA,IAAA,KAAAA,QAAA,IAAA,MAGAwjC,YAAA,SAAA57B,KAAAwC,MACA,GAAAsG,SAKA,OAJAA,UAAAtG,KAAA8Y,kBAAA6gB,cACArzB,SAAA+yB,gBAAA/yB,UACA9I,KAAAA,KAAAm8B,cACAn8B,KAAA67B,gBAAA77B,MACAvL,EAAA0O,SAAA2F,SAAA9I,OAEA6O,OAAA,SAAAghB,SAAA7vB,MACA,GAAAoQ,KAAAyG,KAAA1U,KAiBA,OAhBAA,OAAA1N,EAAAmS,MAAAqB,OAAA5F,aAAA,GACA,MAAAwtB,WACA1tB,MAAA1N,EAAA8D,OAAA4J,OACAU,GAAAgtB,SAAAhtB,MAGA,MAAA7C,OACAmC,MAAA1N,EAAA8N,OAAAJ,MAAA1N,EAAA2nC,QAAAR,YAAA57B,QAEAoQ,KACAyf,SAAAA,SACA1tB,MAAA1N,EAAAm2B,MAAAzoB,MAAA,GACA42B,SAAA52B,MAAAtI,OAAA,GAEAgd,KAAAmlB,cAAA5rB,KACAlI,IAAAU,KAAA,gBAAAiO,KAAAA,MACA6kB,kCAAAznC,KAAAiU,MAEAyzB,cAAA,WAEA,MADAD,mCAAA5L,OACAX,gBAAAtc,MAAA3K,MAEAD,OAAAmH,IAAA,kBAAA,SAAAgB,IAAAnS,MACA,GAAAivB,aAKA,OAJA4O,cAAA79B,KACAivB,aAAAjvB,KAAAsc,YACAwhB,aAAA9zB,OAAAnF,UAAAoqB,cACAre,OAAAktB,cACA5M,gBAAA3a,KAAAtM,KAAAtE,KAAA,WACA,MAAAsE,KAAAU,KAAA,SAAA6L,YAGAxM,OAAA9I,OAAA,cAAA,SAAAk9B,eACA,MAAA,OAAAA,eACAxtB,OAAAktB,aAAAM,eACAn0B,IAAAU,KAAA,SAAA6L,SAFA,SAKAvM,IAAAc,GAAA,QAAA,kBAAA,SAAAT,OACA,GAAA6O,OAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAskB,gBACA1zB,OAAAtH,OAAA,WAEA,MADAsH,QAAAjC,WAAA,oBAAAoR,OAAAte,KAAA,WAAAgjC,cACA7zB,OAAAq0B,YAAA,SAGAp0B,IAAAc,GAAA,QAAA,sBAAA,SAAAT,OAIA,MAHAA,OAAAG,iBACAH,MAAAuQ,kBACA6iB,gBACA1zB,OAAAtH,OAAA,WAEA,MADAsH,QAAAq0B,YAAA,KACAr0B,OAAAjC,WAAA,oBAAA,KAAA81B,kBAGA5zB,IAAAc,GAAA,QAAA,SAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAizB,gBACA1zB,OAAAtH,OAAA,WACA,MAAAsH,QAAAq0B,YAAA,SAGAr0B,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIAjZ,YAAA,4CACA4R,KAAAA,OAIA9T,OAAA4T,UAAA,kBAAA,kBAAA,oCAAA,cAAA2xB,8BAEAQ,0BAAA,SAAAxvB,MAAA0kB,gBAAAuM,kCAAA/lB,WACA,GAAA3N,KA+EA,OA9EAA,MAAA,SAAAC,OAAAC,KACA,GAAAyzB,eAAAY,iBAAA1tB,OAAAitB,aAAAE,aAyEA,OAxEAF,cAAA,KACAE,cAAArmB,UAAAne,IAAA,mDAAA,GACA+kC,iBAAA,SAAAv8B,MACA,GAAAw8B,cAAAr6B,KAiBA,OAhBA,OAAAnC,OACAA,KAAA,IAEAw8B,aAAA,SAAAx8B,KAAAwC,MACA,GAAAsG,SACA,OAAAgzB,eAAArnC,EAAAmU,KAAAkzB,aAAApP,SAAA,SAAA/3B,GACA,MAAAA,KAAA6N,KAAAK,MAEA,GAEAiG,SAAAtG,KAAA8Y,kBAAA6gB,cACAn8B,KAAAA,KAAAm8B,cACA1nC,EAAA0O,SAAA2F,SAAA9I,QAEAmC,MAAA1N,EAAAmS,MAAAqB,OAAA5F,aAAA,GACAF,MAAA1N,EAAA8N,OAAAJ,MAAA1N,EAAA2nC,QAAAI,aAAAx8B,QAGA6O,OAAA,SAAA1M,OACA,GAAAiO,KAAAyG,IAOA,OANAzG,MACAyf,UAAA,EACA1tB,MAAA1N,EAAAm2B,MAAAzoB,MAAA,GACA42B,SAAA52B,MAAAtI,OAAA,GAEAgd,KAAAmlB,cAAA5rB,KACAlI,IAAAU,KAAA,gBAAAiO,KAAAA,OAEA8kB,cAAA,WAEA,MADAD,mCAAA5L,OACAX,gBAAAtc,MAAA3K,MAEAD,OAAAmH,IAAA,cAAA,SAAAgB,IAAAnS,MACA,GAAAkE,MAOA,OANA25B,cAAA79B,KACAkE,MAAAo6B,mBACA1tB,OAAA1M,OACAgtB,gBAAA3a,KAAAtM,KAAAtE,KAAA,WACA,MAAAsE,KAAAU,KAAA,SAAA6L,UAEAinB,kCAAAznC,KAAAiU,OAEAD,OAAA9I,OAAA,cAAA,SAAAk9B,eACA,GAAAl6B,MACA,IAAA,MAAAk6B,cAKA,MAFAl6B,OAAAo6B,iBAAAF,eACAxtB,OAAA1M,OACA+F,IAAAU,KAAA,SAAA6L,UAEAvM,IAAAc,GAAA,QAAA,kBAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAA6O,OAIA,OAHAukB,iBACApzB,MAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACApP,OAAAtH,OAAA,WAEA,MADAsH,QAAAq0B,YAAA,KACAr0B,OAAAjC,WAAA,gBAAAoR,OAAAte,KAAA,iBAGAoP,IAAAc,GAAA,QAAA,SAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAizB,gBACA1zB,OAAAtH,OAAA,WACA,MAAAsH,QAAAq0B,YAAA,SAGAr0B,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIAjZ,YAAA,sCACA4R,KAAAA,OAIA9T,OAAA4T,UAAA,gBAAA,UAAA,kBAAA,oCAAA,cAAAmyB,6BAEA9+B,KAAA9G,MC/mBA,WACA,GAAAooC,QAAAC,gBAAAxoC,OAAAsJ,WAAApJ,MAAAuJ,OAEAvJ,OAAAC,KAAAD,MAEAoJ,WAAAnJ,KAAAD,MAAAoJ,WAEAG,QAAAtJ,KAAAD,MAAAuJ,QAEAzJ,OAAA8G,QAAA9G,OAAA,eAEAwoC,gBAAA,SAAAjnB,SAAApb,YACA,GAAA2N,KAiBA,OAhBAA,MAAA,SAAAC,OAAAC,KAYA,MAXAuN,UAAAknB,QAAA,WAEA,MADAxsB,GAAAkG,SAAAC,MAAApH,SAAA,iBACAhH,IAAAgH,SAAA,YAEAuG,SAAAmnB,MAAA,WAEA,MADAzsB,GAAAkG,SAAAC,MAAAtH,YAAA,iBACA9G,IAAA8G,YAAA,YAEA3U,WAAA+U,IAAA,sBAAA,WACA,MAAAqG,UAAAonB,2BAEAxiC,WAAA+U,IAAA,yBAAA,WACA,MAAAqG,UAAAqnB,YAIA90B,KAAAA,OAIA9T,OAAA4T,UAAA,YAAA,WAAA,aAAA40B,kBAEAD,OAAA,WACA,GAAAxhC,QAAA8hC,cAAAC,aACAA,gBAAA,EACAD,eACAjmC,SAAA,EACAmmC,QAAA,KAEAhiC,OAAAxG,EAAAyoC,SAAAH,eACA1oC,KAAAkC,IAAA,WACA,MAAA,YACA,MAAAymC,eAAA,OACA/hC,OAAAnE,SAAA,IAIAzC,KAAAwf,MACA,aAAA,SAAAxZ,YACA,GAAAknB,YAAAub,MAAA1oB,MAAA+oB,aA4BA,OA3BAA,eAAA,EACAL,MAAA,WACA,MAAA7hC,QAAAxG,EAAAyoC,SAAAH,gBAEAxb,WAAA,SAAA6b,OACA,GAAA/F,MAAAgG,QAAAnnB,YAIA,OAHA,OAAAknB,QACAA,OAAA,GAEAD,eACAjnB,aAAA,EACAknB,QACAC,SAAA,GAAAloC,OAAAC,UACAiiC,KAAAgG,QAAAF,cACA9F,KAAAp8B,OAAAgiC,UACA/mB,aAAAjb,OAAAgiC,QAAA5F,OAGA15B,QAAAuY,aAAA,WACA,MAAA7b,YAAA2L,WAAA,iBAVA,QAcAoO,MAAA,WAEA,MADA+oB,gBAAA,GAAAhoC,OAAAC,UACAiF,WAAA2L,WAAA,kBAGA82B,MAAAA,MACAvb,WAAAA,WACAnN,MAAAA,MACAyoB,uBAAA,WACA,MAAA5hC,QAAAnE,QACAsd,QADA,QAIAuoB,QAAA,SAAAzgC,IACA,MAAA7B,YAAA+U,IAAA,eAAAlT,KAEA0gC,MAAA,SAAA1gC,IACA,MAAA7B,YAAA+U,IAAA,aAAAlT,KAEAsb,eAAA,WACA,MAAAwlB,gBAAA,GAEAvmB,sBAAA,WACA,MAAAumB,gBAAA,OAOA9oC,OAAA8f,SAAA,YAAAyoB,UAEAthC,KAAA9G,MC/GA,WACA,GAAAipC,kBAAAppC,OACAqH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA9H,QAAA8G,QAAA9G,OAAA,eAEAopC,iBAAA,SAAAhhC,YAGA,QAAAghC,oBACA,MAAAA,kBAAAvhC,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAqBA,MAxBAd,QAAA+hC,iBAAAhhC,YAMAghC,iBAAAxhC,UAAAsY,MAAA,SAAAgD,QACA,MAAAA,QAAAJ,SAAA,WAAA,QACAI,OAAAte,KAAA,sBAAAse,OAAAP,QACAO,OAAAlI,SAAA,WACAkI,OAAAP,KAAA,oFAIAymB,iBAAAxhC,UAAAyY,OAAA,SAAA6C,QACA,GAAAmmB,WACA,OAAAnmB,QAAAJ,SAAA,YACAumB,WAAAnmB,OAAAte,KAAA,uBACAse,OAAAte,KAAA,sBAAA,MACAse,OAAAP,KAAA0mB,YACAnmB,OAAApI,YAAA,YAJA,QAQAsuB,kBAEAlpC,MAAAyI,SAEA3I,OAAAsT,QAAA,aAAA81B,mBAEAniC,KAAA9G,MCtCA,WACA,GAAAmpC,4BAAAC,kBAAAzgC,SAAAE,SAAAhJ,OAAAE,KAEAA,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,eAEAupC,kBAAA,SAAAhzB,MAAAkL,WAcA,GAAA3N,MAAAN,QAuDA,OAtDAA,UAAAiO,UAAAne,IAAA,yCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAA9H,OAAA6L,EAwCA,OAvCA/D,OAAAzO,IAAAqN,aACA1G,OAAA,SAAA6L,IACA,GAAAyH,cAAAub,YAAAC,iBAIA,OAHAA,mBAAAz1B,IAAAU,KAAA,cACA80B,YAAAx1B,IAAAU,KAAA,8BACAuZ,aAAAla,OAAAka,aACAA,aAAAzH,GAAAziB,SACAylC,YAAA19B,KAAAmiB,aAAAzH,GAAAziB,QAAAwH,MACAk+B,kBAAApnB,IAAA,QAAA4L,aAAAzH,GAAAziB,QAAAo2B,QAFA,QAKAnmB,IAAAc,GAAA,QAAA,aAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACA5Q,IAAAU,KAAA,eAAAgQ,UAAApE,SAEAtM,IAAAc,GAAA,QAAA,UAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAA6O,QAAAsD,EAQA,OAPAnS,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAqD,GAAAzS,OAAA/I,MAAA+P,OAAA2uB,YACAljB,GAAAziB,OAAAmf,OAAAte,KAAA,aACA+V,OAAA6L,IACAxS,IAAAU,KAAA,eAAAgQ,UAAA/F,QACA5K,OAAAtH,OAAA,WACA,MAAA8J,OAAAmP,KAAAc,IAAA9W,KAAA,WACA,MAAAqE,QAAA/I,MAAA+P,OAAA4uB,iBAIA51B,OAAAmH,IAAA,qBAAA,WACA,MAAAP,QAAA5G,OAAA/I,MAAA+P,OAAA2uB,eAEA31B,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAqL,GAAAzS,OAAA/I,MAAA+P,OAAA2uB,YACA/uB,OAAA6L,IACA1d,SAAAiL,OAAA,UAAA,SAAAlF,SACA,GAAA8T,KAKA,OAJAA,MAAAnP,UACAo2B,SAAA/6B,QAAAqf,cAEAla,IAAA0nB,OAAA/Y,MACA,KAAA5O,OAAAlF,QAAAgM,eAAA/Q,QAAA,cACAkK,IAAAsT,OAAA,SACAtT,IAAAU,KAAA,KAAAsG,SAAA,kBAFA,WAOAlH,KAAAA,OAIA9T,OAAA4T,UAAA,cAAA,UAAA,cAAA21B,oBAEAD,2BAAA,SAAA/yB,MAAAkL,WAcA,GAAA3N,MAAA+1B,kBAAAC,gBAqDA,OApDAD,mBAAApoB,UAAAne,IAAA,mDAAA,GACAwmC,iBAAA,SAAA91B,IAAAwR,KAAAoI,gBACA,GAAAmc,eAAAC,mBAGA;MAFAA,qBAAAh2B,IAAAU,KAAA,cACAq1B,cAAA/1B,IAAAU,KAAA,kCACAkZ,eAAApI,KAAAzhB,SACAgmC,cAAAj+B,KAAA8hB,eAAApI,KAAAzhB,QAAAwH,MACAy+B,oBAAA3nB,IAAA,QAAAuL,eAAApI,KAAAzhB,QAAAo2B,QAFA,QAKArmB,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAAqE,SAAAC,YAAAvB,IAqCA,OApCA/C,OAAAzO,IAAAqN,aACAmE,KAAAzR,OAAA/I,MAAA+P,OAAAkvB,qBACAljB,YAAAhT,OAAA/I,MAAA+P,OAAAgM,aACAD,UAAAC,YACA/S,IAAAc,GAAA,QAAA,eAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACA5Q,IAAAU,KAAA,eAAAgQ,UAAApE,SAEAtM,IAAAc,GAAA,QAAA,UAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAA6O,OAOA,OANA7O,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAqC,KAAAzhB,OAAAmf,OAAAte,KAAA,aACAoP,IAAAU,KAAA,eAAAgQ,UAAA/F,QACAmrB,iBAAA91B,IAAAwR,KAAAzR,OAAA6Z,gBACA9G,SACA/S,OAAAtH,OAAA,WACA,MAAA8J,OAAAmP,KAAAF,MAAA9V,KAAA,WAEA,MADAqE,QAAA/I,MAAA+P,OAAA4uB,UACA51B,OAAA6O,MAAA,oCAJA,UASA1iB,MAAA4I,SAAAiL,OAAA,UAAA,SAAAlF,SAKA,MAJAmF,KAAA0nB,OAAAmO,mBACAD,SAAA/6B,QAAAgf,iBAEAic,iBAAA91B,IAAAwR,KAAAzR,OAAA6Z,gBACA,KAAA/e,QAAAgM,eAAA/Q,QAAA,gBACAkK,IAAAsT,OAAA,SACAtT,IAAAU,KAAA,KAAAsG,SAAA,kBAFA,SAKAjH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,uBAAA,UAAA,cAAA01B,6BAEArtB,EAAAjU,GAAA0c,QAAA,WACA,GAAA1Q,KAAA2K,MAAA3a,SAAAkmC,aAAAC,UAAA7pB,IAuEA,OAtEAtM,KAAA7T,KACAgqC,UAAA,WACA,MAAA,YACA,GAAAC,eAAAC,YAAAC,aAAAC,WAAAC,aAAAC,WAAAC,SAAAC,UAAAC,QAAAC,SAmBA,OAlBA72B,KAAAqO,KACAyoB,QAAA,QACAC,WAAA,WAEAR,WAAAtuB,EAAAlX,QAAAimC,YACAZ,cAAAG,WAAAtuB,EAAAlX,QAAAkmC,SACAT,aAAAvuB,EAAAlX,QAAAK,QACAklC,aAAAE,aACAH,YAAA,EACAO,QAAA52B,IAAAk3B,SAAAC,IACAV,WAAAG,QAAA52B,IAAAi3B,SACAJ,UAAA72B,IAAA5O,QACAslC,SAAA12B,IAAAk3B,SAAAE,KACAT,UAAA32B,IAAAk3B,SAAAE,KAAAP,UACA72B,IAAAqO,KACAyoB,QAAA,OACAC,WAAA,YAEAX,eAAAK,YAAAG,SAAAL,YAAAG,UAAAL,aAAAC,cAAAK,YAEAxqC,MACA+pC,aAAA,WACA,MAAA,UAAAzrB,SAOA,MANAA,UACAA,QAAAxX,KAAA+M,KAEAA,IAAAq3B,QAAA,WACA,MAAAr3B,KAAA8G,YAAA,UAAAA,YAAA,SAEA9G,IAAAmH,IAAA,iBAEAhb,MACA6D,SAAA,WACA,MAAA,YACA,MAAAiY,GAAA,mBAAAW,KAAA,WACA,MAAAX,GAAA9b,MAAAilC,QAAA,mBAGAjlC,MACAmgB,KAAA,WACA,MAAA,UAAA7B,SACA,MAAAzK,KAAA8O,SAAA,UACAnE,SAEA3a,WACAmmC,aACAn2B,IAAAgH,SAAA,OAEAhH,IAAAs3B,OAAA,WAGA,MAFAt3B,KAAAgH,SAAA,UACAiB,EAAAkG,SAAAC,MAAAjH,IAAA,WACAc,EAAAkG,SAAAC,MAAAF,IAAA,gBAAA,WACA,MAAAle,gBAGAgQ,IAAAc,GAAA,cAAA,WACA,MAAAo1B,cAAAzrB,cAIAte,MACAwe,MAAA,WACA,MAAA,YACA,MAAA3K,KAAAoxB,QAAA,iBAEAjlC,OAEAmgB,KAAAA,KACA3B,MAAAA,MACA3a,SAAAA,YAIAiD,KAAA9G,MChPA,WACA,GAAAorC,yBAAAvrC,OAAAE,KAEAA,OAAAC,KAAAD,MAEAF,OAAA8G,QAAA9G,OAAA,eAEAurC,wBAAA,SAAAvlC,KAAAe,QACA,GAAAykC,YAGA,OAFArrC,MAAA4G,OAAAA,OACAykC,YAAArrC,KAAA4G,OAAAzD,IAAA,cAAA,MACAkoC,aACAxlC,KAAAQ,MAAA,wCACAilC,MAAA1kC,OAAAykC,aAAAE,UACA,SAAAC,WAEA,MADA3lC,MAAAgR,MAAA9O,MAAAlC,KAAAmC,WACAsjC,MAAAG,iBAAAD,cAGA3lC,KAAAQ,MAAA,gDACA,WACA,MAAAR,MAAAgR,MAAA9O,MAAAlC,KAAAmC,cAKAnI,OAAAuE,QAAA,qBAAA,OAAA,YAAAgnC,2BAEAtkC,KAAA9G,MC5BA,WACA,GAAA0rC,uBAAAC,mBAAAC,iBAAAC,cAAAljC,SAAA9I,OAAAE,MAAA0J,KACAE,WAAAA,SAAA,SAAAC,MAAA,IAAA,GAAAC,GAAA,EAAAC,EAAA9J,KAAAwF,OAAAsE,EAAAD,EAAAA,IAAA,GAAAA,IAAA7J,OAAAA,KAAA6J,KAAAD,KAAA,MAAAC,EAAA,OAAA,GAEA9J,OAAAC,KAAAD,MAEA0J,KAAAzJ,KAAAD,MAAA0J,KAEAd,SAAA3I,KAAAD,MAAA4I,SAEA9I,OAAA8G,QAAA9G,OAAA,eAEAgsC,cAAA,WACA,GAAAC,WAAAn4B,KAAAo4B,MAwBA,OAvBAD,WAAA,SAAAxN,GACA,MAAAl+B,GAAA0iC,QAAAxE,GACAA,EAAA59B,KAAA,MAEA,IAEAqrC,OAAA,SAAAzN,GACA,GAAAvyB,OACA,OAAAuyB,IAGAvyB,OAAA3L,EAAAk+B,EAAAj5B,MAAA,MAAAhF,IAAA,SAAAC,GACA,MAAAF,GAAA4J,IAAAP,KAAAnJ,KAEAyL,OAAAxB,aAEAoJ,KAAA,SAAAC,OAAAC,IAAA+G,OAAA0H,OAGA,MAFAA,OAAA0pB,YAAA1nC,KAAAwnC,WACAxpB,MAAA2pB,SAAA3nC,KAAAynC,QACAn4B,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIAoI,QAAA,UACAzP,KAAAA,OAIA9T,OAAA4T,UAAA,SAAAo4B,eAEAH,sBAAA,WACA,GAAA/3B,MAAAP,SAkCA,OAjCAA,YACA84B,QAAA9rC,EAAAiT,SAAA,8IACA84B,OAAA/rC,EAAAiT,SAAA,qJACA+4B,UAAAhsC,EAAAiT,SAAA,yJAEAM,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAuBA,OAtBAA,QAAA,SAAA6xB,SACA,GAAA7pB,MAAAukB,KAAA1zB,QAcA,OAbAA,UAAAD,UAAAwH,OAAA0xB,oBACAD,QAAAE,OACAxF,KAAA3mC,EAAAC,IAAAgsC,QAAA,SAAAG,KACA,GAAAxS,MAEA,OADAA,OAAApmB,OAAAlF,QAAA+9B,YAAAD,MAEAphC,KAAAohC,IACAxS,MAAAA,SAGAxX,KAAAnP,UACA0zB,KAAAA,OAEAlzB,IAAA2O,KAAAA,OAEA5O,OAAA9I,OAAA8P,OAAA8xB,eAAA,SAAA3F,MACA,MAAA,OAAAA,KACAvsB,OAAAusB,MADA,SAIAnzB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,iBAAAi4B,uBAEAC,mBAAA,SAAArlB,IAAAhF,WACA,GAAAqrB,WAAAC,UAAAj5B,KAAAk5B,YA8IA,OA7IAD,WAAA,GACAD,UAAA,IACAE,aAAAvrB,UAAAne,IAAA,oCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAAy2B,UAAAC,YAAAC,eAAAC,yBAAAC,WAAAC,WAAAC,aAAAC,cAqIA,OApIAH,YAAA,SAAAnG,KAAAuG,YACA,GAAAvxB,KAAAyG,IAiBA,OAhBAzG,MACAgrB,KAAA3mC,EAAAC,IAAA0mC,KAAA,SAAA/Z,GACA,OACA5hB,KAAA4hB,EACAgN,MAAAsT,WAAAtgB,OAIA5sB,EAAAC,IAAA0b,IAAAgrB,KAAA,WACA,MAAA,UAAAyF,KACA,MAAAA,KAAAxS,MACAwS,IAAAe,MAAA,0BAAAf,IAAAxS,MADA,SAIAh6B,OACAwiB,KAAAqqB,aAAA9wB,KACAlI,IAAAU,KAAA,sBAAAiO,KAAAA,OAEA6qB,eAAA,WACA,MAAAx5B,KAAAU,KAAA,SAAAoG,YAAA,WAEAqyB,eAAA,WACA,MAAAn5B,KAAAU,KAAA,SAAAsG,SAAA,WAEAsyB,WAAA,WAEA,MADAt5B,KAAAU,KAAA,SAAAvP,IAAA,IACA6O,IAAAU,KAAA,SAAAi5B,aAAA,UAEAV,SAAA,SAAAviC,OACA,GAAAw8B,KAEA,OADAx8B,OAAAd,KAAAc,MAAA0W,eACA,IAAA1W,MAAA/E,QAGAuhC,KAAA3mC,EAAAmS,MAAA8D,OAAAmP,aAAA,GACA,MAAAuhB,OACAA,SAEAp9B,QAAA7C,KAAAigC,KAAAx8B,OAAA,GACAw8B,KAAAziC,KAAAiG,OAEAqJ,OAAAtH,OAAA,WACA,MAAA+J,QAAAiiB,cAAAyO,QAEAiG,kBAbA,QAeAD,YAAA,SAAAxiC,OACA,GAAAw8B,KAEA,OADAx8B,OAAAd,KAAAc,MAAA0W,eACA,IAAA1W,MAAA/E,QAGAuhC,KAAA3mC,EAAAmS,MAAA8D,OAAAmP,aAAA,GACAuhB,KAAA3mC,EAAAq4B,KAAAsO,KAAAx8B,OACAqJ,OAAAtH,OAAA,WACA,MAAA+J,QAAAiiB,cAAAyO,SANA,QASAqG,aAAA,WACA,GAAA7iC,MAGA,OAFAA,OAAAsJ,IAAAU,KAAA,SAAAvP,MACA8nC,SAAAviC,OACA4iC,cAEAF,yBAAA,WACA,MAAA,UAAAjgC,OACA,GAAAygC,WAEA,OADAA,YAAAzgC,MAAAhI,MACAgI,MAAAhI,IAAAyoC,WAAA9wB,UAAA,EAAA8wB,WAAAjoC,OAAA,MAEAxF,MACA6T,IAAAc,GAAA,WAAA,QAAA,SAAAT,OACA,MAAAA,OAAAsI,UAAAowB,UAGA14B,MAAAG,iBAHA,SAKAR,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,GAAA6O,OAEA,OADAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACA9O,MAAAsI,UAAAowB,UACAQ,eACAl5B,MAAAsI,UAAAmwB,WACAM,yBAAAlqB,QACAqqB,gBAEArqB,OAAA/d,MAAAQ,OACA6nC,iBAEAL,mBAIAn5B,IAAAc,GAAA,QAAA,QAAA,SAAAT,OAEA,MADAA,OAAAG,iBACA+4B,iBAEAv5B,IAAAc,GAAA,QAAA,eAAA,SAAAT,OACA,GAAA6O,QAAAxY,KAIA,OAHA2J,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAzY,MAAAwY,OAAA8b,SAAA,aAAAlzB,OACAohC,YAAAxiC,SAEA5B,SAAAiL,OAAA,UAAA,SAAAlF,SACA,GAAAg/B,oBAQA,OAPAA,qBAAA,SAAAC,SAAAC,UACA,GAAAC,KAIA,OAHAA,MAAAD,SAAApiC,QAAAA,QACAqiC,KAAA3rB,IAAA,QAAA0rB,SAAA7qB,OAAA9d,OACA4oC,KAAA3rB,IAAA,MAAAyrB,SAAA3C,KACA6C,KAAA3rB,IAAA,OAAAyrB,SAAA1C,OAEAp3B,IAAAU,KAAA,SAAAi5B,cACAM,OAAA1tC,EAAAiK,KAAAqE,QAAA+9B,aACAkB,UACAI,GAAA,WACAC,MAAAN,qBAEA9nB,OAAA,SAAA1R,MAAAggB,IAEA,MADA4Y,UAAA5Y,GAAAtqB,KAAAW,OACA2pB,GAAAtqB,KAAAW,MAAA,QAIAqJ,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAghB,MACA,GAAA17B,KAAAiiC,UAEA,OADAA,aAAA,OAAAjiC,IAAAuI,OAAAlF,SAAArD,IAAAohC,YAAA,YACAS,WAAAnG,KAAAuG,cAEA15B,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAyP,QAAA,UACArhB,YAAA,gCAIAlC,OAAA4T,UAAA,eAAA,eAAA,cAAAk4B,qBAEAC,iBAAA,SAAAtO,WAAAlnB,MAAAkQ,IAAA/hB,SAAAwzB,QAAAzW,WACA,GAAAqrB,WAAAC,UAAAqB,QAAAt6B,KAAAk5B,YA6MA,OA5MAD,WAAA,GACAqB,QAAA,GACAtB,UAAA,IACAE,aAAAvrB,UAAAne,IAAA,kCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAAy2B,UAAAC,YAAAmB,iBAAAC,qBAAAC,UAAApB,eAAA/U,WAAAgV,yBAAAoB,qBAAAnB,WAAAC,WAAAC,aAAAkB,iBAAAC,qBAAAC,UAAAnB,cAmMA,OAlMApV,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAAiR,OAAAwd,eAEA8U,WAAA,SAAAnG,KAAAuG,YACA,GAAAvxB,KAAAyG,IAWA,OAVAzG,MACAgrB,KAAA3mC,EAAAC,IAAA0mC,KAAA,SAAA/Z,GACA,OACA5hB,KAAA4hB,EACAgN,MAAAsT,WAAAtgB,MAGAiL,WAAAA,cAEAzV,KAAAqqB,aAAA9wB,KACAlI,IAAAU,KAAA,sBAAAiO,KAAAA,OAEA6rB,qBAAA,WAGA,MAFAx6B,KAAAU,KAAA,YAAAvC,SACA6B,IAAAU,KAAA,SAAAvC,SACA6B,IAAAU,KAAA,SAAAvC,UAEAs8B,iBAAA,WACA,MAAAz6B,KAAAU,KAAA,YAAAoG,YAAA,WAEAuzB,iBAAA,WACA,MAAAr6B,KAAAU,KAAA,YAAAsG,SAAA,WAEA0zB,qBAAA,WACA,MAAA16B,KAAAU,KAAA,iBAAAoG,YAAA,WAEAwzB,qBAAA,WACA,MAAAt6B,KAAAU,KAAA,iBAAAsG,SAAA,WAEAwyB,eAAA,WACA,MAAAx5B,KAAAU,KAAA,SAAAoG,YAAA,WAEAqyB,eAAA,WACA,MAAAn5B,KAAAU,KAAA,SAAAsG,SAAA,WAEA2zB,UAAA,WACA,MAAA36B,KAAAU,KAAA,SAAAoG,YAAA,UAAAyF,SAEAguB,UAAA,WACA,MAAAv6B,KAAAU,KAAA,SAAAsG,SAAA,UAAA4zB,QAEAtB,WAAA,WAEA,MADAt5B,KAAAU,KAAA,SAAAvP,IAAA,IACA6O,IAAAU,KAAA,SAAAi5B,aAAA,UAEAV,SAAA/U,QAAAhb,QAAA,SAAAxS,OACA,GAAA2G,OAAA4C,QAAAC,UAAAgzB,IAEA,OADAx8B,OAAAd,KAAAc,MAAA0W,eACA,IAAA1W,MAAA/E,QAGAuhC,KAAA3mC,EAAAmS,MAAA8D,OAAAmP,YAAAuhB,MAAA,GACA,MAAAA,OACAA,SAEAp9B,QAAA7C,KAAAigC,KAAAx8B,OAAA,GACAw8B,KAAAziC,KAAAiG,OAEA2G,MAAAmF,OAAAmP,YAAAjT,QACArB,MAAA61B,KAAAA,KACA1wB,OAAAiiB,cAAApnB,OACA6C,UAAA,WACA,MAAAupB,YAAA3rB,WAAA,mBAEAmC,QAAA,WAGA,MAFAvP,UAAAI,OAAA,SACAuM,MAAAkiB,SACA/c,OAAAiiB,cAAApnB,QAEAkF,MAAAmP,KAAArU,OAAA3B,KAAAwE,UAAAD,SACAk5B,kBAtBA,SAwBAD,YAAAhV,QAAAhb,QAAA,SAAAxS,OACA,GAAA2G,OAAA4C,QAAAC,UAAAgzB,IAEA,OADAx8B,OAAAd,KAAAc,MAAA0W,eACA,IAAA1W,MAAA/E,QAGAuhC,KAAA3mC,EAAAmS,MAAA8D,OAAAmP,YAAAuhB,MAAA,GACAA,KAAA3mC,EAAAq4B,KAAAsO,KAAAx8B,OACA2G,MAAAmF,OAAAmP,YAAAjT,QACArB,MAAA61B,KAAAA,KACA1wB,OAAAiiB,cAAApnB,OACA6C,UAAA,WACA,MAAAupB,YAAA3rB,WAAA,mBAEAmC,QAAA,WAGA,MAFAvP,UAAAI,OAAA,SACAuM,MAAAkiB,SACA/c,OAAAiiB,cAAApnB,QAEAkF,MAAAmP,KAAArU,OAAA3B,KAAAwE,UAAAD,UAhBA,SAkBAs5B,aAAA,WACA,GAAA7iC,MAGA,OAFAA,OAAAsJ,IAAAU,KAAA,SAAAvP,MACA8nC,SAAAviC,OACA4iC,cAEAF,yBAAA,WACA,MAAA,UAAAjgC,OACA,GAAAygC,WAEA,OADAA,YAAAzgC,MAAAhI,MACAgI,MAAAhI,IAAAyoC,WAAA9wB,UAAA,EAAA8wB,WAAAjoC,OAAA,MAEAxF,MACA6T,IAAAc,GAAA,WAAA,QAAA,SAAAT,OACA,GAAA7I,IACA,KAAAA,IAAA6I,MAAAsI,WAAAowB,WAAAvhC,MAAA4iC,QAGA,MAAA/5B,OAAAG,mBAEAR,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,GAAA6O,OAEA,OADAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACA9O,MAAAsI,UAAAowB,UACAQ,eACAl5B,MAAAsI,UAAAmwB,WACAM,yBAAAlqB,QACAqqB,gBACAl5B,MAAAsI,UAAAyxB,SACAd,aACAiB,YACApB,iBACAsB,oBAEAvrB,OAAA/d,MAAAQ,OACA6nC,iBAEAL,mBAIAn5B,IAAAc,GAAA,QAAA,QAAA,SAAAT,OAEA,MADAA,OAAAG,iBACA+4B,iBAEAv5B,IAAAc,GAAA,QAAA,WAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACA65B,mBACAM,cAEA36B,IAAAc,GAAA,QAAA,eAAA,SAAAT,OACA,GAAA6O,QAAAxY,KAIA,OAHA2J,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAzY,MAAAwY,OAAA8b,SAAA,aAAAlzB,OACAohC,YAAAxiC,SAEA5B,SAAAiL,OAAA,UAAA,SAAAlF,SACA,GAAAg/B,oBACA,OAAAzV,eAIAqW,mBACAZ,oBAAA,SAAAC,SAAAC,UACA,GAAAC,KAIA,OAHAA,MAAAD,SAAApiC,QAAAA,QACAqiC,KAAA3rB,IAAA,QAAA0rB,SAAA7qB,OAAA9d,OACA4oC,KAAA3rB,IAAA,MAAAyrB,SAAA3C,KACA6C,KAAA3rB,IAAA,OAAAyrB,SAAA1C,OAEAp3B,IAAAU,KAAA,SAAAi5B,cACAM,OAAA1tC,EAAAiK,KAAAqE,QAAA+9B,aACAkB,UACAI,GAAA,WACAC,MAAAN,qBAEA9nB,OAAA,SAAA1R,MAAAggB,IAEA,MADA4Y,UAAA5Y,GAAAtqB,KAAAW,OACA2pB,GAAAtqB,KAAAW,MAAA,WAnBA8jC,0BAuBAz6B,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAA7U,OACA,GAAA7F,KAAA8sB,KAAAmV,UACA,IAAAp8B,MASA,OANA,OAAA7F,IAAA6F,MAAA61B,MAAA17B,IAAA7F,OAAA,QACA2oC,uBAEAI,uBAEAjB,YAAA,OAAAnV,KAAAvkB,OAAAlF,SAAAypB,KAAAsU,YAAA,YACAS,WAAAh8B,MAAA61B,KAAAuG,cAEA15B,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAyP,QAAA,UACArhB,YAAA,6BAIAlC,OAAA4T,UAAA,aAAA,aAAA,UAAA,eAAA,aAAA,YAAA,cAAAm4B,oBAEA9kC,KAAA9G,MCtcA,WACA,GAAA2I,UAAA9I,OAAAE,MAAA2uC,oBACA/kC,WAAAA,SAAA,SAAAC,MAAA,IAAA,GAAAC,GAAA,EAAAC,EAAA9J,KAAAwF,OAAAsE,EAAAD,EAAAA,IAAA,GAAAA,IAAA7J,OAAAA,KAAA6J,KAAAD,KAAA,MAAAC,EAAA,OAAA,GAEA9J,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEA9I,OAAA8G,QAAA9G,OAAA,eAEA6uC,oBAAA,SAAA1oC,WAAAsgB,IAAAqoB,IAAAtV,cAAA/X,WACA,GAAA3N,MAAAi7B,eA4RA,OA3RAA,iBAAAttB,UAAAne,IAAA,gDAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAAw4B,SAAAC,iBAAAtjC,QAAAujC,iBAAAC,cAAAC,qBAAAC,QAAAC,eAAAC,iBAAAC,aAqRA,OApRA7jC,SAAA7E,QAAA6E,QAAAqI,KACAs7B,eAAArzB,EAAA,UACAwzB,QAAA,YAEAR,iBAAA,WAEA,MADAtjC,SAAAs5B,QAAA,aAAAvwB,KAAA,YAAAvC,SACAxG,QAAAs5B,QAAA,aAAAliB,QAEAhP,OAAAmH,IAAA,yBAAA,WACA,MAAA+zB,sBAEAI,QAAA,WACA,GAAAK,iBAAAC,eAGA,OAFAA,iBAAAhkC,QAAAs5B,QAAA,aACAyK,gBAAA/jC,QAAAs5B,QAAA,aACAxe,IAAAmpB,SAAAj1B,OAAA5G,OAAAvE,UAAAgH,OAAAmP,aAAAjW,KAAA,SAAA9K,MACA,GAAAirC,SAMA,OALAF,iBAAAjU,OAAAqT,iBACAnqC,KAAAA,KAAAA,QAEA8qC,gBAAAptB,OACAutB,SAAAlkC,QAAA2zB,QAAA,aACAuQ,SAAA/6B,GAAA,kBAAA,WAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA6O,QACAA,OAAAjB,GAAA,OAAAuX,cAAAl2B,MAAAqC,QAGAkqC,SAAA10B,IAAA,YACA8zB,oBAJA,YAQAM,iBAAA,SAAAO,SAAAC,eACA,GAAArqC,MAAAsqC,MAAAC,eAAAC,UAYA,OAXAJ,UAAAK,iBACAH,MAAAF,SAAAK,kBACAH,MAAAI,KAAA,YAAAL,eACAC,MAAAjqB,UACA+pB,SAAAO,iBACAP,SAAAvvB,QACAuvB,SAAAQ,kBAAAP,cAAAA,gBAEAG,WAAAJ,SAAAplC,MAAAlF,MAAA,MAAAG,OACAD,KAAAoqC,SAAAplC,MAAAR,MAAA,IAAA6lC,cAAA,GAAA,GAAA,KAAAvqC,MAAA,MAAAG,OACAsqC,eAAAvqC,KAAAwqC,WACAl8B,IAAAg3B,UAAAiF,eAAAj8B,IAAA,GAAAu8B,aAAAv8B,IAAAi3B,SAAA,IAEA+D,QAAA,SAAAc,SAAAU,MAAAtsC,SACA,GAAAusC,gBAAAnd,EAAA5rB,IAAAuE,IAAAvG,KAAAL,KAQA,KAPAA,MAAAyqC,SAAAplC,MAAAlF,MAAA,MAEAH,MAAAmrC,OADAtsC,QACAA,QAAAmB,MAAAmrC,OAEA,GAEAC,eAAA,EACA/oC,IAAA4rB,EAAA,EAAArnB,IAAA5G,MAAAM,OAAAsG,IAAAqnB,IACA5tB,KAAAL,MAAAqC,KACA+oC,gBAAA/qC,KAAAC,OAAA,GAAA,EACA+B,MAAA8oC,OAHA9oC,MAAA4rB,GAQA,MADAwc,UAAAplC,MAAArF,MAAAxE,KAAA,MACAqD,QACAusC,eAAAprC,MAAAmrC,OAAA7qC,OAAAzB,QAAAyB,OAAA,EAEA8qC,gBAGAvB,kBACAwB,UAAA,WACAC,cACAC,aAAA,EACAC,SAAA,QAEAC,SACAF,aAAA,EACAtsB,YAAA,WACA,MAAA,MAEAysB,YAAA,SAAAnsC,MACA,GAAAosC,YAAAC,cAAAC,SAAA7rC,MAAA8rC,qBAAAC,MAAAC,cAgCA,OA/BAhsC,OAAAT,KAAAkrC,SAAAplC,MAAAlF,MAAA,MACAwrC,WAAApsC,KAAAkrC,SAAAplC,MAAAR,MAAA,IAAAtF,KAAAmrC,cAAA,GAAA,GAAA,KAAAvqC,MAAA,MAAAG,OACA0rC,eAAAzsC,KAAAkrC,SAAAplC,MAAAR,MAAAtF,KAAAmrC,eAAAvqC,MAAA,MAAA,GACA0rC,SAAA7rC,MAAA2rC,WAAA,GACAI,MAAAF,SAAAE,MAAA,cACAA,QACAH,cAAAC,SAAAE,MAAA,eAEAD,qBADAF,cACAjC,QAAApqC,KAAAkrC,SAAAkB,WAAA,GAEAhC,QAAApqC,KAAAkrC,SAAAkB,WAAA,GAAAI,MAAA,KAGAA,MAAAF,SAAAE,MAAA,eACAA,QACAH,cAAAC,SAAAE,MAAA,cAEAD,qBADAF,cACAjC,QAAApqC,KAAAkrC,SAAAkB,WAAA,GAEAhC,QAAApqC,KAAAkrC,SAAAkB,WAAA,GAAAI,MAAA,KAGAA,MAAAF,SAAAE,MAAA,mBACAA,QACAH,cAAAC,SAAAE,MAAA,oBAEAD,qBADAF,cACAjC,QAAApqC,KAAAkrC,SAAAkB,WAAA,GAEAhC,QAAApqC,KAAAkrC,SAAAkB,WAAAI,MAAA,IAAA30B,SAAA20B,MAAA,GAAA,IAAA,GAAA,OAGAD,qBACA5B,iBAAA3qC,KAAAkrC,SAAAqB,sBADA,SAKAG,YAEA/lC,KAAAujC,IAAA3hB,EAAA,6BACAzlB,IAAA,IACA6pC,YAAAzC,IAAA3hB,EAAA,+BACAqkB,UAAA,SAAAC,UACA,MAAAtC,eAAAsC,SAAA,QAGAlmC,KAAAujC,IAAA3hB,EAAA,6BACAzlB,IAAA,IACA6pC,YAAAzC,IAAA3hB,EAAA,+BACAqkB,UAAA,SAAAC,UACA,MAAAtC,eAAAsC,SAAA,QAGAlmC,KAAAujC,IAAA3hB,EAAA,6BACAzlB,IAAA,IACAmpC,SAAA,OACAU,YAAAzC,IAAA3hB,EAAA,iCAEAukB,UAAA,oBAEAnmC,KAAAujC,IAAA3hB,EAAA,wBACAzlB,IAAA,IACAmpC,SAAA,KACAW,UAAA,OAEAjmC,KAAAujC,IAAA3hB,EAAA,0BACAzlB,IAAA,IACAmpC,SAAA,IACAW,UAAA,MAEAjmC,KAAAujC,IAAA3hB,EAAA,0BACAzlB,IAAA,IACAmpC,SAAA,KACAW,UAAA,OAEAE,UAAA,oBAEAnmC,KAAAujC,IAAA3hB,EAAA,iCACA0jB,SAAA,OAEAtlC,KAAAujC,IAAA3hB,EAAA,gCACA0jB,SAAA,SAAAY,UACA,MAAAA,UAAA/rC,KAAA,QAGAgsC,UAAA,oBAEAnmC,KAAAujC,IAAA3hB,EAAA,2BACAzlB,IAAA,IACA4c,YAAA,qEACAqtB,aAAA,SAAAF,UACA,MAAArC,sBAAAqC,WAEAV,YAAA,SAAAU,UACA,MAAAjC,eAAAiC,aAGAlmC,KAAAujC,IAAA3hB,EAAA,wBACAzlB,IAAA,IACAmpC,SAAA,IACAW,UAAA,6CACAD,YAAAzC,IAAA3hB,EAAA,oCACAwkB,aAAA,SAAAF,UACA,MAAArC,sBAAAqC,WAEAV,YAAA,SAAAU,UACA,MAAAjC,eAAAiC,aAGAC,UAAA,oBAEAnmC,KAAAujC,IAAA3hB,EAAA,0BACA0jB,SAAA,OAEAtlC,KAAAujC,IAAA3hB,EAAA,8BACA0jB,SAAA,QACAW,UAAA,UAEAE,UAAA,oBAEAnmC,KAAAujC,IAAA3hB,EAAA,2BACAlmB,KAAAooC,QACA9zB,UAAA,iBAGAw1B,YAAA,SAAA18B,OACA,GAAA6O,OAEA,OADAA,QAAApc,QAAA6E,QAAA0I,MAAAy7B,UACAt5B,OAAAiiB,cAAAvV,OAAA/d,SAGAiqC,qBAAA,SAAAqC,UACA,GAAAG,SAAAC,MAAA3lC,MAKA,KAJA4U,QAAAnT,IAAA8jC,UACAI,MAAA,cACA3lC,OAAA,EACA0lC,WACA1lC,OAAA2lC,MAAAC,KAAAL,SAAA3B,SAAAplC,QACAknC,QAAAntC,KAAAyH,OAAA2Q,MAGA,OADA40B,UAAAM,WAAAH,QACA9wB,QAAAnT,IAAAikC,UAEApC,cAAA,SAAAiC,UACA,GAAAO,UAAAxmC,IAAA8sB,KAAAuZ,MAAA3lC,OAAA+lC,WAAA9tC,IAAAuG,KAKA,KAJAoW,QAAAnT,IAAA8jC,SAAAM,YACAF,MAAA,QACA3lC,OAAA,EACA+lC,WAAA,IACA,CAEA,GADA/lC,OAAA2lC,MAAAC,KAAAL,SAAA3B,SAAAplC,QACAwB,OACA,KAEA,IAAAV,IAAAU,OAAA2Q,MAAA/S,QAAA7C,KAAAwqC,SAAAM,WAAAvmC,KAAA,EAAA,CACAymC,WAAA/lC,OAAA2Q,KACA,QAKA,IAFAg1B,MAAA,QACAG,SAAA,IACA,CAEA,GADA9lC,OAAA2lC,MAAAC,KAAAL,SAAA3B,SAAAplC,QACAwB,OACA,KAEA,IAAAosB,KAAApsB,OAAA2Q,MAAA/S,QAAA7C,KAAAwqC,SAAAM,WAAAzZ,MAAA,EAAA,CACA0Z,SAAA9lC,OAAA2Q,KACA,QASA,MANAnS,OAAA+mC,SAAA3B,SAAAplC,MACAvG,IAAAuG,MAAAoS,UAAAm1B,WAAAD,UAAA9tC,QAAA,MAAA,IAAAA,QAAA,MAAA,IACAC,IAAAA,IAAAD,QAAA,IAAA,OAAAA,QAAA,IAAA,OACAC,IAAAA,IAAAD,QAAA,IAAA,OAAAA,QAAA,IAAA,OACAwG,MAAAA,MAAAoS,UAAA,EAAAm1B,YAAA9tC,IAAAuG,MAAAoS,UAAAk1B,SAAA,EAAAtnC,MAAA/E,QACA8rC,SAAA3B,SAAAplC,MAAAA,MACA+mC,SAAAM,WAAA,QAEA5C,cAAA,SAAAsC,SAAAhmC,MACA,GAAAymC,SAAAloC,EAAAspB,EAAA6e,EAAA3mC,GAGA,KAFA0mC,QAAA,GACAC,EAAAl2B,EAAArS,KAAA6nC,SAAAh3B,WAAAg3B,SAAAF,aAAA5rC,OACAqE,EAAAspB,EAAA,EAAA9nB,IAAA2mC,EAAA,EAAA3mC,KAAA,EAAAA,KAAA8nB,EAAAA,GAAA9nB,IAAAxB,EAAAwB,KAAA,IAAA8nB,IAAAA,EACA4e,SAAAzmC,IAEA,OAAA,KAAAymC,QAAA,MAEAvmC,QAAA8lC,SAAAvC,kBACAvjC,QAAAmJ,GAAA,WAAA,WACA,MAAAf,QAAAtH,WAEAsH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,cAAA,aAAA,eAAA,UAAA,gBAAA,cAAAi7B,uBAEA5nC,KAAA9G,MT/SA,WACA,GAAAiyC,yBAAAtpC,SAAAG,gBAAAC,QAAAE,MAAApJ,OAAAqJ,WAAAnJ,MAAAyJ,UAEAzJ,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAO,WAAAxJ,KAAAD,MAAAyJ,WAEAN,WAAAlJ,KAAAD,MAAAmJ,WAEAP,SAAA3I,KAAAD,MAAA4I,SAEAI,QAAA/I,KAAAD,MAAAgJ,QAEAD,gBAAA9I,KAAAD,MAAA+I,gBAEAjJ,OAAA8G,QAAA9G,OAAA,gBAEAoyC,wBAAA,SAAApsC,KAAAvC,UAAAiwB,YACA,GAAA5f,MAAAN,SAAA6+B,gBAwIA,OAvIA7+B,UAAAkgB,WAAApwB,IAAA,wBAAA,GACA+uC,iBAAA3e,WAAApwB,IAAA,gCAAA,GACAwQ,KAAA,SAAAC,OAAAC,KACA,GAAAyO,OAAA6vB,0BAAAC,cAAAC,sBAAAC,cAAAC,gBAAAC,eAAAC,YAAAC,qBAsHA,OArHApwB,OAAAzO,IAAAsrB,QAAA,YAAAje,aACAqxB,mBACAE,YAAA,SAAA5sB,MAAAvT,MAKA,MAJAuB,KAAAU,KAAA,iBAAA4N,OACAtO,IAAAU,KAAA,gBAAAoG,YAAA,UACA9G,IAAAU,KAAA,iBAAAoG,YAAA,UACA9G,IAAAU,KAAA,6BAAAiO,KAAAqD,OACAhS,IAAAU,KAAA,6BAAA0O,KAAA,YAAA3Q,OAEAkgC,eAAA,WAGA,MAFA3+B,KAAAU,KAAA,iBAAAqO,OACA/O,IAAAU,KAAA,gBAAAsG,SAAA,UACAhH,IAAAU,KAAA,iBAAAsG,SAAA,WAEAs3B,0BAAA,SAAAjiC,SACA,GAAArG,GAAAiC,IAAAV,KAAApG,IAAAq5B,MACAmU,kBACAD,kBACA,KAAAnnC,OAAA8E,SAEA,IADAmuB,OAAAnuB,QAAA9E,MACAvB,EAAA,EAAAiC,IAAAuyB,OAAA74B,OAAAsG,IAAAjC,EAAAA,IACA7E,IAAAq5B,OAAAx0B,GACA7E,IAAAw2B,UACA+W,gBAAAjuC,KAAAU,IAIA,OAAAqtC,0BAEAA,sBAAA,WACA,GAAA7vB,KAWA,OAVApiB,GAAAC,IAAAkyC,gBAAA,WACA,MAAA,UAAAI,GACA,MAAAA,GAAA3Y,MACA2Y,EAAApF,MAAA,0BAAAoF,EAAA3Y,MADA,SAIAh6B,OACAwiB,KAAA0vB,kBACAhiC,QAAAqiC,kBAEA1+B,IAAAU,KAAA,oBAAAiO,KAAAA,OAEA4vB,cAAA,SAAAliC,SACA,GAAAsS,KAWA,OAVApiB,GAAAC,IAAA6P,QAAA,WACA,MAAA,UAAAyiC,GACA,MAAAA,GAAA3Y,MACA2Y,EAAApF,MAAA,0BAAAoF,EAAA3Y,MADA,SAIAh6B,OACAwiB,KAAAnP,UACAnD,QAAAA,UAEA2D,IAAAU,KAAA,gBAAAiO,KAAAA,OAEAkwB,sBAAA,SAAApgC,KAAA9D,IACA,GAAAokC,oBAAA1kC,OAAAgC,OAsBA,OArBAA,SAAA0D,OAAA1D,QAAAoC,MACApE,OAAA9N,EAAAmU,KAAArE,SACA1B,GAAAzO,MAAAwJ,SAAAiF,MAEAN,OAAAstB,UAAAttB,OAAAstB,SACAttB,OAAAstB,UACA+W,gBAAAjuC,KAAA4J,QACA0F,OAAAtH,OAAA,WACA,MAAAgW,OAAA5S,aAAA4C,KAAA9D,QAGA+jC,gBAAAnyC,EAAA8D,OAAAquC,gBAAArkC,QACA0F,OAAAtH,OAAA,WACA,MAAAgW,OAAAnS,eAAAmC,KAAA9D,OAGA6jC,sBAAAE,iBACAK,mBAAA/+B,IAAAU,KAAA,6BAAA0O,KAAA,aACA3Q,OAAAsgC,oBACAR,cAAAhyC,EAAA8D,OAAAgM,QAAA,aAEAoS,MAAAuwB,mBAEAP,cAAAxpC,gBAAA,IAAA,SAAAyB,OACA,MAAA,UAAAA,OAGA,IAAAA,MAAA/E,OACA8c,MAAAtS,cAAA,IAAA,MAEAsS,MAAAtS,cAAA,IAAAzF,OAEA+X,MAAAuwB,mBARA,SAUAj/B,OAAA9I,OAAA,WAAAwnC,eACA1+B,OAAAmH,IAAA,iBAAA,SAAAgB,IAAA7L,SACA,MAAAiiC,2BAAAjiC,WAEA2D,IAAAc,GAAA,QAAA,8BAAA,SAAAT,OACA,GAAA6yB,MAAAhkB,MAKA,OAJA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA+jB,KAAAnzB,OAAA1D,QAAA6S,OAAAte,KAAA,SACA2tC,cAAAhyC,EAAA8D,OAAA6iC,KAAA,aACA0L,YAAA1vB,OAAArY,KAAA,SAAAqY,OAAAte,KAAA,WAEAoP,IAAAc,GAAA,QAAA,2DAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAm+B,mBAEA3+B,IAAAc,GAAA,QAAA,qBAAA,SAAAT,OACA,GAAA1F,IAAAuU,OAAAzQ,IAKA,OAJA4B,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAxU,GAAAuU,OAAAte,KAAA,MACA6N,KAAAyQ,OAAAte,KAAA,QACAiuC,sBAAApgC,KAAA9D,MAEAqF,IAAAc,GAAA,QAAA,8BAAA,SAAAT,OACA,GAAA1F,IAAAuU,OAAAzQ,IAUA,OATA4B,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAAJ,SAAA,UACAI,OAAApI,YAAA,UAEAoI,OAAAlI,SAAA,UAEArM,GAAAuU,OAAAte,KAAA,MACA6N,KAAAyQ,OAAAte,KAAA,QACAiuC,sBAAApgC,KAAA9D,QAIAmF,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAA,OAAA,cAAA,cAAAw+B,2BAEAnrC,KAAA9G,MGnKA,WACA,GAAA8yC,kBAAAnqC,SAAAE,SAAAhJ,OAAAE,KAEAA,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,gBAEAizC,iBAAA,SAAA18B,MAAA7R,SAAA+hB,IAAAtgB,WAAA80B,gBAAAjb,UACA,GAAAlM,KA8IA,OA7IAA,MAAA,SAAAC,OAAAC,KACA,GAAAk/B,cAAAC,UAAAhhC,OAAAgC,OAAA8L,YAwIA,OAvIAkzB,YAAA,EACAD,cAAA,EACAn/B,OAAA4jB,QACA9oB,QAAA,KACAtD,KAAA,KACA6nC,gBAAA,KACAC,iBAAA,MAEAl/B,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAA8yB,gBAAA7yB,KAAAg/B,UAAAnkC,QAAA+T,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA7O,KAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAK,YAKAw+B,WAAA,EACAG,UAAAxsC,QAAAysC,KAAAx/B,OAAA4jB,QACAwP,eAAA,KACA+L,cACAI,UAAAF,gBAAAre,OAAAue,UAAAF,iBAAApe,OAAA,cACAse,UAAAD,iBAAAte,OAAAue,UAAAD,kBAAAre,OAAA,cACA7lB,QAAAoH,MAAA4J,OAAA,aAAAmzB,WACAnM,eAAA,8BAEAmM,UAAAE,QAAA,kBAAAze,OAAAue,UAAAF,iBAAApe,OAAA,eACAse,UAAAE,QAAA,mBAAAze,OAAAue,UAAAD,kBAAAre,OAAA,eACA7lB,QAAAoH,MAAAmP,KAAA4tB,WACAnM,eAAA,2BAEAnnB,SAAAE,MAAAD,cACA9Q,QAAAO,KAAA,SAAA9K,MAMA,MALAob,UAAAK,OAAAJ,cACAizB,eACAn/B,OAAA0/B,gBAAA,GAEAttC,WAAA2L,WAAAq1B,eAAAviC,MACAq2B,gBAAAtc,MAAA3K,OAEA7E,QAAAO,KAAA,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAAJ,cACA3L,KAAAc,UAAAxQ,MACAA,KAAAuQ,eACAzQ,SAAAI,OAAA,cAAAF,KAAAuQ,gBACAvQ,KAAA8uC,QACAhvC,SAAAI,OAAA,cAAAF,KAAA8uC,QAAA,IADA,WAhCAP,WAAA,MACAn/B,KAAAU,KAAA,qBAAAsG,SAAA,gBAoCA7a,OACAgS,OAAA,WACA,GAAA0M,SAAAmH,KAGA,OAFAA,OAAA,gBACAnH,QAAA9K,OAAA4jB,OAAApsB,KACA7G,SAAAuhB,YAAAD,MAAAnH,SAAAnP,KAAA,WACA,MAAA,UAAA2Q,QACA,GAAApM,SAAAC,SAWA,OAVAA,WAAA,WAIA,MAHAmM,UACAtM,OAAA4/B,mBAAA,EACA1Y,gBAAAtc,MAAA3K,KACA7N,WAAA2L,WAAA,8BAEAmC,QAAA,WAEA,MADAoM,SAAA,GACA3b,SAAAI,OAAA,UAEAyR,MAAApE,OAAA4B,OAAA4jB,QAAAjoB,KAAAwE,UAAAD,WAEA9T,QAEA4T,OAAAmH,IAAA,oBAAA,SAAA7G,MAAA7E,WACA,GAAAokC,iBAAAC,eAAAv/B,KAAAw/B,WAAAC,iBA+BA,OA9BAz/B,MAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAs0B,QACAsK,cAAA,EACAn/B,OAAA4jB,OAAA9oB,QAAAW,UACAuE,OAAA4jB,OAAApsB,KAAA,KACAwI,OAAA4jB,OAAAxb,KAAA,KACA23B,WAAA//B,OAAAigC,QAAA,GACAH,eAAA9e,SACAhhB,OAAA4jB,OAAAyb,gBACAS,eAAA9e,OAAAhhB,OAAA4jB,OAAAyb,iBACA,MAAAU,aACAD,eAAA9e,OAAA+e,WAAAT,mBAEAt/B,OAAA4jB,OAAAyb,gBAAAS,eAAA7e,OAAA,eACA4e,gBAAA7e,SAAA1yB,IAAA,EAAA,SACA0R,OAAA4jB,OAAA0b,iBACAO,gBAAA7e,OAAAhhB,OAAA4jB,OAAA0b,kBACA,MAAAS,aACAF,gBAAA7e,OAAA+e,WAAAT,kBAAAhxC,IAAA,EAAA,UAEA0R,OAAA4jB,OAAA0b,iBAAAO,gBAAA5e,OAAA,eACA+e,kBAAA//B,IAAAU,KAAA,qBACA,OAAA,MAAAo/B,WAAAA,WAAAvoC,KAAA,SACAwoC,kBAAApxB,KAAA,4BAAAmxB,WAAAvoC,KAAA,kBAEAyI,IAAAU,KAAA,kBAAAsG,SAAA,UACAhH,IAAAU,KAAA,UAAA5I,KAAA,cACAkI,IAAAU,KAAA,iBAAA5I,KAAA,UACAmvB,gBAAA3a,KAAAtM,KACAA,IAAAU,KAAA,gBAAA6L,QACAvM,IAAAU,KAAA,qBAAAoG,YAAA,eAEA/G,OAAAmH,IAAA,kBAAA,SAAAgB,IAAAyb,QAYA,MAXAub,eAAA,EACAn/B,OAAAtH,OAAA,WAGA,MAFAsH,QAAA4jB,OAAAA,OACA5jB,OAAA4jB,OAAAyb,gBAAAre,OAAAhhB,OAAA4jB,OAAAyb,iBAAApe,OAAA,eACAjhB,OAAA4jB,OAAA0b,iBAAAte,OAAAhhB,OAAA4jB,OAAA0b,kBAAAre,OAAA,iBAEAhhB,IAAAU,KAAA,kBAAAoG,YAAA,UACA9G,IAAAU,KAAA,UAAA5I,KAAA,eACAkI,IAAAU,KAAA,iBAAA5I,KAAA,QACAmvB,gBAAA3a,KAAAtM,KACAA,IAAAU,KAAA,gBAAA6L,QAAAwF,SACA/R,IAAAU,KAAA,qBAAAsG,SAAA,eAEAhH,IAAAc,GAAA,QAAA,eAAA,WACA,MAAAd,KAAAU,KAAA,gBAAAvP,MAAAQ,OAAA,GAAAwtC,UACAn/B,IAAAU,KAAA,qBAAAsG,SAAA,aAEAhH,IAAAU,KAAA,qBAAAoG,YAAA,eAGAmF,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAH,IAAAc,GAAA,QAAA,8BAAA,SAAAT,OAEA,MADAA,OAAAG,iBACArC,WAEA4B,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,wBAAA,UAAA,aAAA,eAAA,aAAA,kBAAA,aAAAq/B,oBAEAhsC,KAAA9G,MOjKA,WACA,GAAA8zC,mBAAAC,iBAAAC,8BAAAC,kBAAAC,8BAAAxrC,YAAAC,SAAAI,QAAAE,MAAApJ,OAAAqJ,WAAAnJ,MAAAo0C,wBAAA7qC,QAAAE,WACAtC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAO,WAAAxJ,KAAAD,MAAAyJ,WAEAN,WAAAlJ,KAAAD,MAAAmJ,WAEAP,SAAA3I,KAAAD,MAAA4I,SAEAI,QAAA/I,KAAAD,MAAAgJ,QAEAO,QAAAtJ,KAAAD,MAAAuJ,QAEAZ,YAAA1I,KAAAD,MAAA2I,YAEA7I,OAAA8G,QAAA9G,OAAA,gBAEAi0C,kBAAA,SAAA7rC,YAKA,QAAA6rC,mBAAArpC,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAAklC,QAAA9rC,EAAAF,SAAAykB,SAAAxkB,QAAAgsC,OAAAC,UAAAlzB,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAA+xC,QACAp0C,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAA6sB,SAAAA,SACA7sB,KAAAqI,QAAAA,QACArI,KAAAq0C,OAAAA,OACAr0C,KAAAs0C,UAAAA,UACA5rC,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,UACA5jB,KAAAu0C,UAAA,EACAv0C,KAAAw0C,eAAA,EACAx0C,KAAAy0C,0BACAzlC,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YAEA,MADAA,OAAAqd,SAAAhb,IAAA,aAAArC,MAAA/E,MAAAiE,QAAAtD,MACAoE,MAAAN,GAAA4Y,YAAA4sB,YAAAllC,MAAA/E,MAAA4E,YACAG,MAAA+kC,UAAA,EACA/kC,MAAA/E,MAAAkH,WAAA,WAAAnC,MAAA+kC,WAFA,SAKAv0C,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YA2kBA,MA7mBAhmB,QAAA4sC,kBAAA7rC,YAEA6rC,kBAAAziC,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,YAAA,aAAA,YAAA,eAAA,YAmCAyiC,kBAAArsC,UAAAgtC,wBAAA,WA2CA,MA1CAz0C,MAAAyK,MAAAsQ,IAAA,sBAAA,SAAAvL,OACA,MAAA,YAGA,MAFAA,OAAAqjC,kBACArjC,MAAAmlC,mBACAnlC,MAAA8kC,UAAAv/B,WAAA,YAAA,SAAA,mCAAA,KAEA/U,OACAA,KAAAyK,MAAAsQ,IAAA,4BAAA,SAAAvL,OACA,MAAA,YAGA,MAFAA,OAAAolC,cACAplC,MAAAmlC,mBACAnlC,MAAA8kC,UAAAv/B,WAAA,SAAA,SAAA,2BAAA;GAEA/U,OACAA,KAAAyK,MAAAsQ,IAAA,qBAAA,SAAAvL,OACA,MAAA,YAGA,MAFAA,OAAAqjC,kBACArjC,MAAAmlC,mBACAnlC,MAAA8kC,UAAAv/B,WAAA,YAAA,SAAA,8BAAA,KAEA/U,OACAA,KAAAyK,MAAAsQ,IAAA,0BAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAmlC,qBAEA30C,OACAA,KAAAyK,MAAAsQ,IAAA,4BAAA,SAAAvL,OACA,MAAA,YAGA,MAFAA,OAAAolC,cACAplC,MAAAmlC,mBACAnlC,MAAAqjC,oBAEA7yC,OACAA,KAAAyK,MAAAsQ,IAAA,sBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAqjC,oBAEA7yC,OACAA,KAAAyK,MAAAsQ,IAAA,iBAAA/a,KAAA60C,QACA70C,KAAAyK,MAAAsQ,IAAA,kBAAA/a,KAAA40C,aACA50C,KAAAyK,MAAAsQ,IAAA,kBAAA/a,KAAA20C,kBACA30C,KAAAyK,MAAAsQ,IAAA,8BAAA/a,KAAA80C,mBACA90C,KAAAyK,MAAAsQ,IAAA,gCAAA/a,KAAA+0C,sBAGAjB,kBAAArsC,UAAAutC,uBAAA,WACA,GAAAC,aAAAC,WASA,OARAD,aAAA,mBAAAj1C,KAAAyK,MAAA4E,UAAA,eACArP,KAAAq0C,OAAAr1B,UAAAhf,KAAAyK,MAAAwqC,YAAA,SAAAzlC,OACA,MAAA,YAEA,MADAA,OAAAqjC,kBACArjC,MAAAolC,gBAEA50C,OACAk1C,YAAA,mBAAAl1C,KAAAyK,MAAA4E,UAAA,cACArP,KAAAq0C,OAAAr1B,UAAAhf,KAAAyK,MAAAyqC,YAAA,SAAA1lC,OACA,MAAA,YACA,MAAAA,OAAAolC,gBAEA50C,QAGA8zC,kBAAArsC,UAAA0tC,eAAA,WACA,MAAAn1C,MAAAyK,MAAA6B,OAAA,SAAAkD,OACA,MAAA,YAEA,MADAA,OAAA+kC,UAAA/kC,MAAA+kC,SACA/kC,MAAAN,GAAA4Y,YAAAstB,cAAA5lC,MAAA/E,MAAA4E,UAAAG,MAAA+kC,YAEAv0C,QAGA8zC,kBAAArsC,UAAA4tC,oBAAA,WACA,MAAAr1C,MAAAw0C,eAAAx0C,KAAAw0C,eAGAV,kBAAArsC,UAAAktC,iBAAA,WACA,MAAA30C,MAAAkP,GAAAC,SAAAmmC,MAAAt1C,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAA8lC,OAOA,MANA9lC,OAAA/E,MAAA6qC,MAAAA,MAEA9lC,MAAA/E,MAAA6qC,MAAAC,oBADAD,MAAA1d,aACA52B,KAAA62B,MAAA,IAAAyd,MAAA3d,cAAA2d,MAAA1d,cAEA,EAEA0d,QAEAt1C,QAGA8zC,kBAAArsC,UAAA+tC,kBAAA,WACA,MAAAx1C,MAAAkP,GAAAC,SAAAm+B,WAAAttC,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAi9B,aACA,MAAAj9B,OAAA/E,MAAAiE,QAAA+9B,YAAAA,cAEAzsC,QAGA8zC,kBAAArsC,UAAAstC,oBAAA,WACA,MAAA/0C,MAAAyK,MAAA6B,OAAA,SAAAkD,OACA,MAAA,YAEA,MADAA,OAAA/E,MAAAgrC,iBACAjmC,MAAAwB,UAAAW,WAAA,gCAEA3R,QAGA8zC,kBAAArsC,UAAAqtC,kBAAA,WACA,GAAAzyC,OAIA,OAHAA,SACAqzC,QAAA,GAEA11C,KAAAkP,GAAA2kC,QAAAptB,KAAAzmB,KAAAyK,MAAA4E,UAAAhN,QAAAkN,KAAA,SAAAC,OACA,MAAA,UAAAqkC,SACA,GAAA1gB,GAAArnB,IAAA0rB,MACA,KAAArE,EAAA,EAAArnB,IAAA+nC,QAAAruC,OAAAsG,IAAAqnB,EAAAA,IACAqE,OAAAqc,QAAA1gB,GACAqE,OAAAme,aAAAv1C,EAAAiO,OAAAmpB,OAAAme,aAAA,eAIA,OAFAnmC,OAAA/E,MAAAgrC,cAAA5B,QACArkC,MAAAwB,UAAAW,WAAA,0BAAAkiC,SACAA,UAEA7zC,QAGA8zC,kBAAArsC,UAAAmtC,YAAA,WACA,GAAAvyC,OAIA,OAHAA,SACAqzC,QAAA,GAEA11C,KAAAkP,GAAA2kC,QAAAptB,KAAAzmB,KAAAyK,MAAA4E,UAAAhN,QAAAkN,KAAA,SAAAC,OACA,MAAA,UAAAqkC,SACA,GAAA1gB,GAAArnB,IAAA0rB,MACA,KAAArE,EAAA,EAAArnB,IAAA+nC,QAAAruC,OAAAsG,IAAAqnB,EAAAA,IACAqE,OAAAqc,QAAA1gB,GACAqE,OAAAme,aAAAv1C,EAAAiO,OAAAmpB,OAAAme,aAAA,eAcA,OAZAnmC,OAAA/E,MAAAopC,QAAAA,QACArkC,MAAA/E,MAAAmrC,YAAAx1C,EAAA8N,OAAA2lC,QAAA,SAAArc,QACA,OAAAA,OAAAke,SACAG,UACArmC,MAAA/E,MAAAgrC,gBACAjmC,MAAA/E,MAAAgrC,kBAEAjmC,MAAA/E,MAAA6oC,eAAAO,QAAAruC,OACAgK,MAAA/E,MAAAqrC,YAAA/sC,QAAA8qC,QAAA,SAAAvzC,GACA,MAAAA,GAAAkO,KAEAgB,MAAAwB,UAAAW,WAAA,iBAAAkiC,SACAA,UAEA7zC,QAGA8zC,kBAAArsC,UAAAsuC,aAAA,WACA,GAAAC,kBAAAC,YAiBA,OAhBAA,cAAA71C,EAAA8N,OAAAlO,KAAAyK,MAAAyF,QAAA62B,KAAA,YACAiP,iBAAA51C,EAAA8N,OAAAlO,KAAAyK,MAAAyF,QAAAu5B,SAAA,YACAzpC,KAAAyK,MAAAyrC,SAAA,GACA91C,EAAAqc,MAAAw5B,aAAAD,kBAAA,SAAAxmC,OACA,MAAA,UAAA2mC,WACA,MAAA/1C,GAAAqc,KAAA05B,UAAA,SAAAvsC,MACA,GAAAsE,QAAAgC,OAMA,OALAA,SAAAV,MAAA/E,MAAAyF,QAAAtG,KAAA0I,MACApE,OAAA9N,EAAAmU,KAAArE,SACA1B,GAAAzO,MAAAwJ,SAAAK,KAAA4E,MAEAN,OAAAstB,UAAA,EACAhsB,MAAAW,eAAAvG,KAAA0I,KAAA1I,KAAA4E,QAGAxO,OACAA,KAAA6yC,mBAGAiB,kBAAArsC,UAAAorC,gBAAA,WACA,GAAA7jC,QAIA,OAHAhP,MAAAyK,MAAA2rC,WAAAp2C,KAAAq2C,gBACAr2C,KAAAkP,GAAA4Y,YAAAwuB,iBAAAt2C,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAA2rC,YACApnC,QAAAhP,KAAAsI,EAAA2G,KAAAjP,KAAAw1C,oBAAAx1C,KAAAkP,GAAA4Y,YAAAyuB,eAAAv2C,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAA2rC,cACApnC,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAAqjB,YAUA,OATAA,aAAArjB,KAAA,GACA+K,MAAA/E,MAAAqd,YAAA1nB,EAAAiO,OAAAyZ,YAAA,iBACAtY,MAAAgnC,uBACAhnC,MAAAinC,2BACAjnC,MAAAknC,kBACAlnC,MAAAwB,UAAAW,WAAA,iBAAAnC,MAAA/E,MAAAyF,SACAhH,WAAAsG,MAAA/E,MAAA,WACA,MAAA+E,OAAA/E,MAAAkH,WAAA,wBAEAmW,cAEA9nB,QAGA8zC,kBAAArsC,UAAAkvC,YAAA,WACA,MAAA32C,MAAAsI,EAAA2G,KAAAjP,KAAA20C,mBAAA30C,KAAA40C,cAAA50C,KAAA6yC,qBAGAiB,kBAAArsC,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SAgBA,MAfAA,SAAAuN,sBACAzM,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAmsC,sBAAAloC,QAAAmoC,wBACArnC,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAA8f,OAAAnqB,EAAAiO,OAAAK,QAAA6b,OAAA,SACA/a,MAAA/E,MAAA0zB,WAAAp1B,QAAA2F,QAAA6b,OAAA,SAAAjqB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAqjB,aAAA/kB,QAAA2F,QAAAqf,YAAA,SAAAztB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAo8B,aAAAzmC,EAAAiO,OAAAK,QAAAqf,YAAA,MACArf,UAEA1O,QAGA8zC,kBAAArsC,UAAAiZ,gBAAA,WACA,GAAA1R,QAQA,OAPAA,SAAAhP,KAAAqtB,cACAre,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAd,SAEA,MADAc,OAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAyB,MAAAwlC,2BAEAh1C,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAmnC,gBAEA32C,QAGA8zC,kBAAArsC,UAAAgvC,yBAAA,WASA,MARAz2C,MAAAyK,MAAAqsC,sBACA92C,KAAAyK,MAAAqsC,mBAAA12C,EAAA8D,OAAAlE,KAAAyK,MAAAqd,YAAA,SAAAtY,OACA,MAAA,UAAA6W,IACA,MAAAjmB,GAAA6+B,KAAA5Y,GAAA0gB,KAAA,SAAAyF,KACA,MAAAh9B,OAAAunC,iBAAA,MAAAvK,SAGAxsC,OACAA,KAAAyK,MAAAqsC,mBAAA12C,EAAA8N,OAAAlO,KAAAyK,MAAAqsC,mBAAA,SAAAtnC,OACA,MAAA,UAAA6W,IACA,MAAA7W,OAAAwnC,WAAA,UAAAC,OAAA5sC,KAAAmF,MAAAwnC,WAAA,UAAAxxC,OACAgK,MAAAunC,iBAAA,WAAAh3C,MAAAwJ,SAAA8c,GAAAziB,UAEA,IAEA5D,QAGA8zC,kBAAArsC,UAAAyvC,sBAAA,SAAAC,KAAAlgB,OAIA,MAHA,OAAAA,QACAA,MAAA,iBAEA72B,EAAAC,IAAA82C,KAAA,SAAA72C,GACA,OACA82C,MAAA92C,EAAAkO,GACAukB,MAAAzyB,EAAA22B,WAKA6c,kBAAArsC,UAAA4vC,kBAAA,SAAAF,KAAAlgB,OACA,GAAAva,OAAA9S,KAAA+pB,MAAAR,EAAArnB,GAKA,KAJA,MAAAmrB,QACAA,MAAA,iBAEAtD,SACAjX,MAAAyW,EAAA,EAAArnB,IAAAqrC,KAAA3xC,OAAAsG,IAAAqnB,EAAAzW,QAAAyW,EACAvpB,KAAAutC,KAAAz6B,OACA9S,KAAAqtB,OAAAva,MACA9S,KAAA0tC,cACA3jB,MAAArvB,KAAAsF,KAGA,OAAA+pB,QAGAmgB,kBAAArsC,UAAAotC,OAAA,SAAA94B,IAAAw7B,OAAAC,WAAAC,aACA,GAAAhzC,MAAAkvB,MAAAR,EAAArpB,EAAAgC,IAAA4rC,KAAAC,KAAAjnB,EAAAyiB,UAAAyE,YAAAlpC,QAAAM,QAAAyjB,SAAApM,GAAAyB,WAGA,IAFA8vB,YAAAL,OAAA,GAAA7U,UACAh0B,QAAA6oC,OAAA,GAAA7oC,QACA+oC,cAAAG,YA+CA,MA9CAjkB,OAAA,KACA7L,YAAA,KAEAA,YADA,OAAA2vB,YACAz3C,KAAAyK,MAAAqd,YAEA9nB,KAAAyK,MAAAqrC,YAAA2B,aAAA9B,aAEA31C,KAAAyK,MAAA6B,OAAA,WACA,GAAA0Q,MAAAmW,EAAA5rB,IAAAuE,IAAA0kB,EAAAnK,EACA,KAAA9e,IAAA4rB,EAAA,EAAArnB,IAAAyrC,OAAA/xC,OAAAsG,IAAAqnB,EAAA5rB,MAAA4rB,EACA9M,GAAAkxB,OAAAhwC,KACAipB,EAAA1I,YAAAne,QAAA0c,IACAyB,YAAAyK,OAAA/B,EAAA,EAGA,OADAxT,OAAAw6B,WAAA,GAAA/wC,OAAA8wC,QACAM,MAAApwC,UAAA8qB,OAAAxqB,MAAA+f,YAAA9K,QAEA,OAAAy6B,aACA9jB,MAAA3zB,KAAAq3C,kBAAAvvB,YAAA,iBACArjB,KAAAzE,KAAAk3C,sBAAAvjB,MAAA,iBACA3zB,KAAAkP,GAAA4Y,YAAAgwB,uBAAAppC,QAAAjK,MAAA8K,KAAA,SAAAC,OACA,MAAA,YACA,GAAA2jB,GAAArnB,IAAA2D,QAAA4W,EAEA,KADA5W,WACA0jB,EAAA,EAAArnB,IAAAyrC,OAAA/xC,OAAAsG,IAAAqnB,EAAAA,IACA9M,GAAAkxB,OAAApkB,GACA1jB,QAAAnL,KAAAkL,MAAAwB,UAAAW,WAAA,kBAAA0U,GAAAuxB,YAAAH,aAEA,OAAAhoC,WAEAzP,SAEA2zB,MAAA3zB,KAAAq3C,kBAAAvvB,YAAA,gBACArjB,KAAAzE,KAAAk3C,sBAAAvjB,MAAA,gBACA3zB,KAAAkP,GAAA4Y,YAAAiwB,sBAAArpC,QAAAjK,MAAA8K,KAAA,SAAAC,OACA,MAAA,YACA,GAAA2jB,GAAArnB,IAAA2D,QAAA4W,EAEA,KADA5W,WACA0jB,EAAA,EAAArnB,IAAAyrC,OAAA/xC,OAAAsG,IAAAqnB,EAAAA,IACA9M,GAAAkxB,OAAApkB,GACA1jB,QAAAnL,KAAAkL,MAAAwB,UAAAW,WAAA,kBAAA0U,GAAAuxB,YAAAH,aAEA,OAAAhoC,WAEAzP,QAEAgP,OAEA,IAAA,OAAAyoC,YAAA,CACA,IAAAtkB,EAAA,EAAArnB,IAAAyrC,OAAA/xC,OAAAsG,IAAAqnB,EAAAA,IACA9M,GAAAkxB,OAAApkB,GACA9M,GAAAqc,UAAA,IAgCA,OA9BA1iC,MAAAyK,MAAA6B,OAAA,SAAAkD,OACA,MAAA,YACA,GAAAwN,MAAAzV,IAAAuC,EAAA4tC,KAAAlnB,EAAA/gB,QAAA+nB,MAOA,KANAxa,MAAAw6B,WAAA,GAAA/wC,OAAA8wC,QACAM,MAAApwC,UAAA8qB,OAAAxqB,MAAAyH,MAAA/E,MAAAqd,YAAA9K,MACA66B,MAAApwC,UAAA8qB,OAAAxqB,MAAAyH,MAAA/E,MAAAqsC,mBAAA95B,MACAxN,MAAAinC,2BACAjf,OAAAhoB,MAAA/E,MAAAqrC,YAAA8B,aACAnoC,WACAlI,IAAAuC,EAAA,EAAA4tC,KAAAH,OAAA/xC,OAAAkyC,KAAA5tC,EAAAvC,MAAAuC,EACAuc,GAAAkxB,OAAAhwC,KACAipB,EAAAgH,OAAAme,aAAAhsC,QAAA0c,IACA5W,QAAAnL,KAAAkzB,OAAAme,aAAApjB,OAAA/B,EAAA,GAEA,OAAA/gB,WAEAzP,OACAgP,QAAAhP,KAAA4sB,KAAArH,KAAAc,IACArX,QAAAA,QAAAO,KAAA,SAAAC,OACA,MAAA,YAGA,MAFAmkB,OAAAnkB,MAAA6nC,kBAAA7nC,MAAA/E,MAAAqd,YAAA,iBACArjB,KAAA+K,MAAA0nC,sBAAAvjB,MAAA,iBACAnkB,MAAAN,GAAA4Y,YAAAgwB,uBAAAzxB,GAAA3X,QAAAjK,MAAA8K,KAAA,WACA,MAAAC,OAAAwB,UAAAW,WAAA,kBAAA0U,GAAAuxB,YAAAH,iBAGAz3C,OACAgP,QAAAO,KAAA,KAAA,WACA,MAAAoR,SAAAnT,IAAA,UAEAwB,QAGA,GADAmkC,UAAAnzC,KAAAyK,MAAAqrC,YAAA2B,aACA,OAAAG,YAAA,CACA,IAAA9tC,EAAA,EAAA4tC,KAAAH,OAAA/xC,OAAAkyC,KAAA5tC,EAAAA,IACAuc,GAAAkxB,OAAAztC,GACAuc,GAAAqc,UAAA+U,WAEAz3C,MAAAyK,MAAA6B,OAAA,SAAAkD,OACA,MAAA,YACA,GAAAwN,MAAAzV,IAAAowC,KAAAjnB,EAAAF,EAAA/gB,OAIA,KAHAuN,MAAAw6B,WAAA,GAAA/wC,OAAA8wC,QACAM,MAAApwC,UAAA8qB,OAAAxqB,MAAAorC,UAAAwC,aAAA34B,MACAvN,WACAlI,IAAAmpB,EAAA,EAAAinB,KAAAJ,OAAA/xC,OAAAmyC,KAAAjnB,EAAAnpB,MAAAmpB,EACArK,GAAAkxB,OAAAhwC,KACAipB,EAAAhhB,MAAA/E,MAAAqsC,mBAAAntC,QAAA0c,IACA7W,MAAA/E,MAAAqsC,mBAAAvkB,OAAA/B,EAAA,GACAA,EAAAhhB,MAAA/E,MAAAqd,YAAAne,QAAA0c,IACA5W,QAAAnL,KAAAkL,MAAA/E,MAAAqd,YAAAyK,OAAA/B,EAAA,GAEA,OAAA/gB,WAEAzP,WACA,CACA,IAAA0wB,EAAA,EAAAinB,KAAAJ,OAAA/xC,OAAAmyC,KAAAjnB,EAAAA,IACArK,GAAAkxB,OAAA7mB,GACArK,GAAAqc,UAAA+U,WAEAz3C,MAAAyK,MAAA6B,OAAA,SAAAkD,OACA,MAAA,YACA,GAAAwN,MAAAg7B,KAAAhG,EAAAiG,UAAAznB,EAAA/gB,OAIA,KAHAuN,MAAAw6B,WAAA,GAAA/wC,OAAA8wC,QACAM,MAAApwC,UAAA8qB,OAAAxqB,MAAAorC,UAAAwC,aAAA34B,MACAvN,WACAuiC,EAAA,EAAAgG,KAAAT,OAAA/xC,OAAAwyC,KAAAhG,EAAAA,IACA3rB,GAAAkxB,OAAAvF,GACAiG,UAAAzoC,MAAA/E,MAAAqrC,YAAA8B,aACApnB,EAAAynB,UAAAtC,aAAAhsC,QAAA0c,IACA5W,QAAAnL,KAAA2zC,UAAAtC,aAAApjB,OAAA/B,EAAA,GAEA,OAAA/gB,WAEAzP,OA4BA,MA1BAyyB,UAAAryB,EAAAC,IAAAk3C,OAAA,SAAA/nC,OACA,MAAA,UAAA6W,IACA,MAAA7W,OAAAod,KAAArH,KAAAc,MAEArmB,OACAgP,QAAAhP,KAAAsI,EAAA2G,IAAAwjB,UAAAljB,KAAA,SAAAC,OACA,MAAA,YAMA,MALAmkB,OAAAnkB,MAAA6nC,kBAAAlE,UAAAwC,aAAA,gBACAlxC,KAAA+K,MAAA0nC,sBAAAvjB,MAAA,gBACAnkB,MAAAN,GAAA4Y,YAAAiwB,sBAAArpC,QAAAjK,MAAA8K,KAAA,WACA,MAAAC,OAAAwB,UAAAW,WAAA,kBAAA0U,GAAAuxB,YAAAH,eAEAjoC,MAAAN,GAAA4Y,YAAAgwB,uBAAAppC,QAAAjK,MAAA8K,KAAA,WACA,GAAAyoC,MAAAhG,EAAAviC,OAEA,KADAA,WACAuiC,EAAA,EAAAgG,KAAAT,OAAA/xC,OAAAwyC,KAAAhG,EAAAA,IACA3rB,GAAAkxB,OAAAvF,GACAviC,QAAAnL,KAAAkL,MAAAwB,UAAAW,WAAA,kBAAA0U,GAAAuxB,YAAAH,aAEA,OAAAhoC,aAGAzP,OACAgP,QAAAO,KAAA,KAAA,WACA,MAAAoR,SAAAnT,IAAA,UAEAwB,SAGA8kC,kBAAArsC,UAAAsvC,iBAAA,SAAAzkC,KAAA9D,IACA,MAAA,OAAAxO,KAAAg3C,WAAA1kC,OAAAtS,KAAAg3C,WAAA1kC,MAAA9D,KACA,GAEA,GAGAslC,kBAAArsC,UAAA+uC,qBAAA,WACA,GAAAprC,MAAAqE,QAAAyoC,WAAAlzC,IAAAuF,KACA2tC,YAAAl4C,KAAAq2C,gBACA6B,WAAA5vC,IACAtI,KAAAyK,MAAAyrC,SAAAl2C,KAAAyK,MAAAyrC,UAAAgC,WAAA5vC,GAEAtI,KAAAg3C,cACAvnC,UACA,KAAArE,OAAA8sC,YACA3tC,MAAA2tC,WAAA9sC,MACA,MAAApL,KAAAg3C,WAAA5rC,QACApL,KAAAg3C,WAAA5rC,UAEAqE,QAAAnL,KAAA,WACA,GAAA6uB,GAAArnB,IAAAT,IAAA8sC,QAGA,KAFA9sC,IAAAtL,MAAAwJ,SAAAgB,OAAAlF,MAAA,KACA8yC,YACAhlB,EAAA,EAAArnB,IAAAT,IAAA7F,OAAAsG,IAAAqnB,EAAAA,IACAnuB,IAAAqG,IAAA8nB,GACAglB,SAAA7zC,KAAAtE,KAAAg3C,WAAA5rC,MAAApG,MAAA,EAEA,OAAAmzC,WACArxC,KAAA9G,MAEA,OAAAyP,UAGAqkC,kBAAArsC,UAAA4uC,cAAA,WACA,MAAAj2C,GAAAg4C,KAAAp4C,KAAAoI,SAAAnE,SAAA,WAAA,OAAA,MAGA6vC,kBAAArsC,UAAAivC,gBAAA,WACA,GAAA2B,eAAAC,UAAAtC,iBAAAC,YAgDA,OA/CAj2C,MAAAyK,MAAAyF,WACAooC,UAAAl4C,EAAAgjC,QAAAhjC,EAAA8N,OAAA9N,EAAAC,IAAAL,KAAAyK,MAAAqsC,mBAAA,UACAwB,UAAA/L,OACAvsC,KAAAyK,MAAAyF,QAAA62B,KAAA3mC,EAAAC,IAAAD,EAAAm4C,QAAAD,WAAA,SAAA9oC,OACA,MAAA,UAAA8uB,EAAAka,GACA,GAAAC,IAWA,OAVAA,MACAjqC,GAAAgqC,EACAlmC,KAAA,OACAlH,KAAAotC,EACAxe,MAAAxqB,MAAA/E,MAAAiE,QAAA+9B,YAAA+L,GACAE,MAAApa,GAEA9uB,MAAAunC,iBAAA,OAAA0B,IAAAjqC,MACAiqC,IAAAjd,UAAA,GAEAid,MAEAz4C,OACAi2C,aAAA71C,EAAA8N,OAAAlO,KAAAyK,MAAAyF,QAAA62B,KAAA,YACAkP,aAAA71C,EAAAC,IAAA41C,aAAA,QACAoC,cAAAj4C,EAAAC,IAAAL,KAAAyK,MAAAqsC,mBAAA,UACAuB,cAAAj4C,EAAA8N,OAAAmqC,cAAA,WACA,MAAA,UAAAz0C,QACA,MAAAA,QACAA,OADA,SAIA5D,OACAA,KAAAyK,MAAAyF,QAAAu5B,SAAArpC,EAAAC,IAAAD,EAAAm4C,QAAAF,eAAA,SAAA7oC,OACA,MAAA,UAAA8uB,EAAAka,GACA,GAAAC,IAWA,OAVAA,MACAjqC,GAAAgqC,EACAlmC,KAAA,WACAlH,KAAAoE,MAAA/E,MAAAqjB,aAAA0qB,GAAAptC,KACA4uB,MAAAxqB,MAAA/E,MAAAqjB,aAAA0qB,GAAAxe,MACA0e,MAAApa,GAEA9uB,MAAAunC,iBAAA,WAAA0B,IAAAjqC,MACAiqC,IAAAjd,UAAA,GAEAid,MAEAz4C,OACAg2C,iBAAA51C,EAAA8N,OAAAlO,KAAAyK,MAAAyF,QAAAu5B,SAAA,YACAuM,iBAAA51C,EAAAC,IAAA21C,iBAAA,MACAh2C,KAAAkP,GAAA4Y,YAAAwuB,iBAAAt2C,KAAAyK,MAAA4E,WACAzL,OAAAoyC,iBACAjP,KAAAkP,aACAvnC,QAAA1O,KAAAyK,MAAA4E,UACAqzB,UAAA,QAIAoR,kBAAArsC,UAAAkxC,cAAA,SAAAtyB,IACA,MAAArmB,MAAAgR,UAAAW,WAAA,cAAA0U,KAGAytB,kBAAArsC,UAAAmxC,gBAAA,SAAAvyB,IACA,GAAA3H,SAAAmH,KAGA,OAFAA,OAAA,oBACAnH,QAAA2H,GAAAf,QACAtlB,KAAAwxB,QAAA1L,YAAAD,MAAAnH,SAAAnP,KAAA,SAAAC,OACA,MAAA,UAAA0Q,QACA,GAAAlR,QAQA,OAPAQ,OAAA/E,MAAAqd,YAAA1nB,EAAAy4C,QAAArpC,MAAA/E,MAAAqd,YAAAzB,IACA7W,MAAAinC,2BACAznC,QAAAQ,MAAAod,KAAA5a,OAAAqU,IACArX,QAAAO,KAAA,WAEA,MADA2Q,UACA1Q,MAAAmnC,gBAEA3nC,QAAAO,KAAA,KAAA,WAEA,MADA2Q,SAAA,GACA1Q,MAAAgiB,QAAA7sB,OAAA,aAGA3E,QAGA8zC,kBAAArsC,UAAAqxC,SAAA,SAAAxmC,MACA,OAAAA,MACA,IAAA,WACA,MAAAtS,MAAAgR,UAAAW,WAAA,aAAA3R,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAAiE,QAAAqqC,kBAAA/4C,KAAAyK,MAAAo8B,aACA,KAAA,OACA,MAAA7mC,MAAAgR,UAAAW,WAAA,cAAA3R,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAAiE,QAAAqqC,qBAIAjF,kBAAArsC,UAAAuxC,aAAA,WACA,MAAAh5C,MAAAgR,UAAAW,WAAA,oBAAA3R,KAAAyK,MAAA4E,YAGAykC,mBAEA7qC,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,oBAAA4yB,mBAEAC,iBAAA,SAAA39B,MAAApQ,YACA,GAAAizC,kBAAAtlC,KAAAulC,aAAAC,YAAAC,YAAAC,eAAAC,YA2JA,OA1JAL,kBAAA74C,EAAAiT,SAAA,sEACA6lC,aAAA,SAAAtlC,OAAAC,KACA,GAAA0lC,gBAAAC,WAAAC,eAAAC,iBAyCA,OAxCAD,gBAAA,WACA,GAAAE,aAAAC,WAAA/vC,EAAAspB,EAAArnB,IAAAT,IAAAoE,QAAA6lC,MAAA1d,aAAAvR,EACA,IAAA,MAAAzS,OAAA0hC,MAAA,CAKA,GAJAoE,oBACApE,MAAA1hC,OAAA0hC,MACA1d,aAAA0d,MAAA1d,aACA+hB,YAAArE,MAAAuE,iBACAjmC,OAAAkjC,mBACA,MAIA,KAFAzrC,IAAAuI,OAAAkjC,mBACArnC,WACA5F,EAAAspB,EAAA,EAAArnB,IAAAT,IAAA7F,OAAAsG,IAAAqnB,EAAAtpB,IAAAspB,EAAA,CAGA,GAFA9M,GAAAhb,IAAAxB,GACA8vC,aAAAtzB,GAAAuR,aACA+hB,YAAA/hB,aAAA,CACAgiB,WAAA/lC,IAAAU,KAAA,oCAAA1K,GACA0vC,eAAAK,WACA,OAEAnqC,QAAAnL,KAAA,QAGA,MAAAmL,WAGAiqC,kBAAA,WACA,MAAA7lC,KAAAU,KAAA,cAAAvC,UAEAunC,eAAA,SAAA/tC,SACA,MAAAsQ,GAAAtQ,SAAAsuC,OAAAb,uBAEAO,WAAA,WACA,GAAAO,YAEA,OADAA,aAAAlmC,IAAAU,KAAA,oCACAnU,EAAAC,IAAA05C,YAAA,SAAAz5C,GACA,MAAAqG,SAAA6E,QAAAlL,MAGAsT,OAAAmH,IAAA,qBAAA0+B,gBACA7lC,OAAA9I,OAAA,QAAA2uC,iBAEAL,YAAA,SAAAxlC,OAAAC,IAAA+G,OAAA0H,OACA,GAAA03B,oBA6CA,OA5CAA,qBAAA,SAAAC,aACA,GAAAC,aAAAC,iBAAAC,UAYA,OAXAA,YAAAh6C,EAAAwT,OAAAkU,aACAlU,OAAAkU,YAAAsyB,WAAAvB,QAAA9wC,MAAAqyC,WAAAH,aAAA1vC,QACA2vC,YAAA95C,EAAAC,IAAA45C,YAAA,SAAA3b,GACA,MAAAA,GAAA1G,eAEAuiB,iBAAA/5C,EAAAm+B,OAAA2b,YAAA,SAAA1b,IAAAC,KACA,MAAAD,KAAAC,MAEA7qB,OAAAigC,QAAA,GAAA8B,aAAAv1C,EAAAuyB,MAAA/e,OAAAigC,QAAA,GAAA8B,aAAAsE,aACArmC,OAAAigC,QAAA,GAAAjc,cAAAuiB,iBACA73B,MAAAm0B,2BACArgC,MAAA8c,QAAA+mB,aAAA1qC,KAAA,WAEA,MADA+S,OAAAsyB,cACAtyB,MAAAqyB,sBAGA9gC,IAAAc,GAAA,SAAA,mDAAA,SAAAT,OACA,GAAAmmC,wBAAAC,cAAAv3B,MASA,OARAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACAq3B,uBAAAxmC,IAAAU,KAAA,2BACA+lC,cAAAzmC,IAAAU,KAAA,4DACA+lC,cAAA90C,OAAA,GAAAoO,OAAAigC,QAAAruC,OAAA,EACA60C,uBAAAz3B,OAEAy3B,uBAAAl4B,OAEAY,OAAAoc,QAAA,gBAAAtc,YAAA,+BAEAhP,IAAAc,GAAA,QAAA,0BAAA,WACA,MAAA,YACA,GAAA4lC,QAAAC,SASA,OARAD,QAAA1mC,IAAAU,KAAA,4DACAimC,UAAAp6C,EAAAC,IAAAk6C,OAAA,SAAA3wC,MACA,GAAA6wC,UAIA,OAHA7wC,MAAAkS,EAAAlS,MAAAu1B,QAAA,aACAsb,UAAA7wC,KAAAa,QACAgwC,UAAAp0B,GAAAqc,UAAA9uB,OAAAigC,QAAA,GAAArlC,GACAisC,UAAAp0B,KAEAzS,OAAAtH,OAAAlM,EAAA2nC,QAAAiS,oBAAAQ,cAEAx6C,OACA6T,IAAAc,GAAA,QAAA,aAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAiO,MAAA6yB,iBACAmE,aAAAh3B,UAGAg3B,aAAA,SAAAh3B,OACA,GAAAo4B,IAEA,OADAA,KAAA/zC,QAAA6E,QAAA,cACA8W,MAAAiyB,UACAmG,IAAA7/B,SAAA,UACA6/B,IAAAnmC,KAAA,SAAA5I,KAAA,eAEA+uC,IAAA//B,YAAA,UACA+/B,IAAAnmC,KAAA,SAAA5I,KAAA,eAGA0tC,eAAA,SAAAzlC,OAAAC,IAAAyO,OACA,GAAAq4B,SAAA53B,MAgBA,OAfA43B,SAAA9mC,IAAAU,KAAA,uBACAomC,QAAA54B,IAAA,gBAAA,WACA,MAAAzY,SAAA,IAAA,WAEA,MADAtD,YAAA2L,WAAA,UACAmK,EAAA,aAAAoG,IAAA,aAAA,eAGAa,OAAApc,QAAA6E,QAAA,wBACAsQ,EAAA,aAAAoG,IAAA,aAAA,UACAy4B,QAAA93B,YAAA,UACAE,OAAAF,YAAA,UACArZ,WAAAuZ,OAAAxO,KAAA,UAAA,iBAAA,iBACAomC,QAAAh4B,SAAA,WACAL,MAAAyzB,eAEAzzB,MAAA+yB,uBAEA8D,YAAA,SAAAvlC,OAAAC,IAAA+G,OAAA0H,OAEA,MADA1O,QAAAgnC,iBACA/mC,IAAAc,GAAA,QAAA,uBAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAT,OAAAtH,OAAA,WACA,MAAA+sC,gBAAAzlC,OAAAC,IAAAyO,YAIA3O,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAApS,OAaA,OAZAoS,OAAAzO,IAAAqN,aACAk4B,YAAAxlC,OAAAC,IAAA+G,OAAA0H,OACA62B,YAAAvlC,OAAAC,IAAA+G,OAAA0H,OACA42B,aAAAtlC,OAAAC,IAAA+G,OAAA0H,OACAzO,IAAAU,KAAA,uBAAAsmC,mBACA3qC,QAAAoS,MAAA+zB,iBACAnmC,QAAAu5B,UAAAv5B,QAAA62B,MAAA72B,QAAA5H,IACA+wC,eAAAzlC,OAAAC,IAAAyO,OAEA1O,OAAAmH,IAAA,WAAA,WACA,MAAAu+B,cAAAh3B,SAEA1O,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,aAAA,UAAA,aAAAsgC,mBAEAG,8BAAA,SAAAluC,WAAAsb,WACA,GAAA3N,MAAA+1B,iBAiDA,OAhDAA,mBAAApoB,UAAAne,IAAA,uCAAA,GACAwQ,KAAA,SAAAC,OAAAC,KA2CA,MA1CAlL,UAAAiL,OAAA,UAAA,SAAAlF,SACA,GAAAosC,eAAA/sC,KAGA,OAFAA,OAAA3N,EAAA8N,OAAAQ,QAAAX,MAAA,cACA+sC,cAAA16C,EAAA+M,KAAAY,OACA+sC,cAAA,EACAjnC,IAAA0nB,OAAAmO,mBACA37B,MAAAA,UAGA8F,IAAAU,KAAA,sBAAAvC,SACA6B,IAAAU,KAAA,kBAAAsG,SAAA,oBAGAjH,OAAAmH,IAAA,kBAAA,SAAAgB,IAAA4hB,OAAAod,UAEA,MADAlnC,KAAAU,KAAA,YAAAgQ,UAAA/F,QACA3K,IAAAU,KAAA,kBAAAiO,KAAAu4B,SAAA,yBAEAnnC,OAAAmH,IAAA,2BAAA,WAEA,MADAlH,KAAAU,KAAA,YAAAgQ,UAAA/F,QACA3K,IAAAU,KAAA,kBAAA5I,KAAA,YAEAkI,IAAAc,GAAA,QAAA,SAAAT,OACA,GAAA6O,OAKA,OAJAA,QAAApc,QAAA6E,QAAA0I,MAAA6O,SACAA,OAAAjB,GAAA,SAAAiB,OAAAjB,GAAA,SACA5N,MAAAuQ,kBAEA5Q,IAAAU,KAAA,YAAAgQ,UAAApE,SAEAtM,IAAAc,GAAA,QAAA,mBAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACAze,WAAA2L,WAAA,8BAEAkC,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,GAAA8mC,UAAAj4B,MAKA,OAJA7O,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAg4B,SAAAj4B,OAAAtY,QACAzE,WAAA2L,WAAA,kBAAAoR,OAAAte,KAAA,WAAAse,OAAApX,UAEAiI,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,0BAAA,aAAA,cAAAygC,gCAEAD,kBAAA,SAAA5W,sBAAAjnB,MAAA6kC,aACA,GAAAtnC,MAAAunC,aA4GA,OA3GAA,eAAAD,YAAA93C,IAAA,kDAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAA64B,kBAAA5d,kBAAA6d,gBAAAC,oBAAAC,eAAAC,sBAqGA,OApGAj5B,OAAAzO,IAAAqN,aACAq6B,uBAAA,KACAD,eAAA,KACAF,gBAAA,KACA7d,kBAAA,KACA3pB,OAAAmH,IAAA,kBAAA,SAAAgB,IAAA4hB,QACA,GAAAtX,GAGA,OAFAA,IAAAzS,OAAA/I,MAAA+P,OAAA4gC,mBACAF,eAAA3d,OACAJ,kBAAA/iB,WAEA5G,OAAAmH,IAAA,2BAAA,WACA,GAAAsL,GAGA,OAFAA,IAAAzS,OAAA/I,MAAA+P,OAAA4gC,mBACAF,eAAA,KACA/d,kBAAA/iB,WAEA5G,OAAA9I,OAAA8P,OAAA4gC,kBAAA,SAAAn1B,IACA,GAAAtY,MACA,OAAAsY,KACAkX,kBAAAF,sBAAArd,OAAAnM,IAAAwS,GAAAzS,OAAAlF,SACAX,MAAAwvB,kBAAAG,iBACA,IAAA3vB,MAAAvI,QACAqO,IAAAU,KAAA,sBAAAvC,SACA6B,IAAAU,KAAA,eAAAsG,SAAA,kBACA,IAAA9M,MAAAvI,SACA81C,eAAAl7C,EAAAiK,KAAAgc,GAAAkE,QAAA,IAEAgT,kBAAAtF,YACAkjB,oBAEA5d,kBAAAC,uBAAA,SAAAG,OAAAC,SACA,MAAA59B,MAAAulB,KAAAoY,OAAAC,SAAAruB,KAAA,WACA,MAAA+S,OAAAqyB,sBAGApX,kBAAA/iB,OAAA,WACA,GAAAuB,KAAAyG,KAAAe,aAAAqa,QAAAe,SAAAtrB,SAAA1H,KAAAka,MAAA6R,WAqBA,OApBAA,aAAA13B,KAAAy9B,uBACA,MAAA6d,gBAAA,IAAAvtC,MAAAvI,QACAmG,KAAA+rB,YACA7R,MAAA6R,cAEAkG,QAAA59B,KAAAqmB,GAAAkE,OAAA+wB,gBACA3c,SAAA3+B,KAAAm+B,WAAAP,SACAjyB,KAAAgzB,SAAAvzB,KAAA,YAAAssB,YAAA,UACA7R,MAAA8Y,SAAAvzB,KAAA,MAAAssB,aAEA3b,KACA2b,YAAAA,YACA3pB,MAAA/N,KAAA09B,iBACAV,SAAAh9B,KAAAi4B,WACAtsB,KAAAA,KACAka,MAAAA,OAEAtC,aAAA,6CACAlQ,SAAA4nC,YAAA93C,IAAAogB,cAAA,GACAf,KAAAnP,SAAA0I,KACA/b,KAAA6T,IAAA2O,KAAAA,OAEA+a,kBAAA/iB,UAzCA,SA4CA6gC,oBAAA,WACA,GAAA74B,MAAAzU,KAMA,OALAA,OAAAwvB,kBAAAG,iBACAlb,KAAA04B,eACAntC,MAAAA,QAEA8F,IAAA0nB,OAAA/Y,MACA3O,IAAAU,KAAA,aAAAgQ,UAAApE,KAAA,WACA,MAAArE,GAAA9b,MAAAgS,YAGAmpC,kBAAA,WAaA,MAZAtnC,KAAAc,GAAA,QAAA,mBAAA,SAAAT,OACA,GAAAmS,GAKA,OAJAnS,OAAAG,iBACAH,MAAAuQ,kBACA4B,GAAAzS,OAAA/I,MAAA+P,OAAA4gC,mBACAD,uBAAAD,eACA,MAAAA,eACA/d,kBAAAqB,qBAAA0c,gBAEAD,wBAGAxnC,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,GAAAunC,aAAA14B,OAAAsD,EASA,OARAnS,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAqD,GAAAzS,OAAA/I,MAAA+P,OAAA4gC,mBACAD,uBAAAx4B,OAAAte,KAAA,WACAg3C,YAAA5nC,IAAAU,KAAA,aACAknC,YAAAlnC,KAAA,KAAAoG,YAAA,UACA8gC,YAAAlnC,KAAA,mBAAAgnC,uBAAA,MAAA1gC,SAAA,UACA0iB,kBAAAqB,qBAAA2c,2BAGA3nC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,qBAAA,wBAAA,UAAA,cAAAwgC,oBAEAE,wBAAA,WACA,GAAAxgC,MAAA+nC,WAmIA,OAlIAA,aAAA,SAAAlwC,QAAAmwC,YACA,GAAAC,uBAAAC,OAAAp3C,KAAAq3C,eAAAC,gBAAAC,aAAAC,QAAAxsC,QAAAysC,oBAAAj3C,MAAAk3C,SAgHA,OA/GAl3C,OAAAuG,QAAAvG,QACAuG,QAAAs/B,OAAA7lC,MAAA,GACA82C,gBAAA,WACAtsC,UACA,KAAA,GAAA0jB,GAAA,EAAA9nB,IAAAswC,WAAA9zB,WAAAriB,OAAA,EAAA6F,KAAA,EAAAA,KAAA8nB,EAAAA,GAAA9nB,IAAAA,KAAA,EAAA8nB,IAAAA,IAAA1jB,QAAAnL,KAAA6uB,EACA,OAAA1jB,UACA1H,MAAA/H,MACAyE,QACA03C,UAAA/7C,EAAAC,IAAAs7C,WAAA9zB,WAAA,WACA,MAAA,KAEApjB,KAAAH,MACAG,KAAArE,EAAAg8C,IAAAL,gBAAAI,WACAj3C,OACAm3C,UAAA,iBAEA9xB,QACA3H,MAAA,KAGAo5B,aAAA57C,EAAAC,IAAAs7C,WAAA9zB,WAAA,SAAAy0B,IACA,MAAAA,IAAAC,UAEA93C,KAAAH,MACAG,KAAArE,EAAAg8C,IAAAL,gBAAAC,cACA92C,OACAm3C,UAAA,2BAGAP,eAAA17C,EAAA8N,OAAA9N,EAAAC,IAAAs7C,WAAA9zB,WAAA,SAAAy0B,IACA,MAAAA,IAAAE,YACA,SAAAA,WACA,MAAA,OAAAA,YAEA/3C,KAAAH,MACAG,KAAArE,EAAAg8C,IAAAL,gBAAAD,gBACA52C,OACAm3C,UAAA,0BAGAH,oBAAA97C,EAAAC,IAAAs7C,WAAA9zB,WAAA,SAAAy0B,IACA,OAAAA,GAAA,oBAEA73C,KAAAH,MACAG,KAAArE,EAAAg8C,IAAAL,gBAAAG,qBACAh3C,OACAm3C,UAAA,yBAGAT,sBAAAx7C,EAAAC,IAAAs7C,WAAA9zB,WAAA,SAAAy0B,IACA,OAAAA,GAAA,kBAAAA,GAAA,sBAEA73C,KAAAH,MACAG,KAAArE,EAAAg8C,IAAAL,gBAAAH,uBACA12C,OACAm3C,UAAA,yBAGAR,QAAA,gBAAA,wBAAA,qBAAA,oBAAA,qBACAI,SACAQ,MACAC,aACA1R,IAAA,EACA2R,MAAA,EACA1R,KAAA,EACA2R,OAAA,GAEAC,YAAA,OACAC,WAAA,GAEAC,OACAC,MAAArB,WAAA9zB,WAAAriB,OACAy3C,UAAA,UACAC,oBAAA,EACAC,wBAAA,GACAC,oBAAA,gDACAC,iBAAA,GACAC,cAAA,WACA,MAAA,KAGAC,QACAC,WAAA,EACAt4C,OACA0d,MAAA,EACA66B,MAAA,GAEAlzB,QACA3H,MAAA,EACA66B,MAAA,EACAC,OAAA,EACAC,UAAA,IAGA9B,OAAAA,OACA+B,SAAA,EACAC,aACAC,QAAA,SAAA1sB,MAAA2sB,KAAAC,KAAAC,UACA,MAAA,KAAAA,SAAAC,YACA,qCAAAH,KAAA,cAAAC,KACA,IAAAC,SAAAC,YACA,kCAAAH,KAAA,OAAAC,KACA,IAAAC,SAAAC,YACA,sDAAAH,KAAA,OAAA/8C,KAAAm9C,IAAAH,MAEA,wDAAAD,KAAA,OAAA/8C,KAAAm9C,IAAAH,SAKAxyC,QAAA4yC,QACA5yC,QAAA6yC,KAAA55C,KAAAw3C,SAAAx3C,KAAA,SAEAkP,KAAA,SAAAC,OAAAC,KACA,GAAArI,QAUA,OATAA,SAAA7E,QAAA6E,QAAAqI,KACAD,OAAA9I,OAAA,QAAA,WACA,MAAA,OAAA8I,OAAA0hC,OACAoG,YAAAlwC,QAAAoI,OAAA0hC,OACA1hC,OAAAmH,IAAA,SAAA,WACA,MAAA2gC,aAAAlwC,QAAAoI,OAAA0hC,UAHA,SAOA1hC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAA0gC,yBAEAH,8BAAA,SAAA1yB,WACA,GAAAg9B,kBAAA3qC,KAAA6G,OAAAnH,QAuCA,OAtCAA,UAAAiO,UAAAne,IAAA,6BAAA,GACAqX,OAAA,SAAA8f,GAAAikB,wBAAAC,wBACA,MAAAlkB,IAAA9X,KAAAnP,UACAkrC,wBAAAA,wBACAC,uBAAAA,2BAGAF,iBAAA,SAAAjnB,YACA,GAAAonB,SAGA,OAFAA,UAAAr+C,EAAAo6B,KAAA,EAAAnD,aACAonB,SAAAr+C,EAAAq6B,KAAA,IAAAgkB,WACAz9C,KAAA62B,MAAA4mB,WAEA9qC,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAApP,QAoBA,OAnBAA,SAAA7E,QAAA6E,QAAAqI,KACAD,OAAA9I,OAAA8P,OAAA8jC,qBAAA,SAAApJ,OACA,GAAA7d,cAAA+mB,uBAAAG,cAAAJ,wBAAA7mB,WACA,OAAA,OAAA4d,OACA5d,YAAA4d,MAAA1d,aACA+mB,cAAArJ,MAAAsJ,eACAnnB,aAAA6d,MAAA3d,cACAgnB,cAAAjnB,aACA6mB,wBAAA,IAAA7mB,YAAAinB,cACAH,uBAAA,IAAA/mB,aAAAknB,gBAEAJ,wBAAA,IACAC,uBAAA,IAAA/mB,aAAAC,aAEA6mB,wBAAAD,iBAAAC,wBAAA,GACAC,uBAAAF,iBAAAE,uBAAA,GACAhkC,OAAA3G,IAAA0qC,wBAAAC,yBAbA,SAgBA5qC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,wBAAA,cAAAugC,iCAEAltC,KAAA9G,MCrpCA,WACA,GAAA6+C,+BAAAC,yBAAAC,wBAAAp2C,SAAAq2C,cAAAj2C,QAAAE,MAAApJ,OAAAqJ,WAAAnJ,MAAAyJ,UAEAzJ,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAO,WAAAxJ,KAAAD,MAAAyJ,WAEAN,WAAAlJ,KAAAD,MAAAmJ,WAEAP,SAAA3I,KAAAD,MAAA4I,SAEAI,QAAA/I,KAAAD,MAAAgJ,QAEAlJ,OAAA8G,QAAA9G,OAAA,gBAEAm/C,cAAA,SAAA1kB,IAGA,MAFAA,IAAA7vB,QAAA0kB,WACAmL,GAAAtf,MACAsf,GAAAtoB,UAGA8sC,yBAAA,SAAA1oC,MAAAkQ,IAAAtgB,WAAAi5C,YACA,GAAAtrC,KAiFA,OAhFAA,MAAA,SAAAC,OAAAC,KACA,GAAAqrC,WA2EA,OA1EAA,YAAA,WACA,MAAA,UAAA74B,IACA,MAAAvK,GAAAuK,IAAA3J,MAAA,8BAEA1c,MACA2I,SAAAiL,OAAA,UAAA,SAAAlF,SACA,GAAAywC,YACA,IAAAzwC,QAAAgM,eAAA/Q,QAAA,aAAA,GA+DA,MA5DAw1C,aAAA,WACA,MAAAF,YAAAt6C,OAAA,QAAA,oDAEAkP,IAAA6f,UACAC,MAAA,eACAyrB,OAAA,WACAC,YAAA,UACAxrB,YAAA,WACAC,aAAA,EACAG,YAAA,oDACAF,QAAA,EACAC,UAAA,UACAZ,QAAA,EACAksB,UACA3C,MAAA,IAEAlhB,KAAA,WACA,MAAA5nB,KAAA8O,SAAA,mBACA9O,IAAA6f,SAAA,UACAyrB,eAFA,UAMAtrC,IAAAc,GAAA,sBAAA,SAAAT,MAAAggB,IACA,GAAAqrB,WAAAC,MACA,OAAA3rC,KAAA8O,SAAA,mBACAuR,GAAA4Z,OAAApa,SAAA,cACAyrB,iBAGAK,OAAAtrB,GAAAtqB,KAAAa,QAAA4b,GACAk5B,UAAAL,WAAAhrB,GAAAtqB,MACAo1C,cAAA9qB,GAAAtqB,MACAgK,OAAA6O,MAAA,kBAAA+8B,QAAAD,UAAA,MACArrB,GAAAtqB,KAAA2K,KAAA,KAAAoG,YAAA,cAEA9G,IAAAc,GAAA,mBAAA,SAAAT,MAAAggB,IACA,GAAAxX,OAAAiX,MAAAtN,EACA,IAAA,IAAAvK,EAAAoY,GAAAP,MAAA,IAAAvsB,SAAA5B,OAoBA,MAjBAmuB,OAAAvzB,EAAAiO,OAAA6lB,GAAAP,MAAA,SAAA/pB,MACA,MAAAkS,GAAAlS,MAAA8S,UAEAA,MAAAtc,EAAAq6B,IAAAr6B,EAAAC,IAAAszB,MAAA,SAAA/pB,MACA,MAAAs1C,YAAAt1C,SAEAyc,GAAAjmB,EAAAC,IAAAszB,MAAA,SAAA/pB,MACA,GAAA41C,OAQA,OAPA51C,MAAAkS,EAAAlS,MACA41C,OAAA51C,KAAAa,QAAA4b,GACApa,WAAA,WACA,MAAA,YACA,MAAArC,MAAA2K,KAAA,KAAAoG,YAAA,aAEA3a,MAAA,KACAw/C,SAEA5rC,OAAA6O,MAAA,iBAAA4D,GAAA3J,MAAA,QAEA7I,IAAAc,GAAA,YAAA,SAAAT,MAAAggB,IACA,MAAAA,IAAAtqB,KAAA2K,KAAA,KAAAsG,SAAA,eAGAjH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIAkrC,8BAAA,WACA,GAAAlrC,KAqBA,OApBAA,MAAA,SAAAC,OAAAC,KAgBA,MAfAlL,UAAAiL,OAAA,UAAA,SAAAlF,SACA,MAAAA,SAAAgM,eAAA/Q,QAAA,aAAA,IACAkK,IAAA6f,UACAI,aAAA,IAEAjgB,IAAAc,GAAA,cAAA,SAAAT,MAAAggB,IACA,GAAAqrB,WAAAC,MAKA,OAJAA,QAAAtrB,GAAAtqB,KAAAa,QAAA4b,GACAk5B,UAAArrB,GAAAtqB,KAAA8S,QACAsiC,cAAA9qB,GAAAtqB,MACAgK,OAAA6O,MAAA,kBAAA+8B,QAAAD,UAAA,MACArrB,GAAAtqB,KAAA2K,KAAA,KAAAoG,YAAA,cAVA,SAcA/G,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIAorC,wBAAA,WACA,GAAAprC,KA+CA,OA9CAA,MAAA,SAAAC,OAAAC,KACA,MAAAlL,UAAAiL,OAAA,UAAA,SAAAlF,SACA,MAAAA,SAAAgM,eAAA/Q,QAAA,aAAA,IACAkK,IAAA6f,UACAK,QAAA,EACAD,aAAA,EACAH,MAAA,uCACA0rB,YAAA,+CAEAxrC,IAAAc,GAAA,sBAAA,SAAAT,MAAAggB,IACA,GAAAxX,OAAAiX,MAAAtN,EAcA,OAbAsN,OAAAvzB,EAAAiO,OAAA6lB,GAAAP,MAAA,SAAA/pB,MACA,MAAAkS,GAAAlS,MAAA8S,UAEAA,MAAAtc,EAAAq6B,IAAAr6B,EAAAC,IAAAszB,MAAA,SAAA/pB,MACA,MAAAkS,GAAAlS,MAAA8S,WAEA2J,GAAAjmB,EAAAC,IAAAszB,MAAA,SAAA/pB,MACA,GAAA41C,OAIA,OAHA51C,MAAAkS,EAAAlS,MACA41C,OAAA51C,KAAAa,QAAA4b,GACA24B,cAAAp1C,MACA41C,SAEA5rC,OAAA6O,MAAA,iBAAA4D,GAAA3J,MAAA9I,OAAA4jB,OAAAhpB,MAEAqF,IAAAc,GAAA,mBAAA,SAAAT,MAAAggB,IACA,GAAAqrB,WAAAC,MACA,IAAA,IAAAtrB,GAAAtqB,KAAAxC,SAAA5B,OAUA,MAPAg6C,QAAAtrB,GAAAtqB,KAAAa,QAAA4b,GACAk5B,UAAArrB,GAAAtqB,KAAA8S,QACAzQ,WAAA,WACA,MAAA,YACA,MAAAioB,IAAAtqB,KAAA2K,KAAA,KAAAoG,YAAA;GAEA3a,MAAA,KACA4T,OAAA6O,MAAA,kBAAA+8B,QAAAD,UAAA3rC,OAAA4jB,OAAAhpB,MAEAqF,IAAAc,GAAA,YAAA,SAAAT,MAAAggB,IACA,MAAAA,IAAAtqB,KAAA2K,KAAA,KAAAsG,SAAA,cAvCA,WA6CAlH,KAAAA,OAIA9T,OAAA4T,UAAA,qBAAA,UAAA,eAAA,aAAA,aAAAqrC,2BAEAj/C,OAAA4T,UAAA,0BAAA,UAAA,eAAA,aAAAorC,gCAEAh/C,OAAA4T,UAAA,oBAAA,UAAA,eAAA,aAAAsrC,2BAEAj4C,KAAA9G,MCpMA,WACA,GAAAy/C,wBAAAC,6BAAAC,wCAAA9/C,OAAAE,KAEAA,OAAAC,KAAAD,MAEAF,OAAA8G,QAAA9G,OAAA,gBAEA4/C,uBAAA,SAAArpC,MAAApQ,YACA,GAAA2N,MAAAisC,yBAAAC,aAAAC,qBAAAC,YAiDA,OAhDAD,sBAAA,GACAD,cACAG,SAAA,IACAC,OAAA,UAEAL,yBAAA,WACA,MAAA,UAAAM,aACA,MAAAA,aAAA3rC,KAAA,QAAA/O,OAGA06C,YAAAh+B,IAAA,SAAA,QAFAg+B,YAAAh+B,IAAA,SAAA49B,wBAKA9/C,MACA+/C,aAAA,WACA,MAAA,UAAAlsC,KACA,GAAAssC,aAAAD,WAKA,OAJAA,aAAArsC,IAAAU,KAAA,iBACA4rC,YAAAtsC,IAAAU,KAAA,kBACA4rC,YAAAt9B,YAAA,UACAq9B,YAAAr9B,YAAA,QACA+8B,yBAAAM,eAEAlgD,MACA2T,KAAA,SAAAC,OAAAC,IAAA+G,QAoBA,MAnBAhH,QAAA9I,OAAA8P,OAAAwlC,gBAAA,SAAA5oB,QAEA,MADAA,QAAA5jB,OAAA/I,MAAA+P,OAAAwlC,iBACA5oB,OAAAke,OACA7hC,IAAAgH,SAAA,iBAEAklC,aAAAlsC,OAGAA,IAAAc,GAAA,QAAA,gCAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACA0rC,aAAAlsC,KACAA,IAAAU,KAAA,iBAAA8rC,YAAAR,gBAEAhsC,IAAAc,GAAA,QAAA,4BAAA,SAAAT,OACA,GAAAsjB,OAGA,OAFAtjB,OAAAG,iBACAmjB,OAAA5jB,OAAA/I,MAAA+P,OAAAwlC,iBACAp6C,WAAA2L,WAAA,kBAAA6lB,UAEA5jB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAA,UAAA,aAAAgsC,yBAEAC,6BAAA,SAAAn8C,SAAA+d,WACA,GAAA3N,MAAAN,QAwCA,OAvCAA,UAAAiO,UAAAne,IAAA,8BAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAA+R,UAAAxvB,MAiCA,OAhCAyd,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,qBAEAqgC,UAAA,WACA,MAAA,KAAAp2B,OAAAlF,QAAAgM,eAAA/Q,QAAA,oBAEA6Q,OAAA,SAAAgd,QACA,GAAAzb,KAAAukC,mBAAApgC,OAAAH,MAAAwgC,YAiBA,OAhBAA,cAAAh9C,SAAAvB,QAAA,qBACA0M,QAAAkF,OAAAlF,QAAAsN,KACAwb,OAAAA,OAAAxb,OAEA+D,MAAA6U,OAAA4C,OAAAyb,iBAAApe,OAAA,eACA3U,OAAA0U,OAAA4C,OAAA0b,kBAAAre,OAAA,eACAyrB,mBAAAvgC,MAAA,IAAAG,OACAnE,KACA3Q,KAAAosB,OAAApsB,KACAm1C,aAAAA,aACAD,mBAAAA,mBACA7oB,aAAAD,OAAAG,eAAA,EACAD,YAAAF,OAAAI,cAAA,EACAoS,UAAAA,YACA/R,WAAAA,cAEApkB,IAAA2O,KAAAnP,SAAA0I,OAEAnI,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAyR,QACA,MAAAhd,QAAAgd,UAEA5jB,OAAAmH,IAAA,0BAAA,WACA,MAAAP,QAAAnE,OAAAmP,eAEA5R,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,yBAAA,aAAA,cAAAisC,+BAEAC,wCAAA,SAAA35C,WAAA6Z,UACA,GAAA2gC,sBAAA7sC,IAgCA,OA/BA6sC,uBAAA,EACA7sC,KAAA,SAAAC,OAAAC,KACA,GAAA4sC,WAgBA,OAfAA,YAAA3kC,EAAA,SACAjI,IAAA6sC,MAAAD,YACA5sC,IAAAc,GAAA,QAAA,SAAAT,OAIA,MAHAA,OAAAG,iBACAmsC,sBAAAA,qBACA3gC,SAAAE,MAAA0gC,YAEAz6C,WAAA2L,WADA6uC,qBACA,gCAEA,iCAGA5sC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEApH,OAAAmH,IAAA,0BAAA,WACA,MAAA,UAAAgB,IAAA83B,SACA,GAAAloC,KAOA,OANAkU,UAAAK,OAAAugC,YAEA90C,KADAkoC,QAAAruC,OAAA,EACA,sBAEA,sBAEAqO,IAAAU,KAAA,SAAA5I,KAAAA,QAEA3L,SAGA2T,KAAAA,OAIA9T,OAAA4T,UAAA,6CAAA,aAAA,aAAAksC,2CAEA74C,KAAA9G,MC1JA,WACA,GAAA2gD,sBAAAh4C,SAAAI,QAAAE,MAAApJ,OAAAqJ,WAAAnJ,MAAAuJ,QAAAE,UAEAzJ,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAO,WAAAxJ,KAAAD,MAAAyJ,WAEAN,WAAAlJ,KAAAD,MAAAmJ,WAEAP,SAAA3I,KAAAD,MAAA4I,SAEAI,QAAA/I,KAAAD,MAAAgJ,QAEAO,QAAAtJ,KAAAD,MAAAuJ,QAEAzJ,OAAA8G,QAAA9G,OAAA,kBAEA8gD,qBAAA,WACA,GAAAhtC,MAAA+nC,WA4GA,OA3GAA,aAAA,SAAAlwC,QAAAmwC,YACA,GAAAl3C,MAAAm8C,KAAA3E,QAAAh3C,KA8EA,OA7EAA,OAAAuG,QAAAvG,QACAuG,QAAAs/B,OAAA,KACA8V,KAAAxgD,EAAAC,IAAAs7C,WAAA,SAAAr7C,GACA,MAAAs0B,QAAAt0B,EAAAugD,OAEAp8C,QACAA,KAAAq8C,SACAr8C,KAAArE,EAAAg8C,IAAAwE,KAAAxgD,EAAAC,IAAAs7C,WAAA,SAAAoF,GACA,MAAAA,GAAAC,kBAEA97C,OACAm3C,UAAA,2BAGA53C,KAAAq8C,SACAr8C,KAAArE,EAAAg8C,IAAAwE,KAAAxgD,EAAAC,IAAAs7C,WAAA,SAAAoF,GACA,MAAAA,GAAAE,eAEA/7C,OACAm3C,UAAA,0BAGAJ,SACAQ,MACAC,aACA1R,IAAA,EACA2R,MAAA,EACA1R,KAAA,EACA2R,OAAA,GAEAC,YAAA,OACAC,WAAA,GAEAC,OACAmE,UAAA,EAAA,OACAzmB,IAAAmmB,KAAA,GACApmB,IAAAp6B,EAAAwkC,KAAAgc,MACAtc,KAAA,OACA6c,UAAAP,KACA3D,UAAA,MACAC,oBAAA,EACAC,wBAAA,GACAC,oBAAA,gDACAC,iBAAA,GAEA+D,OACA3mB,IAAA,GAEA8iB,QACAC,WAAA,EACAt4C,OACA0d,MAAA,EACA66B,MAAA,GAEAlzB,QACA3H,MAAA,EACA66B,MAAA,EACAC,OAAA,EACAC,UAAA,IAGA9B,QAAA,qBAAA,yBACA+B,SAAA,EACAC,aACAC,QAAA,SAAA1sB,MAAA2sB,KAAAC,KAAAC,UACA,GAAAoD,eAAAC,YAGA,OAFAD,eAAAzsB,OAAAmpB,MAAAlpB,OAAA,UACAysB,aAAAtgD,KAAA62B,MAAAmmB,MACA,IAAAC,SAAAC,YACA,kCAAAmD,cAAA,cAAAC,aAEA,+BAAAD,cAAA,OAAAC,gBAKA91C,QAAA4yC,QACA5yC,QAAA6yC,KAAA55C,KAAAw3C,SAAAx3C,KAAA,SAEAkP,KAAA,SAAAC,OAAAC,KACA,GAAArI,QAqBA,OApBAA,SAAA7E,QAAA6E,QAAAqI,KACAD,OAAAmH,IAAA,SAAA,WACA,MAAAnH,QAAA0hC,MACAoG,YAAAlwC,QAAAoI,OAAA0hC,MAAAsL,MADA,SAIAhtC,OAAAmH,IAAA,oCAAA,WAEA,MADAlH,KAAAzM,SAAAyb,YAAA,QACAvZ,QAAA,IAAA,WACA,MAAAsK,QAAA0hC,MACAoG,YAAAlwC,QAAAoI,OAAA0hC,MAAAsL,MADA,WAKAhtC,OAAA9I,OAAA,QAAA,WACA,MAAA,OAAA8I,OAAA0hC,MAGAoG,YAAAlwC,QAAAoI,OAAA0hC,MAAAsL,MAHA,SAKAhtC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,gBAAAktC,uBAEA75C,KAAA9G,MVvIA,WACA,GAAAuhD,0BAAAC,wBAAA74C,SAAAE,SAAAhJ,OAAAE,KAEAA,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEA24C,wBAAA,SAAAprC,MAAAC,OAAAiQ,IAAAtgB,WAAA6Z,SAAAib,iBACA,GAAAnnB,KAyDA,OAxDAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,QAAA8L,YAmDA,OAlDAlM,QAAA+yB,OAAA,EACA/yB,OAAAmH,IAAA,eAAA,SAAAgB,IAAA0lC,SAAA/6B,MAcA,MAbA9S,QAAAyR,MACA3W,QAAAkF,OAAAvE,UACAqzB,UAAA+e,SACA9e,WAAAjc,KACAogB,aAAA,EACAljC,OAAAgQ,OAAAlF,QAAA0X,oBACAF,YAAA,KACA6gB,SAEAnzB,OAAA+yB,OAAA,EACA9yB,IAAAU,KAAA,iBAAAiO,KAAA,UACA3O,IAAAU,KAAA,UAAAiO,KAAA,cACA3O,IAAAU,KAAA,cAAAvP,IAAA,IACA81B,gBAAA3a,KAAAtM,OAEAD,OAAAmH,IAAA,gBAAA,SAAAgB,IAAAsJ,MAMA,MALAzR,QAAAyR,KAAAA,KACAzR,OAAA+yB,OAAA,EACA9yB,IAAAU,KAAA,iBAAAiO,KAAA,QACA3O,IAAAU,KAAA,UAAAiO,KAAA,eACA3O,IAAAU,KAAA,cAAAvP,IAAA,IACA81B,gBAAA3a,KAAAtM,OAEAiM,aAAAjM,IAAAU,KAAA,kBACAP,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAA8yB,gBAAA7yB,KAAAnF,OAGA,OAFAkF,OAAAG,iBACAF,KAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAK,YAGAZ,OAAA+yB,OACA33B,QAAAoH,MAAA4J,OAAA,QAAApM,OAAAyR,MACA2hB,eAAA,yBAEAh4B,QAAAoH,MAAAmP,KAAA3R,OAAAyR,MACA2hB,eAAA,yBAEAnnB,SAAAE,MAAAD,cACA9Q,QAAAO,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAAJ,cACAgb,gBAAAtc,MAAA3K,KACA7N,WAAA2L,WAAAq1B,eAAAviC,SAdA,SAiBAzE,OACA6T,IAAAc,GAAA,SAAA,OAAAX,QACAJ,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA4tC,yBAAA,SAAAnrC,MAAAkQ,IAAAtgB,WAAA6Z,SAAAib,iBACA,GAAAnnB,KA8CA,OA7CAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,QAAA8L,YAwCA,OAvCAlM,QAAAO,MACA1P,KAAA,GACAiiB,KAAA,MAEA1S,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAzP,MAAA0P,KAAA9E,UAAAL,QAAAyyC,SAAA/6B,IAGA,OAFAxS,OAAAG,iBACAF,KAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAK,YAGAqL,SAAAE,MAAAD,cACArb,KAAAmP,OAAAO,KAAA1P,KACA4K,UAAAuE,OAAAvE,UACAoyC,SAAA7tC,OAAAO,KAAAstC,SACA/6B,KAAA9S,OAAAO,KAAAuS,KACA1X,QAAAsX,IAAAE,MAAA4gB,WAAA/3B,UAAAoyC,SAAA/6B,KAAAjiB,MACAuK,QAAAO,KAAA,SAAAxD,QAGA,MAFA8T,UAAAK,OAAAJ,cACA9Z,WAAA2L,WAAA,wBAAA5F,QACA+uB,gBAAAtc,MAAA3K,OAEA7E,QAAAO,KAAA,KAAA,WAEA,MADAsQ,UAAAK,OAAAJ,cACAa,QAAAnT,IAAA,WAhBA,SAmBAxN,OACA4T,OAAAmH,IAAA,gBAAA,SAAAgB,IAAA0lC,SAAA/6B,MAEA,MADAoU,iBAAA3a,KAAAtM,KACAD,OAAAO,MACA1P,KAAA,GACAg9C,SAAAA,SACA/6B,KAAAA,QAGA5G,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAJ,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAA4T,UAAA,sBAAA,UAAA,WAAA,eAAA,aAAA,aAAA,kBAAA+tC,0BAEA3hD,OAAA4T,UAAA,uBAAA,UAAA,eAAA,aAAA,aAAA,kBAAA8tC,4BAEAz6C,KAAA9G,MOlIA,WACA,GAAA0hD,qBAAAC,mBAAAC,+BAAAC,uBAAAC,uBAAAp5C,YAAAC,SAAAI,QAAAE,MAAApJ,OAAAqJ,WAAAnJ,MAAAuJ,QAAAE,WACAtC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAyJ,WAAAxJ,KAAAD,MAAAyJ,WAEAP,MAAAjJ,KAAAD,MAAAkJ,MAEAF,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAO,WAAAlJ,KAAAD,MAAAmJ,WAEAI,QAAAtJ,KAAAD,MAAAuJ,QAEAZ,YAAA1I,KAAAD,MAAA2I,YAEA7I,OAAA8G,QAAA9G,OAAA,kBAEA6hD,oBAAA,SAAAz5C,YAKA,QAAAy5C,qBAAAj3C,MAAAuG,UAAA4b,KAAA4E,QAAAuwB,IAAA3N,QAAA9rC,EAAAukB,SAAAzkB,SAAAC,QAAAgsC,OAAAC,UAAAlzB,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAA6yC,IACA/hD,KAAAqC,OAAA+xC,QACAp0C,KAAAsI,EAAAA,EACAtI,KAAA6sB,SAAAA,SACA7sB,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAAq0C,OAAAA,OACAr0C,KAAAs0C,UAAAA,UACA5rC,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,YACA5jB,KAAAy0C,0BACAzlC,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,eAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YAiQA,MA7RAhmB,QAAAw6C,oBAAAz5C,YAEAy5C,oBAAArwC,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,YAAA,cAAA,aAAA,YAAA,eAAA,YA6BAqwC,oBAAAj6C,UAAAgtC,wBAAA,WAmBA,MAlBAz0C,MAAAyK,MAAAsQ,IAAA,wBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAAwyC,gBACAxyC,MAAA8kC,UAAAv/B,WAAA,OAAA,SAAA,gCAAA,KAEA/U,OACAA,KAAAyK,MAAAsQ,IAAA,uBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAAwyC,gBACAxyC,MAAA8kC,UAAAv/B,WAAA,OAAA,SAAA,2BAAA,KAEA/U,OACAA,KAAAyK,MAAAsQ,IAAA,wBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwyC,kBAEAhiD,OACAA,KAAAyK,MAAAsQ,IAAA,sBAAA/a,KAAAiiD,UACAjiD,KAAAyK,MAAAsQ,IAAA,oBAAA,SAAAvL,OACA,MAAA,UAAAuM,IAAAqL,OAAA/B,MACA,GAAArW,QAGA,OAFAqW,MAAAa,YAAAkB,OACApY,QAAAQ,MAAAod,KAAArH,KAAAF,MACArW,QAAAO,KAAA,KAAA,WACA,MAAAoR,SAAAnT,IAAA,YAGAxN,QAGA0hD,oBAAAj6C,UAAAutC,uBAAA,WACA,GAAA/1B,YAAAg2B,WAQA,OAPAh2B,YAAA,mBAAAjf,KAAAyK,MAAA4E,UAAA,SACArP,KAAAq0C,OAAAr1B,UAAAhf,KAAAyK,MAAAwU,WAAA,SAAAzP,OACA,MAAA,YACA,MAAAA,OAAAwyC,kBAEAhiD,OACAi1C,YAAA,mBAAAj1C,KAAAyK,MAAA4E,UAAA,eACArP,KAAAq0C,OAAAr1B,UAAAhf,KAAAyK,MAAAwqC,YAAA,SAAAzlC,OACA,MAAA,YAGA,MAFAA,OAAAgmC,oBACAhmC,MAAA0yC,kBACA1yC,MAAA2yC,eAEAniD,QAGA0hD,oBAAAj6C,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAmBA,MAlBAA,SAAAuN,sBACAzM,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAA23C,WAAAhiD,EAAAiO,OAAAK,QAAA6b,OAAA,SACA/a,MAAA/E,MAAA0zB,WAAAp1B,QAAA2F,QAAA6b,OAAA,SAAAhc,GACA,MAAAA,GAAAC,KAEAgB,MAAA/E,MAAA43C,SAAAt5C,QAAA2F,QAAAX,MAAA,SAAAQ,GACA,MAAAA,GAAAC,KAEAgB,MAAA/E,MAAA63C,eAAAliD,EAAAiO,OAAAK,QAAAgf,cAAA,SACAle,MAAA/E,MAAAo8B,aAAAzmC,EAAAiO,OAAAK,QAAAqf,YAAA,SACAve,MAAA/E,MAAAqjB,aAAA/kB,QAAA2F,QAAAqf,YAAA,SAAAxf,GACA,MAAAA,GAAAC,KAEAgB,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAW,UAEA1O,QAGA0hD,oBAAAj6C,UAAAy6C,gBAAA,WACA,MAAAliD,MAAAkP,GAAA2kC,QAAAyB,MAAAt1C,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAAg3C,UAAAlyC,KAAA,SAAAC,OACA,MAAA,UAAA8lC,OACA,GAAAiN,oBAAAC,mBAAAC,eAAAC,cAoBA,OAnBAA,gBAAAtiD,EAAAm+B,OAAAn+B,EAAAi+B,OAAAiX,MAAA1d,cAAA,SAAA+qB,IAAA3Q,GACA,MAAA2Q,KAAA3Q,GACA,GACAuQ,mBAAAniD,EAAAm+B,OAAAn+B,EAAAi+B,OAAAiX,MAAAsN,kBAAA,SAAAD,IAAA3Q,GACA,MAAA2Q,KAAA3Q,GACA,GACAwQ,mBAAAE,eAAAH,mBACAE,eAAAnN,MAAAuN,YAAAvN,MAAAwN,gBACAtzC,MAAA/E,MAAA6qC,MAAAA,MACA9lC,MAAA/E,MAAA6qC,MAAAoN,eAAAA,eACAlzC,MAAA/E,MAAA6qC,MAAAiN,mBAAAA,mBACA/yC,MAAA/E,MAAA6qC,MAAAkN,mBAAAA,mBACAhzC,MAAA/E,MAAA6qC,MAAAmN,eAAAA,eAEAjzC,MAAA/E,MAAA6qC,MAAAC,oBADAD,MAAAoN,eACA1hD,KAAA62B,MAAA,IAAAyd,MAAAiN,mBAAAjN,MAAAoN,gBAEA,EAEAlzC,MAAA/E,MAAA6qC,MAAAyN,UAAAzN,MAAAuN,YAAAvN,MAAAwN,gBACAxN,QAEAt1C,QAGA0hD,oBAAAj6C,UAAA+tC,kBAAA,WACA,MAAAx1C,MAAAkP,GAAAC,SAAAm+B,WAAAttC,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAi9B,aACA,MAAAj9B,OAAA/E,MAAAiE,QAAA+9B,YAAAA,cAEAzsC,QAGA0hD,oBAAAj6C,UAAA06C,WAAA,WACA,MAAAniD,MAAAkP,GAAA2kC,QAAA1wC,IAAAnD,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAAg3C,UAAAlyC,KAAA,SAAAC,OACA,MAAA,UAAAgoB,QAGA,MAFAhoB,OAAA/E,MAAA+sB,OAAAA,OACAhoB,MAAA/E,MAAAqd,YAAA1nB,EAAAiO,OAAAmpB,OAAAme,aAAA,gBACAne,SAEAx3B,QAGA0hD,oBAAAj6C,UAAA8e,UAAA,WACA,MAAAvmB,MAAAkP,GAAAsX,MAAAC,KAAAzmB,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAAg3C,UAAAlyC,KAAA,SAAAC,OACA,MAAA,UAAAgX,OACA,GAAA3c,GAAAspB,EAAAqlB,EAAA1sC,IAAA4rC,KAAAC,KAAAtsC,IAAA8sB,KAAAsL,KAAA7/B,OAAAyhB,KAAAgB,EAQA,KAPA7W,MAAA/E,MAAA+b,MAAApmB,EAAAiO,OAAAmY,MAAA,mBACAhX,MAAA/E,MAAAu4C,WACA33C,IAAAjL,EAAAuyB,MAAAnjB,MAAA/E,MAAAqd,cAEAtZ,GAAA,QAGA3E,EAAA,EAAAiC,IAAAT,IAAA7F,OAAAsG,IAAAjC,EAAAA,IAIA,IAHAwc,GAAAhb,IAAAxB,GACA2F,MAAA/E,MAAAu4C,QAAA38B,GAAA7X,OACA2pB,KAAA3oB,MAAA/E,MAAA63C,eACAnvB,EAAA,EAAAukB,KAAAvf,KAAA3yB,OAAAkyC,KAAAvkB,EAAAA,IACAvvB,OAAAu0B,KAAAhF,GACA3jB,MAAA/E,MAAAu4C,QAAA38B,GAAA7X,IAAA5K,OAAA4K,MAIA,KADAi1B,KAAAj0B,MAAA/E,MAAA+b,MACAgyB,EAAA,EAAAb,KAAAlU,KAAAj+B,OAAAmyC,KAAAa,EAAAA,IACAnzB,KAAAoe,KAAA+U,GACA,MAAAhpC,MAAA/E,MAAAu4C,QAAA39B,KAAAsd,aAAA,MAAAnzB,MAAA/E,MAAAu4C,QAAA39B,KAAAsd,YAAAtd,KAAAzhB,SACA4L,MAAA/E,MAAAu4C,QAAA39B,KAAAsd,YAAAtd,KAAAzhB,QAAAU,KAAA+gB,KAGA,OAAAmB,SAEAxmB,QAGA0hD,oBAAAj6C,UAAAu6C,cAAA,WACA,MAAAhiD,MAAAsI,EAAA2G,KACAjP,KAAAw1C,oBAAAx1C,KAAAkiD,kBAAAliD,KAAAmiD,aAAA5yC,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA+W,cAEAvmB,UAIA0hD,oBAAAj6C,UAAAiZ,gBAAA,WACA,GAAAre,QAAA2M,OAaA,OAZA3M,SACAC,MAAAtC,KAAAqC,OAAAC,MACA2gD,MAAAjjD,KAAAqC,OAAA4gD,OAEAj0C,QAAAhP,KAAA4sB,KAAA5qB,QAAAK,QAAAkN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAIA,MAHA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAc,MAAA/E,MAAAg3C,SAAAh9C,KAAAi+B,UACAlzB,MAAAwlC,yBACAvwC,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAwyC,kBAEAhiD,QAGA0hD,oBAAAj6C,UAAAy7C,kBAAA,SAAA18B,OACA,GAAA/hB,MAAAkvB,KAGA,OAFAA,OAAA3zB,KAAAmjD,YAAA38B,OACA/hB,KAAAzE,KAAAk3C,sBAAAvjB,OACA3zB,KAAAkP,GAAAsX,MAAA48B,6BAAApjD,KAAAyK,MAAAiE,QAAAF,GAAA/J,OAGAi9C,oBAAAj6C,UAAA07C,YAAA,SAAA38B,OACA,GAAA3c,GAAA6S,MAAA9S,KAAA+pB,MAAA7nB,GAEA,KADA6nB,SACAjX,MAAA7S,EAAA,EAAAiC,IAAA0a,MAAAhhB,OAAAsG,IAAAjC,EAAA6S,QAAA7S,EACAD,KAAA4c,MAAA9J,OACA9S,KAAA,gBAAA8S,MACA9S,KAAA0tC,cACA3jB,MAAArvB,KAAAsF,KAGA,OAAA+pB,QAGA+tB,oBAAAj6C,UAAAyvC,sBAAA,SAAAC,MACA,MAAA/2C,GAAAC,IAAA82C,KAAA,SAAA72C,GACA,OACA+iD,QAAA/iD,EAAAkO,GACAukB,MAAAzyB,EAAA,oBAKAohD,oBAAAj6C,UAAAw6C,SAAA,SAAAlmC,IAAAsJ,KAAAqB,KAAAwgB,SAAAnU,OACA,GAAA/jB,SAAAwhB,EAAAhK,KAgBA,OAfAgK,GAAAxwB,KAAAyK,MAAAu4C,QAAA39B,KAAAsd,YAAAtd,KAAAzhB,QAAA+F,QAAA0b,MACArlB,KAAAyK,MAAAu4C,QAAA39B,KAAAsd,YAAAtd,KAAAzhB,QAAA2uB,OAAA/B,EAAA,GACAhK,MAAAxmB,KAAAyK,MAAAu4C,QAAAt8B,MAAAwgB,UACA1gB,MAAA+L,OAAAQ,MAAA,EAAA1N,MACAA,KAAAsd,WAAAjc,KACArB,KAAAzhB,OAAAsjC,SACA7hB,KAAAi+B,gBAAAvwB,MACA/jB,QAAAhP,KAAA4sB,KAAArH,KAAAF,MACArlB,KAAAgR,UAAAW,WAAA,oBAAA0T,MACArW,QAAAO,KAAA,SAAAC,OACA,MAAA,YAEA,MADAA,OAAA0zC,kBAAA18B,OACAhX,MAAA0yC,oBAEAliD,OACAgP,QAAAO,KAAA,KAAA,WACA,MAAA,YACA,MAAAoR,SAAAnT,IAAA,oBAEAxN,QAGA0hD,oBAAAj6C,UAAA87C,WAAA,SAAAjxC,KAAA+T,IACA,OAAA/T,MACA,IAAA,WACA,MAAAtS,MAAAgR,UAAAW,WAAA,eAAA3R,KAAAyK,MAAAg3C,SAAA,MAAAp7B,GAAAA,GAAA7X,GAAA,OACA,KAAA,OACA,MAAAxO,MAAAgR,UAAAW,WAAA,gBAAA3R,KAAAyK,MAAAg3C,SAAA,MAAAp7B,GAAAA,GAAA7X,GAAA,UAIAkzC,oBAAAj6C,UAAA+7C,mBAAA,SAAAn+B,MACA,MAAArlB,MAAAgR,UAAAW,WAAA,kBAAA0T,OAGAq8B,qBAEAz4C,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,sBAAAwgC,qBAEAC,mBAAA,SAAA37C,YACA,GAAA2N,KAsBA,OArBAA,MAAA,SAAAC,OAAAC,KACA,GAAAyO,OAAAmhC,YAgBA,OAfAnhC,OAAAzO,IAAAqN,aACArN,IAAAc,GAAA,QAAA,+BAAA,SAAAT,OACA,GAAA6O,OAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAAF,YAAA,UACA7c,WAAA2L,WAAA,uCAEA8xC,aAAA5vC,IAAAU,KAAA,yBACAkvC,aAAA9uC,GAAA,SAAA,SAAAT,OACA,GAAAwvC,gBAAA3gC,MAGA,OAFAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACA0gC,eAAA7vC,IAAAU,KAAA,kDACAmvC,eAAAxhC,IAAA,OAAA,GAAAa,OAAA4gC,gBAEA/vC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,eAAA,aAAAkuC,qBAEAE,uBAAA,SAAA77C,YACA,GAAA2N,KAmBA,OAlBAA,MAAA,SAAAC,OAAAC,KASA,MARAA,KAAAgnC,mBACAjnC,OAAA9I,OAAA,OAAA,SAAAua,MACA,MAAAA,MAAA2T,aAAAnlB,IAAA8O,SAAA,WACA9O,IAAAgH,SAAA,YACAwK,KAAA2T,YAAAnlB,IAAA8O,SAAA,WACA9O,IAAA8G,YAAA,WADA,SAIA9G,IAAAU,KAAA,cAAAI,GAAA,QAAA,WACA,MAAAd,KAAAU,KAAA,cAAAoO,SAAA,WAAA,OAGA/O,OAAAtH,OAAA,WACA,MAAAtG,YAAA2L,WAAA,gBAAAiC,OAAAyR,YAKA1R,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAA,aAAAouC,yBAEAD,+BAAA,SAAA1yC,IACA,GAAA00C,aAAAjwC,KAAAkwC,cA6FA,OA5FAD,aAAA,GACAC,eAAA,IACAlwC,KAAA,SAAAC,OAAAC,KACA,GAAAiwC,cAAAC,6BAAAC,0BAAAC,2BAAAC,oBAgFA,OA/EAtwC,QAAAmH,IAAA,oBAAA,WACA,MAAA,YACA,MAAAipC,+BAEAhkD,OACA2I,SAAAiL,OAAA,UAAA,WAGA,MAFAA,QAAAuwC,eAAAj1C,GAAAsX,MAAA49B,qBAAAxwC,OAAAlF,QAAAF,IACAoF,OAAAywC,SAAAn1C,GAAAsX,MAAA89B,cAAA1wC,OAAAlF,QAAAF,GAAAoF,OAAA6tC,UACAuC,8BAEApwC,OAAA2wC,WAAA,SAAA3gD,QAGA,MAFAgQ,QAAAuwC,eAAAvgD,OAAA4K,KAAAoF,OAAAuwC,eAAAvgD,OAAA4K,IACAU,GAAAsX,MAAAg+B,uBAAA5wC,OAAAvE,UAAAuE,OAAAuwC,gBACAH,6BAEApwC,OAAA6wC,OAAA,SAAAp+B,IAOA,MANAA,IAGAzS,OAAAywC,SAAAh+B,GAAA7X,KAAAoF,OAAAywC,SAAAh+B,GAAA7X,IAFAoF,OAAAywC,SAAA,OAAAzwC,OAAAywC,SAAA,MAIAn1C,GAAAsX,MAAAk+B,gBAAA9wC,OAAAvE,UAAAuE,OAAA6tC,SAAA7tC,OAAAywC,UACAL,6BAEAF,aAAA,WACA,MAAA,UAAAp9B,KAAAwgB,UACA,GAAA1gB,OAAAm+B,gBAAA1/C,KAEA,OADAuhB,OAAA5S,OAAAovC,QAAAt8B,MAAAwgB,UAAA1hC,OACAoO,OAAAuwC,eAAAjd,WACA1gB,OAAA5S,OAAAywC,SAAA39B,OACAi+B,gBAAA3jD,KAAA62B,MAAA72B,KAAA4jD,KAAAp+B,QACAvhB,MAAA2+C,YAAAe,iBAEA1/C,MAAA2+C,YAEA3+C,OAEA,IAEAjF,MACAkkD,qBAAA,WACA,MAAA,UAAAhd,SAAAjiC,OACA,GAAA4/C,OAEA,OADAA,QAAAhxC,IAAAU,KAAA,kBAAA2yB,UACAjiC,MACA4/C,OAAA3iC,IAAA,YAAAjd,OAEA4/C,OAAA3iC,IAAA,YAAA2hC,kBAGA7jD,MACAikD,2BAAA,WACA,MAAA,YACA,GAAAa,cAAAC,QAAAC,UASA,OARAF,iBACAC,QAAAlxC,IAAAU,KAAA,oBACAuwC,aAAA1kD,EAAAC,IAAA0kD,QAAA,SAAAF,QACA,MAAA/oC,GAAA+oC,QAAAI,YAAA,KAEAD,WAAA5kD,EAAAm+B,OAAAumB,aAAA,SAAAI,MAAAjgD,OACA,MAAAigD,OAAAjgD,QAEA4O,IAAAU,KAAA,0BAAA2N,IAAA,QAAA8iC,cAEAhlD,MACA+jD,6BAAA,WACA,MAAA,UAAA7c,UACA,GAAAie,kBASA,OARAA,mBAAArB,aAAA,KAAA5c,UACA9mC,EAAAglD,QAAAxxC,OAAAkU,YAAA,SAAAzB,IACA,GAAAphB,MAEA,OADAA,OAAA6+C,aAAAz9B,GAAA7X,GAAA04B,UACAjiC,MAAAkgD,kBACAA,kBAAAlgD,MADA,SAIAi/C,qBAAAhd,SAAAie,qBAEAnlD,MACAgkD,0BAAA,WACA,MAAA,YACA5jD,EAAAglD,QAAAxxC,OAAA0uC,eAAA,SAAA1+C,QACA,MAAAmgD,8BAAAngD,OAAA4K,MAEAy1C,+BAEAjkD,QAGA2T,KAAAA,OAIA9T,OAAA4T,UAAA,2BAAA,eAAAmuC,iCAEAE,uBAAA,WACA,GAAAuD,WAAA1xC,IAiDA,OAhDA0xC,YAAA,EACA1xC,KAAA,SAAAC,OAAAC,KACA,GAAAyxC,eAqBA,OApBAA,gBAAAzxC,IAAAzM,SAAAmN,KAAA,mBACA+wC,eAAAzqC,SAAA,iBACAjH,OAAA9I,OAAA,mBAAA,SAAAob,aACA,GAAA/X,KAeA,OAdAA,MAAAyF,OAAAnF,UAAAyX,aACA,SAAA/X,KACA/N,EAAAmlD,OAAA3xC,QACAxI,KAAA,aACA2b,OAAA,sBACAs+B,UAAAA,YAGAjlD,EAAAmlD,OAAA3xC,QACAxI,KAAA+C,KAAA8Y,kBACAF,OAAA5Y,KAAA6Y,MACAq+B,UAAAA,YAGAC,eAAA35C,KAAAiI,OAAAxI,QAEAzC,SAAAiL,OAAA,UAAA,SAAAlF,SACA,MAAAA,SAAAgM,eAAA/Q,QAAA,eAAA,IACA07C,WAAA,EACAxxC,IAAAU,KAAA,uBAAAI,GAAA,QAAA,WACA,MAAA,YACA,GAAA2N,MACA,KAAAzO,IAAAU,KAAA,KAAAoO,SAAA,WAIA,MADAL,OAAAzO,IAAAqN,aACAoB,MAAAkhC,mBAAA5vC,OAAAyR,QAEArlB,OACAslD,eAAA3qC,YAAA,iBACA2qC,eAAA3wC,GAAA,QAAA,WACA,GAAA2N,MACA,KAAAzO,IAAAU,KAAA,KAAAoO,SAAA,WAIA,MADAL,OAAAzO,IAAAqN,aACAoB,MAAAkhC,mBAAA5vC,OAAAyR,SAnBA,WAyBA1R,KAAAA,KACA5R,YAAA,gCACA0I,OACAgE,UAAA,SACAC,QAAA,IACA2W,KAAA,OAKAxlB,OAAA4T,UAAA,yBAAA,OAAAquC,0BAEAh7C,KAAA9G,MCxhBA,WACA,GAAAwlD,4BAAA78C,SAAAI,QAAAE,MAAApJ,OAAAqJ,WAAAnJ,MAAAyJ,UAEAzJ,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAO,WAAAxJ,KAAAD,MAAAyJ,WAEAN,WAAAlJ,KAAAD,MAAAmJ,WAEAP,SAAA3I,KAAAD,MAAA4I,SAEAI,QAAA/I,KAAAD,MAAAgJ,QAEAlJ,OAAA8G,QAAA9G,OAAA,gBAEA2lD,2BAAA,SAAApvC,MAAAkQ,IAAAtgB,YACA,GAAA2N,KAkDA,OAjDAA,MAAA,SAAAC,OAAAC,KA6CA,MA5CAlL,UAAAiL,OAAA,UAAA,SAAAlF,SACA,GAAAswC,eAAAyG,OAAAC,eAAAC,eAAAlyB,IACA,IAAA/kB,QAAAgM,eAAA/Q,QAAA,aAAA,GAqCA,MAlCAg8C,gBAAA,KACAD,eAAA,KACAD,OAAA,KACAhyB,KAAA5f,IACAmrC,cAAA,SAAAyG,QAGA,MAFAA,QAAAh7C,QAAA0kB,WACAs2B,OAAAzqC,MACAyqC,OAAAzzC,UAEAyhB,KAAAC,UACAE,OAAA,wBACAE,aAAA,EACAurB,YAAA,uBACAjsB,OAAA,MAEAK,KAAA9e,GAAA,WAAA,SAAAT,MAAAggB,IACA,GAAAqrB,WAAAqG,SAAAC,YAAAC,QAAAC,YAAAC,QAAAC,QAgBA,OAfAA,UAAA/xB,GAAAtqB,KAAAxC,SACAq+C,OAAAvxB,GAAAtqB,KACAg8C,SAAAH,OAAAh7C,QAAA4a,KACAk6B,UAAAkG,OAAA/oC,QACAgpC,eAAAO,SAAAx7C,QACAu7C,QAAAL,eAAAt/B,GAAAs/B,eAAAt/B,GAAA7X,GAAA,KACAu3C,YAAAJ,eAAAO,GAAA13C,GACAs3C,QAAAJ,eAAAr/B,GAAAq/B,eAAAr/B,GAAA7X,GAAA,KACAq3C,YAAAH,eAAAQ,GAAA13C,IACAq3C,cAAAE,aAAAD,UAAAE,UACAhH,cAAAyG,QAEA7xC,OAAAtH,OAAA,WACA,MAAAtG,YAAA2L,WAAA,sBAAAi0C,SAAAE,QAAAD,YAAAtG,aAEArrB,GAAAtqB,KAAA2K,KAAA,KAAAoG,YAAA,aAEA8Y,KAAA9e,GAAA,YAAA,SAAAT,MAAAggB,IAEA,MADAyxB,gBAAAzxB,GAAAtqB,KAAAxC,SAAAqD,QACAypB,GAAAtqB,KAAA2K,KAAA,KAAAsG,SAAA,eAGAjH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,uBAAA,UAAA,eAAA,aAAA+xC,8BAEA1+C,KAAA9G,MD3EA,WACA,GAAAmmD,qCAAAC,mCAAAC,iBAAAC,gBAAAC,4BAAAC,oBAAAC,yBAAAC,wBAAAh+C,YAAAC,SAAAg+C,gBAAAC,iBAAA79C,QAAAE,MAAApJ,OAAAqJ,WAAAnJ,MAAAuJ,QAAAE,WACAtC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAO,WAAAxJ,KAAAD,MAAAyJ,WAEAN,WAAAlJ,KAAAD,MAAAmJ,WAEAP,SAAA3I,KAAAD,MAAA4I,SAEAI,QAAA/I,KAAAD,MAAAgJ,QAEAO,QAAAtJ,KAAAD,MAAAuJ,QAEAZ,YAAA1I,KAAAD,MAAA2I,YAEA7I,OAAA8G,QAAA9G,OAAA,eAEA8mD,gBAAA,YAEAC,kBACAC,WACAC,UAAA,yBAEAC,WACAD,UAAA,0BAIAT,iBAAA,SAAAp+C,YAKA,QAAAo+C,kBAAA57C,MAAAuG,UAAA4b,KAAA4E,QAAAuwB,IAAA3N,QAAA9rC,EAAAF,SAAAykB,SAAAxkB,QAAAgsC,OAAAC,UAAAlzB,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAA6yC,IACA/hD,KAAAqC,OAAA+xC,QACAp0C,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAA6sB,SAAAA,SACA7sB,KAAAqI,QAAAA,QACArI,KAAAq0C,OAAAA,OACAr0C,KAAAs0C,UAAAA,UACA5rC,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,SACA5jB,KAAAyK,MAAAu8C,mBACAhnD,KAAAy0C,0BACAzlC,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,YAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YAmQA,MAhSAhmB,QAAAm/C,iBAAAp+C,YAEAo+C,iBAAAh1C,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,YAAA,aAAA,YAAA,eAAA,YA8BAg1C,iBAAA5+C,UAAAgtC,wBAAA,WAuBA,MAtBAz0C,MAAAyK,MAAAsQ,IAAA,qBAAA,SAAAvL,OACA,MAAA,YAGA,MAFAA,OAAAqjC,kBACArjC,MAAAgmC,oBACAhmC,MAAA8kC,UAAAv/B,WAAA,YAAA,SAAA,6BAAA,KAEA/U,OACAA,KAAAyK,MAAAsQ,IAAA,sBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAAqjC,kBACArjC,MAAA8kC,UAAAv/B,WAAA,YAAA,SAAA,kCAAA,KAEA/U,OACAA,KAAAyK,MAAAsQ,IAAA,sBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAAqjC,kBACArjC,MAAAgmC,sBAEAx1C,OACAA,KAAAyK,MAAAsQ,IAAA,oBAAA/a,KAAAinD,qBACAjnD,KAAAyK,MAAAsQ,IAAA,iBAAA/a,KAAA60C,QACA70C,KAAAyK,MAAAsQ,IAAA,qCAAA/a,KAAAknD,0BACAlnD,KAAAyK,MAAAsQ,IAAA,qCAAA/a,KAAAmnD,2BAGAd,iBAAA5+C,UAAAqxC,SAAA,SAAAxmC,KAAA40B,UACA,OAAA50B,MACA,IAAA,WACA,MAAAtS,MAAAgR,UAAAW,WAAA,aAAA3R,KAAAyK,MAAA4E,UAAA63B,SAAAlnC,KAAAyK,MAAAo8B,aACA,KAAA,OACA,MAAA7mC,MAAAgR,UAAAW,WAAA,cAAA3R,KAAAyK,MAAA4E,UAAA63B,YAIAmf,iBAAA5+C,UAAA2/C,mBAAA,SAAA/gC,IACA,MAAArmB,MAAAgR,UAAAW,WAAA,kBAAA0U,KAGAggC,iBAAA5+C,UAAAw/C,oBAAA,SAAAlrC,IAAAsrC,OAAAhhC,IACA,GAAArX,QAGA,OAFAqX,IAAAH,YAAAmhC,OACAr4C,QAAAhP,KAAA4sB,KAAArH,KAAAc,IACArX,QAAAO,KAAA,KAAA,WACA,MAAAoR,SAAAnT,IAAA,WAIA64C,iBAAA5+C,UAAA+tC,kBAAA,WACA,MAAAx1C,MAAAkP,GAAAC,SAAAm+B,WAAAttC,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAi9B,aACA,MAAAj9B,OAAA/E,MAAAiE,QAAA+9B,YAAAA,cAEAzsC,QAGAqmD,iBAAA5+C,UAAAorC,gBAAA,WACA,GAAAxwC,OAIA,OAHAA,SACAilD,qBAAA,GAEAtnD,KAAAkP,GAAA4Y,YAAAy/B,QAAAvnD,KAAAyK,MAAA4E,UAAAhN,QAAAkN,KAAA,SAAAC,OACA,MAAA,UAAAsY,aACA,GAAAje,GAAAspB,EAAAqlB,EAAA1sC,IAAA4rC,KAAAC,KAAAtsC,IAAA8sB,KAAAsL,KAAA7/B,OAAAyiB,GAAAmhC,WAAAC,WAKA,KAJAj4C,MAAA/E,MAAAqd,YAAAA,YACA0/B,WAAApnD,EAAA2I,QAAA+e,YAAA,UACA2/B,eACAp8C,IAAAmE,MAAA/E,MAAAo8B,aACAh9B,EAAA,EAAAiC,IAAAT,IAAA7F,OAAAsG,IAAAjC,EAAAA,IAAA,CAKA,GAJAjG,OAAAyH,IAAAxB,GACA,MAAA29C,WAAA5jD,OAAA4K,MACAg5C,WAAA5jD,OAAA4K,QAEA,MAAAgB,MAAA/E,MAAA+8C,WAEA,IADArvB,KAAA3oB,MAAA/E,MAAA+8C,WAAA5jD,OAAA4K,IACA2kB,EAAA,EAAAukB,KAAAvf,KAAA3yB,OAAAkyC,KAAAvkB,EAAAA,IACA9M,GAAA8R,KAAAhF,GACA9M,GAAAziB,SAAAA,OAAA4K,IACAi5C,YAAAnjD,KAAA+hB,GAIA,IAAAziB,OAAAkjC,aAAA,MAAAt3B,MAAA/E,MAAA+8C,YAAA,IAAAh4C,MAAA/E,MAAA+8C,WAAA5jD,OAAA4K,IAAAhJ,OAEA,IADAi+B,KAAAj0B,MAAA/E,MAAA+8C,WAAA5jD,OAAA4K,IAAA/H,OAAAghD,aACAjP,EAAA,EAAAb,KAAAlU,KAAAj+B,OAAAmyC,KAAAa,EAAAA,IACAnyB,GAAAod,KAAA+U,GACAnyB,GAAAziB,SAAAA,OAAA4K,IACAg5C,WAAA5jD,OAAA4K,IAAAlK,KAAA+hB,GAIAmhC,YAAA5jD,OAAA4K,IAAApO,EAAAiO,OAAAm5C,WAAA5jD,OAAA4K,IAAA,gBAMA,MAJAgB,OAAA/E,MAAA+8C,WAAAA,WACAt+C,WAAAsG,MAAA/E,MAAA,WACA,MAAA+E,OAAA/E,MAAAkH,WAAA,qBAAAmW,eAEAA,cAEA9nB,QAGAqmD,iBAAA5+C,UAAAy/C,yBAAA,SAAAnrC,IAAAmrB,UACA,GAAA7kC,OAIA,OAHAA,SACAuB,OAAAsjC,UAEAlnC,KAAAkP,GAAA4Y,YAAAy/B,QAAAvnD,KAAAyK,MAAA4E,UAAAhN,QAAAkN,KAAA,SAAAC,OACA,MAAA,UAAAsY,aAGA,MAFAtY,OAAA/E,MAAA+8C,WAAAtgB,UAAA9mC,EAAAiO,OAAAyZ,YAAA,gBACAtY,MAAA/E,MAAAkH,WAAA,sCAAAu1B,SAAApf,aACAA,cAEA9nB,QAGAqmD,iBAAA5+C,UAAA0/C,yBAAA,SAAAprC,IAAAmrB,UAEA,MADAlnC,MAAAyK,MAAA+8C,WAAAtgB,aACAlnC,KAAAyK,MAAAkH,WAAA,uCAAAu1B,WAGAmf,iBAAA5+C,UAAAigD,WAAA,WACA,MAAA1nD,MAAAsI,EAAA2G,KAAAjP,KAAAw1C,oBAAAx1C,KAAA6yC,qBAGAwT,iBAAA5+C,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SAiBA,MAhBAA,SAAAwN,qBACA1M,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAA8f,OAAAnqB,EAAAiO,OAAAK,QAAA6b,OAAA,SACA/a,MAAA/E,MAAA0zB,WAAAp1B,QAAA2F,QAAA6b,OAAA,SAAAjqB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAqjB,aAAA/kB,QAAA2F,QAAAqf,YAAA,SAAAztB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAo8B,aAAAzmC,EAAAiO,OAAAK,QAAAqf,YAAA,SACAve,MAAAm4C,0BACAn4C,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGAqmD,iBAAA5+C,UAAAutC,uBAAA,WACA,GAAAC,YAEA,OADAA,aAAA,mBAAAj1C,KAAAyK,MAAA4E,UAAA,eACArP,KAAAq0C,OAAAr1B,UAAAhf,KAAAyK,MAAAwqC,YAAA,SAAAzlC,OACA,MAAA,YACA,MAAAA,OAAAqjC,oBAEA7yC,QAGAqmD,iBAAA5+C,UAAAiZ,gBAAA,WACA,GAAA1R,QAEA,OADAA,SAAAhP,KAAAqtB,cACAre,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAd,SAGA,MAFAc,OAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAyB,MAAAwlC,yBACAxlC,MAAAk4C,aAAAn4C,KAAA,WACA,MAAAC,OAAA/E,MAAAkH,WAAA;KAGA3R,QAGAqmD,iBAAA5+C,UAAAkgD,wBAAA,WACA,GAAA99C,GAAAiC,IAAAw4B,KAAAj5B,IAAAzH,OAAAgkD,qBAIA,KAHAA,sBAAA5nD,KAAAkP,GAAAi9B,OAAA0b,mBAAA7nD,KAAAyK,MAAA4E,WACArP,KAAAyK,MAAAu8C,mBACA37C,IAAArL,KAAAyK,MAAAo8B,aACAh9B,EAAA,EAAAiC,IAAAT,IAAA7F,OAAAsG,IAAAjC,EAAAA,IACAjG,OAAAyH,IAAAxB,GACAy6B,KAAAsjB,sBAAAhkD,OAAA4K,IACAxO,KAAAyK,MAAAu8C,gBAAApjD,OAAA4K,IAAApO,EAAA0nD,IAAAlB,iBAAAtiB,MAAAA,KAAAqiB,eAEA,OAAA3mD,MAAA+nD,wBAGA1B,iBAAA5+C,UAAAsgD,qBAAA,WACA,MAAA/nD,MAAAkP,GAAAi9B,OAAA4b,qBAAA/nD,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAAu8C,kBAGAX,iBAAA5+C,UAAAugD,qBAAA,SAAA9gB,SAAA+gB,aAEA,MADAjoD,MAAAyK,MAAAu8C,gBAAA9f,UAAA+gB,YACAjoD,KAAA+nD,wBAGA1B,iBAAA5+C,UAAAygD,aAAA,SAAAhhB,UACA,GAAA5C,KAEA,OADAA,MAAAtkC,KAAAyK,MAAAu8C,gBAAA9f,WAAAyf,gBACAC,iBAAAtiB,MAAAwiB,WAAAF,iBAAAD,iBAAAG,WAGAT,iBAAA5+C,UAAAyvC,sBAAA,SAAAC,KAAAlgB,OAIA,MAHA,OAAAA,QACAA,MAAA,gBAEA72B,EAAAC,IAAA82C,KAAA,SAAA72C,GACA,OACA82C,MAAA92C,EAAAkO,GACAukB,MAAAzyB,EAAA22B,WAKAovB,iBAAA5+C,UAAA4vC,kBAAA,SAAAF,MACA,GAAAttC,GAAA6S,MAAA9S,KAAA+pB,MAAA7nB,GAEA,KADA6nB,SACAjX,MAAA7S,EAAA,EAAAiC,IAAAqrC,KAAA3xC,OAAAsG,IAAAjC,EAAA6S,QAAA7S,EACAD,KAAAutC,KAAAz6B,OACA9S,KAAAu+C,aAAAzrC,MACA9S,KAAA0tC,cACA3jB,MAAArvB,KAAAsF,KAGA,OAAA+pB,QAGA0yB,iBAAA5+C,UAAAotC,OAAA,SAAA94B,IAAAsK,GAAA0/B,YAAAF,YAAAnpC,OACA,GAAA0rC,aAAAp5C,QAAAwhB,CA0BA,OAzBAu1B,eAAAF,aACAr1B,EAAAxwB,KAAAyK,MAAA+8C,WAAAzB,aAAAp8C,QAAA0c,IACArmB,KAAAyK,MAAA+8C,WAAAzB,aAAAxzB,OAAA/B,EAAA,GACAxwB,KAAAyK,MAAA+8C,WAAA3B,aAAAtzB,OAAA7V,MAAA,EAAA2J,IACAA,GAAAziB,OAAAiiD,cAEAr1B,EAAAxwB,KAAAyK,MAAA+8C,WAAA3B,aAAAl8C,QAAA0c,IACArmB,KAAAyK,MAAA+8C,WAAA3B,aAAAtzB,OAAA/B,EAAA,GACAxwB,KAAAyK,MAAA+8C,WAAA3B,aAAAtzB,OAAA7V,MAAA,EAAA2J,KAEA+hC,YAAApoD,KAAAq3C,kBAAAr3C,KAAAyK,MAAA+8C,WAAA3B,cACA7lD,KAAAyK,MAAA+8C,WAAA3B,aAAAzlD,EAAAiO,OAAArO,KAAAyK,MAAA+8C,WAAA3B,aAAA,gBACA72C,QAAAhP,KAAA4sB,KAAArH,KAAAc,IACArX,QAAAA,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,GAAA/K,KAKA,OAJA2jD,aAAAhoD,EAAA8D,OAAAkkD,aACA55C,GAAA6X,GAAA7X,KAEA/J,KAAA+K,MAAA0nC,sBAAAkR,aACA54C,MAAAN,GAAA4Y,YAAAugC,sBAAAhiC,GAAA3X,QAAAjK,MAAA8K,KAAA,WACA,MAAA64C,iBAGApoD,QAIAqmD,kBAEAp9C,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,mBAAAmlC,kBAEAC,gBAAA,WACA,GAAA3yC,KAcA,OAbAA,MAAA,SAAAC,OAAAC,KACA,GAAA4vC,aAQA,OAPAA,cAAA5vC,IAAAU,KAAA,sBACAkvC,aAAA9uC,GAAA,SAAA,SAAAT,OACA,GAAAwvC,gBAAA3gC,MAGA,OAFAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACA0gC,eAAA7vC,IAAAU,KAAA,4CACAmvC,eAAAxhC,IAAA,OAAA,GAAAa,OAAA4gC,gBAEA/vC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,YAAA,UAAA,aAAA6yC,kBAEAH,oCAAA,SAAAngD,YACA,GAAAsiD,kBAAA30C,KAAA40C,gBA2BA,OA1BAA,kBAAA,gBACAD,iBAAA,gBACA30C,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA4tC,QAAA5kD,MAmBA,OAlBAA,QAAAgQ,OAAA/I,MAAA+P,OAAA6tC,8BACAD,QAAA,EACA50C,OAAA,SAAA,qBACAA,OAAAiS,MAAA0iC,iBACA10C,IAAAc,GAAA,QAAA,WAEA,MADA6zC,SAAAA,OACA50C,OAAAtH,OAAA,WACA,MAAAk8C,SACA50C,OAAA,SAAA,qBACAA,OAAAiS,MAAA0iC,iBACAviD,WAAA2L,WAAA,qCAAA/N,OAAA4K,MAEAoF,OAAA,SAAA,uBACAA,OAAAiS,MAAAyiC,iBACAtiD,WAAA2L,WAAA,qCAAA/N,OAAA4K,SAIAoF,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,gCAAA,aAAA0yC,sCAEAC,mCAAA,WACA,GAAAsC,uBAAA/0C,KAAAg1C,WAkDA,OAjDAD,uBAAA,wDACAC,eACAh1C,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAhX,QAAAglD,eA0CA,OAzCAhlD,QAAAgQ,OAAA/I,MAAA+P,OAAAiuC,6BACAh1C,IAAAlI,KAAA+8C,uBACAE,gBAAA,WACA,MACA/0C,KAAAlI,KADAg9C,YAAAnjD,OAAA,EACA,GAEAkjD,wBAGA90C,OAAAmH,IAAA,iBAAA,SAAAgB,IAAAyjC,OAAAuG,YAAAF,YAAAtG,WACA,GAAA/uB,EAeA,OAdA5sB,QAAA4K,KAAAq3C,YACAjiD,OAAA4K,KAAAu3C,aACAv1B,EAAAm4B,YAAAh/C,QAAA61C,QACAmJ,YAAAp2B,OAAA/B,EAAA,GACAm4B,YAAAp2B,OAAAgtB,UAAA,EAAAC,UAEAA,OAAAsJ,YAAA,EACAH,YAAAp2B,OAAAgtB,UAAA,EAAAC,SAEA57C,OAAA4K,KAAAu3C,cACAvG,OAAAsJ,YAAA,EACAt4B,EAAAm4B,YAAAh/C,QAAA61C,QACAmJ,YAAAp2B,OAAA/B,EAAA,IAEAo4B,oBAEAh1C,OAAAmH,IAAA,sCAAA,SAAAgB,IAAAmrB,SAAA6hB,mBACA,MAAA7hB,YAAAtjC,OAAA4K,IACAm6C,YAAAvoD,EAAA8N,OAAA66C,kBAAA,SAAA1iC,IACA,MAAAA,IAAAziB,SAAAA,OAAA4K,KAEAo6C,mBAJA,SAOAh1C,OAAAmH,IAAA,uCAAA,SAAAgB,IAAAmrB,UACA,MAAAA,YAAAtjC,OAAA4K,IACAm6C,eACAC,mBAFA,SAKAh1C,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,8BAAA2yC,oCAEAK,yBAAA,SAAAzgD,YACA,GAAA2N,KAsBA,OArBAA,MAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QAiBA,MAhBAxC,KAAAgnC,mBACAjnC,OAAA9I,OAAA,KAAA,SAAAub,IACA,MAAAA,IAAA2S,aAAAnlB,IAAA8O,SAAA,WACA9O,IAAAgH,SAAA,YACAwL,GAAA2S,YAAAnlB,IAAA8O,SAAA,WACA9O,IAAA8G,YAAA,WADA,SAIA9G,IAAAU,KAAA,cAAAI,GAAA,QAAA,WACA,MAAAd,KAAAU,KAAA,cAAAoO,SAAA,WAAA,OAGA/O,OAAAtH,OAAA,WACA,MAAAtG,YAAA2L,WAAA,cAAA0E,OAAAmP,iBAGA5R,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIAjZ,YAAA,0BACA4R,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,qBAAA,aAAAgzC,2BAEAF,4BAAA,SAAAr3C,IACA,GAAAyE,KA2BA,OA1BAA,MAAA,SAAAC,OAAAC,KACA,GAAAm1C,iBAUA,OATAp1C,QAAAmH,IAAA,iBAAA,SAAA7G,MAAAxF,SAEA,MADAkF,QAAAq1C,MAAA/5C,GAAAi9B,OAAAiY,qBAAA11C,QAAAF,IACAw6C,qBAEAp1C,OAAA2wC,WAAA,SAAA3gD,QACAgQ,OAAAq1C,MAAArlD,OAAA4K,KAAAoF,OAAAq1C,MAAArlD,OAAA4K,IACAU,GAAAi9B,OAAAqY,uBAAA5wC,OAAAvE,UAAAuE,OAAAq1C,OACAD,oBAEAA,iBAAA,WACA,GAAAlE,cAAAE,UAWA,OAVAF,cAAA1kD,EAAAC,IAAAuT,OAAAizB,aAAA,SAAAjjC,QACA,MAAAgQ,QAAAq1C,MAAArlD,OAAA4K,IACA,GAEA,MAGAw2C,WAAA5kD,EAAAm+B,OAAAumB,aAAA,SAAAI,MAAAjgD,OACA,MAAAigD,OAAAjgD,QAEA4O,IAAAU,KAAA,uBAAA2N,IAAA,QAAA8iC,eAIArxC,KAAAA,OAIA9T,OAAA4T,UAAA,wBAAA,eAAA8yC,8BAEAG,wBAAA,WACA,GAAA/yC,KAsBA,OArBAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAsuC,eAgBA,OAfAr1C,KAAAgnC,mBACAqO,eAAA,WAEA,MADAr1C,KAAAU,KAAA,qBAAAvC,SACA1I,QAAA,IAAA,WACA,GAAAkC,QAEA,OADAA,SAAAqI,IAAAU,KAAA,gBAAAX,OAAA/I,MAAA+P,OAAAuuC,mBACA39C,QACA7E,QAAA6E,QAAAA,SAAAsuC,OAAA,wCADA,UAKAlmC,OAAAmH,IAAA,aAAAmuC,gBACAt1C,OAAAmH,IAAA,iBAAAmuC,gBACAt1C,OAAAmH,IAAA,qBAAAmuC,gBACAt1C,OAAAmH,IAAA,sBAAAmuC,gBACAt1C,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAAizC,yBAEAF,oBAAA,SAAA3gD,MACA,GAAAw/C,WAAA1xC,KAAAN,QAqEA,OApEAA,UAAAjT,EAAAiT,SAAA,mNACAgyC,WAAA,EACA1xC,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAAmE,QAAA8qC,eAAA8D,IAGA,OAFA9D,gBAAAzxC,IAAAzM,SAAAmN,KAAA,mBACA+wC,eAAAzqC,SAAA,iBACAD,OAAAyuC,oBAGAD,KAAAx1C,OAAA9I,OAAA8P,OAAAyuC,mBAAA,SAAA/qB,GACA,GAAAnwB,KACA,OAAA,OAAAyF,OAAAnF,WACA5I,KAAAgR,MAAA,uDACAuyC,SAEAj7C,KAAAyF,OAAAnF,UAAA6vB,GACA9jB,OAAArM,SAGAqM,OAAA,SAAArM,MACA,GAAA4N,KAAAyG,IAgBA,OAdAzG,KADA,SAAA5N,MAEA/C,KAAA,aACA2b,OAAA,sBACAs+B,UAAAA,YAIAj6C,KAAA+C,KAAA8Y,kBACAF,OAAA5Y,KAAA6Y,MACAq+B,UAAAA,WAGA7iC,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,MACA8iC,eAAA35C,KAAAoQ,IAAA3Q,OAEAzC,SAAAiL,OAAA,UAAA,SAAAlF,SACA,MAAAA,SAAAgM,eAAA/Q,QAAA,aAAA,IACA07C,WAAA,EACAxxC,IAAAc,GAAA,QAAA,WACA,MAAA,YACA,GAAA2N,OAAA+D,EACA,KAAAxS,IAAAU,KAAA,KAAAoO,SAAA,WAKA,MAFA0D,IAAAhQ,OAAAmP,YACAlD,MAAAzO,IAAAqN,aACAoB,MAAA8kC,mBAAA/gC,MAEArmB,OACAslD,eAAA3qC,YAAA,iBACA2qC,eAAA3wC,GAAA,QAAA,WACA,GAAA2N,OAAA+D,EACA,KAAAxS,IAAAU,KAAA,KAAAoO,SAAA,WAKA,MAFA0D,IAAAhQ,OAAAmP,YACAlD,MAAAzO,IAAAqN,aACAoB,MAAA8kC,mBAAA/gC,OArBA,SAyBAzS,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,SA1DAnV,KAAAgR,MAAA,6CA8DAlD,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,sBAAA,OAAA+yC,uBAEA1/C,KAAA9G,MC3mBA,WACA,GAAAspD,yBAAA3gD,SAAAI,QAAAE,MAAApJ,OAAAqJ,WAAAnJ,MAAAuJ,QAAAE,UAEAzJ,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAO,WAAAxJ,KAAAD,MAAAyJ,WAEAN,WAAAlJ,KAAAD,MAAAmJ,WAEAP,SAAA3I,KAAAD,MAAA4I,SAEAI,QAAA/I,KAAAD,MAAAgJ,QAEAO,QAAAtJ,KAAAD,MAAAuJ,QAEAzJ,OAAA8G,QAAA9G,OAAA,eAEAypD,wBAAA,SAAAlzC,MAAAkQ,IAAAtgB,YACA,GAAA2N,KAgDA,OA/CAA,MAAA,SAAAC,OAAAC,KA2CA,MA1CAlL,UAAAiL,OAAA,UAAA,SAAAlF,SACA,GAAAswC,eAAAyG,OAAAC,eAAAC,eAAAlyB,IACA,IAAA/kB,QAAAgM,eAAA/Q,QAAA,aAAA,GAmCA,MAhCAg8C,gBAAA,KACAD,eAAA,KACAD,OAAA,KACAhyB,KAAA5f,IACAmrC,cAAA,SAAAyG,QAGA,MAFAA,QAAAh7C,QAAA0kB,WACAs2B,OAAAzqC,MACAyqC,OAAAzzC,UAEAyhB,KAAAC,UACAE,OAAA,qBACAE,aAAA,EACAurB,YAAA,mBACAjsB,OAAA,MAEAK,KAAA9e,GAAA,WAAA,SAAAT,MAAAggB,IACA,GAAAqrB,WAAAC,OAAAqG,YAAAE,YAAAE,QAcA,OAbAA,UAAA/xB,GAAAtqB,KAAAxC,SACAq+C,OAAAvxB,GAAAtqB,KACA41C,OAAAiG,OAAAh7C,QAAA4b,GACAk5B,UAAAkG,OAAA/oC,QACAgpC,eAAAO,SAAAx7C,QACAo7C,YAAAH,eAAAr1B,EAAA7hB,GACAu3C,YAAAJ,eAAAt1B,EAAA7hB,GACAq3C,cAAAE,aACA/G,cAAAyG,QAEA7xC,OAAAtH,OAAA,WACA,MAAAtG,YAAA2L,WAAA,iBAAA6tC,OAAAA,OAAA57C,OAAAiiD,YAAAtG,aAEArrB,GAAAtqB,KAAA2K,KAAA,KAAAoG,YAAA,aAEA8Y,KAAA9e,GAAA,YAAA,SAAAT,MAAAggB,IAEA,MADAyxB,gBAAAzxB,GAAAtqB,KAAAxC,SAAAqD,QACAypB,GAAAtqB,KAAA2K,KAAA,KAAAsG,SAAA,eAGAjH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAA,UAAA,eAAA,aAAA61C,2BAEAxiD,KAAA9G,MG3EA,WACA,GAAAupD,uBAAAC,6BAAAC,6BAAAC,2BAAAC,4BAAAC,yBAAAC,gCAAAlhD,SAAAI,QAAAC,QAAAC,MAAApJ,OAAAE,MAAAwJ,SACArC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAM,SAAAvJ,KAAAD,MAAAwJ,SAEAP,QAAAhJ,KAAAD,MAAAiJ,QAEAD,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEA9I,OAAA8G,QAAA9G,OAAA,eAEA0pD,sBAAA,SAAAthD,YAKA,QAAAshD,uBAAA9+C,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAoF,IAAAqf,SAAAynB,UAAAjsC,QAAA+Y,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAwN,IAAAA,IACAxN,KAAA6sB,SAAAA,SACA7sB,KAAAs0C,UAAAA,UACAt0C,KAAAqI,QAAAA,QACArI,KAAAyK,MAAAq/C,SAAA9pD,KAAAqC,OAAA0nD,SACA/pD,KAAAyK,MAAAmZ,YAAA,gBACA5jB,KAAAy0C,0BACAzlC,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YAEA,MADAA,OAAAqd,SAAAhb,IAAArC,MAAA/E,MAAAkuB,MAAArT,QAAA,MAAA9V,MAAA/E,MAAAiE,QAAAtD,MACAoE,MAAAw6C,8BAEAhqD,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YAgHA,MA7IAhmB,QAAAqiD,sBAAAthD,YAEAshD,sBAAAl4C,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,OAAA,YAAA,eAAA,aAAA,YA8BAk4C,sBAAA9hD,UAAAgtC,wBAAA,WAwBA,MAvBAz0C,MAAAyK,MAAAsQ,IAAA,oBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAAwB,UAAAW,WAAA,kBACAnC,MAAA8kC,UAAAv/B,WAAA,aAAA,SAAA,6BAAA,KAEA/U,OACAA,KAAAyK,MAAAsQ,IAAA,kBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,OACAA,KAAAyK,MAAAsQ,IAAA,oBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,OACAA,KAAAyK,MAAAsQ,IAAA,8BAAA,SAAAvL,OACA,MAAA,YAGA,MAFAA,OAAA8kC,UAAAv/B,WAAA,QAAA,qBAAA,6BAAA,GACAvF,MAAAwB,UAAAW,WAAA,kBACAnC,MAAAy6C,cAEAjqD,OACAA,KAAAyK,MAAAsQ,IAAA,gCAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,QAGAupD,sBAAA9hD,UAAAuiD,0BAAA,WACA,GAAAjuC,IAIA,OAHAA,MACArN,QAAA1O,KAAAyK,MAAAiE,QAAAsN,MAGAhc,KAAAyK,MAAAwuB,gBADAj5B,KAAAyK,MAAAiE,QAAA0N,oBACApc,KAAAqI,QAAArG,QAAA,iBAAA+Z,KAEA/b,KAAAqI,QAAArG,QAAA,UAAA+Z,MAIAwtC,sBAAA9hD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SAuBA,MAtBAc,OAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAAm8B,WAAAl4B,QAAA8e,eACAhe,MAAA/E,MAAAy/C,WAAAnhD,QAAA2F,QAAA8e,eAAA,SAAAltB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAA0/C,SAAAphD,QAAA2F,QAAA07C,YAAA,SAAA9pD,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAA4/C,SAAAjqD,EAAAiO,OAAAK,QAAA07C,YAAA,SACA56C,MAAA/E,MAAA6/C,aAAA57C,QAAAkc,WACApb,MAAA/E,MAAAkjB,aAAA5kB,QAAA2F,QAAAkc,WAAA,SAAAtqB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAA8/C,aAAA77C,QAAAic,WACAnb,MAAA/E,MAAAmjB,aAAA7kB,QAAA2F,QAAAic,WAAA,SAAArqB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAojB,YAAA9kB,QAAA2F,QAAAC,YAAA,SAAArO,GACA,MAAAA,GAAA6N,OAEAO,UAEA1O,QAGAupD,sBAAA9hD,UAAAwiD,UAAA,WACA,MAAAjqD,MAAAkP,GAAAqZ,OAAAiiC,SAAAxqD,KAAAyK,MAAA4E,UAAArP,KAAAqC,OAAA0nD,UAAAx6C,KAAA,SAAAC,OACA,MAAA,UAAAmpB,OACA,GAAA5c,IAWA,OAVAvM,OAAA/E,MAAAkuB,MAAAA,MACAnpB,MAAA/E,MAAAggD,QAAA9xB,MAAAnqB,GACAgB,MAAA/E,MAAAigD,aAAA/xB,MACA,MAAAnpB,MAAA/E,MAAAkuB,MAAAgyB,UAAAC,SAAAv/C,MACA0Q,KACArN,QAAAc,MAAA/E,MAAAiE,QAAAsN,KACA3Q,IAAAmE,MAAA/E,MAAAkuB,MAAAgyB,UAAAC,SAAAv/C,KAEAmE,MAAA/E,MAAAogD,YAAAr7C,MAAAnH,QAAArG,QAAA,wBAAA+Z,MAEA,MAAAvM,MAAA/E,MAAAkuB,MAAAgyB,UAAAvkB,KAAA/6B,KACA0Q,KACArN,QAAAc,MAAA/E,MAAAiE,QAAAsN,KACA3Q,IAAAmE,MAAA/E,MAAAkuB,MAAAgyB,UAAAvkB,KAAA/6B,KAEAmE,MAAA/E,MAAAwJ,QAAAzE,MAAAnH,QAAArG,QAAA,wBAAA+Z,MALA,SAQA/b,QAGAupD,sBAAA9hD,UAAAiZ,gBAAA,WACA,GAAA1R,QAEA,OADAA,SAAAhP,KAAAqtB,cACAre,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAd,SAEA,MADAc,OAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAyB,MAAAy6C,cAEAjqD,QAGAupD,uBAEAtgD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,wBAAAqoC,uBAEAI,4BAAA,SAAAroC,WACA,GAAA3N,MAAAN,QAoBA,OAnBAA,UAAAiO,UAAAne,IAAA,yCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAaA,OAZAA,QAAA,SAAAme,OACA,GAAAnW,KAIA,OAHAA,MAAAnP,UACAzP,OAAAgQ,OAAAs2C,WAAAvxB,MAAA/0B,UAEAiQ,IAAA2O,KAAAA,OAEA5O,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAA4S,OACA,MAAA,OAAAA,MACAne,OAAAme,OADA,SAIA/kB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,wBAAA,cAAAk2C,8BAEAD,2BAAA,SAAApsB,WAAAlnB,MAAA7R,SAAAsb,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QAoEA,OAnEAA,UAAAiO,UAAAne,IAAA,mCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAAzd,OAAA+K,IA6DA,OA5DA0S,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,iBAEA6Q,OAAA,WACA,MAAA,UAAAme,OACA,GAAAnW,MAAA5e,MAOA,OANAA,QAAAgQ,OAAAs2C,WAAAvxB,MAAA/0B,QACA4e,KAAAnP,UACAzP,OAAAA,OACA6lC,SAAA71B,OAAAgzB,WACA5J,SAAA/E,eAEApkB,IAAA2O,KAAAA,QAEAxiB,MACAulB,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAmqB,UACA,GAAAvO,OAAA7kB,QAAAC,SAiBA,OAhBA+H,GAAAjU,GAAA0c,UAAA1gB,WACA80B,MAAAtiB,OAAAmP,YAAAjT,QACAomB,MAAA/0B,OAAAsjC,SACAnzB,UAAA,WAIA,MAHAxP,UAAAI,OAAA,WACA0R,OAAAiiB,cAAAK,OACA2E,WAAA3rB,WAAA,kBACAkO,SAAAK,OAAArM,IAAAU,KAAA,iBAEAT,QAAA,WAIA,MAHAvP,UAAAI,OAAA,SACAg0B,MAAAvF,SACA/c,OAAAiiB,cAAAK,OACA9Y,SAAAK,OAAArM,IAAAU,KAAA,iBAEAsL,SAAAE,MAAAlM,IAAAU,KAAA,gBACA6B,MAAAmP,KAAAoT,OAAAppB,KAAAwE,UAAAD,WAEA9T,OACA6T,IAAAc,GAAA,QAAA,eAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACAwT,aAGApkB,IAAAU,KAAA,eAAAgQ,UAAApE,OAHA,SAKAtM,IAAAc,GAAA,QAAA,UAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACAH,MAAAuQ,kBACAwT,cAGAlV,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAuC,KAAAxC,OAAAte,KAAA,eAJA,SAMAmP,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAA4S,OACA,MAAAA,OACAne,OAAAme,OADA,SAIA/kB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,uBAAA,aAAA,UAAA,aAAA,aAAA,YAAA,cAAAi2C,6BAEAE,yBAAA,SAAAtsB,WAAAlnB,MAAA7R,SAAAsb,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QAqEA,OApEAA,UAAAiO,UAAAne,IAAA,gCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAAzd,OAAA+K,IA8DA,OA7DA0S,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,iBAEA6Q,OAAA,WACA,MAAA,UAAAme,OACA,GAAAnW,MAAAlQ,IAOA,OANAA,MAAAsB,OAAAu2C,SAAAxxB,MAAArmB,MACAkQ,KAAAnP,UACAf,KAAAA,KACAw4C,OAAAl3C,OAAAy2C,SACArtB,SAAA/E,eAEApkB,IAAA2O,KAAAA,QAEAxiB,MACAulB,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAzK,MACA,GAAAqmB,OAAA7kB,QAAAC,SAiBA,OAhBA+H,GAAAjU,GAAA0c,UAAA1gB,WACA80B,MAAAtiB,OAAAmP,YAAAjT,QACAomB,MAAArmB,KAAAA,KACAyB,UAAA,WAIA,MAHAxP,UAAAI,OAAA,WACA0R,OAAAiiB,cAAAK,OACA2E,WAAA3rB,WAAA,kBACAkO,SAAAK,OAAArM,IAAAU,KAAA,iBAEAT,QAAA,WAIA,MAHAvP,UAAAI,OAAA,SACAg0B,MAAAvF,SACA/c,OAAAiiB,cAAAK,OACA9Y,SAAAK,OAAArM,IAAAU,KAAA,iBAEAsL,SAAAE,MAAAlM,IAAAU,KAAA,gBACA6B,MAAAmP,KAAAoT,OAAAppB,KAAAwE,UAAAD,WAEA9T,OACA6T,IAAAc,GAAA,QAAA,aAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACAwT,aAGApkB,IAAAU,KAAA,aAAAgQ,UAAApE,OAHA,SAKAtM,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,GAAA6O,QAAAzQ,IAGA,OAFA4B,OAAAG,iBACAH,MAAAuQ,kBACAwT,cAGAlV,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA1Q,KAAAyQ,OAAAte,KAAA,WACA8gB,KAAAjT,OALA,SAOAsB,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAA4S,OACA,MAAAA,OACAne,OAAAme,OADA,SAIA/kB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,qBAAA,aAAA,UAAA,aAAA,aAAA,YAAA,cAAAm2C,2BAEAH,6BAAA,SAAAnsB,WAAAlnB,MAAA7R,SAAAsb,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QAqEA,OApEAA,UAAAiO,UAAAne,IAAA,oCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAAzd,OAAA+K,IA8DA,OA7DA0S,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,iBAEA6Q,OAAA,WACA,MAAA,UAAAme,OACA,GAAAnW,MAAA0X,QAOA,OANAA,UAAAtmB,OAAA+Z,aAAAgL,MAAAuB,UACA1X,KAAAnP,UACA6mB,SAAAA,SACA6wB,WAAAn3C,OAAA02C,aACAttB,SAAA/E,eAEApkB,IAAA2O,KAAAA,QAEAxiB,MACAulB,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAmd,UACA,GAAAvB,OAAA7kB,QAAAC,SAiBA,OAhBA+H,GAAAjU,GAAA0c,UAAA1gB,WACA80B,MAAAtiB,OAAAmP,YAAAjT,QACAomB,MAAAuB,SAAAA,SACAnmB,UAAA,WAIA,MAHAxP,UAAAI,OAAA,WACA0R,OAAAiiB,cAAAK,OACA2E,WAAA3rB,WAAA,kBACAkO,SAAAK,OAAArM,IAAAU,KAAA,iBAEAT,QAAA,WAIA,MAHAvP,UAAAI,OAAA,SACAg0B,MAAAvF,SACA/c,OAAAiiB,cAAAK,OACA9Y,SAAAK,OAAArM,IAAAU,KAAA,iBAEAsL,SAAAE,MAAAlM,IAAAU,KAAA,gBACA6B,MAAAmP,KAAAoT,OAAAppB,KAAAwE,UAAAD,WAEA9T,OACA6T,IAAAc,GAAA,QAAA,iBAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACAwT,aAGApkB,IAAAU,KAAA,iBAAAgQ,UAAApE,OAHA,SAKAtM,IAAAc,GAAA,QAAA,YAAA,SAAAT,OACA,GAAAgmB,UAAAnX,MAGA,OAFA7O,OAAAG,iBACAH,MAAAuQ,kBACAwT,cAGAlV,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAkX,SAAAnX,OAAAte,KAAA,eACA8gB,KAAA2U,WALA,SAOAtmB,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAA4S,OACA,MAAAA,OACAne,OAAAme,OADA,SAIA/kB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,yBAAA,aAAA,UAAA,aAAA,aAAA,YAAA,cAAAg2C,+BAEAD,6BAAA,SAAAlsB,WAAAlnB,MAAA7R,SAAAsb,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QAqEA,OApEAA,UAAAiO,UAAAne,IAAA,oCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAAzd,OAAA+K,IA8DA,OA7DA0S,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,iBAEA6Q,OAAA,WACA,MAAA,UAAAme,OACA,GAAAnW,MAAAuX,QAOA,OANAA,UAAAnmB,OAAAga,aAAA+K,MAAAoB,UACAvX,KAAAnP,UACA0mB,SAAAA,SACAixB,WAAAp3C,OAAA22C,aACAvtB,SAAA/E,eAEApkB,IAAA2O,KAAAA,QAEAxiB,MACAulB,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAgd,UACA,GAAApB,OAAA7kB,QAAAC,SAiBA,OAhBA+H,GAAAjU,GAAA0c,UAAA1gB,WACA80B,MAAAtiB,OAAAmP,YAAAjT,QACAomB,MAAAoB,SAAAA,SACAhmB,UAAA,WAIA,MAHAxP,UAAAI,OAAA,WACA0R,OAAAiiB,cAAAK,OACA2E,WAAA3rB,WAAA,kBACAkO,SAAAK,OAAArM,IAAAU,KAAA,iBAEAT,QAAA,WAIA,MAHAvP,UAAAI,OAAA,SACAg0B,MAAAvF,SACA/c,OAAAiiB,cAAAK,OACA9Y,SAAAK,OAAArM,IAAAU,KAAA,iBAEAsL,SAAAE,MAAAlM,IAAAU,KAAA,gBACA6B,MAAAmP,KAAAoT,OAAAppB,KAAAwE,UAAAD,WAEA9T,OACA6T,IAAAc,GAAA,QAAA,iBAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACAwT,aAGApkB,IAAAU,KAAA,iBAAAgQ,UAAApE,OAHA,SAKAtM,IAAAc,GAAA,QAAA,YAAA,SAAAT,OACA,GAAA6lB,UAAAhX,MAGA,OAFA7O,OAAAG,iBACAH,MAAAuQ,kBACAwT,cAGAlV,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA+W,SAAAhX,OAAAte,KAAA,eACA8gB,KAAAwU,WALA,SAOAnmB,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAA4S,OACA,MAAAA,OACAne,OAAAme,OADA,SAIA/kB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,yBAAA,aAAA,UAAA,aAAA,aAAA,YAAA,cAAA+1C,+BAEAK,gCAAA,SAAAvsB,WAAAlnB,MAAA7R,SAAAwzB,SACA,GAAApkB,KA4CA,OA3CAA,MAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAAkP,KAsCA,OArCAA,MAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAA4b,MAAAzY,QACA,GAAAzb,MAAAqP,QAAAC,SAmBA,OAlBAtP,OACAwmD,qBAAAtyB,MAAAnqB,GACAE,QAAAiqB,MAAAjqB,QACA4W,QAAAqT,MAAArT,QACAwP,YAAA6D,MAAA7D,YACAiS,KAAApO,MAAAoO,KACA/N,WAAAL,MAAAK,WACAoH,aAAAzH,MAAAyH,cAEArsB,UAAA,WAGA,MAFAmM,UACA3b,SAAAI,OAAA,WACA24B,WAAA3rB,WAAA,gCAEAmC,QAAA,WAEA,MADAoM,SAAA,GACA3b,SAAAI,OAAA,UAEAyR,MAAA4J,OAAA,cAAAvb,MAAA8K,KAAAwE,UAAAD,WAEA9T,OACA6T,IAAAc,GAAA,QAAA,IAAA,SAAAT,OACA,GAAAykB,OAAAja,QAAAya,SAAAtT,KAMA,OALA3R,OAAAG,iBACAskB,MAAAtiB,OAAAmP,YACAK,MAAA,yCACAnH,QAAA,4DACAya,SAAAR,MAAArT,QACA/gB,SAAAu0B,IAAAjT,MAAAsT,SAAAza,SAAAnP,KAAA,WACA,MAAA,UAAA2Q,QACA,MAAAqF,MAAAoT,MAAAzY,UAEAlgB,SAEA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIAxH,SAAA,KACA4P,QAAA,UACArhB,YAAA,wCACA4R,KAAAA,OAIA9T,OAAA4T,UAAA,4BAAA,aAAA,UAAA,aAAA,YAAAo2C,mCAEA/iD,KAAA9G,MXvjBA,WACA,GAAAkrD,2BAAAC,qBAAAxiD,SAAAE,SAAAhJ,OAAAE,KAEAA,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,eAEAsrD,qBAAA,SAAA/0C,MAAA7R,SAAAyB,WAAA80B,gBAAAjb,UACA,GAAAlM,KA6CA,OA5CAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAH,OAAA8L,YAyCA,OAxCA3L,MAAAN,IAAAU,KAAA,QAAA1P,YACA+O,OAAA+kB,SACA/kB,OAAAmH,IAAA,gBAAA,SAAAgB,IAAArN,SAGA,MAFAmF,KAAAU,KAAA,cAAAvP,IAAA,IACA81B,gBAAA3a,KAAAtM,KACAD,OAAA+kB,OACAjqB,QAAAA,QAAAF,GACA8W,QAAA,GACA1hB,OAAA8K,QAAA08C,qBACA94C,KAAA5D,QAAA28C,mBACAtxB,SAAArrB,QAAA48C,iBACApxB,SAAAxrB,QAAA68C,iBACAxkB,WAGAnzB,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAhH,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAoH,MAAA4J,OAAA,SAAApM,OAAA+kB,OACA3pB,QAAAO,KAAA,SAAA9K,MAIA,MAHAob,UAAAK,OAAAJ,cACA9Z,WAAA2L,WAAA,wBAAAlN,MACAq2B,gBAAAtc,MAAA3K,KACAtP,SAAAI,OAAA,aAEAqK,QAAAO,KAAA,KAAA,WAEA,MADAsQ,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,YAbA,SAgBA3E,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAA,UAAA,aAAA,aAAA,kBAAA,aAAA03C,uBAEAD,0BAAA,SAAA90C,MAAAkQ,IAAA/hB,SAAAyB,WAAA6Z,SAAAib,iBACA,GAAAnnB,KAwCA,OAvCAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,QAAA8L,YAkCA,OAjCAlM,QAAAmH,IAAA,iBAAA,SAAAgB,IAAA1M,WAEA,MADAyrB,iBAAA3a,KAAAtM,KACAD,OAAA,QACAvE,UAAAA,UACA83B,KAAA,MAGAnzB,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAzP,MAAA0P,KAAA9E,UAAAL,OAGA,OAFAkF,OAAAG,iBACAF,KAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAK,YAGAqL,SAAAE,MAAAD,cACArb,KAAAmP,OAAA,OAAAuzB,KACA93B,UAAAuE,OAAA,OAAAvE,UACAL,QAAAsX,IAAAiC,OAAA6e,WAAA/3B,UAAA5K,MACAuK,QAAAO,KAAA,SAAAxD,QAIA,MAHA8T,UAAAK,OAAAJ,cACA9Z,WAAA2L,WAAA,wBAAA5F,QACA+uB,gBAAAtc,MAAA3K,KACAtP,SAAAI,OAAA,aAEAqK,QAAAO,KAAA,KAAA,WAEA,MADAsQ,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,YAfA,SAkBA3E,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAJ,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,wBAAA,UAAA,eAAA,aAAA,aAAA,aAAA,kBAAAy3C,6BAEApkD,KAAA9G,MYhHA,WACA,GAAAwrD,uCAAAC,kCAAAC,iBAAAC,gBAAAC,uBAAAjjD,SAAAG,gBAAAC,QAAAC,QAAAC,MAAApJ,OAAAwJ,WAAAtJ,MAAAwJ,SAAAE,KACA7B,KAAA,SAAAC,GAAAC,IAAA,MAAA,YAAA,MAAAD,IAAAE,MAAAD,GAAAE,aACAd,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAQ,KAAAzJ,KAAAD,MAAA0J,KAEAF,SAAAvJ,KAAAD,MAAAwJ,SAEAP,QAAAhJ,KAAAD,MAAAiJ,QAEAD,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAG,gBAAA9I,KAAAD,MAAA+I,gBAEAO,WAAArJ,KAAAD,MAAAsJ,WAEAxJ,OAAA8G,QAAA9G,OAAA,eAEA6rD,iBAAA,SAAAzjD,YAKA,QAAAyjD,kBAAAjhD,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAAkC,KAAA/O,OAAAiG,EAAAF,SAAAykB,SAAAxkB,QAAAgsC,OAAAC,UAAAlzB,UACA,GAAAlR,SAAAlB,OAiBA,OAhBAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAoR,KAAAA,KACApR,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAA6sB,SAAAA,SACA7sB,KAAAqI,QAAAA,QACArI,KAAAq0C,OAAAA,OACAr0C,KAAAs0C,UAAAA,UACAt0C,KAAA6rD,WAAAjkD,KAAA5H,KAAA6rD,WAAA7rD,MACAA,KAAAyK,MAAAmZ,YAAA,SACA5jB,KAAAyK,MAAAyF,WACA9P,EAAAkQ,QAAAtQ,KAAAoI,SAAAnE,WACAiM,QAAAlQ,KAAAkP,GAAAqZ,OAAAujC,WAAA9rD,KAAAqC,OAAAC,OACA4N,QAAA+gB,KAAA,EACAjxB,KAAAoI,SAAAnE,OAAAiM,aACAlQ,MAAAoI,SAAArE,YAGAiL,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,YAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,gBACAltB,MAAAyK,MAAAsQ,IAAA,wBAAA,SAAAvL,OACA,MAAA,YAGA,MAFAA,OAAA8kC,UAAAv/B,WAAA,QAAA,SAAA,8BAAA,GACAvF,MAAAq8C,aACAr8C,MAAA2d,gBAEAntB,QA0TA,MArWAkH,QAAAwkD,iBAAAzjD,YAEAyjD,iBAAAr6C,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,UAAA,eAAA,KAAA,cAAA,YAAA,aAAA,YAAA,eAAA,YA4CAq6C,iBAAAjkD,UAAAutC,uBAAA,WACA,GAAA/1B,WAEA,OADAA,YAAA,mBAAAjf,KAAAyK,MAAA4E,UAAA,UACArP,KAAAq0C,OAAAr1B,UAAAhf,KAAAyK,MAAAwU,WAAA,SAAAzP,OACA,MAAA,YACA,MAAAA,OAAAq8C,eAEA7rD,QAGA0rD,iBAAAjkD,UAAAskD,aAAA,WACA,MAAA/rD,MAAAkP,GAAAqZ,OAAAwjC,aAAA/rD,KAAAqC,OAAAC,MAAAtC,KAAAoI,SAAAnE,WAGAynD,iBAAAjkD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SA0BA,MAzBAA,SAAA0N,qBACA5M,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAA8iB,gBAAAxkB,QAAA2F,QAAA8e,eAAA,SAAAltB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAuhD,gBAAA5rD,EAAAiO,OAAAK,QAAA8e,eAAA,SACAhe,MAAA/E,MAAAkjB,aAAA5kB,QAAA2F,QAAAkc,WAAA,SAAAtqB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAA6/C,aAAAlqD,EAAAiO,OAAAK,QAAAkc,WAAA,SACApb,MAAA/E,MAAAmjB,aAAA7kB,QAAA2F,QAAAic,WAAA,SAAArqB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAA8/C,aAAAnqD,EAAAiO,OAAAK,QAAAic,WAAA,SACAnb,MAAA/E,MAAAwhD,WAAA7rD,EAAAiO,OAAAK,QAAA07C,YAAA,SACA56C,MAAA/E,MAAA2vB,cAAArxB,QAAA2F,QAAA07C,YAAA,SAAA9pD,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAojB,YAAA9kB,QAAA2F,QAAAC,YAAA,SAAArO,GACA,MAAAA,GAAA6N,OAEAO,UAEA1O,QAGA0rD,iBAAAjkD,UAAA4uC,cAAA,WACA,GAAAnmC,QAKA,OAJAA,SAAA9P,EAAAg4C,KAAAp4C,KAAAoI,SAAAnE,SAAA,OAAA,OAAA,WAAA,QAAA,IAAA,aAAA,aAAA,aAAA,YAAA,WACAiM,QAAA+gB,OACA/gB,QAAA+gB,KAAA,GAEA/gB,SAGAw7C,iBAAAjkD,UAAAykD,aAAA,SAAA9gD,MACA,GAAA8E,QAEA,OADAA,SAAA9P,EAAAg4C,KAAAp4C,KAAAoI,SAAAnE,SAAAmH,MACA8E,QAAA9E,OAGAsgD,iBAAAjkD,UAAA0kD,cAAA,WACA,MAAAnsD,MAAAkP,GAAAqZ,OAAA6jC,aAAApsD,KAAAyK,MAAA4E,WAAAE,KAAA,WACA,MAAA,UAAAW,SACA,MAAA9P,GAAAC,IAAA6P,QAAA,SAAA3F,MAAAhD,KACA,OACAiH,GAAAjH,IACA6D,KAAA7D,IACA+K,KAAA,YACAkpB,UAAA,OAIAx7B,QAGA0rD,iBAAAjkD,UAAA4kD,gCAAA,WACA,GAAAC,eAAAC,eAAAC,WAAAC,YAAAC,eAAAxU,UACAoU;cAAAtsD,KAAAoI,SAAAnE,SACAi0C,WAAAl4C,KAAAq2C,eACA,KAAAmW,aAAAtU,YACAuU,YAAAvU,WAAAsU,YACA,SAAAA,YAAA,YAAAA,YAAA,MAAAA,aAIAE,eADA,SAAAF,WACApsD,EAAAC,KAAA,GAAAosD,aAAApnD,MAAA,MAEAjF,EAAAC,KAAA,GAAAosD,aAAApnD,MAAA,KAAA,SAAA/E,GACA,MAAA,SAAAA,EACA,KAEAgc,SAAAhc,KAIAisD,eAAAnsD,EAAAusD,aAAAD,eAAAtsD,EAAAC,IAAAL,KAAAyK,MAAAyF,QAAAs8C,YAAA,OACAE,eAAAlnD,SAAA+mD,eAAA/mD,QACAxF,KAAAoI,SAAAnE,OAAAuoD,WAAAD,eAAA7rD,QAGA,OAAA4rD,iBAAAtsD,KAAAoI,SAAAnE,SACAjE,KAAAoI,SAAArE,UADA,QAKA2nD,iBAAAjkD,UAAAmlD,oBAAA,SAAA18C,QAAAgoC,YACA,GAAA2U,YAAA15B,EAAA5rB,IAAAuE,IAAAV,KAAAqtC,IAAAptC,IAAA8sB,KAAA1oB,QAAAunC,WAAAhyC,IAAAuF,KACAysC,eACA3rC,IAAAjL,EAAA0sD,KAAA5U,WAAA,OAAA,UACA,KAAA9sC,OAAAC,KAMA,IALAd,MAAAc,IAAAD,MACA,MAAA4rC,WAAA5rC,QACA4rC,WAAA5rC,UAEA+sB,MAAA,GAAA5tB,OAAAlF,MAAA,KACA8tB,EAAA,EAAArnB,IAAAqsB,KAAA3yB,OAAAsG,IAAAqnB,EAAAA,IACAnuB,IAAAmzB,KAAAhF,GACA6jB,WAAA5rC,MAAApG,MAAA,CAGA6nD,YAAA,SAAAv6C,KAAA9D,IACA,MAAA,OAAAwoC,WAAA1kC,OAAA0kC,WAAA1kC,MAAA9D,KACA,GAEA,GAEAiB,UACA,KAAAlI,MAAA2I,SACA3F,MAAA2F,QAAA3I,KACAkI,QAAAnL,KAAA,WACA,GAAAk0C,GAAAd,KAAAS,QAEA,KADAA,YACAK,EAAA,EAAAd,KAAAntC,MAAA/E,OAAAkyC,KAAAc,EAAAA,IACAC,IAAAluC,MAAAiuC,GACAL,SAAA7zC,KAAAm0C,IAAAjd,SAAAqxB,WAAApU,IAAAnmC,KAAAmmC,IAAAjqC,KAAA,EAAA,OAEA,OAAA2pC,aAGA,OAAA1oC,UAGAi8C,iBAAAjkD,UAAA0lB,YAAA,WACA,GAAAne,SAAAkpC,UAgBA,OAfAA,YAAAl4C,KAAAq2C,gBACA6B,WAAA5vC,IACAtI,KAAAyK,MAAAyrC,SAAAgC,WAAA5vC,GAEA0G,QAAAhP,KAAAmsD,gBAAA58C,KAAA,SAAAC,OACA,MAAA,UAAAu9C,WAEA,MADAv9C,OAAA/E,MAAAyF,QAAA68C,UAAAA,UACAA,YAEA/sD,OACAgP,QAAAA,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAN,GAAAqZ,OAAAykC,YAAAx9C,MAAA/E,MAAA4E,aAEArP,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAAwoD,sBAAAC,iBAAAC,kBAqDA,OApDAA,oBAAA,SAAAr/C,MAAAwE,KAAA86C,eACA,GAAAC,iBAAAC,WAkBA,OAjBAD,iBAAAjtD,EAAAC,IAAAyN,MAAA,SAAAkf,GACA,OACAxe,GAAAwe,EAAA,GACA0rB,MAAA1rB,EAAA,GACA1a,KAAAA,KACAlH,KAAA4hB,EAAA,GAAAxd,MAAA/E,MAAAgE,UAAAue,EAAA,IAAA/F,kBAAAmmC,iBAGAE,YAAAltD,EAAA4R,OAAAq7C,gBAAA,SAAAE,GACA,OAAAA,EAAA/+C,KAEA6+C,gBAAAjtD,EAAAiO,OAAAg/C,gBAAA,SAAAE,GACA,MAAAA,GAAAniD,KAAA08B,gBAEAwlB,YAAA9nD,OAAA,GACA6nD,gBAAAvM,QAAAwM,YAAA,IAEAD,iBAEAJ,qBAAA,SAAA9xB,QAAA7oB,KAAAk7C,YACA,MAAAptD,GAAAC,IAAA86B,QAAA,SAAAnO,GACA,OACAxe,GAAAwe,EAAA,GACA5hB,KAAAoiD,WAAAxgC,EAAA,IAAA5hB,KACA4uB,MAAAwzB,WAAAxgC,EAAA,IAAAgN,MACA0e,MAAA1rB,EAAA,GACA1a,KAAAA,SAIA46C,iBAAA,SAAAnmB,MACA,MAAA3mC,GAAAC,IAAA0mC,KAAA,SAAA/Z,GACA,OACAxe,GAAAwe,EAAA,GACA5hB,KAAA4hB,EAAA,GACAgN,MAAAxqB,MAAA/E,MAAAiE,QAAA+9B,YAAAzf,EAAA,IACA0rB,MAAA1rB,EAAA,GACA1a,KAAA,WAIA9C,MAAA/E,MAAAyF,QAAAu5B,SAAAwjB,qBAAAxoD,KAAAglC,SAAA,WAAAj6B,MAAA/E,MAAA8iB,iBACA/d,MAAA/E,MAAAyF,QAAA0a,WAAAqiC,qBAAAxoD,KAAAmmB,WAAA,aAAApb,MAAA/E,MAAAkjB,cACAne,MAAA/E,MAAAyF,QAAAya,WAAAsiC,qBAAAxoD,KAAAkmB,WAAA,aAAAnb,MAAA/E,MAAAmjB,cACApe,MAAA/E,MAAAyF,QAAA0oB,WAAAu0B,mBAAA1oD,KAAAyhB,YAAA,aAAA,cACA1W,MAAA/E,MAAAyF,QAAAu9C,UAAAN,mBAAA1oD,KAAAipD,WAAA,YAAA,WACAl+C,MAAA/E,MAAAyF,QAAAy9C,MAAAV,qBAAAxoD,KAAAkpD,MAAA,QAAAn+C,MAAA/E,MAAA2vB,eACA5qB,MAAA/E,MAAAyF,QAAA62B,KAAAmmB,iBAAAzoD,KAAAsiC,MACAv3B,MAAA68C,kCACA78C,MAAAo9C,oBAAAp9C,MAAA/E,MAAAyF,QAAAgoC,YACA1oC,MAAAwB,UAAAW,WAAA,iBAAAnC,MAAA/E,MAAAyF,WAEAlQ,QAGA0rD,iBAAAjkD,UAAAmmD,mBAAA,EAEAlC,iBAAAjkD,UAAAokD,WAAA,WACA,GAAAzgD,MAAA4D,QAAA3D,IAAAgzB,MACAr+B,MAAAyK,MAAAojD,WAAA7tD,KAAAq2C,gBACAr2C,KAAAyK,MAAA2rC,cACA/qC,IAAArL,KAAAyK,MAAAojD,UACA,KAAAziD,OAAAC,KACAgzB,OAAAhzB,IAAAD,MACA,eAAAA,KACAA,KAAA,WACA,YAAAA,KACAA,KAAA,WACA,eAAAA,KACAA,KAAA,WACA,eAAAA,KACAA,KAAA,cACA,cAAAA,KACAA,KAAA,QACA,aAAAA,KACAA,KAAA,SACA,UAAAA,OACAA,KAAA,QAEApL,KAAAyK,MAAA2rC,WAAAhrC,MAAAizB,MAKA,OAHArvB,SAAAhP,KAAAkP,GAAAqZ,OAAA9B,KAAAzmB,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAA2rC,YACAp2C,KAAA4tD,oBAAA,EACA5+C,QAAA0N,MAAA1c,KAAA4tD,mBACA5+C,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAOA,MANAuK,SAAA0N,QAAAlN,MAAAo+C,qBACAp+C,MAAA/E,MAAA8d,OAAA9jB,KAAAqpD,OACAt+C,MAAA/E,MAAAwmB,KAAAxsB,KAAAspD,QACAv+C,MAAA/E,MAAAiuC,MAAAj0C,KAAAi0C,MACAlpC,MAAA/E,MAAAujD,YAAAvpD,KAAAupD,aAEAvpD,OAEAzE,QAGA0rD,iBAAAjkD,UAAAiZ,gBAAA,WACA,GAAA1R,QAEA,OADAA,SAAAhP,KAAAqtB,cACAre,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAd,SAGA,MAFAc,OAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAyB,MAAAwlC,yBACAxlC,MAAAlH,EAAA2G,KAAAO,MAAA2d,cAAA3d,MAAAq8C,iBAEA7rD,QAGA0rD,iBAAAjkD,UAAAwmD,qBAAA,SAAAC,WACA,GAAAtxC,SAUA,OATAA,UAAA5c,KAAAsI,EAAA+D,QACArM,KAAAkP,GAAAqZ,OAAA6jC,aAAApsD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAU,SAEA,MADAA,SAAAg+C,WAAA1+C,MAAApH,SAAAnE,SACAuL,MAAAN,GAAAqZ,OAAA4lC,eAAA3+C,MAAA/E,MAAA4E,UAAAa,SAAAX,KAAA,WACA,MAAAqN,UAAA5a,cAGAhC,OACA4c,SAAA5N,SAGA08C,iBAAAjkD,UAAA2mD,eAAA,SAAAlgD,QACA,GAAA0O,SAUA,OATAA,UAAA5c,KAAAsI,EAAA+D,QACArM,KAAAkP,GAAAqZ,OAAA6jC,aAAApsD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAU,SAEA,aADAA,SAAAhC,QACAsB,MAAAN,GAAAqZ,OAAA4lC,eAAA3+C,MAAA/E,MAAA4E,UAAAa,SAAAX,KAAA,WACA,MAAAqN,UAAA5a,cAGAhC,OACA4c,SAAA5N,SAGA08C,iBAAAjkD,UAAA4mD,YAAA,WACA,MAAAruD,MAAAgR,UAAAW,WAAA,gBAAA3R,KAAAyK,MAAAiE,UAGAg9C,iBAAAjkD,UAAA6mD,gBAAA,WACA,MAAAtuD,MAAAgR,UAAAW,WAAA,iBAAA3R,KAAAyK,MAAA4E,YAGAq8C,kBAEAziD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,mBAAAwqC,kBAEAC,gBAAA,SAAA9lD,KAAAvC,UAAAge,WACA,GAAA3N,MAAA46C,aAAAC,eAAAn7C,QAiIA,OAhIAA,UAAAiO,UAAAne,IAAA,8BAAA,GACAqrD,eAAA,SAAA56C,OAAAC,IAAA+G,OAAA0H,OACA,GAAAmsC,QAAAC,aAAAC,QAAAC,MAAAC,cAAAC,YAAAC,gBAiFA,OAhFAL,cAAA,EACAG,cAAA,EACAF,QAAA,EACAC,MAAA,EACAH,OAAA56C,IAAAU,KAAA,qBACAu6C,YAAA,WACA,GAAAE,SAOA,OANAA,UAAAp7C,OAAA8kC,MAAA9kC,OAAAo6C,YAEAgB,SADA1yC,SAAA0yC,SAAA,IAAAA,SACA1yC,SAAA0yC,SAAA,IAAA,EAEA1yC,SAAA0yC,SAAA,KAIAD,iBAAA,WACA,GAAAE,OAAAplD,EAAAspB,EAAA67B,SAAA/S,QAAAiT,MAAA7jD,GAEA,IADA2jD,SAAAF,cACA,GAAAE,SAEA,WADAP,QAAAtsC,MAUA,KAPAssC,OAAA7rC,OACAssC,SACAjT,WACAA,QAAAiT,MAAAA,MACAjT,QAAAkT,aAAAv7C,OAAAqd,KAAA,EACAgrB,QAAAmT,WAAAx7C,OAAAqd,OAAA+9B,UACAC,MAAAr7C,OAAAqd,KACApnB,EAAAspB,EAAA,EAAA9nB,IAAA2jD,SAAA3jD,KAAA,EAAAA,KAAA8nB,EAAAA,GAAA9nB,IAAAxB,EAAAwB,KAAA,IAAA8nB,IAAAA,EACAtpB,IAAAolD,MAAAP,cAAAM,SAAAC,MAAAP,aAAAE,MACAM,MAAA5qD,MACAgX,QAAA,OACAhJ,KAAA,SAEAzI,IAAAolD,MAAAJ,eAAAI,MAAAN,QAAAE,cACAK,MAAA5qD,MACAgX,QAAA,OACAhJ,KAAA,SAEAzI,EAAAolD,MAAAP,cAAAM,SAAAJ,OAAA/kD,GAEAolD,MAAAJ,cAAAhlD,GAAAA,EAAA8kD,SAGAO,MAAA5qD,KADAuF,IAAAolD,OAEA3zC,QAAA,SACAmjB,IAAA50B,EACAyI,KAAA,gBAIAgJ,QAAA,OACAmjB,IAAA50B,EACAyI,KAAA,QAIA,OAAAm8C,QAAAjsC,KAAAnP,SAAA4oC,WAEAroC,OAAA9I,OAAA,SAAA,SAAAP,OACA,MAAAA,OAGAwkD,mBAHA,SAKAl7C,IAAAc,GAAA,QAAA,2BAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAT,OAAAtH,OAAA,WAEA,MADAgW,OAAA5S,aAAA,OAAAkE,OAAAqd,KAAA,GACA3O,MAAAupC,iBAGAh4C,IAAAc,GAAA,QAAA,+BAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAT,OAAAtH,OAAA,WAEA,MADAgW,OAAA5S,aAAA,OAAAkE,OAAAqd,KAAA,GACA3O,MAAAupC,iBAGAh4C,IAAAc,GAAA,QAAA,gCAAA,SAAAT,OACA,GAAAm7C,SAAAtsC,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAqsC,QAAAtsC,OAAAte,KAAA,WACAmP,OAAAtH,OAAA,WAEA,MADAgW,OAAA5S,aAAA,OAAA2/C,SACA/sC,MAAAupC,kBAIA0C,aAAA,SAAA36C,OAAAC,IAAA+G,OAAA0H,OACA,GAAAgtC,gBAAAC,aAAAC,IAOA,OANAD,cAAAjtC,MAAA4pC,aAAA,YAAA,eACAqD,eACAC,KAAAnmD,WAAAkmD,aAAA,KAAA,gBAAA,kBACAD,eAAAz7C,IAAAU,KAAA,oCAAA9K,KAAA8lD,aAAA,KAAA,MACAD,eAAA9sC,KAAA8sC,eAAA9sC,OAAA,qBAAAgtC,KAAA,cAEA37C,IAAAc,GAAA,QAAA,mBAAA,SAAAT,OACA,GAAAu7C,YAAAC,SAAA3sC,MAKA,OAJAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACAusC,aAAAjtC,MAAA4pC,aAAA,WACAwD,SAAA3sC,OAAAte,KAAA,aACAgrD,WAAAF,eAAAG,SAAA,IAAAA,SAAAA,SACA97C,OAAAtH,OAAA,WAGA,MAFAgW,OAAAtS,cAAA,UAAAy/C,YACAntC,MAAAypC,eACAzpC,MAAAupC,aAAAt8C,KAAA,WAGA,MAFAsE,KAAAU,KAAA,gCAAAvC,SACAw9C,KAAAnmD,WAAAomD,WAAA,KAAA,gBAAA,kBACA1sC,OAAAP,KAAAO,OAAAP,OAAA,qBAAAgtC,KAAA,oBAKA77C,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,MAIA,OAHAA,OAAAzO,IAAAqN,aACAqtC,aAAA36C,OAAAC,IAAA+G,OAAA0H,OACAksC,eAAA56C,OAAAC,IAAA+G,OAAA0H,OACA1O,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,YAAA,OAAA,cAAA,cAAAk4C,kBAEAC,uBAAA,SAAA/lD,KAAAvC,UAAAgjB,IAAA/hB,SAAAsb,SAAAyB,WACA,GAAA3N,MAAAN,SAAA6+B,gBA+OA,OA9OA7+B,UAAAiO,UAAAne,IAAA,6BAAA,GACA+uC,iBAAA5wB,UAAAne,IAAA,sCAAA,GACAwQ,KAAA,SAAAC,OAAAC,KACA,GAAAyO,OAAA6vB,0BAAAC,cAAAC,sBAAAC,cAAAC,gBAAAC,eAAAC,YAAAC,qBAoMA,OAnMApwB,OAAAzO,IAAAsrB,QAAA,YAAAje,aACAqxB,mBACAE,YAAA,SAAA5sB,MAAAvT,MAKA,MAJAuB,KAAAU,KAAA,iBAAA4N,OACAtO,IAAAU,KAAA,gBAAAoG,YAAA,UACA9G,IAAAU,KAAA,iBAAAoG,YAAA,UACA9G,IAAAU,KAAA,6BAAAiO,KAAAqD,OACAhS,IAAAU,KAAA,6BAAA0O,KAAA,YAAA3Q,OAEAkgC,eAAA,WAGA,MAFA3+B,KAAAU,KAAA,iBAAAqO,OACA/O,IAAAU,KAAA,gBAAAsG,SAAA,UACAhH,IAAAU,KAAA,iBAAAsG,SAAA,WAEAs3B,0BAAA,SAAAjiC,SACA,GAAAijB,GAAArnB,IAAAV,KAAApG,IAAAq5B,MACAkU,mBACA,KAAAnnC,OAAA8E,SAEA,IADAmuB,OAAAnuB,QAAA9E,MACA+nB,EAAA,EAAArnB,IAAAuyB,OAAA74B,OAAAsG,IAAAqnB,EAAAA,IACAnuB,IAAAq5B,OAAAlL,GACAnuB,IAAAw2B,UACA+W,gBAAAjuC,KAAAU,IAIA,OAAAqtC,uBAAAE,kBAEAF,sBAAA,SAAAE,iBACA,GAAA/vB,KAYA,OAXApiB,GAAA8N,OAAAqkC,gBAAA,WACA,MAAA,UAAAI,GACA,MAAAA,GAAA3Y,MACA2Y,EAAApF,MAAA,0BAAAoF,EAAA3Y,MADA,SAIAh6B,OACAwiB,KAAA0vB,kBACAhiC,QAAAqiC,kBAEA1+B,IAAAU,KAAA,oBAAAiO,KAAAA,MACA+vB,gBAAA/sC,OAAA,EACAqO,IAAAU,KAAA,iBAAAqO,OAEA/O,IAAAU,KAAA,iBAAA4N,QAGAiwB,cAAA,SAAAliC,SACA,GAAAsS,KAWA,OAVApiB,GAAA8N,OAAAgC,QAAA,WACA,MAAA,UAAAyiC,GACA,MAAAA,GAAA3Y,MACA2Y,EAAApF,MAAA,0BAAAoF,EAAA3Y,MADA,SAIAh6B,OACAwiB,KAAAnP,UACAnD,QAAAA,UAEA2D,IAAAU,KAAA,gBAAAiO,KAAAA,OAEAkwB,sBAAA,SAAApgC,KAAA9D,IACA,GAAAokC,oBAAA1kC,OAAAyhD,SAAAz/C,OACA,OAAA,cAAAoC,MACAgU,IAAAiC,OAAA6jC,aAAAx4C,OAAAvE,WAAAE,KAAA,SAAA9K,MACA,GAAAyL,SAAA68C,SAQA,OAPAA,WAAAtoD,KACAyL,QAAA68C,UAAAv+C,IACA0B,QAAA+gB,KAAA,EACA3O,MAAArS,kBAAAC,SACAoS,MAAAypC,eACAzpC,MAAAupC,aACAvpC,MAAAsqC,oBAAAh5C,OAAA1D,QAAAA,SACAiiC,0BAAAv+B,OAAA1D,WAEA,OAEAA,QAAA0D,OAAA1D,QAAAoC,MACAq9C,SAAA,SAAAr9C,KAAAvS,MAAAwJ,SAAAiF,IAAAA,GACAN,OAAA9N,EAAAmU,KAAArE,SACA1B,GAAAmhD,WAEAzhD,OAAAstB,UAAAttB,OAAAstB,SACA,OAAAhtB,KACAA,GAAA,QAEAN,OAAAstB,UACA+W,gBAAAjuC,KAAA4J,QACA0F,OAAAtH,OAAA,WAIA,MAHAgW,OAAA5S,aAAA4C,KAAA9D,IACA8T,MAAA5S,aAAA,OAAA,GACA4S,MAAAypC,eACAzpC,MAAAupC,iBAGAtZ,gBAAAnyC,EAAA8D,OAAAquC,gBAAArkC,QACA0F,OAAAtH,OAAA,WAIA,MAHAgW,OAAAnS,eAAAmC,KAAA9D,IACA8T,MAAA5S,aAAA,OAAA,GACA4S,MAAAypC,eACAzpC,MAAAupC,gBAGAxZ,sBAAAE,iBACAK,mBAAA/+B,IAAAU,KAAA,6BAAA0O,KAAA,aACA3Q,OAAAsgC,mBACAR,cAAAhyC,EAAA8D,OAAAgM,QAAA,aADA,SAIA0D,OAAAmH,IAAA,iBAAA,SAAAgB,IAAA7L,SACA,MAAAiiC,2BAAAjiC,WAEAoiC,cAAAxpC,gBAAA,IAAA,SAAAyB,OACA,MAAA,UAAAA,OAGA+X,MAAAtS,cAAA,OAAA,MACA,IAAAzF,MAAA/E,QACA8c,MAAAtS,cAAA,IAAA,MACAsS,MAAAypC,iBAEAzpC,MAAAtS,cAAA,IAAAzF,OACA+X,MAAAypC,gBAEAzpC,MAAAupC,cAXA,SAaAj4C,OAAA9I,OAAA,WAAAwnC,eACAz+B,IAAAc,GAAA,QAAA,8BAAA,SAAAT,OACA,GAAA6yB,MAAAhkB,MAKA,OAJA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA+jB,KAAAnzB,OAAA1D,QAAA6S,OAAAte,KAAA,SACA2tC,cAAAhyC,EAAA8D,OAAA6iC,KAAA,aACA0L,YAAA1vB,OAAArY,KAAA,SAAAqY,OAAAte,KAAA,WAEAoP,IAAAc,GAAA,QAAA,2DAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAm+B,eAAA3+B,OAEAA,IAAAc,GAAA,QAAA,qBAAA,SAAAT,OACA,GAAA1F,IAAAuU,OAAAzQ,IAKA,OAJA4B,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAxU,GAAAuU,OAAAte,KAAA,OAAA,KACA6N,KAAAyQ,OAAAte,KAAA,QACAiuC,sBAAApgC,KAAA9D,MAEAqF,IAAAc,GAAA,QAAA,8BAAA,SAAAT,OACA,GAAA1F,IAAAuU,OAAAzQ,IASA,OARA4B,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAAF,YAAA,UACArU,GAAAuU,OAAAte,KAAA,OAAA,KACA6N,KAAAyQ,OAAAte,KAAA,QACA,cAAA6N,MACAyQ,OAAApI,YAAA,UAEA+3B,sBAAApgC,KAAA9D,MAEAqF,IAAAc,GAAA,QAAA,2CAAA,SAAAT,OACA,GAAA07C,kBAAAlxC,QAAAqE,OAAA8C,KAOA,OANA3R,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA4sC,iBAAA7sC,OAAA3b,SAAA3C,KAAA,MACAohB,MAAA,uBACAnH,QAAA,sBAAAkxC,iBAAA,IACArrD,SAAAuhB,YAAAD,MAAAnH,SAAAnP,KAAA,SAAA2Q,QACA,GAAAlR,QAaA,OAZAA,SAAAsT,MAAA8rC,eAAAwB,kBACA5gD,QAAAO,KAAA,WAOA,MANAP,SAAAsT,MAAA6pC,gBACAn9C,QAAAO,KAAA,SAAAW,SAGA,MAFAgQ,UACAtM,OAAA1D,QAAA68C,UAAA78C,QACAkiC,cAAAx+B,OAAA1D,QAAA68C,aAEA/9C,QAAAO,KAAA,KAAA,WACA,MAAA2Q,cAGAlR,QAAAO,KAAA,KAAA,WAEA,MADA2Q,SAAA,GACA3b,SAAAI,OAAA,eAIAkP,IAAAc,GAAA,QAAA,gBAAA,SAAAT,OAMA,MALAA,OAAAG,iBACA+9B,cAAAx+B,OAAA1D,QAAA,WACAuiC,YAAA,aAAA,aACA5+B,IAAAU,KAAA,iBAAA4N,OACAtO,IAAAU,KAAA,mBAAAoG,YAAA,UACA9G,IAAAU,KAAA,mBAAA6L,UAEAvM,IAAAc,GAAA,QAAA,kBAAA,SAAAT,OACA,GAAAg6C,WAAAl/C,QAAA+T,MAEA,OADA7O,OAAAG,iBACA,KAAAH,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAkrC,UAAAnrC,OAAA/d,MACA6a,SAAAE,MAAAlM,IAAAU,KAAA,SACAvF,QAAAsT,MAAA2rC,qBAAAC,WACAl/C,QAAAO,KAAA,WACA,GAAAsgD,YAaA,OAZAA,aAAAvtC,MAAA6pC,gBACA0D,YAAAtgD,KAAA,SAAAW,SACA,GAAA4/C,mBAQA,OAPAjwC,UAAAK,OAAArM,IAAAU,KAAA,SACAX,OAAA1D,QAAA68C,UAAA78C,QACA4/C,mBAAAj8C,IAAAU,KAAA,6BAAA0O,KAAA,aACA,cAAA6sC,oBACA1d,cAAAx+B,OAAA1D,QAAA68C,WAEAl5C,IAAAU,KAAA,mBAAAsG,SAAA,UACAhH,IAAAU,KAAA,iBAAAqO,SAEAitC,YAAAtgD,KAAA,KAAA,WAEA,MADAsQ,UAAAK,OAAArM,IAAAU,KAAA,SACAhQ,SAAAI,OAAA,QAAA,oCAGAqK,QAAAO,KAAA,KAAA,WAGA,MAFAsQ,UAAAK,OAAArM,IAAAU,KAAA,SACAV,IAAAU,KAAA,mBAAAvP,IAAAkpD,WAAA9tC,QAAAwF,SACArhB,SAAAI,OAAA,QAAA,uBAEA,KAAAuP,MAAAsI,SACA3I,IAAAU,KAAA,mBAAAvP,IAAA,IACA6O,IAAAU,KAAA,mBAAAsG,SAAA,UACAhH,IAAAU,KAAA,iBAAAqO,QAHA,WAQAjP,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAA,OAAA,cAAA,eAAA,aAAA,aAAA,cAAAm4C,yBAEAH,kCAAA,SAAAr1C,MAAAkL,WAaA,GAAA3N,MAAA+1B,kBAAAqmB,iBAqDA,OApDArmB,mBAAApoB,UAAAne,IAAA,oDAAA,GACA4sD,kBAAA,SAAAl8C,IAAA8kB,MAAApL,iBACA,GAAAyiC,gBAAAC,qBAAArsD,MAIA,OAHAqsD,sBAAAp8C,IAAAU,KAAA,iBACAy7C,eAAAn8C,IAAAU,KAAA,oCACA3Q,OAAA2pB,gBAAAoL,MAAA/0B,QACAA,QACAosD,eAAArkD,KAAA/H,OAAAwH,MACA4kD,eAAA/sC,KAAA,QAAArf,OAAAwH,MACA6kD,qBAAA/tC,IAAA,QAAAte,OAAAo2B,QAHA,QAMArmB,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAAqW,KAmCA,OAlCArW,OAAAzO,IAAAqN,aACAyX,MAAA/kB,OAAA/I,MAAA+P,OAAAs1C,4BACAr8C,IAAAc,GAAA,QAAA,gBAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACA5Q,IAAAU,KAAA,eAAAgQ,UAAApE,SAEAtM,IAAAc,GAAA,QAAA,UAAA,SAAAT,OACA,GAAA6O,OAOA,OANA7O,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA2V,MAAA/0B,OAAAmf,OAAAte,KAAA,aACAoP,IAAAU,KAAA,eAAAgQ,UAAA/F,QACAuxC,kBAAAl8C,IAAA8kB,MAAA/kB,OAAA2Z,iBACA3Z,OAAAtH,OAAA,WACA,MAAA8J,OAAAmP,KAAAoT,OAAAppB,SAGAxP,MAAA4I,SAAAiL,OAAA,UAAA,SAAAlF,SAKA,MAJAmF,KAAA0nB,OAAAmO,mBACAD,SAAA/6B,QAAA8e,kBAEAuiC,kBAAAl8C,IAAA8kB,MAAA/kB,OAAA2Z,iBACA,KAAA7e,QAAAgM,eAAA/Q,QAAA,iBACAkK,IAAAsT,OAAA,SACAtT,IAAAU,KAAA,KAAAsG,SAAA,kBAFA,SAKAjH,OAAA9I,OAAA8P,OAAAs1C,2BAAA,WACA,MAAA,UAAAlrD,KACA,MAAA+qD,mBAAAl8C,IAAA7O,IAAA4O,OAAA2Z,mBAEAvtB,OACA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,8BAAA,UAAA,cAAAg4C,oCAEAD,sCAAA,SAAAp1C,MAAApQ,YACA,GAAA2N,MAAAN,QAgDA,OA/CAA,UAAAjT,EAAAiT,SAAA,sFACAM,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAAqW,MAAAw3B,WAyCA,OAxCAA,aAAA,SAAAx3B,OACA,GAAA5c,KAAA+K,MAWA,OAVA/K,MACA3Q,KAAA,aACA2b,OAAA,uBAEAD,OAAAlT,OAAAnF,UAAAkqB,MAAAzS,aACAY,SACA/K,IAAAgL,OAAAD,OAAAE,MACAjL,IAAA3Q,KAAA0b,OAAAG,mBAEApT,IAAAU,KAAA,WAAAiO,KAAAnP,SAAA0I,MACAlI,IAAAU,KAAA,qBAAA7J,KAAA,QAAAqR,IAAA3Q,OAEAkX,MAAAzO,IAAAqN,aACAyX,MAAA/kB,OAAA/I,MAAA+P,OAAAw1C,gCACAD,YAAAx3B,OACA9kB,IAAAc,GAAA,QAAA,oBAAA,WACA,MAAA3O,YAAA2L,WAAA,kBAAAgnB,SAEA54B,MAAA4I,SAAAiL,OAAA,UAAA,SAAAlF,SACA,MAAA,KAAAA,QAAAgM,eAAA/Q,QAAA,iBACAkK,IAAAsT,OAAA,SACAtT,IAAAU,KAAA,KAAAsG,SAAA,kBAFA,SAKAjH,OAAAmH,IAAA,oBAAA,WACA,MAAA,UAAAgB,IAAAqL,OAAAipC,cACA,MAAAA,cAAA7hD,KAAAmqB,MAAAnqB,IACA6hD,aAAAnqC,YAAAkB,OACAhR,MAAAmP,KAAA8qC,cACAF,YAAAE,eAHA,SAMArwD,OACA4T,OAAA9I,OAAA8P,OAAAw1C,+BAAA,WACA,MAAA,UAAAprD,KACA,MAAAmrD,aAAAnrD,OAEAhF,OACA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,kCAAA,UAAA,aAAA+3C,yCAEA1kD,KAAA9G,MDv4BA,WACA,GAAAswD,oCAAAC,wBAAAC,yBAAAC,gCAAAC,iCAAAC,0BAAAhoD,SAAAI,QAAAE,MAAApJ,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAF,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEA9I,OAAA8G,QAAA9G,OAAA,oBAEA8wD,0BAAA,SAAA1oD,YAKA,QAAA0oD,2BAAAlmD,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAoF,IAAAqf,SAAAxkB,QAAAisC,UAAAlzB,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAwN,IAAAA,IACAxN,KAAA6sB,SAAAA,SACA7sB,KAAAqI,QAAAA,QACArI,KAAAs0C,UAAAA,UACAt0C,KAAAyK,MAAAmmD,MAAA5wD,KAAAqC,OAAAwuD,MACA7wD,KAAAyK,MAAAmZ,YAAA,qBACA5jB,KAAAy0C,0BACAzlC,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YAEA,MADAA,OAAAqd,SAAAhb,IAAArC,MAAA/E,MAAA4b,GAAAf,QAAA,MAAA9V,MAAA/E,MAAAiE,QAAAtD,MACAoE,MAAAw6C,8BAEAhqD,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YAuIA,MApKAhmB,QAAAypD,0BAAA1oD,YAEA0oD,0BAAAt/C,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,OAAA,YAAA,aAAA,eAAA,YA8BAs/C,0BAAAlpD,UAAAgtC,wBAAA,WAuBA,MAtBAz0C,MAAAyK,MAAAsQ,IAAA,uBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAAshD,SACAthD,MAAA/E,MAAA+b,MAAApmB,EAAAmS,MAAA/C,MAAA/E,MAAA+b,OAAA,KAEAxmB,OACAA,KAAAyK,MAAAsQ,IAAA,oBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAA8kC,UAAAv/B,WAAA,aAAA,SAAA,iCAAA,GACAvF,MAAAwB,UAAAW,WAAA,oBAEA3R,OACAA,KAAAyK,MAAAsQ,IAAA,kBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,OACAA,KAAAyK,MAAAsQ,IAAA,oBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,OACAA,KAAAyK,MAAAsQ,IAAA,gCAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,QAGA2wD,0BAAAlpD,UAAAuiD,0BAAA,WACA,GAAAjuC,IAKA,OAJAA,MACArN,QAAA1O,KAAAyK,MAAAiE,QAAAsN,MAEAhc,KAAAyK,MAAAwuB,gBAAAj5B,KAAAqI,QAAArG,QAAA,UAAA+Z,KACA/b,KAAAyK,MAAAiE,QAAAuN,qBACAjc,KAAAyK,MAAA4b,GAAAqc,WACA3mB,IAAAyb,OAAAx3B,KAAAyK,MAAA+sB,OAAAxb,KACAhc,KAAAyK,MAAAwuB,gBAAAj5B,KAAAqI,QAAArG,QAAA,oBAAA+Z,MAEA/b,KAAAyK,MAAAwuB,gBAAAj5B,KAAAqI,QAAArG,QAAA,kBAAA+Z,KAEA/b,KAAAyK,MAAAiE,QAAAwN,oBACAlc,KAAAyK,MAAAwuB,gBAAAj5B,KAAAqI,QAAArG,QAAA,iBAAA+Z,KADA,QAKA40C,0BAAAlpD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SAkBA,MAjBAc,OAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAAm8B,WAAAl4B,QAAAqf,YACAve,MAAA/E,MAAAy/C,WAAAnhD,QAAA2F,QAAAqf,YAAA,SAAAztB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAgjB,eAAA1kB,QAAA2F,QAAAgf,cAAA,SAAAptB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAojB,YAAA9kB,QAAA2F,QAAAC,YAAA,SAAArO,GACA,MAAAA,GAAA6N,OAEAqB,MAAA/E,MAAA23C,WAAAhiD,EAAAiO,OAAAK,QAAA6b,OAAA,SACA/a,MAAA/E,MAAA0zB,WAAAp1B,QAAAyG,MAAA/E,MAAA23C,WAAA,SAAA7zC,GACA,MAAAA,GAAAC,KAEAE,UAEA1O,QAGA2wD,0BAAAlpD,UAAAqpD,OAAA,WACA,MAAA9wD,MAAAkP,GAAA4Y,YAAA0iC,SAAAxqD,KAAAyK,MAAA4E,UAAArP,KAAAqC,OAAAwuD,OAAAthD,KAAA,SAAAC,OACA,MAAA,UAAA6W,IACA,GAAAtK,IAkBA,OAjBAvM,OAAA/E,MAAA4b,GAAAA,GACA7W,MAAA/E,MAAAic,KAAAL,GAAA7X,GACAgB,MAAA/E,MAAAigD,aAAArkC,GACA,MAAA7W,MAAA/E,MAAA4b,GAAAskC,UAAAC,SAAAv/C,MACA0Q,KACArN,QAAAc,MAAA/E,MAAAiE,QAAAsN,KACA3Q,IAAAmE,MAAA/E,MAAA4b,GAAAskC,UAAAC,SAAAv/C,KAEAmE,MAAA/E,MAAAogD,YAAAr7C,MAAAnH,QAAArG,QAAA,6BAAA+Z,MAEA,MAAAvM,MAAA/E,MAAA4b,GAAAskC,UAAAvkB,KAAA/6B,MACA0Q,KACArN,QAAAc,MAAA/E,MAAAiE,QAAAsN,KACA3Q,IAAAmE,MAAA/E,MAAA4b,GAAAskC,UAAAvkB,KAAA/6B,KAEAmE,MAAA/E,MAAAwJ,QAAAzE,MAAAnH,QAAArG,QAAA,6BAAA+Z,MAEAsK,KAEArmB,QAGA2wD,0BAAAlpD,UAAA06C,WAAA,WACA,MAAAniD,MAAAyK,MAAA4b,GAAAqc,UACA1iC,KAAAkP,GAAA2kC,QAAA1wC,IAAAnD,KAAAyK,MAAA4b,GAAA3X,QAAA1O,KAAAyK,MAAA4b,GAAAqc,WAAAnzB,KAAA,SAAAC,OACA,MAAA,UAAAgoB,QAEA,MADAhoB,OAAA/E,MAAA+sB,OAAAA,OACAA,SAEAx3B,OANA,QAUA2wD,0BAAAlpD,UAAA8e,UAAA,WACA,MAAAvmB,MAAAkP,GAAAsX,MAAAC,KAAAzmB,KAAAyK,MAAA4E,UAAA,KAAArP,KAAAyK,MAAAic,MAAAnX,KAAA,SAAAC,OACA,MAAA,UAAAgX,OAEA,MADAhX,OAAA/E,MAAA+b,MAAAA,MACAA,QAEAxmB,QAGA2wD,0BAAAlpD,UAAAiZ,gBAAA,WACA,GAAA1R,QAEA,OADAA,SAAAhP,KAAAqtB,cACAre,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAd,SAEA,MADAc,OAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAyB,MAAAshD,SAAAvhD,KAAA,WACA,MAAAC,OAAAlH,EAAA2G,KAAAO,MAAA2yC,aAAA3yC,MAAA+W,kBAGAvmB,QAGA2wD,2BAEA1nD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,4BAAAyvC,2BAEAH,yBAAA,SAAAlvC,WACA,GAAA3N,MAAAN,QAqBA,OApBAA,UAAAiO,UAAAne,IAAA,yCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAcA,OAbAA,QAAA,SAAA6L,IACA,GAAA7D,KAKA,OAJAA,MAAAnP,UACAivB,UAAAjc,GAAAic,UACA1+B,OAAAgQ,OAAAs2C,WAAA7jC,GAAAziB,UAEAiQ,IAAA2O,KAAAA,OAEA5O,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAM,IACA,MAAA,OAAAA,GACA7L,OAAA6L,IADA,SAIAzS,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,qBAAA,cAAA+8C,2BAEAC,gCAAA,SAAAnvC,WACA,GAAA3N,MAAAN,QA6BA,OA5BAA,UAAAiO,UAAAne,IAAA,4BAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAsBA,OArBAA,QAAA,SAAAgM,OACA,GAAAhE,MAAAuuC,SAAAC,iBAAAC,UAaA,OAZAA,YAAAzqC,MAAAhhB,OACAwrD,iBAAA5wD,EAAA8N,OAAAsY,MAAA,WACA,MAAA,UAAAnB,MACA,MAAAzR,QAAA6Z,eAAApI,KAAAzhB,QAAA0+B,YAEAtiC,OAAAwF,OACAurD,SAAAE,WAAA,EAAA,IAAAD,iBAAAC,WAAA,EACAzuC,KAAAnP,UACA49C,WAAAA,WACAD,iBAAAA,iBACAD,SAAAA,WAEAl9C,IAAA2O,KAAAA,OAEA5O,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAS,OACA,MAAA,OAAAA,MACAhM,OAAAgM,OADA,SAIA5S,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,4BAAA,cAAAg9C,kCAEAF,wBAAA,SAAAjzB,WAAAlnB,MAAA7R,SAAAsb,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QAqEA,OApEAA,UAAAiO,UAAAne,IAAA,4BAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAAzd,OAAA+K,IA8DA,OA7DA0S,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,cAEA6Q,OAAA,WACA,MAAA,UAAA6L,IACA,GAAA7D,MAAA5e,MAOA,OANAA,QAAAgQ,OAAAs2C,WAAA7jC,GAAAziB,QACA4e,KAAAnP,UACAzP,OAAAA,OACA6lC,SAAA71B,OAAAgzB,WACA5J,SAAA/E,eAEApkB,IAAA2O,KAAAA,QAEAxiB,MACAulB,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAnZ,QACA,GAAAkQ,SAAAC,UAAAsS,EAiBA,OAhBAA,IAAAhQ,OAAAmP,YAAAjT,QACA8T,GAAAziB,OAAAA,OACAkY,EAAAjU,GAAA0c,UAAA1gB,WACAwS,OAAAiiB,cAAAjS,IACAtS,UAAA,WAGA,MAFAxP,UAAAI,OAAA,WACA24B,WAAA3rB,WAAA,kBACAkO,SAAAK,OAAArM,IAAAU,KAAA,iBAEAT,QAAA,WAIA,MAHAvP,UAAAI,OAAA,SACA0hB,GAAA+M,SACA/c,OAAAiiB,cAAAjS,IACAxG,SAAAK,OAAArM,IAAAU,KAAA,iBAEAsL,SAAAE,MAAAlM,IAAAU,KAAA,gBACA6B,MAAAmP,KAAAlP,OAAAmP,aAAAjW,KAAAwE,UAAAD,WAEA9T,OACA6T,IAAAc,GAAA,QAAA,eAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACAwT,aAGApkB,IAAAU,KAAA,eAAAgQ,UAAApE,OAHA,SAKAtM,IAAAc,GAAA,QAAA,UAAA,SAAAT,OACA,GAAAtQ,QAAAmf,MAGA,OAFA7O,OAAAG,iBACAH,MAAAuQ,kBACAwT,cAGAlV,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACApf,OAAAmf,OAAAte,KAAA,aACA8gB,KAAA3hB,SALA,SAOAgQ,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAM,IACA,MAAAA,IACA7L,OAAA6L,IADA,SAIAzS,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,oBAAA,aAAA,UAAA,aAAA,aAAA,YAAA,cAAA88C,0BAEAG,iCAAA,SAAA1qD,WAAAsgC,QAAA/hC,SAAAsb,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QAyDA,OAxDAA,UAAAiO,UAAAne,IAAA,sCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA66C,SAAA12C,OAAA+K,IAkDA,OAjDA2rC,SAAA,WACA,MAAA,KAAAt9C,OAAAlF,QAAAgM,eAAA/Q,QAAA,cAEA6Q,OAAA,SAAA6L,IACA,GAAAtK,KAAAyG,IACA,OAAA0uC,YAAA7qC,GAAAoc,kBAIA1mB,KACAm1C,QAAAA,UACAC,WAAA9qC,GAAAoc,kBAEAjgB,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,WARA3O,KAAA2O,KAAA,KAUA+C,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAA0lB,kBACA,GAAAzzB,SAAAqX,EAUA,OATAA,IAAAhQ,OAAAmP,YAAAjT,QACA8T,GAAAoc,iBAAAA,iBACApsB,OAAAiiB,cAAAjS,IACAxG,SAAAE,MAAAlM,IAAAU,KAAA,UACAvF,QAAAs3B,QAAA/gB,KAAAlP,OAAAmP,aACAxW,QAAAO,KAAA,WAEA,MADAsQ,UAAAK,OAAArM,IAAAU,KAAA,UACAvO,WAAA2L,WAAA,oBAEA3C,QAAAO,KAAA,KAAA,WAIA,MAHAsQ,UAAAK,OAAArM,IAAAU,KAAA,UACAhQ,SAAAI,OAAA,SACA0hB,GAAA+M,SACA/c,OAAAiiB,cAAAjS,QAGArmB,OACA6T,IAAAc,GAAA,QAAA,oBAAA,WACA,GAAA8tB,iBACA,IAAAyuB,UAIA,MADAzuB,mBAAApsB,OAAAmP,YAAAid,iBACAld,KAAAkd,oBAEA7uB,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAM,IACA,MAAAA,IACA7L,OAAA6L,IADA,SAIAzS,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,6BAAA,aAAA,UAAA,aAAA,aAAA,YAAA,cAAAi9C,mCAEAJ,mCAAA,SAAAtqD,WAAAsgC,QAAA/hC,SAAAsb,SAAAkY,QAAAzW,WACA,GAAA3N,MAAAN,QAyDA,OAxDAA,UAAAiO,UAAAne,IAAA,wCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA66C,SAAA12C,OAAA+K,IAkDA,OAjDA2rC,SAAA,WACA,MAAA,KAAAt9C,OAAAlF,QAAAgM,eAAA/Q,QAAA,cAEA6Q,OAAA,SAAA6L,IACA,GAAAtK,KAAAyG,IACA,OAAA0uC,YAAA7qC,GAAAmc,oBAIAzmB,KACAm1C,QAAAA,UACAC,WAAA9qC,GAAAmc,oBAEAhgB,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,WARA3O,KAAA2O,KAAA,KAUA+C,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAylB,oBACA,GAAAxzB,SAAAqX,EAUA,OATAA,IAAAhQ,OAAAmP,YAAAjT,QACA8T,GAAAmc,mBAAAA,mBACAnsB,OAAAiiB,cAAAjS,IACAxG,SAAAE,MAAAlM,IAAAU,KAAA,UACAvF,QAAAs3B,QAAA/gB,KAAAlP,OAAAmP,aACAxW,QAAAO,KAAA,WAEA,MADAsQ,UAAAK,OAAArM,IAAAU,KAAA,UACAvO,WAAA2L,WAAA,oBAEA3C,QAAAO,KAAA,KAAA,WAIA,MAHAsQ,UAAAK,OAAArM,IAAAU,KAAA,UACAhQ,SAAAI,OAAA,SACA0hB,GAAA+M,SACA/c,OAAAiiB,cAAAjS,QAGArmB,OACA6T,IAAAc,GAAA,QAAA,sBAAA,WACA,GAAA6tB,mBACA,IAAA0uB,UAIA,MADA1uB,qBAAAnsB,OAAAmP,YAAAgd,mBACAjd,KAAAid,sBAEA5uB,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAM,IACA,MAAAA,IACA7L,OAAA6L,IADA,SAIAzS,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,+BAAA,aAAA,UAAA,aAAA,aAAA,YAAA,cAAA68C,sCAEAxpD,KAAA9G,MArdA,WACA,GAAAoxD,sBAAAC,6BAAAC,0BAAAC,2BAAAxoD,QAAAE,MAAApJ,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAF,QAAA/I,KAAAD,MAAAgJ,QAEAlJ,OAAA8G,QAAA9G,OAAA,cAEAuxD,qBAAA,SAAAnpD,YAKA,QAAAmpD,sBAAA3mD,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAoF,IAAAqf,SAAAxkB,QAAAisC,UAAAlzB,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAwN,IAAAA,IACAxN,KAAA6sB,SAAAA,SACA7sB,KAAAqI,QAAAA,QACArI,KAAAs0C,UAAAA,UACAt0C,KAAAyK,MAAA+mD,QAAAxxD,KAAAqC,OAAAovD,QACAzxD,KAAAyK,MAAAmZ,YAAA,eACA5jB,KAAAy0C,0BACAzlC,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YAEA,MADAA,OAAAqd,SAAAhb,IAAArC,MAAA/E,MAAA4a,KAAAC,QAAA,MAAA9V,MAAA/E,MAAAiE,QAAAtD,MACAoE,MAAAw6C;GAEAhqD,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YAgIA,MA7JAhmB,QAAAkqD,qBAAAnpD,YAEAmpD,qBAAA//C,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,OAAA,YAAA,aAAA,eAAA,YA8BA+/C,qBAAA3pD,UAAAgtC,wBAAA,WAiBA,MAhBAz0C,MAAAyK,MAAAsQ,IAAA,oBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAA8kC,UAAAv/B,WAAA,aAAA,SAAA,4BAAA,GACAvF,MAAAwB,UAAAW,WAAA,oBAEA3R,OACAA,KAAAyK,MAAAsQ,IAAA,kBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,OACAA,KAAAyK,MAAAsQ,IAAA,oBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,OACAA,KAAAyK,MAAAsQ,IAAA,gCAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAwB,UAAAW,WAAA,oBAEA3R,QAGAoxD,qBAAA3pD,UAAAuiD,0BAAA,WACA,GAAAjuC,IAKA,IAJAA,KACArN,QAAA1O,KAAAyK,MAAAiE,QAAAsN,MAEAhc,KAAAyK,MAAAwuB,gBAAAj5B,KAAAqI,QAAArG,QAAA,UAAA+Z,KACA/b,KAAAyK,MAAAiE,QAAAuN,qBAAA,CACA,GAAAjc,KAAAyK,MAAA4a,KAAAqd,UAEA,MADA3mB,KAAAyb,OAAAx3B,KAAAyK,MAAA+sB,OAAAxb,KACAhc,KAAAyK,MAAAwuB,gBAAAj5B,KAAAqI,QAAArG,QAAA,oBAAA+Z,IACA,IAAA/b,KAAAyK,MAAA4a,KAAAgB,GAEA,MADAtK,KAAA1Q,IAAArL,KAAAyK,MAAA4b,GAAAhb,IACArL,KAAAyK,MAAAwuB,gBAAAj5B,KAAAqI,QAAArG,QAAA,6BAAA+Z,SAEA,IAAA/b,KAAAyK,MAAAiE,QAAAwN,qBACAlc,KAAAyK,MAAA4b,GAEA,MADAtK,KAAA1Q,IAAArL,KAAAyK,MAAA4b,GAAAhb,IACArL,KAAAyK,MAAAwuB,gBAAAj5B,KAAAqI,QAAArG,QAAA,6BAAA+Z,MAKAq1C,qBAAA3pD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SAWA,MAVAc,OAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAAm8B,WAAAl4B,QAAAgf,cACAle,MAAA/E,MAAAy/C,WAAAnhD,QAAA2F,QAAAgf,cAAA,SAAAptB,GACA,MAAAA,GAAAkO,KAEAgB,MAAA/E,MAAAojB,YAAA9kB,QAAA2F,QAAAC,YAAA,SAAArO,GACA,MAAAA,GAAA6N,OAEAO,UAEA1O,QAGAoxD,qBAAA3pD,UAAAiqD,SAAA,WACA,MAAA1xD,MAAAkP,GAAAsX,MAAAgkC,SAAAxqD,KAAAyK,MAAA4E,UAAArP,KAAAqC,OAAAovD,SAAAliD,KAAA,SAAAC,OACA,MAAA,UAAA6V,MACA,GAAAtJ,IAkBA,OAjBAvM,OAAA/E,MAAA4a,KAAAA,KACA7V,MAAA/E,MAAAknD,OAAAtsC,KAAA7W,GACAgB,MAAA/E,MAAAigD,aAAArlC,KACA,MAAA7V,MAAA/E,MAAA4a,KAAAslC,UAAAC,SAAAv/C,MACA0Q,KACArN,QAAAc,MAAA/E,MAAAiE,QAAAsN,KACA3Q,IAAAmE,MAAA/E,MAAA4a,KAAAslC,UAAAC,SAAAv/C,KAEAmE,MAAA/E,MAAAogD,YAAAr7C,MAAAnH,QAAArG,QAAA,uBAAA+Z,MAEA,MAAAvM,MAAA/E,MAAA4a,KAAAslC,UAAAvkB,KAAA/6B,MACA0Q,KACArN,QAAAc,MAAA/E,MAAAiE,QAAAsN,KACA3Q,IAAAmE,MAAA/E,MAAA4a,KAAAslC,UAAAvkB,KAAA/6B,KAEAmE,MAAA/E,MAAAwJ,QAAAzE,MAAAnH,QAAArG,QAAA,uBAAA+Z,MAEAsJ,OAEArlB,QAGAoxD,qBAAA3pD,UAAA06C,WAAA,WACA,MAAAniD,MAAAyK,MAAA4a,KAAAqd,UACA1iC,KAAAkP,GAAA2kC,QAAA1wC,IAAAnD,KAAAyK,MAAA4a,KAAA3W,QAAA1O,KAAAyK,MAAA4a,KAAAqd,WAAAnzB,KAAA,SAAAC,OACA,MAAA,UAAAgoB,QAEA,MADAhoB,OAAA/E,MAAA+sB,OAAAA,OACAA,SAEAx3B,OANA,QAUAoxD,qBAAA3pD,UAAAmqD,cAAA,WACA,MAAA5xD,MAAAyK,MAAA4a,KAAAsd,WACA3iC,KAAAkP,GAAA4Y,YAAA3kB,IAAAnD,KAAAyK,MAAA4a,KAAA3W,QAAA1O,KAAAyK,MAAA4a,KAAAsd,YAAApzB,KAAA,SAAAC,OACA,MAAA,UAAA6W,IAEA,MADA7W,OAAA/E,MAAA4b,GAAAA,GACAA,KAEArmB,OANA,QAUAoxD,qBAAA3pD,UAAAiZ,gBAAA,WACA,GAAA1R,QAEA,OADAA,SAAAhP,KAAAqtB,cACAre,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAd,SAEA,MADAc,OAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAyB,MAAAkiD,WAAAniD,KAAA,WACA,MAAAC,OAAAlH,EAAA2G,KAAAO,MAAA2yC,aAAA3yC,MAAAoiD,sBAGA5xD,QAGAoxD,sBAEAnoD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,uBAAAkwC,sBAEAG,2BAAA,SAAAjwC,WACA,GAAA3N,MAAAN,QAoBA,OAnBAA,UAAAiO,UAAAne,IAAA,yCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAaA,OAZAA,QAAA,SAAA6K,MACA,GAAA7C,KAIA,OAHAA,MAAAnP,UACAzP,OAAAgQ,OAAAs2C,WAAA7kC,KAAAzhB,UAEAiQ,IAAA2O,KAAAA,OAEA5O,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAV,MACA,MAAA,OAAAA,KACA7K,OAAA6K,MADA,SAIAzR,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,uBAAA,cAAA89C,6BAEAD,0BAAA,SAAAh0B,WAAAlnB,MAAA7R,SAAAsb,SAAAkY,SACA,GAAApkB,MAAAN,QAoEA,OAnEAA,UAAAjT,EAAAiT,SAAA,gkBACAM,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAAzd,OAAA+K,IA6DA,OA5DA0S,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,gBAEA6Q,OAAA,WACA,MAAA,UAAA6K,MACA,GAAA7C,MAAA5e,MAOA,OANAA,QAAAgQ,OAAAs2C,WAAA7kC,KAAAzhB,QACA4e,KAAAnP,UACAzP,OAAAA,OACA6lC,SAAA71B,OAAAgzB,WACA5J,SAAA/E,eAEApkB,IAAA2O,KAAAA,QAEAxiB,MACAulB,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAAnZ,QACA,GAAAkQ,SAAAC,UAAAsR,IAgBA,OAfAA,MAAAhP,OAAAmP,YAAAjT,QACA8S,KAAAzhB,OAAAA,OACAyS,OAAAiiB,cAAAjT,MACAtR,UAAA,WAGA,MAFAxP,UAAAI,OAAA,WACA24B,WAAA3rB,WAAA,kBACAkO,SAAAK,OAAArM,IAAAU,KAAA,iBAEAT,QAAA,WAIA,MAHAvP,UAAAI,OAAA,SACA0gB,KAAA+N,SACA/c,OAAAiiB,cAAAjT,MACAxF,SAAAK,OAAArM,IAAAU,KAAA,iBAEAsL,SAAAE,MAAAlM,IAAAU,KAAA,gBACA6B,MAAAmP,KAAAlP,OAAAmP,aAAAjW,KAAAwE,UAAAD,WAEA9T,OACA6T,IAAAc,GAAA,QAAA,eAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAH,MAAAuQ,kBACAwT,aAGApkB,IAAAU,KAAA,eAAAgQ,UAAApE,OAHA,SAKAtM,IAAAc,GAAA,QAAA,UAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACAH,MAAAuQ,kBACAwT,cAGAlV,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAlH,EAAAjU,GAAA0c,UAAA1gB,WACA0hB,KAAAxC,OAAAte,KAAA,eALA,SAOAmP,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAV,MACA,MAAAA,MACA7K,OAAA6K,MADA,SAIAzR,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,sBAAA,aAAA,UAAA,aAAA,aAAA,YAAA69C,4BAEAD,6BAAA,SAAArrD,WAAAsgC,QAAA/hC,SAAAsb,SAAAkY,SACA,GAAApkB,MAAAN,QA2DA,OA1DAA,UAAAjT,EAAAiT,SAAA,ykBACAM,KAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAA4hB,YAAAzd,OAAA+K,IAoDA,OAnDA0S,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,gBAEA6Q,OAAA,SAAA6K,MACA,GAAAtJ,KAAAyG,IACA,OAAAyV,eAAA5S,KAAAud,YAIA7mB,KACA81C,UAAAxsC,KAAAud,WACA3K,WAAAA,cAEAzV,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,WARA3O,KAAA2O,KAAA,KAUA+C,KAAAwS,QAAAhb,QAAA,WACA,MAAA,UAAA6lB,YACA,GAAA5zB,SAAAqW,IAeA,OAdAA,MAAAhP,OAAAmP,YAAAjT,QACA8S,KAAAud,WAAAA,WACAvsB,OAAAiiB,cAAAjT,MACAxF,SAAAE,MAAAlM,IAAAU,KAAA,UACAvF,QAAAs3B,QAAA/gB,KAAAF,MACArW,QAAAO,KAAA,WAEA,MADAhL,UAAAI,OAAA,WACAqB,WAAA2L,WAAA,oBAEA3C,QAAAO,KAAA,KAAA,WAGA,MAFA8V,MAAA+N,SACA/c,OAAAiiB,cAAAjT,MACA9gB,SAAAI,OAAA,WAEAqK,QAAA,WAAA,WACA,MAAA6Q,UAAAK,OAAArM,IAAAU,KAAA,cAGAvU,OACA6T,IAAAc,GAAA,QAAA,cAAA,WACA,GAAAiuB,WACA,IAAA3K,aAIA,MADA2K,aAAAvsB,OAAAmP,YAAAod,WACArd,KAAAqd,cAEAhvB,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAV,MACA,MAAAA,MACA7K,OAAA6K,MADA,SAIAzR,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,yBAAA,aAAA,UAAA,aAAA,aAAA,YAAA49C,gCAEAvqD,KAAA9G,MJlWA,WACA,GAAA8xD,uBAAAC,eAAAC,qBAAAC,+BAAAC,yBAAAC,qBAAAlpD,MAAApJ,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEApJ,OAAA8G,QAAA9G,OAAA,aAEAkyD,eAAA,SAAA9pD,YAKA,QAAA8pD,gBAAAtnD,MAAAuG,UAAA4b,KAAA1d,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAwkB,SAAAnb,KAAA0P,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA6sB,SAAAA,SACA7sB,KAAA0R,KAAAA,KACA1R,KAAAyK,MAAAmZ,YAAA,OACA5U,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,UAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YAqHA,MA7IAhmB,QAAA6qD,eAAA9pD,YAEA8pD,eAAA1gD,SAAA,SAAA,aAAA,UAAA,eAAA,eAAA,KAAA,YAAA,aAAA,YAAA,UAAA,YAyBA0gD,eAAAtqD,UAAA2qD,QAAA,SAAA1zB,MACA,MACA1+B,MAAAyK,MAAA4nD,YADA3zB,KACAA,KAEA,MAIAqzB,eAAAtqD,UAAA6qD,YAAA,WACA,MAAAtyD,MAAAkP,GAAAP,YAAA8X,KAAAzmB,KAAAyK,MAAA4E,cAAA,GAAAE,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAA8tD,aAAA1oD,EAAAiC,IAAA0mD,WAAAnnD,GAkBA,KAjBAknD,YAAA/iD,MAAAkC,KAAAJ,UACA,MAAAihD,aAAA,MAAAA,YAAAvrC,QACAurC,YAAAvrC,MAAA,uBAEAxX,MAAA/E,MAAA8nD,YAAAnyD,EAAAmU,KAAA9P,KAAA,SAAA+tD,YACA,MAAA,OAAAD,aAAAC,WAAArkD,OAAAokD,YAAA/jD,KAEAgB,MAAA/E,MAAAgoD,UACAryD,EAAAglD,QAAA3gD,KAAA,SAAA+tD,YACA,MAAAhjD,OAAA/E,MAAAgoD,OAAAD,WAAArkD,MAAA,IAEAqB,MAAA/E,MAAAkE,YAAAvO,EAAA8N,OAAAzJ,KAAA,SAAA+tD,YACA,MAAAA,YAAArkD,OAAA,MAAAokD,aAAAC,WAAArkD,OAAAokD,YAAA/jD,KAAAgkD,WAAAE,eACAF,WADA,SAIAnnD,IAAAmE,MAAA/E,MAAAkE,YACA9E,EAAA,EAAAiC,IAAAT,IAAA7F,OAAAsG,IAAAjC,EAAAA,IACA2oD,WAAAnnD,IAAAxB,GACA,MAAA2oD,WAAAxrC,QACAwrC,WAAAxrC,MAAA,sBAGA,OAAAviB,QAEAzE,QAGA+xD,eAAAtqD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SAOA,MANAc,OAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAAkoD,cAAAjkD,QAAA0N,oBACA5M,MAAA/E,MAAAmoD,aAAAlkD,QAAAwN,qBAAAxN,QAAAuN,qBACAzM,MAAA/E,MAAAooD,YAAAnkD,QAAAyN,kBACAzN,UAEA1O,QAGA+xD,eAAAtqD,UAAAqrD,gBAAA,WACA,MAAA9yD,MAAAkP,GAAAC,SAAA4jD,YAAA/yD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAA8lC,OACA,GAAAmd,OAaA,OAZAA,WACAryD,EAAAglD,QAAA51C,MAAA/E,MAAAgoD,OAAA,SAAAvN,MAAA99B,QACA,GAAA4rC,KAOA,OANAA,MAAA5yD,EAAAC,IAAAi1C,MAAA,SAAAyd,aACA,MAAAA,aAAA3rC,UAEA89B,MAAA9kD,EAAAm+B,OAAAy0B,KAAA,SAAAC,IAAA34B,IACA,MAAA24B,KAAA34B,KAEA9qB,MAAA/E,MAAAgoD,OAAArrC,QAAA89B,QAEA11C,MAAA/E,MAAA6qC,MAAA9lC,MAAA0jD,aAAA5d,OACA9lC,MAAA/E,MAAA6qC,MAAAmd,OAAAjjD,MAAA/E,MAAAgoD,SAEAzyD,QAGA+xD,eAAAtqD,UAAA0rD,YAAA,SAAAC,MACA,GAAA54B,KAAAC,IAAA44B,UAaA,OAZA74B,KAAAp6B,EAAAo6B,IAAA44B,MACA34B,IAAAr6B,EAAAq6B,IAAA24B,MACAC,WAAAjzD,EAAAC,IAAA+yD,KAAA,SAAA7oD,MAAAhD,KACA,MAAAgD,SAAAkwB,KACAlzB,IAAA,IAEAgD,QAAAiwB,KACAjzB,IAAA,IAEAA,IAAA,GAAAgD,MAAAiwB,OAEA64B,WAAAjzD,EAAA8J,OAAAmpD,aAIAtB,eAAAtqD,UAAAyrD,aAAA,SAAA5d,OACA,GAAA/tC,KAAAgD,KACA,KAAAhD,MAAA+tC,OACA/qC,MAAA+qC,MAAA/tC,KACA+tC,MAAA/tC,KAAAvH,KAAAmzD,YAAA5oD,MAEA,OAAA+qC,QAGAyc,eAAAtqD,UAAAiZ,gBAAA,WACA,GAAA1R,QAEA,OADAA,SAAAhP,KAAAqtB,cACAre,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAd,SAEA,MADAc,OAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAyB,MAAA8iD,cAAA/iD,KAAA,WACA,MAAAC,OAAAsjD,sBAGA9yD,QAGA+xD,gBAEA9oD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,iBAAA6wC,gBAEAC,qBAAA,WACA,OACAjwD,YAAA,0BAIAlC,OAAA4T,UAAA,iBAAAu+C,uBAEAE,yBAAA,WACA,OACAnwD,YAAA,8BACA0I,OACA6qC,MAAA,IACAluB,OAAA,QACAurC,cAAA,iBACAC,aAAA,gBACAC,YAAA,kBAKAhzD,OAAA4T,UAAA,oBAAAy+C,0BAEAD,+BAAA,WACA,OACAlwD,YAAA,qCACA0I,OACA4E,UAAA,aACAkjD,YAAA,eACAjd,MAAA,IACAqd,cAAA,iBACAC,aAAA,gBACAC,YAAA,kBAKAhzD,OAAA4T,UAAA,oBAAAw+C,gCAEAE,qBAAA,WACA,GAAA9+C,SAEA,OADAA,UAAA,0BAEAtR,YAAAsR,SACA5I,OACAkE,YAAA,IACAunC,SAAA,YACAmc,YAAA,eACA/c,MAAA,IACAqd,cAAA,iBACAC,aAAA,gBACAC,YAAA,kBAKAhzD,OAAA4T,UAAA,gBAAA0+C,sBAEAL,sBAAA,SAAA17C,MAAA7R,SAAAjB,UAAAgjB,IAAA9M,UACA,GAAA7F,KAoBA,OAnBAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAhH,QAAA0/C,MAAA,WACA,MAAA/uD,UAAAu0B,IAAA,qBAAA,+CAAAvpB,KAAA,WACA,MAAA,UAAA2Q,QACA,GAAAlR,QAOA,OANAA,SAAAsX,IAAAnX,SAAAmkD,MAAA14C,OAAA24C,WACAvkD,QAAAO,KAAA,WAGA,MAFA2Q,UACA3b,SAAAI,OAAA,WACArB,UAAAQ,KAAA0V,SAAAxX,QAAA,WAEAgN,QAAAO,KAAA,KAAA,SAAA7L,UAEA,MADAwc,UACA3b,SAAAI,OAAA,QAAAjB,SAAAe,KAAAuQ,oBAGAhV,UAIAyK,SACA1I,YAAA,0BACA4R,KAAAA,OAIA9T,OAAA4T,UAAA,kBAAA,UAAA,aAAA,cAAA,eAAA,aAAAq+C,wBAEAjyD,OAAAqO,OAAA,oBAAA,WACA,MAAA,UAAAlB,MAAAqlD,aACA,MAAA,OAAAA,YACAjyD,EAAA8N,OAAAlB,OACA0xB,KAAA2zB,YAAA7jD,KAGAxB,UAIAlG,KAAA9G,MAlQA,WACA,GAAAwzD,8BAAAC,qBAAAC,qBAAA/qD,SAAAE,SAAAE,QAAAE,MAAApJ,OAAAE,MAAA2J,UACAxC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAF,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAe,UAAA1J,KAAAD,MAAA2J,UAEAb,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,aAEA4zD,qBAAA,SAAAxrD,YAKA,QAAAwrD,sBAAAhpD,MAAAuG,UAAA4b,KAAA1b,MAAAsgB,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAA8F,OAAAV,IAAAqf,SAAAxkB,QAAAisC,UAAAlzB,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAkR,MAAAA,MACAlR,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAkO,OAAAA,OACAlO,KAAAwN,IAAAA,IACAxN,KAAA6sB,SAAAA,SACA7sB,KAAAqI,QAAAA,QACArI,KAAAs0C,UAAAA,UACAt0C,KAAAyK,MAAAkpD,YAAA3zD,KAAAqC,OAAAC,MACAtC,KAAAyK,MAAAmpD,SAAA5zD,KAAAqC,OAAA2Z,KACAhc,KAAAyK,MAAAmZ,YAAA,OACA5U,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,UAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YA4FA,MA1HAhmB,QAAAusD,qBAAAxrD,YAEAwrD,qBAAApiD,SAAA,SAAA,aAAA,UAAA,WAAA,aAAA,eAAA,eAAA,KAAA,cAAA,UAAA,OAAA,YAAA,aAAA,eAAA,YA+BAoiD,qBAAAhsD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAme,UAAAttB,KAAAqC,OAAAC,OAAAiN,KAAA,SAAAC,OACA,MAAA,UAAAd,SAUA,MATAA,SAAAyN,mBACA3M,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAA4E,UAAAX,QAAAF,GACAgB,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAAojB,YAAA9kB,QAAA2F,QAAAC,YAAA,SAAArO,GACA,MAAAA,GAAA6N,OAEAO,UAEA1O,QAGAyzD,qBAAAhsD,UAAAosD,SAAA,WACA,GAAA7kD,QASA,OARAA,SAAAhP,KAAAkP,GAAAwZ,KAAA4E,UAAAttB,KAAAyK,MAAA4E,UAAArP,KAAAqC,OAAA2Z,MACAhN,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAkZ,MAGA,MAFAlZ,OAAA/E,MAAAie,KAAAA,KACAlZ,MAAA/E,MAAAqpD,OAAAprC,KAAAla,GACAgB,MAAA/E,MAAAie,OAEA1oB,OACAgP,QAAAO,KAAA,KAAA,SAAAC,OACA,MAAA,YACA,GAAA/K,KAEA,OADA+K,OAAA/E,MAAAqpD,OAAA,KACA,KAAAtkD,MAAA/E,MAAAiE,QAAAgM,eAAA/Q,QAAA,iBACA,MAEAlF,MACAiK,QAAAc,MAAA/E,MAAA4E,UACA2M,KAAAxM,MAAA/E,MAAAmpD,SACA9V,QAAA,IAEAtuC,MAAA/E,MAAAie,KAAAlZ,MAAA0B,MAAAM,WAAA,OAAA/M,MACA+K,MAAA/E,MAAAie,QAEA1oB,QAGAyzD,qBAAAhsD,UAAAssD,cAAA,WACA,MAAA/zD,MAAAkP,GAAAwZ,KAAAsrC,UAAAh0D,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAykD,WACA,MAAAzkD,OAAA/E,MAAAwpD,UAAAA,YAEAj0D,QAGAyzD,qBAAAhsD,UAAAiZ,gBAAA,WACA,GAAA1R,QAEA,OADAA,SAAAhP,KAAAqtB,cACAre,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAAd,SAEA,MADAc,OAAA3B,kBAAAa,QAAAZ,MAAAY,QAAAX,OACAyB,MAAAlH,EAAA2G,KAAAO,MAAAukD,gBAAAvkD,MAAAqkD,eAEA7zD,QAGAyzD,qBAAAhsD,UAAA,UAAA,WACA,GAAAiX,SAAAmH,KAGA,OAFAA,OAAA,mBACAnH,QAAAhV,UAAA1J,KAAAyK,MAAAie,KAAA1M,MACAhc,KAAAwxB,QAAA1L,YAAAD,MAAAnH,SAAAnP,KAAA,SAAAC,OACA,MAAA,UAAA0Q,QACA,GAAApM,SAAAC,SAcA,OAbAA,WAAA,WACA,GAAAgI,IAMA,OALAmE,UACAnE,KACArN,QAAAc,MAAA/E,MAAAkpD,aAEAnkD,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,eAAA+Z,MACAvM,MAAAgiB,QAAA7sB,OAAA,YAEAmP,QAAA,WAEA,MADAoM,SAAA,GACA1Q,MAAAgiB,QAAA7sB,OAAA,UAEA6K,MAAAod,KAAA5a,OAAAxC,MAAA/E,MAAAie,MAAAnZ,KAAAwE,UAAAD,WAEA9T,QAGAyzD,sBAEAxqD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,uBAAAuyC,sBAEAC,qBAAA,SAAA7tD,KAAAyb,WACA,GAAA3N,MAAAN,QAwCA,OAvCAA,UAAAiO,UAAAne,IAAA,0BAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OAiCA,OAhCAA,QAAA,SAAAkO,MACA,GAAA3M,KAAAyG,KAAArU,IAuBA,OAtBA,OAAAyF,OAAAnF,UACA5I,KAAAgR,MAAA,wDAEA1I,KAAAyF,OAAAnF,UAAAia,KAAAwrC,eAGA/lD,KADA,SAAAA,MAEA/C,KAAA,UACA+oD,OAAA,wBAIA/oD,KAAA+C,KAAA8Y,kBACAktC,OAAAhmD,KAAA6Y,OAGAjL,KACAq4C,cAAA1rC,KAAA2rC,SACAC,iBAAA1/B,OAAAlM,KAAA6rC,eAAA1/B,OAAA,qBACA1mB,KAAAA,MAEAqU,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,OAEA5O,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAyuC,UACA,MAAAA,UAGAh6C,OAAAg6C,UAHA,SAKA5gD,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,iBAAA,OAAA,cAAAigD,uBAEAF,6BAAA,SAAA98C,QAAA0D,UAAAhE,MAAA7R,SAAAsb,SAAA1Z,WAAA4xB,SACA,GAAApkB,KAoHA,OAnHAA,MAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAAo+C,eAAAC,eAAAC,gBAAA18B,WAAA1S,KAAAqvC,iBAAAC,gBA8GA,OA7GA58B,YAAA,WACA,MAAA,KAAArkB,OAAAlF,QAAAgM,eAAA/Q,QAAA,qBAEAirD,iBAAA,WAGA,MAFA/gD,KAAAU,KAAA,sBAAAqO,OACA/O,IAAAU,KAAA,sBAAA4N,OACAtO,IAAAU,KAAA,YAAA6L,SAEAy0C,iBAAA,WAEA,MADAhhD,KAAAU,KAAA,sBAAA4N,OACAtO,IAAAU,KAAA,sBAAAqO,QAEA8xC,eAAA,WAEA,MADA7gD,KAAAU,KAAA,4BAAAvC,SACA6B,IAAAU,KAAA,sBAAAvC,UAEAyiD,cAAA,WACA,MAAAp+C,QAAAmP,YAAAhX,IAGAoF,OAAAtH,OAAA,WACA,MAAA,YACA,MAAA+J,QAAAmP,YAAA4N,WAEApzB,OACA60D,oBARA,QAUAF,gBAAA,WACA,MAAAj+C,SAAA2D,aACA3D,QAAA2D,eAAA9Q,WACA6Q,UAAAE,UACAF,UAAAE,UAAAC,cAAA5O,KAEA,MAEA4Z,KAAAwS,QAAAhb,QAAA,SAAA2L,MACA,GAAA5U,SAAAC,UAAA/E,OAkBA,OAjBA+E,WAAA,SAAAygD,UAMA,MALA,OAAA9rC,KAAAla,IACArI,WAAA4O,WAAA,WAAA,SAAA,mBAAA,GAEAsB,OAAAiiB,cAAAk8B,UACAjwD,SAAAI,OAAA,WACAkwD,oBAEA/gD,QAAA,WACA,MAAAvP,UAAAI,OAAA,UAEAkb,SAAAE,MAAAlM,IAAAU,KAAA,oBAEAvF,QADA,MAAA0Z,KAAAla,GACA4H,MAAAmP,KAAAmD,MAAAnZ,KAAAwE,UAAAD,SAEAsC,MAAA4J,OAAA,OAAA0I,MAAAnZ,KAAAwE,UAAAD,SAEA9E,QAAA,WAAA,WACA,MAAA6Q,UAAAK,OAAArM,IAAAU,KAAA,wBAGAV,IAAAc,GAAA,YAAA,qBAAA,SAAAT,OACA,GAAA6O,OACAA,QAAApc,QAAA6E,QAAA0I,MAAA6O,QACAkV,cAGA,IAAA/jB,MAAA4gD,SAIAjhD,IAAAc,GAAA,UAAA,qBAAA,SAAAT,OACA,GAAA6O,OAEA,OADAA,QAAApc,QAAA6E,QAAA0I,MAAA6O,QACA4xC,oBAGA18B,cAGAlV,OAAAjB,GAAA,MAGAiB,OAAAjB,GAAA,OATA,OAYA8yC,qBAEA/gD,IAAAc,GAAA,QAAA,QAAA9L,SAAA,IAAA,WACA,MAAA0c,MAAA3R,OAAA8U,SAEA7U,IAAAc,GAAA,QAAA,UAAA,WACA,MAAA8/C,mBAEA5gD,IAAAc,GAAA,UAAA,WAAA,SAAAT,OACA,MAAA,MAAAA,MAAAsI,QACAi4C,gBADA,SAIA7gD,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAyuC,UACA,MAAAA,UAGAv8B,cACApkB,IAAAgH,SAAA,YACA,MAAA25C,SAAAhmD,GACAomD,mBADA,QAIAF,iBATA,SAYA9gD,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAH,SAAA,KACA4P,QAAA,UACArhB,YAAA,oCAIAlC,OAAA4T,UAAA,yBAAA,UAAA,YAAA,UAAA,aAAA,aAAA,eAAA,YAAA+/C,gCAEA1sD,KAAA9G,M5BrUA,WACA,GAAA+0D,kBAAApsD,SAAAI,QAAAE,MAAApJ,OAAAuJ,QAAArJ,MAAA2J,SAEA3J,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAF,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAS,QAAApJ,KAAAD,MAAAqJ,QAEAM,UAAA1J,KAAAD,MAAAqJ,QAEAvJ,OAAA8G,QAAA9G,OAAA,aAEAk1D,iBAAA,SAAAzuB,QAAAzgC,KAAAvC,UAAAiB,SAAAhB,SAAA4C,WAAA0Z,SAAAyB,WACA,GAAA3N,MAAAN,QA0HA,OAzHAA,UAAAiO,UAAAne,IAAA,sBAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAA9H,MAEA,OADA8H,OAAAzO,IAAAqN,aACA,MAAAtG,OAAAmL,QACAlgB,KAAAgR,MAAA,kDAEA2D,OAAA,SAAAy5C,WACA,GAAAe,uBAAAC,yBAAAzyC,IA6DA,OA5DAwyC,uBAAAphD,OAAAlF,QAAAgM,eAAA/Q,QAAA,iBAAA,GACAsrD,yBAAArhD,OAAAlF,QAAAgM,eAAA/Q,QAAA,oBAAA,GACA6Y,KAAAnP,UACA4gD,UAAAA,UACAN,YAAA//C,OAAA+/C,YACAqB,sBAAAA,sBACAC,yBAAAA,2BAEAphD,IAAAmH,MACAnH,IAAA2O,KAAAA,MACA3O,IAAAc,GAAA,QAAA,yBAAA,SAAAT,OACA,GAAAghD,QAAAC,SAAApyC,MAKA,OAJA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAkyC,OAAAnyC,OAAA+hB,QAAA,cAAArgC,KAAA,MACA0wD,SAAAvhD,OAAAqgD,UAAAiB,QAAAE,KACAxhD,OAAAtH,OAAA,WACA,GAAAyP,IAKA,OAJAA,MACArN,QAAAkF,OAAA+/C,YACA33C,KAAAm5C,UAEA7xD,UAAAQ,KAAAP,SAAAvB,QAAA,oBAAA+Z,UAGAlI,IAAAc,GAAA,QAAA,cAAA,SAAAT,OAIA,MAHAA,OAAAG,iBACAR,IAAAU,KAAA,QAAAoG,YAAA,UACA9G,IAAAU,KAAA,cAAA6L,QACAvM,IAAAU,KAAA,eAAA4N,SAEAtO,IAAAc,GAAA,QAAA,0BAAA,SAAAT,OACA,GAAAghD,QAAAx2C,QAAAqE,OAAA8C,KAOA,OANA3R,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAkyC,OAAAnyC,OAAA+hB,QAAA,cAAArgC,KAAA,MACAohB,MAAA,mBACAnH,QAAA9K,OAAAqgD,UAAAiB,QAAArvC,MACAthB,SAAAuhB,YAAAD,MAAAnH,SAAAnP,KAAA,WACA,MAAA,UAAA2Q,QACA,GAAAlR,QAYA,OAXAA,SAAAs3B,QAAAt0B,OAAA4B,OAAAqgD,UAAAiB,SACAlmD,QAAAO,KAAA,WAMA,MALAP,SAAAsT,MAAAyxC,gBACA/kD,QAAAO,KAAA,WAEA,MADA2Q,UACA1F,OAAA5G,OAAAqgD,aAEAjlD,QAAAO,KAAA,KAAA,WACA,MAAA2Q,cAGAlR,QAAAO,KAAA,KAAA,WAEA,MADA2Q,SAAA,GACA3b,SAAAI,OAAA,aAGA3E,SAEA6T,IAAAc,GAAA,QAAA,aAAA,SAAAT,OACA,GAAAmhD,SAAArmD,QAAA+T,MAEA,OADA7O,OAAAG,iBACA,KAAAH,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAqyC,QAAAtyC,OAAA/d,MACA6a,SAAAE,MAAAlM,IAAAU,KAAA,SACAvF,QAAAs3B,QAAAtmB,OAAA,cACAtR,QAAAkF,OAAAvE,UACAwW,MAAAwvC,QACAD,KAAAhsD,QAAAisD,WAEArmD,QAAAO,KAAA,WACA,GAAAsgD,YAUA,OATA1pD,YAAA4O,WAAA,WAAA,SAAA,mBAAA,GACA86C,YAAAvtC,MAAAyxC,gBACAlE,YAAAtgD,KAAA,WAKA,MAJAsQ,UAAAK,OAAArM,IAAAU,KAAA,SACAV,IAAAU,KAAA,QAAAsG,SAAA,UACAhH,IAAAU,KAAA,cAAAvP,IAAA,IACA6O,IAAAU,KAAA,eAAAqO,OACApI,OAAA5G,OAAAqgD,aAEApE,YAAAtgD,KAAA,KAAA,WAKA,MAJAsQ,UAAAK,OAAArM,IAAAU,KAAA,SACAV,IAAAU,KAAA,QAAAsG,SAAA,UACAhH,IAAAU,KAAA,cAAAvP,IAAA,IACA6O,IAAAU,KAAA,eAAAqO,OACAre,SAAAI,OAAA,QAAA,gCAGAqK,QAAAO,KAAA,KAAA,SAAAsH,OACA,GAAAxL,IAIA,OAHAwU,UAAAK,OAAArM,IAAAU,KAAA,SACAV,IAAAU,KAAA,cAAAvP,IAAAqwD,SACAxhD,IAAAU,KAAA,cAAA6L,QAAAwF,SACA,OAAA,MAAA/O,OAAA,OAAAxL,IAAAwL,MAAA08B,SAAAloC,IAAA,GAAA,QACA9G,SAAAI,OAAA,QAAA,2BAEAJ,SAAAI,OAAA,YAGA,KAAAuP,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAnP,IAAAU,KAAA,QAAAsG,SAAA,UACAhH,IAAAU,KAAA,cAAAvP,IAAA,IACA6O,IAAAU,KAAA,eAAAqO,QAJA,UAQAja,SAAAiL,OAAAgH,OAAAmL,QAAAvL,WAGA7G,KAAAA,OAIA9T,OAAA4T,UAAA,aAAA,UAAA,OAAA,cAAA,aAAA,aAAA,eAAA,aAAA,cAAAshD,oBAEAjuD,KAAA9G,MqBnJA,WACA,GAAAs1D,wBAAAC,yBAAA1sD,SAAAhJ,OAAAE,KAEAA,OAAAC,KAAAD,MAEA8I,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,eAEA01D,yBAAA,EAEAD,uBAAA,SAAAhvC,IAAAgX,WAAA/4B,SAAAsb,SAAAib,iBACA,GAAA06B,mBAAA7hD,KAAAN,QAqGA,OApGAmiD,mBAAA,yNACAniD,SAAAjT,EAAAiT,SAAA,yiBACAM,KAAA,SAAAC,OAAAC,KACA,GAAA4hD,gBAAAC,UAAA1hD,OAAA8L,YA+FA,OA9FA21C,gBAAA,SAAAE,UACA,GAAA55C,IAQA,OAPA,OAAA45C,WACAA,UAAA,GAEA55C,KACA65C,SAAAhiD,OAAA7F,MACA4nD,SAAAA,UAEAtiD,SAAA0I,MAEA25C,UAAA,WACA,GAAAG,UAAAjjD,WAMA,OALAiB,KAAAU,KAAA,iBAAAvC,OAAA,IACA6B,IAAAU,KAAA,4BAAAvC,SACAY,YAAAiB,IAAAU,KAAA,qBACA3B,YAAA4P,KAAAgzC,mBACAK,SAAAJ,iBACA7iD,YAAAkjD,QAAAD,WAEAjiD,OAAAmH,IAAA,kBAAA,WAEA,MADA26C,aACA56B,gBAAA3a,KAAAtM,OAEAD,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAnH,IAAAc,GAAA,QAAA,mBAAA,SAAAT,OACA,GAAA2hD,UAAAE,iBAAAhzC,MAMA,OALA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA6yC,SAAA9yC,OAAAoc,QAAA,uBACA02B,SAAA7jD,SACA+jD,iBAAAliD,IAAAU,KAAA,qBACAwhD,iBAAApzC,SAAA,+BACAozC,iBAAAp7C,YAAA,+BAAAE,SAAA,0BADA,SAIAhH,IAAAc,GAAA,QAAA,gBAAA,SAAAT,OACA,GAAA2hD,UAAAG,YAAAjzC,MAOA,OANA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA6yC,SAAA9yC,OAAAoc,QAAA,uBACApc,OAAApI,YAAA,0BAAAE,SAAA,+BACAm7C,YAAAP,gBAAA,GACAI,SAAAnV,MAAAsV,aACAniD,IAAAU,KAAA,uBAAA/O,SAAA+vD,yBACA1hD,IAAAU,KAAA,yCAAAoG,YAAA,0BAAAE,SAAA,+BADA,SAIA7G,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAC,MAAA8hD,sBAAArjD,YAAAsjD,eAAApiD,QAAAC,SAkBA,OAjBAG,OAAAG,iBACAwL,SAAAE,MAAAD,cACA/L,UAAA,WAIA,MAHA8L,UAAAK,OAAAJ,cACAgb,gBAAAtc,MAAA3K,KACAtP,SAAAI,OAAA,WACA24B,WAAA3rB,WAAA,4BAEAmC,QAAA,WAIA,MAHA+L,UAAAK,OAAAJ,cACAgb,gBAAAtc,MAAA3K,KACAtP,SAAAI,OAAA,SACA24B,WAAA3rB,WAAA,0BAEAwC,KAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAgiD,UACAhiD,KAAA/N,aACA+N,KAAAK,YAGA0hD,eAAAriD,IAAAU,KAAA,4BACA2hD,eAAA91D,EAAA8N,OAAAgoD,eAAA,SAAAE,IACA,MAAAzvD,SAAA6E,QAAA4qD,IAAA7hD,KAAA,SAAAoO,SAAA,kBAEA/P,YAAAxS,EAAAC,IAAA61D,eAAA,SAAAE,IACA,GAAAjhD,OAAAkhD,cAAA33B,IAIA,OAHA23B,eAAA1vD,QAAA6E,QAAA4qD,IACAjhD,MAAAkhD,cAAA9hD,KAAA,SACAmqB,KAAA23B,cAAA9hD,KAAA,WAEAY,MAAAA,MAAAnQ,MACAsxD,QAAA53B,KAAA15B,SAGA4N,YAAApN,QACAywD,sBAAApiD,IAAAU,KAAA,iBAAAvP,MACAshB,IAAA3X,YAAA4nD,sBAAA3iD,OAAAlF,QAAAF,GAAAoE,YAAAqjD,uBAAA1mD,KAAAwE,UAAAD,UAFA,QAjBA,SAsBA9T,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,qBAAA,eAAA,aAAA,aAAA,aAAA,kBAAA6hD,0BAEAxuD,KAAA9G,MaxHA,WACA,GAAAw2D,uBAAAC,qBAAAC,+BAAAC,qCAAAC,8BAAAC,oCAAAnuD,YAAAO,MAAApJ,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAP,YAAA1I,KAAAD,MAAA2I,YAEA7I,OAAA8G,QAAA9G,OAAA,cAEA22D,sBAAA,SAAAvuD,YAKA,QAAAuuD,uBAAA/rD,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAisC,UAAAznB,UACA,GAAA7d,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAAs0C,UAAAA,UACAt0C,KAAA6sB,SAAAA,SACAnkB,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,iBACA5jB,KAAAyK,MAAAiE,WACA1O,KAAAyK,MAAAyF,WACAlB,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,gBAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAA,KAAAyK,MAAAsQ,IAAA,0BAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAA8iD,cACA9iD,MAAA8kC,UAAAv/B,WAAA,aAAA,SAAA,8BAAA,KAEA/U,OAsEA,MAvGAkH,QAAAsvD,sBAAAvuD,YAEAuuD,sBAAAnlD,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,aAAA,eAAA,aAkCAmlD,sBAAA/uD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAMA,MALAA,SAAAooD,YACAtnD,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA;GAEA1O,QAGAw2D,sBAAA/uD,UAAA6qD,YAAA,WACA,GAAAyE,YAEA,OADAA,aAAA/2D,KAAAq2C,gBACAr2C,KAAAkP,GAAAP,YAAA8X,KAAAzmB,KAAAyK,MAAA4E,UAAA0nD,aAAAxnD,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAOA,MANA+K,OAAA/E,MAAAkE,YAAAvO,EAAA8N,OAAAzJ,KAAAqpD,OAAA,SAAA0E,YACA,MAAA,QAAAA,WAAArkD,MAAAqkD,WAAAE,iBAEAljD,MAAA/E,MAAAwmB,KAAAxsB,KAAAspD,QACAv+C,MAAA/E,MAAAiuC,MAAAj0C,KAAAi0C,MACAlpC,MAAA/E,MAAAujD,YAAAvpD,KAAAupD,YACAvpD,OAEAzE,QAGAw2D,sBAAA/uD,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAT,sBAEA/O,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA8iD,gBAEAtyD,QAGAw2D,sBAAA/uD,UAAA4uC,cAAA,WACA,GAAAnmC,QAKA,OAJAA,SAAA9P,EAAAg4C,KAAAp4C,KAAAoI,SAAAnE,SAAA,QACAiM,QAAA+gB,OACA/gB,QAAA+gB,KAAA,GAEA/gB,SAGAsmD,sBAAA/uD,UAAAuvD,cAAA,WACA,MAAAh3D,MAAAgR,UAAAW,WAAA,oBAGA6kD,uBAEAvtD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,wBAAAs1C,uBAEAC,qBAAA,SAAAn1C,WACA,GAAA3N,MAAA66C,eAAAn7C,QAsGA,OArGAA,UAAAiO,UAAAne,IAAA,yCAAA,GACAqrD,eAAA,SAAA56C,OAAAC,IAAA+G,OAAA0H,OACA,GAAAmsC,QAAAC,aAAAC,QAAAC,MAAAC,cAAAC,YAAAC,gBAgFA,OA/EAL,cAAA,EACAG,cAAA,EACAF,QAAA,EACAC,MAAA,EACAH,OAAA56C,IAAAU,KAAA,0BACAu6C,YAAA,WACA,GAAAE,SAOA,OANAA,UAAAp7C,OAAA8kC,MAAA9kC,OAAAo6C,YAEAgB,SADA1yC,SAAA0yC,SAAA,IAAAA,SACA1yC,SAAA0yC,SAAA,IAAA,EAEA1yC,SAAA0yC,SAAA,KAIAD,iBAAA,WACA,GAAAE,OAAAplD,EAAAspB,EAAA67B,SAAA/S,QAAAiT,MAAA7jD,GAEA,IADA2jD,SAAAF,cACA,GAAAE,SAEA,WADAP,QAAAtsC,MASA,KANA+sC,SACAjT,WACAA,QAAAiT,MAAAA,MACAjT,QAAAkT,aAAAv7C,OAAAqd,KAAA,EACAgrB,QAAAmT,WAAAx7C,OAAAqd,OAAA+9B,UACAC,MAAAr7C,OAAAqd,KACApnB,EAAAspB,EAAA,EAAA9nB,IAAA2jD,SAAA3jD,KAAA,EAAAA,KAAA8nB,EAAAA,GAAA9nB,IAAAxB,EAAAwB,KAAA,IAAA8nB,IAAAA,EACAtpB,IAAAolD,MAAAP,cAAAM,SAAAC,MAAAP,aAAAE,MACAM,MAAA5qD,MACAgX,QAAA,OACAhJ,KAAA,SAEAzI,IAAAolD,MAAAJ,eAAAI,MAAAN,QAAAE,cACAK,MAAA5qD,MACAgX,QAAA,OACAhJ,KAAA,SAEAzI,EAAAolD,MAAAP,cAAAM,SAAAJ,OAAA/kD,GAEAolD,MAAAJ,cAAAhlD,GAAAA,EAAA8kD,SAGAO,MAAA5qD,KADAuF,IAAAolD,OAEA3zC,QAAA,SACAmjB,IAAA50B,EACAyI,KAAA,gBAIAgJ,QAAA,OACAmjB,IAAA50B,EACAyI,KAAA,QAIA,OAAAm8C,QAAAjsC,KAAAnP,SAAA4oC,WAEAroC,OAAA9I,OAAA,cAAA,SAAAP,OACA,MAAAA,OAGAwkD,mBAHA,SAKAl7C,IAAAc,GAAA,QAAA,gCAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAT,OAAAtH,OAAA,WAEA,MADAgW,OAAA5S,aAAA,OAAAkE,OAAAqd,KAAA,GACA3O,MAAAgwC,kBAGAz+C,IAAAc,GAAA,QAAA,oCAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAT,OAAAtH,OAAA,WAEA,MADAgW,OAAA5S,aAAA,OAAAkE,OAAAqd,KAAA,GACA3O,MAAAgwC,kBAGAz+C,IAAAc,GAAA,QAAA,qCAAA,SAAAT,OACA,GAAAm7C,SAAAtsC,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAqsC,QAAAtsC,OAAAte,KAAA,WACAmP,OAAAtH,OAAA,WAEA,MADAgW,OAAA5S,aAAA,OAAA2/C,SACA/sC,MAAAgwC,mBAIA3+C,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,MAGA,OAFAA,OAAAzO,IAAAqN,aACAstC,eAAA56C,OAAAC,IAAA+G,OAAA0H,OACA1O,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,iBAAA,cAAAgjD,uBAEAG,8BAAA,SAAA/wD,KAAAyb,WACA,GAAA3N,MAAAN,QAuBA,OAtBAA,UAAAiO,UAAAne,IAAA,qCAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAkM,QAAAtM,MAWA,OAVAA,QAAA,SAAAsM,QACA,GAAA/K,KAAAyG,IAOA,OANAzG,MACA8d,UAAA/S,OAAA+S,UAAA/S,OAAA+S,UAAA,GACA1kB,MAAA2R,OAAAmwC,WAAAnwC,OAAAmwC,WAAAnwC,OAAA3R,MACA4R,OAAAD,OAAAE,MAAAF,OAAAE,MAAA,uBAEAxE,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,OAEA,MAAA5H,OAAAs8C,uBACArxD,KAAAgR,MAAA,+DAEAiQ,OAAAlT,OAAA/I,MAAA+P,OAAAs8C,wBACA18C,OAAAsM,QACAlT,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,WAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,0BAAA,OAAA,cAAAmjD,gCAEAD,qCAAA,SAAA9wD,KAAAuQ,MAAA7R,SAAA+c,WACA,GAAA3N,MAAAN,QAwCA,OAvCAA,UAAAiO,UAAAne,IAAA,6CAAA,GACAwQ,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA4H,MAAAsE,OAAAtM,MASA,OARAA,QAAA,SAAAsM,QACA,GAAA/K,KAAAyG,IAKA,OAJAzG,MACAo7C,QAAA,YAAArwC,OAAAtY,IAEAgU,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,OAEA,MAAA5H,OAAAw8C,8BACAvxD,KAAAgR,MAAA,sEAEAiQ,OAAAlT,OAAA/I,MAAA+P,OAAAw8C,+BACA50C,KAAAhI,OAAAsM,QACAA,OAAAuwC,UACAxjD,IAAAU,KAAA,aAAA0O,KAAA,WAAA,GAEApP,IAAAc,GAAA,QAAA,YAAA,WACA,MAAA,UAAAT,OACA,GAAAJ,SAAAC,UAAAgP,MAWA,OAVAhP,WAAA,WACA,MAAAxP,UAAAI,OAAA,YAEAmP,QAAA,SAAArP,MAGA,MAFAqiB,QAAAsM,SACAvf,IAAAU,KAAA,aAAA0O,KAAA,UAAA6D,OAAAuwC,UACA9yD,SAAAI,OAAA,QAAAF,KAAA4yD,SAAA,KAEAt0C,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA8D,OAAAuwC,SAAAt0C,OAAAE,KAAA,WACA7M,MAAAmP,KAAAuB,QAAAvX,KAAAwE,UAAAD,WAEA9T,OACA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,WAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,iCAAA,OAAA,UAAA,aAAA,cAAAkjD,uCAEAE,oCAAA,SAAAhxD,KAAAuQ,MAAA7R,UACA,GAAAoP,MAAAN,QAwCA,OAvCAA,UAAAjT,EAAAiT,SAAA,+NACAM,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAAE,KAAAsE,OAAAtM,MAUA,OATAA,QAAA,SAAAsM,QACA,GAAA/K,KAAAyG,IAMA,OALAzG,MACA65C,SAAAhiD,OAAA7F,MACAupD,aAAAxwC,OAAA4X,MAEAlc,KAAAnP,SAAA0I,KACAlI,IAAA2O,KAAAA,OAEA,MAAA5H,OAAA28C,6BACA1xD,KAAAgR,MAAA,qEAEAyL,MAAAzO,IAAAqN,aACA4F,OAAAlT,OAAA/I,MAAA+P,OAAA28C,8BACA/0C,KAAAhI,OAAAsM,QACAjT,IAAAc,GAAA,SAAA,SAAA,WACA,MAAA,UAAAT,OACA,GAAAsjD,SAAA1jD,QAAAC,UAAAgP,MASA,OARAhP,WAAA,WACA,MAAAxP,UAAAI,OAAA,YAEAmP,QAAA,WACA,MAAAvP,UAAAI,OAAA,UAEAoe,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAw0C,QAAAl7C,SAAAyG,OAAA/d,MAAA,IACA8hB,OAAA4X,OAAA84B,SACA1wC,OAAA4X,KAAA84B,QACAphD,MAAAmP,KAAAuB,QAAAvX,KAAAwE,UAAAD,UAFA,SAKA9T,OACA4T,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,WAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,gCAAA,OAAA,UAAA,aAAAojD,sCAEAH,+BAAA,SAAA7wD,KAAAuQ,MAAAkQ,IAAA/hB,UACA,GAAAkzD,iBAAA9jD,KAAA+jD,eAsDA,OArDAD,iBAAAr3D,EAAAiT,SAAA,0HACAqkD,gBAAAt3D,EAAAiT,SAAA,2LACAM,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAAwE,OAAAtM,MAUA,OATAA,QAAA,SAAAsM,QACA,GAAAtE,KAMA,OAJAA,MADAsE,OAAA3Y,KACAspD,kBAEAC,kBAEA7jD,IAAA2O,KAAAA,OAEA,MAAA5H,OAAA+8C,wBACA9xD,KAAAgR,MAAA,gEAEAyL,MAAAzO,IAAAqN,aACA4F,OAAAlT,OAAA/I,MAAA+P,OAAA+8C,yBACAn9C,OAAAsM,QACAjT,IAAAc,GAAA,QAAA,WAAA,SAAAT,OACA,GAAAJ,SAAAC,SAQA,OAPAG,OAAAG,iBACAN,UAAA,WACA,MAAAxP,UAAAI,OAAA,UAAA,wCAAAiP,OAAAkT,OAAA3R,MAAA,OAEArB,QAAA,WACA,MAAAvP,UAAAI,OAAA,QAAA,oCAEA2hB,IAAA3X,YAAAipD,iBAAAhkD,OAAAkT,OAAAtY,IAAAe,KAAAwE,UAAAD,WAEAD,IAAAc,GAAA,QAAA,UAAA,SAAAT,OACA,GAAAwK,SAAAmH,KAIA,OAHA3R,OAAAG,iBACAwR,MAAA,gBACAnH,QAAAoI,OAAA3Y,KAAA2Y,OAAA+S,UAAA,qBAAA/S,OAAA3R,MACA5Q,SAAAuhB,YAAAD,MAAAnH,SAAAnP,KAAA,SAAA2Q,QACA,GAAApM,SAAAC,SAUA,OATAA,WAAA,WAGA,MAFAmM,UACAoC,MAAAgwC,cACA/tD,SAAAI,OAAA,UAAA,KAAA,iBAAA+Z,QAAA,MAEA5K,QAAA,WAEA,MADAoM,SAAA,GACA3b,SAAAI,OAAA,QAAA,KAAA,mCAAA+Z,QAAA,MAEAtI,MAAApE,OAAA8U,QAAAvX,KAAAwE,UAAAD,aAGAF,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,WAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,2BAAA,OAAA,UAAA,eAAA,aAAAijD,kCAEA5vD,KAAA9G,MlCtaA,WACA,GAAA63D,0BAAAh4D,MAEAg4D,0BAAA,WACA,GAAAlkD,KAUA,OATAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAqJ,QAIA,OAHAA,SAAArJ,OAAAk9C,kBACAjkD,IAAAU,KAAA,WAAAoG,YAAA,UACA9G,IAAAU,KAAA,cAAA0P,QAAA,MAAApJ,SAAA,UACAjH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA8G,QAAA9G,OAAA,cAEAA,OAAA4T,UAAA,oBAAAokD,2BAEA/wD,KAAA9G,MmCvBA,WACA,GAAA+3D,uBAAAC,4BAAAC,2BAAAC,iCAAAC,8BAAAC,uBAAAC,wBAAAC,yBAAAC,wBAAA5vD,SAAAE,SAAAE,QAAAC,QAAAC,MAAApJ,OAAAE,MAAAwJ,SAAAE,KACAvC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,eACAC,KAAA,SAAAC,GAAAC,IAAA,MAAA,YAAA,MAAAD,IAAAE,MAAAD,GAAAE,YAEAjI,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAQ,KAAAzJ,KAAAD,MAAA0J,KAEAF,SAAAvJ,KAAAD,MAAAwJ,SAEAP,QAAAhJ,KAAAD,MAAAiJ,QAEAD,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,cAEAy4D,yBAAA,SAAArwD,YAKA,QAAAqwD,0BAAA7tD,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAwkB,UACA,GAAA7d,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA6sB,SAAAA,SACA7sB,KAAAyK,MAAAiE,WACAM,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,qBAAArC,MAAA/E,MAAAmZ,YAAA,MAAApU,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAA,KAAAyK,MAAAsQ,IAAA,iBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,qBAAArC,MAAA/E,MAAAmZ,YAAA,MAAApU,MAAA/E,MAAAiE,QAAAtD,QAEApL,OA4CA,MAxEAkH,QAAAoxD,yBAAArwD,YAEAqwD,yBAAAjnD,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,aAAA,aA6BAinD,yBAAA7wD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAaA,MAZAA,SAAAooD,YACAtnD,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAA23C,WAAAhiD,EAAAiO,OAAAK,QAAA6b,OAAA,SACA/a,MAAA/E,MAAAo8B,aAAAzmC,EAAAiO,OAAAK,QAAAqf,YAAA,SACAve,MAAA/E,MAAA63C,eAAAliD,EAAAiO,OAAAK,QAAAgf,cAAA,SACAle,MAAA/E,MAAA+tD,eAAAp4D,EAAAiO,OAAAK,QAAAic,WAAA,SACAnb,MAAA/E,MAAAguD,eAAAr4D,EAAAiO,OAAAK,QAAAkc,WAAA,SACApb,MAAA/E,MAAAiuD,eAAAt4D,EAAAiO,OAAAK,QAAA07C,YAAA,SACA56C,MAAA/E,MAAAuhD,gBAAA5rD,EAAAiO,OAAAK,QAAA8e,eAAA,SACAhe,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGAs4D,yBAAA7wD,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,QAGAs4D,yBAAA7wD,UAAAkxD,mBAAA,WACA,MAAA34D,MAAAgR,UAAAW,WAAA,qBAAA3R,KAAAyK,MAAAiE,UAGA4pD,0BAEArvD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,2BAAAo3C,0BAEAC,wBAAA,SAAAniD,MAAA7R,SAAAsb,SAAArG,SAAAlW,WACA,GAAAqQ,KAqCA,OApCAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAH,OAAA8L,YAiCA,OAhCA3L,MAAAN,IAAAU,KAAA,QAAA1P,WACAiQ,qBAAA,IAEAd,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAoH,MAAAmP,KAAA3R,OAAAlF,SACAM,QAAAO,KAAA,WACA,GAAAqpD,OAOA,OANA/4C,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,WACAi0D,OAAAp/C,SAAAxX,QAAA,yCACA0M,QAAAkF,OAAAlF,QAAAsN,OAEA1Y,UAAAQ,KAAA80D,QACAhlD,OAAA6O,MAAA,iBAAA7O,OAAAlF,WAEAM,QAAAO,KAAA,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAA6C,QACA5O,KAAAc,UAAAxQ,MACAA,KAAAuQ,eACAzQ,SAAAI,OAAA,QAAAF,KAAAuQ,gBADA,UAlBA,SAuBAhV,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAA,UAAA,aAAA,aAAA,aAAA,cAAA8kD,0BAEAJ,8BAAA,SAAA/hD,MAAA7R,SAAAsb,UACA,GAAAlM,KAkCA,OAjCAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAH,OAAA8L,YA4BA,OA3BA3L,MAAAN,IAAAU,KAAA,QAAA1P,WACAiQ,qBAAA,IAEAd,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAoH,MAAAmP,KAAA3R,OAAAlF,SACAM,QAAAO,KAAA,WAEA,MADAsQ,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,aAEAqK,QAAAO,KAAA,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAA6C,QACA5O,KAAAc,UAAAxQ,MACAA,KAAAuQ,eACAzQ,SAAAI,OAAA,QAAAF,KAAAuQ,gBADA,UAZA,SAiBAhV,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAJ,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,0BAAA,UAAA,aAAA,aAAA0kD,gCAEAE,wBAAA,SAAAjiD,MAAA7R,SAAAsb,UACA,GAAAlM,KAiDA,OAhDAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAH,MAuCA,OAtCAG,MAAAN,IAAAU,KAAA,QAAA1P,YACAmP,OAAA,WACA,MAAA,YACA,GAAAhF,SAAA+T,MACA,IAAA5O,KAAAK,WAWA,MARAuO,QAAApc,QAAA6E,QAAA,yCACAqU,SAAAE,MAAAgD,QACA/T,QAAAoH,MAAAmP,KAAA3R,OAAAlF,SACAM,QAAAO,KAAA,WAGA,MAFAsQ,UAAAK,OAAA6C,QACAxe,SAAAI,OAAA,WACAiP,OAAA6O,MAAA,iBAAA7O,OAAAlF,WAEAM,QAAAO,KAAA,KAAA,SAAA9K,MAEA,MADAob,UAAAK,OAAA6C,QACAxe,SAAAI,OAAA,QAAAF,KAAAuQ,oBAGAhV,MACA6T,IAAAc,GAAA,SAAA,OAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAL,WAEAH,IAAAc,GAAA,QAAA,wCAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAL,WAEAJ,OAAA9I,OAAA,6BAAA,SAAA+tD,4BACA,MAAAA,4BACAhlD,IAAAU,KAAA,+BAAAoG,YAAA,WAEA9G,IAAAU,KAAA,+BAAAsG,SAAA,UACAjH,OAAAlF,QAAA2V,iBAAA,KACAzQ,OAAAlF,QAAA4V,sBAAA,MAGA1Q,OAAA9I,OAAA,UAAA,SAAA4D,SACA,MACAkF,QAAAilD,2BADA,MAAAnqD,QAAA2V,kBACA,GAEA,MAKA1Q,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAA,UAAA,aAAA,aAAA4kD,0BAEAD,uBAAA,SAAA1hD,QAAA4P,IAAA/hB,UACA,GAAAoP,KAgGA,OA/FAA,MAAA,SAAAC,OAAAC,KACA,GAAAilD,WAAAC,YAAAC,WAAAC,YAAAC,SAAAC,gBAAAC,cAAAC,gBAAAC,cAAAC,kBAAAC,gBAAAC,eAAAC,aAAAC,YAAAC,cAAAC,0BAAAC,yBAAAC,gBAAAC,WAAAC,YAAAC,SAgEA,OA/DApB,WAAAjlD,IAAAU,KAAA,iCACAolD,YAAA,WACA,MAAAb,WAAAn+C,YAAA,WAEAo+C,YAAA,WACA,MAAAD,WAAAj+C,SAAA,WAEAq+C,SAAArlD,IAAAU,KAAA,gCACAylD,WAAA,WACA,MAAAd,UAAAv+C,YAAA,WAEAq+C,WAAA,WACA,MAAAE,UAAAr+C,SAAA,WAEAq/C,UAAArmD,IAAAU,KAAA,SACA0lD,YAAA,WACA,MAAAC,WAAAv/C,YAAA,WAEAs+C,YAAA,WACA,MAAAiB,WAAAr/C,SAAA,WAEAu+C,cAAAvlD,IAAAU,KAAA,iBACAilD,gBAAA,WACA,MAAAJ,eAAA52C,KAAA,qCAEA82C,cAAA,WACA,MAAAF,eAAA52C,KAAA,qCAEAk3C,aAAA,WACA,MAAAN,eAAA52C,KAAA,6BAEA22C,gBAAAtlD,IAAAU,KAAA,oBACAglD,kBAAA,WACA,MAAAJ,iBAAA32C,KAAA,kCAEA62C,gBAAA,WACA,MAAAF,iBAAA32C,KAAA,0CAEAi3C,eAAA,SAAAz1D,KACA,MAAAm1D,iBAAA32C,KAAA,8DAAAxe,IAAA,oDAEA+1D,gBAAA,WAKA,MAJAE,eACAT,kBACAD,oBACAR,cACAiB,cAEAH,0BAAA,WAGA,MAFAZ,eACAK,gBACAD,mBAEAS,yBAAA,SAAA91D,KAGA,MAFAi1D,eACAS,eACAD,eAAAz1D,MAEA41D,cAAA,WAGA,MAFAX,eACAD,aACAW,eAEA9lD,IAAAc,GAAA,QAAA,kBAAA9L,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAJ,SAAAC,SAwBA,OAvBAG,OAAAG,iBACAN,UAAA,SAAAhI,QACA,GAAAouD,QACA,OAAA,OAAApuD,OAAAnI,OACAi2D,6BAEAM,QAAApuD,OAAAtH,KAAAT,IACA81D,yBAAAK,SACAzjD,QAAAyJ,KAAAg6C,QAAA,YAGArmD,QAAA,SAAA/H,QACA,GAAAo5B,UAAA95B,GAQA,OAPAuuD,iBACAz0B,SAAA,iFACA,MAAAp5B,OAAAnI,OACAuhC,SAAA,yFACA,OAAA95B,IAAAU,OAAAtH,MAAA4G,IAAA2J,eAAA,UACAmwB,SAAA,+DAAAp5B,OAAAtH,KAAAuQ,gBAEAzQ,SAAAI,OAAA,QAAAwgC,WAEA40B,kBACAzzC,IAAAnX,SAAA,UAAAyE,OAAAvE,WAAAE,KAAAwE,UAAAD,WAEA9T,UAGA2T,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAA,UAAA,eAAA,aAAA2kD,yBAEAL,sBAAA,SAAA9vD,YAKA,QAAA8vD,uBAAAttD,MAAAuG,UAAAI,KAAAogB,QAAAtiB,IACAlP,KAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAAoR,KAAAA,KACApR,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAo6D,cAAAxyD,KAAA5H,KAAAo6D,cAAAp6D,MACAA,KAAAq6D,WAAAzyD,KAAA5H,KAAAq6D,WAAAr6D,MACAA,KAAAgR,UAAA+J,IAAA,iBAAA/a,KAAAq6D,YACAr6D,KAAAyK,MAAAK,OAAA,UAAA,SAAA0E,OACA,MAAA,UAAAjF,OACA,MACAiF,OAAA/E,MAAA6vD,OADA/vD,MACAiF,MAAA4B,KAAAmpD,gBAAA/qD,MAAA8C,KAAA,OAAA/H,OAEA,KAGAvK,OAsCA,MA3DAkH,QAAA6wD,sBAAA9vD,YAEA8vD,sBAAA1mD,SAAA,SAAA,aAAA,UAAA,aAAA,gBAsBA0mD,sBAAAtwD,UAAA4yD,WAAA,WACA,MAAAr6D,MAAAyK,MAAA+vD,QAAAx6D,KAAAyK,MAAAiE,QAAA1O,KAAAsS,KAAA,cAGAylD,sBAAAtwD,UAAA2yD,cAAA,SAAAl6C,QACA,GAAAlR,QAgBA,OAfAA,SAAAhP,KAAAkP,GAAAC,SAAA,cAAAnP,KAAAsS,KAAA,aAAAtS,KAAAyK,MAAA4E,WACAL,QAAAO,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAA4G,IACA,OAAAmE,OAAA/E,MAAA+vD,QAAA,OAAAnvD,IAAA5G,KAAAA,MAAA4G,IAAAovD,KAAA,SAEAz6D,OACAgP,QAAAO,KAAA,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAgiB,QAAA7sB,OAAA,WAEA3E,OACAgP,QAAA,WAAA,WACA,MAAAkR,YAEAlR,SAGA+oD,sBAAAtwD,UAAAizD,eAAA,WACA,GAAAvhC,UAAAtT,KACA,OAAA7lB,MAAAyK,MAAA+vD,SACA30C,MAAA,aACAsT,SAAA,gGACAn5B,KAAAwxB,QAAAsH,IAAAjT,MAAAsT,UAAA5pB,KAAAvP,KAAAo6D,gBAEAp6D,KAAAo6D,cAAAh6D,EAAAu6D,WAIA5C,uBAEAh4D,MAAA0I,YAEAyvD,iCAAA,SAAAjwD,YAGA,QAAAiwD,oCACA,MAAAA,kCAAAxwD,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAKA,MARAd,QAAAgxD,iCAAAjwD,YAMAiwD,iCAAAzwD,UAAA6K,KAAA,cAEA4lD,kCAEAH,uBAEAE,2BAAA,SAAAhwD,YAGA,QAAAgwD,8BACA,MAAAA,4BAAAvwD,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAKA,MARAd,QAAA+wD,2BAAAhwD,YAMAgwD,2BAAAxwD,UAAA6K,KAAA,QAEA2lD,4BAEAF,uBAEAC,4BAAA,SAAA/vD,YAGA,QAAA+vD,+BACA,MAAAA,6BAAAtwD,UAAAJ,YAAAS,MAAA/H,KAAAgI,WAKA,MARAd,QAAA8wD,4BAAA/vD,YAMA+vD,4BAAAvwD,UAAA6K,KAAA,SAEA0lD,6BAEAD,uBAEAl4D,OAAAqhB,WAAA,mCAAAg3C,kCAEAr4D,OAAAqhB,WAAA,6BAAA+2C,4BAEAp4D,OAAAqhB,WAAA,8BAAA82C,8BAEAlxD,KAAA9G,MC5cA,WACA,GAAA46D,yBAAAC,kCAAAC,iCAAAC,wBAAAC,uBAAAC,+BAAAtyD,SAAAE,SAAAE,QAAAC,QAAAC,MAAApJ,OAAAE,MAAAwJ,SAAAE,KACAvC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,eACAC,KAAA,SAAAC,GAAAC,IAAA,MAAA,YAAA,MAAAD,IAAAE,MAAAD,GAAAE,YAEAjI,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAQ,KAAAzJ,KAAAD,MAAA0J,KAEAF,SAAAvJ,KAAAD,MAAAwJ,SAEAP,QAAAhJ,KAAAD,MAAAiJ,QAEAD,QAAA/I,KAAAD,MAAAgJ,QAEAJ,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,cAEAo7D,+BAAA,SAAAhzD,YAKA,QAAAgzD,gCAAAxwD,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAwkB,UACA,GAAA7d,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA6sB,SAAAA,SACA7sB,KAAAyK,MAAAiE,WACAM,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,oBAAArC,MAAA/E,MAAAmZ,YAAA,MAAApU,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OAiCA,MAxDAkH,QAAA+zD,+BAAAhzD,YAEAgzD,+BAAA5pD,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,aAAA,aAwBA4pD,+BAAAxzD,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAMA,MALAA,SAAAooD,YACAtnD,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGAi7D,+BAAAxzD,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,QAGAi7D,gCAEAhyD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,iCAAA+5C,gCAEAF,wBAAA,SAAA9yD,YAKA,QAAA8yD,yBAAAtwD,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,IACAlP,KAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAk7D,UAAAtzD,KAAA5H,KAAAk7D,UAAAl7D,MACAA,KAAAm7D,WAAAvzD,KAAA5H,KAAAm7D,WAAAn7D,MACAA,KAAAyK,MAAAsQ,IAAA,4BAAA/a,KAAAk7D,WACAl7D,KAAAgR,UAAA+J,IAAA,iBAAA/a,KAAAm7D,YAyBA,MAtCAj0D,QAAA6zD,wBAAA9yD,YAEA8yD,wBAAA1pD,SAAA,SAAA,aAAA,UAAA,aAAA,gBAcA0pD,wBAAAtzD,UAAA0zD,WAAA,WACA,MAAAn7D,MAAAkP,GAAAlP,KAAAyK,MAAA2wD,UAAAC,WAAAr7D,KAAAyK,MAAA4E,UAAArP,KAAAyK,MAAA6H,MAAA/C,KAAA,SAAAC,OACA,MAAA,UAAA6uB,QAGA,MAFA7uB,OAAA/E,MAAA4zB,OAAAA,OACA7uB,MAAA/E,MAAA6wD,cAAAl7D,EAAAo6B,IAAA6D,OAAA,SAAAtL,MACAsL,SAEAr+B,QAGA+6D,wBAAAtzD,UAAAyzD,UAAA,SAAAn/C,IAAAw/C,UAAAhc,WACA,GAAA/uB,GAAA6N,MAQA,OAPAA,QAAAr+B,KAAAyK,MAAA4zB,OACA7N,EAAA6N,OAAA10B,QAAA4xD,WACAl9B,OAAA9L,OAAA/B,EAAA,GACA6N,OAAA9L,OAAAgtB,UAAA,EAAAgc,WACAn7D,EAAAqc,KAAA4hB,OAAA,SAAA9zB,MAAAmS,OACA,MAAAnS,OAAAwoB,MAAArW,QAEA1c,KAAA4sB,KAAAsG,QAAAmL,SAGA08B,yBAEAh7D,MAAA0I,YAEA5I,OAAAqhB,WAAA,0BAAA65C,yBAEAC,uBAAA,SAAAn1D,KAAAuQ,MAAA7R,UACA,GAAAoP,MAAA6nD,gBAAAC,SA2MA,OA1MAD,iBAAA,SAAA5nD,OAAAC,KACA,GAAA4xC,QAAAC,eAAAC,eAAAlyB,IAmBA,OAlBAkyB,gBAAA,KACAD,eAAA,KACAD,OAAA,KACAhyB,KAAA5f,IAAAU,KAAA,aACAkf,KAAAC,UACAE,OAAA,gCACAE,aAAA,EACAurB,YAAA,uBACAjsB,OAAA,IACAsoC,KAAA,MAEAjoC,KAAA9e,GAAA,WAAA,SAAAT,MAAAggB,IACA,GAAAqrB,WAAAgc,SAIA,OAHA9V,QAAAvxB,GAAAtqB,KACA2xD,UAAA9V,OAAAh7C,QAAAF,MACAg1C,UAAAkG,OAAA/oC,QACA9I,OAAAjC,WAAA,4BAAA4pD,UAAAhc,aAEA3rC,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,SAGAygD,UAAA,SAAA7nD,OAAAC,IAAA+G,QACA,GAAA0H,OAAA88B,OAAAuc,eAAAC,mBAAAC,aAAAC,UAAAC,SAwIA,OAvIAz5C,OAAAzO,IAAAqN,aACA66C,UAAAnhD,OAAAtI,KACAspD,mBAAA,WACA,MAAAhoD,QAAAooD,UACA5wD,KAAA,GACAk3B,WAAA,EACAwE,aAAA,IAGA80B,qBACAD,eAAA,WACA,MAAA,UAAAv7C,OACA,GAAA67C,MAMA,OALA,OAAA77C,QACAA,OAAA,GAEA67C,MAAApoD,IAAAU,KAAA,eACAuH,EAAAkG,SAAAC,MAAA4oB,UAAAoxB,MAAAlxB,SAAAC,IAAAixB,MAAAnxB,UACA1qB,MACAvM,IAAAU,KAAA,4BAAAgiB,QAAAnW,QADA,SAIApgB,MACA87D,UAAA,SAAA/4C,QACA,GAAA5O,MAAA+nD,OAAAltD,QAAAzE,KAGA,OAFA2xD,QAAAn5C,OAAA+hB,QAAA,QACA3wB,KAAA+nD,OAAAr3D,YACAsP,KAAAK,YAGAjK,MAAA2xD,OAAAzxD,QAAAF,MACAyE,QAAAoH,MAAAmP,KAAAhb,OACAyE,QAAAO,KAAA,WACA,MAAA,YACA,GAAA4sD,IAGA,OAFAA,KAAAp5C,OAAA+hB,QAAA,mBACAq3B,IAAAthD,SAAA,UACAshD,IAAAt9B,SAAA,kBAAAlkB,YAAA,YAEA3a,OACAgP,QAAAO,KAAA,KAAA,SAAA9K,MACA,MAAA0P,MAAAc,UAAAxQ,SAdA,QAiBAo3D,aAAA,SAAA94C,QACA,GAAA5O,MAAA+nD,OAAAltD,OAGA,OAFAktD,QAAAn5C,OAAA+hB,QAAA,QACA3wB,KAAA+nD,OAAAr3D,YACAsP,KAAAK,YAGAZ,OAAAooD,SAAAttD,QAAAkF,OAAAlF,QAAAF,GACAoF,OAAAooD,SAAAjpC,MAAAnf,OAAA0nD,cAAA1nD,OAAA0nD,cAAA,EAAA,EACAtsD,QAAAoH,MAAA4J,OAAA+7C,UAAAnoD,OAAAooD,UACAhtD,QAAAO,KAAA,WACA,MAAA,UAAA9K,MAIA,MAHAse,QAAAlI,SAAA,UACAjH,OAAAyqB,OAAA/5B,KAAAG,MACAmP,OAAA0nD,cAAA72D,KAAAsuB,MACA6oC,uBAEA57D,OACAgP,QAAAO,KAAA,KAAA,SAAA9K,MACA,MAAA0P,MAAAc,UAAAxQ,SAfA,QAkBA26C,OAAA,SAAAr8B,QACA,GAAAm5C,QAAAC,IAAA5xD,KAIA,OAHA4xD,KAAAp5C,OAAA+hB,QAAA,mBACAo3B,OAAAn5C,OAAA+hB,QAAA,QACAv6B,MAAA2xD,OAAAzxD,QAAAF,MACAqJ,OAAAtH,OAAA,WAGA,MAFA6vD,KAAAthD,SAAA,UACAtQ,MAAA6oB,SACA+oC,IAAAt9B,SAAA,kBAAAlkB,YAAA,aAGA9G,IAAAc,GAAA,QAAA,gBAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAR,IAAAU,KAAA,cAAAoG,YAAA,UACAghD,gBAAA,KAEA9nD,IAAAc,GAAA,QAAA,WAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAAlP,IAAAU,KAAA,cACAsnD,aAAA94C,WAEAlP,IAAAc,GAAA,QAAA,cAAA,SAAAT,OAGA,MAFAA,OAAAG,iBACAR,IAAAU,KAAA,cAAAsG,SAAA,UACA+gD,uBAEA/nD,IAAAc,GAAA,QAAA,cAAA,SAAAT,OACA,GAAAkoD,YAAAD,IAAAp5C,MAOA,OANA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAm5C,IAAAp5C,OAAA+hB,QAAA,mBACAq3B,IAAAthD,SAAA,UACAuhD,WAAAD,IAAAt9B,SAAA,YACAu9B,WAAAzhD,YAAA,UACAyhD,WAAA7nD,KAAA,iBAAAgiB,QAAAnW,QAAAwF,WAEA/R,IAAAc,GAAA,QAAA,iBAAA,SAAAT,OACA,GAAA6O,OACA,OAAA,MAAA7O,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA84C,UAAA/4C,SACA,KAAA7O,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAo8B,OAAAr8B,SAFA,SAKAlP,IAAAc,GAAA,QAAA,mBAAA,SAAAT,OACA,GAAA6O,OACA,OAAA,MAAA7O,MAAAsI,SACAuG,OAAAlP,IAAAU,KAAA,cACAsnD,aAAA94C,SACA,KAAA7O,MAAAsI,SACA3I,IAAAU,KAAA,cAAAsG,SAAA,UACA+gD,sBAFA,SAKA/nD,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACA84C,UAAA/4C,UAEAlP,IAAAc,GAAA,QAAA,UAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAo8B,OAAAr8B,UAEAlP,IAAAc,GAAA,QAAA,gBAAA,SAAAT,OACA,GAAAinB,SAAA+gC,OAAA9gC,YAAAjC,SAAApW,OAAA8C,MAAAtb,KAcA,OAbA2J,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAA+hB,QAAA,QACAv6B,MAAA2xD,OAAAzxD,QAAAF,MACA4wB,WACA/6B,EAAAqc,KAAA7I,OAAAyqB,OAAA,SAAAg+B,QACA,MAAA9xD,OAAAiE,KAAA6tD,OAAA7tD,GACA2sB,QAAAkhC,OAAA7tD,IAAA6tD,OAAAjxD,KADA,SAIAya,MAAA,eACAsT,SAAA5uB,MAAAa,KACAgwB,YAAA,+CACA,IAAAh7B,EAAAiK,KAAA8wB,SAAA31B,OACAjB,SAAAsS,MAAA,gCAEAtS,SAAA22B,UAAArV,MAAAsT,SAAAgC,QAAAC,aAAA7rB,KAAA,SAAA7L,UACA,GAAAoQ,SAAAwoD,QASA,OARAA,UAAA,WACA,MAAAh6C,OAAA64C,aAAA,WAAA,WACA,MAAAz3D,UAAAwc,YAGApM,QAAA,WACA,MAAAvP,UAAAI,OAAA,UAEAyR,MAAApE,OAAAzH,OACAgyD,OAAA74D,SAAA83B,WACAjsB,KAAA+sD,SAAAxoD,cAIAH,KAAA,SAAAC,OAAAC,IAAA+G,QAGA,MAFA4gD,iBAAA5nD,OAAAC,IAAA+G,QACA6gD,UAAA7nD,OAAAC,IAAA+G,QACAhH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,mBAAA,OAAA,UAAA,aAAA,cAAA,iBAAAunD,yBAEAJ,wBAAA,WACA,GAAAjnD,KA4CA,OA3CAA,MAAA,SAAAC,OAAAC,IAAA+G,OAAAvE,QACA,GAAAiM,MAsCA,OArCAA,OAAAzO,IAAAqN,aACAtN,OAAA9I,OAAA8P,OAAAmL,QAAA,SAAAva,SACA,MAAAoI,QAAAomB,MAAAxuB,QAAAwuB,QAEAnmB,IAAAc,GAAA,QAAA,iBAAA,SAAAT,OACA,GAAA+N,MAAAc,MAOA,OANA7O,OAAAG,iBACAH,MAAAuQ,kBACA1B,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAnP,IAAAU,KAAA,iBAAA4N,OACAY,OAAA8b,SAAA,iBAAAjc,OACAX,KAAAtb,QAAA6E,QAAA,QACAyW,KAAAtN,GAAA,QAAA,WACA,MAAA,UAAAT,OACA,MAAA,KAAAvN,QAAA6E,QAAA0I,MAAA6O,QAAA3b,OAAA,iBAAA5B,QACAqO,IAAAU,KAAA,iBAAA4N,OACAF,KAAAkF,OAAA,UAFA,SAKAnnB,SAEA6T,IAAAc,GAAA,QAAA,uBAAA,SAAAT,OACA,GAAA6O,OAMA,OALA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACApP,OAAAtH,OAAA,WACA,MAAA+J,QAAAmP,YAAAwU,MAAAjX,OAAAte,KAAA,WAEAoP,IAAAU,KAAA,iBAAA4N,SAEAtO,IAAAc,GAAA,QAAA,gCAAA,SAAAT,OAKA,MAJAA,OAAAG,iBACAT,OAAAtH,OAAA,WACA,MAAA+J,QAAAmP,YAAAwU,MAAApmB,OAAAomB,QAEAnmB,IAAAU,KAAA,iBAAA4N,SAEAvO,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,KACAyP,QAAA,YAIAvjB,OAAA4T,UAAA,mBAAAmnD,yBAEAC,kCAAA,SAAA5yD,YAKA,QAAA4yD,mCAAApwD,MAAAuG,UAAA4b,KAAA1d,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAwkB,UACA7sB,KAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA6sB,SAAAA,SACA7sB,KAAAw8D,qBAAA50D,KAAA5H,KAAAw8D,qBAAAx8D,MACAA,KAAAy8D,sBAAA70D,KAAA5H,KAAAy8D,sBAAAz8D,MACAA,KAAA08D,oBAAA90D,KAAA5H,KAAA08D,oBAAA18D,MACAA,KAAA28D,sBAAA/0D,KAAA5H,KAAA28D,sBAAA38D,MACAA,KAAA48D,qBAAAh1D,KAAA5H,KAAA48D,qBAAA58D,MACAA,KAAAyK,MAAAiE,WACA1O,KAAAgR,UAAA+J,IAAA,iBAAA,SAAAvL,OACA,MAAA,YAEA,MADAA,OAAAotD,uBACAptD,MAAAqd,SAAAhb,IAAA,+BAAArC,MAAA/E,MAAAmZ,YAAA,MAAApU,MAAA/E,MAAAiE,QAAAtD;GAEApL,OAqCA,MA9DAkH,QAAA2zD,kCAAA5yD,YAEA4yD,kCAAAxpD,SAAA,SAAA,aAAA,UAAA,eAAA,eAAA,KAAA,cAAA,aAAA,aA0BAwpD,kCAAApzD,UAAAm1D,qBAAA,WACA,MAAA58D,MAAAkP,GAAA+sB,iBAAAj8B,KAAAyK,MAAA6H,MAAAmU,KAAAzmB,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAysB,kBAGA,MAFAzsB,OAAA/E,MAAAwxB,iBAAAA,iBACAzsB,MAAA/E,MAAAoyD,SAAAz8D,EAAAo6B,IAAAyB,iBAAA,SAAAlJ,MACAkJ,mBAEAj8B,QAGA66D,kCAAApzD,UAAAk1D,sBAAA,SAAAG,YACA,MAAA98D,MAAA4sB,KAAA5M,OAAA,qBAAAhgB,KAAAyK,MAAA6H,KAAAwqD,aAGAjC,kCAAApzD,UAAAi1D,oBAAA,SAAAK,WACA,MAAA/8D,MAAA4sB,KAAArH,KAAAw3C,YAGAlC,kCAAApzD,UAAAg1D,sBAAA,SAAAM,WACA,MAAA/8D,MAAA4sB,KAAA5a,OAAA+qD,YAGAlC,kCAAApzD,UAAA+0D,qBAAA,SAAAO,UAAAlqC,UACA,GAAAoJ,kBAAAzL,CAQA,OAPAyL,kBAAAj8B,KAAAyK,MAAAwxB,iBACAzL,EAAAyL,iBAAAtyB,QAAAozD,WACA9gC,iBAAA1J,OAAA/B,EAAA,GACAyL,iBAAA1J,OAAAM,SAAA,EAAAkqC,WACA38D,EAAAqc,KAAAwf,iBAAA,SAAAj3B,IAAAg4D,KACA,MAAAh4D,KAAA+tB,MAAAiqC,MAEAh9D,KAAA4sB,KAAAsG,QAAA+I,mBAGA4+B,mCAEA5xD,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,oCAAA25C,mCAEAC,iCAAA,SAAAj1D,KAAAtB,UACA,GAAAoP,KAkNA,OAjNAA,MAAA,SAAAC,OAAAC,KACA,GAAAyO,OAAA26C,aAAAC,aAAAl9C,OAAAy8C,sBAAAU,cAAAC,iBAAAC,eAAAC,aAAAC,aAAAC,+BAAAC,cAAAC,iBAAAC,eAAAC,aAAAC,WAAApkD,MAwMA,OAvMA6I,OAAAzO,IAAAqN,aACAtN,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEA6iD,WAAAhqD,IAAAU,KAAA,gBACAspD,WAAAnqC,UACAE,OAAA,wBACAE,aAAA,EACAV,OAAA,IACAsoC,KAAA,MAEAmC,WAAAlpD,GAAA,WAAA,SAAAT,MAAAggB,IACA,GAAA4pC,UAAArY,OAAAlG,SAIA,OAHAkG,QAAAvxB,GAAAtqB,KACAk0D,SAAArY,OAAAh7C,QAAAC,KACA60C,UAAAkG,OAAA/oC,QACA4F,MAAAk6C,qBAAAsB,SAAAve,aAEAoe,eAAA,WAEA,MADA9pD,KAAAU,KAAA,wBAAAoG,YAAA,UACA9G,IAAAU,KAAA,sCAAAgiB,QAAAnW,SAEAi9C,eAAA,WACA,MAAAxpD,KAAAU,KAAA,wBAAAsG,SAAA,WAEA4iD,cAAA,WACA,MAAA5pD,KAAAU,KAAA,+BAAAoG,YAAA,WAEAwiD,cAAA,WACA,MAAAtpD,KAAAU,KAAA,+BAAAsG,SAAA,WAEA6iD,iBAAA,WACA,MAAA7pD,KAAAU,KAAA,sCAAAoG,YAAA,WAEAyiD,iBAAA,WACA,MAAAvpD,KAAAU,KAAA,sCAAAsG,SAAA,WAEA0iD,aAAA,WACA,MAAA3pD,QAAAmqD,YAEA/9C,OAAA,SAAAk8C,QACA,GAAAxxD,MAAAyJ,KAAAL,QAAAwoD,QAEA,OADAnoD,MAAA+nD,OAAAr3D,YACAsP,KAAAK,YAGA8nD,SAAA,WACA,MAAA,YAIA,MAHAh6C,OAAAs6C,uBACAS,iBACAE,eACAh5D,SAAAI,OAAA,aAEA3E,MACA8T,QAAA,WACA,MAAA,UAAArP,MACA,MAAA0P,MAAAc,UAAAxQ,QAEAzE,MACA0K,KAAAkJ,OAAAmqD,QACArzD,KAAAgE,QAAAkF,OAAAvE,UACA3E,KAAAqoB,MAAAnf,OAAAipD,SAAAjpD,OAAAipD,SAAA,EAAA,EACAv6C,MAAAq6C,sBAAAjyD,MAAA6E,KAAA+sD,SAAAxoD,UAnBA,QAqBAmpD,aAAA,WAEA,MADAI,kBACAE,gBAEA3pD,OAAA9I,OAAA,mBAAA,SAAAmxB,kBACA,MAAAA,kBAGA,IAAAA,iBAAAz2B,QACA43D,mBACAD,gBACAQ,mBAEAN,iBACAI,gBACAC,oBAVA,SAaA7pD,IAAAc,GAAA,QAAA,8BAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAspD,mBAEA9pD,IAAAc,GAAA,QAAA,iCAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAAgoD,QAAAn5C,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAAoc,QAAA,QACAnf,OAAAk8C,WAEAroD,IAAAc,GAAA,QAAA,qCAAA,SAAAT,OAEA,MADAA,OAAAG,iBACA4oD,iBAEAppD,IAAAc,GAAA,QAAA,6BAAA,SAAAT,OACA,GAAAgoD,QAAAn5C,MACA,OAAA,MAAA7O,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAAoc,QAAA,QACAnf,OAAAk8C,SACA,KAAAhoD,MAAAsI,QACAygD,eADA,SAIAW,aAAA,SAAA1B,QAGA,MAFAA,QAAA3nD,KAAA,yBAAAsG,SAAA,UACAqhD,OAAA3nD,KAAA,yBAAAoG,YAAA,UACAuhD,OAAA3nD,KAAA,uCAAAgiB,QAAAnW,QAAAwF,UAEA03C,aAAA,SAAApB,QAEA,MADAA,QAAA3nD,KAAA,yBAAAsG,SAAA,UACAqhD,OAAA3nD,KAAA,yBAAAoG,YAAA,WAEA6iD,+BAAA,SAAAtB,QACA,MAAAtoD,QAAAtH,OAAA,WACA,MAAA4vD,QAAAzxD,QAAAC,KAAA0oB,YAGA3Z,OAAA,SAAAyiD,QACA,GAAAxxD,MAAAyJ,KAAAL,QAAAwoD,QAEA,OADAnoD,MAAA+nD,OAAAr3D,YACAsP,KAAAK,YAGA8nD,SAAA,WACA,MAAA,YAGA,MAFAh6C,OAAAs6C,uBACAU,aAAApB,QACA33D,SAAAI,OAAA,aAEA3E,MACA8T,QAAA,WACA,MAAA,UAAArP,MACA,MAAA0P,MAAAc,UAAAxQ,QAEAzE,MACA0K,KAAAwxD,OAAAzxD,QAAAC,KACA4X,MAAAo6C,oBAAAhyD,MAAA6E,KAAA+sD,SAAAxoD,UAhBA,QAkBAopD,aAAA,SAAAhB,QAEA,MADAoB,cAAApB,QACAsB,+BAAAtB,SAEAroD,IAAAc,GAAA,QAAA,+BAAA,SAAAT,OACA,GAAAgoD,QAAAn5C,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAAoc,QAAA,QACAy+B,aAAA1B,UAEAroD,IAAAc,GAAA,QAAA,iCAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAAgoD,QAAAn5C,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAAoc,QAAA,QACA1lB,OAAAyiD,WAEAroD,IAAAc,GAAA,QAAA,sCAAA,SAAAT,OACA,GAAAgoD,QAAAn5C,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAAoc,QAAA,QACA+9B,aAAAhB,UAEAroD,IAAAc,GAAA,QAAA,8BAAA,SAAAT,OACA,GAAAgoD,QAAAn5C,MACA,OAAA,MAAA7O,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAAoc,QAAA,QACA1lB,OAAAyiD,SACA,KAAAhoD,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAAoc,QAAA,QACA+9B,aAAAhB,SAHA,SAMAO,sBAAA,SAAAP,QACA,GAAAxxD,MAAAgU,QAAAya,SAAAtT,KAKA,OAJAnb,MAAAwxD,OAAAzxD,QAAAC,KACAmb,MAAA,0BACAsT,SAAA,wGACAza,QAAAhU,KAAAU,KACA7G,SAAAu0B,IAAAjT,MAAAsT,SAAAza,SAAAnP,KAAA,SAAA2Q,QACA,GAAApM,SAAAwoD,QAUA,OATAA,UAAA,WACA,MAAAh6C,OAAAs6C,uBAAA,WAAA,WACA,MAAA18C,aAGApM,QAAA,WAEA,MADAoM,SAAA,GACA3b,SAAAI,OAAA,QAAA,KAAA,oCAAA+Z,QAAA,OAEA4D,MAAAm6C,sBAAA/xD,MAAA6E,KAAA+sD,SAAAxoD,YAGAD,IAAAc,GAAA,QAAA,iCAAA9L,SAAA,IAAA,SAAAqL,OACA,GAAAgoD,QAAAn5C,MAIA,OAHA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAk5C,OAAAn5C,OAAAoc,QAAA,QACAs9B,sBAAAP,aAIAvoD,KAAAA,OAIA9T,OAAA4T,UAAA,6BAAA,OAAA,aAAA,iBAAAqnD,oCAEAh0D,KAAA9G,MC3qBA,WACA,GAAAg+D,mBAAAC,iBAAAC,yBAAAC,gBAAAC,eAAA11D,YAAAC,SAAAE,SAAAI,MAAApJ,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,eACAgC,WAAAA,SAAA,SAAAC,MAAA,IAAA,GAAAC,GAAA,EAAAC,EAAA9J,KAAAwF,OAAAsE,EAAAD,EAAAA,IAAA,GAAAA,IAAA7J,OAAAA,KAAA6J,KAAAD,KAAA,MAAAC,EAAA,OAAA,GAEA9J,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAN,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEAH,YAAA1I,KAAAD,MAAA2I,YAEA7I,OAAA8G,QAAA9G,OAAA,cAEAs+D,gBAAA,SAAAl2D,YAKA,QAAAk2D,iBAAA1zD,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAwkB,UACA,GAAA7d,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA6sB,SAAAA,SACAnkB,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,cACA5jB,KAAAyK,MAAAiE,WACA1O,KAAAyK,MAAA4zD,mBAAA,EACArvD,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,WAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OA+HA,MAzJAkH,QAAAi3D,gBAAAl2D,YAEAk2D,gBAAA9sD,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,aAAA,aA2BA8sD,gBAAA12D,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SASA,MARAA,SAAAooD,YACAtnD,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAA4zD,kBAAAj+D,EAAA6+B,KAAA7+B,EAAAC,IAAAqO,QAAAX,MAAA,SAAAixB,OACA,MAAAA,OAAAs/B,cAEA5vD,UAEA1O,QAGAm+D,gBAAA12D,UAAA82D,qBAAA,SAAAxwD,OACA,GAAAywD,kBAWA,OAVAzwD,OAAAA,MAAA1N,IAAA,SAAAq+B,MAEA,MADAA,MAAA+/B,eAAA,EACA//B,OAEA8/B,mBACApzD,KAAA,gBACAsc,YAAA1nB,KAAAyK,MAAAiE,QAAAgwD,mBACAD,eAAA,GAEA1wD,MAAAzJ,KAAAk6D,mBACAzwD,OAGAowD,gBAAA12D,UAAAk3D,UAAA,WACA,MAAA3+D,MAAAkP,GAAAnB,MAAA0Y,KAAAzmB,KAAAyK,MAAA4E,WAAAE,KAAAvP,KAAAu+D,sBAAAhvD,KAAA,SAAAC,OACA,MAAA,UAAAzB,OAGA,MAFAyB,OAAA/E,MAAAsD,MAAAA,MACAyB,MAAA/E,MAAAi0B,KAAAlvB,MAAA/E,MAAAsD,MAAA,GACAA,QAEA/N,QAGAm+D,gBAAA12D,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAT,sBAEA/O,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAmvD,cAEA3+D,QAGAm+D,gBAAA12D,UAAA2qD,QAAA,SAAA1zB,MAEA,MADA1+B,MAAAyK,MAAAi0B,KAAAA,KACA1+B,KAAAyK,MAAAkH,WAAA,eAAA3R,KAAAyK,MAAAi0B,OAGAy/B,gBAAA12D,UAAA,UAAA,WACA,GAAA0zB,SAAAtxB,EAAAiC,IAAAT,IAAA+vB,YAAAsD,KAAAvF,SAAAtT,MAAAwV,OAOA,KANAxV,MAAA,cACAsT,SAAAn5B,KAAAyK,MAAAi0B,KAAAtzB,KACAgwB,YAAA,gDACAC,QAAA,oEACAF,WACA9vB,IAAArL,KAAAyK,MAAAsD,MACAlE,EAAA,EAAAiC,IAAAT,IAAA7F,OAAAsG,IAAAjC,EAAAA,IACA60B,KAAArzB,IAAAxB,GACA60B,KAAAlwB,KAAAxO,KAAAyK,MAAAi0B,KAAAlwB,KACA2sB,QAAAuD,KAAAlwB,IAAAkwB,KAAAtzB,KAGA,OAAA,KAAAhL,EAAAiK,KAAA8wB,SAAA31B,OACAxF,KAAAwxB,QAAA3a,MAAA,gCAEA7W,KAAAwxB,QAAA0J,UAAArV,MAAAsT,SAAAgC,QAAAC,YAAAC,SAAA9rB,KAAA,SAAAC,OACA,MAAA,UAAA9L,UACA,GAAAsL,QAUA,OATAA,SAAAQ,MAAAod,KAAA5a,OAAAxC,MAAA/E,MAAAi0B,MACA69B,OAAA74D,SAAA83B,WAEAxsB,QAAAO,KAAA,WAEA,MADAC,OAAA6d,cACA7d,MAAAmvD,YAAA,WAAA,WACA,MAAAj7D,UAAAwc,aAGAlR,QAAAO,KAAA,KAAA,WACA,MAAAC,OAAAgiB,QAAA7sB,OAAA,aAGA3E,QAGAm+D,gBAAA12D,UAAAm3D,cAAA/1D,SAAA,IAAA,WACA,GAAAiL,SAAAC,SAaA,OAZAA,WAAA,SAAAvE,OACA,MAAA,YAEA,MADAA,OAAAgiB,QAAA7sB,OAAA,WACA6K,MAAA6d,gBAEArtB,MACA8T,QAAA,SAAAtE,OACA,MAAA,YAEA,MADAA,OAAAgiB,QAAA7sB,OAAA,SACA6K,MAAA/E,MAAAi0B,KAAAtL,WAEApzB,MACAA,KAAA4sB,KAAArH,KAAAvlB,KAAAyK,MAAAi0B,MAAAnvB,KAAAwE,UAAAD,WAGAqqD,iBAEAl1D,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,kBAAAi9C,iBAEAH,kBAAA,SAAA5nD,MAAA7R,UACA,GAAAoP,KAyCA,OAxCAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,QAAA6qD,UAmCA,OAlCAA,YAAA,WAEA,MADAhrD,KAAAU,KAAA,UAAAuqD,SACAjrD,IAAAU,KAAA,cAAAuqD,UAEA9qD,OAAA,WACA,GAAAhF,QASA,OARA4E,QAAA8qB,KAAAtzB,KAAAyI,IAAAU,KAAA,SAAAvP,MACAgK,QAAAoH,MAAAmP,KAAA3R,OAAA8qB,MACA1vB,QAAAO,KAAA,WACA,MAAAhL,UAAAI,OAAA,aAEAqK,QAAAO,KAAA,KAAA,WACA,MAAAhL,UAAAI,OAAA,WAEAk6D,cAEAhrD,IAAAc,GAAA,QAAA,cAAA,WAGA,MAFAkqD,cACAhrD,IAAAU,KAAA,SAAA6L,QACAvM,IAAAU,KAAA,SAAAvP,IAAA4O,OAAA8qB,KAAAtzB,QAEAyI,IAAAc,GAAA,QAAA,SAAAX,QACAH,IAAAc,GAAA,QAAA,QAAA,SAAAT,OACA,MAAA,MAAAA,MAAAsI,QACAxI,SACA,KAAAE,MAAAsI,QACAqiD,aADA,SAIAjrD,OAAAmH,IAAA,eAAA,WACA,MAAAlH,KAAAU,KAAA,cAAAuN,GAAA,YACA+8C,aADA,SAIAjrD,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,cAAA,UAAA,aAAAuqD,oBAEAI,eAAA,WACA,GAAAzqD,KAQA,OAPAA,MAAA,SAAAC,OAAAC,KACA,GAAAyO,MAEA,OADAA,OAAAzO,IAAAqN,aACAtN,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,UAAA2qD,gBAEAH,iBAAA,SAAA33B,QAAA/hC,UACA,GAAAw6D,qBAAAprD,IAgDA,OA/CAorD,sBAAA,eAAA,kBAAA,UAAA,aAAA,eACAprD,KAAA,SAAAC,OAAAC,KACA,GAAAyO,MAWA,OAVAA,OAAAzO,IAAAqN,aACAtN,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAnH,IAAAc,GAAA,QAAA,eAAA,SAAAT,OAIA,MAHAA,OAAAG,iBACAR,IAAAU,KAAA,QAAAoG,YAAA,UACA9G,IAAAU,KAAA,QAAA6L,QACAvM,IAAAU,KAAA,eAAA4N,SAEAtO,IAAAc,GAAA,QAAA,OAAA,SAAAT,OACA,GAAAsjD,SAAA1jD,QAAAC,UAAAgP,MAEA,OADA7O,OAAAG,iBACA,KAAAH,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAw0C,SACA9oD,QAAAkF,OAAAvE,UACAjE,KAAA2X,OAAA/d,MACA0iB,YAAAq3C,oBACAhsC,MAAA3yB,EAAAo6B,IAAA5mB,OAAA7F,MAAA,SAAAyiB,GACA,MAAAA,GAAAuC,QACAA,MAAA,EACAurC,YAAA,GAEAzqD,IAAAU,KAAA,QAAAsG,SAAA,UACAhH,IAAAU,KAAA,QAAAvP,IAAA,IACA+O,UAAA,SAAA2qB,MAIA,MAHA9qB,QAAA7F,MAAAzJ,KAAAo6B,MACApc,MAAA8vC,QAAA1zB,MACA7qB,IAAAU,KAAA,eAAAqO,OACAN,MAAA+K,eAEAvZ,QAAA,WACA,MAAAvP,UAAAI,OAAA,UAEA2hC,QAAAtmB,OAAA,QAAAw3C,SAAAjoD,KAAAwE,UAAAD,UACA,KAAAI,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAnP,IAAAU,KAAA,QAAAsG,SAAA,UACAhH,IAAAU,KAAA,QAAAvP,IAAA,IACA6O,IAAAU,KAAA,eAAAqO,QAJA,WASAjP,KAAAA,OAIA9T,OAAA4T,UAAA,aAAA,UAAA,aAAAwqD,mBAEAC,yBAAA,SAAAl4D,WAAAoQ,MAAA7R,UACA,GAAAgd,cAAAy9C,iBAAArrD,KAAAsrD,cA4NA,OA3NAA,gBAAA7+D,EAAAiT,SAAA,wcACA2rD,iBAAA5+D,EAAAiT,SAAA,2zBACAkO,aAAAnhB,EAAAiT,SAAA,4CACAM,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA0H,OAAA48C,2BAAAC,eAAAC,kBAAAC,YAqNA,OApNA/8C,OAAAzO,IAAAqN,aACAg+C,2BAAA,SAAAxgC,MACA,GAAA4gC,YAAAC,qBAAAC,iBAAAC,qBAAAC,qBAAAC,gCAAAC,gBAAAC,qBAAAC,eAoIA,OAnIAJ,sBAAA,SAAAh4C,aACA,MAAAtnB,GAAAC,IAAAqnB,YAAA,SAAApnB,GACA,GAAA+K,IACA,OAAAjL,GAAA8G,UAAA5G,GACAy/D,QAAA10D,IAAA/K,EAAA,IAAAqJ,QAAA7C,KAAA43B,KAAAhX,YAAArc,MAAA,QAIAk0D,qBAAA,SAAA9kD,WAAAikB,KAAAhwB,SACA,MAAAgwB,MAAA+/B,gBAAA/vD,QAAAsxD,YAAA,IAAAvlD,WAAAlT,IAAAoC,QAAA,UACA,GAEA,GAGAg2D,gCAAA,SAAAzuC,UACA,MAAA9wB,GAAAC,IAAA6wB,SAAA,SAAA+uC,KAKA,MAJAA,KAAAv4C,YAAAu4C,IAAAv4C,YAAArnB,IAAA,SAAAoa,YAEA,MADAA,YAAAuiB,SAAAuiC,qBAAA9kD,WAAAikB,KAAA9qB,OAAAlF,SACA+L,aAEAra,EAAA8G,UAAA+4D,KACAC,kBAAA9/D,EAAA8N,OAAA+xD,IAAA,YAAA,UAAAz6D,YAIA85D,cACAG,uBAEAl4D,IAAA,kBACAutB,YAAA,iBAEAvtB,IAAA,gBACAutB,YAAA,eAEAvtB,IAAA,mBACAutB,YAAA,kBAEAvtB,IAAA,mBACAutB,YAAA,kBAGAwqC,WAAAh7D,MACA8G,KAAA,UACAsc,YAAAg4C,qBAAAD,wBAEAI,uBAEAt4D,IAAA,UACAutB,YAAA,oBAEAvtB,IAAA,SACAutB,YAAA,mBAEAvtB,IAAA,YACAutB,YAAA,sBAEAvtB,IAAA,YACAutB,YAAA,sBAGAwqC,WAAAh7D,MACA8G,KAAA,eACAsc,YAAAg4C,qBAAAG,wBAEAD,kBAEAr4D,IAAA,aACAutB,YAAA,eAEAvtB,IAAA,WACAutB,YAAA,aAEAvtB,IAAA,cACAutB,YAAA,gBAEAvtB,IAAA,cACAutB,YAAA,gBAGAwqC,WAAAh7D,MACA8G,KAAA,QACAsc,YAAAg4C,qBAAAE,mBAEAJ,mBAEAj4D,IAAA,cACAutB,YAAA,gBAEAvtB,IAAA,YACAutB,YAAA,cAEAvtB,IAAA,eACAutB,YAAA,iBAEAvtB,IAAA,eACAutB,YAAA,iBAGAwqC,WAAAh7D,MACA8G,KAAA,SACAsc,YAAAg4C,qBAAAF,oBAEAM,kBAEAv4D,IAAA,kBACAutB,YAAA,oBAEAvtB,IAAA,gBACAutB,YAAA,kBAEAvtB,IAAA,mBACAutB,YAAA,qBAEAvtB,IAAA,mBACAutB,YAAA,qBAEAvtB,IAAA,kBACAutB,YAAA,oBAEAvtB,IAAA,gBACAutB,YAAA,kBAEAvtB,IAAA,mBACAutB,YAAA,qBAGAwqC,WAAAh7D,MACA8G,KAAA,OACAsc,YAAAg4C,qBAAAI,mBAEAH,gCAAAL,aAEAD,aAAA,SAAA7zD,QAAA0lB,UACA,MAAA1lB,SAAA+I,KAAA,WAAAiO,KAAAy8C,gBACA/tC,SAAAA,aAGAiuC,eAAA,SAAAjuC,SAAAxU,OACA,GAAA8F,KAOA,OANAA,MAAAw8C,kBACA9tC,SAAAA,SACAxU,MAAAA,QAEA8F,KAAA7b,QAAA6E,QAAAgX,MACA68C,aAAA78C,KAAA0O,UACA1O,MAEA48C,kBAAA,WACA,GAAA58C,KAaA,OAZA3O,KAAAmH,MACAwH,KAAAjB,eACAnhB,EAAAqc,KAAAyiD,2BAAAtrD,OAAA8qB,MAAA,SAAAxN,SAAAxU,OACA,MAAA8F,MAAA7b,QAAA6E,QAAAgX,MAAA+Y,OAAA4jC,eAAAjuC,SAAAxU,UAEA7I,IAAA2O,KAAAA,MACA3O,IAAAc,GAAA,QAAA,UAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAAqjB,OAAAvjB,YAAA,UAEAhP,IAAAc,GAAA,SAAA,uBAAA,SAAAT,OACA,GAAAisD,sBAAArsD,QAAAC,UAAAgP,MA6BA,OA5BAo9C,sBAAA,WACA,GAAAD,kBASA,OARAA,mBAAA9/D,EAAA8N,OAAA2F,IAAAU,KAAA,wBAAA,SAAAyY,GACA,MAAArmB,SAAA6E,QAAAwhB,GAAAlL,GAAA,cAEAo+C,kBAAA9/D,EAAAiO,OAAAjO,EAAAC,IAAA6/D,kBAAA,SAAAlzC,GACA,GAAAvS,WACA,OAAAA,YAAA9T,QAAA6E,QAAAwhB,GAAA8X,QAAA,kBAAArgC,KAAA,SAEAy7D,kBAAA57D,KAAA,gBACA47D,mBAEAn9C,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACApP,OAAA8qB,KAAAhX,YAAAy4C,uBACApsD,UAAA,WACA,GAAAurD,YAAAc,UAMA,OALAd,YAAAJ,2BAAAtrD,OAAA8qB,MACA0hC,WAAAr9C,OAAA+hB,QAAA,oBAAArgC,KAAA,MACA46D,aAAAt8C,OAAA+hB,QAAA,oBAAAw6B,WAAAc,aACAp6D,WAAA2L,WAAA,mBACApN,SAAAI,OAAA,WACA2d,MAAA+K,eAEAvZ,QAAA,WAGA,MAFAvP,UAAAI,OAAA,SACAoe,OAAAE,KAAA,WAAAF,OAAAE,KAAA,YACArP,OAAA8qB,KAAAhX,YAAAy4C,wBAEAvsD,OAAA8qB,KAAA+/B,eACA7qD,OAAAlF,QAAAgwD,mBAAA9qD,OAAA8qB,KAAAhX,YACA9T,OAAAlF,QAAA2xD,iBAAAzsD,OAAA8qB,KAAAhX,YAAAxZ,OAAA,SAAAuM,YACA,MAAA,KAAAA,WAAA9Q,QAAA,WAEAyM,MAAAmP,KAAA3R,OAAAlF,SAAAa,KAAAwE,UAAAD,UAEAsC,MAAAmP,KAAA3R,OAAA8qB,MAAAnvB,KAAAwE,UAAAD,YAIAF,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEApH,OAAAmH,IAAA,eAAA,WACA,MAAAqkD,uBAEAz2D,SAAAiL,OAAAgH,OAAAmL,QAAAq5C,qBAGAzrD,KAAAA,OAIA9T,OAAA4T,UAAA,qBAAA,aAAA,UAAA,aAAAyqD,4BAEAp3D,KAAA9G,MC/gBA,WACA,GAAAsgE,qBAAAC,2BAAAC,iBAAAC,wBAAAC,iBAAAC,wBAAAC,oBAAAC,gBAAAC,wBAAAC,iBAAAC,mBAAAt4D,YAAAG,SAAAI,MAAApJ,OAAAE,MAAAuJ,QACApC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAP,YAAA1I,KAAAD,MAAA2I,YAEAG,SAAA7I,KAAAD,MAAA8I,SAEAS,QAAAtJ,KAAAD,MAAAuJ,QAEAzJ,OAAA8G,QAAA9G,OAAA,cAEAmhE,mBAAA,SAAA/4D,YAKA,QAAA+4D,oBAAAv2D,MAAAmiB,KAAA1d,GAAA7M,OAAA+F,SAAAC,QAAAwkB,UACA,GAAA7d,QACAhP,MAAAyK,MAAAA,MACAzK,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA6sB,SAAAA,SACAnkB,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,WACA5jB,KAAAyK,MAAAiE,WACAM,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,cAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAA,KAAAyK,MAAAsQ,IAAA,kBAAA/a,KAAAihE,cA6CA,MApEA/5D,QAAA85D,mBAAA/4D,YAEA+4D,mBAAA3vD,SAAA,SAAA,UAAA,eAAA,eAAA,cAAA,aAAA,aAwBA2vD,mBAAAv5D,UAAAw5D,aAAA,WACA,MAAAjhE,MAAAkP,GAAA4b,SAAArE,KAAAzmB,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAsb,UACA,MAAAtb,OAAA/E,MAAAqgB,SAAAA,WAEA9qB,QAGAghE,mBAAAv5D,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAMA,MALAA,SAAAooD,YACAtnD,MAAApH,SAAAtE,KAAA0L,MAAAnH,QAAArG,QAAA,sBAEAwN,MAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGAghE,mBAAAv5D,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAyxD,iBAEAjhE,QAGAghE,oBAEA/3D,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,qBAAA8/C,oBAEAD,iBAAA,SAAAz6C,IAAAlQ,MAAA7R,UACA,GAAAoP,KAwJA,OAvJAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAwkC,QAAA8hB,YAAA37C,KAAA47C,aAAAC,sBAAAC,WAAAC,0BAAAC,OA2IA,OA1IAA,SAAA3tD,OAAA/I,MAAA+P,OAAA4mD,WACAH,WAAA,WACA,MAAA/6C,KAAA0E,YAAAvE,KAAA86C,QAAA/yD,IAAAe,KAAA,WACA,MAAA,UAAAyb,aACA,GAAAnhB,GAAAiC,IAAA0B,IAAAnC,GACA,KAAAxB,EAAA,EAAAiC,IAAAkf,YAAAxlB,OAAAsG,IAAAjC,EAAAA,IACA2D,IAAAwd,YAAAnhB,GACA2D,IAAAi0D,YAAA,MAAAp2D,IAAAmC,IAAA5J,SAAA,IAAAyH,IACAmC,IAAAk0D,kBAAAthE,EAAAC,IAAAD,EAAAuhE,MAAAn0D,IAAAo0D,iBAAA,SAAAC,KACA,GAAAC,QAAAv3D,KAEA,OADAu3D,QAAAD,IAAA,GAAAt3D,MAAAs3D,IAAA,GACAC,OAAA,KAAAv3D,QACA7J,KAAA,MACA8M,IAAAu0D,eAAAxhE,KAAAC,UAAAgN,IAAAw0D,cACAx0D,IAAAy0D,WAAArtC,OAAApnB,IAAA00D,SAAArtC,OAAA,4BAIA,OAFA0sC,SAAAY,aAAAn3C,YAAAxlB,OACA+7D,QAAAa,KAAAp3C,YACAs2C,8BAEAthE,QAEAshE,0BAAA,WACA,GAAAe,gBAAAC,WAGA,OAFAA,aAAAzuD,IAAAU,KAAA,mBACA8tD,eAAAC,YAAAx9B,QAAA,2BAAAvwB,KAAA,qBAEA+tD,YAAA32D,KADA02D,eAAA1/C,SAAA,QACA,iBAEA,mBAGAy+C,sBAAA,WAEA,MADAvtD,KAAAU,KAAA,iBAAAsG,SAAA,UACAhH,IAAAU,KAAA,uBAAAoG,YAAA,WAEAwmD,aAAA,WAEA,MADAttD,KAAAU,KAAA,uBAAAsG,SAAA,UACAhH,IAAAU,KAAA,iBAAAoG,YAAA,WAEAumD,YAAA,WACA,MAAArtD,KAAAU,KAAA,qBAAAsG,SAAA,SAEAukC,OAAA,WAEA,MADAgiB,yBACAxtD,OAAAtH,OAAA,WACA,MAAAi1D,SAAAnuC,YAGA7N,KAAA1c,SAAA,IAAA,SAAAka,QACA,GAAA5O,MAAAnF,OAEA,OADAmF,MAAA4O,OAAA+hB,QAAA,QAAAjgC,YACAsP,KAAAK,YAGAxF,QAAAoH,MAAAmP,KAAAg8C,SACAvyD,QAAAO,KAAA,WACA,MAAA,YACA,MAAA6xD,2BAEAphE,OACAgP,QAAAO,KAAA,KAAA,SAAA9K,MAEA,MADAF,UAAAI,OAAA,SACAwP,KAAAc,UAAAxQ,SAXA,SAcAoP,IAAAc,GAAA,QAAA,gBAAA,WAEA,MADAusD,eACA56C,IAAAwE,SAAAy3C,KAAAhB,QAAA/yD,IAAAe,KAAA,WACA,MAAA,YACA,MAAA8xD,gBAEArhE,SAEA6T,IAAAc,GAAA,QAAA,gBAAA,WACA,MAAAwsD,kBAEAttD,IAAAc,GAAA,QAAA,mBAAA,WACA,MAAAyqC,YAEAvrC,IAAAc,GAAA,QAAA,iBAAA,SAAAT,OACA,GAAA6O,OAGA,OAFA7O,OAAAG,iBACA0O,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAuC,KAAAxC,UAEAlP,IAAAc,GAAA,QAAA,sBAAA,SAAAT,OACA,GAAA6O,OACA,OAAA,MAAA7O,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAuC,KAAAxC,SACA,KAAA7O,MAAAsI,SACAuG,OAAApc,QAAA6E,QAAA0I,MAAA8O,eACAo8B,OAAAr8B,SAFA,SAKAlP,IAAAc,GAAA,QAAA,kBAAA,WACA,GAAA+J,SAAAmH,KAGA,OAFAA,OAAA,iBACAnH,QAAA,YAAA6iD,QAAAn2D,KAAA,IACA7G,SAAAuhB,YAAAD,MAAAnH,SAAAnP,KAAA,WACA,MAAA,UAAA2Q,QACA,GAAApM,SAAAwoD,QASA,OARAA,UAAA,WAEA,MADAp8C,UACAtM,OAAA6O,MAAA,oBAEA3O,QAAA,WAEA,MADAoM,SAAA,GACA3b,SAAAI,OAAA,UAEAyR,MAAApE,OAAAuvD,SAAAhyD,KAAA+sD,SAAAxoD,WAEA9T,SAEA6T,IAAAc,GAAA,QAAA,kBAAA,SAAAT,OACA,GAAA6O,OAEA,OADAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACA,MAAAu+C,QAAAa,MAAA,IAAAb,QAAAa,KAAA58D,OACA67D,aAAA9xD,KAAA,WACA,MAAAjG,SAAA,EAAA,WAEA,MADAuK,KAAAU,KAAA,qBAAAsO,YAAA,QACAy+C,iCAIAztD,IAAAU,KAAA,qBAAAsO,YAAA,QACAjP,OAAAtH,OAAA,WACA,MAAAg1D,kCAIAztD,IAAAc,GAAA,QAAA,kBAAA,SAAAT,OACA,GAAA6O,OAGA,OAFAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACAD,OAAAF,YAAA,uBACAE,OAAA8b,SAAA,4BAAAhc,YAAA,UAEAhP,IAAAc,GAAA,QAAA,kBAAA,SAAAT,OACA,GAAA1G,KAAAuV,MAGA,OAFAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACAxV,IAAAuV,OAAAte,KAAA,OACA6hB,IAAA0E,YAAAw3C,OAAAh1D,KAAA+B,KAAA,WACA,MAAA,YACA,MAAA8xD,gBAEArhE,WAIA2T,KAAAA,OAIA9T,OAAA4T,UAAA,aAAA,eAAA,UAAA,aAAA,aAAAstD,mBAEAH,oBAAA,SAAAt6C,IAAAlQ,MAAA7R,UACA,GAAAoP,KAgEA,OA/DAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA6nD,mBAAAC,YAAA9G,mBAAAr2C,KAAAg8C,OAyDA,OAxDAA,SAAA3tD,OAAA/I,MAAA+P,OAAA4mD,WACAkB,YAAA7uD,IAAAU,KAAA,qBACAkuD,kBAAA5uD,IAAAU,KAAA,gBACAqnD,mBAAA,WACA,MAAAhoD,QAAAooD,UACA5wD,KAAA,GACApH,IAAA,GACAuD,IAAA,KAGAq0D,qBACAhoD,OAAA9I,OAAA,WAAA,SAAAggB,UACA,MAAA,OAAAA,SACA,IAAAA,SAAAtlB,QACAk9D,YAAA/nD,YAAA,UACA8nD,kBAAA5nD,SAAA,UACA6nD,YAAAnuD,KAAA,SAAA,GAAA6L,UAEAsiD,YAAA7nD,SAAA,UACA4nD,kBAAA9nD,YAAA,WAPA,SAWA4K,KAAA1c,SAAA,IAAA,WACA,GAAAsL,MAAAnF,OAEA,OADAmF,MAAAuuD,YAAA79D,YACAsP,KAAAK,YAGAZ,OAAAooD,SAAAttD,QAAAkF,OAAAlF,QAAAF,GACAQ,QAAAoH,MAAA4J,OAAA,WAAApM,OAAAooD,UACAhtD,QAAAO,KAAA,WACA,MAAA,YAEA,MADAqE,QAAA6O,MAAA,mBACAm5C,uBAEA57D,OACAgP,QAAAO,KAAA,KAAA,SAAA9K,MAEA,MADAF,UAAAI,OAAA,SACAwP,KAAAc,UAAAxQ,SAbA,SAgBAi+D,YAAA/tD,GAAA,QAAA,WAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAkR,SAEAm9C,YAAA/tD,GAAA,QAAA,QAAA,SAAAT,OACA,MAAA,MAAAA,MAAAsI,QACA+I,OADA,SAIAm9C,YAAA/tD,GAAA,QAAA,cAAA,WACA,MAAAf,QAAAtH,OAAA,WACA,MAAAsvD,0BAGA6G,kBAAA9tD,GAAA,QAAA,WAEA,MADA+tD,aAAA/nD,YAAA,UACA+nD,YAAAnuD,KAAA,SAAA,GAAA6L,YAIAzM,KAAAA,OAIA9T,OAAA4T,UAAA,gBAAA,eAAA,UAAA,aAAA,aAAAmtD,sBAEAJ,iBAAA,SAAAv4D,YAKA,QAAAu4D,kBAAA/1D,MAAAmiB,KAAA1d,GAAA7M,OAAAwqB,UACA,GAAA7d,QACAhP,MAAAyK,MAAAA,MACAzK,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAA6sB,SAAAA,SACAnkB,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,SACA5jB,KAAAyK,MAAAiE,WACAM,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,YAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OA0CA,MA9DAkH,QAAAs5D,iBAAAv4D,YAEAu4D,iBAAAnvD,SAAA,SAAA,UAAA,eAAA,eAAA,aAqBAmvD,iBAAA/4D,UAAAk7D,YAAA,WACA,MAAA3iE,MAAAkP,GAAApP,QAAA2mB,KAAAzmB,KAAAyK,MAAA4E,UAAA,UAAAE,KAAA,SAAAC,OACA,MAAA,UAAAozD,QACA,MAAApzD,OAAA/E,MAAAm4D,OAAAA,SAEA5iE,QAGAwgE,iBAAA/4D,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAGA,MAFAc,OAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGAwgE,iBAAA/4D,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAmzD,gBAEA3iE,QAGAwgE,kBAEAv3D,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,mBAAAs/C,kBAEAE,iBAAA,SAAAz4D,YAKA,QAAAy4D,kBAAAj2D,MAAAmiB,KAAA1d,GAAA7M,OAAAwqB,UACA,GAAA7d,QACAhP,MAAAyK,MAAAA,MACAzK,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAA6sB,SAAAA,SACAnkB,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,SACA5jB,KAAAyK,MAAAiE,WACAM,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,YAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAA,KAAAyK,MAAAsQ,IAAA,yBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAmzD,gBAEA3iE,OA0CA,MAnEAkH,QAAAw5D,iBAAAz4D,YAEAy4D,iBAAArvD,SAAA,SAAA,UAAA,eAAA,eAAA,aA0BAqvD,iBAAAj5D,UAAAk7D,YAAA,WACA,MAAA3iE,MAAAkP,GAAApP,QAAA2mB,KAAAzmB,KAAAyK,MAAA4E,UAAA,UAAAE,KAAA,SAAAC,OACA,MAAA,UAAAqzD,QACA,MAAArzD,OAAA/E,MAAAo4D,OAAAA,SAEA7iE,QAGA0gE,iBAAAj5D,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAGA,MAFAc,OAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGA0gE,iBAAAj5D,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK;GAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAmzD,gBAEA3iE,QAGA0gE,kBAEAz3D,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,mBAAAw/C,kBAEAJ,oBAAA,SAAAr4D,YAKA,QAAAq4D,qBAAA71D,MAAAmiB,KAAA1d,GAAA7M,OAAAwqB,UACA,GAAA7d,QACAhP,MAAAyK,MAAAA,MACAzK,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAA6sB,SAAAA,SACAnkB,YAAA1I,MACAA,KAAAyK,MAAAmZ,YAAA,YACA5jB,KAAAyK,MAAAiE,WACAM,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAA,eAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAA,KAAAyK,MAAAsQ,IAAA,yBAAA,SAAAvL,OACA,MAAA,YACA,MAAAA,OAAAmzD,gBAEA3iE,OA0CA,MAnEAkH,QAAAo5D,oBAAAr4D,YAEAq4D,oBAAAjvD,SAAA,SAAA,UAAA,eAAA,eAAA,aA0BAivD,oBAAA74D,UAAAk7D,YAAA,WACA,MAAA3iE,MAAAkP,GAAApP,QAAA2mB,KAAAzmB,KAAAyK,MAAA4E,UAAA,aAAAE,KAAA,SAAAC,OACA,MAAA,UAAAszD,WACA,MAAAtzD,OAAA/E,MAAAq4D,UAAAA,YAEA9iE,QAGAsgE,oBAAA74D,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAGA,MAFAc,OAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGAsgE,oBAAA74D,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAmzD,gBAEA3iE,QAGAsgE,qBAEAr3D,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,UAAA7N,MAAA4N,eAEA9N,OAAAqhB,WAAA,sBAAAo/C,qBAEAO,gBAAA,WACA,GAAAltD,KAOA,OANAA,MAAA,SAAAC,OAAAC,KACA,MAAAA,KAAAc,GAAA,QAAA,wBAAA,WAEA,MADAd,KAAAU,KAAA,SAAAqR,SACA/R,IAAAU,KAAA,cAAAsG,SAAA,eAIAlH,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAAotD,iBAEAJ,wBAAA,SAAArqD,MAAA7R,SAAAsb,UACA,GAAAlM,KA+BA,OA9BAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAH,OAAA8L,YA2BA,OA1BA3L,MAAAN,IAAAU,KAAA,QAAA1P,WACAiQ,qBAAA,IAEAd,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAoH,MAAA2sD,cAAAnvD,OAAAgvD,OAAA,UACA5zD,QAAAO,KAAA,WAEA,MADAsQ,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,aAEAqK,QAAAO,KAAA,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAAJ,cACA3L,KAAAc,UAAAxQ,MACAA,KAAAuQ,eACAzQ,SAAAI,OAAA,QAAAF,KAAAuQ,gBADA,UAZA,SAiBAhV,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAA,UAAA,aAAA,aAAAgtD,0BAEAE,wBAAA,SAAAvqD,MAAA7R,SAAAsb,UACA,GAAAlM,KAgCA,OA/BAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAH,OAAA8L,YA4BA,OA3BA3L,MAAAN,IAAAU,KAAA,QAAA1P,WACAiQ,qBAAA,IAEAd,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAoH,MAAA2sD,cAAAnvD,OAAAivD,OAAA,UACA7zD,QAAAO,KAAA,WAGA,MAFAsQ,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,WACAiP,OAAA6O,MAAA,4BAEAzT,QAAAO,KAAA,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAAJ,cACA3L,KAAAc,UAAAxQ,MACAA,KAAAuQ,eACAzQ,SAAAI,OAAA,QAAAF,KAAAuQ,gBADA,UAbA,SAkBAhV,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,oBAAA,UAAA,aAAA,aAAAktD,0BAEAJ,2BAAA,SAAAnqD,MAAA7R,SAAAsb,UACA,GAAAlM,KAgCA,OA/BAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAH,OAAA8L,YA4BA,OA3BA3L,MAAAN,IAAAU,KAAA,QAAA1P,WACAiQ,qBAAA,IAEAd,OAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAoH,MAAA2sD,cAAAnvD,OAAAkvD,UAAA,aACA9zD,QAAAO,KAAA,WAGA,MAFAsQ,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,WACAiP,OAAA6O,MAAA,4BAEAzT,QAAAO,KAAA,KAAA,SAAA9K,MAGA,MAFAob,UAAAK,OAAAJ,cACA3L,KAAAc,UAAAxQ,MACAA,KAAAuQ,eACAzQ,SAAAI,OAAA,QAAAF,KAAAuQ,gBADA,UAbA,SAkBAhV,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,UAGAL,KAAAA,OAIA9T,OAAA4T,UAAA,uBAAA,UAAA,aAAA,aAAA8sD,6BAEAO,wBAAA,WACA,GAAAntD,KAUA,OATAA,MAAA,SAAAC,OAAAC,IAAA+G,OAAAooD,UACA,MAAAA,UAAA/2B,SAAA3nC,KAAA,SAAAiG,OAEA,MADAA,OAAAuR,EAAArS,KAAAc,OACA,KAAAA,SAGAA,MAAAlF,MAAA,SAIAsO,KAAAA,KACAH,SAAA,KACA4P,QAAA,YAIAvjB,OAAA4T,UAAA,mBAAAqtD,0BAEAh6D,KAAA9G,MjBvrBA,WACA,GAAAijE,eAAAC,uBAAAv6D,SAAAE,SAAAhJ,OAAAE,MAAAuJ,OAEAvJ,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEAW,QAAAtJ,KAAAD,MAAAuJ,QAEAT,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,gBAEAojE,cAAA,SAAAj9D,WAAAoQ,MAAA7R,SAAAjB,UAAAkW,SAAA8M,IAAA68C,YAAAtjD,SAAAib,gBAAAsoC,eACA,GAAAzvD,KA2GA,OA1GAA,MAAA,SAAAC,OAAAC,KACA,GAAAM,MAAAS,cAAAC,gBAAAb,OAAA8L,YAoGA,OAnGAlM,QAAAnP,QACAmP,OAAAR,aACAe,KAAAN,IAAAU,KAAA,QAAA1P,WACAiQ,qBAAA,IAEAD,gBAAA,SAAAnR,UAMA,MALA0/D,eAAAjgE,IAAA,SAAAkgE,YACAxjD,SAAAK,OAAAJ,cACA9Z,WAAA2L,WAAA,mBACApN,SAAAI,OAAA,UAAA,WACArB,UAAAU,IAAAm/D,YAAAhgE,IAAAO,WACAo3B,gBAAAtc,MAAA3K,MAEAe,cAAA,SAAAlR,UACA,GAAA4/D,aAAAC,WAAA15D,EAAAiC,IAAAT,IAAAm4D,SAKA,KAJA3jD,SAAAK,OAAAJ,cACA3L,KAAAc,UAAAvR,UACA8/D,aACAn4D,IAAAjL,EAAAiK,KAAA3G,UACAmG,EAAA,EAAAiC,IAAAT,IAAA7F,OAAAsG,IAAAjC,EAAAA,IACAy5D,YAAAj4D,IAAAxB,GACA25D,UAAAl/D,KAAA,SAAAg/D,YAAA,IAKA,OAHAzvD,KAAAU,KAAA,WAAAoG,YAAA,UACA4oD,WAAA1vD,IAAAU,KAAAivD,UAAA9iE,KAAA,MAAA61B,QAAAuO,QAAA,gBACAy+B,WAAA1oD,SAAA,UACAhH,IAAAU,KAAA,iBAAAoG,cAAAE,SAAA,gBAAAA,SAAA0oD,WAAA9+D,KAAA,UAEAuP,OAAA,WACA,MAAA,UAAAE,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAF,KAAAK,YAGAqL,SAAAE,MAAAD,cACA9Q,QAAAoH,MAAA4J,OAAA,WAAApM,OAAAnP,MACAuK,QAAAO,KAAAsF,gBAAAD,gBALA,SAOA5U,MACA4T,OAAAmH,IAAA,kBAAA,WAsBA,MArBAnH,QAAAnP,MACAg/D,mBAAA,IACAC,iBAAA,GAEA9vD,OAAAR,UAAA5N,OAUAoO,OAAAnP,KAAAk/D,kBAAAvjE,EAAAwjE,KAAAxjE,EAAA8N,OAAA0F,OAAAR,UAAA,SAAA9S,GACA,MAAA,UAAAA,EAAA0b,QACAxN,GAXA8X,IAAAnX,SAAAiE,YAAA7D,KAAA,WACA,MAAA,UAAAxD,QAEA,MADA6H,QAAAR,UAAArH,OACA6H,OAAAnP,KAAAk/D,kBAAAvjE,EAAAwjE,KAAAxjE,EAAA8N,OAAA0F,OAAAR,UAAA,SAAA9S,GACA,MAAA,UAAAA,EAAA0b,QACAxN,KAEAxO,OAMA6T,IAAAU,KAAA,WAAAoG,YAAA,UACA9G,IAAAU,KAAA,iBAAAsG,SAAA,UACAigB,gBAAA3a,KAAAtM,KACAvK,QAAA,IAAA,WACA,MAAAuK,KAAAU,KAAA,iBAAAsG,SAAA,aAGAhH,IAAAc,GAAA,QAAA,eAAA,SAAAT,OACA,GAAA65C,SAAA92B,MAAAptB,EAAAiC,IAAAs6B,KAAA/6B,IAAAw4D,KAAA1+D,KAKA,KAJA+O,MAAAG,iBACA05C,QAAAl6C,IAAAU,KAAA,WACApP,OAAA,EACAkG,IAAA8I,KAAA2vD,OACAj6D,EAAA,EAAAiC,IAAAT,IAAA7F,OAAAsG,IAAAjC,EAAAA,IACAotB,MAAA5rB,IAAAxB,GACAkkD,QAAAx5C,KAAA,SAAA0iB,MAAAzrB,QAAAd,KAAA,QAAA,KAAAlF,SACAL,MAAA8xB,MAAAziB,cAAA,GAAArP,MAGA,OAAAA,QAGAihC,KAAA2nB,QAAA3nB,OACA2nB,QAAAlrC,YAAA,UACAujB,KAAAvjB,YAAA,UACAghD,KAAAz9B,KAAA3hC,KAAA,QACAoP,IAAAU,KAAA,iBAAAoG,cAAAE,SAAA,gBAAAA,SAAAgpD,OAPA,SASAhwD,IAAAc,GAAA,QAAA,eAAA,SAAAT,OACA,GAAA65C,SAAA1nB,KAAAw9B,IAOA,OANA3vD,OAAAG,iBACA05C,QAAAl6C,IAAAU,KAAA,WACA8xB,KAAA0nB,QAAA1nB,OACA0nB,QAAAlrC,YAAA,UACAwjB,KAAAxjB,YAAA,UACAghD,KAAAx9B,KAAA5hC,KAAA,QACAoP,IAAAU,KAAA,iBAAAoG,cAAAE,SAAA,gBAAAA,SAAAgpD,QAEA/jD,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAH,IAAAc,GAAA,QAAA,SAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAymB,gBAAAtc,MAAA3K,SAIAF,KAAAA,OAIA9T,OAAA4T,UAAA,qBAAA,aAAA,UAAA,aAAA,YAAA,aAAA,eAAA,cAAA,aAAA,kBAAA,gBAAAwvD,gBAEAC,uBAAA,SAAA9sD,MAAApQ,WAAAC,MAAA3C,UAAAC,SAAAgB,SAAAu2B,gBAAA1Z,UACA,GAAAzN,KAoCA,OAnCAA,MAAA,SAAAC,OAAAC,KACA,GAAAkwD,iBAAA/vD,MA6BA,OA5BA+vD,iBAAA,KACAnwD,OAAAmH,IAAA,qBAAA,SAAAgB,IAAArN,SAEA,MADAosB,iBAAA3a,KAAAtM,KACAkwD,gBAAAr1D,UAEAkF,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAhH,OAAA,WACA,GAAAhF,QAUA,OATAoS,UAAArB,QACA+a,gBAAAtc,MAAA3K,KACA7E,QAAAoH,MAAApE,OAAA+xD,iBACA/0D,QAAAO,KAAA,WAIA,MAHA6R,UAAA8L,aACAlnB,WAAA2L,WAAA,mBACArO,UAAAQ,KAAAP,SAAAvB,QAAA,SACAuC,SAAAI,OAAA,aAEAqK,QAAAO,KAAA,KAAA,WAEA,MADAhL,UAAAI,OAAA,SACAm2B,gBAAAtc,MAAA3K,QAGAA,IAAAc,GAAA,QAAA,cAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAymB,gBAAAtc,MAAA3K,OAEAA,IAAAc,GAAA,QAAA,gBAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAL,aAIAL,KAAAA,OAIA9T,OAAA4T,UAAA,qBAAA,UAAA,aAAA,UAAA,cAAA,aAAA,aAAA,kBAAA,WAAAyvD,0BAEAp8D,KAAA9G,MO5KA,WACA,GAAAgkE,mBAAAC,mBAAAC,sBAAAC,4BAAAx7D,SAAA9I,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAF,OAAA8G,QAAA9G,OAAA,gBAEA8I,SAAA3I,KAAAD,MAAA4I,SAEAs7D,mBAAA,SAAAh8D,YAKA,QAAAg8D,oBAAAx5D,MAAAnC,EAAA4G,GAAA8B,UAAA3I,QAAAqJ,KAAAtJ,SAAAykB,SAAApM,WAAAW,UACA,GAAApS,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAsI,EAAAA,EACAtI,KAAAkP,GAAAA,GACAlP,KAAAgR,UAAAA,UACAhR,KAAAqI,QAAAA,QACArI,KAAA0R,KAAAA,KACA1R,KAAAoI,SAAAA,SACApI,KAAA6sB,SAAAA,SACA7sB,KAAAygB,WAAAA,WACAzgB,KAAA6sB,SAAAhb,IAAA,YACA7R,KAAA0R,KAAAnL,mBACAvG,KAAAoI,SAAAtE,KAAA9D,KAAAqI,QAAArG,QAAA,UAEAhC,KAAAmO,KAAAnO,KAAA0R,KAAAJ,UACAtR,KAAAmP,YACAH,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA/E,MAAAgY,MAAA,kBAAAjT,MAAAL,YAEAnP,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OACAgP,QAAA,WAAAoS,SAAA8L,YA8BA,MA1DAhmB,QAAA+8D,mBAAAh8D,YAEAg8D,mBAAA5yD,SAAA,SAAA,KAAA,eAAA,aAAA,aAAA,UAAA,cAAA,YAAA,cAAA,YA6BA4yD,mBAAAx8D,UAAAiZ,gBAAA,WACA,GAAArV,IACA,OAAArL,MAAAkP,GAAAC,SAAAyR,aAAA,OAAAvV,IAAArL,KAAAgR,UAAA7C,MAAA9C,IAAAmD,GAAA,QAAAe,KAAA,SAAAC,OACA,MAAA,UAAAL,UACA,GAAAtF,GAAAiC,IAAA4C,OAKA,KAJAc,MAAAL,UACAi1D,QAAAj1D,SAAApF,MAAA,EAAA,GACAkF,IAAAE,UAEAtF,EAAA,EAAAiC,IAAAqD,SAAA3J,OAAAsG,IAAAjC,EAAAA,IACA6E,QAAAS,SAAAtF,GACA6E,QAAA1K,IAAAwL,MAAAiR,WAAAtd,IAAAuL,QAEA,OAAAS,YAEAnP,QAGAikE,mBAAAx8D,UAAAsZ,WAAA,WACA,MAAA/gB,MAAAgR,UAAAW,WAAA,oBAGAsyD,mBAAAx8D,UAAAgL,OAAA,WAEA,MADAzS,MAAA0R,KAAAe,SACAzS,KAAAoI,SAAAtE,KAAA9D,KAAAqI,QAAArG,QAAA,WAGAiiE,oBAEAlkE,MAAA0I,YAEA5I,OAAAqhB,WAAA,qBAAA+iD,oBAEAD,kBAAA,SAAA/7D,YAKA,QAAA+7D,mBAAAv5D,MAAAyE,GAAA0d,KAAAvqB,OAAAiG,EAAA0I,UAAA6b,SAAAzkB,SAAAC,SACA,GAAA2G,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAkP,GAAAA,GACAlP,KAAA4sB,KAAAA,KACA5sB,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAgR,UAAAA,UACAhR,KAAA6sB,SAAAA,SACA7sB,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACA2G,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YAEA,MADAA,OAAAqd,SAAAhb,IAAArC,MAAA/E,MAAAiE,QAAAtD,MACAoE,MAAA/E,MAAAgY,MAAA,mCAEAziB,OACAgP,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OA8CA,MApEAkH,QAAA88D,kBAAA/7D,YAEA+7D,kBAAA3yD,SAAA,SAAA,eAAA,UAAA,eAAA,KAAA,aAAA,YAAA,cAAA,cAuBA2yD,kBAAAv8D,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA60D,iBAEArkE,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA/E,MAAAgY,MAAA,iBAAAjT,MAAA/E,MAAAiE,WAEA1O,QAGAgkE,kBAAAv8D,UAAA48D,aAAA,WACA,MAAArkE,MAAAsI,EAAA2G,KAAAjP,KAAA20C,mBAAA30C,KAAAqtB,iBAGA22C,kBAAAv8D,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAEA,MADAc,OAAA/E,MAAAiE,QAAAA,QACAA,UAEA1O,QAGAgkE,kBAAAv8D,UAAAktC,iBAAA,WACA,MAAA30C,MAAAkP,GAAAC,SAAAmmC,MAAAt1C,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAA8lC,OAEA,MADA9lC,OAAA/E,MAAA6qC,MAAAA,MACAA,QAEAt1C,QAGAgkE,mBAEAjkE,MAAA0I,YAEA5I,OAAAqhB,WAAA,oBAAA8iD,mBAEAG,4BAAA,WACA,GAAAxwD,KAqHA,OApHAA,MAAA,SAAAC,OAAAC,KACA,GAAAywD,uBAAAvgD,UAAAwgD,cAAAC,YAAAC,cAAAC,YAAAviD,KAAAwiD,QAAAC,SAAAC,SAAAC,QAAAC,SAAA/yD,OAAAwI,OAAAwqD,OA+GA,OA9GAF,SAAAjxD,IAAAU,KAAA,0BACAowD,QAAA9wD,IAAAU,KAAA,sBACAwP,UAAAlQ,IAAAU,KAAA,MACAswD,SAAA,EACAN,cAAA,EACA/pD,OAAA,WAEA,MADAqqD,UAAAhxD,IAAAU,KAAA,sBAAAu2B,SACA/mB,UAAAxP,KAAA,MAAA/O,QACAi/D,iBACAD,cACAQ,QAAAL,SAEAxiD,KAAAwiD,SAEAD,cACAM,QAAAF,SAEA3iD,KAAA2iD,UAMA9yD,UAGAyyD,cAAA,WAEA,MADAF,eAAAxgD,UAAA+mB,SACAy5B,cAAAM,UAEAH,YAAA,SAAA15B,KAIA,MAHA,OAAAA,MACAA,KAAA1uB,SAAAyH,UAAA7B,IAAA,OAAA,KAAA,GAEA,IAAA8oB,KAEAw5B,YAAA,SAAAx5B,KAKA,MAJAu5B,eAAAxgD,UAAA+mB,SACAE,MACAA,KAAA1uB,SAAAyH,UAAA7B,IAAA,OAAA,KAAA,GAEAqiD,cAAAM,UAAAN,cAAAv5B,IAAA65B,UAEAD,SAAA,SAAA1lD,UACA,GAAA+lD,QAAAC,OAAAC,OAAAn6B,GAWA,OAVAA,KAAA1uB,SAAAyH,UAAA7B,IAAA,OAAA,IACAijD,OAAAn6B,IAAA65B,SACAI,OAAApxD,IAAAU,KAAA,oCACA2wD,SAAAD,OAAAt3B,WAAA3C,IAAAi6B,OAAAG,cAAAP,UACAK,OAAAC,SACAA,OAAAD,QAEAnhD,UAAAshD,SACAr6B,IAAAm6B,QACAjmD,UACAimD,QAEAJ,SAAA,SAAA7lD,UACA,GAAAimD,QAAAn6B,GASA,OARAA,KAAA1uB,SAAAyH,UAAA7B,IAAA,OAAA,IACAijD,OAAAn6B,IAAA65B,SACAM,OAAA,IACAA,OAAA,GAEAphD,UAAAshD,SACAr6B,IAAAm6B,QACAjmD,UACAimD,QAEAH,QAAA,SAAAx5D,SACA,MAAAA,SAAA0W,IAAA,aAAA,YAEAC,KAAA,SAAA3W,SACA,MAAAA,SAAA0W,IAAA,aAAA,WAEAoiD,sBAAA,aACAtyD,OAAA,WAGA,MAFA+R,WAAA7B,IAAA,MAAA,GACAC,KAAA2iD,SACA3iD,KAAAwiD,UAEA9wD,IAAAc,GAAA,QAAA,yBAAA,SAAAT,OACA,GAAAixD,OAEA,OADAjxD,OAAAG,iBACA0P,UAAAjC,GAAA,aAAA,QAGAkjD,QAAAL,SACAQ,OAAAJ,WACAL,YAAAS,QAAA,OACAhjD,KAAA2iD,YAGAjxD,IAAAc,GAAA,QAAA,qBAAA,SAAAT,OACA,GAAAixD,OAEA,OADAjxD,OAAAG,iBACA0P,UAAAjC,GAAA,aAAA,QAGAkjD,QAAAF,SACAK,QAAAP,WACAJ,YAAAW,QAAA,OACAhjD,KAAAwiD,YAGA/wD,OAAAmH,IAAA,gCAAA,WAEA,MADA/I,UACAwI,WAEAsB,EAAAlX,QAAA+P,GAAA,6BAAA6F,QACA5G,OAAAmH,IAAA,WAAA,WACA,MAAAe,GAAAlX,QAAAoW,IAAA,kCAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,wBAAA,WAAA0wD,8BAEAD,sBAAA,SAAA7iD,SAAAC,WACA,GAAA3N,MAAAN,QAgBA,OAfAA,UAAAiO,UAAAne,IAAA,6BAAA,GACAwQ,KAAA,SAAAC,OAAAC,KACA,GAAA2G,OAOA,OANAA,QAAA,SAAArL,UAIA,MAHA0E,KAAA2O,KAAAnB,SAAAhO,UACAlE,SAAAA,YACAyE,SACAA,OAAA6O,MAAA,kCAEA7O,OAAAmH,IAAA,kBAAA,SAAAgB,IAAA5M,UACA,MAAA,OAAAA,SAAAF,IACAuL,OAAArL,SAAAF,KADA,WAMA0E,KAAAA,OAIA9T,OAAA4T,UAAA,kBAAA,WAAA,cAAAywD,yBAEAp9D,KAAA9G,MW5SA,WACA,GAAAslE,mBAAAC,qBAAAC,sBAAAC,sBAAAC,sBAAAC,qBAAAC,qBAAAC,uBAAAC,mBAAAn9D,SAAA9I,MAEA8I,UAAA3I,KAAAD,MAAA4I,SAEA68D,sBAAA,WACA,GAAA7xD,KAMA,OALAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAAgH,OAAAmrD,SAAA,SAAA/gE,KACA,MAAA6O,KAAAlI,KAAA3G,SAIA2O,KAAAA,OAIA+xD,sBAAA,WACA,GAAA/xD,KAMA,OALAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAAgH,OAAAorD,SAAA,SAAAhhE,KACA,MAAA6O,KAAA2O,KAAAxd,SAIA2O,KAAAA,OAIAgyD,qBAAA,WACA,GAAAhyD,KAMA,OALAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAAgH,OAAAqrD,QAAA,SAAAjhE,KACA,MAAA6O,KAAA2O,KAAA,IAAAxd,IAAA,SAIA2O,KAAAA,OAIAiyD,qBAAA,WACA,GAAAjyD,KAMA,OALAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAAgH,OAAAsrD,QAAA,SAAAlhE,KACA,MAAA6O,KAAAnJ,KAAA,MAAA1F,SAIA2O,KAAAA,OAIA8xD,sBAAA,WACA,GAAA9xD,KAMA,OALAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAAgH,OAAAurD,SAAA,SAAAnhE,KACA,MAAA6O,KAAAnJ,KAAA,OAAA1F,SAIA2O,KAAAA,OAIA4xD,qBAAA,WACA,GAAA5xD,KAMA,OALAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAAgH,OAAAwrD,QAAA,SAAAphE,KACA,MAAA6O,KAAAnJ,KAAA,MAAA1F,SAIA2O,KAAAA,OAIAkyD,uBAAA,WACA,GAAAlyD,KAMA,OALAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAjS,UAAAiL,OAAAgH,OAAAyrD,UAAA,SAAArhE,KACA,MAAA6O,KAAAnJ,KAAA,QAAA1F,SAIA2O,KAAAA,OAIAmyD,mBAAA,WACA,GAAAnyD,KAQA,OAPAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAhH,QAAA9I,OAAA8P,OAAA0rD,YAAA,SAAAthE,KACA,MAAA,OAAAA,IACA6O,IAAAnJ,KAAA,QAAA1F,KADA,WAMA2O,KAAAA,OAIA2xD,kBAAA,WACA,GAAA3xD,KAQA,OAPAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,MAAAhH,QAAA9I,OAAA8P,OAAA2rD,WAAA,SAAAvhE,KACA,MAAA,OAAAA,IACA6O,IAAA2O,KAAAxd,KADA,WAMA2O,KAAAA,OAIA9T,OAAA8G,QAAA9G,OAAA,aAEAA,OAAA4T,UAAA,WAAA+xD,uBAEA3lE,OAAA4T,UAAA,WAAAiyD,uBAEA7lE,OAAA4T,UAAA,UAAAkyD,sBAEA9lE,OAAA4T,UAAA,UAAAmyD,sBAEA/lE,OAAA4T,UAAA,WAAAgyD,uBAEA5lE,OAAA4T,UAAA,UAAA8xD,sBAEA1lE,OAAA4T,UAAA,YAAAoyD,wBAEAhmE,OAAA4T,UAAA,cAAAqyD,oBAEAjmE,OAAA4T,UAAA,aAAA6xD,oBAEAx+D,KAAA9G,MCzIA,WACA,GAAAwmE,sBAAA3mE,MAEA2mE,sBAAA,WACA,QAAAA,wBACAxmE,KAAA4G,OAAAhC,OAAAe,YAaA,MAVA6gE,sBAAA/+D,UAAAtE,IAAA,SAAAoE,IAAAi4B,cAIA,MAHA,OAAAA,eACAA,aAAA,MAEAp/B,EAAA0nD,IAAA9nD,KAAA4G,OAAAW,KACAvH,KAAA4G,OAAAW,KAEAi4B,cAGAgnC,wBAIA3mE,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAsT,QAAA,YAAAqzD,uBAEA1/D,KAAA9G,MC1BA,WACA,GAAAymE,mBAAA5mE,OAAAI,oBACAiH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA1H,qBAAAD,KAAAC,oBAAAD,KAAAC,wBAEAwmE,kBAAA,SAAAx+D,YAKA,QAAAw+D,mBAAAC,UAAAj8D,MAAApI,OAAAuqB,KAAA1d,GAAAsiB,QAAA3E,UACA,GAAA7d,QACAhP,MAAA0mE,UAAAA,UACA1mE,KAAAyK,MAAAA,MACAzK,KAAAqC,OAAAA,OACArC,KAAA4sB,KAAAA,KACA5sB,KAAAkP,GAAAA,GACAlP,KAAAwxB,QAAAA,QACAxxB,KAAA6sB,SAAAA,SACA7sB,KAAAyK,MAAAk8D,cAAAvmE,EAAAm2B,MAAAn2B,EAAAwmE,MAAA3mE,qBACA+b,KAAAhc,KAAAqC,OAAAqE,UAEA1G,KAAAyK,MAAAo8D,eAAA,WAAA7mE,KAAAyK,MAAAk8D,cAAA3qD,KACAhc,KAAAyK,MAAAkpD,YAAA3zD,KAAAqC,OAAAC,MACAtC,KAAAyK,MAAAq8D,aAAA1mE,EAAAwmE,MAAA5mE,KAAA0mE,UAAApgE,gBACAgM,KAAA,UAEAtD,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAqd,SAAAhb,IAAArC,MAAA/E,MAAAiE,QAAAtD,QAEApL,OACAgP,QAAAO,KAAA,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAAgiB,QAAA7sB,OAAA,WAEA3E,OA+BA,MA9DAkH,QAAAu/D,kBAAAx+D,YAEAw+D,kBAAAp1D,SAAA,aAAA,SAAA,eAAA,UAAA,eAAA,aAAA,aAgCAo1D,kBAAAh/D,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAIA,MAHAc,OAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAc,MAAA/E,MAAAkH,WAAA,iBAAAjD,SACAA,UAEA1O,QAGAymE,kBAAAh/D,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,QAGAymE,mBAEA1mE,MAAA0I,YAEA5I,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAqhB,WAAA,oBAAAulD,oBAEA3/D,KAAA9G,MvB9EA,WACA,GAAA+mE,uBAAAhnE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAgnE,sBAAA,SAAA9+D,YAKA,QAAA8+D,uBAAA91D,QAAA5O,QACArC,KAAAiR,QAAAA,QACAjR,KAAAqC,OAAAA,OAaA,MAnBA6E,QAAA6/D,sBAAA9+D,YAEA8+D,sBAAA11D,SAAA,aAAA,gBAOA01D,sBAAAt/D,UAAAvH,aAAA,SAAAC,YAOA,MANA,OAAAA,aACAA,eAEAA,WAAAC,EAAAC,IAAAF,WAAA,SAAAG,GACA,MAAAC,MAAAC,UAAAF,KAEAG,SAAAN,WAAAO,KAAA,OAGAqmE,uBAEAhnE,MAAAyI,UAEA1B,KAAA9G,MwB/BA,WACA,GAAAgnE,aAAAnnE,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAinE,YAAA,SAAA/+D,YAgBA,QAAA++D,aAAA71D,KAAA7I,EAAA2I,SACAjR,KAAAmR,KAAAA,KACAnR,KAAAsI,EAAAA,EACAtI,KAAAiR,QAAAA,QACA+1D,YAAAt/D,UAAAJ,YAAAR,KAAA9G,MA8EA,MAjGAkH,QAAA8/D,YAAA/+D,YAEA++D,YAAA31D,SAAA,QAAA,KAAA,cAEA21D,YAAAv/D,UAAA1E,QAAA,WACA,GAAAmP,MAEA,OADAA,OAAAlS,KAAAiR,QAAA9N,IAAA,SACA+O,OAEA+0D,cAAA,UAAA/0D,WAaA80D,YAAAv/D,UAAAy/D,QAAA,SAAAjrB,SAKA,MAJAA,SAAAl5C,QAAA3C,EAAAyoC,SAAAoT,QAAAl5C,YAAA/C,KAAA+C,WACA3C,EAAAqM,cAAAwvC,QAAAx3C,QACAw3C,QAAAx3C,KAAAlE,KAAAC,UAAAy7C,QAAAx3C,OAEAzE,KAAAmR,KAAA8qC,UAGA+qB,YAAAv/D,UAAAtE,IAAA,SAAAa,IAAA3B,OAAA45C,SAQA,MAPAA,SAAA77C,EAAAyoC,OACA59B,OAAA,MACAjH,IAAAA,KACAi4C,SACA55C,SACA45C,QAAA55C,OAAAA,QAEArC,KAAAknE,QAAAjrB,UAGA+qB,YAAAv/D,UAAAxE,KAAA,SAAAe,IAAAS,KAAApC,OAAA45C,SAWA,MAVAA,SAAA77C,EAAAyoC,OACA59B,OAAA,OACAjH,IAAAA,KACAi4C,SACAx3C,OACAw3C,QAAAx3C,KAAAA,MAEApC,SACA45C,QAAA55C,OAAAA,QAEArC,KAAAknE,QAAAjrB,UAGA+qB,YAAAv/D,UAAAvE,IAAA,SAAAc,IAAAS,KAAApC,OAAA45C,SAWA,MAVAA,SAAA77C,EAAAyoC,OACA59B,OAAA,MACAjH,IAAAA,KACAi4C,SACAx3C,OACAw3C,QAAAx3C,KAAAA,MAEApC,SACA45C,QAAA55C,OAAAA,QAEArC,KAAAknE,QAAAjrB,UAGA+qB,YAAAv/D,UAAAzE,MAAA,SAAAgB,IAAAS,KAAApC,OAAA45C,SAWA,MAVAA,SAAA77C,EAAAyoC,OACA59B,OAAA,QACAjH,IAAAA,KACAi4C,SACAx3C,OACAw3C,QAAAx3C,KAAAA,MAEApC,SACA45C,QAAA55C,OAAAA,QAEArC,KAAAknE,QAAAjrB,UAGA+qB,YAAAv/D,UAAA,UAAA,SAAAzD,IAAAS,KAAApC,OAAA45C,SAWA,MAVAA,SAAA77C,EAAAyoC,OACA59B,OAAA,SACAjH,IAAAA,KACAi4C,SACAx3C,OACAw3C,QAAAx3C,KAAAA,MAEApC,SACA45C,QAAA55C,OAAAA,QAEArC,KAAAknE,QAAAjrB,UAGA+qB,aAEAjnE,MAAAyI,SAEA3I,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAsT,QAAA,UAAA6zD,cAEAlgE,KAAA9G,MCjHA,WACA,GAAAmnE,eAAAC,YAAAz+D,SAAA7F,SAAAjD,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEA7F,UACAukE,GAAA,MACAC,YAAA,KACAz2C,OAAA,EACA02C,IAAA,MAGAH,YAAA,SAAAn/D,YAGA,QAAAm/D,aAAAp2D,UAAAw2D,WACAxnE,KAAAgR,UAAAA,UACAhR,KAAAi8C,QAAA77C,EAAAmS,MAAAzP,UAAA,GACA9C,KAAAi8C,QAAAwrB,UACAC,IACAC,IAAAH,YAoBA,MA3BAtgE,QAAAkgE,YAAAn/D,YAYAm/D,YAAA3/D,UAAAmgE,YAAA,SAAAC,UAGA,MAFAC,MAAAC,OAAAF,UACA7nE,KAAAgR,UAAAg3D,YAAAH,SACA7nE,KAAAgR,UAAAW,WAAA,kBAAAk2D,WAGAT,YAAA3/D,UAAArB,WAAA,WAEA,MADA0hE,MAAAloE,KAAAI,KAAAi8C,SACAj8C,KAAAgR,UAAAgc,EAAA86C,KAAA96C,GAGAo6C,YAAA3/D,UAAAulB,EAAA,SAAAlpB,KAAAmkE,MACA,MAAAH,MAAA96C,EAAAlpB,KAAAmkE,OAGAb,aAEArnE,MAAAyI,SAEA2+D,cAAA,SAAAnhE,WAAAF,OACA,GAAA6N,KAkBA,OAjBAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA/Q,GAAAiC,IAAAu7D,GAAAprB,QAAAgsB,KAAA58D,IAAAoE,QAAA6uB,EAAAD,MAKA,KAJAA,OAAAzjB,OAAAstD,GAAA7iE,MAAA,KACA42C,QAAArhC,OAAAutD,QAAA,KACAF,KAAAr0D,OAAA/I,MAAAoxC,SACAxsC,WACA5F,EAAA,EAAAiC,IAAAuyB,OAAA74B,OAAAsG,IAAAjC,EAAAA,IACAy0B,EAAAD,OAAAx0B,GACA,KAAAy0B,EAAA30B,QAAA,KACA8F,QAAAnL,KAAAuP,IAAA2O,KAAApiB,EAAA6V,OAAAnQ,MAAAknB,EAAAsR,EAAA2pC,UAEA58D,IAAAizB,EAAAj5B,MAAA,KAAAgiE,GAAAh8D,IAAA,GAAAizB,EAAAjzB,IAAA,GACAoE,QAAAnL,KAAAuP,IAAAnJ,KAAA28D,GAAAjnE,EAAA6V,OAAAnQ,MAAAknB,EAAAsR,EAAA2pC,SAGA,OAAAx4D,WAGAkE,KAAAA,KACAH,SAAA,IACA/I,OAAA,IAIA5K,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAsT,QAAA,WAAA,aAAA,YAAAi0D,cAEAvnE,OAAA4T,UAAA,MAAA,aAAA,UAAA0zD,iBAEArgE,KAAA9G,MChFA,WACA,GAAAooE,iBAAAvoE,MAEAuoE,iBAAA,SAAA9kE,UAAA2qB,QAaA,MAZA3qB,WAAAyM,SAAA,SAAAtF,OACA,GAAA49D,WAAAC,EAMA,OALAD,WAAAp6C,OAAA8/B,QACAua,GAAA79D,MAAAsQ,IAAA,yBAAA,WAEA,MADAkT,QAAA8/B,QAAAsa,UACAC,OAEAhlE,WAEAA,UAAAwM,uBAAA,SAAA1E,KAAAb,OACA,MAAA0jB,QAAA8/B,QAAA1rD,OAAA+I,QAAAb,OAEAjH,WAGAzD,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAuE,QAAA,eAAA,YAAA,SAAA,aAAAgkE,mBAEAthE,KAAA9G,MCvBA,WACA,GAAAuoE,OAAAC,aAAA3oE,OAAA8f,SAAA5f,MACA4J,WAAAA,SAAA,SAAAC,MAAA,IAAA,GAAAC,GAAA,EAAAC,EAAA9J,KAAAwF,OAAAsE,EAAAD,EAAAA,IAAA,GAAAA,IAAA7J,OAAAA,KAAA6J,KAAAD,KAAA,MAAAC,EAAA,OAAA,IACA3C,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA4gE,OAAA,WACA,QAAAA,OAAAn9D,KAAA3G,KAAAgkE,WACAzoE,KAAA0oE,OAAAjkE,KACAzE,KAAA2oE,MAAAv9D,KACApL,KAAA4oE,WAAAH,UACAzoE,KAAA6oE,SAAApkE,MACAzE,KAAAoG,aAsIA,MAnIAmiE,OAAA9gE,UAAA8K,MAAA,WACA,GAAAwmB,SAIA,OAHAA,UAAA,GAAAwvC,OAAAvoE,KAAA2oE,MAAA3oE,KAAA0oE,OAAA1oE,KAAA4oE,YACA7vC,SAAA+vC,eAAA9oE,KAAA8oE,eACA/vC,SAAAgwC,YAAA/oE,KAAA+oE,YACAhwC,UAGAwvC,MAAA9gE,UAAAuhE,WAAA,WACA,GAAAC,UAAAC,WAAAC,SAAA99D,IAAAoE,OACApE,KAAArL,KAAA4oE,WACAn5D,UACA,KAAAw5D,WAAA59D,KACA89D,SAAA99D,IAAA49D,UACAC,WAAA/1D,QAAAi2D,MAAAD,UACAD,YAGAz5D,QAAAnL,KAAAtE,KAAA0oE,OAAAO,UAAAC,WAAAlpE,KAAA0oE,OAAAO,WAEA,OAAAx5D,UAGA84D,MAAA9gE,UAAA4hE,cAAA,WACA,MAAA,MAGAd,MAAA9gE,UAAA6hE,QAAA,WACA,MAAAtpE,MAAA2oE,OAGAJ,MAAA9gE,UAAAqK,SAAA,SAAA9O,OAOA,MANA,OAAAA,QACAA,OAAA,GAEA,MAAAhD,KAAA0oE,OAAAhkE,UACA1E,KAAA8oE,eAAApkE,QAAA1E,KAAA0oE,OAAAhkE,SAEA1B,MACA5C,EAAA8G,UAAAlH,KAAA8oE,gBAEA1oE,EAAA8G,UAAAlH,KAAA0oE,OAAA1oE,KAAA8oE,iBAGAP,MAAA9gE,UAAAohE,SAAA,SAAAU,OAIA,MAHAvpE,MAAA0oE,OAAAa,MACAvpE,KAAA8oE,kBACA9oE,KAAAgpE,aACAhpE,KAAA+oE,aAAA,GAGAR,MAAA9gE,UAAA4rC,QAAA,SAAAjoC,KAAAb,OAEA,MADAvK,MAAA8oE,eAAA19D,MAAAb,MACAvK,KAAA+oE,aAAA,GAGAR,MAAA9gE,UAAArB,WAAA,WACA,GAAAojE,QAAAC,KAAAC,MA2BA,OA1BAD,MAAAzpE,KACAwpE,OAAA,SAAAp+D,MACA,MAAA,YACA,MAAA,gBAAAA,OAAA,OAAAA,KAAAu+D,OAAA,EAAA,GACAF,KAAAr+D,MAEAzB,QAAA7C,KAAA1G,EAAAiK,KAAAo/D,KAAAX,gBAAA19D,MAAA,EACAq+D,KAAAf,OAAAt9D,MAEAq+D,KAAAX,eAAA19D,QAGAs+D,OAAA,SAAAt+D,MACA,MAAA,UAAAb,OACA,MAAA,gBAAAa,OAAA,OAAAA,KAAAu+D,OAAA,EAAA,QACAF,KAAAr+D,MAAAb,YAGAk/D,KAAAf,OAAAt9D,QAAAb,OACAk/D,KAAAX,eAAA19D,MAAAb,MACAk/D,KAAAV,aAAA,SAEAU,MAAAX,eAAA19D,SAIAhL,EAAAqc,KAAAzc,KAAA0oE,OAAA,SAAAn+D,MAAAa,MACA,GAAA6wC,QAOA,OANAA,UACA94C,IAAAqmE,OAAAp+D,MACAyG,IAAA63D,OAAAt+D,MACAw+D,YAAA,EACAC,cAAA,GAEA5yB,OAAA6yB,eAAAL,KAAAr+D,KAAA6wC,YAIAssB,MAAA9gE,UAAAgX,UAAA,WACA,GAAAha,KAKA,OAJAA,OACAA,KAAArE,EAAAmS,MAAAvS,KAAA0oE,QACAt9D,KAAApL,KAAA2oE,OAEApoE,KAAAC,UAAAiE,OAGA8jE,MAAA9gE,UAAA6vC,WAAA,WACA,MAAAt3C,MAAA+oE,aAGAR,MAAA9gE,UAAAsiE,oBAAA,SAAA1tC,WACA,MAAA,OAAAr8B,KAAA8oE,eAAAzsC,YAGAksC,MAAA9gE,UAAAuiE,UAAA,WAGA,MAFAhqE,MAAA+oE,aAAA,EACA/oE,KAAA0oE,OAAA1oE,KAAA8R,WACA9R,KAAA8oE,mBAGAP,MAAA9gE,UAAA2rB,OAAA,WAEA,MADApzB,MAAA8oE,kBACA9oE,KAAA+oE,aAAA,GAGAR,MAAA0B,aAAA,SAAAC,OACA,GAAAC,OAAAj5D,KAGA,OAFAi5D,OAAA5pE,KAAAgf,MAAA2qD,OACAh5D,MAAA,GAAAq3D,OAAA4B,MAAAnmE,IAAAmmE,MAAA1lE,OAIA8jE,SAIAxoE,MAAAC,KAAAD,MAEAyoE,aAAA,SAAAvgE,YAKA,QAAAugE,cAAAlgE,EAAA8I,KAAAH,QAAAE,MACAnR,KAAAsI,EAAAA,EACAtI,KAAAoR,KAAAA,KACApR,KAAAiR,QAAAA,QACAjR,KAAAmR,KAAAA,KACAq3D,aAAA9gE,UAAAJ,YAAAR,KAAA9G,MAGA,MAZAkH,QAAAshE,aAAAvgE,YAEAugE,aAAAn3D,SAAA,KAAA,UAAA,aAAA,WAUAm3D,cAEAzoE,MAAAyI,SAEAmX,SAAA,WACA,GAAAxM,QAoBA,OAnBAA,YACAA,QAAA3B,WAAA,SAAApG,KAAA3G,KAAA2lE,IAAA3B,WAOA,MANA,OAAA2B,MACAA,IAAA7B,OAEA,MAAAE,YACAA,cAEA,GAAA2B,KAAAh/D,KAAA3G,KAAAgkE,YAEAt1D,QAAAi3D,IAAA7B,MACAp1D,QAAAi2D,OACAiB,MAAA,SAAA9/D,OACA,MAAA+R,UAAA/R,MAAA,KAEA+/D,QAAA,SAAA//D,OACA,MAAA+C,YAAA/C,MAAA,MAGA4I,SAGAtT,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAuE,QAAA,YAAA,KAAA,QAAA,UAAA,aAAAub,YAEA7Y,KAAA9G,MCrMA,WACA,GAAAuqE,yBAAAC,sBAAA7hE,SAAA9I,OAAAE,MAAA0J,KACAvC,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEA0J,KAAAzJ,KAAAD,MAAA0J,KAEAd,SAAA3I,KAAAD,MAAA4I,SAEA9I,OAAA8G,QAAA9G,OAAA,aAEA2qE,sBAAA,SAAAviE,YAGA,QAAAuiE,yBACAxqE,KAAAoR,QA+BA,MAlCAlK,QAAAsjE,sBAAAviE,YAMAuiE,sBAAA/iE,UAAAgS,OAAA,SAAArI,MACA,MAAApR,MAAAoR,KAAAhR,EAAAyoC,SAAA7oC,KAAAoR,KAAAA,WAGAo5D,sBAAA/iE,UAAAgjE,UAAA,SAAAzmE,IAAA+X,KACA,GAAA2uD,SAQA,OAPA,OAAA3uD,MACAA,QAEA2uD,SAAA,SAAAz5B,OAEA,MADAA,OAAAxnC,KAAAwnC,MAAA,KACAl1B,IAAAk1B,QAAA,aAEAjtC,IAAAD,QAAA,UAAA2mE,WAGAF,sBAAA/iE,UAAAzF,QAAA,SAAAoJ,KAAA2Q,KACA,GAAA/X,IAEA,OADAA,KAAAhE,KAAAoR,KAAAhG,MACApH,IAGA+X,IACA/b,KAAAyqE,UAAAzmE,IAAA+X,KAEA/X,IALA,IAQAwmE,uBAEAzqE,MAAAyI,SAEA3I,OAAAsT,QAAA,aAAAq3D,uBAEAD,wBAAA,SAAA/wD,SAAAvT,MAAA5C,GAAAC,WACA,GAAAqnE,WAAAh3D,KAAAi3D,QA6EA,OA5EAD,WAAA,SAAA/2D,OAAAlJ,MACA,GAAA0iB,QAKA,OAJAA,SAAA/pB,GAAAgJ,QACA1D,SAAAiL,OAAAlJ,KAAA,SAAA4zB,GACA,MAAAlR,SAAAprB,QAAAs8B,KAEAlR,QAAApe,SAEA47D,SAAA,SAAAnmE,KAAAmP,QACA,GAAAxI,MAAA/I,OAAAowB,SAAApnB,IAAAgzB,MAaA,OAZAhzB,KAAAjL,EAAAC,IAAAoE,KAAAY,MAAA,KAAAoE,MAAA2B,KAAAC,IAAA,GAAAhJ,OAAAgJ,IAAA,GAEAhJ,OADAA,OACAjC,EAAAC,IAAAgC,OAAAgD,MAAA,KAAAoE,SAIA40B,OAAAj+B,EAAAC,IAAAgC,OAAA,SAAA/B,GACA,MAAAmJ,MAAAnJ,EAAA+E,MAAA,KAAA,MAEAotB,SAAAryB,EAAAC,IAAAg+B,OAAA,SAAA/9B,GACA,MAAAqqE,WAAA/2D,OAAAtT,KAEA+C,GAAA4L,IAAAwjB,UAAAljB,KAAA,WACA,GAAA1F,GAAAD,KAAArC,IAAAuE,IAAAmwC,QAAA9jB,KAAA5tB,KAEA;IADA0xC,WACApyC,EAAA,EAAAiC,IAAAzJ,OAAAmD,OAAAsG,IAAAjC,EAAAA,IACAD,KAAAvH,OAAAwH,GACAsuB,KAAA/3B,EAAAC,IAAAuJ,KAAAvE,MAAA,KAAAoE,MAAAlC,IAAA4wB,KAAA,GAAA5tB,MAAA4tB,KAAA,GACA8jB,QAAA10C,KAAAqM,OAAA/I,MAAAN,MAEA,QAAAa,KAAA6wC,YAGAtoC,KAAA,SAAAC,OAAAC,IAAA+G,QAuCA,MAtCA/G,KAAAiO,GAAA,MACAjO,IAAAnJ,KAAA,OAAA,KAEAmJ,IAAAc,GAAA,aAAA,SAAAT,OACA,GAAA6O,OAEA,OADAA,QAAAjH,EAAA5H,MAAA8O,eACAD,OAAAte,KAAA,WAAA,OACAmmE,SAAAhwD,OAAAiwD,MAAAj3D,QAAArE,KAAA,SAAAxD,QACA,GAAA++D,SAAA1/D,KAAA6wC,QAAAj4C,IAAAmK,IAYA,OAXA/C,MAAAW,OAAA,GAAAkwC,QAAAlwC,OAAA,GACAoC,KAAAlI,MAAAqL,UACAnD,OACA8tC,QAAA9tC,KAAAA,KAAAsG,UAEAzQ,IAAAwV,SAAAxX,QAAAoJ,MACA0/D,QAAAtxD,SAAAixD,UAAAzmE,IAAAi4C,SACAl5B,OAAAte,KAAA,UAAAqmE,SACA/nD,OAAAjB,GAAA,MACAiB,OAAArY,KAAA,OAAAogE,SAEAj3D,IAAAc,GAAA,QAAA,SAAAT,OAGA,GAFAA,MAAAG,iBACA0O,OAAAjH,EAAA5H,MAAA8O,gBACAD,OAAAJ,SAAA,WAIA,OADAmoD,QAAA/nD,OAAAte,KAAA,WACAyP,MAAAwO,OACA,IAAA,GAEA,MADApf,WAAAU,IAAA8mE,SACAl3D,OAAAtH,QACA,KAAA,GACA,MAAA1H,QAAAub,KAAA2qD,gBAMAl3D,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,SAAA,aAAA,UAAA,KAAA,cAAA82D,2BAEAzjE,KAAA9G,MC3IA,WACA,GAAA+qE,mBAAAlrE,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAgrE,kBAAA,SAAA9iE,YAKA,QAAA8iE,mBAAAziE,EAAA0iE,OAAA/5D,QAAAE,KAAAC,MACApR,KAAAsI,EAAAA,EACAtI,KAAAkR,MAAA85D,OACAhrE,KAAAiR,QAAAA,QACAjR,KAAAmR,KAAAA,KACAnR,KAAAoR,KAAAA,KACA25D,kBAAArjE,UAAAJ,YAAAR,KAAA9G,MAiSA,MA3SAkH,QAAA6jE,kBAAA9iE,YAEA8iE,kBAAA15D,SAAA,KAAA,WAAA,aAAA,UAAA,WAWA05D,kBAAAtjE,UAAAwjE,mBAAA,SAAA/5D,OACA,GAAAg6D,WAEA,OADAA,YAAAh6D,MAAAm4D,gBACArpE,KAAAoR,KAAApP,QAAAkP,MAAAo4D,WAAA,IAAAp4D,MAAAg6D,aAGAH,kBAAAtjE,UAAA0jE,4BAAA,SAAAj6D,OACA,MAAAlR,MAAAoR,KAAApP,QAAAkP,MAAAo4D,UAAAp4D,MAAA9J,SAGA2jE,kBAAAtjE,UAAAuY,OAAA,SAAA5U,KAAA3G,KAAAgkE,UAAA2C,aACA,GAAAh+C,SAAApe,QAAAhL,GAoBA,OAnBA,OAAAykE,YACAA,cAEA,MAAA2C,cACAA,gBAEAh+C,QAAAptB,KAAAsI,EAAA+D,QACArI,IAAAhE,KAAAoR,KAAApP,QAAAoJ,MACA4D,QAAAhP,KAAAmR,KAAAlO,KAAAe,IAAAzD,KAAAC,UAAAiE,OACAuK,QAAAkG,QAAA,SAAA1F,OACA,MAAA,UAAA67D,OACA,MAAAj+C,SAAAprB,QAAAwN,MAAA0B,MAAAM,WAAApG,KAAAigE,MAAA,KAAA5C,cAEAzoE,OACAgP,QAAA6H,MAAA,WACA,MAAA,UAAApS,MACA,MAAA2oB,SAAAlpB,OAAAO,QAEAzE,OACAotB,QAAApe,SAGA+7D,kBAAAtjE,UAAAuK,OAAA,SAAAd,MAAA7O,QACA,GAAA+qB,SAAApe,QAAAhL,GAaA,OAZA,OAAA3B,SACAA,WAEA+qB,QAAAptB,KAAAsI,EAAA+D,QACArI,IAAAhE,KAAAirE,mBAAA/5D,OACAlC,QAAAhP,KAAAmR,KAAA,UAAAnN,OAAA3B,QACA2M,QAAAkG,QAAA,WACA,MAAAkY,SAAAprB,QAAAkP,SAEAlC,QAAA6H,MAAA,WACA,MAAAuW,SAAAlpB,OAAAgN,SAEAkc,QAAApe,SAGA+7D,kBAAAtjE,UAAAyrB,QAAA,SAAA46B,OAAA9qD,OACA,GAAAyvB,SASA,OARA,OAAAzvB,QACAA,OAAA,GAEAyvB,SAAAryB,EAAAC,IAAAytD,OAAA,SAAAt+C,OACA,MAAA,UAAAlP,GACA,MAAAkP,OAAA+V,KAAAjlB,GAAA,KAEAN,OACAA,KAAAsI,EAAA2G,IAAAwjB,WAGAs4C,kBAAAtjE,UAAA8d,KAAA,SAAArU,MAAAlO,OACA,GAAAyB,MAAA2oB,QAAApe,QAAAhL,GAKA,OAJA,OAAAhB,QACAA,OAAA,GAEAoqB,QAAAptB,KAAAsI,EAAA+D,SACA6E,MAAAomC,cAAAt0C,OACAoqB,QAAAprB,QAAAkP,OACAkc,QAAApe,UAEAhL,IAAAhE,KAAAirE,mBAAA/5D,OACAzM,KAAAlE,KAAAC,UAAA0Q,MAAAY,SAAA9O,QAEAgM,QADAhM,MACAhD,KAAAmR,KAAAnO,MAAAgB,IAAAS,MAEAzE,KAAAmR,KAAAjO,IAAAc,IAAAS,MAEAuK,QAAAkG,QAAA,WACA,MAAA,UAAAzQ,MAKA,MAJAyM,OAAA63D,aAAA,EACA73D,MAAAw3D,OAAAtoE,EAAA8G,OAAAgK,MAAAY,WAAArN,MACAyM,MAAA43D,kBACA53D,MAAA83D,aACA57C,QAAAprB,QAAAkP,SAEAlR,OACAgP,QAAA6H,MAAA,SAAApS,MACA,MAAA2oB,SAAAlpB,OAAAO,QAEA2oB,QAAApe,UAGA+7D,kBAAAtjE,UAAAs7D,cAAA,SAAA7xD,MAAAmrB,UAAAr5B,OACA,GAAAyB,MAAA2oB,QAAApe,QAAAhL,GAKA,OAJA,OAAAhB,QACAA,OAAA,GAEAoqB,QAAAptB,KAAAsI,EAAA+D,SACA6E,MAAAomC,cAAAt0C,OACAoqB,QAAAprB,QAAAkP,OACAkc,QAAApe,UAEAhL,IAAAhE,KAAAmrE,4BAAAj6D,OACAzM,QACAA,KAAA43B,WAAAnrB,MAAAY,WAEA9C,QADAhM,MACAhD,KAAAmR,KAAAnO,MAAAgB,IAAAS,MAEAzE,KAAAmR,KAAAjO,IAAAc,IAAAS,MAEAuK,QAAAkG,QAAA,WACA,MAAA,UAAAzQ,MAKA,MAJAyM,OAAA63D,aAAA,EACA73D,MAAAw3D,OAAAtoE,EAAA8G,OAAAgK,MAAAY,WAAArN,MACAyM,MAAA43D,kBACA53D,MAAA83D,aACA57C,QAAAprB,QAAAkP,SAEAlR,OACAgP,QAAA6H,MAAA,SAAApS,MACA,MAAA2oB,SAAAlpB,OAAAO,QAEA2oB,QAAApe,UAGA+7D,kBAAAtjE,UAAA6jE,QAAA,SAAAp6D,OACA,GAAAkc,SAAApe,QAAAhL,GAcA,OAbAopB,SAAAptB,KAAAsI,EAAA+D,QACArI,IAAAhE,KAAAirE,mBAAA/5D,OACAlC,QAAAhP,KAAAmR,KAAAhO,IAAAa,KACAgL,QAAAkG,QAAA,SAAAzQ,MAKA,MAJAyM,OAAA43D,kBACA53D,MAAAw3D,OAAAjkE,KACAyM,MAAA63D,aAAA,EACA73D,MAAA83D,aACA57C,QAAAprB,QAAAkP,SAEAlC,QAAA6H,MAAA,SAAApS,MACA,MAAA2oB,SAAAlpB,OAAAO,QAEA2oB,QAAApe,SAGA+7D,kBAAAtjE,UAAA8jE,UAAA,SAAAngE,KAAA/I,OAAA45C,SACA,GAAAuvB,aAAAxnE,GAWA,OAVA,OAAAi4C,UACAA,YAEAj4C,IAAAhE,KAAAoR,KAAApP,QAAAoJ,MACAogE,aACAzoE,YAEAk5C,QAAAwvB,mBACAD,YAAAzoE,QAAA,wBAAA,KAEA/C,KAAAmR,KAAAhO,IAAAa,IAAA3B,OAAAmpE,aAAAj8D,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,MAAArE,GAAAC,IAAAoE,KAAAA,KAAA,SAAAnE,GACA,MAAAkP,OAAA0B,MAAAM,WAAApG,KAAA9K,OAGAN,QAGA+qE,kBAAAtjE,UAAAikE,kBAAA,SAAAtgE,KAAAoD,GAAA6tB,UAAAh6B,OAAA45C,SACA,GAAAuvB,aAAAxnE,GAWA,OAVA,OAAAi4C,UACAA,YAEAj4C,IAAAhE,KAAAoR,KAAApP,QAAAoJ,KAAAoD,IACAg9D,aACAzoE,YAEAk5C,QAAAwvB,mBACAD,YAAAzoE,QAAA,wBAAA,KAEA/C,KAAAmR,KAAAhO,IAAAa,IAAA3B,OAAAmpE,aAAAj8D,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAAyM,MAGA,OAFAA,OAAA1B,MAAA0B,MAAAM,WAAApG,KAAA3G,KAAAA,KAAA43B,YACAnrB,MAAA9J,OAAAoH,GACA0C,QAEAlR,QAGA+qE,kBAAAtjE,UAAA8O,SAAA,SAAAnL,KAAAoD,GAAAnM,OAAA45C,SACA,GAAAuvB,aAAAxnE,GAcA,OAbA,OAAAi4C,UACAA,YAEAj4C,IAAAhE,KAAAoR,KAAApP,QAAAoJ,MACAoD,KACAxK,IAAAA,IAAA,IAAAwK,IAEAg9D,aACAzoE,YAEAk5C,QAAAwvB,mBACAD,YAAAzoE,QAAA,wBAAA,KAEA/C,KAAAmR,KAAAhO,IAAAa,IAAA3B,OAAAmpE,aAAAj8D,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,MAAA+K,OAAA0B,MAAAM,WAAApG,KAAA3G,KAAAA,QAEAzE,QAGA+qE,kBAAAtjE,UAAAkkE,YAAA,SAAAvgE,KAAAoD,GAAAnM,OAAA45C,SACA,GAAAuvB,aAAAxnE,GAcA,OAbA,OAAAi4C,UACAA,YAEAj4C,IAAAhE,KAAAoR,KAAApP,QAAAoJ,MACAoD,KACAxK,IAAAA,IAAA,IAAAwK,IAEAg9D,YAAAprE,EAAAyoC,OACA9lC,YACAk5C,SACAA,QAAAwvB,mBACAD,YAAAzoE,QAAA,wBAAA,KAEA/C,KAAAmR,KAAAhO,IAAAa,IAAA3B,OAAAmpE,aAAAj8D,KAAA,WACA,MAAA,UAAA9K,MACA,MAAAA,MAAAA,OAEAzE,QAGA+qE,kBAAAtjE,UAAAmkE,eAAA,SAAAxgE,KAAA/I,OAAA45C,SACA,GAAAuvB,aAAAxnE,GAQA,OAPA,OAAAi4C,UACAA,YAEAj4C,IAAAhE,KAAAoR,KAAApP,QAAAoJ,MACAogE,YAAAprE,EAAAyoC,OACA9lC,YACAk5C,SACAj8C,KAAAmR,KAAAhO,IAAAa,IAAA3B,OAAAmpE,aAAAj8D,KAAA,SAAAC,OACA,MAAA,UAAA/K,MACA,GAAA1B,SAAAgJ,MASA,OARAhJ,SAAA0B,KAAA1B,UACAgJ,UACAA,OAAA+hD,OAAA1tD,EAAAC,IAAAoE,KAAAA,KAAA,SAAAnE,GACA,MAAAkP,OAAA0B,MAAAM,WAAApG,KAAA9K,KAEAyL,OAAA2sC,MAAAp8B,SAAAvZ,QAAA,sBAAA,IACAgJ,OAAAgiD,QAAAzxC,SAAAvZ,QAAA,yBAAA,EAAA,IACAgJ,OAAAiiD,YAAA1xC,SAAAvZ,QAAA,kBAAA,IACAgJ,SAEA/L,QAGA+qE,kBAAAtjE,UAAAzF,QAAA,SAAAi6C,SACA,GAAA4vB,OAAAxpE,MAqBA,OApBAA,WACA,MAAA45C,QAAA35C,QACAD,OAAAqM,QAAAutC,QAAA35C,OAEA,MAAA25C,QAAA4U,QACAxuD,OAAAgkB,GAAA41B,QAAA4U,OAEA,MAAA5U,QAAAwV,UACApvD,OAAAgjB,KAAA42B,QAAAwV,SAEA,MAAAxV,QAAA8N,WACA1nD,OAAAs2B,MAAAsjB,QAAA8N,UAEA,MAAA9N,QAAAgH,QACA5gD,OAAAqgC,UAAAuZ,QAAAgH,OAEA,MAAAhH,QAAA6vB,WACAzpE,OAAAypE,SAAA7vB,QAAA6vB,UAEAD,QAAA5vB,QAAA6vB,UAAA7vB,QAAAgH,OACAjjD,KAAA2rE,YAAA,WAAA,KAAAtpE,QACAwpE,MAAAA,SAIAd,mBAEAhrE,MAAAyI,SAEA3I,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAsT,QAAA,UAAA43D,oBAEAjkE,KAAA9G,MC3TA,WACA,GAAA+rE,gBAAAlsE,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAgsE,eAAA,SAAA9jE,YAKA,QAAA8jE,kBACAA,eAAArkE,UAAAJ,YAAAR,KAAA9G,MAsCA,MA3CAkH,QAAA6kE,eAAA9jE,YAEA8jE,eAAA16D,SAAA,cAMA06D,eAAAtkE,UAAAtE,IAAA,SAAAoE,IAAAykE,UACA,GAAAC,gBAEA,OADAA,iBAAAC,aAAAC,QAAA5kE,KACA,OAAA0kE,gBACAD,UAAA,KAEAzrE,KAAAgf,MAAA0sD,kBAGAF,eAAAtkE,UAAAoK,IAAA,SAAAtK,IAAAvC,KACA,MAAA5E,GAAAue,SAAApX,KACAnH,EAAAqc,KAAAlV,IAAA,SAAAiI,OACA,MAAA,UAAAxK,IAAAuC,KACA,MAAAiI,OAAAqC,IAAAtK,IAAAvC,OAEAhF,OAEAksE,aAAAE,QAAA7kE,IAAAhH,KAAAC,UAAAwE,OAIA+mE,eAAAtkE,UAAAqH,SAAA,SAAAvH,KACA,GAAAgD,MAEA,OADAA,OAAAvK,KAAAmD,IAAAoE,KACA,OAAAgD,OAGAwhE,eAAAtkE,UAAAuK,OAAA,SAAAzK,KACA,MAAA2kE,cAAAG,WAAA9kE,MAGAwkE,eAAAtkE,UAAAsK,MAAA,WACA,MAAAm6D,cAAAn6D,SAGAg6D,gBAEAhsE,MAAAyI,SAEA3I,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAsT,QAAA,aAAA44D,iBAEAjlE,KAAA9G,MC3DA,WACA,GAAAssE,aAAAz3C,OAAAh1B,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEAktB,QAAA,SAAA03C,IAAA9zB,KAEA,MADAA,KAAAr4C,EAAAmS,MAAAkmC,KACA8zB,IAAAxoE,QAAA,MAAA,WACA,MAAAyoE,QAAA/zB,IAAA58B,YAIA9b,MAAAC,KAAAD,MAEAusE,YAAA,SAAArkE,YAKA,QAAAqkE,aAAA1lE,QACA5G,KAAA4G,OAAAA,OACA5G,KAAAoR,QACApR,KAAAysE,QAAAzsE,KAAA4G,OAAAzD,IAAA,OA8BA,MArCA+D,QAAAolE,YAAArkE,YAEAqkE,YAAAj7D,SAAA,aAQAi7D,YAAA7kE,UAAAgS,OAAA,SAAArI,MACA,MAAApR,MAAAoR,KAAAhR,EAAAyoC,MAAA7oC,KAAAoR,KAAAA,OAGAk7D,YAAA7kE,UAAAzF,QAAA,WACA,GAAAgb,MAAA5R,KAAApH,GAEA,IADAgZ,KAAA5c,EAAAmsB,QAAAvkB,WACA,IAAAgV,KAAAxX,OACA,KAAAknE,OAAA,6BAIA,OAFAthE,MAAA4R,KAAAjT,MAAA,EAAA,GAAA,GACA/F,IAAA6wB,OAAA70B,KAAAoR,KAAAhG,MAAA4R,KAAAjT,MAAA,IACA8qB,OAAA,SAAAz0B,EAAA4J,IAAA2iE,MAAA3sE,KAAAysE,QAAA,KAAArsE,EAAA4J,IAAAgU,MAAAha,IAAA,QAGAsoE,YAAA7kE,UAAA8yD,gBAAA,WACA,GAAAv2D,IAEA,OADAA,KAAAhE,KAAAgC,QAAA+F,MAAA/H,KAAAgI,WACA,gBAAAu6D,KAAAv+D,KACAA,IAEA,MAAAu+D,KAAAv+D,KACAY,OAAAwD,SAAA2V,SAAA,KAAAnZ,OAAAwD,SAAA6V,KAAAja,IAEAY,OAAAwD,SAAA2V,SAAA,KAAAnZ,OAAAwD,SAAA6V,KAAA,IAAAja,KAGAsoE,aAEAvsE,MAAAyI,SAEA3I,OAAA8G,QAAA9G,OAAA,aAEAA,OAAAsT,QAAA,UAAAm5D,cAEAxlE,KAAA9G,MrC5DA,WACA,GAAAH,QAAA+sE,iBAAAzjE,WAAApJ,KAEAA,OAAAC,KAAAD,MAEAoJ,WAAAnJ,KAAAD,MAAAoJ,WAEAyjE,iBAAA,SAAAtvC,WAAAv3B,QAAAsmB,MAAAhW,OAAAD,MAAAnQ,MAAA5C,IACA,GAAA8P,QA2EA,OA1EAA,YACAA,QAAAsT,KAAA,SAAA4L,QAAAZ,SAAApiB,WACA,GAAAhN,OAKA,OAJAA,SACAwqE,UAAAp7C,SACA/iB,QAAAW,WAEA+G,MAAAm1D,UAAAl5C,QAAAhwB,SAEA8Q,QAAA6M,OAAA,SAAAqS,QAAAhjB,UAAAoiB,SAAAyT,MACA,GAAAzgC,MAAA2oB,QAAAiH,YAAA3wB,SAAAopE,eAAAC,aAAAC,eAAA7kE,GAEA,OADAilB,SAAA/pB,GAAAgJ,QACA,SAAA64B,MACA9X,QAAAlpB,OAAA,MACAkpB,QAAApe,UAEAqlB,YAAAtuB,QAAA5C,IAAA,oBAAA,MACAkxB,aAAA6Q,KAAA/3B,KAAAknB,aACA3wB,UACAE,OAAA,IACAa,MACAuQ,eAAA,IAAAkwB,KAAA95B,KAAA,MAAAjC,WAAA+7B,KAAA/3B,MAAA,qEAAAhE,WAAAkrB,aAAA,MAGAjH,QAAAlpB,OAAAR,UACA0pB,QAAApe,UAEAg+D,eAAA,WACA,MAAA,UAAAC,KACA,MAAA3vC,YAAAhxB,OAAA,WAIA,MAHA44B,MAAAthC,OAAA,cACAshC,KAAA/3B,KAAAhE,WAAA8jE,IAAA/nB,OACAhgB,KAAAgoC,gBAAA,UAAA/jE,WAAA8jE,IAAAE,QAAA,OAAAhkE,WAAA8jE,IAAA/nB,OACAhgB,KAAAkoC,gBAAApsE,KAAA62B,MAAAo1C,IAAAE,OAAAF,IAAA/nB,MAAA,KAAA,QAGAllD,MACA8sE,eAAA,WACA,MAAA,UAAAG,KACA,MAAA3vC,YAAAhxB,OAAA,WACA,GAAA7H,MAAAyM,KACAg0B,MAAAthC,OAAA,MACA,KACAa,KAAAlE,KAAAgf,MAAA0tD,IAAAlqD,OAAAsqD,cACA,MAAAC,QACA7oE,QAGA,MADAyM,OAAAmF,OAAA7E,WAAA6gB,QAAA5tB,MACA2oB,QAAAprB,QAAAkP,WAGAlR,MACA+sE,aAAA,WACA,MAAA,YACA,MAAAzvC,YAAAhxB,OAAA,WAEA,MADA44B,MAAAthC,OAAA,QACAwpB,QAAAlpB,OAAA,YAGAlE,MACAyE,KAAA,GAAA8oE,UACA9oE,KAAA82B,OAAA,UAAAlsB,WACA5K,KAAA82B,OAAA,YAAA9J,UACAhtB,KAAA82B,OAAA,gBAAA2J,MACA/8B,IAAA,GAAAqlE,gBACArlE,IAAAslE,OAAAtvD,iBAAA,WAAA6uD,gBAAA,GACA7kE,IAAAgW,iBAAA,OAAA2uD,gBAAA,GACA3kE,IAAAgW,iBAAA,QAAA4uD,cAAA,GACA5kE,IAAAgY,KAAA,OAAAkM,MAAArqB,QAAAqwB,UACAlqB,IAAAulE,iBAAA,gBAAA,UAAAznE,MAAAkM,YACAhK,IAAAulE,iBAAA,SAAA,oBACAvlE,IAAA4W,KAAAta,MACA2oB,QAAApe,WAEA,SAAA+pB,UACA,MAAAA,UAAApH,YAAAxe,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,mCAAA,aAAA,YAAA,UAAA,WAAA,UAAA,UAAA,KAAAwoE,oBAEA9lE,KAAA9G,MsC5FA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,OACA,GAAAu3D,MAAAx6D,OAqBA,OApBAw6D,MAAA,SAAAl8C,SAAA2pC,UACA,MAAAhlD,OAAAG,SAAA6kD,SAAA3pC,WAEAte,SACAy6D,WACAzqE,IAAA,SAAAsuB,UACA,MAAAk8C,MAAAl8C,SAAA,wCAGApM,MACAliB,IAAA,SAAAsuB,UACA,MAAAk8C,MAAAl8C,SAAA,mCAGAkH,OACAx1B,IAAA,SAAAsuB,UACA,MAAAk8C,MAAAl8C,SAAA,qCAIA,SAAAsH,UACA,MAAAA,UAAAmD,uBAAA/oB,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,8CAAA,UAAAwoE,oBAEA9lE,KAAA9G,MCpCA,WACA,GAAAH,QAAA+sE,iBAAAzjE,WAAApJ,KAEAA,OAAAC,KAAAD,MAEAoJ,WAAAnJ,KAAAD,MAAAoJ,WAEAyjE,iBAAA,SAAAx2D,OACA,GAAAy3D,OAAA16D,OAuBA,OAtBA06D,OAAA,SAAAx+D,UAAA+rD,UACA,MAAAhlD,OAAAm1D,UAAAnQ,UACA1sD,QAAAW,aAGA8D,SACAy6D,WACAnnD,KAAA,SAAApX,WACA,MAAAw+D,OAAAx+D,UAAA,iCAGAgW,MACAoB,KAAA,SAAApX,WACA,MAAAw+D,OAAAx+D,UAAA,4BAGAspB,OACAlS,KAAA,SAAApX,WACA,MAAAw+D,OAAAx+D,UAAA,8BAIA,SAAA0pB,UACA,MAAAA,UAAAkD,iBAAA9oB,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,wCAAA,UAAAwoE,oBAEA9lE,KAAA9G,MhCxCA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,MAAA03D,MAAAzhD,OACA,GAAAlZ,QA+BA,OA9BAA,YACAA,QAAAhQ,IAAA,SAAAmP,KAAAmf,UACA,MAAArb,OAAAu1D,YAAA,WAAAr5D,KAAAmf,WAEAte,QAAAqtB,cAAA,SAAAluB,KAAAmf,SAAAgP,YACA,GAAAp+B,QAAA2B,GAMA,OALAA,KAAAqoB,MAAArqB,QAAA,WAAAsQ,MACAtO,IAAAA,IAAA,IAAAytB,SAAA,kBACApvB,QACAmM,GAAAiyB,YAEAqtC,MAAA7qE,KAAAe,IAAA,KAAA3B,QAAAkN,KAAA,WACA,MAAA,UAAA9K,MACA,MAAAA,MAAAA,OAEAzE,QAEAmT,QAAAutB,gBAAA,SAAApuB,KAAAmf,SAAAgP,YACA,GAAAp+B,QAAA2B,GAMA,OALAA,KAAAqoB,MAAArqB,QAAA,WAAAsQ,MACAtO,IAAAA,IAAA,IAAAytB,SAAA,oBACApvB,QACAmM,GAAAiyB,YAEAqtC,MAAA7qE,KAAAe,IAAA,KAAA3B,QAAAkN,KAAA,WACA,MAAA,UAAA9K,MACA,MAAAA,MAAAA,OAEAzE,QAEA,SAAA+4B,UACA,MAAAA,UAAA+G,QAAA3sB,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,+BAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,MiC9CA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,OACA,GAAAjD,QAKA,OAJAA,YACAA,QAAAhQ,IAAA,SAAA+O,OACA,MAAAkE,OAAAG,SAAA,cAAArE,QAEA,SAAA6mB,UACA,MAAAA,UAAAnmB,YAAAO,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,mCAAA,UAAAwoE,oBAEA9lE,KAAA9G,MvDpBA,WACA,GAAAE,cAAAL,OAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEAG,aAAAH,MAAAG,aAEA0sE,iBAAA,SAAAx2D,MAAA03D,MAAAzhD,MAAAqQ,SAAAr5B,IACA,GAAA0qE,mBAAAC,WAAAC,oBAAA96D,OAkIA,OAjIAA,YACA66D,WAAA,qBACAD,kBAAA,iBACAE,oBAAA,oBACA96D,QAAAhQ,IAAA,SAAAkM,UAAAo7C,SACA,GAAApoD,OAGA,OAFAA,QAAA8Q,QAAA+6D,eAAA7+D,WACAhN,OAAAqM,QAAAW,UACA+G,MAAAG,SAAA,SAAAk0C,QAAApoD,SAEA8Q,QAAAq3C,SAAA,SAAAn7C,UAAAhE,KACA,GAAAhJ,OAIA,OAHAA,QAAA8Q,QAAA+6D,eAAA7+D,WACAhN,OAAAqM,QAAAW,UACAhN,OAAAgJ,IAAAA,IACA+K,MAAAG,SAAA,SAAA,SAAAlU,SAEA8Q,QAAAsT,KAAA,SAAApX,UAAAa,QAAA+rC,SACA,GAAA55C,OAMA,OALAA,SACAqM,QAAAW,WAEAhN,OAAAjC,EAAA8G,UAAA7E,OAAA6N,aACAiD,QAAAmjC,iBAAAjnC,UAAAhN,QACA+T,MAAAw1D,eAAA,SAAAvpE,OAAA45C,UAEA9oC,QAAAi0B,WAAA,SAAA/3B,UAAA5K,MACA,GAAApC,QAAA2B,GAMA,OALAA,KAAAqoB,MAAArqB,QAAA,sBACAK,QACA8rE,WAAA9+D,UACA++D,YAAA3pE,MAEAqpE,MAAA7qE,KAAAe,IAAA3B,SAEA8Q,QAAAmiC,MAAA,SAAAjmC,WACA,MAAA+G,OAAAu1D,YAAA,WAAAt8D,UAAA,kBAEA8D,QAAA65C,YAAA,SAAA39C,WACA,MAAA+G,OAAAu1D,YAAA,WAAAt8D,UAAA,wBAEA8D,QAAAkoD,WAAA,SAAAhsD,UAAAiD,MACA,GAAAjQ,OAKA,OAJAA,SACAqM,QAAAW,WAEA8D,QAAAmjC,iBAAAjnC,UAAAhN,QACA+T,MAAAm1D,UAAAj5D,KAAAjQ,SAEA8Q,QAAAmjC,iBAAA,SAAAjnC,UAAAhN,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAA2+D,WACAnxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B,SAEA8Q,QAAA+6D,eAAA,SAAA7+D,WACA,GAAAwtB,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAA2+D,WACAnxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAAv5B,IAAA05B,WAEA1pB,QAAA44C,aAAA,SAAA4H,YAAAtxD,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAA1T,YAAA,IAAAoa,kBACAlxC,KAAA38B,cAAAyzD,YAAA0T,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B,SAEA8Q,QAAA24C,WAAA,SAAA6H,aACA,GAAA92B,MAAAwqC,EAGA,OAFAA,IAAA1T,YAAA,IAAAoa,kBACAlxC,KAAA38B,cAAAyzD,YAAA0T,KACA3qC,SAAAv5B,IAAA05B,WAEA1pB,QAAAg7C,eAAA,SAAA9+C,UAAA09C,WACA,GAAAnwC,UAAAigB,KAAAwqC,GAAAr4D,QAAAhL,GAsCA,OArCA4Y,UAAAvZ,GAAAgJ,QACArI,IAAAqoB,MAAArqB,QAAA,gBACAqlE,GAAAh4D,UAAA,IAAA4+D,oBACApxC,KAAA38B,cAAAmP,UAAAg4D,KACAjnE,EAAAkQ,QAAAy8C,YACA/9C,QAAA8+D,MAAA,UAAA9pE,IAAA,IAAA64B,MACAt1B,IAAAs1B,KACAtyB,MAAAwiD,YAEA/9C,QAAAO,KAAA,WACA,MAAAqN,UAAA5a,YAEAgN,QAAAO,KAAA,KAAA,WACA,MAAAqN,UAAA1Y,aAGA8K,QAAA8+D,MAAA5qE,IAAAc,IAAA,IAAA64B,MACAt1B,IAAAs1B,KACAtyB,MAAAwiD,YAEA/9C,QAAAO,KAAA,WACA,MAAAqN,UAAA5a,YAEAgN,QAAAO,KAAA,KAAA,WACA,GAAA8+D,aAQA,OAPAA,cAAAP,MAAA7qE,KAAA,GAAAe,KACAuD,IAAAs1B,KACAtyB,MAAAwiD,YAEAshB,aAAA9+D,KAAA,WACA,MAAAqN,UAAA5a,YAEAqsE,aAAA9+D,KAAA,KAAA,WACA,MAAAqN,UAAA1Y,cAIA0Y,SAAA5N,SAEAmE,QAAAi5C,aAAA,SAAA/8C,WACA,GAAAuN,UAAAigB,KAAAwqC,GAAAr4D,QAAAhL,GAYA,OAXA4Y,UAAAvZ,GAAAgJ,QACArI,IAAAqoB,MAAArqB,QAAA,gBACAqlE,GAAAh4D,UAAA,IAAA4+D,oBACApxC,KAAA38B,cAAAmP,UAAAg4D,KACAr4D,QAAA8+D,MAAA3qE,IAAAa,IAAA,IAAA64B,MACA7tB,QAAAO,KAAA,SAAA9K,MACA,MAAAmY,UAAA5a,QAAAyC,KAAAA,KAAA8F,SAEAyE,QAAAO,KAAA,KAAA,WACA,MAAAqN,UAAA5a,cAEA4a,SAAA5N,SAEA,SAAA+pB,UACA,MAAAA,UAAAxQ,OAAApV,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,8BAAA,UAAA,UAAA,UAAA,aAAA,KAAAwoE,oBAEA9lE,KAAA9G,MCnJA,WACA,GAAAE,cAAAL,OAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEAG,aAAAH,MAAAG,aAEA0sE,iBAAA,SAAAlwC,UACA,GAAA4xC,6BAAAC,0BAAAp7D,OA4BA,OA3BAA,YACAo7D,0BAAA,0BACAD,4BAAA,4BACAn7D,QAAA40C,qBAAA,SAAA14C,UAAAhN,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAAk/D,0BACA1xC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B,SAEA8Q,QAAA00C,mBAAA,SAAAx4C,WACA,GAAAwtB,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAAk/D,0BACA1xC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAAv5B,IAAA05B,WAEA1pB,QAAAqxC,uBAAA,SAAAn1C,UAAAhN,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAAi/D,4BACAzxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B,SAEA8Q,QAAAixC,qBAAA,SAAA/0C,WACA,GAAAwtB,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAAi/D,4BACAzxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAAv5B,IAAA05B,WAEA,SAAA9D,UACA,MAAAA,UAAAoT,OAAAh5B,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,8BAAA,aAAAwoE,oBAEA9lE,KAAA9G,MuD7CA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,MAAAiW,MAAAyhD,OACA,GAAA36D,QAkBA,OAjBAA,YACAA,QAAAqH,OAAA,SAAAnL,UAAAyuC,SACA,GAAAz7C,QAAA2B,GASA,QARA,MAAA85C,SAAA,KAAAA,WACAA,QAAA,KAEAz7C,QACA8rE,WAAA9+D,UACAyuC,QAAAA,SAEA95C,IAAAqoB,MAAArqB,QAAA,QACA8rE,MAAA7qE,KAAAe,IAAA,UAAA3B,QAAAkN,KAAA,WACA,MAAA,UAAA9K,MACA,MAAAA,MAAAA,OAEAzE,QAEA,SAAA+4B,UACA,MAAAA,UAAA0W,SAAAt8B,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,gCAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,MnBjCA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,MAAA03D,MAAAzhD,OACA,GAAAlZ,QA4CA,OA3CAA,YACAA,QAAAhQ,IAAA,SAAAqL,IACA,MAAA4H,OAAAG,SAAA,cAAA/H,KAEA2E,QAAAsT,KAAA,SAAApX,UAAAa,QAAAu7D,kBACA,GAAAxvB,SAAA55C,MAQA,OAPA,OAAAopE,mBACAA,kBAAA,GAEAppE,QACAqM,QAAAW,WAEAhN,OAAAjC,EAAA8G,UAAA7E,OAAA6N,aACAu7D,iBACAr1D,MAAAw1D,eAAA,cAAAvpE,QAEA+T,MAAAm1D,UAAA,cAAAlpE,OAAA45C,SACAwvB,iBAAAA,oBAGAt4D,QAAAq7D,WAAA,SAAApnD,OAAAlX,SACA,GAAA7N,OAKA,OAJAA,SACA8L,KAAAiZ,QAEA/kB,OAAAjC,EAAA8G,UAAA7E,OAAA6N,aACAkG,MAAAw1D,eAAA,cAAAvpE,SAEA8Q,QAAAykD,iBAAA,SAAAppD,IACA,GAAAxK,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,eACA8rE,MAAA7qE,KAAAe,IAAA,IAAAwK,GAAA,0BAEA2E,QAAAojD,sBAAA,SAAAlnD,UAAA5K,KAAAwxD,uBACA,GAAA5zD,QAAA2B,GAOA,OANAA,KAAAqoB,MAAArqB,QAAA,2BACAK,QACA8rE,WAAA9+D,UACAo/D,iBAAAhqE,KACAwxD,sBAAAA,uBAEA6X,MAAA7qE,KAAAe,IAAA3B,SAEA,SAAA02B,UACA,MAAAA,UAAApqB,YAAAwE,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,mCAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,MoBjFA,WACA,GAAAH,QAAA+sE,gBAEAA,kBAAA,SAAAx2D,OACA,GAAAjD,QAKA,OAJAA,YACAA,QAAAsT,KAAA,SAAApX,UAAAxP,QACA,MAAAuW,OAAAs1D,kBAAA,kBAAAr8D,UAAAxP,SAEA,SAAAk5B,UACA,MAAAA,UAAAj5B,QAAAqT,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,+BAAA,UAAAwoE,oBAEA9lE,KAAA9G,MCIA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,OACA,GAAAjD,QAUA,OATAA,YACAA,QAAAhQ,IAAA,SAAAqL,IACA,MAAA4H,OAAAG,SAAA,kBAAA/H,KAEA2E,QAAAsT,KAAA,SAAAvW,SACA,GAAA7N,OAEA,OADAA,QAAAjC,EAAA8G,UAAA7E,OAAA6N,aACAkG,MAAAm1D,UAAA,kBAAAlpE,SAEA,SAAA02B,UACA,MAAAA,UAAA21C,eAAAv7D,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,sCAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,MtDzBA,WACA,GAAAH,QAAA+sE,iBAAAzjE,WAAApJ,KAEAA,OAAAC,KAAAD,MAEAoJ,WAAAnJ,KAAAD,MAAAoJ,WAEAyjE,iBAAA,SAAA7mE,QAAAqQ,MAAA03D,MAAAzhD,MAAApmB,MAAA5C,IACA,GAAA8P,QAyIA,OAxIAA,YACAA,QAAAhQ,IAAA,SAAAkM,WACA,MAAA+G,OAAAG,SAAA,WAAAlH,YAEA8D,QAAAma,UAAA,SAAAqmC,aACA,MAAAv9C,OAAAG,SAAA,WAAA,gBAAAo9C,cAEAxgD,QAAAsT,KAAA,WACA,MAAArQ,OAAAm1D,UAAA,aAEAp4D,QAAAyN,aAAA,SAAA+tD,UACA,GAAAtsE,OAIA,OAHAA,SACAykB,OAAA6nD,UAEAv4D,MAAAm1D,UAAA,WAAAlpE,SAEA8Q,QAAAC,UAAA,WACA,MAAAgD,OAAAm1D,UAAA,sBAEAp4D,QAAA/D,UAAA,SAAAC,WACA,GAAAhN,OAIA,OAHAA,SACAqM,QAAAW,WAEA+G,MAAAm1D,UAAA,QAAAlpE,SAEA8Q,QAAA7D,UAAA,SAAAD,WACA,GAAAhN,OAIA,OAHAA,SACAqM,QAAAW,WAEA+G,MAAAm1D,UAAA,QAAAlpE,SAEA8Q,QAAAmiC,MAAA,SAAAjmC,WACA,MAAA+G,OAAAu1D,YAAA,WAAAt8D,UAAA,WAEA8D,QAAAy7D,gCAAA,SAAAv/D,WACA,GAAArL,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,YAAA,IAAAqN,UAAA,mCACAy+D,MAAA7qE,KAAAe,MAEAmP,QAAA07D,2BAAA,SAAAx/D,WACA,GAAArL,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,YAAA,IAAAqN,UAAA,8BACAy+D,MAAA7qE,KAAAe,MAEAmP,QAAA27D,0BAAA,SAAAz/D,WACA,GAAArL,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,YAAA,IAAAqN,UAAA,6BACAy+D,MAAA7qE,KAAAe,MAEAmP,QAAAmgD,MAAA,SAAAjkD,WACA,GAAArL,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,YAAA,IAAAqN,UAAA,SACAy+D,MAAA7qE,KAAAe,MAEAmP,QAAA4/C,YAAA,SAAA1jD,WACA,MAAA+G,OAAAu1D,YAAA,WAAAt8D,UAAA,kBAEA8D,QAAAm6B,WAAA,SAAAj+B,WACA,MAAA+G,OAAAG,SAAA,WAAAlH,UAAA,iBAEA8D,QAAA,UAAA,SAAA9D,WACA,GAAArL,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,YAAA,IAAAqN,UACAy+D,MAAA3qE,IAAAa,MAEAmP,QAAA,UAAA,SAAA+xB,KAAA6pC,eACA,GAAAC,UAAAvqE,KAAA2oB,QAAA6hD,OAAA56C,YAAA3wB,SAAAopE,eAAAC,aAAAC,eAAA7kE,GAGA,OAFAilB,SAAA/pB,GAAAgJ,QACAgoB,YAAAtuB,QAAA5C,IAAA,oBAAA,MACAkxB,aAAA6Q,KAAA/3B,KAAAknB,aACA3wB,UACAE,OAAA,IACAa,MACAuQ,eAAA,IAAAkwB,KAAA95B,KAAA,MAAAjC,WAAA+7B,KAAA/3B,MAAA,qEAAAhE,WAAAkrB,aAAA,MAGAjH,QAAAlpB,OAAAR,UACA0pB,QAAApe,UAEAg+D,eAAA,WACA,MAAA,UAAAC,KACA,GAAAvuD,SAAAgd,OAGA,OAFAA,SAAA16B,KAAA62B,MAAAo1C,IAAAE,OAAAF,IAAA/nB,MAAA,KACAxmC,QAAA,WAAAvV,WAAA8jE,IAAAE,QAAA,OAAAhkE,WAAA8jE,IAAA/nB,OACA6pB,cAAA,cAAA,KAAArwD,QAAAgd,WAEA17B,MACA8sE,eAAA,WACA,MAAA,YACA,MAAAiC,eAAA,OAAA,oBAAA,iEAEA/uE,MACA+sE,aAAA,WACA,MAAA,YACA,MAAAgC,eAAA,WAEA/uE,MACAgvE,SAAA,WACA,MAAA,UAAA/B,KACA,GAAA5hE,IACA3H,YACA,KACAA,SAAAe,KAAAlE,KAAAgf,MAAA0tD,IAAAlqD,OAAAsqD,cACA,MAAAC,QACA5pE,SAAAe,QAMA,MAJAf,UAAAE,OAAAqpE,IAAAlqD,OAAAnf,QACA,OAAAyH,IAAA3H,SAAAE,SAAA,MAAAyH,MACA+hB,QAAAprB,QAAA0B,UAEA0pB,QAAAlpB,OAAAR,YAEA1D,MACAivE,OAAA,WACA,MAAA,YACA,MAAA7hD,SAAAlpB,OAAA,UAEAlE,MACAyE,KAAA,GAAA8oE,UACA9oE,KAAA82B,OAAA,OAAA2J,MACA/8B,IAAA,GAAAqlE,gBACArlE,IAAAslE,OAAAtvD,iBAAA,WAAA6uD,gBAAA,GACA7kE,IAAAslE,OAAAtvD,iBAAA,OAAA2uD,gBAAA,GACA3kE,IAAAslE,OAAAtvD,iBAAA,QAAA4uD,cAAA,GACA5kE,IAAAslE,OAAAtvD,iBAAA,QAAA4uD,cAAA,GACA5kE,IAAAgW,iBAAA,OAAA6wD,UAAA,GACA7mE,IAAAgW,iBAAA,QAAA8wD,QAAA,GACA9mE,IAAAgY,KAAA,OAAAkM,MAAArqB,QAAA,aACAmG,IAAAulE,iBAAA,gBAAA,UAAAznE,MAAAkM,YACAhK,IAAAulE,iBAAA,SAAA,oBACAvlE,IAAA4W,KAAAta,MACA2oB,QAAApe,UAEA,SAAA+pB,UACA,MAAAA,UAAA5pB,SAAAgE,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,gCAAA,YAAA,UAAA,UAAA,UAAA,UAAA,KAAAwoE,oBAEA9lE,KAAA9G,MoC1JA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,OACA,GAAAjD,QAUA,OATAA,YACAA,QAAAhQ,IAAA,SAAAqL,IACA,MAAA4H,OAAAG,SAAA,QAAA/H,KAEA2E,QAAAsT,KAAA,SAAApX,WACA,MAAA+G,OAAAm1D,UAAA,SACA78D,QAAAW,aAGA,SAAA0pB,UACA,MAAAA,UAAAhrB,MAAAoF,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,6BAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,MjCzBA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,MAAAiW,MAAAyhD,OACA,GAAA36D,QAcA,OAbAA,YACAA,QAAA,MAAA,SAAA9D,UAAA4d,MACA,GAAA5qB,QAAA2B,GAOA,OANAA,KAAAqoB,MAAArqB,QAAA,UACAK,QACAqM,QAAAW,UACA1D,KAAAshB,KACAiiD,SAAA,GAEApB,MAAA3qE,IAAAa,IAAA3B,QAAAkN,KAAA,SAAA9K,MACA,MAAAA,MAAAA,QAGA,SAAAs0B,UACA,MAAAA,UAAA90B,OAAAkP,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,8BAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,M0B7BA,WACA,GAAAE,cAAAL,OAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEAG,aAAAH,MAAAG,aAEA0sE,iBAAA,SAAAx2D,MAAAC,OAAAqmB,UACA,GAAAyyC,uBAAAh8D,OA+CA,OA9CAA,YACAg8D,sBAAA,0BACAh8D,QAAAhQ,IAAA,SAAAkM,UAAAoyC,UACA,MAAArrC,OAAAG,SAAA,aAAAkrC,UAAAlyC,KAAA,SAAAioB,QACA,GAAA2f,KASA,OARAhkC,SAAAi8D,4BAAA//D,WACAqzB,UAAA+e,WAEAtK,KAAA3f,OAAAme,aACAwB,KAAA/2C,EAAAC,IAAA82C,KAAA,SAAAoW,GACA,MAAAl3C,QAAA7E,WAAA,cAAA+7C,KAEA/1B,OAAAkxC,OAAA/yB,aAAAwB,KACA3f,UAGArkB,QAAAmiC,MAAA,SAAAjmC,UAAAoyC,UACA,MAAArrC,OAAAu1D,YAAA,aAAAlqB,SAAA,WAEAtuC,QAAAsT,KAAA,SAAApX,UAAAa,SACA,GAAA7N,OAKA,OAJAA,SACAqM,QAAAW,WAEAhN,OAAAjC,EAAA8G,UAAA7E,OAAA6N,aACAkG,MAAAm1D,UAAA,aAAAlpE,QAAAkN,KAAA,WACA,MAAA,UAAAsY,YACA,GAAAhe,GAAAiC,IAAA4kB,EAAAymB,IACA,KAAAttC,EAAA,EAAAiC,IAAA+b,WAAAriB,OAAAsG,IAAAjC,EAAAA,IACA6mB,EAAA7I,WAAAhe,GACAstC,KAAAzmB,EAAAilB,aACAwB,KAAA/2C,EAAAC,IAAA82C,KAAA,SAAAoW,GACA,MAAAl3C,QAAA7E,WAAA,cAAA+7C,KAEA78B,EAAAg4C,OAAA/yB,aAAAwB,IAEA,OAAAtvB,cAEA7nB,QAEAmT,QAAAi8D,4BAAA,SAAA//D,UAAAhN,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAA8/D,sBACAtyC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B,SAEA,SAAA02B,UACA,MAAAA,UAAA8a,QAAA1gC,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,+BAAA,UAAA,WAAA,aAAAwoE,oBAEA9lE,KAAA9G,MxBhEA,WACA,GAAAE,cAAAL,OAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEAG,aAAAH,MAAAG,aAEA0sE,iBAAA,SAAAx2D,MAAA03D,MAAAzhD,MAAAqQ,UACA,GAAAsxC,YAAAM,4BAAAe,qBAAAl8D,OAuGA,OAtGAA,YACA66D,WAAA,oBACAM,4BAAA,2BACAe,qBAAA,oBACAl8D,QAAAhQ,IAAA,SAAAkM,UAAAsiD,QACA,GAAAtvD,OAGA,OAFAA,QAAA8Q,QAAA+6D,eAAA7+D,WACAhN,OAAAqM,QAAAW,UACA+G,MAAAG,SAAA,QAAAo7C,OAAAtvD,SAEA8Q,QAAAq3C,SAAA,SAAAn7C,UAAAhE,KACA,GAAAhJ,OAIA,OAHAA,QAAA8Q,QAAA+6D,eAAA7+D,WACAhN,OAAAqM,QAAAW,UACAhN,OAAAgJ,IAAAA,IACA+K,MAAAG,SAAA,QAAA,SAAAlU,SAEA8Q,QAAAsT,KAAA,SAAApX,UAAAoyC,SAAA6tB,aACA,GAAAjtE,OAiBA,OAhBA,OAAAo/C,WACAA,SAAA,MAEA,MAAA6tB,cACAA,YAAA,MAEAjtE,QACAqM,QAAAW,WAEAoyC,WACAp/C,OAAAqgC,UAAA+e,UAEA6tB,cACAjtE,OAAAsgC,WAAA2sC,aAEAn8D,QAAAmjC,iBAAAjnC,UAAAhN,QACA+T,MAAAm1D,UAAA,QAAAlpE,SAEA8Q,QAAAi0B,WAAA,SAAA/3B,UAAAoyC,SAAA/6B,KAAAjiB,MACA,GAAApC,QAAA2B,GAQA,OAPAA,KAAAqoB,MAAArqB,QAAA,qBACAK,QACA8rE,WAAA9+D,UACAkgE,UAAA9tB,SACArK,MAAA1wB,KACA8oD,WAAA/qE,MAEAqpE,MAAA7qE,KAAAe,IAAA3B,QAAAkN,KAAA,SAAAxD,QACA,MAAAA,QAAAtH,QAGA0O,QAAAiwC,6BAAA,SAAA/zC,UAAA5K,MACA,GAAApC,QAAA2B,GAMA,OALAA,KAAAqoB,MAAArqB,QAAA,oCACAK,QACA8rE,WAAA9+D,UACAmgE,WAAA/qE,MAEAqpE,MAAA7qE,KAAAe,IAAA3B,SAEA8Q,QAAAkoD,WAAA,SAAAhsD,UAAAiD,MACA,GAAAjQ,OAIA,OAHAA,SACAqM,QAAAW,WAEA+G,MAAAm1D,UAAAj5D,KAAAjQ,SAEA8Q,QAAAmjC,iBAAA,SAAAjnC,UAAAhN,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAA2+D,WACAnxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B,SAEA8Q,QAAA+6D,eAAA,SAAA7+D,WACA,GAAAwtB,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAA2+D,WACAnxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAAv5B,IAAA05B,WAEA1pB,QAAAqxC,uBAAA,SAAAn1C,UAAAhN,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAAi/D,4BACAzxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B,SAEA8Q,QAAAixC,qBAAA,SAAA/0C,WACA,GAAAwtB,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAAi/D,4BACAzxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAAv5B,IAAA05B,WAEA1pB,QAAAuxC,gBAAA,SAAAr1C,UAAAoyC,SAAAp/C,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAAggE,qBACAxyC,KAAA38B,cAAAmP,UAAAoyC,SAAA4lB,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B;EAEA8Q,QAAAmxC,cAAA,SAAAj1C,UAAAoyC,UACA,GAAA5kB,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAAggE,qBACAxyC,KAAA38B,cAAAmP,UAAAoyC,SAAA4lB,KACA3qC,SAAAv5B,IAAA05B,WAEA,SAAA9D,UACA,MAAAA,UAAAvS,MAAArT,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,6BAAA,UAAA,UAAA,UAAA,aAAAwoE,oBAEA9lE,KAAA9G,MExHA,WACA,GAAAH,QAAA+sE,iBAAAzjE,WAAApJ,KAEAA,OAAAC,KAAAD,MAEAoJ,WAAAnJ,KAAAD,MAAAoJ,WAEAyjE,iBAAA,SAAA7mE,QAAAqQ,MAAA03D,MAAAzhD,MAAAhpB,IACA,GAAA8P,QAyCA,OAxCAA,YACAA,QAAAs8D,aAAA,SAAAvqC,MACA,GAAAzgC,MAAA2oB,QAAAiH,YAAA4nB,QAAAv4C,SAAAM,GAEA,OADAqwB,aAAAtuB,QAAA5C,IAAA,oBAAA,MACAkxB,aAAA6Q,KAAA/3B,KAAAknB,aACA3wB,UACAE,OAAA,IACAa,MACAuQ,eAAA,IAAAkwB,KAAA95B,KAAA,MAAAjC,WAAA+7B,KAAA/3B,MAAA,qEAAAhE,WAAAkrB,aAAA,MAGAjH,QAAA/pB,GAAAgJ,QACA+gB,QAAAlpB,OAAAR,UACA0pB,QAAApe,UAEAvK,KAAA,GAAA8oE,UACA9oE,KAAA82B,OAAA,SAAA2J,MACA+W,SACAyzB,iBAAA/oE,QAAAg0D,SACA53D,SACAJ,eAAA,SAGAqB,IAAAqoB,MAAArqB,QAAA,SAAA,iBACA8rE,MAAA7qE,KAAAe,IAAAS,QAAAw3C,WAEA9oC,QAAAw8D,aAAA,WACA,GAAA3rE,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,SAAA,iBACA8rE,MAAA7qE,KAAAe,MAEAmP,QAAAy8D,eAAA,SAAAC,gBAAAC,aACA,GAAArrE,MAAAT,GAMA,OALAA,KAAAqoB,MAAArqB,QAAA,SAAA,mBACAyC,MACAsrE,iBAAAF,gBACAn7D,SAAAo7D,aAEAhC,MAAA7qE,KAAAe,IAAAS,OAEA,SAAAs0B,UACA,MAAAA,UAAAi3C,aAAA78D,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,oCAAA,YAAA,UAAA,UAAA,UAAA,KAAAwoE,oBAEA9lE,KAAA9G,MC1DA,WACA,GAAAE,cAAAL,OAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEAG,aAAAH,MAAAG,aAEA0sE,iBAAA,SAAAx2D,MAAA03D,MAAAzhD,MAAAqQ,UACA,GAAAsxC,YAAA76D,OAsGA,OArGAA,YACA66D,WAAA,0BACA76D,QAAAhQ,IAAA,SAAAkM,UAAAqX,MACA,GAAArkB,OAGA,OAFAA,QAAA8Q,QAAA+6D,eAAA7+D,WACAhN,OAAAqM,QAAAW,UACA+G,MAAAG,SAAA,cAAAmQ,KAAArkB,SAEA8Q,QAAAq3C,SAAA,SAAAn7C,UAAAhE,KACA,GAAAhJ,OAIA,OAHAA,QAAA8Q,QAAA+6D,eAAA7+D,WACAhN,OAAAqM,QAAAW,UACAhN,OAAAgJ,IAAAA,IACA+K,MAAAG,SAAA,cAAA,SAAAlU,SAEA8Q,QAAAojC,eAAA,SAAAlnC,UAAAa,SACA,GAAA7N,OAOA,OANAA,SACAqM,QAAAW,UACAqzB,UAAA,QAEArgC,OAAAjC,EAAA8G,UAAA7E,OAAA6N,aACAiD,QAAAmjC,iBAAAjnC,UAAAhN,QACA+T,MAAAm1D,UAAA,cAAAlpE,SAEA8Q,QAAAo0C,QAAA,SAAAl4C,UAAAa,SACA,GAAA7N,OAMA,OALAA,SACAqM,QAAAW,WAEAhN,OAAAjC,EAAA8G,UAAA7E,OAAA6N,aACAiD,QAAAmjC,iBAAAjnC,UAAAhN,QACA+T,MAAAm1D,UAAA,cAAAlpE,SAEA8Q,QAAAi0B,WAAA,SAAA/3B,UAAAzL,OAAAujC,MACA,GAAA1iC,MAAAT,GAOA,OANAS,OACA0pE,WAAA9+D,UACA4gE,UAAArsE,OACAssE,aAAA/oC,MAEAnjC,IAAAqoB,MAAArqB,QAAA,kBACA8rE,MAAA7qE,KAAAe,IAAAS,OAEA0O,QAAA2kC,uBAAA,SAAAzoC,UAAA5K,MACA,GAAApC,QAAA2B,GAMA,OALAA,KAAAqoB,MAAArqB,QAAA,gCACAK,QACA8rE,WAAA9+D,UACA6gE,aAAAzrE,MAEAqpE,MAAA7qE,KAAAe,IAAA3B,SAEA8Q,QAAA4kC,sBAAA,SAAA1oC,UAAA5K,MACA,GAAApC,QAAA2B,GAMA,OALAA,KAAAqoB,MAAArqB,QAAA,+BACAK,QACA8rE,WAAA9+D,UACA6gE,aAAAzrE,MAEAqpE,MAAA7qE,KAAAe,IAAA3B,SAEA8Q,QAAAk1C,sBAAA,SAAAh5C,UAAA5K,MACA,GAAApC,QAAA2B,GAMA,OALAA,KAAAqoB,MAAArqB,QAAA,+BACAK,QACA8rE,WAAA9+D,UACA6gE,aAAAzrE,MAEAqpE,MAAA7qE,KAAAe,IAAA3B,SAEA8Q,QAAAkoD,WAAA,SAAAhsD,UAAAiD,MACA,GAAAjQ,OAKA,OAJAA,SACAqM,QAAAW,WAEA8D,QAAAmjC,iBAAAjnC,UAAAhN,QACA+T,MAAAm1D,UAAAj5D,KAAAjQ,SAEA8Q,QAAAmjC,iBAAA,SAAAjnC,UAAAhN,QACA,GAAAw6B,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAA2+D,WACAnxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAA7qB,IAAAgrB,KAAAx6B,SAEA8Q,QAAA+6D,eAAA,SAAA7+D,WACA,GAAAwtB,MAAAwqC,EAGA,OAFAA,IAAAh4D,UAAA,IAAA2+D,WACAnxC,KAAA38B,cAAAmP,UAAAg4D,KACA3qC,SAAAv5B,IAAA05B,WAEA1pB,QAAAiiC,cAAA,SAAA/lC,UAAAklC,UACA,GAAA1X,KAEA,OADAA,MAAA38B,cAAAmP,UAAA,aACAqtB,SAAA7qB,IAAAgrB,KAAA0X,WAEAphC,QAAAuhC,YAAA,SAAArlC,WACA,GAAAwtB,KAEA,OADAA,MAAA38B,cAAAmP,UAAA,aACAqtB,SAAAv5B,IAAA05B,OAAA,MAEA,SAAA9D,UACA,MAAAA,UAAAjR,YAAA3U,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,mCAAA,UAAA,UAAA,UAAA,aAAAwoE,oBAEA9lE,KAAA9G,M+C7IA,WACA,GAAAH,QAAA+sE,gBAEAA,kBAAA,SAAAx2D,MAAAiW,MAAAyhD,OACA,GAAA36D,QAcA,OAbAA,YACAA,QAAAsT,KAAA,SAAA0pD,WACA,GAAA9tE,OAIA,OAHAA,SACAk/D,QAAA4O,WAEA/5D,MAAAm1D,UAAA,cAAAlpE,SAEA8Q,QAAAqvD,OAAA,SAAA4N,cACA,GAAApsE,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,qBAAAouE,cACAtC,MAAA7qE,KAAAe,MAEA,SAAA+0B,UACA,MAAAA,UAAA/N,YAAA7X,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,mCAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,MC3BA,WACA,GAAAH,QAAA+sE,gBAEAA,kBAAA,SAAAx2D,MAAAiW,MAAAyhD,OACA,GAAA36D,QAcA,OAbAA,YACAA,QAAAsT,KAAA,SAAApX,WACA,GAAAhN,OAIA,OAHAA,SACAqM,QAAAW,WAEA+G,MAAAm1D,UAAA,WAAAlpE,SAEA8Q,QAAAovD,KAAA,SAAA4N,WACA,GAAAnsE,IAEA,OADAA,KAAAqoB,MAAArqB,QAAA,gBAAAmuE,WACArC,MAAA7qE,KAAAe,MAEA,SAAA+0B,UACA,MAAAA,UAAAjO,SAAA3X,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,gCAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,M/CLA,WACA,GAAAH,QAAA+sE,iBAAA7sE,KAEAA,OAAAC,KAAAD,MAEA6sE,iBAAA,SAAAx2D,OACA,GAAAjD,QAaA,OAZAA,YACAA,QAAAhQ,IAAA,SAAA2wD,QACA,MAAA19C,OAAAG,SAAA,OAAAu9C,SAEA3gD,QAAAma,UAAA,SAAAje,UAAA2M,MACA,MAAA5F,OAAAG,SAAA,OAAA,mBAAAlH,UAAA,SAAA2M,OAEA7I,QAAA6gD,UAAA,SAAA3kD,WACA,MAAA+G,OAAAm1D,UAAA,cACA78D,QAAAW,aAGA,SAAA0pB,UACA,MAAAA,UAAArQ,KAAAvV,UAIAtT,OAAA8G,QAAA9G,OAAA,kBAEAA,OAAAuE,QAAA,4BAAA,UAAA,UAAA,UAAAwoE,oBAEA9lE,KAAA9G,MgD5BA,WACA,GAAAqwE,8BAAAC,4BAAAznE,SAAAI,MAAApJ,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAJ,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,qBAEAwwE,6BAAA,SAAApoE,YAKA,QAAAooE,8BAAA5lE,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAqJ,MACA,GAAA1C,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA0R,KAAAA,KACA1R,KAAAyK,MAAAmZ,YAAA,kBACA5jB,KAAAyK,MAAAiE,WACA1O,KAAAyK,MAAA0D,KAAAnO,KAAA0R,KAAAJ,UACAtC,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OA8BA,MAlDAkH,QAAAmpE,6BAAApoE,YAEAooE,6BAAAh/D,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,aAAA,WAqBAg/D,6BAAA5oE,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAGA,MAFAc,OAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGAqwE,6BAAA5oE,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,QAGAqwE,8BAEApnE,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,+BAAAmvD,8BAEAC,4BAAA,SAAAhqD,IAAA/hB,SAAAsb,UACA,GAAAlM,KA6BA,OA5BAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,QAAA8L,YAuBA,OAtBA9L,QAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAlF,QAEA,OADAkF,OAAAG,iBACAT,OAAA28D,eAAA38D,OAAA48D,iBACAjsE,UAAAI,OAAA,QAAA,+BAGAkb,SAAAE,MAAAD,cACA9Q,QAAAsX,IAAA0pD,aAAAJ,eAAAh8D,OAAAi8D,gBAAAj8D,OAAA28D,cACAvhE,QAAAO,KAAA,WAEA,MADAsQ,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,aAEAqK,QAAAO,KAAA,KAAA,SAAA7L,UAEA,MADAmc,UAAAK,OAAAJ,cACAvb,SAAAI,OAAA,QAAAjB,SAAAe,KAAAuQ,qBAGAhV,OACA8f,aAAAjM,IAAAU,KAAA,kBACAV,IAAAc,GAAA,SAAA,OAAAX,QACAJ,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,wBAAA,eAAA,aAAA,aAAA68D,+BAEAxpE,KAAA9G,MrC3GA,WACA,GAAAywE,qBAAA9nE,SAAAE,SAAAhJ,OAAAE,KAEAA,OAAAC,KAAAD,MAEA4I,SAAA3I,KAAAD,MAAA4I,SAEAE,SAAA7I,KAAAD,MAAA8I,SAEAhJ,OAAA8G,QAAA9G,OAAA,qBAEA4wE,oBAAA,SAAAr6D,MAAApQ,WAAAC,MAAA3C,UAAAC,SAAAu3B,iBACA,GAAAnnB,KA8BA,OA7BAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,OAuBA,OAtBAJ,QAAAmH,IAAA,qBAAA,WACA,MAAA+f,iBAAA3a,KAAAtM,OAEAD,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEAhH,OAAA,WACA,GAAAhF,QAOA,OANAA,SAAAoH,MAAApE,OAAA4B,OAAAzF,MACAa,QAAAO,KAAA,WAGA,MAFAurB,iBAAAtc,MAAA3K,KACA5N,MAAAwM,SACAnP,UAAAQ,KAAAP,SAAAvB,QAAA,YAEAgN,QAAAO,KAAA,KAAA,WACA,MAAAoR,SAAAnT,IAAA,WAGAqG,IAAAc,GAAA,QAAA,cAAA,SAAAT,OAEA,MADAA,OAAAG,iBACAymB,gBAAAtc,MAAA3K,OAEAA,IAAAc,GAAA,QAAA,gBAAA9L,SAAA,IAAA,SAAAqL,OAEA,MADAA,OAAAG,iBACAL,cAIAL,KAAAA,KACA5R,YAAA,+CAIAlC,OAAA4T,UAAA,kBAAA,UAAA,aAAA,UAAA,cAAA,aAAA,kBAAAg9D,uBAEA3pE,KAAA9G,MOlDA,WACA,GAAA0wE,2BAAAC,oBAAAC,qBAAAC,uBAAAhoE,SAAAI,MAAApJ,OAAAsJ,WAAApJ,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAE,WAAAnJ,KAAAD,MAAAoJ,WAEAtJ,OAAA8G,QAAA9G,OAAA,qBAEAgJ,SAAA7I,KAAAD,MAAA8I,SAEAgoE,uBAAA,SAAA5oE,YAKA,QAAA4oE,wBAAApmE,MAAAuG,UAAApK,OAAAgmB,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAqJ,MACA,GAAA2iB,aAAArlB,OACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4G,OAAAA,OACA5G,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA0R,KAAAA,KACA1R,KAAAyK,MAAAmZ,YAAA,eACA5jB,KAAAyK,MAAAiE,WACA1O,KAAAyK,MAAA0D,KAAAnO,KAAA0R,KAAAJ,UACA+iB,YAAAr0B,KAAA4G,OAAAzD,IAAA,oBAAA,MACAkxB,cACAr0B,KAAAyK,MAAA6pB,eAAA,eAAAnrB,WAAAkrB,cAEArlB,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OAkCA,MA3DAkH,QAAA2pE,uBAAA5oE,YAEA4oE,uBAAAx/D,SAAA,SAAA,aAAA,YAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,aAAA,WA0BAw/D,uBAAAppE,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAGA,MAFAc,OAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGA6wE,uBAAAppE,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,QAGA6wE,uBAAAppE,UAAAkxD,mBAAA,WACA,MAAA34D,MAAAgR,UAAAW,WAAA,qBAAA3R,KAAAyK,MAAA0D,OAGA0iE,wBAEA5nE,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,yBAAA2vD,wBAEAD,qBAAA,SAAArsE,SAAA0B,MAAAmQ,OACA,GAAAzC,KAgCA,OA/BAA,MAAA,SAAAC,OAAAC,KACA,GAAAG,OA0BA,OAzBAA,QAAAnL,SAAA,IAAA,WACA,MAAA,UAAAqL,OACA,GAAAjB,aAAAkB,KAAAL,QAAAC,SAGA,OAFAG,OAAAG,iBACAF,KAAAN,IAAAU,KAAA,QAAA1P,YACAsP,KAAAK,YAGAvB,YAAAW,OAAAzF,KAAA47D,oBAAA,SACAh2D,UAAA,SAAAtP,MAEA,MADAwB,OAAAwL,QAAAhN,MACAwO,YACA1O,SAAA2Q,QAAA,oIAEA3Q,SAAAI,OAAA,YAGAmP,QAAA,SAAArP,MAEA,MADA0P,MAAAc,UAAAxQ,MACAF,SAAAI,OAAA,QAAAF,KAAAuQ,iBAEAoB,MAAAmP,KAAA3R,OAAAzF,MAAAoB,KAAAwE,UAAAD,UAhBA,SAkBA9T,OACA6T,IAAAc,GAAA,SAAA,OAAAX,QACAJ,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,iBAAA,aAAA,UAAA,UAAAm9D,uBAEAD,oBAAA,SAAA1qE,MAAAoQ,OAAAiQ,IAAA/hB,UACA,GAAAoP,KAsCA,OArCAA,MAAA,SAAAC,OAAAC,KACA,GAAAC,SAAAC,UAAAyf,YAgCA,OA/BAA,cAAA,WACA,MAAA3f,KAAAU,KAAA,cAAAoG,YAAA,WAEA5G,UAAA,SAAArQ,UACA,GAAAyK,KAKA,OAJAA,MAAAkI,OAAA7E,WAAA,QAAA9N,SAAAe,MACAwB,MAAAwL,QAAAtD,MACAyF,OAAAzF,KAAAA,KACA0F,IAAAU,KAAA,YAAAsG,SAAA,UACAtW,SAAAI,OAAA,YAEAmP,QAAA,SAAApQ,UAKA,MAJA,OAAAA,SAAAE,QACA4vB,eAEA3f,IAAAU,KAAA,YAAAsG,SAAA,UACAtW,SAAAI,OAAA,QAAAjB,SAAAe,KAAAuQ,iBAEAnB,IAAAc,GAAA,QAAA,oBAAA,WACA,MAAAd,KAAAU,KAAA,iBAAA6kB,UAEAvlB,IAAAc,GAAA,SAAA,gBAAA,WACA,MAAAf,QAAAk9D,kBACAj9D,IAAAU,KAAA,YAAAoG,YAAA,UACA2L,IAAA0pD,aAAAP,aAAA77D,OAAAk9D,kBAAAvhE,KAAAwE,UAAAD,UAFA,SAKAD,IAAAc,GAAA,QAAA,iBAAA,WAEA,MADAd,KAAAU,KAAA,YAAAoG,YAAA,UACA2L,IAAA0pD,aAAAL,eAAApgE,KAAAwE,UAAAD,WAEAF,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,gBAAA,UAAA,WAAA,eAAA,aAAAk9D,sBAEAD,0BAAA,SAAAK,QACA,GAAAp9D,KAWA,OAVAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAA1J,OAAA8/D,WAGA,OAFA9/D,OAAA6/D,OAAAn2D,OAAAq2D,eACAD,YAAA9/D,MAAAq0C,OACA1xC,IAAAjM,KAAA,SAAA,WACA,MAAAgM,QAAAtH,OAAA,WACA,MAAA0kE,aAAAp9D,OAAAC,IAAA,GAAAugB,MAAA,UAKAzgB,KAAAA,OAIA9T,OAAA4T,UAAA,iBAAA,SAAAi9D,6BAEA5pE,KAAA9G,M5B1LA,WACA,GAAAkxE,iCAAArxE,MAEAqxE,iCAAA,WACA,GAAAv9D,KAUA,OATAA,MAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAqJ,QAIA,OAHAA,SAAArJ,OAAAu2D,yBACAt9D,IAAAU,KAAA,WAAAoG,YAAA,UACA9G,IAAAU,KAAA,qBAAA0P,QAAA,MAAApJ,SAAA,UACAjH,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA8G,QAAA9G,OAAA,qBAEAA,OAAA4T,UAAA,2BAAAy9D,kCAEApqE,KAAA9G,M2DvBA,WACA,GAAAoxE,6BAAAC,2BAAAC,+BAAA3oE,SAAAM,MAAApJ,OAAAE,MACAmH,OAAA,SAAAC,MAAAC,QAAA,QAAAC,QAAArH,KAAAsH,YAAAH,MAAA,IAAA,GAAAI,OAAAH,QAAAI,QAAAV,KAAAM,OAAAG,OAAAJ,MAAAI,KAAAH,OAAAG,KAAA,OAAAF,MAAAI,UAAAL,OAAAK,UAAAN,MAAAM,UAAA,GAAAJ,MAAAF,MAAAO,UAAAN,OAAAK,UAAAN,OACAK,WAAAG,cAEA5H,OAAAC,KAAAD,MAEAkJ,MAAAjJ,KAAAD,MAAAkJ,MAEAN,SAAA3I,KAAAD,MAAA4I,SAEA9I,OAAA8G,QAAA9G,OAAA,qBAEAuxE,4BAAA,SAAAnpE,YAKA,QAAAmpE,6BAAA3mE,MAAAuG,UAAA4b,KAAA4E,QAAAtiB,GAAA7M,OAAAiG,EAAAF,SAAAC,QAAAqJ,MACA,GAAA1C,QACAhP,MAAAyK,MAAAA,MACAzK,KAAAgR,UAAAA,UACAhR,KAAA4sB,KAAAA,KACA5sB,KAAAwxB,QAAAA,QACAxxB,KAAAkP,GAAAA,GACAlP,KAAAqC,OAAAA,OACArC,KAAAsI,EAAAA,EACAtI,KAAAoI,SAAAA,SACApI,KAAAqI,QAAAA,QACArI,KAAA0R,KAAAA,KACA1R,KAAAyK,MAAAmZ,YAAA,sBACA5jB,KAAAyK,MAAAiE,WACA1O,KAAAyK,MAAA0D,KAAAnO,KAAA0R,KAAAJ,UACAtC,QAAAhP,KAAA0gB,kBACA1R,QAAAO,KAAA,KAAAvP,KAAAkI,mBAAAN,KAAA5H,OA2CA,MA/DAkH,QAAAkqE,4BAAAnpE,YAEAmpE,4BAAA//D,SAAA,SAAA,aAAA,UAAA,aAAA,eAAA,eAAA,KAAA,cAAA,aAAA,WAqBA+/D,4BAAA3pE,UAAA4lB,YAAA,WACA,MAAArtB,MAAAkP,GAAAC,SAAAhM,IAAAnD,KAAAyK,MAAA4E,WAAAE,KAAA,SAAAC,OACA,MAAA,UAAAd,SAGA,MAFAc,OAAA/E,MAAAiE,QAAAA,QACAc,MAAA/E,MAAAgY,MAAA,iBAAA/T,SACAA,UAEA1O,QAGAoxE,4BAAA3pE,UAAA8pE,mBAAA,WACA,MAAAvxE,MAAAkP,GAAAw/D,eAAAjoD,OAAAlX,KAAA,SAAAC,OACA,MAAA,UAAAk/D,gBAEA,MADAl/D,OAAA/E,MAAAikE,eAAAA,eACAA,iBAEA1uE,QAGAoxE,4BAAA3pE,UAAAiZ,gBAAA,WACA,GAAA1R,QASA,OARAA,SAAAhP,KAAA4sB,KAAA5qB,SACAM,MAAAtC,KAAAqC,OAAAC,QACAiN,KAAA,SAAAC,OACA,MAAA,UAAA/K,MAEA,MADA+K,OAAA/E,MAAA4E,UAAA5K,KAAAiK,QACAjK,OAEAzE,OACAgP,QAAAO,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA6d,gBAEArtB,OAAAuP,KAAA,SAAAC,OACA,MAAA,YACA,MAAAA,OAAA+hE,uBAEAvxE,QAGAoxE,6BAEAnoE,MAAAlJ,MAAA0I,WAAA1I,MAAA6N,YAEA/N,OAAAqhB,WAAA,8BAAAkwD,6BAEAC,2BAAA,WACA,GAAA19D,KAMA,OALAA,MAAA,SAAAC,OAAAC,KACA,MAAAD,QAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,UAIArH,KAAAA,OAIA9T,OAAA4T,UAAA,sBAAA49D,4BAEAC,+BAAA,SAAAl7D,MAAA7R,UACA,GAAAoP,MAAAN,QA+BA,OA9BAA,UAAAjT,EAAAiT,SAAA,syCACAM,KAAA,SAAAC,OAAAC,IAAA+G,QACA,GAAAJ,OA0BA,OAzBAA,QAAA,WAKA,MAJA3G,KAAAmH,MACAnH,IAAA2O,KAAAnP,UACAq7D,eAAA96D,OAAA86D,kBAEA76D,IAAAc,GAAA,SAAA,oBAAA,SAAAT,OACA,GAAAJ,SAAAC,UAAAy9D,OAAAC,YAAAC,WAAA3uD,MAaA,OAZAA,QAAApc,QAAA6E,QAAA0I,MAAA8O,eACAyuD,YAAA1uD,OAAA+hB,QAAA,qBAAArgC,KAAA,SACA+sE,OAAA59D,OAAA86D,eAAA+C,aACAC,WAAAF,OAAAG,aACAH,OAAAG,aAAAr1D,SAAAyG,OAAA/d,MAAA,IACA+O,UAAA,WACA,MAAAxP,UAAAI,OAAA,YAEAmP,QAAA,WAEA,MADAvP,UAAAI,OAAA,SACAoe,OAAA+hB,QAAA,qBAAAvwB,KAAA,eAAAm9D,WAAA,KAAAzuD,KAAA,WAAA,IAEA7M,MAAAmP,KAAAisD,QAAAjiE,KAAAwE,UAAAD,YAGAF,OAAAmH,IAAA,WAAA,WACA,MAAAlH,KAAAmH,QAEArS,SAAAiL,OAAAgH,OAAAmL,QAAAvL,UAGA7G,KAAAA,OAIA9T,OAAA4T,UAAA,2BAAA,UAAA,aAAA69D,kCAEAxqE,KAAA9G,M/BxIA,WACA,GAAAH,OAEAA,QAAA8G,QAAA9G,OAAA,gBAAA,aAEAiH,KAAA9G,MgCLA,WACA,GAAAL,WAAAE,OAAAE,KAEAA,OAAAC,KAAAD,MAEAF,OAAA8G,QAAA9G,OAAA,gBAEAF,UAAA,SAAAyB,gBACA,MAAAA,gBAAAU,KAAA,gBACAC,YAAA,+CAIAlC,OAAA+G,QAAA,iBAAAjH,aAEAmH,KAAA9G,MCfA,WACA,GAAA4xE,sBAAA/xE,OAAAE,MAAAsT,QAEAtT,OAAAC,KAAAD,MAEAF,OAAA8G,QAAA9G,OAAA,gBAEAwT,SAAAjT,EAAAiT,SAAA,8TAEAu+D,qBAAA,SAAA7rE,SACA,GAAA8rE,kBAAAv+D,WAAAw+D,iBAcA,OAbAD,kBAAA9rE,QAAA5C,IAAA,oBACA2uE,kBAAA/rE,QAAA5C,IAAA,qBACAmQ,WAAA,WACA,GAAAyI,IACA,OAAA81D,mBAAAC,mBAGA/1D,KACAg2D,SAAAD,kBACAE,WAAAH,kBAEAx+D,SAAA0I,MANA,KASAtR,SACA+I,SAAA,KACAH,SAAAC,aAIAzT,OAAA4T,UAAA,iBAAA,YAAAm+D,wBAEA9qE,KAAA9G,MCvDA2G,QAAA9G,OAAA,aAAA0K,MAAA,aACA1F,WACAotE,eAAA,kCACAC,aAAA,sCACAC,WAAA,oCACAC,iBAAA,oCACAC,cAAA,uCACAC,cAAA,+BACAC,eAAA,kDACAC,gBAAA,qCACAC,aAAA,6CACAC,QAAA,iCACAC,SAAA,kCACAhd,SAAA,0BACAid,OAAA,kCACAn4C,IAAA,oDACAD,IAAA,kDACAqV,MAAA,0CACAgjC,UAAA,iEACAC,UAAA,gEACAC,YAAA,gFACAC,SAAA,uCACAC,SAAA,sCACAC,WAAA,6CACAC,QAAA,kCAEAC,QACA9tD,QAAA,UACAC,KAAA,OACA8tD,QAAA,UACAj0B,OAAA,SACAx7C,OAAA,SACA0vE,WAAA,kBACAC,gBAAA,wBAEAC,YACAptC,KAAA,OACAC,KAAA,YAEAotC,mBACAC,YAAA,sBACAC,YAAA,uBACAC,YAAA,sBACAC,KAAA,OACAC,OAAA,SACAC,OAAA,SACAC,gBAAA,gBACAC,eAAA,eACAC,QAAA,UACAvgE,KAAA,OACAwgE,OAAA,SACAC,aAAA,oBACAllC,QAAA,UACAmlC,KAAA,OACApgD,YAAA,qBACAqgD,mBAAA,6BAEAjuD,IACAkuD,YAAA,iBACAC,mBAAA,mBACAC,qBAAA","file":"app.js","sourcesContent":["\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: app.coffee\n */\n\n(function() {\n var configure, init, module, modules, taiga;\n\n this.taiga = taiga = {};\n\n this.taigaContribPlugins = this.taigaContribPlugins || [];\n\n taiga.generateHash = function(components) {\n if (components == null) {\n components = [];\n }\n components = _.map(components, function(x) {\n return JSON.stringify(x);\n });\n return hex_sha1(components.join(\":\"));\n };\n\n taiga.generateUniqueSessionIdentifier = function() {\n var date, randomNumber;\n date = (new Date()).getTime();\n randomNumber = Math.floor(Math.random() * 0x9000000);\n return taiga.generateHash([date, randomNumber]);\n };\n\n taiga.sessionId = taiga.generateUniqueSessionIdentifier();\n\n configure = function($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, tgLoaderProvider, $compileProvider) {\n var authHttpIntercept, defaultHeaders, versionCheckHttpIntercept;\n $routeProvider.when(\"/\", {\n templateUrl: \"project/projects.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/\", {\n templateUrl: \"project/project.html\"\n });\n $routeProvider.when(\"/project/:pslug/search\", {\n templateUrl: \"search/search.html\",\n reloadOnSearch: false\n });\n $routeProvider.when(\"/project/:pslug/backlog\", {\n templateUrl: \"backlog/backlog.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/kanban\", {\n templateUrl: \"kanban/kanban.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/taskboard/:sslug\", {\n templateUrl: \"taskboard/taskboard.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/us/:usref\", {\n templateUrl: \"us/us-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/task/:taskref\", {\n templateUrl: \"task/task-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/wiki\", {\n redirectTo: function(params) {\n return \"/project/\" + params.pslug + \"/wiki/home\";\n }\n });\n $routeProvider.when(\"/project/:pslug/wiki/:slug\", {\n templateUrl: \"wiki/wiki.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/team\", {\n templateUrl: \"team/team.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/issues\", {\n templateUrl: \"issue/issues.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/issue/:issueref\", {\n templateUrl: \"issue/issues-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/details\", {\n templateUrl: \"admin/admin-project-profile.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/default-values\", {\n templateUrl: \"admin/admin-project-default-values.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/modules\", {\n templateUrl: \"admin/admin-project-modules.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/export\", {\n templateUrl: \"admin/admin-project-export.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/reports\", {\n templateUrl: \"admin/admin-project-reports.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/status\", {\n templateUrl: \"admin/admin-project-values-status.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/points\", {\n templateUrl: \"admin/admin-project-values-points.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/priorities\", {\n templateUrl: \"admin/admin-project-values-priorities.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/severities\", {\n templateUrl: \"admin/admin-project-values-severities.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/types\", {\n templateUrl: \"admin/admin-project-values-types.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/custom-fields\", {\n templateUrl: \"admin/admin-project-values-custom-fields.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/memberships\", {\n templateUrl: \"admin/admin-memberships.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/roles\", {\n templateUrl: \"admin/admin-roles.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/webhooks\", {\n templateUrl: \"admin/admin-third-parties-webhooks.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/github\", {\n templateUrl: \"admin/admin-third-parties-github.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/gitlab\", {\n templateUrl: \"admin/admin-third-parties-gitlab.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/bitbucket\", {\n templateUrl: \"admin/admin-third-parties-bitbucket.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/contrib/:plugin\", {\n templateUrl: \"contrib/main.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-profile\", {\n templateUrl: \"user/user-profile.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-change-password\", {\n templateUrl: \"user/user-change-password.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-avatar\", {\n templateUrl: \"user/user-avatar.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/mail-notifications\", {\n templateUrl: \"user/mail-notifications.html\"\n });\n $routeProvider.when(\"/change-email/:email_token\", {\n templateUrl: \"user/change-email.html\"\n });\n $routeProvider.when(\"/cancel-account/:cancel_token\", {\n templateUrl: \"user/cancel-account.html\"\n });\n $routeProvider.when(\"/login\", {\n templateUrl: \"auth/login.html\"\n });\n $routeProvider.when(\"/register\", {\n templateUrl: \"auth/register.html\"\n });\n $routeProvider.when(\"/forgot-password\", {\n templateUrl: \"auth/forgot-password.html\"\n });\n $routeProvider.when(\"/change-password\", {\n templateUrl: \"auth/change-password-from-recovery.html\"\n });\n $routeProvider.when(\"/change-password/:token\", {\n templateUrl: \"auth/change-password-from-recovery.html\"\n });\n $routeProvider.when(\"/invitation/:token\", {\n templateUrl: \"auth/invitation.html\"\n });\n $routeProvider.when(\"/error\", {\n templateUrl: \"error/error.html\"\n });\n $routeProvider.when(\"/not-found\", {\n templateUrl: \"error/not-found.html\"\n });\n $routeProvider.when(\"/permission-denied\", {\n templateUrl: \"error/permission-denied.html\"\n });\n $routeProvider.otherwise({\n redirectTo: '/not-found'\n });\n $locationProvider.html5Mode({\n enabled: true,\n requireBase: false\n });\n defaultHeaders = {\n \"Content-Type\": \"application/json\",\n \"Accept-Language\": \"en\",\n \"X-Session-Id\": taiga.sessionId\n };\n $httpProvider.defaults.headers[\"delete\"] = defaultHeaders;\n $httpProvider.defaults.headers.patch = defaultHeaders;\n $httpProvider.defaults.headers.post = defaultHeaders;\n $httpProvider.defaults.headers.put = defaultHeaders;\n $httpProvider.defaults.headers.get = {\n \"X-Session-Id\": taiga.sessionId\n };\n $tgEventsProvider.setSessionId(taiga.sessionId);\n authHttpIntercept = function($q, $location, $navUrls, $lightboxService) {\n var httpResponseError;\n httpResponseError = function(response) {\n var nextPath;\n if (response.status === 0) {\n $lightboxService.closeAll();\n $location.path($navUrls.resolve(\"error\"));\n $location.replace();\n } else if (response.status === 401) {\n nextPath = $location.path();\n $location.url($navUrls.resolve(\"login\")).search(\"next=\" + nextPath);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"authHttpIntercept\", [\"$q\", \"$location\", \"$tgNavUrls\", \"lightboxService\", authHttpIntercept]);\n $httpProvider.interceptors.push('authHttpIntercept');\n versionCheckHttpIntercept = function($q, $confirm) {\n var httpResponseError, versionErrorMsg;\n versionErrorMsg = \"Someone inside Taiga has changed this before and our Oompa Loompas cannot apply your changes. Please reload and apply your changes again (they will be lost).\";\n httpResponseError = function(response) {\n if (response.status === 400 && response.data.version) {\n $confirm.notify(\"error\", versionErrorMsg, null, 10000);\n return $q.reject(response);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"versionCheckHttpIntercept\", [\"$q\", \"$tgConfirm\", versionCheckHttpIntercept]);\n $httpProvider.interceptors.push('versionCheckHttpIntercept');\n window.checksley.updateValidators({\n linewidth: function(val, width) {\n var lines, valid;\n lines = taiga.nl2br(val).split(\"
\");\n valid = _.every(lines, function(line) {\n return line.length < width;\n });\n return valid;\n }\n });\n window.checksley.updateMessages(\"default\", {\n linewidth: \"The subject must have a maximum size of %s\"\n });\n return $compileProvider.debugInfoEnabled(window.taigaConfig.debugInfo || false);\n };\n\n init = function($log, $i18n, $config, $rootscope, $auth, $events, $analytics) {\n $i18n.initialize($config.get(\"defaultLanguage\"));\n $log.debug(\"Initialize application\");\n $rootscope.contribPlugins = this.taigaContribPlugins;\n if ($auth.isAuthenticated()) {\n $events.setupConnection();\n }\n return $analytics.initialize();\n };\n\n modules = [\"taigaBase\", \"taigaCommon\", \"taigaResources\", \"taigaLocales\", \"taigaAuth\", \"taigaEvents\", \"taigaRelatedTasks\", \"taigaBacklog\", \"taigaTaskboard\", \"taigaKanban\", \"taigaIssues\", \"taigaUserStories\", \"taigaTasks\", \"taigaTeam\", \"taigaWiki\", \"taigaSearch\", \"taigaAdmin\", \"taigaNavMenu\", \"taigaProject\", \"taigaUserSettings\", \"taigaFeedback\", \"taigaPlugins\", \"taigaIntegrations\", \"templates\", \"ngRoute\", \"ngAnimate\"].concat(_.map(this.taigaContribPlugins, function(plugin) {\n return plugin.module;\n }));\n\n module = angular.module(\"taiga\", modules);\n\n module.config([\"$routeProvider\", \"$locationProvider\", \"$httpProvider\", \"$provide\", \"$tgEventsProvider\", \"tgLoaderProvider\", \"$compileProvider\", configure]);\n\n module.run([\"$log\", \"$tgI18n\", \"$tgConfig\", \"$rootScope\", \"$tgAuth\", \"$tgEvents\", \"$tgAnalytics\", init]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: classes.coffee\n */\n\n(function() {\n var TaigaBase, TaigaController, TaigaService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n TaigaBase = (function() {\n function TaigaBase() {}\n\n return TaigaBase;\n\n })();\n\n TaigaService = (function(superClass) {\n extend(TaigaService, superClass);\n\n function TaigaService() {\n return TaigaService.__super__.constructor.apply(this, arguments);\n }\n\n return TaigaService;\n\n })(TaigaBase);\n\n TaigaController = (function(superClass) {\n extend(TaigaController, superClass);\n\n function TaigaController() {\n this.onInitialDataError = bind(this.onInitialDataError, this);\n return TaigaController.__super__.constructor.apply(this, arguments);\n }\n\n TaigaController.prototype.onInitialDataError = function(xhr) {\n if (xhr) {\n if (xhr.status === 404) {\n this.location.path(this.navUrls.resolve(\"not-found\"));\n this.location.replace();\n } else if (xhr.status === 403) {\n this.location.path(this.navUrls.resolve(\"permission-denied\"));\n this.location.replace();\n }\n }\n return this.q.reject(xhr);\n };\n\n return TaigaController;\n\n })(TaigaBase);\n\n this.taiga.Base = TaigaBase;\n\n this.taiga.Service = TaigaService;\n\n this.taiga.Controller = TaigaController;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: utils.coffee\n */\n\n(function() {\n var bindMethods, bindOnce, cancelTimeout, debounce, debounceLeading, groupBy, joinStr, mixOf, nl2br, scopeDefer, sizeFormat, slugify, startswith, taiga, timeout, toString, toggleText, trim, unslugify,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n slice = [].slice,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n nl2br = (function(_this) {\n return function(str) {\n var breakTag;\n breakTag = '
';\n return (str + '').replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1' + breakTag + '$2');\n };\n })(this);\n\n bindMethods = (function(_this) {\n return function(object) {\n var dependencies, methods;\n dependencies = _.keys(object);\n methods = [];\n _.forIn(object, function(value, key) {\n if (indexOf.call(dependencies, key) < 0) {\n return methods.push(key);\n }\n });\n return _.bindAll(object, methods);\n };\n })(this);\n\n bindOnce = (function(_this) {\n return function(scope, attr, continuation) {\n var delBind, val;\n val = scope.$eval(attr);\n if (val !== void 0) {\n return continuation(val);\n }\n delBind = null;\n return delBind = scope.$watch(attr, function(val) {\n if (val === void 0) {\n return;\n }\n continuation(val);\n if (delBind) {\n return delBind();\n }\n });\n };\n })(this);\n\n mixOf = function() {\n var Mixed, base, i, method, mixin, mixins, name, ref;\n base = arguments[0], mixins = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n Mixed = (function(superClass) {\n extend(Mixed, superClass);\n\n function Mixed() {\n return Mixed.__super__.constructor.apply(this, arguments);\n }\n\n return Mixed;\n\n })(base);\n for (i = mixins.length - 1; i >= 0; i += -1) {\n mixin = mixins[i];\n ref = mixin.prototype;\n for (name in ref) {\n method = ref[name];\n Mixed.prototype[name] = method;\n }\n }\n return Mixed;\n };\n\n trim = function(data, char) {\n return _.str.trim(data, char);\n };\n\n slugify = function(data) {\n return _.str.slugify(data);\n };\n\n unslugify = function(data) {\n if (data) {\n return _.str.capitalize(data.replace(/-/g, ' '));\n }\n return data;\n };\n\n toggleText = function(element, texts) {\n var nextTextPosition, text;\n nextTextPosition = element.data('nextTextPosition');\n if ((nextTextPosition == null) || nextTextPosition >= texts.length) {\n nextTextPosition = 0;\n }\n text = texts[nextTextPosition];\n element.data('nextTextPosition', nextTextPosition + 1);\n return element.text(text);\n };\n\n groupBy = function(coll, pred) {\n var i, item, len, result;\n result = {};\n for (i = 0, len = coll.length; i < len; i++) {\n item = coll[i];\n result[pred(item)] = item;\n }\n return result;\n };\n\n timeout = function(wait, continuation) {\n return window.setTimeout(continuation, wait);\n };\n\n cancelTimeout = function(timeoutVar) {\n return window.clearTimeout(timeoutVar);\n };\n\n scopeDefer = function(scope, func) {\n return _.defer((function(_this) {\n return function() {\n return scope.$apply(func);\n };\n })(this));\n };\n\n toString = function(value) {\n if (_.isNumber(value)) {\n return value + \"\";\n } else if (_.isString(value)) {\n return value;\n } else if (_.isPlainObject(value)) {\n return JSON.stringify(value);\n } else if (_.isUndefined(value)) {\n return \"\";\n }\n return value.toString();\n };\n\n joinStr = function(str, coll) {\n return _.str.join(str, coll);\n };\n\n debounce = function(wait, func) {\n return _.debounce(func, wait, {\n leading: true,\n trailing: false\n });\n };\n\n debounceLeading = function(wait, func) {\n return _.debounce(func, wait, {\n leading: false,\n trailing: true\n });\n };\n\n startswith = function(str1, str2) {\n return _.str.startsWith(str1, str2);\n };\n\n sizeFormat = function(input, precision) {\n var number, size, units;\n if (precision == null) {\n precision = 1;\n }\n if (isNaN(parseFloat(input)) || !isFinite(input)) {\n return \"-\";\n }\n if (input === 0) {\n return \"0 bytes\";\n }\n units = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\n number = Math.floor(Math.log(input) / Math.log(1024));\n if (number > 5) {\n number = 5;\n }\n size = (input / Math.pow(1024, number)).toFixed(precision);\n return size + \" \" + units[number];\n };\n\n taiga = this.taiga;\n\n taiga.nl2br = nl2br;\n\n taiga.bindMethods = bindMethods;\n\n taiga.bindOnce = bindOnce;\n\n taiga.mixOf = mixOf;\n\n taiga.trim = trim;\n\n taiga.slugify = slugify;\n\n taiga.unslugify = unslugify;\n\n taiga.toggleText = toggleText;\n\n taiga.groupBy = groupBy;\n\n taiga.timeout = timeout;\n\n taiga.cancelTimeout = cancelTimeout;\n\n taiga.scopeDefer = scopeDefer;\n\n taiga.toString = toString;\n\n taiga.joinStr = joinStr;\n\n taiga.debounce = debounce;\n\n taiga.debounceLeading = debounceLeading;\n\n taiga.startswith = startswith;\n\n taiga.sizeFormat = sizeFormat;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/controllerMixins.coffee\n */\n\n(function() {\n var FiltersMixin, PageMixin, groupBy, joinStr, taiga, toString, trim;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n joinStr = this.taiga.joinStr;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n PageMixin = (function() {\n function PageMixin() {}\n\n PageMixin.prototype.fillUsersAndRoles = function(users, roles) {\n var activeUsers, availableRoles;\n activeUsers = _.filter(users, (function(_this) {\n return function(user) {\n return user.is_active;\n };\n })(this));\n this.scope.activeUsers = _.sortBy(activeUsers, \"full_name_display\");\n this.scope.activeUsersById = groupBy(this.scope.activeUsers, function(e) {\n return e.id;\n });\n this.scope.users = _.sortBy(users, \"full_name_display\");\n this.scope.usersById = groupBy(this.scope.users, function(e) {\n return e.id;\n });\n this.scope.roles = _.sortBy(roles, \"order\");\n availableRoles = _(this.scope.project.memberships).map(\"role\").uniq().value();\n return this.scope.computableRoles = _(roles).filter(\"computable\").filter(function(x) {\n return _.contains(availableRoles, x.id);\n }).value();\n };\n\n PageMixin.prototype.loadUsersAndRoles = function() {\n var promise;\n promise = this.q.all([this.rs.projects.usersList(this.scope.projectId), this.rs.projects.rolesList(this.scope.projectId)]);\n return promise.then((function(_this) {\n return function(results) {\n var roles, users;\n users = results[0], roles = results[1];\n _this.fillUsersAndRoles(users, roles);\n return results;\n };\n })(this));\n };\n\n return PageMixin;\n\n })();\n\n taiga.PageMixin = PageMixin;\n\n FiltersMixin = (function() {\n function FiltersMixin() {}\n\n FiltersMixin.prototype.selectFilter = function(name, value, load) {\n var existing, location, params;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\n if (params[name] !== void 0 && name !== \"page\") {\n existing = _.map(taiga.toString(params[name]).split(\",\"), function(x) {\n return trim(x);\n });\n existing.push(taiga.toString(value));\n existing = _.compact(existing);\n value = joinStr(\",\", _.uniq(existing));\n }\n if (!this.location.isInCurrentRouteParams(name, value)) {\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n }\n };\n\n FiltersMixin.prototype.replaceFilter = function(name, value, load) {\n var location;\n if (load == null) {\n load = false;\n }\n if (!this.location.isInCurrentRouteParams(name, value)) {\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n }\n };\n\n FiltersMixin.prototype.replaceAllFilters = function(filters, load) {\n var location;\n if (load == null) {\n load = false;\n }\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(filters);\n };\n\n FiltersMixin.prototype.unselectFilter = function(name, value, load) {\n var location, newValues, params, parsedValues;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\n if (params[name] === void 0) {\n return;\n }\n if (value === void 0 || value === null) {\n delete params[name];\n }\n parsedValues = _.map(taiga.toString(params[name]).split(\",\"), function(x) {\n return trim(x);\n });\n newValues = _.reject(parsedValues, function(x) {\n return x === taiga.toString(value);\n });\n newValues = _.compact(newValues);\n if (_.isEmpty(newValues)) {\n value = null;\n } else {\n value = joinStr(\",\", _.uniq(newValues));\n }\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n };\n\n return FiltersMixin;\n\n })();\n\n taiga.FiltersMixin = FiltersMixin;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaAdmin\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/auth.coffee\n */\n\n(function() {\n var AuthService, CancelAccountDirective, ChangeEmailDirective, ChangePasswordFromRecoveryDirective, ForgotPasswordDirective, InvitationDirective, LoginDirective, PublicRegisterMessageDirective, RegisterDirective, debounce, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAuth\", [\"taigaResources\"]);\n\n AuthService = (function(superClass) {\n extend(AuthService, superClass);\n\n AuthService.$inject = [\"$rootScope\", \"$tgStorage\", \"$tgModel\", \"$tgResources\", \"$tgHttp\", \"$tgUrls\"];\n\n function AuthService(rootscope, storage, model, rs, http, urls) {\n this.rootscope = rootscope;\n this.storage = storage;\n this.model = model;\n this.rs = rs;\n this.http = http;\n this.urls = urls;\n AuthService.__super__.constructor.call(this);\n }\n\n AuthService.prototype.getUser = function() {\n var user, userData;\n if (this.rootscope.user) {\n return this.rootscope.user;\n }\n userData = this.storage.get(\"userInfo\");\n if (userData) {\n user = this.model.make_model(\"users\", userData);\n this.rootscope.user = user;\n return user;\n }\n return null;\n };\n\n AuthService.prototype.setUser = function(user) {\n this.rootscope.auth = user;\n this.rootscope.$broadcast(\"i18n:change\", user.default_language);\n this.storage.set(\"userInfo\", user.getAttrs());\n return this.rootscope.user = user;\n };\n\n AuthService.prototype.clear = function() {\n this.rootscope.auth = null;\n this.rootscope.user = null;\n return this.storage.remove(\"userInfo\");\n };\n\n AuthService.prototype.setToken = function(token) {\n return this.storage.set(\"token\", token);\n };\n\n AuthService.prototype.getToken = function() {\n return this.storage.get(\"token\");\n };\n\n AuthService.prototype.removeToken = function() {\n return this.storage.remove(\"token\");\n };\n\n AuthService.prototype.isAuthenticated = function() {\n if (this.getUser() !== null) {\n return true;\n }\n return false;\n };\n\n AuthService.prototype.login = function(data, type) {\n var url;\n url = this.urls.resolve(\"auth\");\n data = _.clone(data, false);\n data.type = type ? type : \"normal\";\n this.removeToken();\n return this.http.post(url, data).then((function(_this) {\n return function(data, status) {\n var user;\n user = _this.model.make_model(\"users\", data.data);\n _this.setToken(user.auth_token);\n _this.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.logout = function() {\n this.removeToken();\n return this.clear();\n };\n\n AuthService.prototype.register = function(data, type, existing) {\n var url;\n url = this.urls.resolve(\"auth-register\");\n data = _.clone(data, false);\n data.type = type ? type : \"public\";\n if (type === \"private\") {\n data.existing = existing ? existing : false;\n }\n this.removeToken();\n return this.http.post(url, data).then((function(_this) {\n return function(response) {\n var user;\n user = _this.model.make_model(\"users\", response.data);\n _this.setToken(user.auth_token);\n _this.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.getInvitation = function(token) {\n return this.rs.invitations.get(token);\n };\n\n AuthService.prototype.acceptInvitiationWithNewUser = function(data) {\n return this.register(data, \"private\", false);\n };\n\n AuthService.prototype.acceptInvitiationWithExistingUser = function(data) {\n return this.register(data, \"private\", true);\n };\n\n AuthService.prototype.forgotPassword = function(data) {\n var url;\n url = this.urls.resolve(\"users-password-recovery\");\n data = _.clone(data, false);\n this.removeToken();\n return this.http.post(url, data);\n };\n\n AuthService.prototype.changePasswordFromRecovery = function(data) {\n var url;\n url = this.urls.resolve(\"users-change-password-from-recovery\");\n data = _.clone(data, false);\n this.removeToken();\n return this.http.post(url, data);\n };\n\n AuthService.prototype.changeEmail = function(data) {\n var url;\n url = this.urls.resolve(\"users-change-email\");\n data = _.clone(data, false);\n return this.http.post(url, data);\n };\n\n AuthService.prototype.cancelAccount = function(data) {\n var url;\n url = this.urls.resolve(\"users-cancel-account\");\n data = _.clone(data, false);\n return this.http.post(url, data);\n };\n\n return AuthService;\n\n })(taiga.Service);\n\n module.service(\"$tgAuth\", AuthService);\n\n PublicRegisterMessageDirective = function($config, $navUrls, templates) {\n var template, templateFn;\n template = templates.get(\"auth/login-text.html\", true);\n templateFn = function() {\n var publicRegisterEnabled;\n publicRegisterEnabled = $config.get(\"publicRegisterEnabled\");\n if (!publicRegisterEnabled) {\n return \"\";\n }\n return template({\n url: $navUrls.resolve(\"register\")\n });\n };\n return {\n restrict: \"AE\",\n scope: {},\n template: templateFn\n };\n };\n\n module.directive(\"tgPublicRegisterMessage\", [\"$tgConfig\", \"$tgNavUrls\", \"$tgTemplate\", PublicRegisterMessageDirective]);\n\n LoginDirective = function($auth, $confirm, $location, $config, $routeParams, $navUrls, $events) {\n var link;\n link = function($scope, $el, $attrs) {\n var onError, onSuccess, submit;\n onSuccess = function(response) {\n var nextUrl;\n if ($routeParams['next'] && $routeParams['next'] !== $navUrls.resolve(\"login\")) {\n nextUrl = $routeParams['next'];\n } else {\n nextUrl = $navUrls.resolve(\"home\");\n }\n $events.setupConnection();\n return $location.path(nextUrl);\n };\n onError = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your username/email or password are incorrect.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var data, form, loginFormType, promise;\n event.preventDefault();\n form = new checksley.Form($el.find(\"form.login-form\"));\n if (!form.validate()) {\n return;\n }\n data = {\n \"username\": $el.find(\"form.login-form input[name=username]\").val(),\n \"password\": $el.find(\"form.login-form input[name=password]\").val()\n };\n loginFormType = $config.get(\"loginFormType\", \"normal\");\n promise = $auth.login(data, loginFormType);\n return promise.then(onSuccess, onError);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLogin\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgConfig\", \"$routeParams\", \"$tgNavUrls\", \"$tgEvents\", LoginDirective]);\n\n RegisterDirective = function($auth, $confirm, $location, $navUrls, $config, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n if (!$config.get(\"publicRegisterEnabled\")) {\n $location.path($navUrls.resolve(\"not-found\"));\n $location.replace();\n }\n $scope.data = {};\n form = $el.find(\"form\").checksley({\n onlyOneErrorElement: true\n });\n onSuccessSubmit = function(response) {\n $analytics.trackEvent(\"auth\", \"register\", \"user registration\", 1);\n $confirm.notify(\"success\", \"Our Oompa Loompas are happy, welcome to Taiga.\");\n return $location.path($navUrls.resolve(\"home\"));\n };\n onErrorSubmit = function(response) {\n if (response.data._error_message != null) {\n $confirm.notify(\"light-error\", \"According to our Oompa Loompas there was an error. \" + response.data._error_message);\n }\n return form.setErrors(response.data);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.register($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRegister\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", \"$tgConfig\", \"$tgAnalytics\", RegisterDirective]);\n\n ForgotPasswordDirective = function($auth, $confirm, $location, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Check your inbox!
We have sent a mail to
\" + response.data.email + \"
with the instructions to set a new password\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your are not registered yet.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.forgotPassword($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgForgotPassword\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", ForgotPasswordDirective]);\n\n ChangePasswordFromRecoveryDirective = function($auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n if ($params.token != null) {\n $scope.tokenInParams = true;\n $scope.data.token = $params.token;\n } else {\n $scope.tokenInParams = false;\n }\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Our Oompa Loompas saved your new password.
Try to sign in with it.\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"light-error\", \"One of our Oompa Loompas say '\" + response.data._error_message + \"'.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.changePasswordFromRecovery($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangePasswordFromRecovery\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", ChangePasswordFromRecoveryDirective]);\n\n InvitationDirective = function($auth, $confirm, $location, $params, $navUrls, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var loginForm, onErrorSubmitLogin, onErrorSubmitRegister, onSuccessSubmitLogin, onSuccessSubmitRegister, promise, registerForm, submitLogin, submitRegister, token;\n token = $params.token;\n promise = $auth.getInvitation(token);\n promise.then(function(invitation) {\n return $scope.invitation = invitation;\n });\n promise.then(null, function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Ooops, we have a problem
Our Oompa Loompas can't find your invitation.\");\n });\n $scope.dataLogin = {\n token: token\n };\n loginForm = $el.find(\"form.login-form\").checksley({\n onlyOneErrorElement: true\n });\n onSuccessSubmitLogin = function(response) {\n $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with existing user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitLogin = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your are not registered yet or typed an invalid password.\");\n };\n submitLogin = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!loginForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithExistingUser($scope.dataLogin);\n return promise.then(onSuccessSubmitLogin, onErrorSubmitLogin);\n };\n })(this));\n $el.on(\"submit\", \"form.login-form\", submitLogin);\n $el.on(\"click\", \".button-login\", submitLogin);\n $scope.dataRegister = {\n token: token\n };\n registerForm = $el.find(\"form.register-form\").checksley();\n onSuccessSubmitRegister = function(response) {\n $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with new user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitRegister = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, that username or email is already in use.\");\n };\n submitRegister = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!registerForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithNewUser($scope.dataRegister);\n return promise.then(onSuccessSubmitRegister, onErrorSubmitRegister);\n };\n })(this));\n $el.on(\"submit\", \"form.register-form\", submitRegister);\n return $el.on(\"click\", \".button-register\", submitRegister);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgInvitation\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$tgAnalytics\", InvitationDirective]);\n\n ChangeEmailDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.email_token = $params.email_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n return $repo.queryOne(\"users\", $auth.getUser().id).then((function(_this) {\n return function(data) {\n $auth.setUser(data);\n $location.path($navUrls.resolve(\"home\"));\n return $confirm.success(\"Our Oompa Loompas updated your email\");\n };\n })(this));\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"error\", \"One of our Oompa Loompas says '\" + response.data._error_message + \"'.\");\n };\n submit = function() {\n var promise;\n if (!form.validate()) {\n return;\n }\n promise = $auth.changeEmail($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n $el.on(\"submit\", function(event) {\n event.preventDefault();\n return submit();\n });\n return $el.on(\"click\", \"a.button-change-email\", function(event) {\n event.preventDefault();\n return submit();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangeEmail\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", ChangeEmailDirective]);\n\n CancelAccountDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.cancel_token = $params.cancel_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $auth.logout();\n $location.path($navUrls.resolve(\"home\"));\n return $confirm.success(\"Our Oompa Loompas removed your account\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"error\", \"One of our Oompa Loompas says '\" + response.data._error_message + \"'.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.cancelAccount($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgCancelAccount\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", CancelAccountDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/backlog.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaBacklog\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base.coffee\n */\n\n(function() {\n var TaigaMainDirective, bindOnce, groupBy, init, module, taiga, urls;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaBase\", [\"taigaLocales\"]);\n\n TaigaMainDirective = function($rootscope, $window) {\n var link;\n link = function($scope, $el, $attrs) {\n return $window.onresize = function() {\n return $rootscope.$broadcast(\"resize\");\n };\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMain\", [\"$rootScope\", \"$window\", TaigaMainDirective]);\n\n urls = {\n \"home\": \"/\",\n \"error\": \"/error\",\n \"not-found\": \"/not-found\",\n \"permission-denied\": \"/permission-denied\",\n \"login\": \"/login\",\n \"forgot-password\": \"/forgot-password\",\n \"change-password\": \"/change-password/:token\",\n \"change-email\": \"/change-email/:token\",\n \"cancel-account\": \"/cancel-account/:token\",\n \"register\": \"/register\",\n \"invitation\": \"/invitation/:token\",\n \"create-project\": \"/create-project\",\n \"profile\": \"/:user\",\n \"project\": \"/project/:project\",\n \"project-backlog\": \"/project/:project/backlog\",\n \"project-taskboard\": \"/project/:project/taskboard/:sprint\",\n \"project-kanban\": \"/project/:project/kanban\",\n \"project-issues\": \"/project/:project/issues\",\n \"project-search\": \"/project/:project/search\",\n \"project-userstories-detail\": \"/project/:project/us/:ref\",\n \"project-tasks-detail\": \"/project/:project/task/:ref\",\n \"project-issues-detail\": \"/project/:project/issue/:ref\",\n \"project-wiki\": \"/project/:project/wiki\",\n \"project-wiki-page\": \"/project/:project/wiki/:slug\",\n \"project-team\": \"/project/:project/team\",\n \"project-admin-home\": \"/project/:project/admin/project-profile/details\",\n \"project-admin-project-profile-details\": \"/project/:project/admin/project-profile/details\",\n \"project-admin-project-profile-default-values\": \"/project/:project/admin/project-profile/default-values\",\n \"project-admin-project-profile-modules\": \"/project/:project/admin/project-profile/modules\",\n \"project-admin-project-profile-export\": \"/project/:project/admin/project-profile/export\",\n \"project-admin-project-profile-reports\": \"/project/:project/admin/project-profile/reports\",\n \"project-admin-project-values-status\": \"/project/:project/admin/project-values/status\",\n \"project-admin-project-values-points\": \"/project/:project/admin/project-values/points\",\n \"project-admin-project-values-priorities\": \"/project/:project/admin/project-values/priorities\",\n \"project-admin-project-values-severities\": \"/project/:project/admin/project-values/severities\",\n \"project-admin-project-values-types\": \"/project/:project/admin/project-values/types\",\n \"project-admin-project-values-custom-fields\": \"/project/:project/admin/project-values/custom-fields\",\n \"project-admin-memberships\": \"/project/:project/admin/memberships\",\n \"project-admin-roles\": \"/project/:project/admin/roles\",\n \"project-admin-third-parties-webhooks\": \"/project/:project/admin/third-parties/webhooks\",\n \"project-admin-third-parties-github\": \"/project/:project/admin/third-parties/github\",\n \"project-admin-third-parties-gitlab\": \"/project/:project/admin/third-parties/gitlab\",\n \"project-admin-third-parties-bitbucket\": \"/project/:project/admin/third-parties/bitbucket\",\n \"project-admin-contrib\": \"/project/:project/admin/contrib/:plugin\",\n \"user-settings-user-profile\": \"/project/:project/user-settings/user-profile\",\n \"user-settings-user-change-password\": \"/project/:project/user-settings/user-change-password\",\n \"user-settings-user-avatar\": \"/project/:project/user-settings/user-avatar\",\n \"user-settings-mail-notifications\": \"/project/:project/user-settings/mail-notifications\"\n };\n\n init = function($log, $navurls) {\n $log.debug(\"Initialize navigation urls\");\n return $navurls.update(urls);\n };\n\n module.run([\"$log\", \"$tgNavUrls\", init]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common.coffee\n */\n\n(function() {\n var AnimationFrame, AppTitle, CheckPermissionDirective, ClassPermissionDirective, LimitLineLengthDirective, ProjectUrl, Qqueue, SelectedText, Template, ToggleCommentDirective, module, taiga,\n slice = [].slice;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\", []);\n\n SelectedText = function($window, $document) {\n var get;\n get = function() {\n if ($window.getSelection) {\n return $window.getSelection().toString();\n } else if ($document.selection) {\n return $document.selection.createRange().text;\n }\n return \"\";\n };\n return {\n get: get\n };\n };\n\n module.factory(\"$selectedText\", [\"$window\", \"$document\", SelectedText]);\n\n CheckPermissionDirective = function() {\n var link, render;\n render = function($el, project, permission) {\n if (project.my_permissions.indexOf(permission) > -1) {\n return $el.removeClass('hidden');\n }\n };\n link = function($scope, $el, $attrs) {\n var permission;\n $el.addClass('hidden');\n permission = $attrs.tgCheckPermission;\n $scope.$watch(\"project\", function(project) {\n if (project != null) {\n return render($el, project, permission);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgCheckPermission\", CheckPermissionDirective);\n\n ClassPermissionDirective = function() {\n var link, name;\n name = \"tgClassPermission\";\n link = function($scope, $el, $attrs) {\n var checkPermissions, tgClassPermissionWatchAction, unbindWatcher;\n checkPermissions = function(project, className, permission) {\n var negation;\n negation = permission[0] === \"!\";\n if (negation) {\n permission = permission.slice(1);\n }\n if (negation && project.my_permissions.indexOf(permission) === -1) {\n return $el.addClass(className);\n } else if (!negation && project.my_permissions.indexOf(permission) !== -1) {\n return $el.addClass(className);\n } else {\n return $el.removeClass(className);\n }\n };\n tgClassPermissionWatchAction = function(project) {\n var className, classes, permission, results;\n if (project) {\n unbindWatcher();\n classes = $scope.$eval($attrs[name]);\n results = [];\n for (className in classes) {\n permission = classes[className];\n results.push(checkPermissions(project, className, permission));\n }\n return results;\n }\n };\n return unbindWatcher = $scope.$watch(\"project\", tgClassPermissionWatchAction);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgClassPermission\", ClassPermissionDirective);\n\n AnimationFrame = function() {\n var add, animationFrame, performAnimation, tail;\n animationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n performAnimation = (function(_this) {\n return function(time) {\n var fn;\n fn = tail.shift();\n fn();\n if (tail.length) {\n return animationFrame(performAnimation);\n }\n };\n })(this);\n tail = [];\n add = function() {\n var fn, i, len, results;\n results = [];\n for (i = 0, len = arguments.length; i < len; i++) {\n fn = arguments[i];\n tail.push(fn);\n if (tail.length === 1) {\n results.push(animationFrame(performAnimation));\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n return {\n add: add\n };\n };\n\n module.factory(\"animationFrame\", AnimationFrame);\n\n ToggleCommentDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.find(\"textarea\").on(\"focus\", function() {\n return $el.addClass(\"active\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgToggleComment\", ToggleCommentDirective);\n\n AppTitle = function() {\n var set;\n set = function(text) {\n return $(\"title\").text(text);\n };\n return {\n set: set\n };\n };\n\n module.factory(\"$appTitle\", AppTitle);\n\n ProjectUrl = function($navurls) {\n var get;\n get = function(project) {\n var ctx;\n ctx = {\n project: project.slug\n };\n if (project.is_backlog_activated && project.my_permissions.indexOf(\"view_us\") > -1) {\n return $navurls.resolve(\"project-backlog\", ctx);\n }\n if (project.is_kanban_activated && project.my_permissions.indexOf(\"view_us\") > -1) {\n return $navurls.resolve(\"project-kanban\", ctx);\n }\n if (project.is_wiki_activated && project.my_permissions.indexOf(\"view_wiki_pages\") > -1) {\n return $navurls.resolve(\"project-wiki\", ctx);\n }\n if (project.is_issues_activated && project.my_permissions.indexOf(\"view_issues\") > -1) {\n return $navurls.resolve(\"project-issues\", ctx);\n }\n return $navurls.resolve(\"project\", ctx);\n };\n return {\n get: get\n };\n };\n\n module.factory(\"$projectUrl\", [\"$tgNavUrls\", ProjectUrl]);\n\n LimitLineLengthDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var maxColsPerLine;\n maxColsPerLine = parseInt($el.attr(\"cols\"));\n return $el.on(\"keyup\", function(event) {\n var code, lines;\n code = event.keyCode;\n lines = $el.val().split(\"\\n\");\n _.each(lines, function(line, index) {\n return lines[index] = line.substring(0, maxColsPerLine - 2);\n });\n return $el.val(lines.join(\"\\n\"));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLimitLineLength\", LimitLineLengthDirective);\n\n Qqueue = function($q) {\n var deferred, lastPromise, qqueue;\n deferred = $q.defer();\n deferred.resolve();\n lastPromise = deferred.promise;\n qqueue = {\n bindAdd: (function(_this) {\n return function(fn) {\n return function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return lastPromise = lastPromise.then(function() {\n return fn.apply(_this, args);\n });\n };\n return qqueue;\n };\n })(this),\n add: (function(_this) {\n return function(fn) {\n if (!lastPromise) {\n lastPromise = fn();\n } else {\n lastPromise = lastPromise.then(fn);\n }\n return qqueue;\n };\n })(this)\n };\n return qqueue;\n };\n\n module.factory(\"$tgQqueue\", [\"$q\", Qqueue]);\n\n Template = function($templateCache) {\n return {\n get: (function(_this) {\n return function(name, lodash) {\n var tmp;\n if (lodash == null) {\n lodash = false;\n }\n tmp = $templateCache.get(name);\n if (lodash) {\n tmp = _.template(tmp);\n }\n return tmp;\n };\n })(this)\n };\n };\n\n module.factory(\"$tgTemplate\", [\"$templateCache\", Template]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/events.coffee\n */\n\n(function() {\n var EventsProvider, EventsService, bindMethods, module, startswith, taiga;\n\n taiga = this.taiga;\n\n startswith = this.taiga.startswith;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaEvents\", []);\n\n EventsService = (function() {\n function EventsService(win, log, config, auth) {\n this.win = win;\n this.log = log;\n this.config = config;\n this.auth = auth;\n bindMethods(this);\n }\n\n EventsService.prototype.initialize = function(sessionId) {\n this.sessionId = sessionId;\n this.subscriptions = {};\n this.connected = false;\n this.error = false;\n this.pendingMessages = [];\n if (this.win.WebSocket === void 0) {\n return this.log.info(\"WebSockets not supported on your browser\");\n }\n };\n\n EventsService.prototype.setupConnection = function() {\n var loc, path, scheme, url;\n this.stopExistingConnection();\n url = this.config.get(\"eventsUrl\");\n if (!url) {\n return;\n }\n if (!startswith(url, \"ws:\") && !startswith(url, \"wss:\")) {\n loc = this.win.location;\n scheme = loc.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n path = _.str.ltrim(url, \"/\");\n url = scheme + \"//\" + loc.host + \"/\" + path;\n }\n this.ws = new this.win.WebSocket(url);\n this.ws.addEventListener(\"open\", this.onOpen);\n this.ws.addEventListener(\"message\", this.onMessage);\n this.ws.addEventListener(\"error\", this.onError);\n return this.ws.addEventListener(\"close\", this.onClose);\n };\n\n EventsService.prototype.stopExistingConnection = function() {\n if (this.ws === void 0) {\n return;\n }\n this.ws.removeEventListener(\"open\", this.onOpen);\n this.ws.removeEventListener(\"close\", this.onClose);\n this.ws.removeEventListener(\"error\", this.onError);\n this.ws.removeEventListener(\"message\", this.onMessage);\n this.ws.close();\n return delete this.ws;\n };\n\n EventsService.prototype.serialize = function(message) {\n if (_.isObject(message)) {\n return JSON.stringify(message);\n }\n return message;\n };\n\n EventsService.prototype.sendMessage = function(message) {\n var i, len, messages, msg, results;\n this.pendingMessages.push(message);\n if (!this.connected) {\n return;\n }\n messages = _.map(this.pendingMessages, this.serialize);\n this.pendingMessages = [];\n results = [];\n for (i = 0, len = messages.length; i < len; i++) {\n msg = messages[i];\n results.push(this.ws.send(msg));\n }\n return results;\n };\n\n EventsService.prototype.subscribe = function(scope, routingKey, callback) {\n var message, subscription;\n if (this.error) {\n return;\n }\n this.log.debug(\"Subscribe to: \" + routingKey);\n subscription = {\n scope: scope,\n routingKey: routingKey,\n callback: _.debounce(callback, 500, {\n \"leading\": true,\n \"trailing\": false\n })\n };\n message = {\n \"cmd\": \"subscribe\",\n \"routing_key\": routingKey\n };\n this.subscriptions[routingKey] = subscription;\n this.sendMessage(message);\n return scope.$on(\"$destroy\", (function(_this) {\n return function() {\n return _this.unsubscribe(routingKey);\n };\n })(this));\n };\n\n EventsService.prototype.unsubscribe = function(routingKey) {\n var message;\n if (this.error) {\n return;\n }\n this.log.debug(\"Unsubscribe from: \" + routingKey);\n message = {\n \"cmd\": \"unsubscribe\",\n \"routing_key\": routingKey\n };\n return this.sendMessage(message);\n };\n\n EventsService.prototype.onOpen = function() {\n var message, token;\n this.connected = true;\n this.log.debug(\"WebSocket connection opened\");\n token = this.auth.getToken();\n message = {\n cmd: \"auth\",\n data: {\n token: token,\n sessionId: this.sessionId\n }\n };\n return this.sendMessage(message);\n };\n\n EventsService.prototype.onMessage = function(event) {\n var data, routingKey, subscription;\n this.log.debug(\"WebSocket message received: \" + event.data);\n data = JSON.parse(event.data);\n routingKey = data.routing_key;\n if (this.subscriptions[routingKey] == null) {\n return;\n }\n subscription = this.subscriptions[routingKey];\n return subscription.scope.$apply(function() {\n return subscription.callback(data.data);\n });\n };\n\n EventsService.prototype.onError = function(error) {\n this.log.error(\"WebSocket error: \" + error);\n return this.error = true;\n };\n\n EventsService.prototype.onClose = function() {\n this.log.debug(\"WebSocket closed.\");\n return this.connected = false;\n };\n\n return EventsService;\n\n })();\n\n EventsProvider = (function() {\n function EventsProvider() {}\n\n EventsProvider.prototype.setSessionId = function(sessionId) {\n return this.sessionId = sessionId;\n };\n\n EventsProvider.prototype.$get = function($win, $log, $conf, $auth) {\n var service;\n service = new EventsService($win, $log, $conf, $auth);\n service.initialize(this.sessionId);\n return service;\n };\n\n EventsProvider.prototype.$get.$inject = [\"$window\", \"$log\", \"$tgConfig\", \"$tgAuth\"];\n\n return EventsProvider;\n\n })();\n\n module.provider(\"$tgEvents\", EventsProvider);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/feedback.coffee\n */\n\n(function() {\n var FeedbackDirective, bindOnce, debounce, groupBy, mixOf, module, taiga, trim;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n mixOf = this.taiga.mixOf;\n\n debounce = this.taiga.debounce;\n\n trim = this.taiga.trim;\n\n module = angular.module(\"taigaFeedback\", []);\n\n FeedbackDirective = function($lightboxService, $repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley();\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.create(\"feedback\", $scope.feedback);\n promise.then(function(data) {\n $loading.finish(submitButton);\n $lightboxService.close($el);\n return $confirm.notify(\"success\", \"\\\\o/ we'll be happy to read your\");\n });\n return promise.then(null, function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n $scope.$on(\"feedback:show\", function() {\n $scope.$apply(function() {\n return $scope.feedback = {};\n });\n $lightboxService.open($el);\n return $el.find(\"textarea\").focus();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbFeedback\", [\"lightboxService\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", FeedbackDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/integrations.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIntegrations\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/issues.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage, $q) {\n var filtersHashSuffix, hashSuffix, myFiltersHashSuffix, service;\n service = {};\n hashSuffix = \"issues-queryparams\";\n filtersHashSuffix = \"issues-filters\";\n myFiltersHashSuffix = \"issues-my-filters\";\n service.get = function(projectId, issueId) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"issues\", issueId, params);\n };\n service.getByRef = function(projectId, ref) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n return $repo.queryOne(\"issues\", \"by_ref\", params);\n };\n service.list = function(projectId, filters, options) {\n var params;\n params = {\n project: projectId\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryPaginated(\"issues\", params, options);\n };\n service.bulkCreate = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-create-issues\");\n params = {\n project_id: projectId,\n bulk_issues: data\n };\n return $http.post(url, params);\n };\n service.stats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/issues_stats\");\n };\n service.filtersData = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/issue_filters_data\");\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(type, params);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeFilters = function(projectSlug, params) {\n var hash, ns;\n ns = projectSlug + \":\" + filtersHashSuffix;\n hash = generateHash([projectSlug, ns]);\n return $storage.set(hash, params);\n };\n service.getFilters = function(projectSlug) {\n var hash, ns;\n ns = projectSlug + \":\" + filtersHashSuffix;\n hash = generateHash([projectSlug, ns]);\n return $storage.get(hash) || {};\n };\n service.storeMyFilters = function(projectId, myFilters) {\n var deferred, hash, ns, promise, url;\n deferred = $q.defer();\n url = $urls.resolve(\"user-storage\");\n ns = projectId + \":\" + myFiltersHashSuffix;\n hash = generateHash([projectId, ns]);\n if (_.isEmpty(myFilters)) {\n promise = $http[\"delete\"](url + \"/\" + hash, {\n key: hash,\n value: myFilters\n });\n promise.then(function() {\n return deferred.resolve();\n });\n promise.then(null, function() {\n return deferred.reject();\n });\n } else {\n promise = $http.put(url + \"/\" + hash, {\n key: hash,\n value: myFilters\n });\n promise.then(function(data) {\n return deferred.resolve();\n });\n promise.then(null, function(data) {\n var innerPromise;\n innerPromise = $http.post(\"\" + url, {\n key: hash,\n value: myFilters\n });\n innerPromise.then(function() {\n return deferred.resolve();\n });\n return innerPromise.then(null, function() {\n return deferred.reject();\n });\n });\n }\n return deferred.promise;\n };\n service.getMyFilters = function(projectId) {\n var deferred, hash, ns, promise, url;\n deferred = $q.defer();\n url = $urls.resolve(\"user-storage\");\n ns = projectId + \":\" + myFiltersHashSuffix;\n hash = generateHash([projectId, ns]);\n promise = $http.get(url + \"/\" + hash);\n promise.then(function(data) {\n return deferred.resolve(data.data.value);\n });\n promise.then(null, function(data) {\n return deferred.resolve({});\n });\n return deferred.promise;\n };\n return function(instance) {\n return instance.issues = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgIssuesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", \"$q\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/kanban.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($storage) {\n var hashSuffixStatusColumnModes, hashSuffixStatusViewModes, service;\n service = {};\n hashSuffixStatusViewModes = \"kanban-statusviewmodels\";\n hashSuffixStatusColumnModes = \"kanban-statuscolumnmodels\";\n service.storeStatusViewModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusViewModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusViewModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusViewModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeStatusColumnModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusColumnModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n return function(instance) {\n return instance.kanban = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgKanbanResourcesProvider\", [\"$tgStorage\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/locales.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaLocales\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/nav.coffee\n */\n\n(function() {\n var UserSettingsNavigationDirective, module;\n\n UserSettingsNavigationDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var section;\n section = $attrs.tgUserSettingsNavigation;\n $el.find(\".active\").removeClass(\"active\");\n $el.find(\"#usersettingsmenu-\" + section + \" a\").addClass(\"active\");\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module = angular.module(\"taigaUserSettings\");\n\n module.directive(\"tgUserSettingsNavigation\", UserSettingsNavigationDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($config, $repo, $http, $urls, $auth, $q, $rootScope) {\n var service;\n service = {};\n service.get = function(projectId) {\n return $repo.queryOne(\"projects\", projectId);\n };\n service.getBySlug = function(projectSlug) {\n return $repo.queryOne(\"projects\", \"by_slug?slug=\" + projectSlug);\n };\n service.list = function() {\n return $repo.queryMany(\"projects\");\n };\n service.listByMember = function(memberId) {\n var params;\n params = {\n \"member\": memberId\n };\n return $repo.queryMany(\"projects\", params);\n };\n service.templates = function() {\n return $repo.queryMany(\"project-templates\");\n };\n service.usersList = function(projectId) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(\"users\", params);\n };\n service.rolesList = function(projectId) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(\"roles\", params);\n };\n service.stats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/stats\");\n };\n service.regenerate_userstories_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_userstories_csv_uuid\";\n return $http.post(url);\n };\n service.regenerate_issues_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_issues_csv_uuid\";\n return $http.post(url);\n };\n service.regenerate_tasks_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_tasks_csv_uuid\";\n return $http.post(url);\n };\n service.leave = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/leave\";\n return $http.post(url);\n };\n service.memberStats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/member_stats\");\n };\n service.tagsColors = function(projectId) {\n return $repo.queryOne(\"projects\", projectId + \"/tags_colors\");\n };\n service[\"export\"] = function(projectId) {\n var url;\n url = ($urls.resolve(\"exporter\")) + \"/\" + projectId;\n return $http.get(url);\n };\n service[\"import\"] = function(file, statusUpdater) {\n var complete, data, defered, failed, maxFileSize, response, uploadComplete, uploadFailed, uploadProgress, xhr;\n defered = $q.defer();\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered.reject(response);\n return defered.promise;\n }\n uploadProgress = (function(_this) {\n return function(evt) {\n var message, percent;\n percent = Math.round((evt.loaded / evt.total) * 100);\n message = \"Uloaded \" + (sizeFormat(evt.loaded)) + \" of \" + (sizeFormat(evt.total));\n return statusUpdater(\"in-progress\", null, message, percent);\n };\n })(this);\n uploadComplete = (function(_this) {\n return function(evt) {\n return statusUpdater(\"done\", \"Importing Project\", \"This process can take a while, please keep the window open.\");\n };\n })(this);\n uploadFailed = (function(_this) {\n return function(evt) {\n return statusUpdater(\"error\");\n };\n })(this);\n complete = (function(_this) {\n return function(evt) {\n var ref;\n response = {};\n try {\n response.data = JSON.parse(evt.target.responseText);\n } catch (_error) {\n response.data = {};\n }\n response.status = evt.target.status;\n if ((ref = response.status) === 201 || ref === 202) {\n defered.resolve(response);\n }\n return defered.reject(response);\n };\n })(this);\n failed = (function(_this) {\n return function(evt) {\n return defered.reject(\"fail\");\n };\n })(this);\n data = new FormData();\n data.append('dump', file);\n xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.upload.addEventListener(\"load\", uploadComplete, false);\n xhr.upload.addEventListener(\"error\", uploadFailed, false);\n xhr.upload.addEventListener(\"abort\", uploadFailed, false);\n xhr.addEventListener(\"load\", complete, false);\n xhr.addEventListener(\"error\", failed, false);\n xhr.open(\"POST\", $urls.resolve(\"importer\"));\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + ($auth.getToken()));\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send(data);\n return defered.promise;\n };\n return function(instance) {\n return instance.projects = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgProjectsResourcesProvider\", [\"$tgConfig\", \"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgAuth\", \"$q\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/related-tasks.coffee\n */\n\n(function() {\n var RelatedTaskAssignedToInlineEditionDirective, RelatedTaskCreateButtonDirective, RelatedTaskCreateFormDirective, RelatedTaskRowDirective, RelatedTasksDirective, debounce, module, taiga, trim;\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaRelatedTasks\", []);\n\n RelatedTaskRowDirective = function($repo, $compile, $confirm, $rootscope, $loading, $template) {\n var link, templateEdit, templateView;\n templateView = $template.get(\"task/related-task-row.html\", true);\n templateEdit = $template.get(\"task/related-task-row-edit.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var renderEdit, renderView, saveTask;\n saveTask = debounce(2000, function(task) {\n var promise;\n task.subject = $el.find('input').val();\n $loading.start($el.find('.task-name'));\n promise = $repo.save(task);\n promise.then((function(_this) {\n return function() {\n $loading.finish($el.find('.task-name'));\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"related-tasks:update\");\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n $loading.finish($el.find('.task-name'));\n $el.find('input').val(task.subject);\n return $confirm.notify(\"error\");\n };\n })(this));\n return promise;\n });\n renderEdit = function(task) {\n $el.html($compile(templateEdit({\n task: task\n }))($scope));\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return saveTask($model.$modelValue).then(function() {\n return renderView($model.$modelValue);\n });\n } else if (event.keyCode === 27) {\n return renderView($model.$modelValue);\n }\n });\n $el.on(\"click\", \".icon-floppy\", function(event) {\n return saveTask($model.$modelValue).then(function() {\n return renderView($model.$modelValue);\n });\n });\n return $el.on(\"click\", \".cancel-edit\", function(event) {\n return renderView($model.$modelValue);\n });\n };\n renderView = function(task) {\n var perms;\n $el.off();\n perms = {\n modify_task: $scope.project.my_permissions.indexOf(\"modify_task\") !== -1,\n delete_task: $scope.project.my_permissions.indexOf(\"delete_task\") !== -1\n };\n $el.html($compile(templateView({\n task: task,\n perms: perms\n }))($scope));\n $el.on(\"click\", \".icon-edit\", function() {\n renderEdit($model.$modelValue);\n return $el.find('input').focus().select();\n });\n return $el.on(\"click\", \".delete-task\", function(event) {\n var message, title;\n task = $model.$modelValue;\n title = \"Delete Task\";\n message = task.subject;\n return $confirm.askOnDelete(title, message).then(function(finish) {\n var promise;\n promise = $repo.remove(task);\n promise.then(function() {\n finish();\n $confirm.notify(\"success\");\n return $scope.$emit(\"related-tasks:delete\");\n });\n return promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n });\n });\n };\n $scope.$watch($attrs.ngModel, function(val) {\n if (!val) {\n return;\n }\n return renderView(val);\n });\n $scope.$on(\"related-tasks:assigned-to-changed\", function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n $scope.$on(\"related-tasks:status-changed\", function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgRelatedTaskRow\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$rootScope\", \"$tgLoading\", \"$tgTemplate\", RelatedTaskRowDirective]);\n\n RelatedTaskCreateFormDirective = function($repo, $compile, $confirm, $tgmodel, $loading, $analytics, $template) {\n var link, newTask, template;\n template = $template.get(\"task/related-task-create-form.html\", true);\n newTask = {\n subject: \"\",\n assigned_to: null\n };\n link = function($scope, $el, $attrs) {\n var createTask, render;\n createTask = debounce(2000, function(task) {\n var promise;\n task.subject = $el.find('input').val();\n task.assigned_to = $scope.newTask.assigned_to;\n task.status = $scope.newTask.status;\n $scope.newTask.status = $scope.project.default_task_status;\n $scope.newTask.assigned_to = null;\n $loading.start($el.find('.task-name'));\n promise = $repo.create(\"tasks\", task);\n promise.then(function() {\n $analytics.trackEvent(\"task\", \"create\", \"create task on userstory\", 1);\n $loading.finish($el.find('.task-name'));\n $scope.$emit(\"related-tasks:add\");\n return $confirm.notify(\"success\");\n });\n promise.then(null, function() {\n $el.find('input').val(task.subject);\n $loading.finish($el.find('.task-name'));\n return $confirm.notify(\"error\");\n });\n return promise;\n });\n render = function() {\n $el.off();\n $el.html($compile(template())($scope));\n $el.find('input').focus().select();\n $el.addClass('active');\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return createTask(newTask).then(function() {\n return render();\n });\n } else if (event.keyCode === 27) {\n return $el.html(\"\");\n }\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n return $el.html(\"\");\n });\n return $el.on(\"click\", \".icon-floppy\", function(event) {\n return createTask(newTask).then(function() {\n return $el.html(\"\");\n });\n });\n };\n taiga.bindOnce($scope, \"us\", function(val) {\n newTask[\"status\"] = $scope.project.default_task_status;\n newTask[\"project\"] = $scope.project.id;\n newTask[\"user_story\"] = $scope.us.id;\n $scope.newTask = $tgmodel.make_model(\"tasks\", newTask);\n return $el.html(\"\");\n });\n $scope.$on(\"related-tasks:show-form\", function() {\n return render();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateForm\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", \"$tgLoading\", \"$tgAnalytics\", \"$tgTemplate\", RelatedTaskCreateFormDirective]);\n\n RelatedTaskCreateButtonDirective = function($repo, $compile, $confirm, $tgmodel) {\n var link, template;\n template = _.template(\"\");\n link = function($scope, $el, $attrs) {\n $scope.$watch(\"project\", function(val) {\n if (!val) {\n return;\n }\n $el.off();\n if ($scope.project.my_permissions.indexOf(\"add_task\") !== -1) {\n $el.html(template());\n } else {\n $el.html(\"\");\n }\n return $el.on(\"click\", \".icon\", function(event) {\n return $scope.$emit(\"related-tasks:add-new-clicked\");\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateButton\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", RelatedTaskCreateButtonDirective]);\n\n RelatedTasksDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var loadTasks;\n loadTasks = function() {\n return $rs.tasks.list($scope.projectId, null, $scope.usId).then((function(_this) {\n return function(tasks) {\n $scope.tasks = tasks;\n return tasks;\n };\n })(this));\n };\n $scope.$on(\"related-tasks:add\", function() {\n return loadTasks().then(function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n });\n $scope.$on(\"related-tasks:delete\", function() {\n return loadTasks().then(function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n });\n $scope.$on(\"related-tasks:add-new-clicked\", function() {\n return $scope.$broadcast(\"related-tasks:show-form\");\n });\n taiga.bindOnce($scope, \"us\", function(val) {\n return loadTasks();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTasks\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", RelatedTasksDirective]);\n\n RelatedTaskAssignedToInlineEditionDirective = function($repo, $rootscope, popoverService) {\n var link, template;\n template = _.template(\"\\\" alt=\\\"<%- name %>\\\"/>\\n
<%- name %>
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task, updateRelatedTask;\n updateRelatedTask = function(task) {\n var ctx, member;\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = $scope.usersById[task.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name_display;\n }\n $el.find(\".avatar\").html(template(ctx));\n return $el.find(\".task-assignedto\").attr('title', ctx.name);\n };\n $ctrl = $el.controller();\n task = $scope.$eval($attrs.tgRelatedTaskAssignedToInlineEdition);\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n autoSave = !notAutoSave;\n updateRelatedTask(task);\n $el.on(\"click\", \".task-assignedto\", function(event) {\n return $rootscope.$broadcast(\"assigned-to:add\", task);\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_task\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$on(\"assigned-to:added\", debounce(2000, (function(_this) {\n return function(ctx, userId, updatedRelatedTask) {\n if (updatedRelatedTask.id === task.id) {\n updatedRelatedTask.assigned_to = userId;\n if (autoSave) {\n $repo.save(updatedRelatedTask).then(function() {\n return $scope.$emit(\"related-tasks:assigned-to-changed\");\n });\n }\n return updateRelatedTask(updatedRelatedTask);\n }\n };\n })(this)));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", RelatedTaskAssignedToInlineEditionDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources.coffee\n */\n\n(function() {\n var ResourcesService, initResources, initUrls, module, taiga, urls,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n ResourcesService = (function(superClass) {\n extend(ResourcesService, superClass);\n\n function ResourcesService() {\n return ResourcesService.__super__.constructor.apply(this, arguments);\n }\n\n return ResourcesService;\n\n })(taiga.Service);\n\n urls = {\n \"auth\": \"/auth\",\n \"auth-register\": \"/auth/register\",\n \"invitations\": \"/invitations\",\n \"permissions\": \"/permissions\",\n \"roles\": \"/roles\",\n \"projects\": \"/projects\",\n \"memberships\": \"/memberships\",\n \"notify-policies\": \"/notify-policies\",\n \"bulk-create-memberships\": \"/memberships/bulk_create\",\n \"milestones\": \"/milestones\",\n \"userstories\": \"/userstories\",\n \"bulk-create-us\": \"/userstories/bulk_create\",\n \"bulk-update-us-backlog-order\": \"/userstories/bulk_update_backlog_order\",\n \"bulk-update-us-sprint-order\": \"/userstories/bulk_update_sprint_order\",\n \"bulk-update-us-kanban-order\": \"/userstories/bulk_update_kanban_order\",\n \"userstories-restore\": \"/userstories/%s/restore\",\n \"tasks\": \"/tasks\",\n \"bulk-create-tasks\": \"/tasks/bulk_create\",\n \"bulk-update-task-taskboard-order\": \"/tasks/bulk_update_taskboard_order\",\n \"tasks-restore\": \"/tasks/%s/restore\",\n \"issues\": \"/issues\",\n \"bulk-create-issues\": \"/issues/bulk_create\",\n \"issues-restore\": \"/issues/%s/restore\",\n \"wiki\": \"/wiki\",\n \"wiki-restore\": \"/wiki/%s/restore\",\n \"wiki-links\": \"/wiki-links\",\n \"choices/userstory-statuses\": \"/userstory-statuses\",\n \"choices/userstory-statuses/bulk-update-order\": \"/userstory-statuses/bulk_update_order\",\n \"choices/points\": \"/points\",\n \"choices/points/bulk-update-order\": \"/points/bulk_update_order\",\n \"choices/task-statuses\": \"/task-statuses\",\n \"choices/task-statuses/bulk-update-order\": \"/task-statuses/bulk_update_order\",\n \"choices/issue-statuses\": \"/issue-statuses\",\n \"choices/issue-statuses/bulk-update-order\": \"/issue-statuses/bulk_update_order\",\n \"choices/issue-types\": \"/issue-types\",\n \"choices/issue-types/bulk-update-order\": \"/issue-types/bulk_update_order\",\n \"choices/priorities\": \"/priorities\",\n \"choices/priorities/bulk-update-order\": \"/priorities/bulk_update_order\",\n \"choices/severities\": \"/severities\",\n \"choices/severities/bulk-update-order\": \"/severities/bulk_update_order\",\n \"search\": \"/search\",\n \"sites\": \"/sites\",\n \"project-templates\": \"/project-templates\",\n \"site-members\": \"/site-members\",\n \"site-projects\": \"/site-projects\",\n \"users\": \"/users\",\n \"users-password-recovery\": \"/users/password_recovery\",\n \"users-change-password-from-recovery\": \"/users/change_password_from_recovery\",\n \"users-change-password\": \"/users/change_password\",\n \"users-change-email\": \"/users/change_email\",\n \"users-cancel-account\": \"/users/cancel\",\n \"user-storage\": \"/user-storage\",\n \"resolver\": \"/resolver\",\n \"userstory-statuses\": \"/userstory-statuses\",\n \"points\": \"/points\",\n \"task-statuses\": \"/task-statuses\",\n \"issue-statuses\": \"/issue-statuses\",\n \"issue-types\": \"/issue-types\",\n \"priorities\": \"/priorities\",\n \"severities\": \"/severities\",\n \"project-modules\": \"/projects/%s/modules\",\n \"webhooks\": \"/webhooks\",\n \"webhooks-test\": \"/webhooks/%s/test\",\n \"webhooklogs\": \"/webhooklogs\",\n \"webhooklogs-resend\": \"/webhooklogs/%s/resend\",\n \"history/us\": \"/history/userstory\",\n \"history/issue\": \"/history/issue\",\n \"history/task\": \"/history/task\",\n \"history/wiki\": \"/history/wiki\",\n \"attachments/us\": \"/userstories/attachments\",\n \"attachments/issue\": \"/issues/attachments\",\n \"attachments/task\": \"/tasks/attachments\",\n \"attachments/wiki_page\": \"/wiki/attachments\",\n \"custom-attributes/userstory\": \"/userstory-custom-attributes\",\n \"custom-attributes/issue\": \"/issue-custom-attributes\",\n \"custom-attributes/task\": \"/task-custom-attributes\",\n \"custom-attributes-values/userstory\": \"/userstories/custom-attributes-values\",\n \"custom-attributes-values/issue\": \"/issues/custom-attributes-values\",\n \"custom-attributes-values/task\": \"/tasks/custom-attributes-values\",\n \"feedback\": \"/feedback\",\n \"exporter\": \"/exporter\",\n \"importer\": \"/importer/load_dump\",\n \"userstories-csv\": \"/userstories/csv?uuid=%s\",\n \"tasks-csv\": \"/tasks/csv?uuid=%s\",\n \"issues-csv\": \"/issues/csv?uuid=%s\"\n };\n\n initUrls = function($log, $urls) {\n $log.debug(\"Initialize api urls\");\n return $urls.update(urls);\n };\n\n initResources = function($log, $rs) {\n var i, len, provider, providers, results;\n $log.debug(\"Initialize resources\");\n providers = _.toArray(arguments).slice(2);\n results = [];\n for (i = 0, len = providers.length; i < len; i++) {\n provider = providers[i];\n results.push(provider($rs));\n }\n return results;\n };\n\n module = angular.module(\"taigaResources\", [\"taigaBase\"]);\n\n module.service(\"$tgResources\", ResourcesService);\n\n module.run([\"$log\", \"$tgUrls\", initUrls]);\n\n module.run([\"$log\", \"$tgResources\", \"$tgProjectsResourcesProvider\", \"$tgCustomAttributesResourcesProvider\", \"$tgCustomAttributesValuesResourcesProvider\", \"$tgMembershipsResourcesProvider\", \"$tgNotifyPoliciesResourcesProvider\", \"$tgInvitationsResourcesProvider\", \"$tgRolesResourcesProvider\", \"$tgUserSettingsResourcesProvider\", \"$tgSprintsResourcesProvider\", \"$tgUserstoriesResourcesProvider\", \"$tgTasksResourcesProvider\", \"$tgIssuesResourcesProvider\", \"$tgWikiResourcesProvider\", \"$tgSearchResourcesProvider\", \"$tgAttachmentsResourcesProvider\", \"$tgMdRenderResourcesProvider\", \"$tgHistoryResourcesProvider\", \"$tgKanbanResourcesProvider\", \"$tgModulesResourcesProvider\", \"$tgWebhooksResourcesProvider\", \"$tgWebhookLogsResourcesProvider\", initResources]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/search.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service[\"do\"] = function(projectId, term) {\n var params, url;\n url = $urls.resolve(\"search\");\n params = {\n project: projectId,\n text: term,\n get_all: false\n };\n return $http.get(url, params).then(function(data) {\n return data.data;\n });\n };\n return function(instance) {\n return instance.search = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgSearchResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/taskboard.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTaskboard\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/tasks.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage) {\n var hashSuffix, hashSuffixStatusColumnModes, hashSuffixUsRowModes, service;\n service = {};\n hashSuffix = \"tasks-queryparams\";\n hashSuffixStatusColumnModes = \"tasks-statuscolumnmodels\";\n hashSuffixUsRowModes = \"tasks-usrowmodels\";\n service.get = function(projectId, taskId) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"tasks\", taskId, params);\n };\n service.getByRef = function(projectId, ref) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n return $repo.queryOne(\"tasks\", \"by_ref\", params);\n };\n service.list = function(projectId, sprintId, userStoryId) {\n var params;\n if (sprintId == null) {\n sprintId = null;\n }\n if (userStoryId == null) {\n userStoryId = null;\n }\n params = {\n project: projectId\n };\n if (sprintId) {\n params.milestone = sprintId;\n }\n if (userStoryId) {\n params.user_story = userStoryId;\n }\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"tasks\", params);\n };\n service.bulkCreate = function(projectId, sprintId, usId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-create-tasks\");\n params = {\n project_id: projectId,\n sprint_id: sprintId,\n us_id: usId,\n bulk_tasks: data\n };\n return $http.post(url, params).then(function(result) {\n return result.data;\n });\n };\n service.bulkUpdateTaskTaskboardOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-task-taskboard-order\");\n params = {\n project_id: projectId,\n bulk_tasks: data\n };\n return $http.post(url, params);\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(type, params);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeStatusColumnModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusColumnModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeUsRowModes = function(projectId, sprintId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUsRowModes;\n hash = generateHash([projectId, sprintId, ns]);\n return $storage.set(hash, params);\n };\n service.getUsRowModes = function(projectId, sprintId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUsRowModes;\n hash = generateHash([projectId, sprintId, ns]);\n return $storage.get(hash) || {};\n };\n return function(instance) {\n return instance.tasks = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgTasksResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/team.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTeam\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($config, $repo, $http, $urls, $q) {\n var service;\n service = {};\n service.changeAvatar = function(file) {\n var data, defered, maxFileSize, options, response, url;\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered = $q.defer();\n defered.reject(response);\n return defered.promise;\n }\n data = new FormData();\n data.append('avatar', file);\n options = {\n transformRequest: angular.identity,\n headers: {\n 'Content-Type': void 0\n }\n };\n url = ($urls.resolve(\"users\")) + \"/change_avatar\";\n return $http.post(url, data, {}, options);\n };\n service.removeAvatar = function() {\n var url;\n url = ($urls.resolve(\"users\")) + \"/remove_avatar\";\n return $http.post(url);\n };\n service.changePassword = function(currentPassword, newPassword) {\n var data, url;\n url = ($urls.resolve(\"users\")) + \"/change_password\";\n data = {\n current_password: currentPassword,\n password: newPassword\n };\n return $http.post(url, data);\n };\n return function(instance) {\n return instance.userSettings = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgUserSettingsResourcesProvider\", [\"$tgConfig\", \"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$q\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/userstories.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage) {\n var hashSuffix, service;\n service = {};\n hashSuffix = \"userstories-queryparams\";\n service.get = function(projectId, usId) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"userstories\", usId, params);\n };\n service.getByRef = function(projectId, ref) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n return $repo.queryOne(\"userstories\", \"by_ref\", params);\n };\n service.listUnassigned = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId,\n \"milestone\": \"null\"\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"userstories\", params);\n };\n service.listAll = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"userstories\", params);\n };\n service.bulkCreate = function(projectId, status, bulk) {\n var data, url;\n data = {\n project_id: projectId,\n status_id: status,\n bulk_stories: bulk\n };\n url = $urls.resolve(\"bulk-create-us\");\n return $http.post(url, data);\n };\n service.bulkUpdateBacklogOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-backlog-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.bulkUpdateSprintOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-sprint-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.bulkUpdateKanbanOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-kanban-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(type, params);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeShowTags = function(projectId, showTags) {\n var hash;\n hash = generateHash([projectId, 'showTags']);\n return $storage.set(hash, showTags);\n };\n service.getShowTags = function(projectId) {\n var hash;\n hash = generateHash([projectId, 'showTags']);\n return $storage.get(hash) || null;\n };\n return function(instance) {\n return instance.userstories = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgUserstoriesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/wikis.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(wikiId) {\n return $repo.queryOne(\"wiki\", wikiId);\n };\n service.getBySlug = function(projectId, slug) {\n return $repo.queryOne(\"wiki\", \"by_slug?project=\" + projectId + \"&slug=\" + slug);\n };\n service.listLinks = function(projectId) {\n return $repo.queryMany(\"wiki-links\", {\n project: projectId\n });\n };\n return function(instance) {\n return instance.wiki = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWikiResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/analytics.coffee\n */\n\n(function() {\n var AnalyticsService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n AnalyticsService = (function(superClass) {\n extend(AnalyticsService, superClass);\n\n AnalyticsService.$inject = [\"$rootScope\", \"$log\", \"$tgConfig\", \"$window\", \"$document\", \"$location\"];\n\n function AnalyticsService(rootscope, log, config, win, doc, location) {\n var conf;\n this.rootscope = rootscope;\n this.log = log;\n this.config = config;\n this.win = win;\n this.doc = doc;\n this.location = location;\n this.initialized = false;\n conf = this.config.get(\"analytics\", {});\n this.accountId = conf.accountId;\n this.pageEvent = conf.pageEvent || \"$routeChangeSuccess\";\n this.trackRoutes = conf.trackRoutes || true;\n this.ignoreFirstPageLoad = conf.ignoreFirstPageLoad || false;\n }\n\n AnalyticsService.prototype.initialize = function() {\n if (!this.accountId) {\n this.log.debug(\"Analytics: no acount id provided. Disabling.\");\n return;\n }\n this.injectAnalytics();\n this.win.ga(\"create\", this.accountId, \"auto\");\n this.win.ga(\"require\", \"displayfeatures\");\n if (this.trackRoutes && (!this.ignoreFirstPageLoad)) {\n this.win.ga(\"send\", \"pageview\", this.getUrl());\n }\n if (this.trackRoutes) {\n this.rootscope.$on(this.pageEvent, (function(_this) {\n return function() {\n return _this.trackPage(_this.getUrl(), \"Taiga\");\n };\n })(this));\n }\n return this.initialized = true;\n };\n\n AnalyticsService.prototype.getUrl = function() {\n return this.location.path();\n };\n\n AnalyticsService.prototype.injectAnalytics = function() {\n var fn;\n fn = (function(i,s,o,g,r,a,m){i[\"GoogleAnalyticsObject\"]=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments);},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m);});\n return fn(window, document, \"script\", \"//www.google-analytics.com/analytics.js\", \"ga\");\n };\n\n AnalyticsService.prototype.trackPage = function(url, title) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n title = title || this.doc[0].title;\n return this.win.ga(\"send\", \"pageview\", {\n \"page\": url,\n \"title\": title\n });\n };\n\n AnalyticsService.prototype.trackEvent = function(category, action, label, value) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n return this.win.ga(\"send\", \"event\", category, action, label, value);\n };\n\n return AnalyticsService;\n\n })(taiga.Service);\n\n module.service(\"$tgAnalytics\", AnalyticsService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/attachments.coffee\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($rootScope, $config, $urls, $model, $repo, $auth, $q) {\n var service;\n service = {};\n service.list = function(urlName, objectId, projectId) {\n var params;\n params = {\n object_id: objectId,\n project: projectId\n };\n return $repo.queryMany(urlName, params);\n };\n service.create = function(urlName, projectId, objectId, file) {\n var data, defered, maxFileSize, response, uploadComplete, uploadFailed, uploadProgress, xhr;\n defered = $q.defer();\n if (file === void 0) {\n defered.reject(null);\n return defered.promise;\n }\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered.reject(response);\n return defered.promise;\n }\n uploadProgress = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n file.status = \"in-progress\";\n file.size = sizeFormat(evt.total);\n file.progressMessage = \"upload \" + (sizeFormat(evt.loaded)) + \" of \" + (sizeFormat(evt.total));\n return file.progressPercent = (Math.round((evt.loaded / evt.total) * 100)) + \"%\";\n });\n };\n })(this);\n uploadComplete = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n var data, model;\n file.status = \"done\";\n try {\n data = JSON.parse(evt.target.responseText);\n } catch (_error) {\n data = {};\n }\n model = $model.make_model(urlName, data);\n return defered.resolve(model);\n });\n };\n })(this);\n uploadFailed = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n file.status = \"error\";\n return defered.reject(\"fail\");\n });\n };\n })(this);\n data = new FormData();\n data.append(\"project\", projectId);\n data.append(\"object_id\", objectId);\n data.append(\"attached_file\", file);\n xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.addEventListener(\"load\", uploadComplete, false);\n xhr.addEventListener(\"error\", uploadFailed, false);\n xhr.open(\"POST\", $urls.resolve(urlName));\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + ($auth.getToken()));\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send(data);\n return defered.promise;\n };\n return function(instance) {\n return instance.attachments = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgAttachmentsResourcesProvider\", [\"$rootScope\", \"$tgConfig\", \"$tgUrls\", \"$tgModel\", \"$tgRepo\", \"$tgAuth\", \"$q\", resourceProvider]);\n\n}).call(this);\n","(function() {\n var BindScope, module;\n\n module = angular.module(\"taigaCommon\");\n\n BindScope = function(config) {\n var link;\n if (!config.debugInfo) {\n jQuery.fn.scope = function() {\n return this.data('scope');\n };\n }\n link = function($scope, $el) {\n if (!config.debugInfo) {\n return $el.data('scope', $scope).addClass('tg-scope');\n }\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBindScope\", [\"$tgConfig\", BindScope]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/components.coffee\n */\n\n(function() {\n var AssignedToDirective, BlockButtonDirective, CreatedByDisplayDirective, DateRangeDirective, DateSelectorDirective, DeleteButtonDirective, EditableDescriptionDirective, EditableSubjectDirective, ListItemAssignedtoDirective, ListItemIssueStatusDirective, ListItemPriorityDirective, ListItemSeverityDirective, ListItemTaskStatusDirective, ListItemTypeDirective, ListItemUsStatusDirective, SprintProgressBarDirective, TgMainTitleDirective, TgProgressBarDirective, WatchersDirective, bindOnce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n DateRangeDirective = function() {\n var link, renderRange;\n renderRange = function($el, first, second) {\n var endDate, initDate;\n initDate = moment(first).format(\"DD MMM YYYY\");\n endDate = moment(second).format(\"DD MMM YYYY\");\n return $el.html(initDate + \"-\" + endDate);\n };\n link = function($scope, $el, $attrs) {\n var first, ref, second;\n ref = $attrs.tgDateRange.split(\",\"), first = ref[0], second = ref[1];\n return bindOnce($scope, first, function(valFirst) {\n return bindOnce($scope, second, function(valSecond) {\n return renderRange($el, valFirst, valSecond);\n });\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgDateRange\", DateRangeDirective);\n\n DateSelectorDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var selectedDate;\n selectedDate = null;\n $el.picker = new Pikaday({\n field: $el[0],\n format: \"DD MMM YYYY\",\n onSelect: (function(_this) {\n return function(date) {\n return selectedDate = date;\n };\n })(this),\n onOpen: (function(_this) {\n return function() {\n if (selectedDate != null) {\n return $el.picker.setDate(selectedDate);\n }\n };\n })(this)\n });\n return $scope.$watch($attrs.ngModel, function(val) {\n if (val != null) {\n return $el.picker.setDate(val);\n }\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgDateSelector\", DateSelectorDirective);\n\n SprintProgressBarDirective = function() {\n var link, renderProgress;\n renderProgress = function($el, percentage, visual_percentage) {\n if ($el.hasClass(\".current-progress\")) {\n return $el.css(\"width\", percentage + \"%\");\n } else {\n $el.find(\".current-progress\").css(\"width\", visual_percentage + \"%\");\n return $el.find(\".number\").html(percentage + \" %\");\n }\n };\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgSprintProgressbar, function(sprint) {\n var closedPoints, percentage, totalPoints, visual_percentage;\n closedPoints = sprint.closed_points;\n totalPoints = sprint.total_points;\n percentage = 0;\n if (totalPoints !== 0) {\n percentage = Math.round(100 * (closedPoints / totalPoints));\n }\n visual_percentage = 0;\n if (totalPoints !== 0) {\n visual_percentage = Math.round(98 * (closedPoints / totalPoints));\n }\n return renderProgress($el, percentage, visual_percentage);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSprintProgressbar\", SprintProgressBarDirective);\n\n CreatedByDisplayDirective = function($template) {\n var link, template;\n template = $template.get(\"common/components/created-by.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(model) {\n var html, owner, ref;\n owner = ((ref = $scope.usersById) != null ? ref[model.owner] : void 0) || {\n full_name_display: \"external user\",\n photo: \"/images/unnamed.png\"\n };\n html = template({\n owner: owner,\n date: moment(model.created_date).format(\"DD MMM YYYY HH:mm\")\n });\n return $el.html(html);\n };\n bindOnce($scope, $attrs.ngModel, function(model) {\n if (model != null) {\n return render(model);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgCreatedByDisplay\", [\"$tgTemplate\", CreatedByDisplayDirective]);\n\n WatchersDirective = function($rootscope, $confirm, $repo, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/watchers.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var deleteWatcher, isEditable, renderWatchers, save;\n isEditable = function() {\n var ref, ref1;\n return ((ref = $scope.project) != null ? (ref1 = ref.my_permissions) != null ? ref1.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(watchers) {\n var item, promise;\n item = $model.$modelValue.clone();\n item.watchers = watchers;\n $model.$setViewValue(item);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n watchers = _.map(watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n renderWatchers(watchers);\n return $rootscope.$broadcast(\"history:reload\");\n });\n return promise.then(null, function() {\n return $model.$modelValue.revert();\n });\n };\n })(this));\n deleteWatcher = $qqueue.bindAdd((function(_this) {\n return function(watcherIds) {\n var item, promise;\n item = $model.$modelValue.clone();\n item.watchers = watcherIds;\n $model.$setViewValue(item);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n var watchers;\n $confirm.notify(\"success\");\n watchers = _.map(item.watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n renderWatchers(watchers);\n return $rootscope.$broadcast(\"history:reload\");\n });\n return promise.then(null, function() {\n item.revert();\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n renderWatchers = function(watchers) {\n var ctx, html;\n ctx = {\n watchers: watchers,\n isEditable: isEditable()\n };\n html = template(ctx);\n $el.html(html);\n if (isEditable() && watchers.length === 0) {\n $el.find(\".title\").text(\"Add watchers\");\n return $el.find(\".watchers-header\").addClass(\"no-watchers\");\n }\n };\n $el.on(\"click\", \".icon-delete\", function(event) {\n var message, target, title, watcherId;\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n watcherId = target.data(\"watcher-id\");\n title = \"Delete watcher\";\n message = $scope.usersById[watcherId].full_name_display;\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(finish) {\n var watcherIds;\n finish();\n watcherIds = _.clone($model.$modelValue.watchers, false);\n watcherIds = _.pull(watcherIds, watcherId);\n return deleteWatcher(watcherIds);\n };\n })(this));\n });\n $el.on(\"click\", \".add-watcher\", function(event) {\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n return $scope.$apply(function() {\n return $rootscope.$broadcast(\"watcher:add\", $model.$modelValue);\n });\n });\n $scope.$on(\"watcher:added\", function(ctx, watcherId) {\n var watchers;\n watchers = _.clone($model.$modelValue.watchers, false);\n watchers.push(watcherId);\n watchers = _.uniq(watchers);\n return save(watchers);\n });\n $scope.$watch($attrs.ngModel, function(item) {\n var watchers;\n if (item == null) {\n return;\n }\n watchers = _.map(item.watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n return renderWatchers(watchers);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgWatchers\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgQqueue\", \"$tgTemplate\", WatchersDirective]);\n\n AssignedToDirective = function($rootscope, $confirm, $repo, $loading, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/assigned-to.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, renderAssignedTo, save;\n isEditable = function() {\n var ref, ref1;\n return ((ref = $scope.project) != null ? (ref1 = ref.my_permissions) != null ? ref1.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(userId) {\n var promise;\n $model.$modelValue.assigned_to = userId;\n $loading.start($el);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $loading.finish($el);\n $confirm.notify(\"success\");\n renderAssignedTo($model.$modelValue);\n return $rootscope.$broadcast(\"history:reload\");\n });\n promise.then(null, function() {\n $model.$modelValue.revert();\n $confirm.notify(\"error\");\n return $loading.finish($el);\n });\n return promise;\n };\n })(this));\n renderAssignedTo = function(issue) {\n var assignedTo, assignedToId, ctx, html;\n assignedToId = issue != null ? issue.assigned_to : void 0;\n assignedTo = assignedToId != null ? $scope.usersById[assignedToId] : null;\n ctx = {\n assignedTo: assignedTo,\n isEditable: isEditable()\n };\n html = template(ctx);\n return $el.html(html);\n };\n $el.on(\"click\", \".user-assigned\", function(event) {\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n return $scope.$apply(function() {\n return $rootscope.$broadcast(\"assigned-to:add\", $model.$modelValue);\n });\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n var title;\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n title = \"Are you sure you want to leave it unassigned?\";\n return $confirm.ask(title).then((function(_this) {\n return function(finish) {\n finish();\n $model.$modelValue.assigned_to = null;\n return save(null);\n };\n })(this));\n });\n $scope.$on(\"assigned-to:added\", function(ctx, userId, item) {\n if (item.id !== $model.$modelValue.id) {\n return;\n }\n return save(userId);\n });\n $scope.$watch($attrs.ngModel, function(instance) {\n return renderAssignedTo(instance);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgAssignedTo\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", AssignedToDirective]);\n\n BlockButtonDirective = function($rootscope, $loading, $template) {\n var link, template;\n template = $template.get(\"common/components/block-button.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_us\") !== -1;\n };\n $scope.$watch($attrs.ngModel, function(item) {\n if (!item) {\n return;\n }\n if (isEditable()) {\n $el.find('.item-block').addClass('editable');\n }\n if (item.is_blocked) {\n $el.find('.item-block').hide();\n return $el.find('.item-unblock').show();\n } else {\n $el.find('.item-block').show();\n return $el.find('.item-unblock').hide();\n }\n });\n $el.on(\"click\", \".item-block\", function(event) {\n event.preventDefault();\n return $rootscope.$broadcast(\"block\", $model.$modelValue);\n });\n $el.on(\"click\", \".item-unblock\", function(event) {\n var finish;\n event.preventDefault();\n $loading.start($el.find(\".item-unblock\"));\n finish = function() {\n return $loading.finish($el.find(\".item-unblock\"));\n };\n return $rootscope.$broadcast(\"unblock\", $model.$modelValue, finish);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgBlockButton\", [\"$rootScope\", \"$tgLoading\", \"$tgTemplate\", BlockButtonDirective]);\n\n DeleteButtonDirective = function($log, $repo, $confirm, $location, $template) {\n var link, template;\n template = $template.get(\"common/components/delete-button.html\");\n link = function($scope, $el, $attrs, $model) {\n if (!$attrs.onDeleteGoToUrl) {\n return $log.error(\"DeleteButtonDirective requires on-delete-go-to-url set in scope.\");\n }\n if (!$attrs.onDeleteTitle) {\n return $log.error(\"DeleteButtonDirective requires on-delete-title set in scope.\");\n }\n $el.on(\"click\", \".button\", function(event) {\n var subtitle, title;\n title = $scope.$eval($attrs.onDeleteTitle);\n subtitle = $model.$modelValue.subject;\n return $confirm.askOnDelete(title, subtitle).then((function(_this) {\n return function(finish) {\n var promise;\n promise = $repo.remove($model.$modelValue);\n promise.then(function() {\n var url;\n finish();\n url = $scope.$eval($attrs.onDeleteGoToUrl);\n return $location.path(url);\n });\n return promise.then(null, function() {\n finish(false);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgDeleteButton\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"$tgTemplate\", DeleteButtonDirective]);\n\n EditableSubjectDirective = function($rootscope, $repo, $confirm, $loading, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/editable-subject.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(subject) {\n var promise;\n $model.$modelValue.subject = subject;\n $loading.start($el.find('.save-container'));\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"history:reload\");\n $el.find('.edit-subject').hide();\n return $el.find('.view-subject').show();\n });\n promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n promise[\"finally\"](function() {\n return $loading.finish($el.find('.save-container'));\n });\n return promise;\n };\n })(this));\n $el.click(function() {\n if (!isEditable()) {\n return;\n }\n $el.find('.edit-subject').show();\n $el.find('.view-subject').hide();\n return $el.find('input').focus();\n });\n $el.on(\"click\", \".save\", function() {\n var subject;\n subject = $scope.item.subject;\n return save(subject);\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var subject;\n if (event.keyCode === 13) {\n subject = $scope.item.subject;\n return save(subject);\n } else if (event.keyCode === 27) {\n $scope.$apply((function(_this) {\n return function() {\n return $model.$modelValue.revert();\n };\n })(this));\n $el.find('div.edit-subject').hide();\n return $el.find('div.view-subject').show();\n }\n });\n $el.find('div.edit-subject').hide();\n $el.find('div.view-subject span.edit').hide();\n $scope.$watch($attrs.ngModel, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n if (!isEditable()) {\n return $el.find('.view-subject .edit').remove();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgEditableSubject\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", EditableSubjectDirective]);\n\n EditableDescriptionDirective = function($rootscope, $repo, $confirm, $compile, $loading, $selectedText, $qqueue, $template) {\n var link, noDescriptionMegEditMode, noDescriptionMegReadMode, template;\n template = $template.get(\"common/components/editable-description.html\");\n noDescriptionMegEditMode = $template.get(\"common/components/editable-description-msg-edit-mode.html\");\n noDescriptionMegReadMode = $template.get(\"common/components/editable-description-msg-read-mode.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, save;\n $el.find('.edit-description').hide();\n $el.find('.view-description .edit').hide();\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(description) {\n var promise;\n $model.$modelValue.description = description;\n $loading.start($el.find('.save-container'));\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"history:reload\");\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n });\n promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return promise[\"finally\"](function() {\n return $loading.finish($el.find('.save-container'));\n });\n };\n })(this));\n $el.on(\"mouseup\", \".view-description\", function(event) {\n var target;\n target = angular.element(event.target);\n if (!isEditable()) {\n return;\n }\n if (target.is('a')) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n $el.find('.edit-description').show();\n $el.find('.view-description').hide();\n return $el.find('textarea').focus();\n });\n $el.on(\"click\", \".save\", function(e) {\n var description;\n e.preventDefault();\n description = $scope.item.description;\n return save(description);\n });\n $el.on(\"keydown\", \"textarea\", function(event) {\n if (event.keyCode === 27) {\n $scope.$apply((function(_this) {\n return function() {\n return $scope.item.revert();\n };\n })(this));\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n }\n });\n $scope.$watch($attrs.ngModel, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n if (isEditable()) {\n $el.find('.view-description .edit').show();\n $el.find('.view-description .us-content').addClass('editable');\n return $scope.noDescriptionMsg = noDescriptionMegEditMode;\n } else {\n return $scope.noDescriptionMsg = noDescriptionMegReadMode;\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgEditableDescription\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$compile\", \"$tgLoading\", \"$selectedText\", \"$tgQqueue\", \"$tgTemplate\", EditableDescriptionDirective]);\n\n ListItemIssueStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemIssueStatus);\n return bindOnce($scope, \"issueStatusById\", function(issueStatusById) {\n return $el.html(issueStatusById[issue.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n ListItemTaskStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var task;\n task = $scope.$eval($attrs.tgListitemTaskStatus);\n return bindOnce($scope, \"taskStatusById\", function(taskStatusById) {\n return $el.html(taskStatusById[task.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n ListItemUsStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var us;\n us = $scope.$eval($attrs.tgListitemUsStatus);\n return bindOnce($scope, \"usStatusById\", function(usStatusById) {\n return $el.html(usStatusById[us.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n ListItemAssignedtoDirective = function($template) {\n var link, template;\n template = $template.get(\"common/components/list-item-assigned-to-avatar.html\", true);\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, \"membersById\", function(membersById) {\n var ctx, item, member;\n item = $scope.$eval($attrs.tgListitemAssignedto);\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = membersById[item.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name;\n }\n return $el.html(template(ctx));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemAssignedto\", [\"$tgTemplate\", ListItemAssignedtoDirective]);\n\n ListItemPriorityDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(priorityById, issue) {\n var domNode, priority;\n priority = priorityById[issue.priority];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", priority.color);\n return domNode.attr(\"title\", priority.name);\n };\n bindOnce($scope, \"priorityById\", function(priorityById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemPriority);\n return render(priorityById, issue);\n });\n return $scope.$watch($attrs.tgListitemPriority, function(issue) {\n return render($scope.priorityById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n module.directive(\"tgListitemPriority\", ListItemPriorityDirective);\n\n ListItemSeverityDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(severityById, issue) {\n var domNode, severity;\n severity = severityById[issue.severity];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", severity.color);\n return domNode.attr(\"title\", severity.name);\n };\n bindOnce($scope, \"severityById\", function(severityById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemSeverity);\n return render(severityById, issue);\n });\n return $scope.$watch($attrs.tgListitemSeverity, function(issue) {\n return render($scope.severityById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n ListItemTypeDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(issueTypeById, issue) {\n var domNode, type;\n type = issueTypeById[issue.type];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", type.color);\n return domNode.attr(\"title\", type.name);\n };\n bindOnce($scope, \"issueTypeById\", function(issueTypeById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemType);\n return render(issueTypeById, issue);\n });\n return $scope.$watch($attrs.tgListitemType, function(issue) {\n return render($scope.issueTypeById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n TgProgressBarDirective = function($template) {\n var link, render, template;\n template = $template.get(\"common/components/progress-bar.html\", true);\n render = function(el, percentage) {\n return el.html(template({\n percentage: percentage\n }));\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch($attrs.tgProgressBar, function(percentage) {\n percentage = _.max([0, percentage]);\n percentage = _.min([100, percentage]);\n return render($el, percentage);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProgressBar\", [\"$tgTemplate\", TgProgressBarDirective]);\n\n TgMainTitleDirective = function($template) {\n var link, render, template;\n template = $template.get(\"common/components/main-title.html\", true);\n render = function(el, projectName, sectionName) {\n return el.html(template({\n projectName: projectName,\n sectionName: sectionName\n }));\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch(\"project\", function(project) {\n if (project) {\n return render($el, project.name, $scope.sectionName);\n }\n });\n $scope.$on(\"project:loaded\", (function(_this) {\n return function(ctx, project) {\n return render($el, project.name, $scope.sectionName);\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMainTitle\", [\"$tgTemplate\", TgMainTitleDirective]);\n\n module.directive(\"tgListitemType\", ListItemTypeDirective);\n\n module.directive(\"tgListitemIssueStatus\", ListItemIssueStatusDirective);\n\n module.directive(\"tgListitemSeverity\", ListItemSeverityDirective);\n\n module.directive(\"tgListitemTaskStatus\", ListItemTaskStatusDirective);\n\n module.directive(\"tgListitemUsStatus\", ListItemUsStatusDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/confirm.coffee\n */\n\n(function() {\n var ConfirmService, NOTIFICATION_MSG, bindMethods, cancelTimeout, debounce, module, taiga, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n timeout = this.taiga.timeout;\n\n cancelTimeout = this.taiga.cancelTimeout;\n\n debounce = this.taiga.debounce;\n\n bindMethods = this.taiga.bindMethods;\n\n NOTIFICATION_MSG = {\n \"success\": {\n title: \"Everything is ok\",\n message: \"Our Oompa Loompas saved all your changes!\"\n },\n \"error\": {\n title: \"Oops, something happened...\",\n message: \"Our Oompa Loompas are sad, your changes were not saved!\"\n },\n \"light-error\": {\n title: \"Oops, something happened...\",\n message: \"Our Oompa Loompas are sad, your changes were not saved!\"\n }\n };\n\n ConfirmService = (function(superClass) {\n extend(ConfirmService, superClass);\n\n ConfirmService.$inject = [\"$q\", \"lightboxService\", \"$tgLoading\"];\n\n function ConfirmService(q, lightboxService, loading) {\n this.q = q;\n this.lightboxService = lightboxService;\n this.loading = loading;\n bindMethods(this);\n }\n\n ConfirmService.prototype.hide = function(el) {\n if (el) {\n this.lightboxService.close(el);\n return el.off(\".confirm-dialog\");\n }\n };\n\n ConfirmService.prototype.ask = function(title, subtitle, message, lightboxSelector) {\n var defered, el;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-generic-ask\";\n }\n el = angular.element(lightboxSelector);\n el.find(\"h2.title\").html(title);\n el.find(\"span.subtitle\").html(subtitle);\n el.find(\"span.message\").html(message);\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", debounce(2000, (function(_this) {\n return function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n _this.loading.start(target);\n return defered.resolve(function(ok) {\n if (ok == null) {\n ok = true;\n }\n _this.loading.finish(target);\n if (ok) {\n return _this.hide(el);\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \"a.button-red\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.askOnDelete = function(title, message) {\n return this.ask(title, \"Are you sure you want to delete?\", message);\n };\n\n ConfirmService.prototype.askChoice = function(title, subtitle, choices, replacement, warning, lightboxSelector) {\n var choicesField, defered, el;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-ask-choice\";\n }\n el = angular.element(lightboxSelector);\n el.find(\".title\").html(title);\n el.find(\".subtitle\").html(subtitle);\n if (replacement) {\n el.find(\".replacement\").html(replacement);\n } else {\n el.find(\".replacement\").remove();\n }\n if (warning) {\n el.find(\".warning\").html(warning);\n } else {\n el.find(\".warning\").remove();\n }\n choicesField = el.find(\".choices\");\n choicesField.html('');\n _.each(choices, function(value, key) {\n return choicesField.append(angular.element(\"\"));\n });\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", debounce(2000, (function(_this) {\n return function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n _this.loading.start(target);\n return defered.resolve({\n selected: choicesField.val(),\n finish: function() {\n _this.loading.finish(target);\n return _this.hide(el);\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \"a.button-red\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.error = function(message) {\n var defered, el;\n el = angular.element(\".lightbox-generic-error\");\n el.find(\"h2.title\").html(message);\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n el.on(\"click.confirm-dialog\", \"a.close\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.success = function(title, message) {\n var defered, el;\n el = angular.element(\".lightbox-generic-success\");\n if (title) {\n el.find(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.message\").html(message);\n }\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n el.on(\"click.confirm-dialog\", \"a.close\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.loader = function(title, message) {\n var el;\n el = angular.element(\".lightbox-generic-loading\");\n if (title) {\n el.find(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.message\").html(message);\n }\n return {\n start: (function(_this) {\n return function() {\n return _this.lightboxService.open(el);\n };\n })(this),\n stop: (function(_this) {\n return function() {\n return _this.lightboxService.close(el);\n };\n })(this),\n update: (function(_this) {\n return function(status, title, message, percent) {\n if (title) {\n el.find(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.message\").html(message);\n }\n if (percent) {\n el.find(\".spin\").addClass(\"hidden\");\n el.find(\".progress-bar-wrapper\").removeClass(\"hidden\");\n el.find(\".progress-bar-wrapper > .bar\").width(percent + '%');\n return el.find(\".progress-bar-wrapper > span\").html(percent + '%').css('left', (percent - 9) + '%');\n } else {\n el.find(\".spin\").removeClass(\"hidden\");\n return el.find(\".progress-bar-wrapper\").addClass(\"hidden\");\n }\n };\n })(this)\n };\n };\n\n ConfirmService.prototype.notify = function(type, message, title, time) {\n var body, el, selector;\n selector = \".notification-message-\" + type;\n el = angular.element(selector);\n if (el.hasClass(\"active\")) {\n return;\n }\n if (title) {\n el.find(\"h4\").html(title);\n } else {\n el.find(\"h4\").html(NOTIFICATION_MSG[type].title);\n }\n if (message) {\n el.find(\"p\").html(message);\n } else {\n el.find(\"p\").html(NOTIFICATION_MSG[type].message);\n }\n body = angular.element(\"body\");\n body.find(\".notification-message .notification-light\").removeClass('active').addClass('inactive');\n body.find(selector).removeClass('inactive').addClass('active');\n if (this.tsem) {\n cancelTimeout(this.tsem);\n }\n if (!time) {\n time = type === 'error' || type === 'light-error' ? 3500 : 1500;\n }\n this.tsem = timeout(time, (function(_this) {\n return function() {\n body.find(selector).removeClass('active').addClass('inactive');\n return delete _this.tsem;\n };\n })(this));\n return el.on(\"click\", \".icon-delete\", (function(_this) {\n return function(event) {\n return body.find(selector).removeClass('active').addClass('inactive');\n };\n })(this));\n };\n\n return ConfirmService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaCommon\");\n\n module.service(\"$tgConfirm\", ConfirmService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/custom-field-values.coffee\n */\n\n(function() {\n var CustomAttributeValueDirective, CustomAttributesValuesController, CustomAttributesValuesDirective, bindMethods, bindOnce, debounce, generateHash, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n bindMethods = this.taiga.bindMethods;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n generateHash = taiga.generateHash;\n\n module = angular.module(\"taigaCommon\");\n\n CustomAttributesValuesController = (function(superClass) {\n extend(CustomAttributesValuesController, superClass);\n\n CustomAttributesValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$q\"];\n\n function CustomAttributesValuesController(scope, rootscope, repo, rs, confirm, q) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.rs = rs;\n this.confirm = confirm;\n this.q = q;\n bindMethods(this);\n this.type = null;\n this.objectId = null;\n this.projectId = null;\n this.customAttributes = [];\n this.customAttributesValues = null;\n }\n\n CustomAttributesValuesController.prototype.initialize = function(type, objectId) {\n this.project = this.scope.project;\n this.type = type;\n this.objectId = objectId;\n return this.projectId = this.scope.projectId;\n };\n\n CustomAttributesValuesController.prototype.loadCustomAttributesValues = function() {\n if (!this.objectId) {\n return this.customAttributesValues;\n }\n return this.rs.customAttributesValues[this.type].get(this.objectId).then((function(_this) {\n return function(customAttributesValues) {\n _this.customAttributes = _this.project[_this.type + \"_custom_attributes\"];\n _this.customAttributesValues = customAttributesValues;\n return customAttributesValues;\n };\n })(this));\n };\n\n CustomAttributesValuesController.prototype.getAttributeValue = function(attribute) {\n var attributeValue;\n attributeValue = _.clone(attribute, false);\n attributeValue.value = this.customAttributesValues.attributes_values[attribute.id];\n return attributeValue;\n };\n\n CustomAttributesValuesController.prototype.updateAttributeValue = function(attributeValue) {\n var attributesValues, onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"custom-attributes-values:edit\");\n };\n })(this);\n onError = (function(_this) {\n return function(response) {\n _this.confirm.notify(\"error\");\n return _this.q.reject();\n };\n })(this);\n attributesValues = _.clone(this.customAttributesValues.attributes_values, true);\n attributesValues[attributeValue.id] = attributeValue.value;\n this.customAttributesValues.attributes_values = attributesValues;\n this.customAttributesValues.id = this.objectId;\n return this.repo.save(this.customAttributesValues).then(onSuccess, onError);\n };\n\n return CustomAttributesValuesController;\n\n })(taiga.Controller);\n\n CustomAttributesValuesDirective = function($templates, $storage) {\n var collapsedHash, link, template, templateFn;\n template = $templates.get(\"custom-attributes/custom-attributes-values.html\", true);\n collapsedHash = function(type) {\n return generateHash([\"custom-attributes-collapsed\", type]);\n };\n link = function($scope, $el, $attrs, $ctrls) {\n var $ctrl, $model;\n $ctrl = $ctrls[0];\n $model = $ctrls[1];\n bindOnce($scope, $attrs.ngModel, function(value) {\n $ctrl.initialize($attrs.type, value.id);\n return $ctrl.loadCustomAttributesValues();\n });\n $el.on(\"click\", \".custom-fields-header a\", function() {\n var collapsed, hash;\n hash = collapsedHash($attrs.type);\n collapsed = !($storage.get(hash) || false);\n $storage.set(hash, collapsed);\n if (collapsed) {\n $el.find(\".custom-fields-header a\").removeClass(\"open\");\n return $el.find(\".custom-fields-body\").removeClass(\"open\");\n } else {\n $el.find(\".custom-fields-header a\").addClass(\"open\");\n return $el.find(\".custom-fields-body\").addClass(\"open\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n templateFn = function($el, $attrs) {\n var collapsed;\n collapsed = $storage.get(collapsedHash($attrs.type)) || false;\n return template({\n requiredEditionPerm: $attrs.requiredEditionPerm,\n collapsed: collapsed\n });\n };\n return {\n require: [\"tgCustomAttributesValues\", \"ngModel\"],\n controller: CustomAttributesValuesController,\n controllerAs: \"ctrl\",\n restrict: \"AE\",\n scope: true,\n link: link,\n template: templateFn\n };\n };\n\n module.directive(\"tgCustomAttributesValues\", [\"$tgTemplate\", \"$tgStorage\", CustomAttributesValuesDirective]);\n\n CustomAttributeValueDirective = function($template, $selectedText) {\n var link, template, templateEdit;\n template = $template.get(\"custom-attributes/custom-attribute-value.html\", true);\n templateEdit = $template.get(\"custom-attributes/custom-attribute-value-edit.html\", true);\n link = function($scope, $el, $attrs, $ctrl) {\n var attributeValue, isEditable, render, saveAttributeValue, submit;\n render = function(attributeValue, edit) {\n var ctx, editable, html, value;\n if (edit == null) {\n edit = false;\n }\n value = attributeValue.value;\n editable = isEditable();\n ctx = {\n id: attributeValue.id,\n name: attributeValue.name,\n description: attributeValue.description,\n value: value,\n isEditable: editable\n };\n if (editable && (edit || !value)) {\n html = templateEdit(ctx);\n } else {\n html = template(ctx);\n }\n return $el.html(html);\n };\n isEditable = function() {\n var permissions, requiredEditionPerm;\n permissions = $scope.project.my_permissions;\n requiredEditionPerm = $attrs.requiredEditionPerm;\n return permissions.indexOf(requiredEditionPerm) > -1;\n };\n saveAttributeValue = function() {\n attributeValue.value = $el.find(\"input\").val();\n return $scope.$apply(function() {\n return $ctrl.updateAttributeValue(attributeValue).then(function() {\n return render(attributeValue, false);\n });\n });\n };\n $el.on(\"keyup\", \"input[name=description]\", function(event) {\n if (event.keyCode === 13) {\n return submit(event);\n } else if (event.keyCode === 27) {\n return render(attributeValue, false);\n }\n });\n $el.on(\"click\", \".custom-field-value.read-mode\", function() {\n if (!isEditable()) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n render(attributeValue, true);\n return $el.find(\"input[name='description']\").focus().select();\n });\n $el.on(\"click\", \"a.icon-edit\", function(event) {\n event.preventDefault();\n render(attributeValue, true);\n return $el.find(\"input[name='description']\").focus().select();\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n return saveAttributeValue();\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n $el.on(\"click\", \"a.icon-floppy\", submit);\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n attributeValue = $scope.$eval($attrs.tgCustomAttributeValue);\n return render(attributeValue);\n };\n return {\n link: link,\n require: \"^tgCustomAttributesValues\",\n restrict: \"AE\"\n };\n };\n\n module.directive(\"tgCustomAttributeValue\", [\"$tgTemplate\", \"$selectedText\", CustomAttributeValueDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/estimation.coffee\n */\n\n(function() {\n var EstimationsService, LbUsEstimationDirective, UsEstimationDirective, groupBy, module, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n module = angular.module(\"taigaCommon\");\n\n LbUsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $confirm, $template) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n $scope.$watch($attrs.ngModel, function(us) {\n var estimationProcess;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n estimationProcess.onSelectedPointForRole = function(roleId, pointId) {\n return $scope.$apply(function() {\n return $model.$setViewValue(us);\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, template;\n ctx = {\n totalPoints: this.calculateTotalPoints(),\n roles: this.calculateRoles(),\n editable: this.isEditable\n };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgLbUsEstimation\", [\"$tgEstimationsService\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgTemplate\", LbUsEstimationDirective]);\n\n UsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $confirm, $qqueue, $template) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n $scope.$watch($attrs.ngModel, function(us) {\n var estimationProcess;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n estimationProcess.onSelectedPointForRole = function(roleId, pointId) {\n return this.save(roleId, pointId).then(function() {\n return $rootScope.$broadcast(\"history:reload\");\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, template;\n ctx = {\n totalPoints: this.calculateTotalPoints(),\n roles: this.calculateRoles(),\n editable: this.isEditable\n };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgUsEstimation\", [\"$tgEstimationsService\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgQqueue\", \"$tgTemplate\", UsEstimationDirective]);\n\n EstimationsService = function($template, $qqueue, $repo, $confirm, $q) {\n var EstimationProcess, create, pointsTemplate;\n pointsTemplate = $template.get(\"common/estimation/us-estimation-points.html\", true);\n EstimationProcess = (function() {\n function EstimationProcess($el1, us1, project1) {\n this.$el = $el1;\n this.us = us1;\n this.project = project1;\n this.bindClickEvents = bind(this.bindClickEvents, this);\n this.isEditable = this.project.my_permissions.indexOf(\"modify_us\") !== -1;\n this.roles = this.project.roles;\n this.points = this.project.points;\n this.pointsById = groupBy(this.points, function(x) {\n return x.id;\n });\n this.onSelectedPointForRole = function(roleId, pointId) {};\n this.render = function() {};\n }\n\n EstimationProcess.prototype.save = function(roleId, pointId) {\n var deferred;\n deferred = $q.defer();\n $qqueue.add((function(_this) {\n return function() {\n var onError, onSuccess;\n onSuccess = function() {\n deferred.resolve();\n return $confirm.notify(\"success\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n _this.us.revert();\n _this.render();\n return deferred.reject();\n };\n return $repo.save(_this.us).then(onSuccess, onError);\n };\n })(this));\n return deferred.promise;\n };\n\n EstimationProcess.prototype.calculateTotalPoints = function() {\n var notNullValues, values;\n values = _.map(this.us.points, (function(_this) {\n return function(v, k) {\n var ref;\n return (ref = _this.pointsById[v]) != null ? ref.value : void 0;\n };\n })(this));\n if (values.length === 0) {\n return \"0\";\n }\n notNullValues = _.filter(values, function(v) {\n return v != null;\n });\n if (notNullValues.length === 0) {\n return \"?\";\n }\n return _.reduce(notNullValues, function(acc, num) {\n return acc + num;\n });\n };\n\n EstimationProcess.prototype.calculateRoles = function() {\n var computableRoles, roles;\n computableRoles = _.filter(this.project.roles, \"computable\");\n roles = _.map(computableRoles, (function(_this) {\n return function(role) {\n var pointId, pointObj;\n pointId = _this.us.points[role.id];\n pointObj = _this.pointsById[pointId];\n role = _.clone(role, true);\n role.points = (pointObj != null) && (pointObj.name != null) ? pointObj.name : \"?\";\n return role;\n };\n })(this));\n return roles;\n };\n\n EstimationProcess.prototype.bindClickEvents = function() {\n this.$el.on(\"click\", \".total.clickable\", (function(_this) {\n return function(event) {\n var roleId, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n roleId = target.data(\"role-id\");\n _this.renderPointsSelector(roleId, target);\n target.siblings().removeClass('active');\n return target.addClass('active');\n };\n })(this));\n return this.$el.on(\"click\", \".point\", (function(_this) {\n return function(event) {\n var pointId, points, roleId, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n roleId = target.data(\"role-id\");\n pointId = target.data(\"point-id\");\n _this.$el.find(\".popover\").popover().close();\n points = _.clone(_this.us.points, true);\n points[roleId] = pointId;\n _this.us.points = points;\n _this.render();\n return _this.onSelectedPointForRole(roleId, pointId);\n };\n })(this));\n };\n\n EstimationProcess.prototype.renderPointsSelector = function(roleId, target) {\n var horizontalList, html, maxPointLength, points;\n points = _.map(this.points, (function(_this) {\n return function(point) {\n point = _.clone(point, true);\n point.selected = _this.us.points[roleId] === point.id ? false : true;\n return point;\n };\n })(this));\n maxPointLength = 5;\n horizontalList = _.some(points, (function(_this) {\n return function(point) {\n return point.name.length > maxPointLength;\n };\n })(this));\n html = pointsTemplate({\n \"points\": points,\n roleId: roleId,\n horizontal: horizontalList\n });\n this.$el.find(\".popover\").popover().close();\n this.$el.find(\".pop-points-open\").remove();\n if (target != null) {\n this.$el.find(target).append(html);\n } else {\n this.$el.append(html);\n }\n this.$el.find(\".pop-points-open\").popover().open(function() {\n return $(this).removeClass(\"active\").closest(\"li\").removeClass(\"active\");\n });\n return this.$el.find(\".pop-points-open\").show();\n };\n\n return EstimationProcess;\n\n })();\n create = function($el, us, project) {\n var estimationProcess;\n estimationProcess = $el.data(\"estimationProcess\");\n if (!estimationProcess) {\n estimationProcess = new EstimationProcess($el, us, project);\n $el.data(\"estimationProcess\", estimationProcess);\n }\n if (estimationProcess.isEditable) {\n estimationProcess.bindClickEvents();\n } else {\n $el.unbind(\"click\");\n }\n return estimationProcess;\n };\n return {\n create: create\n };\n };\n\n module.factory(\"$tgEstimationsService\", [\"$tgTemplate\", \"$tgQqueue\", \"$tgRepo\", \"$tgConfirm\", \"$q\", EstimationsService]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/filters.coffee\n */\n\n(function() {\n var FiltersStorageService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n FiltersStorageService = (function(superClass) {\n extend(FiltersStorageService, superClass);\n\n FiltersStorageService.$inject = [\"$tgStorage\", \"$routeParams\"];\n\n function FiltersStorageService(storage, params) {\n this.storage = storage;\n this.params = params;\n }\n\n FiltersStorageService.prototype.generateHash = function(components) {\n if (components == null) {\n components = [];\n }\n components = _.map(components, function(x) {\n return JSON.stringify(x);\n });\n return hex_sha1(components.join(\":\"));\n };\n\n return FiltersStorageService;\n\n })(taiga.Service);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/history.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(type, objectId) {\n return $repo.queryOneRaw(\"history/\" + type, objectId);\n };\n service.deleteComment = function(type, objectId, activityId) {\n var params, url;\n url = $urls.resolve(\"history/\" + type);\n url = url + \"/\" + objectId + \"/delete_comment\";\n params = {\n id: activityId\n };\n return $http.post(url, null, params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n service.undeleteComment = function(type, objectId, activityId) {\n var params, url;\n url = $urls.resolve(\"history/\" + type);\n url = url + \"/\" + objectId + \"/undelete_comment\";\n params = {\n id: activityId\n };\n return $http.post(url, null, params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n return function(instance) {\n return instance.history = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgHistoryResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/importer.coffee\n */\n\n(function() {\n var ImportProjectButtonDirective, module;\n\n module = angular.module(\"taigaCommon\");\n\n ImportProjectButtonDirective = function($rs, $confirm, $location, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n $el.on(\"click\", \".import-project-button\", function(event) {\n event.preventDefault();\n $el.find(\"input.import-file\").val(\"\");\n return $el.find(\"input.import-file\").trigger(\"click\");\n });\n return $el.on(\"change\", \"input.import-file\", function(event) {\n var file, loader, onError, onSuccess;\n event.preventDefault();\n file = event.target.files[0];\n if (!file) {\n return;\n }\n loader = $confirm.loader(\"Uploading dump file\");\n onSuccess = function(result) {\n var ctx, message, title;\n loader.stop();\n if (result.status === 202) {\n title = \"Our Oompa Loompas are importing your project\";\n message = \"This process could take a few minutes
We will send you an email when ready\";\n return $confirm.success(title, message);\n } else {\n ctx = {\n project: result.data.slug\n };\n $location.path($navUrls.resolve(\"project-admin-project-profile-details\", ctx));\n return $confirm.notify(\"success\", \"Your project has been imported successfuly.\");\n }\n };\n onError = function(result) {\n var errorMsg, ref;\n loader.stop();\n console.log(\"Error\", result);\n errorMsg = \"Our oompa loompas have some problems importing your dump data. Please try again. \";\n if (result.status === 429) {\n errorMsg = \"Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. \";\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = \"Our oompa loompas have some problems importing your dump data: \" + result.data._error_message;\n }\n return $confirm.notify(\"error\", errorMsg);\n };\n loader.start();\n return $rs.projects[\"import\"](file, loader.update).then(onSuccess, onError);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgImportProjectButton\", [\"$tgResources\", \"$tgConfirm\", \"$location\", \"$tgNavUrls\", ImportProjectButtonDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/issues/lightboxes.coffee\n */\n\n(function() {\n var DeleteUserDirective, bindOnce, debounce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaUserSettings\");\n\n DeleteUserDirective = function($repo, $rootscope, $auth, $location, $navUrls, lightboxService) {\n var link;\n link = function($scope, $el, $attrs) {\n var submit;\n $scope.$on(\"deletelightbox:new\", function(ctx, user) {\n return lightboxService.open($el);\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n submit = function() {\n var promise;\n promise = $repo.remove($scope.user);\n promise.then(function(data) {\n lightboxService.close($el);\n $auth.logout();\n return $location.path($navUrls.resolve(\"login\"));\n });\n return promise.then(null, function() {\n return console.log(\"FAIL\");\n });\n };\n $el.on(\"click\", \".button-red\", function(event) {\n event.preventDefault();\n return lightboxService.close($el);\n });\n return $el.on(\"click\", \".button-green\", debounce(2000, function(event) {\n event.preventDefault();\n return submit();\n }));\n };\n return {\n link: link,\n templateUrl: \"user/lightbox/lightbox-delete-account.html\"\n };\n };\n\n module.directive(\"tgLbDeleteUser\", [\"$tgRepo\", \"$rootScope\", \"$tgAuth\", \"$tgLocation\", \"$tgNavUrls\", \"lightboxService\", DeleteUserDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n * Copyright (C) 2014 Juan Francisco Alcántara \n * Copyright (C) 2014 Alejandro Alonso \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/loader.coffee\n */\n\n(function() {\n var Loader, LoaderDirective, module, sizeFormat, taiga, timeout;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaCommon\");\n\n LoaderDirective = function(tgLoader, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n tgLoader.onStart(function() {\n $(document.body).addClass(\"loader-active\");\n return $el.addClass(\"active\");\n });\n tgLoader.onEnd(function() {\n $(document.body).removeClass(\"loader-active\");\n return $el.removeClass(\"active\");\n });\n $rootscope.$on(\"$routeChangeSuccess\", function(e) {\n return tgLoader.startCurrentPageLoader();\n });\n return $rootscope.$on(\"$locationChangeSuccess\", function(e) {\n return tgLoader.reset();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLoader\", [\"tgLoader\", \"$rootScope\", LoaderDirective]);\n\n Loader = function() {\n var config, defaultConfig, forceDisabled;\n forceDisabled = false;\n defaultConfig = {\n enabled: false,\n minTime: 300\n };\n config = _.merge({}, defaultConfig);\n this.add = function() {\n return function() {\n if (!forceDisabled) {\n return config.enabled = true;\n }\n };\n };\n this.$get = [\n \"$rootScope\", function($rootscope) {\n var pageLoaded, reset, start, startLoadTime;\n startLoadTime = 0;\n reset = function() {\n return config = _.merge({}, defaultConfig);\n };\n pageLoaded = function(force) {\n var diff, endTime, timeoutValue;\n if (force == null) {\n force = false;\n }\n if (startLoadTime) {\n timeoutValue = 0;\n if (!force) {\n endTime = new Date().getTime();\n diff = endTime - startLoadTime;\n if (diff < config.minTime) {\n timeoutValue = config.minTime - diff;\n }\n }\n return timeout(timeoutValue, function() {\n return $rootscope.$broadcast(\"loader:end\");\n });\n }\n };\n start = function() {\n startLoadTime = new Date().getTime();\n return $rootscope.$broadcast(\"loader:start\");\n };\n return {\n reset: reset,\n pageLoaded: pageLoaded,\n start: start,\n startCurrentPageLoader: function() {\n if (config.enabled) {\n return start();\n }\n },\n onStart: function(fn) {\n return $rootscope.$on(\"loader:start\", fn);\n },\n onEnd: function(fn) {\n return $rootscope.$on(\"loader:end\", fn);\n },\n preventLoading: function() {\n return forceDisabled = true;\n },\n disablePreventLoading: function() {\n return forceDisabled = false;\n }\n };\n }\n ];\n };\n\n module.provider(\"tgLoader\", [Loader]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/lightboxes.coffee\n */\n\n(function() {\n var TgLoadingService, module,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n module = angular.module(\"taigaCommon\");\n\n TgLoadingService = (function(superClass) {\n extend(TgLoadingService, superClass);\n\n function TgLoadingService() {\n return TgLoadingService.__super__.constructor.apply(this, arguments);\n }\n\n TgLoadingService.prototype.start = function(target) {\n if (!target.hasClass('loading')) {\n target.data('loading-old-content', target.html());\n target.addClass('loading');\n return target.html(\"loading...\");\n }\n };\n\n TgLoadingService.prototype.finish = function(target) {\n var oldContent;\n if (target.hasClass('loading')) {\n oldContent = target.data('loading-old-content');\n target.data('loading-old-content', null);\n target.html(oldContent);\n return target.removeClass('loading');\n }\n };\n\n return TgLoadingService;\n\n })(taiga.Service);\n\n module.service(\"$tgLoading\", TgLoadingService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/popovers.coffee\n */\n\n(function() {\n var RelatedTaskStatusDirective, UsStatusDirective, bindOnce, debounce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaCommon\");\n\n UsStatusDirective = function($repo, $template) {\n\n /*\n Print the status of a US and a popover to change it.\n - tg-us-status: The user story\n - on-update: Method call after US is updated\n \n Example:\n \n div.status(tg-us-status=\"us\" on-update=\"ctrl.loadSprintState()\")\n a.us-status(href=\"\", title=\"Status Name\")\n \n NOTE: This directive need 'usStatusById' and 'project'.\n */\n var link, template;\n template = $template.get(\"common/popover/popover-us-status.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, render, us;\n $ctrl = $el.controller();\n render = function(us) {\n var usStatusById, usStatusDom, usStatusDomParent;\n usStatusDomParent = $el.find(\".us-status\");\n usStatusDom = $el.find(\".us-status .us-status-bind\");\n usStatusById = $scope.usStatusById;\n if (usStatusById[us.status]) {\n usStatusDom.text(usStatusById[us.status].name);\n return usStatusDomParent.css(\"color\", usStatusById[us.status].color);\n }\n };\n $el.on(\"click\", \".us-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", debounce(2000, function(event) {\n var target, us;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n us = $scope.$eval($attrs.tgUsStatus);\n us.status = target.data(\"status-id\");\n render(us);\n $el.find(\".pop-status\").popover().close();\n return $scope.$apply(function() {\n return $repo.save(us).then(function() {\n return $scope.$eval($attrs.onUpdate);\n });\n });\n }));\n $scope.$on(\"userstories:loaded\", function() {\n return render($scope.$eval($attrs.tgUsStatus));\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n us = $scope.$eval($attrs.tgUsStatus);\n render(us);\n return bindOnce($scope, \"project\", function(project) {\n var html;\n html = template({\n \"statuses\": project.us_statuses\n });\n $el.append(html);\n if ($scope.project.my_permissions.indexOf(\"modify_us\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUsStatus\", [\"$tgRepo\", \"$tgTemplate\", UsStatusDirective]);\n\n RelatedTaskStatusDirective = function($repo, $template) {\n\n /*\n Print the status of a related task and a popover to change it.\n - tg-related-task-status: The related task\n - on-update: Method call after US is updated\n \n Example:\n \n div.status(tg-related-task-status=\"task\" on-update=\"ctrl.loadSprintState()\")\n a.task-status(href=\"\", title=\"Status Name\")\n \n NOTE: This directive need 'taskStatusById' and 'project'.\n */\n var link, selectionTemplate, updateTaskStatus;\n selectionTemplate = $template.get(\"common/popover/popover-related-task-status.html\", true);\n updateTaskStatus = function($el, task, taskStatusById) {\n var taskStatusDom, taskStatusDomParent;\n taskStatusDomParent = $el.find(\".us-status\");\n taskStatusDom = $el.find(\".task-status .task-status-bind\");\n if (taskStatusById[task.status]) {\n taskStatusDom.text(taskStatusById[task.status].name);\n return taskStatusDomParent.css('color', taskStatusById[task.status].color);\n }\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task;\n $ctrl = $el.controller();\n task = $scope.$eval($attrs.tgRelatedTaskStatus);\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n autoSave = !notAutoSave;\n $el.on(\"click\", \".task-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n task.status = target.data(\"status-id\");\n $el.find(\".pop-status\").popover().close();\n updateTaskStatus($el, task, $scope.taskStatusById);\n if (autoSave) {\n return $scope.$apply(function() {\n return $repo.save(task).then(function() {\n $scope.$eval($attrs.onUpdate);\n return $scope.$emit(\"related-tasks:status-changed\");\n });\n });\n }\n }));\n taiga.bindOnce($scope, \"project\", function(project) {\n $el.append(selectionTemplate({\n 'statuses': project.task_statuses\n }));\n updateTaskStatus($el, task, $scope.taskStatusById);\n if (project.my_permissions.indexOf(\"modify_task\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskStatus\", [\"$tgRepo\", \"$tgTemplate\", RelatedTaskStatusDirective]);\n\n $.fn.popover = function() {\n var $el, close, closeAll, closePopover, isVisible, open;\n $el = this;\n isVisible = (function(_this) {\n return function() {\n var docViewBottom, docViewLeft, docViewRight, docViewTop, docViewWidth, elemBottom, elemLeft, elemRight, elemTop, elemWidth;\n $el.css({\n \"display\": \"block\",\n \"visibility\": \"hidden\"\n });\n docViewTop = $(window).scrollTop();\n docViewBottom = docViewTop + $(window).height();\n docViewWidth = $(window).width();\n docViewRight = docViewWidth;\n docViewLeft = 0;\n elemTop = $el.offset().top;\n elemBottom = elemTop + $el.height();\n elemWidth = $el.width();\n elemLeft = $el.offset().left;\n elemRight = $el.offset().left + elemWidth;\n $el.css({\n \"display\": \"none\",\n \"visibility\": \"visible\"\n });\n return (elemBottom <= docViewBottom) && (elemTop >= docViewTop) && (elemLeft >= docViewLeft) && (elemRight <= docViewRight);\n };\n })(this);\n closePopover = (function(_this) {\n return function(onClose) {\n if (onClose) {\n onClose.call($el);\n }\n $el.fadeOut(function() {\n return $el.removeClass(\"active\").removeClass(\"fix\");\n });\n return $el.off(\"popup:close\");\n };\n })(this);\n closeAll = (function(_this) {\n return function() {\n return $(\".popover.active\").each(function() {\n return $(this).trigger(\"popup:close\");\n });\n };\n })(this);\n open = (function(_this) {\n return function(onClose) {\n if ($el.hasClass(\"active\")) {\n return close();\n } else {\n closeAll();\n if (!isVisible()) {\n $el.addClass(\"fix\");\n }\n $el.fadeIn(function() {\n $el.addClass(\"active\");\n $(document.body).off(\"popover\");\n return $(document.body).one(\"click.popover\", function() {\n return closeAll();\n });\n });\n return $el.on(\"popup:close\", function(e) {\n return closePopover(onClose);\n });\n }\n };\n })(this);\n close = (function(_this) {\n return function() {\n return $el.trigger(\"popup:close\");\n };\n })(this);\n return {\n open: open,\n close: close,\n closeAll: closeAll\n };\n };\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/raven-logger.coffee\n */\n\n(function() {\n var ExceptionHandlerFactory, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n ExceptionHandlerFactory = function($log, config) {\n var ravenConfig;\n this.config = config;\n ravenConfig = this.config.get(\"ravenConfig\", null);\n if (ravenConfig) {\n $log.debug(\"Using the RavenJS exception handler.\");\n Raven.config(ravenConfig).install();\n return function(exception, cause) {\n $log.error.apply($log, arguments);\n return Raven.captureException(exception);\n };\n } else {\n $log.debug(\"Using the default logging exception handler.\");\n return function(exception, cause) {\n return $log.error.apply($log, arguments);\n };\n }\n };\n\n module.factory(\"$exceptionHandler\", [\"$log\", \"$tgConfig\", ExceptionHandlerFactory]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/tags.coffee\n */\n\n(function() {\n var ColorizeTagsDirective, LbTagLineDirective, TagLineDirective, TagsDirective, bindOnce, module, taiga, trim,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n TagsDirective = function() {\n var formatter, link, parser;\n formatter = function(v) {\n if (_.isArray(v)) {\n return v.join(\", \");\n }\n return \"\";\n };\n parser = function(v) {\n var result;\n if (!v) {\n return [];\n }\n result = _(v.split(\",\")).map(function(x) {\n return _.str.trim(x);\n });\n return result.value();\n };\n link = function($scope, $el, $attrs, $ctrl) {\n $ctrl.$formatters.push(formatter);\n $ctrl.$parsers.push(parser);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n require: \"ngModel\",\n link: link\n };\n };\n\n module.directive(\"tgTags\", TagsDirective);\n\n ColorizeTagsDirective = function() {\n var link, templates;\n templates = {\n backlog: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\"><%- tag.name %>\\n<% }) %>\"),\n kanban: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\" title=\\\"<%- tag.name %>\\\" />\\n<% }) %>\"),\n taskboard: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\" title=\\\"<%- tag.name %>\\\" />\\n<% }) %>\")\n };\n link = function($scope, $el, $attrs, $ctrl) {\n var render;\n render = function(srcTags) {\n var html, tags, template;\n template = templates[$attrs.tgColorizeTagsType];\n srcTags.sort();\n tags = _.map(srcTags, function(tag) {\n var color;\n color = $scope.project.tags_colors[tag];\n return {\n name: tag,\n color: color\n };\n });\n html = template({\n tags: tags\n });\n return $el.html(html);\n };\n $scope.$watch($attrs.tgColorizeTags, function(tags) {\n if (tags != null) {\n return render(tags);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgColorizeTags\", ColorizeTagsDirective);\n\n LbTagLineDirective = function($rs, $template) {\n var COMMA_KEY, ENTER_KEY, link, templateTags;\n ENTER_KEY = 13;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/lb-tag-line-tags.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideSaveButton, removeInputLastCharacter, renderTags, resetInput, saveInputTag, showSaveButton;\n renderTags = function(tags, tagsColors) {\n var ctx, html;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n color: tagsColors[t]\n };\n })\n };\n _.map(ctx.tags, (function(_this) {\n return function(tag) {\n if (tag.color) {\n return tag.style = \"border-left: 5px solid \" + tag.color;\n }\n };\n })(this));\n html = templateTags(ctx);\n return $el.find(\"div.tags-container\").html(html);\n };\n showSaveButton = function() {\n return $el.find(\".save\").removeClass(\"hidden\");\n };\n hideSaveButton = function() {\n return $el.find(\".save\").addClass(\"hidden\");\n };\n resetInput = function() {\n $el.find(\"input\").val(\"\");\n return $el.find(\"input\").autocomplete(\"close\");\n };\n addValue = function(value) {\n var tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue, false);\n if (tags == null) {\n tags = [];\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n $scope.$apply(function() {\n return $model.$setViewValue(tags);\n });\n return hideSaveButton();\n };\n deleteValue = function(value) {\n var tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue, false);\n tags = _.pull(tags, value);\n return $scope.$apply(function() {\n return $model.$setViewValue(tags);\n });\n };\n saveInputTag = function() {\n var value;\n value = $el.find(\"input\").val();\n addValue(value);\n return resetInput();\n };\n removeInputLastCharacter = (function(_this) {\n return function(input) {\n var inputValue;\n inputValue = input.val();\n return input.val(inputValue.substring(0, inputValue.length - 1));\n };\n })(this);\n $el.on(\"keypress\", \"input\", function(event) {\n if (event.keyCode !== ENTER_KEY) {\n return;\n }\n return event.preventDefault();\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n return saveInputTag();\n } else if (event.keyCode === COMMA_KEY) {\n removeInputLastCharacter(target);\n return saveInputTag();\n } else {\n if (target.val().length) {\n return showSaveButton();\n } else {\n return hideSaveButton();\n }\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n event.preventDefault();\n return saveInputTag();\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n var target, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n value = target.siblings(\".tag-name\").text();\n return deleteValue(value);\n });\n bindOnce($scope, \"project\", function(project) {\n var positioningFunction;\n positioningFunction = function(position, elements) {\n var menu;\n menu = elements.element.element;\n menu.css(\"width\", elements.target.width);\n menu.css(\"top\", position.top);\n return menu.css(\"left\", position.left);\n };\n return $el.find(\"input\").autocomplete({\n source: _.keys(project.tags_colors),\n position: {\n my: \"left top\",\n using: positioningFunction\n },\n select: function(event, ui) {\n addValue(ui.item.value);\n return ui.item.value = \"\";\n }\n });\n });\n $scope.$watch($attrs.ngModel, function(tags) {\n var ref, tagsColors;\n tagsColors = ((ref = $scope.project) != null ? ref.tags_colors : void 0) || [];\n return renderTags(tags, tagsColors);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\",\n templateUrl: \"common/tag/lb-tag-line.html\"\n };\n };\n\n module.directive(\"tgLbTagLine\", [\"$tgResources\", \"$tgTemplate\", LbTagLineDirective]);\n\n TagLineDirective = function($rootScope, $repo, $rs, $confirm, $qqueue, $template) {\n var COMMA_KEY, ENTER_KEY, ESC_KEY, link, templateTags;\n ENTER_KEY = 13;\n ESC_KEY = 27;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/tags-line-tags.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideAddTagButton, hideAddTagButtonText, hideInput, hideSaveButton, isEditable, removeInputLastCharacter, renderInReadModeOnly, renderTags, resetInput, saveInputTag, showAddTagButton, showAddTagButtonText, showInput, showSaveButton;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n renderTags = function(tags, tagsColors) {\n var ctx, html;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n color: tagsColors[t]\n };\n }),\n isEditable: isEditable()\n };\n html = templateTags(ctx);\n return $el.find(\"div.tags-container\").html(html);\n };\n renderInReadModeOnly = function() {\n $el.find(\".add-tag\").remove();\n $el.find(\"input\").remove();\n return $el.find(\".save\").remove();\n };\n showAddTagButton = function() {\n return $el.find(\".add-tag\").removeClass(\"hidden\");\n };\n hideAddTagButton = function() {\n return $el.find(\".add-tag\").addClass(\"hidden\");\n };\n showAddTagButtonText = function() {\n return $el.find(\".add-tag-text\").removeClass(\"hidden\");\n };\n hideAddTagButtonText = function() {\n return $el.find(\".add-tag-text\").addClass(\"hidden\");\n };\n showSaveButton = function() {\n return $el.find(\".save\").removeClass(\"hidden\");\n };\n hideSaveButton = function() {\n return $el.find(\".save\").addClass(\"hidden\");\n };\n showInput = function() {\n return $el.find(\"input\").removeClass(\"hidden\").focus();\n };\n hideInput = function() {\n return $el.find(\"input\").addClass(\"hidden\").blur();\n };\n resetInput = function() {\n $el.find(\"input\").val(\"\");\n return $el.find(\"input\").autocomplete(\"close\");\n };\n addValue = $qqueue.bindAdd(function(value) {\n var model, onError, onSuccess, tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue.tags, false);\n if (tags == null) {\n tags = [];\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n model = $model.$modelValue.clone();\n model.tags = tags;\n $model.$setViewValue(model);\n onSuccess = function() {\n return $rootScope.$broadcast(\"history:reload\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n model.revert();\n return $model.$setViewValue(model);\n };\n $repo.save(model).then(onSuccess, onError);\n return hideSaveButton();\n });\n deleteValue = $qqueue.bindAdd(function(value) {\n var model, onError, onSuccess, tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue.tags, false);\n tags = _.pull(tags, value);\n model = $model.$modelValue.clone();\n model.tags = tags;\n $model.$setViewValue(model);\n onSuccess = function() {\n return $rootScope.$broadcast(\"history:reload\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n model.revert();\n return $model.$setViewValue(model);\n };\n return $repo.save(model).then(onSuccess, onError);\n });\n saveInputTag = function() {\n var value;\n value = $el.find(\"input\").val();\n addValue(value);\n return resetInput();\n };\n removeInputLastCharacter = (function(_this) {\n return function(input) {\n var inputValue;\n inputValue = input.val();\n return input.val(inputValue.substring(0, inputValue.length - 1));\n };\n })(this);\n $el.on(\"keypress\", \"input\", function(event) {\n var ref;\n if ((ref = event.keyCode) !== ENTER_KEY && ref !== ESC_KEY) {\n return;\n }\n return event.preventDefault();\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n return saveInputTag();\n } else if (event.keyCode === COMMA_KEY) {\n removeInputLastCharacter(target);\n return saveInputTag();\n } else if (event.keyCode === ESC_KEY) {\n resetInput();\n hideInput();\n hideSaveButton();\n return showAddTagButton();\n } else {\n if (target.val().length) {\n return showSaveButton();\n } else {\n return hideSaveButton();\n }\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n event.preventDefault();\n return saveInputTag();\n });\n $el.on(\"click\", \".add-tag\", function(event) {\n event.preventDefault();\n hideAddTagButton();\n return showInput();\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n var target, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n value = target.siblings(\".tag-name\").text();\n return deleteValue(value);\n });\n bindOnce($scope, \"project\", function(project) {\n var positioningFunction;\n if (!isEditable()) {\n renderInReadModeOnly();\n return;\n }\n showAddTagButton();\n positioningFunction = function(position, elements) {\n var menu;\n menu = elements.element.element;\n menu.css(\"width\", elements.target.width);\n menu.css(\"top\", position.top);\n return menu.css(\"left\", position.left);\n };\n return $el.find(\"input\").autocomplete({\n source: _.keys(project.tags_colors),\n position: {\n my: \"left top\",\n using: positioningFunction\n },\n select: function(event, ui) {\n addValue(ui.item.value);\n return ui.item.value = \"\";\n }\n });\n });\n $scope.$watch($attrs.ngModel, function(model) {\n var ref, ref1, tagsColors;\n if (!model) {\n return;\n }\n if ((ref = model.tags) != null ? ref.length : void 0) {\n hideAddTagButtonText();\n } else {\n showAddTagButtonText();\n }\n tagsColors = ((ref1 = $scope.project) != null ? ref1.tags_colors : void 0) || [];\n return renderTags(model.tags, tagsColors);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\",\n templateUrl: \"common/tag/tag-line.html\"\n };\n };\n\n module.directive(\"tgTagLine\", [\"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$tgQqueue\", \"$tgTemplate\", TagLineDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/wisiwyg.coffee\n */\n\n(function() {\n var bindOnce, module, taiga, tgMarkitupDirective,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n tgMarkitupDirective = function($rootscope, $rs, $tr, $selectedText, $template) {\n var link, previewTemplate;\n previewTemplate = $template.get(\"common/wysiwyg/wysiwyg-markitup-preview.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addLine, closePreviewMode, element, markdownSettings, markdownTitle, prepareUrlFormatting, preview, previewDomNode, setCaretPosition, urlFormatting;\n element = angular.element($el);\n previewDomNode = $(\"
\", {\n \"class\": \"preview\"\n });\n closePreviewMode = function() {\n element.parents(\".markdown\").find(\".preview\").remove();\n return element.parents(\".markItUp\").show();\n };\n $scope.$on(\"markdown-editor:submit\", function() {\n return closePreviewMode();\n });\n preview = function() {\n var markItUpDomNode, markdownDomNode;\n markdownDomNode = element.parents(\".markdown\");\n markItUpDomNode = element.parents(\".markItUp\");\n return $rs.mdrender.render($scope.projectId, $model.$modelValue).then(function(data) {\n var markdown;\n markdownDomNode.append(previewTemplate({\n data: data.data\n }));\n markItUpDomNode.hide();\n markdown = element.closest(\".markdown\");\n return markdown.on(\"mouseup.preview\", \".preview\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.target);\n if (!target.is('a') && $selectedText.get().length) {\n return;\n }\n markdown.off(\".preview\");\n return closePreviewMode();\n });\n });\n };\n setCaretPosition = function(textarea, caretPosition) {\n var line, range, scrollRelation, totalLines;\n if (textarea.createTextRange) {\n range = textarea.createTextRange();\n range.move(\"character\", caretPosition);\n range.select();\n } else if (textarea.selectionStart) {\n textarea.focus();\n textarea.setSelectionRange(caretPosition, caretPosition);\n }\n totalLines = textarea.value.split(\"\\n\").length;\n line = textarea.value.slice(0, +(caretPosition - 1) + 1 || 9e9).split(\"\\n\").length;\n scrollRelation = line / totalLines;\n return $el.scrollTop((scrollRelation * $el[0].scrollHeight) - ($el.height() / 2));\n };\n addLine = function(textarea, nline, replace) {\n var cursorPosition, j, key, len, line, lines;\n lines = textarea.value.split(\"\\n\");\n if (replace) {\n lines[nline] = replace + lines[nline];\n } else {\n lines[nline] = \"\";\n }\n cursorPosition = 0;\n for (key = j = 0, len = lines.length; j < len; key = ++j) {\n line = lines[key];\n cursorPosition += line.length + 1 || 1;\n if (key === nline) {\n break;\n }\n }\n textarea.value = lines.join(\"\\n\");\n if (replace) {\n return cursorPosition - lines[nline].length + replace.length - 1;\n } else {\n return cursorPosition;\n }\n };\n markdownSettings = {\n nameSpace: \"markdown\",\n onShiftEnter: {\n keepDefault: false,\n openWith: \"\\n\\n\"\n },\n onEnter: {\n keepDefault: false,\n replaceWith: function() {\n return \"\\n\";\n },\n afterInsert: function(data) {\n var cursorLine, emptyListItem, lastLine, lines, markdownCaretPositon, match, newLineContent;\n lines = data.textarea.value.split(\"\\n\");\n cursorLine = data.textarea.value.slice(0, +(data.caretPosition - 1) + 1 || 9e9).split(\"\\n\").length;\n newLineContent = data.textarea.value.slice(data.caretPosition).split(\"\\n\")[0];\n lastLine = lines[cursorLine - 1];\n match = lastLine.match(/^(\\s*- ).*/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*)\\-\\s$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, \"\" + match[1]);\n }\n }\n match = lastLine.match(/^(\\s*\\* ).*/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*\\* )$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, \"\" + match[1]);\n }\n }\n match = lastLine.match(/^(\\s*)(\\d+)\\.\\s/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*)(\\d+)\\.\\s$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, (match[1] + (parseInt(match[2], 10) + 1)) + \". \");\n }\n }\n if (markdownCaretPositon) {\n return setCaretPosition(data.textarea, markdownCaretPositon);\n }\n }\n },\n markupSet: [\n {\n name: $tr.t(\"markdown-editor.heading-1\"),\n key: \"1\",\n placeHolder: $tr.t(\"markdown-editor.placeholder\"),\n closeWith: function(markItUp) {\n return markdownTitle(markItUp, \"=\");\n }\n }, {\n name: $tr.t(\"markdown-editor.heading-2\"),\n key: \"2\",\n placeHolder: $tr.t(\"markdown-editor.placeholder\"),\n closeWith: function(markItUp) {\n return markdownTitle(markItUp, \"-\");\n }\n }, {\n name: $tr.t(\"markdown-editor.heading-3\"),\n key: \"3\",\n openWith: \"### \",\n placeHolder: $tr.t(\"markdown-editor.placeholder\")\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.bold\"),\n key: \"B\",\n openWith: \"**\",\n closeWith: \"**\"\n }, {\n name: $tr.t(\"markdown-editor.italic\"),\n key: \"I\",\n openWith: \"_\",\n closeWith: \"_\"\n }, {\n name: $tr.t(\"markdown-editor.strike\"),\n key: \"S\",\n openWith: \"~~\",\n closeWith: \"~~\"\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.bulleted-list\"),\n openWith: \"- \"\n }, {\n name: $tr.t(\"markdown-editor.numeric-list\"),\n openWith: function(markItUp) {\n return markItUp.line + \". \";\n }\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.picture\"),\n key: \"P\",\n replaceWith: '![[![Alternative text]!]](<<<[![Url:!:http://]!]>>> \"[![Title]!]\")',\n beforeInsert: function(markItUp) {\n return prepareUrlFormatting(markItUp);\n },\n afterInsert: function(markItUp) {\n return urlFormatting(markItUp);\n }\n }, {\n name: $tr.t(\"markdown-editor.link\"),\n key: \"L\",\n openWith: \"[\",\n closeWith: '](<<<[![Url:!:http://]!]>>> \"[![Title]!]\")',\n placeHolder: $tr.t(\"markdown-editor.link-placeholder\"),\n beforeInsert: function(markItUp) {\n return prepareUrlFormatting(markItUp);\n },\n afterInsert: function(markItUp) {\n return urlFormatting(markItUp);\n }\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.quotes\"),\n openWith: \"> \"\n }, {\n name: $tr.t(\"markdown-editor.code-block\"),\n openWith: \"```\\n\",\n closeWith: \"\\n```\"\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.preview\"),\n call: preview,\n className: \"preview-icon\"\n }\n ],\n afterInsert: function(event) {\n var target;\n target = angular.element(event.textarea);\n return $model.$setViewValue(target.val());\n }\n };\n prepareUrlFormatting = function(markItUp) {\n var indices, regex, result;\n console.log(markItUp);\n regex = /(<<<|>>>)/gi;\n result = 0;\n indices = [];\n while ((result = regex.exec(markItUp.textarea.value))) {\n indices.push(result.index);\n }\n markItUp.donotparse = indices;\n return console.log(indices);\n };\n urlFormatting = function(markItUp) {\n var endIndex, ref, ref1, regex, result, startIndex, url, value;\n console.log(markItUp.donotparse);\n regex = /<<>>/gi;\n endIndex = 0;\n while (true) {\n result = regex.exec(markItUp.textarea.value);\n if (!result) {\n break;\n }\n if (ref1 = result.index, indexOf.call(markItUp.donotparse, ref1) < 0) {\n endIndex = result.index;\n break;\n }\n }\n value = markItUp.textarea.value;\n url = value.substring(startIndex, endIndex).replace('<<<', '').replace('>>>', '');\n url = url.replace('(', '%28').replace(')', '%29');\n url = url.replace('[', '%5B').replace(']', '%5D');\n value = value.substring(0, startIndex) + url + value.substring(endIndex + 3, value.length);\n markItUp.textarea.value = value;\n return markItUp.donotparse = void 0;\n };\n markdownTitle = function(markItUp, char) {\n var heading, i, j, n, ref;\n heading = \"\";\n n = $.trim(markItUp.selection || markItUp.placeHolder).length;\n for (i = j = 0, ref = n - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n heading += char;\n }\n return \"\\n\" + heading + \"\\n\";\n };\n element.markItUp(markdownSettings);\n element.on(\"keypress\", function(event) {\n return $scope.$apply();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgMarkitup\", [\"$rootScope\", \"$tgResources\", \"$tgI18n\", \"$selectedText\", \"$tgTemplate\", tgMarkitupDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: pluggins/main.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaPlugins\", [\"ngRoute\"]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/kanban/sortable.coffee\n */\n\n(function() {\n var KanbanSortableDirective, bindOnce, groupBy, mixOf, module, scopeDefer, taiga, timeout, toggleText;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toggleText = this.taiga.toggleText;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaKanban\");\n\n KanbanSortableDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n bindOnce($scope, \"project\", function(project) {\n var deleteElement, itemEl, newParentScope, oldParentScope, tdom;\n if (!(project.my_permissions.indexOf(\"modify_us\") > -1)) {\n return;\n }\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el;\n deleteElement = function(itemEl) {\n itemEl.scope().$destroy();\n itemEl.off();\n return itemEl.remove();\n };\n tdom.sortable({\n handle: \".kanban-task-inner\",\n dropOnEmpty: true,\n connectWith: \".kanban-uses-box\",\n revert: 400\n });\n tdom.on(\"sortstop\", function(event, ui) {\n var itemIndex, itemUs, newStatusId, oldStatusId, parentEl;\n parentEl = ui.item.parent();\n itemEl = ui.item;\n itemUs = itemEl.scope().us;\n itemIndex = itemEl.index();\n newParentScope = parentEl.scope();\n newStatusId = newParentScope.s.id;\n oldStatusId = oldParentScope.s.id;\n if (newStatusId !== oldStatusId) {\n deleteElement(itemEl);\n }\n $scope.$apply(function() {\n return $rootscope.$broadcast(\"kanban:us:move\", itemUs, itemUs.status, newStatusId, itemIndex);\n });\n return ui.item.find('a').removeClass('noclick');\n });\n return tdom.on(\"sortstart\", function(event, ui) {\n oldParentScope = ui.item.parent().scope();\n return ui.item.find('a').addClass('noclick');\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanSortable\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", KanbanSortableDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/sprints.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $model, $storage) {\n var hashSuffixUserstories, service;\n service = {};\n hashSuffixUserstories = \"userstories-queryparams\";\n service.get = function(projectId, sprintId) {\n return $repo.queryOne(\"milestones\", sprintId).then(function(sprint) {\n var uses;\n service.storeUserstoriesQueryParams(projectId, {\n \"milestone\": sprintId\n });\n uses = sprint.user_stories;\n uses = _.map(uses, function(u) {\n return $model.make_model(\"userstories\", u);\n });\n sprint._attrs.user_stories = uses;\n return sprint;\n });\n };\n service.stats = function(projectId, sprintId) {\n return $repo.queryOneRaw(\"milestones\", sprintId + \"/stats\");\n };\n service.list = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId\n };\n params = _.extend({}, params, filters || {});\n return $repo.queryMany(\"milestones\", params).then((function(_this) {\n return function(milestones) {\n var i, len, m, uses;\n for (i = 0, len = milestones.length; i < len; i++) {\n m = milestones[i];\n uses = m.user_stories;\n uses = _.map(uses, function(u) {\n return $model.make_model(\"userstories\", u);\n });\n m._attrs.user_stories = uses;\n }\n return milestones;\n };\n })(this));\n };\n service.storeUserstoriesQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUserstories;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n return function(instance) {\n return instance.sprints = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgSprintsResourcesProvider\", [\"$tgRepo\", \"$tgModel\", \"$tgStorage\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/taskboard/charts.coffee\n */\n\n(function() {\n var SprintGraphDirective, bindOnce, groupBy, mixOf, module, scopeDefer, taiga, timeout, toggleText;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toggleText = this.taiga.toggleText;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaTaskboard\");\n\n SprintGraphDirective = function() {\n var link, redrawChart;\n redrawChart = function(element, dataToDraw) {\n var data, days, options, width;\n width = element.width();\n element.height(240);\n days = _.map(dataToDraw, function(x) {\n return moment(x.day);\n });\n data = [];\n data.unshift({\n data: _.zip(days, _.map(dataToDraw, function(d) {\n return d.optimal_points;\n })),\n lines: {\n fillColor: \"rgba(120,120,120,0.2)\"\n }\n });\n data.unshift({\n data: _.zip(days, _.map(dataToDraw, function(d) {\n return d.open_points;\n })),\n lines: {\n fillColor: \"rgba(102,153,51,0.3)\"\n }\n });\n options = {\n grid: {\n borderWidth: {\n top: 0,\n right: 1,\n left: 0,\n bottom: 0\n },\n borderColor: '#ccc',\n hoverable: true\n },\n xaxis: {\n tickSize: [1, \"day\"],\n min: days[0],\n max: _.last(days),\n mode: \"time\",\n daysNames: days,\n axisLabel: 'Day',\n axisLabelUseCanvas: true,\n axisLabelFontSizePixels: 12,\n axisLabelFontFamily: 'Verdana, Arial, Helvetica, Tahoma, sans-serif',\n axisLabelPadding: 5\n },\n yaxis: {\n min: 0\n },\n series: {\n shadowSize: 0,\n lines: {\n show: true,\n fill: true\n },\n points: {\n show: true,\n fill: true,\n radius: 4,\n lineWidth: 2\n }\n },\n colors: [\"rgba(102,153,51,1)\", \"rgba(120,120,120,0.2)\"],\n tooltip: true,\n tooltipOpts: {\n content: function(label, xval, yval, flotItem) {\n var formattedDate, roundedValue;\n formattedDate = moment(xval).format(\"DD MMM\");\n roundedValue = Math.round(yval);\n if (flotItem.seriesIndex === 1) {\n return \"Optimal pending points for day \" + formattedDate + \" should be \" + roundedValue;\n } else {\n return \"Real pending points for day \" + formattedDate + \" is \" + roundedValue;\n }\n }\n }\n };\n element.empty();\n return element.plot(data, options).data(\"plot\");\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$on(\"resize\", function() {\n if ($scope.stats) {\n return redrawChart(element, $scope.stats.days);\n }\n });\n $scope.$on(\"taskboard:graph:toggle-visibility\", function() {\n $el.parent().toggleClass('open');\n return timeout(100, function() {\n if ($scope.stats) {\n return redrawChart(element, $scope.stats.days);\n }\n });\n });\n $scope.$watch('stats', function(value) {\n if ($scope.stats == null) {\n return;\n }\n return redrawChart(element, $scope.stats.days);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSprintGraph\", SprintGraphDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/tasks/detail.coffee\n */\n\n(function() {\n var TaskDetailController, TaskIsIocaineButtonDirective, TaskStatusButtonDirective, TaskStatusDisplayDirective, groupBy, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n groupBy = this.taiga.groupBy;\n\n module = angular.module(\"taigaTasks\");\n\n TaskDetailController = (function(superClass) {\n extend(TaskDetailController, superClass);\n\n TaskDetailController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$log\", \"$appTitle\", \"$tgNavUrls\", \"$tgAnalytics\", \"tgLoader\"];\n\n function TaskDetailController(scope, rootscope, repo, confirm, rs, params, q, location, log, appTitle, navUrls, analytics, tgLoader) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.log = log;\n this.appTitle = appTitle;\n this.navUrls = navUrls;\n this.analytics = analytics;\n this.scope.taskRef = this.params.taskref;\n this.scope.sectionName = \"Task Details\";\n this.initializeEventHandlers();\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n _this.appTitle.set(_this.scope.task.subject + \" - \" + _this.scope.project.name);\n return _this.initializeOnDeleteGoToUrl();\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n promise[\"finally\"](tgLoader.pageLoaded);\n }\n\n TaskDetailController.prototype.initializeEventHandlers = function() {\n this.scope.$on(\"attachment:create\", (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"attachment\", \"create\", \"create attachment on task\", 1);\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n this.scope.$on(\"attachment:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n this.scope.$on(\"attachment:delete\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n return this.scope.$on(\"custom-attributes-values:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n };\n\n TaskDetailController.prototype.initializeOnDeleteGoToUrl = function() {\n var ctx;\n ctx = {\n project: this.scope.project.slug\n };\n this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project\", ctx);\n if (this.scope.project.is_backlog_activated) {\n if (this.scope.task.milestone) {\n ctx.sprint = this.scope.sprint.slug;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-taskboard\", ctx);\n } else if (this.scope.task.us) {\n ctx.ref = this.scope.us.ref;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-userstories-detail\", ctx);\n }\n } else if (this.scope.project.is_kanban_activated) {\n if (this.scope.us) {\n ctx.ref = this.scope.us.ref;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-userstories-detail\", ctx);\n }\n }\n };\n\n TaskDetailController.prototype.loadProject = function() {\n return this.rs.projects.getBySlug(this.params.pslug).then((function(_this) {\n return function(project) {\n _this.scope.projectId = project.id;\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.statusList = project.task_statuses;\n _this.scope.statusById = groupBy(project.task_statuses, function(x) {\n return x.id;\n });\n _this.scope.membersById = groupBy(project.memberships, function(x) {\n return x.user;\n });\n return project;\n };\n })(this));\n };\n\n TaskDetailController.prototype.loadTask = function() {\n return this.rs.tasks.getByRef(this.scope.projectId, this.params.taskref).then((function(_this) {\n return function(task) {\n var ctx;\n _this.scope.task = task;\n _this.scope.taskId = task.id;\n _this.scope.commentModel = task;\n if (_this.scope.task.neighbors.previous.ref != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.task.neighbors.previous.ref\n };\n _this.scope.previousUrl = _this.navUrls.resolve(\"project-tasks-detail\", ctx);\n }\n if (_this.scope.task.neighbors.next.ref != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.task.neighbors.next.ref\n };\n _this.scope.nextUrl = _this.navUrls.resolve(\"project-tasks-detail\", ctx);\n }\n return task;\n };\n })(this));\n };\n\n TaskDetailController.prototype.loadSprint = function() {\n if (this.scope.task.milestone) {\n return this.rs.sprints.get(this.scope.task.project, this.scope.task.milestone).then((function(_this) {\n return function(sprint) {\n _this.scope.sprint = sprint;\n return sprint;\n };\n })(this));\n }\n };\n\n TaskDetailController.prototype.loadUserStory = function() {\n if (this.scope.task.user_story) {\n return this.rs.userstories.get(this.scope.task.project, this.scope.task.user_story).then((function(_this) {\n return function(us) {\n _this.scope.us = us;\n return us;\n };\n })(this));\n }\n };\n\n TaskDetailController.prototype.loadInitialData = function() {\n var promise;\n promise = this.loadProject();\n return promise.then((function(_this) {\n return function(project) {\n _this.fillUsersAndRoles(project.users, project.roles);\n return _this.loadTask().then(function() {\n return _this.q.all([_this.loadSprint(), _this.loadUserStory()]);\n });\n };\n })(this));\n };\n\n return TaskDetailController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"TaskDetailController\", TaskDetailController);\n\n TaskStatusDisplayDirective = function($template) {\n var link, template;\n template = $template.get(\"common/components/status-display.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(task) {\n var html;\n html = template({\n status: $scope.statusById[task.status]\n });\n return $el.html(html);\n };\n $scope.$watch($attrs.ngModel, function(task) {\n if (task != null) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskStatusDisplay\", [\"$tgTemplate\", TaskStatusDisplayDirective]);\n\n TaskStatusButtonDirective = function($rootScope, $repo, $confirm, $loading, $qqueue) {\n var link, template;\n template = _.template(\"\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_task\") !== -1;\n };\n render = (function(_this) {\n return function(task) {\n var html, status;\n status = $scope.statusById[task.status];\n html = template({\n status: status,\n statuses: $scope.statusList,\n editable: isEditable()\n });\n return $el.html(html);\n };\n })(this);\n save = $qqueue.bindAdd((function(_this) {\n return function(status) {\n var onError, onSuccess, task;\n task = $model.$modelValue.clone();\n task.status = status;\n $model.$setViewValue(task);\n onSuccess = function() {\n $confirm.notify(\"success\");\n $rootScope.$broadcast(\"history:reload\");\n return $loading.finish($el.find(\".level-name\"));\n };\n onError = function() {\n $confirm.notify(\"error\");\n task.revert();\n $model.$setViewValue(task);\n return $loading.finish($el.find(\".level-name\"));\n };\n $loading.start($el.find(\".level-name\"));\n return $repo.save($model.$modelValue).then(onSuccess, onError);\n };\n })(this));\n $el.on(\"click\", \".status-data\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n $.fn.popover().closeAll();\n return save(target.data(\"status-id\"));\n });\n $scope.$watch($attrs.ngModel, function(task) {\n if (task) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskStatusButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQqueue\", TaskStatusButtonDirective]);\n\n TaskIsIocaineButtonDirective = function($rootscope, $tgrepo, $confirm, $loading, $qqueue) {\n var link, template;\n template = _.template(\"
\\n \\n \\n
\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_task\") !== -1;\n };\n render = function(task) {\n var ctx, html;\n if (!isEditable() && !task.is_iocaine) {\n $el.html(\"\");\n return;\n }\n ctx = {\n isIocaine: task.is_iocaine,\n isEditable: isEditable()\n };\n html = template(ctx);\n return $el.html(html);\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(is_iocaine) {\n var promise, task;\n task = $model.$modelValue.clone();\n task.is_iocaine = is_iocaine;\n $model.$setViewValue(task);\n $loading.start($el.find('label'));\n promise = $tgrepo.save(task);\n promise.then(function() {\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"history:reload\");\n });\n promise.then(null, function() {\n task.revert();\n $model.$setViewValue(task);\n return $confirm.notify(\"error\");\n });\n return promise[\"finally\"](function() {\n return $loading.finish($el.find('label'));\n });\n };\n })(this));\n $el.on(\"click\", \".is-iocaine\", function(event) {\n var is_iocaine;\n if (!isEditable()) {\n return;\n }\n is_iocaine = !$model.$modelValue.is_iocaine;\n return save(is_iocaine);\n });\n $scope.$watch($attrs.ngModel, function(task) {\n if (task) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskIsIocaineButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQqueue\", TaskIsIocaineButtonDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/issues/list.coffee\n */\n\n(function() {\n var IssueAssignedToInlineEditionDirective, IssueStatusInlineEditionDirective, IssuesController, IssuesDirective, IssuesFiltersDirective, bindOnce, debounceLeading, groupBy, joinStr, mixOf, module, startswith, taiga, toString, trim,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounceLeading = this.taiga.debounceLeading;\n\n startswith = this.taiga.startswith;\n\n module = angular.module(\"taigaIssues\");\n\n IssuesController = (function(superClass) {\n extend(IssuesController, superClass);\n\n IssuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$tgUrls\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$appTitle\", \"$tgNavUrls\", \"$tgEvents\", \"$tgAnalytics\", \"tgLoader\"];\n\n function IssuesController(scope, rootscope, repo, confirm, rs, urls, params, q, location, appTitle, navUrls, events, analytics, tgLoader) {\n var filters, promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.urls = urls;\n this.params = params;\n this.q = q;\n this.location = location;\n this.appTitle = appTitle;\n this.navUrls = navUrls;\n this.events = events;\n this.analytics = analytics;\n this.loadIssues = bind(this.loadIssues, this);\n this.scope.sectionName = \"Issues\";\n this.scope.filters = {};\n if (_.isEmpty(this.location.search())) {\n filters = this.rs.issues.getFilters(this.params.pslug);\n filters.page = 1;\n this.location.search(filters);\n this.location.replace();\n return;\n }\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Issues - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n promise[\"finally\"](tgLoader.pageLoaded);\n this.scope.$on(\"issueform:new:success\", (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"issue\", \"create\", \"create issue on issues list\", 1);\n _this.loadIssues();\n return _this.loadFilters();\n };\n })(this));\n }\n\n IssuesController.prototype.initializeSubscription = function() {\n var routingKey;\n routingKey = \"changes.project.\" + this.scope.projectId + \".issues\";\n return this.events.subscribe(this.scope, routingKey, (function(_this) {\n return function(message) {\n return _this.loadIssues();\n };\n })(this));\n };\n\n IssuesController.prototype.storeFilters = function() {\n return this.rs.issues.storeFilters(this.params.pslug, this.location.search());\n };\n\n IssuesController.prototype.loadProject = function() {\n return this.rs.projects.getBySlug(this.params.pslug).then((function(_this) {\n return function(project) {\n if (!project.is_issues_activated) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.projectId = project.id;\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.issueStatusById = groupBy(project.issue_statuses, function(x) {\n return x.id;\n });\n _this.scope.issueStatusList = _.sortBy(project.issue_statuses, \"order\");\n _this.scope.severityById = groupBy(project.severities, function(x) {\n return x.id;\n });\n _this.scope.severityList = _.sortBy(project.severities, \"order\");\n _this.scope.priorityById = groupBy(project.priorities, function(x) {\n return x.id;\n });\n _this.scope.priorityList = _.sortBy(project.priorities, \"order\");\n _this.scope.issueTypes = _.sortBy(project.issue_types, \"order\");\n _this.scope.issueTypeById = groupBy(project.issue_types, function(x) {\n return x.id;\n });\n _this.scope.membersById = groupBy(project.memberships, function(x) {\n return x.user;\n });\n return project;\n };\n })(this));\n };\n\n IssuesController.prototype.getUrlFilters = function() {\n var filters;\n filters = _.pick(this.location.search(), \"page\", \"tags\", \"statuses\", \"types\", \"q\", \"severities\", \"priorities\", \"assignedTo\", \"createdBy\", \"orderBy\");\n if (!filters.page) {\n filters.page = 1;\n }\n return filters;\n };\n\n IssuesController.prototype.getUrlFilter = function(name) {\n var filters;\n filters = _.pick(this.location.search(), name);\n return filters[name];\n };\n\n IssuesController.prototype.loadMyFilters = function() {\n return this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n return _.map(filters, function(value, key) {\n return {\n id: key,\n name: key,\n type: \"myFilters\",\n selected: false\n };\n });\n };\n })(this));\n };\n\n IssuesController.prototype.removeNotExistingFiltersFromUrl = function() {\n var currentSearch, existingValues, filterName, filterValue, splittedValues, urlfilters;\n currentSearch = this.location.search();\n urlfilters = this.getUrlFilters();\n for (filterName in urlfilters) {\n filterValue = urlfilters[filterName];\n if (filterName === \"page\" || filterName === \"orderBy\" || filterName === \"q\") {\n continue;\n }\n if (filterName === \"tags\") {\n splittedValues = _.map((\"\" + filterValue).split(\",\"));\n } else {\n splittedValues = _.map((\"\" + filterValue).split(\",\"), function(x) {\n if (x === \"null\") {\n return null;\n } else {\n return parseInt(x);\n }\n });\n }\n existingValues = _.intersection(splittedValues, _.map(this.scope.filters[filterName], \"id\"));\n if (splittedValues.length !== existingValues.length) {\n this.location.search(filterName, existingValues.join());\n }\n }\n if (currentSearch !== this.location.search()) {\n return this.location.replace();\n }\n };\n\n IssuesController.prototype.markSelectedFilters = function(filters, urlfilters) {\n var isSelected, j, key, len, name, obj, ref, ref1, results, searchdata, val, value;\n searchdata = {};\n ref = _.omit(urlfilters, \"page\", \"orderBy\");\n for (name in ref) {\n value = ref[name];\n if (searchdata[name] == null) {\n searchdata[name] = {};\n }\n ref1 = (\"\" + value).split(\",\");\n for (j = 0, len = ref1.length; j < len; j++) {\n val = ref1[j];\n searchdata[name][val] = true;\n }\n }\n isSelected = function(type, id) {\n if ((searchdata[type] != null) && searchdata[type][id]) {\n return true;\n }\n return false;\n };\n results = [];\n for (key in filters) {\n value = filters[key];\n results.push((function() {\n var k, len1, results1;\n results1 = [];\n for (k = 0, len1 = value.length; k < len1; k++) {\n obj = value[k];\n results1.push(obj.selected = isSelected(obj.type, obj.id) ? true : void 0);\n }\n return results1;\n })());\n }\n return results;\n };\n\n IssuesController.prototype.loadFilters = function() {\n var promise, urlfilters;\n urlfilters = this.getUrlFilters();\n if (urlfilters.q) {\n this.scope.filtersQ = urlfilters.q;\n }\n promise = this.loadMyFilters().then((function(_this) {\n return function(myFilters) {\n _this.scope.filters.myFilters = myFilters;\n return myFilters;\n };\n })(this));\n promise = promise.then((function(_this) {\n return function() {\n return _this.rs.issues.filtersData(_this.scope.projectId);\n };\n })(this));\n return promise.then((function(_this) {\n return function(data) {\n var choicesFiltersFormat, tagsFilterFormat, usersFiltersFormat;\n usersFiltersFormat = function(users, type, unknownOption) {\n var reformatedUsers, unknownItem;\n reformatedUsers = _.map(users, function(t) {\n return {\n id: t[0],\n count: t[1],\n type: type,\n name: t[0] ? _this.scope.usersById[t[0]].full_name_display : unknownOption\n };\n });\n unknownItem = _.remove(reformatedUsers, function(u) {\n return !u.id;\n });\n reformatedUsers = _.sortBy(reformatedUsers, function(u) {\n return u.name.toUpperCase();\n });\n if (unknownItem.length > 0) {\n reformatedUsers.unshift(unknownItem[0]);\n }\n return reformatedUsers;\n };\n choicesFiltersFormat = function(choices, type, byIdObject) {\n return _.map(choices, function(t) {\n return {\n id: t[0],\n name: byIdObject[t[0]].name,\n color: byIdObject[t[0]].color,\n count: t[1],\n type: type\n };\n });\n };\n tagsFilterFormat = function(tags) {\n return _.map(tags, function(t) {\n return {\n id: t[0],\n name: t[0],\n color: _this.scope.project.tags_colors[t[0]],\n count: t[1],\n type: \"tags\"\n };\n });\n };\n _this.scope.filters.statuses = choicesFiltersFormat(data.statuses, \"statuses\", _this.scope.issueStatusById);\n _this.scope.filters.severities = choicesFiltersFormat(data.severities, \"severities\", _this.scope.severityById);\n _this.scope.filters.priorities = choicesFiltersFormat(data.priorities, \"priorities\", _this.scope.priorityById);\n _this.scope.filters.assignedTo = usersFiltersFormat(data.assigned_to, \"assignedTo\", \"Unassigned\");\n _this.scope.filters.createdBy = usersFiltersFormat(data.created_by, \"createdBy\", \"Unknown\");\n _this.scope.filters.types = choicesFiltersFormat(data.types, \"types\", _this.scope.issueTypeById);\n _this.scope.filters.tags = tagsFilterFormat(data.tags);\n _this.removeNotExistingFiltersFromUrl();\n _this.markSelectedFilters(_this.scope.filters, urlfilters);\n return _this.rootscope.$broadcast(\"filters:loaded\", _this.scope.filters);\n };\n })(this));\n };\n\n IssuesController.prototype.loadIssuesRequests = 0;\n\n IssuesController.prototype.loadIssues = function() {\n var name, promise, ref, values;\n this.scope.urlFilters = this.getUrlFilters();\n this.scope.httpParams = {};\n ref = this.scope.urlFilters;\n for (name in ref) {\n values = ref[name];\n if (name === \"severities\") {\n name = \"severity\";\n } else if (name === \"orderBy\") {\n name = \"order_by\";\n } else if (name === \"priorities\") {\n name = \"priority\";\n } else if (name === \"assignedTo\") {\n name = \"assigned_to\";\n } else if (name === \"createdBy\") {\n name = \"owner\";\n } else if (name === \"statuses\") {\n name = \"status\";\n } else if (name === \"types\") {\n name = \"type\";\n }\n this.scope.httpParams[name] = values;\n }\n promise = this.rs.issues.list(this.scope.projectId, this.scope.httpParams);\n this.loadIssuesRequests += 1;\n promise.index = this.loadIssuesRequests;\n return promise.then((function(_this) {\n return function(data) {\n if (promise.index === _this.loadIssuesRequests) {\n _this.scope.issues = data.models;\n _this.scope.page = data.current;\n _this.scope.count = data.count;\n _this.scope.paginatedBy = data.paginatedBy;\n }\n return data;\n };\n })(this));\n };\n\n IssuesController.prototype.loadInitialData = function() {\n var promise;\n promise = this.loadProject();\n return promise.then((function(_this) {\n return function(project) {\n _this.fillUsersAndRoles(project.users, project.roles);\n _this.initializeSubscription();\n return _this.q.all([_this.loadFilters(), _this.loadIssues()]);\n };\n })(this));\n };\n\n IssuesController.prototype.saveCurrentFiltersTo = function(newFilter) {\n var deferred;\n deferred = this.q.defer();\n this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n filters[newFilter] = _this.location.search();\n return _this.rs.issues.storeMyFilters(_this.scope.projectId, filters).then(function() {\n return deferred.resolve();\n });\n };\n })(this));\n return deferred.promise;\n };\n\n IssuesController.prototype.deleteMyFilter = function(filter) {\n var deferred;\n deferred = this.q.defer();\n this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n delete filters[filter];\n return _this.rs.issues.storeMyFilters(_this.scope.projectId, filters).then(function() {\n return deferred.resolve();\n });\n };\n })(this));\n return deferred.promise;\n };\n\n IssuesController.prototype.addNewIssue = function() {\n return this.rootscope.$broadcast(\"issueform:new\", this.scope.project);\n };\n\n IssuesController.prototype.addIssuesInBulk = function() {\n return this.rootscope.$broadcast(\"issueform:bulk\", this.scope.projectId);\n };\n\n return IssuesController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"IssuesController\", IssuesController);\n\n IssuesDirective = function($log, $location, $template) {\n var link, linkOrdering, linkPagination, template;\n template = $template.get(\"issue/issue-paginator.html\", true);\n linkPagination = function($scope, $el, $attrs, $ctrl) {\n var $pagEl, afterCurrent, atBegin, atEnd, beforeCurrent, getNumPages, renderPagination;\n afterCurrent = 2;\n beforeCurrent = 4;\n atBegin = 2;\n atEnd = 2;\n $pagEl = $el.find(\".issues-paginator\");\n getNumPages = function() {\n var numPages;\n numPages = $scope.count / $scope.paginatedBy;\n if (parseInt(numPages, 10) < numPages) {\n numPages = parseInt(numPages, 10) + 1;\n } else {\n numPages = parseInt(numPages, 10);\n }\n return numPages;\n };\n renderPagination = function() {\n var cpage, i, j, numPages, options, pages, ref;\n numPages = getNumPages();\n if (numPages <= 1) {\n $pagEl.hide();\n return;\n }\n $pagEl.show();\n pages = [];\n options = {};\n options.pages = pages;\n options.showPrevious = $scope.page > 1;\n options.showNext = !($scope.page === numPages);\n cpage = $scope.page;\n for (i = j = 1, ref = numPages; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n if (i === (cpage + afterCurrent) && numPages > (cpage + afterCurrent + atEnd)) {\n pages.push({\n classes: \"dots\",\n type: \"dots\"\n });\n } else if (i === (cpage - beforeCurrent) && cpage > (atBegin + beforeCurrent)) {\n pages.push({\n classes: \"dots\",\n type: \"dots\"\n });\n } else if (i > (cpage + afterCurrent) && i <= (numPages - atEnd)) {\n\n } else if (i < (cpage - beforeCurrent) && i > atBegin) {\n\n } else if (i === cpage) {\n pages.push({\n classes: \"active\",\n num: i,\n type: \"page-active\"\n });\n } else {\n pages.push({\n classes: \"page\",\n num: i,\n type: \"page\"\n });\n }\n }\n return $pagEl.html(template(options));\n };\n $scope.$watch(\"issues\", function(value) {\n if (!value) {\n return;\n }\n return renderPagination();\n });\n $el.on(\"click\", \".issues-paginator a.next\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", $scope.page + 1);\n return $ctrl.loadIssues();\n });\n });\n $el.on(\"click\", \".issues-paginator a.previous\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", $scope.page - 1);\n return $ctrl.loadIssues();\n });\n });\n return $el.on(\"click\", \".issues-paginator li.page > a\", function(event) {\n var pagenum, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n pagenum = target.data(\"pagenum\");\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", pagenum);\n return $ctrl.loadIssues();\n });\n });\n };\n linkOrdering = function($scope, $el, $attrs, $ctrl) {\n var colHeadElement, currentOrder, icon;\n currentOrder = $ctrl.getUrlFilter(\"orderBy\") || \"created_date\";\n if (currentOrder) {\n icon = startswith(currentOrder, \"-\") ? \"icon-caret-up\" : \"icon-caret-down\";\n colHeadElement = $el.find(\".row.title > div[data-fieldname='\" + (trim(currentOrder, \"-\")) + \"']\");\n colHeadElement.html((colHeadElement.html()) + \"\");\n }\n return $el.on(\"click\", \".row.title > div\", function(event) {\n var finalOrder, newOrder, target;\n target = angular.element(event.currentTarget);\n currentOrder = $ctrl.getUrlFilter(\"orderBy\");\n newOrder = target.data(\"fieldname\");\n finalOrder = currentOrder === newOrder ? \"-\" + newOrder : newOrder;\n return $scope.$apply(function() {\n $ctrl.replaceFilter(\"orderBy\", finalOrder);\n $ctrl.storeFilters();\n return $ctrl.loadIssues().then(function() {\n $el.find(\".row.title > div > span.icon\").remove();\n icon = startswith(finalOrder, \"-\") ? \"icon-caret-up\" : \"icon-caret-down\";\n return target.html((target.html()) + \"\");\n });\n });\n });\n };\n link = function($scope, $el, $attrs) {\n var $ctrl;\n $ctrl = $el.controller();\n linkOrdering($scope, $el, $attrs, $ctrl);\n linkPagination($scope, $el, $attrs, $ctrl);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssues\", [\"$log\", \"$tgLocation\", \"$tgTemplate\", IssuesDirective]);\n\n IssuesFiltersDirective = function($log, $location, $rs, $confirm, $loading, $template) {\n var link, template, templateSelected;\n template = $template.get(\"issue/issues-filters.html\", true);\n templateSelected = $template.get(\"issue/issues-filters-selected.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, initializeSelectedFilters, renderFilters, renderSelectedFilters, selectQFilter, selectedFilters, showCategories, showFilters, toggleFilterSelection;\n $ctrl = $el.closest(\".wrapper\").controller();\n selectedFilters = [];\n showFilters = function(title, type) {\n $el.find(\".filters-cats\").hide();\n $el.find(\".filter-list\").removeClass(\"hidden\");\n $el.find(\"h2.breadcrumb\").removeClass(\"hidden\");\n $el.find(\"h2 a.subfilter span.title\").html(title);\n return $el.find(\"h2 a.subfilter span.title\").prop(\"data-type\", type);\n };\n showCategories = function() {\n $el.find(\".filters-cats\").show();\n $el.find(\".filter-list\").addClass(\"hidden\");\n return $el.find(\"h2.breadcrumb\").addClass(\"hidden\");\n };\n initializeSelectedFilters = function(filters) {\n var j, len, name, val, values;\n selectedFilters = [];\n for (name in filters) {\n values = filters[name];\n for (j = 0, len = values.length; j < len; j++) {\n val = values[j];\n if (val.selected) {\n selectedFilters.push(val);\n }\n }\n }\n return renderSelectedFilters(selectedFilters);\n };\n renderSelectedFilters = function(selectedFilters) {\n var html;\n _.filter(selectedFilters, (function(_this) {\n return function(f) {\n if (f.color) {\n return f.style = \"border-left: 3px solid \" + f.color;\n }\n };\n })(this));\n html = templateSelected({\n filters: selectedFilters\n });\n $el.find(\".filters-applied\").html(html);\n if (selectedFilters.length > 0) {\n return $el.find(\".save-filters\").show();\n } else {\n return $el.find(\".save-filters\").hide();\n }\n };\n renderFilters = function(filters) {\n var html;\n _.filter(filters, (function(_this) {\n return function(f) {\n if (f.color) {\n return f.style = \"border-left: 3px solid \" + f.color;\n }\n };\n })(this));\n html = template({\n filters: filters\n });\n return $el.find(\".filter-list\").html(html);\n };\n toggleFilterSelection = function(type, id) {\n var currentFiltersType, filter, filterId, filters;\n if (type === \"myFilters\") {\n $rs.issues.getMyFilters($scope.projectId).then(function(data) {\n var filters, myFilters;\n myFilters = data;\n filters = myFilters[id];\n filters.page = 1;\n $ctrl.replaceAllFilters(filters);\n $ctrl.storeFilters();\n $ctrl.loadIssues();\n $ctrl.markSelectedFilters($scope.filters, filters);\n return initializeSelectedFilters($scope.filters);\n });\n return null;\n }\n filters = $scope.filters[type];\n filterId = type === 'tags' ? taiga.toString(id) : id;\n filter = _.find(filters, {\n id: filterId\n });\n filter.selected = !filter.selected;\n if (id === null) {\n id = \"null\";\n }\n if (filter.selected) {\n selectedFilters.push(filter);\n $scope.$apply(function() {\n $ctrl.selectFilter(type, id);\n $ctrl.selectFilter(\"page\", 1);\n $ctrl.storeFilters();\n return $ctrl.loadIssues();\n });\n } else {\n selectedFilters = _.reject(selectedFilters, filter);\n $scope.$apply(function() {\n $ctrl.unselectFilter(type, id);\n $ctrl.selectFilter(\"page\", 1);\n $ctrl.storeFilters();\n return $ctrl.loadIssues();\n });\n }\n renderSelectedFilters(selectedFilters);\n currentFiltersType = $el.find(\"h2 a.subfilter span.title\").prop('data-type');\n if (type === currentFiltersType) {\n return renderFilters(_.reject(filters, \"selected\"));\n }\n };\n $scope.$on(\"filters:loaded\", function(ctx, filters) {\n return initializeSelectedFilters(filters);\n });\n selectQFilter = debounceLeading(100, function(value) {\n if (value === void 0) {\n return;\n }\n $ctrl.replaceFilter(\"page\", null);\n if (value.length === 0) {\n $ctrl.replaceFilter(\"q\", null);\n $ctrl.storeFilters();\n } else {\n $ctrl.replaceFilter(\"q\", value);\n $ctrl.storeFilters();\n }\n return $ctrl.loadIssues();\n });\n $scope.$watch(\"filtersQ\", selectQFilter);\n $el.on(\"click\", \".filters-cats > ul > li > a\", function(event) {\n var tags, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n tags = $scope.filters[target.data(\"type\")];\n renderFilters(_.reject(tags, \"selected\"));\n return showFilters(target.attr(\"title\"), target.data(\"type\"));\n });\n $el.on(\"click\", \".filters-inner > .filters-step-cat > .breadcrumb > .back\", function(event) {\n event.preventDefault();\n return showCategories($el);\n });\n $el.on(\"click\", \".filters-applied a\", function(event) {\n var id, target, type;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n id = target.data(\"id\") || null;\n type = target.data(\"type\");\n return toggleFilterSelection(type, id);\n });\n $el.on(\"click\", \".filter-list .single-filter\", function(event) {\n var id, target, type;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n target.toggleClass(\"active\");\n id = target.data(\"id\") || null;\n type = target.data(\"type\");\n if (type === \"myFilters\") {\n target.removeClass(\"active\");\n }\n return toggleFilterSelection(type, id);\n });\n $el.on(\"click\", \".filter-list .single-filter .icon-delete\", function(event) {\n var customFilterName, message, target, title;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n customFilterName = target.parent().data('id');\n title = \"Delete custom filter\";\n message = \"the custom filter '\" + customFilterName + \"'\";\n return $confirm.askOnDelete(title, message).then(function(finish) {\n var promise;\n promise = $ctrl.deleteMyFilter(customFilterName);\n promise.then(function() {\n promise = $ctrl.loadMyFilters();\n promise.then(function(filters) {\n finish();\n $scope.filters.myFilters = filters;\n return renderFilters($scope.filters.myFilters);\n });\n return promise.then(null, function() {\n return finish();\n });\n });\n return promise.then(null, function() {\n finish(false);\n return $confirm.notify(\"error\");\n });\n });\n });\n $el.on(\"click\", \".save-filters\", function(event) {\n event.preventDefault();\n renderFilters($scope.filters[\"myFilters\"]);\n showFilters(\"My filters\", \"myFilters\");\n $el.find('.save-filters').hide();\n $el.find('.my-filter-name').removeClass(\"hidden\");\n return $el.find('.my-filter-name').focus();\n });\n return $el.on(\"keyup\", \".my-filter-name\", function(event) {\n var newFilter, promise, target;\n event.preventDefault();\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n newFilter = target.val();\n $loading.start($el.find(\".new\"));\n promise = $ctrl.saveCurrentFiltersTo(newFilter);\n promise.then(function() {\n var loadPromise;\n loadPromise = $ctrl.loadMyFilters();\n loadPromise.then(function(filters) {\n var currentfilterstype;\n $loading.finish($el.find(\".new\"));\n $scope.filters.myFilters = filters;\n currentfilterstype = $el.find(\"h2 a.subfilter span.title\").prop('data-type');\n if (currentfilterstype === \"myFilters\") {\n renderFilters($scope.filters.myFilters);\n }\n $el.find('.my-filter-name').addClass(\"hidden\");\n return $el.find('.save-filters').show();\n });\n return loadPromise.then(null, function() {\n $loading.finish($el.find(\".new\"));\n return $confirm.notify(\"error\", \"Error loading custom filters\");\n });\n });\n return promise.then(null, function() {\n $loading.finish($el.find(\".new\"));\n $el.find(\".my-filter-name\").val(newFilter).focus().select();\n return $confirm.notify(\"error\", \"Filter not saved\");\n });\n } else if (event.keyCode === 27) {\n $el.find('.my-filter-name').val('');\n $el.find('.my-filter-name').addClass(\"hidden\");\n return $el.find('.save-filters').show();\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssuesFilters\", [\"$log\", \"$tgLocation\", \"$tgResources\", \"$tgConfirm\", \"$tgLoading\", \"$tgTemplate\", IssuesFiltersDirective]);\n\n IssueStatusInlineEditionDirective = function($repo, $template) {\n\n /*\n Print the status of an Issue and a popover to change it.\n - tg-issue-status-inline-edition: The issue\n \n Example:\n \n div.status(tg-issue-status-inline-edition=\"issue\")\n a.issue-status(href=\"\")\n \n NOTE: This directive need 'issueStatusById' and 'project'.\n */\n var link, selectionTemplate, updateIssueStatus;\n selectionTemplate = $template.get(\"issue/issue-status-inline-edition-selection.html\", true);\n updateIssueStatus = function($el, issue, issueStatusById) {\n var issueStatusDom, issueStatusDomParent, status;\n issueStatusDomParent = $el.find(\".issue-status\");\n issueStatusDom = $el.find(\".issue-status .issue-status-bind\");\n status = issueStatusById[issue.status];\n if (status) {\n issueStatusDom.text(status.name);\n issueStatusDom.prop(\"title\", status.name);\n return issueStatusDomParent.css('color', status.color);\n }\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, issue;\n $ctrl = $el.controller();\n issue = $scope.$eval($attrs.tgIssueStatusInlineEdition);\n $el.on(\"click\", \".issue-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n issue.status = target.data(\"status-id\");\n $el.find(\".pop-status\").popover().close();\n updateIssueStatus($el, issue, $scope.issueStatusById);\n return $scope.$apply(function() {\n return $repo.save(issue).then;\n });\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n $el.append(selectionTemplate({\n 'statuses': project.issue_statuses\n }));\n updateIssueStatus($el, issue, $scope.issueStatusById);\n if (project.my_permissions.indexOf(\"modify_issue\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$watch($attrs.tgIssueStatusInlineEdition, (function(_this) {\n return function(val) {\n return updateIssueStatus($el, val, $scope.issueStatusById);\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssueStatusInlineEdition\", [\"$tgRepo\", \"$tgTemplate\", IssueStatusInlineEditionDirective]);\n\n IssueAssignedToInlineEditionDirective = function($repo, $rootscope, popoverService) {\n var link, template;\n template = _.template(\"\\\" alt=\\\"<%- name %>\\\"/>\\n
<%- name %>
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, issue, updateIssue;\n updateIssue = function(issue) {\n var ctx, member;\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = $scope.usersById[issue.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name_display;\n }\n $el.find(\".avatar\").html(template(ctx));\n return $el.find(\".issue-assignedto\").attr('title', ctx.name);\n };\n $ctrl = $el.controller();\n issue = $scope.$eval($attrs.tgIssueAssignedToInlineEdition);\n updateIssue(issue);\n $el.on(\"click\", \".issue-assignedto\", function(event) {\n return $rootscope.$broadcast(\"assigned-to:add\", issue);\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_issue\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$on(\"assigned-to:added\", (function(_this) {\n return function(ctx, userId, updatedIssue) {\n if (updatedIssue.id === issue.id) {\n updatedIssue.assigned_to = userId;\n $repo.save(updatedIssue);\n return updateIssue(updatedIssue);\n }\n };\n })(this));\n $scope.$watch($attrs.tgIssueAssignedToInlineEdition, (function(_this) {\n return function(val) {\n return updateIssue(val);\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssueAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", IssueAssignedToInlineEditionDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"memberships\", id);\n };\n service.list = function(projectId, filters, enablePagination) {\n var options, params;\n if (enablePagination == null) {\n enablePagination = true;\n }\n params = {\n project: projectId\n };\n params = _.extend({}, params, filters || {});\n if (enablePagination) {\n return $repo.queryPaginated(\"memberships\", params);\n }\n return $repo.queryMany(\"memberships\", params, options = {\n enablePagination: enablePagination\n });\n };\n service.listByUser = function(userId, filters) {\n var params;\n params = {\n user: userId\n };\n params = _.extend({}, params, filters || {});\n return $repo.queryPaginated(\"memberships\", params);\n };\n service.resendInvitation = function(id) {\n var url;\n url = $urls.resolve(\"memberships\");\n return $http.post(url + \"/\" + id + \"/resend_invitation\", {});\n };\n service.bulkCreateMemberships = function(projectId, data, invitation_extra_text) {\n var params, url;\n url = $urls.resolve(\"bulk-create-memberships\");\n params = {\n project_id: projectId,\n bulk_memberships: data,\n invitation_extra_text: invitation_extra_text\n };\n return $http.post(url, params);\n };\n return function(instance) {\n return instance.memberships = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgMembershipsResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/project-profile.coffee\n */\n\n(function() {\n var CsvExporterController, CsvExporterIssuesController, CsvExporterTasksController, CsvExporterUserstoriesController, ProjectDefaultValuesDirective, ProjectExportDirective, ProjectModulesDirective, ProjectProfileController, ProjectProfileDirective, bindOnce, debounce, groupBy, joinStr, mixOf, module, taiga, toString, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAdmin\");\n\n ProjectProfileController = (function(superClass) {\n extend(ProjectProfileController, superClass);\n\n ProjectProfileController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function ProjectProfileController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appTitle = appTitle;\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Project profile - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:loaded\", (function(_this) {\n return function() {\n return _this.appTitle.set(\"Project profile - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n }\n\n ProjectProfileController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.pointsList = _.sortBy(project.points, \"order\");\n _this.scope.usStatusList = _.sortBy(project.us_statuses, \"order\");\n _this.scope.taskStatusList = _.sortBy(project.task_statuses, \"order\");\n _this.scope.prioritiesList = _.sortBy(project.priorities, \"order\");\n _this.scope.severitiesList = _.sortBy(project.severities, \"order\");\n _this.scope.issueTypesList = _.sortBy(project.issue_types, \"order\");\n _this.scope.issueStatusList = _.sortBy(project.issue_statuses, \"order\");\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ProjectProfileController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n ProjectProfileController.prototype.openDeleteLightbox = function() {\n return this.rootscope.$broadcast(\"deletelightbox:new\", this.scope.project);\n };\n\n return ProjectProfileController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectProfileController\", ProjectProfileController);\n\n ProjectProfileDirective = function($repo, $confirm, $loading, $navurls, $location) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.save($scope.project);\n promise.then(function() {\n var newUrl;\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n newUrl = $navurls.resolve(\"project-admin-project-profile-details\", {\n project: $scope.project.slug\n });\n $location.path(newUrl);\n return $scope.$emit(\"project:loaded\", $scope.project);\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectProfile\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgNavUrls\", \"$tgLocation\", ProjectProfileDirective]);\n\n ProjectDefaultValuesDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.save($scope.project);\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectDefaultValues\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectDefaultValuesDirective]);\n\n ProjectModulesDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit;\n form = $el.find(\"form\").checksley();\n submit = (function(_this) {\n return function() {\n var promise, target;\n if (!form.validate()) {\n return;\n }\n target = angular.element(\".admin-functionalities a.button-green\");\n $loading.start(target);\n promise = $repo.save($scope.project);\n promise.then(function() {\n $loading.finish(target);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:loaded\", $scope.project);\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\n return $confirm.notify(\"error\", data._error_message);\n });\n };\n })(this);\n $el.on(\"submit\", \"form\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"click\", \".admin-functionalities a.button-green\", function(event) {\n event.preventDefault();\n return submit();\n });\n $scope.$watch(\"isVideoconferenceActivated\", function(isVideoconferenceActivated) {\n if (isVideoconferenceActivated) {\n return $el.find(\".videoconference-attributes\").removeClass(\"hidden\");\n } else {\n $el.find(\".videoconference-attributes\").addClass(\"hidden\");\n $scope.project.videoconferences = null;\n return $scope.project.videoconferences_salt = \"\";\n }\n });\n return $scope.$watch(\"project\", function(project) {\n if (project.videoconferences != null) {\n return $scope.isVideoconferenceActivated = true;\n } else {\n return $scope.isVideoconferenceActivated = false;\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectModules\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectModulesDirective]);\n\n ProjectExportDirective = function($window, $rs, $confirm) {\n var link;\n link = function($scope, $el, $attrs) {\n var buttonsEl, hideButtons, hideResult, hideSpinner, resultEl, resultMessageEl, resultTitleEl, setAsyncMessage, setAsyncTitle, setLoadingMessage, setLoadingTitle, setSyncMessage, setSyncTitle, showButtons, showErrorMode, showExportResultAsyncMode, showExportResultSyncMode, showLoadingMode, showResult, showSpinner, spinnerEl;\n buttonsEl = $el.find(\".admin-project-export-buttons\");\n showButtons = function() {\n return buttonsEl.removeClass(\"hidden\");\n };\n hideButtons = function() {\n return buttonsEl.addClass(\"hidden\");\n };\n resultEl = $el.find(\".admin-project-export-result\");\n showResult = function() {\n return resultEl.removeClass(\"hidden\");\n };\n hideResult = function() {\n return resultEl.addClass(\"hidden\");\n };\n spinnerEl = $el.find(\".spin\");\n showSpinner = function() {\n return spinnerEl.removeClass(\"hidden\");\n };\n hideSpinner = function() {\n return spinnerEl.addClass(\"hidden\");\n };\n resultTitleEl = $el.find(\".result-title\");\n setLoadingTitle = function() {\n return resultTitleEl.html(\"We are generating your dump file\");\n };\n setAsyncTitle = function() {\n return resultTitleEl.html(\"We are generating your dump file\");\n };\n setSyncTitle = function() {\n return resultTitleEl.html(\"Your dump file is ready!\");\n };\n resultMessageEl = $el.find(\".result-message \");\n setLoadingMessage = function() {\n return resultMessageEl.html(\"Please don't close this page.\");\n };\n setAsyncMessage = function() {\n return resultMessageEl.html(\"We will send you an email when ready.\");\n };\n setSyncMessage = function(url) {\n return resultMessageEl.html(\"If the download doesn't start automatically click here.\");\n };\n showLoadingMode = function() {\n showSpinner();\n setLoadingTitle();\n setLoadingMessage();\n hideButtons();\n return showResult();\n };\n showExportResultAsyncMode = function() {\n hideSpinner();\n setAsyncTitle();\n return setAsyncMessage();\n };\n showExportResultSyncMode = function(url) {\n hideSpinner();\n setSyncTitle();\n return setSyncMessage(url);\n };\n showErrorMode = function() {\n hideSpinner();\n hideResult();\n return showButtons();\n };\n return $el.on(\"click\", \"a.button-export\", debounce(2000, (function(_this) {\n return function(event) {\n var onError, onSuccess;\n event.preventDefault();\n onSuccess = function(result) {\n var dumpUrl;\n if (result.status === 202) {\n return showExportResultAsyncMode();\n } else {\n dumpUrl = result.data.url;\n showExportResultSyncMode(dumpUrl);\n return $window.open(dumpUrl, \"_blank\");\n }\n };\n onError = function(result) {\n var errorMsg, ref;\n showErrorMode();\n errorMsg = \"Our oompa loompas have some problems generasting your dump. Please try again. \";\n if (result.status === 429) {\n errorMsg = \"Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. \";\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = \"Our oompa loompas have some problems generasting your dump: \" + result.data._error_message;\n }\n return $confirm.notify(\"error\", errorMsg);\n };\n showLoadingMode();\n return $rs.projects[\"export\"]($scope.projectId).then(onSuccess, onError);\n };\n })(this)));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectExport\", [\"$window\", \"$tgResources\", \"$tgConfirm\", ProjectExportDirective]);\n\n CsvExporterController = (function(superClass) {\n extend(CsvExporterController, superClass);\n\n CsvExporterController.$inject = [\"$scope\", \"$rootScope\", \"$tgUrls\", \"$tgConfirm\", \"$tgResources\"];\n\n function CsvExporterController(scope, rootscope, urls, confirm, rs) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.urls = urls;\n this.confirm = confirm;\n this.rs = rs;\n this._generateUuid = bind(this._generateUuid, this);\n this.setCsvUuid = bind(this.setCsvUuid, this);\n this.rootscope.$on(\"project:loaded\", this.setCsvUuid);\n this.scope.$watch(\"csvUuid\", (function(_this) {\n return function(value) {\n if (value) {\n return _this.scope.csvUrl = _this.urls.resolveAbsolute(_this.type + \"-csv\", value);\n } else {\n return _this.scope.csvUrl = \"\";\n }\n };\n })(this));\n }\n\n CsvExporterController.prototype.setCsvUuid = function() {\n return this.scope.csvUuid = this.scope.project[this.type + \"_csv_uuid\"];\n };\n\n CsvExporterController.prototype._generateUuid = function(finish) {\n var promise;\n promise = this.rs.projects[\"regenerate_\" + this.type + \"_csv_uuid\"](this.scope.projectId);\n promise.then((function(_this) {\n return function(data) {\n var ref;\n return _this.scope.csvUuid = (ref = data.data) != null ? ref.uuid : void 0;\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n promise[\"finally\"](function() {\n return finish();\n });\n return promise;\n };\n\n CsvExporterController.prototype.regenerateUuid = function() {\n var subtitle, title;\n if (this.scope.csvUuid) {\n title = \"Change URL\";\n subtitle = \"You going to change the CSV data access url. The previous url will be disabled. Are you sure?\";\n return this.confirm.ask(title, subtitle).then(this._generateUuid);\n } else {\n return this._generateUuid(_.identity);\n }\n };\n\n return CsvExporterController;\n\n })(taiga.Controller);\n\n CsvExporterUserstoriesController = (function(superClass) {\n extend(CsvExporterUserstoriesController, superClass);\n\n function CsvExporterUserstoriesController() {\n return CsvExporterUserstoriesController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterUserstoriesController.prototype.type = \"userstories\";\n\n return CsvExporterUserstoriesController;\n\n })(CsvExporterController);\n\n CsvExporterTasksController = (function(superClass) {\n extend(CsvExporterTasksController, superClass);\n\n function CsvExporterTasksController() {\n return CsvExporterTasksController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterTasksController.prototype.type = \"tasks\";\n\n return CsvExporterTasksController;\n\n })(CsvExporterController);\n\n CsvExporterIssuesController = (function(superClass) {\n extend(CsvExporterIssuesController, superClass);\n\n function CsvExporterIssuesController() {\n return CsvExporterIssuesController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterIssuesController.prototype.type = \"issues\";\n\n return CsvExporterIssuesController;\n\n })(CsvExporterController);\n\n module.controller(\"CsvExporterUserstoriesController\", CsvExporterUserstoriesController);\n\n module.controller(\"CsvExporterTasksController\", CsvExporterTasksController);\n\n module.controller(\"CsvExporterIssuesController\", CsvExporterIssuesController);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/project-profile.coffee\n */\n\n(function() {\n var ColorSelectionDirective, ProjectCustomAttributesController, ProjectCustomAttributesDirective, ProjectValuesController, ProjectValuesDirective, ProjectValuesSectionController, bindOnce, debounce, groupBy, joinStr, mixOf, module, taiga, toString, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAdmin\");\n\n ProjectValuesSectionController = (function(superClass) {\n extend(ProjectValuesSectionController, superClass);\n\n ProjectValuesSectionController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function ProjectValuesSectionController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appTitle = appTitle;\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Project values - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n ProjectValuesSectionController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ProjectValuesSectionController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n return ProjectValuesSectionController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectValuesSectionController\", ProjectValuesSectionController);\n\n ProjectValuesController = (function(superClass) {\n extend(ProjectValuesController, superClass);\n\n ProjectValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\"];\n\n function ProjectValuesController(scope, rootscope, repo, confirm, rs) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.moveValue = bind(this.moveValue, this);\n this.loadValues = bind(this.loadValues, this);\n this.scope.$on(\"admin:project-values:move\", this.moveValue);\n this.rootscope.$on(\"project:loaded\", this.loadValues);\n }\n\n ProjectValuesController.prototype.loadValues = function() {\n return this.rs[this.scope.resource].listValues(this.scope.projectId, this.scope.type).then((function(_this) {\n return function(values) {\n _this.scope.values = values;\n _this.scope.maxValueOrder = _.max(values, \"order\").order;\n return values;\n };\n })(this));\n };\n\n ProjectValuesController.prototype.moveValue = function(ctx, itemValue, itemIndex) {\n var r, values;\n values = this.scope.values;\n r = values.indexOf(itemValue);\n values.splice(r, 1);\n values.splice(itemIndex, 0, itemValue);\n _.each(values, function(value, index) {\n return value.order = index;\n });\n return this.repo.saveAll(values);\n };\n\n return ProjectValuesController;\n\n })(taiga.Controller);\n\n module.controller(\"ProjectValuesController\", ProjectValuesController);\n\n ProjectValuesDirective = function($log, $repo, $confirm, $location, animationFrame) {\n var link, linkDragAndDrop, linkValue;\n linkDragAndDrop = function($scope, $el, $attrs) {\n var itemEl, newParentScope, oldParentScope, tdom;\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el.find(\".sortable\");\n tdom.sortable({\n handle: \".row.table-main.visualization\",\n dropOnEmpty: true,\n connectWith: \".project-values-body\",\n revert: 400,\n axis: \"y\"\n });\n tdom.on(\"sortstop\", function(event, ui) {\n var itemIndex, itemValue;\n itemEl = ui.item;\n itemValue = itemEl.scope().value;\n itemIndex = itemEl.index();\n return $scope.$broadcast(\"admin:project-values:move\", itemValue, itemIndex);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n linkValue = function($scope, $el, $attrs) {\n var $ctrl, cancel, goToBottomList, initializeNewValue, saveNewValue, saveValue, valueType;\n $ctrl = $el.controller();\n valueType = $attrs.type;\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"is_closed\": false,\n \"is_archived\": false\n };\n };\n initializeNewValue();\n goToBottomList = (function(_this) {\n return function(focus) {\n var table;\n if (focus == null) {\n focus = false;\n }\n table = $el.find(\".table-main\");\n $(document.body).scrollTop(table.offset().top + table.height());\n if (focus) {\n return $el.find(\".new-value input:visible\").first().focus();\n }\n };\n })(this);\n saveValue = function(target) {\n var form, formEl, promise, value;\n formEl = target.parents(\"form\");\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n value = formEl.scope().value;\n promise = $repo.save(value);\n promise.then((function(_this) {\n return function() {\n var row;\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n return row.siblings(\".visualization\").removeClass('hidden');\n };\n })(this));\n return promise.then(null, function(data) {\n return form.setErrors(data);\n });\n };\n saveNewValue = function(target) {\n var form, formEl, promise;\n formEl = target.parents(\"form\");\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n $scope.newValue.project = $scope.project.id;\n $scope.newValue.order = $scope.maxValueOrder ? $scope.maxValueOrder + 1 : 1;\n promise = $repo.create(valueType, $scope.newValue);\n promise.then((function(_this) {\n return function(data) {\n target.addClass(\"hidden\");\n $scope.values.push(data);\n $scope.maxValueOrder = data.order;\n return initializeNewValue();\n };\n })(this));\n return promise.then(null, function(data) {\n return form.setErrors(data);\n });\n };\n cancel = function(target) {\n var formEl, row, value;\n row = target.parents(\".row.table-main\");\n formEl = target.parents(\"form\");\n value = formEl.scope().value;\n return $scope.$apply(function() {\n row.addClass(\"hidden\");\n value.revert();\n return row.siblings(\".visualization\").removeClass('hidden');\n });\n };\n $el.on(\"click\", \".show-add-new\", function(event) {\n event.preventDefault();\n $el.find(\".new-value\").removeClass('hidden');\n return goToBottomList(true);\n });\n $el.on(\"click\", \".add-new\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n }));\n $el.on(\"click\", \".delete-new\", function(event) {\n event.preventDefault();\n $el.find(\".new-value\").addClass(\"hidden\");\n return initializeNewValue();\n });\n $el.on(\"click\", \".edit-value\", function(event) {\n var editionRow, row, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n editionRow = row.siblings(\".edition\");\n editionRow.removeClass('hidden');\n return editionRow.find('input:visible').first().focus().select();\n });\n $el.on(\"keyup\", \".edition input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n return saveValue(target);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n return cancel(target);\n }\n });\n $el.on(\"keyup\", \".new-value input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n } else if (event.keyCode === 27) {\n $el.find(\".new-value\").addClass(\"hidden\");\n return initializeNewValue();\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return saveValue(target);\n });\n $el.on(\"click\", \".cancel\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return cancel(target);\n });\n return $el.on(\"click\", \".delete-value\", function(event) {\n var choices, formEl, replacement, subtitle, target, title, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.parents(\"form\");\n value = formEl.scope().value;\n choices = {};\n _.each($scope.values, function(option) {\n if (value.id !== option.id) {\n return choices[option.id] = option.name;\n }\n });\n title = \"Delete value\";\n subtitle = value.name;\n replacement = \"All items with this value will be changed to\";\n if (_.keys(choices).length === 0) {\n return $confirm.error(\"You can't delete all values.\");\n }\n return $confirm.askChoice(title, subtitle, choices, replacement).then(function(response) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadValues()[\"finally\"](function() {\n return response.finish();\n });\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n return $repo.remove(value, {\n \"moveTo\": response.selected\n }).then(onSucces, onError);\n });\n });\n };\n link = function($scope, $el, $attrs) {\n linkDragAndDrop($scope, $el, $attrs);\n linkValue($scope, $el, $attrs);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectValues\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"animationFrame\", ProjectValuesDirective]);\n\n ColorSelectionDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var $ctrl;\n $ctrl = $el.controller();\n $scope.$watch($attrs.ngModel, function(element) {\n return $scope.color = element.color;\n });\n $el.on(\"click\", \".current-color\", function(event) {\n var body, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n $el.find(\".select-color\").hide();\n target.siblings(\".select-color\").show();\n body = angular.element(\"body\");\n return body.on(\"click\", (function(_this) {\n return function(event) {\n if (angular.element(event.target).parent(\".select-color\").length === 0) {\n $el.find(\".select-color\").hide();\n return body.unbind(\"click\");\n }\n };\n })(this));\n });\n $el.on(\"click\", \".select-color .color\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n $scope.$apply(function() {\n return $model.$modelValue.color = target.data(\"color\");\n });\n return $el.find(\".select-color\").hide();\n });\n $el.on(\"click\", \".select-color .selected-color\", function(event) {\n event.preventDefault();\n $scope.$apply(function() {\n return $model.$modelValue.color = $scope.color;\n });\n return $el.find(\".select-color\").hide();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgColorSelection\", ColorSelectionDirective);\n\n ProjectCustomAttributesController = (function(superClass) {\n extend(ProjectCustomAttributesController, superClass);\n\n ProjectCustomAttributesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function ProjectCustomAttributesController(scope, rootscope, repo, rs, params, q, location, navUrls, appTitle) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appTitle = appTitle;\n this.moveCustomAttributes = bind(this.moveCustomAttributes, this);\n this.deleteCustomAttribute = bind(this.deleteCustomAttribute, this);\n this.saveCustomAttribute = bind(this.saveCustomAttribute, this);\n this.createCustomAttribute = bind(this.createCustomAttribute, this);\n this.loadCustomAttributes = bind(this.loadCustomAttributes, this);\n this.scope.project = {};\n this.rootscope.$on(\"project:loaded\", (function(_this) {\n return function() {\n _this.loadCustomAttributes();\n return _this.appTitle.set(\"Project Custom Attributes - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n }\n\n ProjectCustomAttributesController.prototype.loadCustomAttributes = function() {\n return this.rs.customAttributes[this.scope.type].list(this.scope.projectId).then((function(_this) {\n return function(customAttributes) {\n _this.scope.customAttributes = customAttributes;\n _this.scope.maxOrder = _.max(customAttributes, \"order\").order;\n return customAttributes;\n };\n })(this));\n };\n\n ProjectCustomAttributesController.prototype.createCustomAttribute = function(attrValues) {\n return this.repo.create(\"custom-attributes/\" + this.scope.type, attrValues);\n };\n\n ProjectCustomAttributesController.prototype.saveCustomAttribute = function(attrModel) {\n return this.repo.save(attrModel);\n };\n\n ProjectCustomAttributesController.prototype.deleteCustomAttribute = function(attrModel) {\n return this.repo.remove(attrModel);\n };\n\n ProjectCustomAttributesController.prototype.moveCustomAttributes = function(attrModel, newIndex) {\n var customAttributes, r;\n customAttributes = this.scope.customAttributes;\n r = customAttributes.indexOf(attrModel);\n customAttributes.splice(r, 1);\n customAttributes.splice(newIndex, 0, attrModel);\n _.each(customAttributes, function(val, idx) {\n return val.order = idx;\n });\n return this.repo.saveAll(customAttributes);\n };\n\n return ProjectCustomAttributesController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectCustomAttributesController\", ProjectCustomAttributesController);\n\n ProjectCustomAttributesDirective = function($log, $confirm, animationFrame) {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl, cancelCreate, cancelUpdate, create, deleteCustomAttribute, hideAddButton, hideCancelButton, hideCreateForm, hideEditForm, resetNewAttr, revertChangesInCustomAttribute, showAddButton, showCancelButton, showCreateForm, showEditForm, sortableEl, update;\n $ctrl = $el.controller();\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n sortableEl = $el.find(\".js-sortable\");\n sortableEl.sortable({\n handle: \".js-view-custom-field\",\n dropOnEmpty: true,\n revert: 400,\n axis: \"y\"\n });\n sortableEl.on(\"sortstop\", function(event, ui) {\n var itemAttr, itemEl, itemIndex;\n itemEl = ui.item;\n itemAttr = itemEl.scope().attr;\n itemIndex = itemEl.index();\n return $ctrl.moveCustomAttributes(itemAttr, itemIndex);\n });\n showCreateForm = function() {\n $el.find(\".js-new-custom-field\").removeClass(\"hidden\");\n return $el.find(\".js-new-custom-field input:visible\").first().focus();\n };\n hideCreateForm = function() {\n return $el.find(\".js-new-custom-field\").addClass(\"hidden\");\n };\n showAddButton = function() {\n return $el.find(\".js-add-custom-field-button\").removeClass(\"hidden\");\n };\n hideAddButton = function() {\n return $el.find(\".js-add-custom-field-button\").addClass(\"hidden\");\n };\n showCancelButton = function() {\n return $el.find(\".js-cancel-new-custom-field-button\").removeClass(\"hidden\");\n };\n hideCancelButton = function() {\n return $el.find(\".js-cancel-new-custom-field-button\").addClass(\"hidden\");\n };\n resetNewAttr = function() {\n return $scope.newAttr = {};\n };\n create = function(formEl) {\n var attr, form, onError, onSucces;\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n onSucces = (function(_this) {\n return function() {\n $ctrl.loadCustomAttributes();\n hideCreateForm();\n resetNewAttr();\n return $confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function(data) {\n return form.setErrors(data);\n };\n })(this);\n attr = $scope.newAttr;\n attr.project = $scope.projectId;\n attr.order = $scope.maxOrder ? $scope.maxOrder + 1 : 1;\n return $ctrl.createCustomAttribute(attr).then(onSucces, onError);\n };\n cancelCreate = function() {\n hideCreateForm();\n return resetNewAttr();\n };\n $scope.$watch(\"customAttributes\", function(customAttributes) {\n if (!customAttributes) {\n return;\n }\n if (customAttributes.length === 0) {\n hideCancelButton();\n hideAddButton();\n return showCreateForm();\n } else {\n hideCreateForm();\n showAddButton();\n return showCancelButton();\n }\n });\n $el.on(\"click\", \".js-add-custom-field-button\", function(event) {\n event.preventDefault();\n return showCreateForm();\n });\n $el.on(\"click\", \".js-create-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return create(formEl);\n }));\n $el.on(\"click\", \".js-cancel-new-custom-field-button\", function(event) {\n event.preventDefault();\n return cancelCreate();\n });\n $el.on(\"keyup\", \".js-new-custom-field input\", function(event) {\n var formEl, target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return create(formEl);\n } else if (event.keyCode === 27) {\n return cancelCreate();\n }\n });\n showEditForm = function(formEl) {\n formEl.find(\".js-view-custom-field\").addClass(\"hidden\");\n formEl.find(\".js-edit-custom-field\").removeClass(\"hidden\");\n return formEl.find(\".js-edit-custom-field input:visible\").first().focus().select();\n };\n hideEditForm = function(formEl) {\n formEl.find(\".js-edit-custom-field\").addClass(\"hidden\");\n return formEl.find(\".js-view-custom-field\").removeClass(\"hidden\");\n };\n revertChangesInCustomAttribute = function(formEl) {\n return $scope.$apply(function() {\n return formEl.scope().attr.revert();\n });\n };\n update = function(formEl) {\n var attr, form, onError, onSucces;\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n onSucces = (function(_this) {\n return function() {\n $ctrl.loadCustomAttributes();\n hideEditForm(formEl);\n return $confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function(data) {\n return form.setErrors(data);\n };\n })(this);\n attr = formEl.scope().attr;\n return $ctrl.saveCustomAttribute(attr).then(onSucces, onError);\n };\n cancelUpdate = function(formEl) {\n hideEditForm(formEl);\n return revertChangesInCustomAttribute(formEl);\n };\n $el.on(\"click\", \".js-edit-custom-field-button\", function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return showEditForm(formEl);\n });\n $el.on(\"click\", \".js-update-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return update(formEl);\n }));\n $el.on(\"click\", \".js-cancel-edit-custom-field-button\", function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return cancelUpdate(formEl);\n });\n $el.on(\"keyup\", \".js-edit-custom-field input\", function(event) {\n var formEl, target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return update(formEl);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return cancelUpdate(formEl);\n }\n });\n deleteCustomAttribute = function(formEl) {\n var attr, message, subtitle, title;\n attr = formEl.scope().attr;\n title = \"Delete custom attribute\";\n subtitle = \"Remeber that all values in this custom field will be deleted.
Are you sure you want to continue?\";\n message = attr.name;\n return $confirm.ask(title, subtitle, message).then(function(finish) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadCustomAttributes()[\"finally\"](function() {\n return finish();\n });\n };\n onError = function() {\n finish(false);\n return $confirm.notify(\"error\", null, \"We have not been able to delete '\" + message + \"'.\");\n };\n return $ctrl.deleteCustomAttribute(attr).then(onSucces, onError);\n });\n };\n return $el.on(\"click\", \".js-delete-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return deleteCustomAttribute(formEl);\n }));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectCustomAttributes\", [\"$log\", \"$tgConfirm\", \"animationFrame\", ProjectCustomAttributesDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"roles\", id);\n };\n service.list = function(projectId) {\n return $repo.queryMany(\"roles\", {\n project: projectId\n });\n };\n return function(instance) {\n return instance.roles = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgRolesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/third-parties.coffee\n */\n\n(function() {\n var BitbucketController, BitbucketWebhooksDirective, GithubController, GithubWebhooksDirective, GitlabController, GitlabWebhooksDirective, NewWebhookDirective, SelectInputText, ValidOriginIpsDirective, WebhookDirective, WebhooksController, bindMethods, debounce, mixOf, module, taiga, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindMethods = this.taiga.bindMethods;\n\n debounce = this.taiga.debounce;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaAdmin\");\n\n WebhooksController = (function(superClass) {\n extend(WebhooksController, superClass);\n\n WebhooksController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function WebhooksController(scope, repo, rs, params, location, navUrls, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.location = location;\n this.navUrls = navUrls;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Webhooks\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Webhooks - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"webhooks:reload\", this.loadWebhooks);\n }\n\n WebhooksController.prototype.loadWebhooks = function() {\n return this.rs.webhooks.list(this.scope.projectId).then((function(_this) {\n return function(webhooks) {\n return _this.scope.webhooks = webhooks;\n };\n })(this));\n };\n\n WebhooksController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n WebhooksController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadWebhooks();\n };\n })(this));\n };\n\n return WebhooksController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"WebhooksController\", WebhooksController);\n\n WebhookDirective = function($rs, $repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var cancel, openHistory, save, showEditMode, showVisualizationMode, updateLogs, updateShowHideHistoryText, webhook;\n webhook = $scope.$eval($attrs.tgWebhook);\n updateLogs = function() {\n return $rs.webhooklogs.list(webhook.id).then((function(_this) {\n return function(webhooklogs) {\n var i, len, log, ref;\n for (i = 0, len = webhooklogs.length; i < len; i++) {\n log = webhooklogs[i];\n log.validStatus = (200 <= (ref = log.status) && ref < 300);\n log.prettySentHeaders = _.map(_.pairs(log.request_headers), function(arg) {\n var header, value;\n header = arg[0], value = arg[1];\n return header + \": \" + value;\n }).join(\"\\n\");\n log.prettySentData = JSON.stringify(log.request_data);\n log.prettyDate = moment(log.created).format(\"DD MMM YYYY [at] hh:mm:ss\");\n }\n webhook.logs_counter = webhooklogs.length;\n webhook.logs = webhooklogs;\n return updateShowHideHistoryText();\n };\n })(this));\n };\n updateShowHideHistoryText = function() {\n var historyElement, textElement;\n textElement = $el.find(\".toggle-history\");\n historyElement = textElement.parents(\".single-webhook-wrapper\").find(\".webhooks-history\");\n if (historyElement.hasClass(\"open\")) {\n return textElement.text(\"(Hide history)\");\n } else {\n return textElement.text(\"(Show history)\");\n }\n };\n showVisualizationMode = function() {\n $el.find(\".edition-mode\").addClass(\"hidden\");\n return $el.find(\".visualization-mode\").removeClass(\"hidden\");\n };\n showEditMode = function() {\n $el.find(\".visualization-mode\").addClass(\"hidden\");\n return $el.find(\".edition-mode\").removeClass(\"hidden\");\n };\n openHistory = function() {\n return $el.find(\".webhooks-history\").addClass(\"open\");\n };\n cancel = function() {\n showVisualizationMode();\n return $scope.$apply(function() {\n return webhook.revert();\n });\n };\n save = debounce(2000, function(target) {\n var form, promise;\n form = target.parents(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n promise = $repo.save(webhook);\n promise.then((function(_this) {\n return function() {\n return showVisualizationMode();\n };\n })(this));\n return promise.then(null, function(data) {\n $confirm.notify(\"error\");\n return form.setErrors(data);\n });\n });\n $el.on(\"click\", \".test-webhook\", function() {\n openHistory();\n return $rs.webhooks.test(webhook.id).then((function(_this) {\n return function() {\n return updateLogs();\n };\n })(this));\n });\n $el.on(\"click\", \".edit-webhook\", function() {\n return showEditMode();\n });\n $el.on(\"click\", \".cancel-existing\", function() {\n return cancel();\n });\n $el.on(\"click\", \".edit-existing\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return save(target);\n });\n $el.on(\"keyup\", \".edition-mode input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n return save(target);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n return cancel(target);\n }\n });\n $el.on(\"click\", \".delete-webhook\", function() {\n var message, title;\n title = \"Delete webhook\";\n message = \"Webhook '\" + webhook.name + \"'\";\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(finish) {\n var onError, onSucces;\n onSucces = function() {\n finish();\n return $scope.$emit(\"webhooks:reload\");\n };\n onError = function() {\n finish(false);\n return $confirm.notify(\"error\");\n };\n return $repo.remove(webhook).then(onSucces, onError);\n };\n })(this));\n });\n $el.on(\"click\", \".toggle-history\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if ((webhook.logs == null) || webhook.logs.length === 0) {\n return updateLogs().then(function() {\n return timeout(0, function() {\n $el.find(\".webhooks-history\").toggleClass(\"open\");\n return updateShowHideHistoryText();\n });\n });\n } else {\n $el.find(\".webhooks-history\").toggleClass(\"open\");\n return $scope.$apply(function() {\n return updateShowHideHistoryText();\n });\n }\n });\n $el.on(\"click\", \".history-single\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n target.toggleClass(\"history-single-open\");\n return target.siblings(\".history-single-response\").toggleClass(\"open\");\n });\n return $el.on(\"click\", \".resend-request\", function(event) {\n var log, target;\n target = angular.element(event.currentTarget);\n log = target.data(\"log\");\n return $rs.webhooklogs.resend(log).then((function(_this) {\n return function() {\n return updateLogs();\n };\n })(this));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgWebhook\", [\"$tgResources\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", WebhookDirective]);\n\n NewWebhookDirective = function($rs, $repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var addWebhookDOMNode, formDOMNode, initializeNewValue, save, webhook;\n webhook = $scope.$eval($attrs.tgWebhook);\n formDOMNode = $el.find(\".new-webhook-form\");\n addWebhookDOMNode = $el.find(\".add-webhook\");\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"url\": \"\",\n \"key\": \"\"\n };\n };\n initializeNewValue();\n $scope.$watch(\"webhooks\", function(webhooks) {\n if (webhooks != null) {\n if (webhooks.length === 0) {\n formDOMNode.removeClass(\"hidden\");\n addWebhookDOMNode.addClass(\"hidden\");\n return formDOMNode.find(\"input\")[0].focus();\n } else {\n formDOMNode.addClass(\"hidden\");\n return addWebhookDOMNode.removeClass(\"hidden\");\n }\n }\n });\n save = debounce(2000, function() {\n var form, promise;\n form = formDOMNode.checksley();\n if (!form.validate()) {\n return;\n }\n $scope.newValue.project = $scope.project.id;\n promise = $repo.create(\"webhooks\", $scope.newValue);\n promise.then((function(_this) {\n return function() {\n $scope.$emit(\"webhooks:reload\");\n return initializeNewValue();\n };\n })(this));\n return promise.then(null, function(data) {\n $confirm.notify(\"error\");\n return form.setErrors(data);\n });\n });\n formDOMNode.on(\"click\", \".add-new\", function(event) {\n event.preventDefault();\n return save();\n });\n formDOMNode.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return save();\n }\n });\n formDOMNode.on(\"click\", \".cancel-new\", function(event) {\n return $scope.$apply(function() {\n return initializeNewValue();\n });\n });\n return addWebhookDOMNode.on(\"click\", function(event) {\n formDOMNode.removeClass(\"hidden\");\n return formDOMNode.find(\"input\")[0].focus();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgNewWebhook\", [\"$tgResources\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", NewWebhookDirective]);\n\n GithubController = (function(superClass) {\n extend(GithubController, superClass);\n\n GithubController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$appTitle\"];\n\n function GithubController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Github\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Github - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n GithubController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"github\").then((function(_this) {\n return function(github) {\n return _this.scope.github = github;\n };\n })(this));\n };\n\n GithubController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n GithubController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n };\n\n return GithubController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"GithubController\", GithubController);\n\n GitlabController = (function(superClass) {\n extend(GitlabController, superClass);\n\n GitlabController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$appTitle\"];\n\n function GitlabController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Gitlab\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Gitlab - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:modules:reload\", (function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n }\n\n GitlabController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"gitlab\").then((function(_this) {\n return function(gitlab) {\n return _this.scope.gitlab = gitlab;\n };\n })(this));\n };\n\n GitlabController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n GitlabController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n };\n\n return GitlabController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"GitlabController\", GitlabController);\n\n BitbucketController = (function(superClass) {\n extend(BitbucketController, superClass);\n\n BitbucketController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$appTitle\"];\n\n function BitbucketController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Bitbucket\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Bitbucket - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:modules:reload\", (function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n }\n\n BitbucketController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"bitbucket\").then((function(_this) {\n return function(bitbucket) {\n return _this.scope.bitbucket = bitbucket;\n };\n })(this));\n };\n\n BitbucketController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n BitbucketController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n };\n\n return BitbucketController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"BitbucketController\", BitbucketController);\n\n SelectInputText = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.on(\"click\", \".select-input-content\", function() {\n $el.find(\"input\").select();\n return $el.find(\".help-copy\").addClass(\"visible\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSelectInputText\", SelectInputText);\n\n GithubWebhooksDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.github, \"github\");\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgGithubWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", GithubWebhooksDirective]);\n\n GitlabWebhooksDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.gitlab, \"gitlab\");\n promise.then(function() {\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgGitlabWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", GitlabWebhooksDirective]);\n\n BitbucketWebhooksDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.bitbucket, \"bitbucket\");\n promise.then(function() {\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBitbucketWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", BitbucketWebhooksDirective]);\n\n ValidOriginIpsDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $ngModel) {\n return $ngModel.$parsers.push(function(value) {\n value = $.trim(value);\n if (value === \"\") {\n return [];\n }\n return value.split(\",\");\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgValidOriginIps\", ValidOriginIpsDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/bind.coffee\n */\n\n(function() {\n var BindHtmlDirective, BindOnceAltDirective, BindOnceBindDirective, BindOnceHrefDirective, BindOnceHtmlDirective, BindOnceRefDirective, BindOnceSrcDirective, BindOnceTitleDirective, BindTitleDirective, bindOnce, module;\n\n bindOnce = this.taiga.bindOnce;\n\n BindOnceBindDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoBind, function(val) {\n return $el.text(val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceHtmlDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoHtml, function(val) {\n return $el.html(val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceRefDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoRef, function(val) {\n return $el.html(\"#\" + val + \" \");\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceSrcDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoSrc, function(val) {\n return $el.attr(\"src\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceHrefDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoHref, function(val) {\n return $el.attr(\"href\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceAltDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoAlt, function(val) {\n return $el.attr(\"alt\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceTitleDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoTitle, function(val) {\n return $el.attr(\"title\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindTitleDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$watch($attrs.tgTitleHtml, function(val) {\n if (val != null) {\n return $el.attr(\"title\", val);\n }\n });\n };\n return {\n link: link\n };\n };\n\n BindHtmlDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$watch($attrs.tgBindHtml, function(val) {\n if (val != null) {\n return $el.html(val);\n }\n });\n };\n return {\n link: link\n };\n };\n\n module = angular.module(\"taigaBase\");\n\n module.directive(\"tgBoBind\", BindOnceBindDirective);\n\n module.directive(\"tgBoHtml\", BindOnceHtmlDirective);\n\n module.directive(\"tgBoRef\", BindOnceRefDirective);\n\n module.directive(\"tgBoSrc\", BindOnceSrcDirective);\n\n module.directive(\"tgBoHref\", BindOnceHrefDirective);\n\n module.directive(\"tgBoAlt\", BindOnceAltDirective);\n\n module.directive(\"tgBoTitle\", BindOnceTitleDirective);\n\n module.directive(\"tgBindTitle\", BindTitleDirective);\n\n module.directive(\"tgBindHtml\", BindHtmlDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/conf.coffee\n */\n\n(function() {\n var ConfigurationService, module;\n\n ConfigurationService = (function() {\n function ConfigurationService() {\n this.config = window.taigaConfig;\n }\n\n ConfigurationService.prototype.get = function(key, defaultValue) {\n if (defaultValue == null) {\n defaultValue = null;\n }\n if (_.has(this.config, key)) {\n return this.config[key];\n }\n return defaultValue;\n };\n\n return ConfigurationService;\n\n })();\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgConfig\", ConfigurationService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/contrib.coffee\n */\n\n(function() {\n var ContribController, module, taigaContribPlugins,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taigaContribPlugins = this.taigaContribPlugins = this.taigaContribPlugins || [];\n\n ContribController = (function(superClass) {\n extend(ContribController, superClass);\n\n ContribController.$inject = [\"$rootScope\", \"$scope\", \"$routeParams\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$appTitle\"];\n\n function ContribController(rootScope, scope, params, repo, rs, confirm, appTitle) {\n var promise;\n this.rootScope = rootScope;\n this.scope = scope;\n this.params = params;\n this.repo = repo;\n this.rs = rs;\n this.confirm = confirm;\n this.appTitle = appTitle;\n this.scope.currentPlugin = _.first(_.where(taigaContribPlugins, {\n \"slug\": this.params.plugin\n }));\n this.scope.pluginTemplate = \"contrib/\" + this.scope.currentPlugin.slug;\n this.scope.projectSlug = this.params.pslug;\n this.scope.adminPlugins = _.where(this.rootScope.contribPlugins, {\n \"type\": \"admin\"\n });\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(_this.scope.project.name);\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n }\n\n ContribController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.$broadcast('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ContribController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n return ContribController;\n\n })(taiga.Controller);\n\n module = angular.module(\"taigaBase\");\n\n module.controller(\"ContribController\", ContribController);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/http.coffee\n */\n\n(function() {\n var HttpService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n HttpService = (function(superClass) {\n extend(HttpService, superClass);\n\n HttpService.$inject = [\"$http\", \"$q\", \"$tgStorage\"];\n\n HttpService.prototype.headers = function() {\n var token;\n token = this.storage.get('token');\n if (token) {\n return {\n \"Authorization\": \"Bearer \" + token\n };\n }\n return {};\n };\n\n function HttpService(http, q, storage) {\n this.http = http;\n this.q = q;\n this.storage = storage;\n HttpService.__super__.constructor.call(this);\n }\n\n HttpService.prototype.request = function(options) {\n options.headers = _.merge({}, options.headers || {}, this.headers());\n if (_.isPlainObject(options.data)) {\n options.data = JSON.stringify(options.data);\n }\n return this.http(options);\n };\n\n HttpService.prototype.get = function(url, params, options) {\n options = _.merge({\n method: \"GET\",\n url: url\n }, options);\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype.post = function(url, data, params, options) {\n options = _.merge({\n method: \"POST\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype.put = function(url, data, params, options) {\n options = _.merge({\n method: \"PUT\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype.patch = function(url, data, params, options) {\n options = _.merge({\n method: \"PATCH\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype[\"delete\"] = function(url, data, params, options) {\n options = _.merge({\n method: \"DELETE\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n return HttpService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgHttp\", HttpService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/i18n.coffee\n */\n\n(function() {\n var I18nDirective, I18nService, bindOnce, defaults, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n defaults = {\n ns: \"app\",\n fallbackLng: \"en\",\n async: false,\n lng: \"en\"\n };\n\n I18nService = (function(superClass) {\n extend(I18nService, superClass);\n\n function I18nService(rootscope, localesEn) {\n this.rootscope = rootscope;\n this.options = _.clone(defaults, true);\n this.options.resStore = {\n en: {\n app: localesEn\n }\n };\n }\n\n I18nService.prototype.setLanguage = function(language) {\n i18n.setLng(language);\n this.rootscope.currentLang = language;\n return this.rootscope.$broadcast(\"i18n:changeLang\", language);\n };\n\n I18nService.prototype.initialize = function() {\n i18n.init(this.options);\n return this.rootscope.t = i18n.t;\n };\n\n I18nService.prototype.t = function(path, opts) {\n return i18n.t(path, opts);\n };\n\n return I18nService;\n\n })(taiga.Service);\n\n I18nDirective = function($rootscope, $i18n) {\n var link;\n link = function($scope, $el, $attrs) {\n var i, len, ns, options, opts, ref, results, v, values;\n values = $attrs.tr.split(\",\");\n options = $attrs.trOpts || '{}';\n opts = $scope.$eval(options);\n results = [];\n for (i = 0, len = values.length; i < len; i++) {\n v = values[i];\n if (v.indexOf(\":\") === -1) {\n results.push($el.html(_.escape($i18n.t(v, opts))));\n } else {\n ref = v.split(\":\"), ns = ref[0], v = ref[1];\n results.push($el.attr(ns, _.escape($i18n.t(v, opts))));\n }\n }\n return results;\n };\n return {\n link: link,\n restrict: \"A\",\n scope: false\n };\n };\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgI18n\", [\"$rootScope\", \"localesEn\", I18nService]);\n\n module.directive(\"tr\", [\"$rootScope\", \"$tgI18n\", I18nDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/location.coffee\n */\n\n(function() {\n var locationFactory, module;\n\n locationFactory = function($location, $route, $rootscope) {\n $location.noreload = function(scope) {\n var lastRoute, un;\n lastRoute = $route.current;\n un = scope.$on(\"$locationChangeSuccess\", function() {\n $route.current = lastRoute;\n return un();\n });\n return $location;\n };\n $location.isInCurrentRouteParams = function(name, value) {\n return $route.current.params[name] === value;\n };\n return $location;\n };\n\n module = angular.module(\"taigaBase\");\n\n module.factory(\"$tgLocation\", [\"$location\", \"$route\", \"$rootScope\", locationFactory]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/model.coffee\n */\n\n(function() {\n var Model, ModelService, module, provider, taiga,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n Model = (function() {\n function Model(name, data, dataTypes) {\n this._attrs = data;\n this._name = name;\n this._dataTypes = dataTypes;\n this.setAttrs(data);\n this.initialize();\n }\n\n Model.prototype.clone = function() {\n var instance;\n instance = new Model(this._name, this._attrs, this._dataTypes);\n instance._modifiedAttrs = this._modifiedAttrs;\n instance._isModified = this._isModified;\n return instance;\n };\n\n Model.prototype.applyCasts = function() {\n var attrName, castMethod, castName, ref, results;\n ref = this._dataTypes;\n results = [];\n for (attrName in ref) {\n castName = ref[attrName];\n castMethod = service.casts[castName];\n if (!castMethod) {\n continue;\n }\n results.push(this._attrs[attrName] = castMethod(this._attrs[attrName]));\n }\n return results;\n };\n\n Model.prototype.getIdAttrName = function() {\n return \"id\";\n };\n\n Model.prototype.getName = function() {\n return this._name;\n };\n\n Model.prototype.getAttrs = function(patch) {\n if (patch == null) {\n patch = false;\n }\n if (this._attrs.version != null) {\n this._modifiedAttrs.version = this._attrs.version;\n }\n if (patch) {\n return _.extend({}, this._modifiedAttrs);\n }\n return _.extend({}, this._attrs, this._modifiedAttrs);\n };\n\n Model.prototype.setAttrs = function(attrs) {\n this._attrs = attrs;\n this._modifiedAttrs = {};\n this.applyCasts();\n return this._isModified = false;\n };\n\n Model.prototype.setAttr = function(name, value) {\n this._modifiedAttrs[name] = value;\n return this._isModified = true;\n };\n\n Model.prototype.initialize = function() {\n var getter, self, setter;\n self = this;\n getter = function(name) {\n return function() {\n if (typeof name === 'string' && name.substr(0, 2) === \"__\") {\n return self[name];\n }\n if (indexOf.call(_.keys(self._modifiedAttrs), name) < 0) {\n return self._attrs[name];\n }\n return self._modifiedAttrs[name];\n };\n };\n setter = function(name) {\n return function(value) {\n if (typeof name === 'string' && name.substr(0, 2) === \"__\") {\n self[name] = value;\n return;\n }\n if (self._attrs[name] !== value) {\n self._modifiedAttrs[name] = value;\n self._isModified = true;\n } else {\n delete self._modifiedAttrs[name];\n }\n };\n };\n return _.each(this._attrs, function(value, name) {\n var options;\n options = {\n get: getter(name),\n set: setter(name),\n enumerable: true,\n configurable: true\n };\n return Object.defineProperty(self, name, options);\n });\n };\n\n Model.prototype.serialize = function() {\n var data;\n data = {\n \"data\": _.clone(this._attrs),\n \"name\": this._name\n };\n return JSON.stringify(data);\n };\n\n Model.prototype.isModified = function() {\n return this._isModified;\n };\n\n Model.prototype.isAttributeModified = function(attribute) {\n return this._modifiedAttrs[attribute] != null;\n };\n\n Model.prototype.markSaved = function() {\n this._isModified = false;\n this._attrs = this.getAttrs();\n return this._modifiedAttrs = {};\n };\n\n Model.prototype.revert = function() {\n this._modifiedAttrs = {};\n return this._isModified = false;\n };\n\n Model.desSerialize = function(sdata) {\n var ddata, model;\n ddata = JSON.parse(sdata);\n model = new Model(ddata.url, ddata.data);\n return model;\n };\n\n return Model;\n\n })();\n\n taiga = this.taiga;\n\n ModelService = (function(superClass) {\n extend(ModelService, superClass);\n\n ModelService.$inject = [\"$q\", \"$tgUrls\", \"$tgStorage\", \"$tgHttp\"];\n\n function ModelService(q, urls, storage, http) {\n this.q = q;\n this.urls = urls;\n this.storage = storage;\n this.http = http;\n ModelService.__super__.constructor.call(this);\n }\n\n return ModelService;\n\n })(taiga.Service);\n\n provider = function($q, $http, $gmUrls, $gmStorage) {\n var service;\n service = {};\n service.make_model = function(name, data, cls, dataTypes) {\n if (cls == null) {\n cls = Model;\n }\n if (dataTypes == null) {\n dataTypes = {};\n }\n return new cls(name, data, dataTypes);\n };\n service.cls = Model;\n service.casts = {\n int: function(value) {\n return parseInt(value, 10);\n },\n float: function(value) {\n return parseFloat(value, 10);\n }\n };\n return service;\n };\n\n module = angular.module(\"taigaBase\");\n\n module.factory(\"$tgModel\", [\"$q\", \"$http\", \"$tgUrls\", \"$tgStorage\", provider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/navurl.coffee\n */\n\n(function() {\n var NavigationUrlsDirective, NavigationUrlsService, bindOnce, module, taiga, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaBase\");\n\n NavigationUrlsService = (function(superClass) {\n extend(NavigationUrlsService, superClass);\n\n function NavigationUrlsService() {\n this.urls = {};\n }\n\n NavigationUrlsService.prototype.update = function(urls) {\n return this.urls = _.merge({}, this.urls, urls || {});\n };\n\n NavigationUrlsService.prototype.formatUrl = function(url, ctx) {\n var replacer;\n if (ctx == null) {\n ctx = {};\n }\n replacer = function(match) {\n match = trim(match, \":\");\n return ctx[match] || \"undefined\";\n };\n return url.replace(/(:\\w+)/g, replacer);\n };\n\n NavigationUrlsService.prototype.resolve = function(name, ctx) {\n var url;\n url = this.urls[name];\n if (!url) {\n return \"\";\n }\n if (ctx) {\n return this.formatUrl(url, ctx);\n }\n return url;\n };\n\n return NavigationUrlsService;\n\n })(taiga.Service);\n\n module.service(\"$tgNavUrls\", NavigationUrlsService);\n\n NavigationUrlsDirective = function($navurls, $auth, $q, $location) {\n var bindOnceP, link, parseNav;\n bindOnceP = function($scope, attr) {\n var defered;\n defered = $q.defer();\n bindOnce($scope, attr, function(v) {\n return defered.resolve(v);\n });\n return defered.promise;\n };\n parseNav = function(data, $scope) {\n var name, params, promises, ref, values;\n ref = _.map(data.split(\":\"), trim), name = ref[0], params = ref[1];\n if (params) {\n params = _.map(params.split(\",\"), trim);\n } else {\n params = [];\n }\n values = _.map(params, function(x) {\n return trim(x.split(\"=\")[1]);\n });\n promises = _.map(values, function(x) {\n return bindOnceP($scope, x);\n });\n return $q.all(promises).then(function() {\n var i, item, key, len, options, ref1, value;\n options = {};\n for (i = 0, len = params.length; i < len; i++) {\n item = params[i];\n ref1 = _.map(item.split(\"=\"), trim), key = ref1[0], value = ref1[1];\n options[key] = $scope.$eval(value);\n }\n return [name, options];\n });\n };\n link = function($scope, $el, $attrs) {\n if ($el.is(\"a\")) {\n $el.attr(\"href\", \"#\");\n }\n $el.on(\"mouseenter\", function(event) {\n var target;\n target = $(event.currentTarget);\n if (!target.data(\"fullUrl\")) {\n return parseNav($attrs.tgNav, $scope).then(function(result) {\n var fullUrl, name, options, url, user;\n name = result[0], options = result[1];\n user = $auth.getUser();\n if (user) {\n options.user = user.username;\n }\n url = $navurls.resolve(name);\n fullUrl = $navurls.formatUrl(url, options);\n target.data(\"fullUrl\", fullUrl);\n if (target.is(\"a\")) {\n target.attr(\"href\", fullUrl);\n }\n return $el.on(\"click\", function(event) {\n event.preventDefault();\n target = $(event.currentTarget);\n if (target.hasClass('noclick')) {\n return;\n }\n fullUrl = target.data(\"fullUrl\");\n switch (event.which) {\n case 1:\n $location.url(fullUrl);\n return $scope.$apply();\n case 2:\n return window.open(fullUrl);\n }\n });\n });\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgNav\", [\"$tgNavUrls\", \"$tgAuth\", \"$q\", \"$tgLocation\", NavigationUrlsDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/repository.coffee\n */\n\n(function() {\n var RepositoryService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n RepositoryService = (function(superClass) {\n extend(RepositoryService, superClass);\n\n RepositoryService.$inject = [\"$q\", \"$tgModel\", \"$tgStorage\", \"$tgHttp\", \"$tgUrls\"];\n\n function RepositoryService(q, model1, storage, http, urls) {\n this.q = q;\n this.model = model1;\n this.storage = storage;\n this.http = http;\n this.urls = urls;\n RepositoryService.__super__.constructor.call(this);\n }\n\n RepositoryService.prototype.resolveUrlForModel = function(model) {\n var idAttrName;\n idAttrName = model.getIdAttrName();\n return (this.urls.resolve(model.getName())) + \"/\" + model[idAttrName];\n };\n\n RepositoryService.prototype.resolveUrlForAttributeModel = function(model) {\n return this.urls.resolve(model.getName(), model.parent);\n };\n\n RepositoryService.prototype.create = function(name, data, dataTypes, extraParams) {\n var defered, promise, url;\n if (dataTypes == null) {\n dataTypes = {};\n }\n if (extraParams == null) {\n extraParams = {};\n }\n defered = this.q.defer();\n url = this.urls.resolve(name);\n promise = this.http.post(url, JSON.stringify(data));\n promise.success((function(_this) {\n return function(_data, _status) {\n return defered.resolve(_this.model.make_model(name, _data, null, dataTypes));\n };\n })(this));\n promise.error((function(_this) {\n return function(data, status) {\n return defered.reject(data);\n };\n })(this));\n return defered.promise;\n };\n\n RepositoryService.prototype.remove = function(model, params) {\n var defered, promise, url;\n if (params == null) {\n params = {};\n }\n defered = this.q.defer();\n url = this.resolveUrlForModel(model);\n promise = this.http[\"delete\"](url, {}, params);\n promise.success(function(data, status) {\n return defered.resolve(model);\n });\n promise.error(function(data, status) {\n return defered.reject(model);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.saveAll = function(models, patch) {\n var promises;\n if (patch == null) {\n patch = true;\n }\n promises = _.map(models, (function(_this) {\n return function(x) {\n return _this.save(x, true);\n };\n })(this));\n return this.q.all(promises);\n };\n\n RepositoryService.prototype.save = function(model, patch) {\n var data, defered, promise, url;\n if (patch == null) {\n patch = true;\n }\n defered = this.q.defer();\n if (!model.isModified() && patch) {\n defered.resolve(model);\n return defered.promise;\n }\n url = this.resolveUrlForModel(model);\n data = JSON.stringify(model.getAttrs(patch));\n if (patch) {\n promise = this.http.patch(url, data);\n } else {\n promise = this.http.put(url, data);\n }\n promise.success((function(_this) {\n return function(data, status) {\n model._isModified = false;\n model._attrs = _.extend(model.getAttrs(), data);\n model._modifiedAttrs = {};\n model.applyCasts();\n return defered.resolve(model);\n };\n })(this));\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.saveAttribute = function(model, attribute, patch) {\n var data, defered, promise, url;\n if (patch == null) {\n patch = true;\n }\n defered = this.q.defer();\n if (!model.isModified() && patch) {\n defered.resolve(model);\n return defered.promise;\n }\n url = this.resolveUrlForAttributeModel(model);\n data = {};\n data[attribute] = model.getAttrs();\n if (patch) {\n promise = this.http.patch(url, data);\n } else {\n promise = this.http.put(url, data);\n }\n promise.success((function(_this) {\n return function(data, status) {\n model._isModified = false;\n model._attrs = _.extend(model.getAttrs(), data);\n model._modifiedAttrs = {};\n model.applyCasts();\n return defered.resolve(model);\n };\n })(this));\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.refresh = function(model) {\n var defered, promise, url;\n defered = this.q.defer();\n url = this.resolveUrlForModel(model);\n promise = this.http.get(url);\n promise.success(function(data, status) {\n model._modifiedAttrs = {};\n model._attrs = data;\n model._isModified = false;\n model.applyCasts();\n return defered.resolve(model);\n });\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.queryMany = function(name, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n return _.map(data.data, function(x) {\n return _this.model.make_model(name, x);\n });\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOneAttribute = function(name, id, attribute, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name, id);\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n var model;\n model = _this.model.make_model(name, data.data[attribute]);\n model.parent = id;\n return model;\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOne = function(name, id, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n if (id) {\n url = url + \"/\" + id;\n }\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n return _this.model.make_model(name, data.data);\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOneRaw = function(name, id, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n if (id) {\n url = url + \"/\" + id;\n }\n httpOptions = _.merge({\n headers: {}\n }, options);\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n\n RepositoryService.prototype.queryPaginated = function(name, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n httpOptions = _.merge({\n headers: {}\n }, options);\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n var headers, result;\n headers = data.headers();\n result = {};\n result.models = _.map(data.data, function(x) {\n return _this.model.make_model(name, x);\n });\n result.count = parseInt(headers[\"x-pagination-count\"], 10);\n result.current = parseInt(headers[\"x-pagination-current\"] || 1, 10);\n result.paginatedBy = parseInt(headers[\"x-paginated-by\"], 10);\n return result;\n };\n })(this));\n };\n\n RepositoryService.prototype.resolve = function(options) {\n var cache, params;\n params = {};\n if (options.pslug != null) {\n params.project = options.pslug;\n }\n if (options.usref != null) {\n params.us = options.usref;\n }\n if (options.taskref != null) {\n params.task = options.taskref;\n }\n if (options.issueref != null) {\n params.issue = options.issueref;\n }\n if (options.sslug != null) {\n params.milestone = options.sslug;\n }\n if (options.wikipage != null) {\n params.wikipage = options.wikipage;\n }\n cache = !(options.wikipage || options.sslug);\n return this.queryOneRaw(\"resolver\", null, params, {\n cache: cache\n });\n };\n\n return RepositoryService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgRepo\", RepositoryService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/storage.coffee\n */\n\n(function() {\n var StorageService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n StorageService = (function(superClass) {\n extend(StorageService, superClass);\n\n StorageService.$inject = [\"$rootScope\"];\n\n function StorageService($rootScope) {\n StorageService.__super__.constructor.call(this);\n }\n\n StorageService.prototype.get = function(key, _default) {\n var serializedValue;\n serializedValue = localStorage.getItem(key);\n if (serializedValue === null) {\n return _default || null;\n }\n return JSON.parse(serializedValue);\n };\n\n StorageService.prototype.set = function(key, val) {\n if (_.isObject(key)) {\n return _.each(key, (function(_this) {\n return function(val, key) {\n return _this.set(key, val);\n };\n })(this));\n } else {\n return localStorage.setItem(key, JSON.stringify(val));\n }\n };\n\n StorageService.prototype.contains = function(key) {\n var value;\n value = this.get(key);\n return value !== null;\n };\n\n StorageService.prototype.remove = function(key) {\n return localStorage.removeItem(key);\n };\n\n StorageService.prototype.clear = function() {\n return localStorage.clear();\n };\n\n return StorageService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgStorage\", StorageService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/http.coffee\n */\n\n(function() {\n var UrlsService, format, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n format = function(fmt, obj) {\n obj = _.clone(obj);\n return fmt.replace(/%s/g, function(match) {\n return String(obj.shift());\n });\n };\n\n taiga = this.taiga;\n\n UrlsService = (function(superClass) {\n extend(UrlsService, superClass);\n\n UrlsService.$inject = [\"$tgConfig\"];\n\n function UrlsService(config) {\n this.config = config;\n this.urls = {};\n this.mainUrl = this.config.get(\"api\");\n }\n\n UrlsService.prototype.update = function(urls) {\n return this.urls = _.merge(this.urls, urls);\n };\n\n UrlsService.prototype.resolve = function() {\n var args, name, url;\n args = _.toArray(arguments);\n if (args.length === 0) {\n throw Error(\"wrong arguments to setUrls\");\n }\n name = args.slice(0, 1)[0];\n url = format(this.urls[name], args.slice(1));\n return format(\"%s/%s\", [_.str.rtrim(this.mainUrl, \"/\"), _.str.ltrim(url, \"/\")]);\n };\n\n UrlsService.prototype.resolveAbsolute = function() {\n var url;\n url = this.resolve.apply(this, arguments);\n if (/^https?:\\/\\//i.test(url)) {\n return url;\n }\n if (/^\\//.test(url)) {\n return window.location.protocol + \"//\" + window.location.host + url;\n }\n return window.location.protocol + \"//\" + window.location.host + \"/\" + url;\n };\n\n return UrlsService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service('$tgUrls', UrlsService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/custom-field-values.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo) {\n var _get, service;\n _get = function(objectId, resource) {\n return $repo.queryOne(resource, objectId);\n };\n service = {\n userstory: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/userstory\");\n }\n },\n task: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/task\");\n }\n },\n issue: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/issue\");\n }\n }\n };\n return function(instance) {\n return instance.customAttributesValues = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgCustomAttributesValuesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($repo) {\n var _list, service;\n _list = function(projectId, resource) {\n return $repo.queryMany(resource, {\n project: projectId\n });\n };\n service = {\n userstory: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/userstory\");\n }\n },\n task: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/task\");\n }\n },\n issue: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/issue\");\n }\n }\n };\n return function(instance) {\n return instance.customAttributes = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgCustomAttributesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo) {\n var service;\n service = {};\n service.get = function(token) {\n return $repo.queryOne(\"invitations\", token);\n };\n return function(instance) {\n return instance.invitations = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgInvitationsResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/mdrender.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.render = function(projectId, content) {\n var params, url;\n if ((content == null) || content === \"\") {\n content = ' ';\n }\n params = {\n project_id: projectId,\n content: content\n };\n url = $urls.resolve(\"wiki\");\n return $http.post(url + \"/render\", params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n return function(instance) {\n return instance.mdrender = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgMdRenderResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n","(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo) {\n var service;\n service = {};\n service.list = function(projectId, module) {\n return $repo.queryOneAttribute(\"project-modules\", projectId, module);\n };\n return function(instance) {\n return instance.modules = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgModulesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"notify-policies\", id);\n };\n service.list = function(filters) {\n var params;\n params = _.extend({}, params, filters || {});\n return $repo.queryMany(\"notify-policies\", params);\n };\n return function(instance) {\n return instance.notifyPolicies = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgNotifyPoliciesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.list = function(webhookId) {\n var params;\n params = {\n webhook: webhookId\n };\n return $repo.queryMany(\"webhooklogs\", params);\n };\n service.resend = function(webhooklogId) {\n var url;\n url = $urls.resolve(\"webhooklogs-resend\", webhooklogId);\n return $http.post(url);\n };\n return function(instance) {\n return instance.webhooklogs = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWebhookLogsResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n","(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.list = function(projectId) {\n var params;\n params = {\n project: projectId\n };\n return $repo.queryMany(\"webhooks\", params);\n };\n service.test = function(webhookId) {\n var url;\n url = $urls.resolve(\"webhooks-test\", webhookId);\n return $http.post(url);\n };\n return function(instance) {\n return instance.webhooks = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWebhooksResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/main.coffee\n */\n\n(function() {\n var UserChangePasswordController, UserChangePasswordDirective, debounce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserChangePasswordController = (function(superClass) {\n extend(UserChangePasswordController, superClass);\n\n UserChangePasswordController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAuth\"];\n\n function UserChangePasswordController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, auth) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.auth = auth;\n this.scope.sectionName = \"Change Password\";\n this.scope.project = {};\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserChangePasswordController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n UserChangePasswordController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n return UserChangePasswordController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserChangePasswordController\", UserChangePasswordController);\n\n UserChangePasswordDirective = function($rs, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs, ctrl) {\n var submit, submitButton;\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if ($scope.newPassword1 !== $scope.newPassword2) {\n $confirm.notify('error', \"The passwords dosn't match\");\n return;\n }\n $loading.start(submitButton);\n promise = $rs.userSettings.changePassword($scope.currentPassword, $scope.newPassword1);\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify('success');\n });\n return promise.then(null, function(response) {\n $loading.finish(submitButton);\n return $confirm.notify('error', response.data._error_message);\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserChangePassword\", [\"$tgResources\", \"$tgConfirm\", \"$tgLoading\", UserChangePasswordDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/notifications.coffee\n */\n\n(function() {\n var UserNotificationsController, UserNotificationsDirective, UserNotificationsListDirective, bindOnce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserNotificationsController = (function(superClass) {\n extend(UserNotificationsController, superClass);\n\n UserNotificationsController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAuth\"];\n\n function UserNotificationsController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, auth) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.auth = auth;\n this.scope.sectionName = \"Email Notifications\";\n this.scope.project = {};\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserNotificationsController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n UserNotificationsController.prototype.loadNotifyPolicies = function() {\n return this.rs.notifyPolicies.list().then((function(_this) {\n return function(notifyPolicies) {\n _this.scope.notifyPolicies = notifyPolicies;\n return notifyPolicies;\n };\n })(this));\n };\n\n UserNotificationsController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadNotifyPolicies();\n };\n })(this));\n };\n\n return UserNotificationsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserNotificationsController\", UserNotificationsController);\n\n UserNotificationsDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserNotifications\", UserNotificationsDirective);\n\n UserNotificationsListDirective = function($repo, $confirm) {\n var link, template;\n template = _.template(\"<% _.each(notifyPolicies, function (notifyPolicy, index) { %>\\n
\\\">\\n
<%- notifyPolicy.project_name %>
\\n
\\n
\\n \\\" id=\\\"policy-all-<%- notifyPolicy.id %>\\\"\\n value=\\\"2\\\" <% if (notifyPolicy.notify_level == 2) { %>checked=\\\"checked\\\"<% } %>/>\\n \\n
\\n
\\n
\\n
\\n \\\" id=\\\"policy-involved-<%- notifyPolicy.id %>\\\"\\n value=\\\"1\\\" <% if (notifyPolicy.notify_level == 1) { %>checked=\\\"checked\\\"<% } %> />\\n \\n
\\n
\\n
\\n
\\n \\\" id=\\\"policy-none-<%- notifyPolicy.id %>\\\"\\n value=\\\"3\\\" <% if (notifyPolicy.notify_level == 3) { %>checked=\\\"checked\\\"<% } %> />\\n \\n
\\n
\\n
\\n<% }) %>\");\n link = function($scope, $el, $attrs) {\n var render;\n render = function() {\n $el.off();\n $el.html(template({\n notifyPolicies: $scope.notifyPolicies\n }));\n return $el.on(\"change\", \"input[type=radio]\", function(event) {\n var onError, onSuccess, policy, policyIndex, prev_level, target;\n target = angular.element(event.currentTarget);\n policyIndex = target.parents(\".policy-table-row\").data('index');\n policy = $scope.notifyPolicies[policyIndex];\n prev_level = policy.notify_level;\n policy.notify_level = parseInt(target.val(), 10);\n onSuccess = function() {\n return $confirm.notify(\"success\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n return target.parents(\".policy-table-row\").find(\"input[value=\" + prev_level + \"]\").prop(\"checked\", true);\n };\n return $repo.save(policy).then(onSuccess, onError);\n });\n };\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return bindOnce($scope, $attrs.ngModel, render);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserNotificationsList\", [\"$tgRepo\", \"$tgConfirm\", UserNotificationsListDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: plugins/humanshtml/humanshtml.coffee\n */\n\n(function() {\n var configure, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaPlugins\");\n\n configure = function($routeProvider) {\n return $routeProvider.when(\"/humans.html\", {\n \"templateUrl\": \"/plugins/humanshtml/templates/humans.html\"\n });\n };\n\n module.config([\"$routeProvider\", configure]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: plugins/terms/terms.coffee\n */\n\n(function() {\n var TermsNoticeDirective, module, taiga, template;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaPlugins\");\n\n template = _.template(\"

\\n By clicking \\\"Sign up\\\", you agree to our
\\n
\\\" title=\\\"See terms of service\\\" target=\\\"_blank\\\"> terms of service\\n and\\n \\\" title=\\\"See privacy policy\\\" target=\\\"_blank\\\"> privacy policy.\\n

\");\n\n TermsNoticeDirective = function($config) {\n var privacyPolicyUrl, templateFn, termsOfServiceUrl;\n privacyPolicyUrl = $config.get(\"privacyPolicyUrl\");\n termsOfServiceUrl = $config.get(\"termsOfServiceUrl\");\n templateFn = function() {\n var ctx;\n if (!(privacyPolicyUrl && termsOfServiceUrl)) {\n return \"\";\n }\n ctx = {\n termsUrl: termsOfServiceUrl,\n privacyUrl: privacyPolicyUrl\n };\n return template(ctx);\n };\n return {\n scope: {},\n restrict: \"AE\",\n template: templateFn\n };\n };\n\n module.directive(\"tgTermsNotice\", [\"$tgConfig\", TermsNoticeDirective]);\n\n}).call(this);\n","angular.module('taigaBase').value('localesEn', {\n \"checksley\": {\n \"defaultMessage\": \"This value seems to be invalid.\",\n \"type-email\": \"This value should be a valid email.\",\n \"type-url\": \"This value should be a valid url.\",\n \"type-urlstrict\": \"This value should be a valid url.\",\n \"type-number\": \"This value should be a valid number.\",\n \"type-digits\": \"This value should be digits.\",\n \"type-dateIso\": \"This value should be a valid date (YYYY-MM-DD).\",\n \"type-alphanum\": \"This value should be alphanumeric.\",\n \"type-phone\": \"This value should be a valid phone number.\",\n \"notnull\": \"This value should not be null.\",\n \"notblank\": \"This value should not be blank.\",\n \"required\": \"This value is required.\",\n \"regexp\": \"This value seems to be invalid.\",\n \"min\": \"This value should be greater than or equal to %s.\",\n \"max\": \"This value should be lower than or equal to %s.\",\n \"range\": \"This value should be between %s and %s.\",\n \"minlength\": \"This value is too short. It should have %s characters or more.\",\n \"maxlength\": \"This value is too long. It should have %s characters or less.\",\n \"rangelength\": \"This value length is invalid. It should be between %s and %s characters long.\",\n \"mincheck\": \"You must select at least %s choices.\",\n \"maxcheck\": \"You must select %s choices or less.\",\n \"rangecheck\": \"You must select between %s and %s choices.\",\n \"equalto\": \"This value should be the same.\"\n },\n \"common\": {\n \"subject\": \"Subject\",\n \"save\": \"Save\",\n \"blocked\": \"Blocked\",\n \"cancel\": \"Cancel\",\n \"status\": \"Status\",\n \"new-bulk\": \"New bulk insert\",\n \"one-item-line\": \"One item per line...\"\n },\n \"pagination\": {\n \"next\": \"Next\",\n \"prev\": \"Previous\"\n },\n \"markdown-editor\": {\n \"heading-1\": \"First Level Heading\",\n \"heading-2\": \"Second Level Heading\",\n \"heading-3\": \"Third Level Heading\",\n \"bold\": \"Bold\",\n \"italic\": \"Italic\",\n \"strike\": \"Strike\",\n \"bulleted-list\": \"Bulleted List\",\n \"numeric-list\": \"Numeric List\",\n \"picture\": \"Picture\",\n \"link\": \"Link\",\n \"quotes\": \"Quotes\",\n \"code-block\": \"Code Block / Code\",\n \"preview\": \"Preview\",\n \"help\": \"Help\",\n \"placeholder\": \"Your title here...\",\n \"link-placeholder\": \"Your text to link here...\"\n },\n \"us\": {\n \"title-new\": \"New User Story\",\n \"team-requirement\": \"Team Requirement\",\n \"client-requirement\": \"Client Requirement\"\n }\n}\n);"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["app.js","classes.js","utils.js","controllerMixins.js","admin.js","auth.js","backlog.js","base.js","common.js","events.js","feedback.js","integrations.js","issues.js","kanban.js","locales.js","nav.js","projects.js","related-tasks.js","resources.js","search.js","taskboard.js","tasks.js","team.js","user-settings.js","userstories.js","wiki.js","analytics.js","attachments.js","bind-scope.js","components.js","confirm.js","custom-field-values.js","estimation.js","filters.js","history.js","importer.js","lightboxes.js","loader.js","loading.js","popovers.js","raven-logger.js","tags.js","wisiwyg.js","main.js","sortable.js","sprints.js","charts.js","detail.js","list.js","memberships.js","project-profile.js","project-values.js","roles.js","third-parties.js","bind.js","conf.js","contrib.js","http.js","i18n.js","location.js","model.js","navurls.js","repository.js","storage.js","urls.js","custom-attributes-values.js","custom-attributes.js","invitations.js","mdrender.js","modules.js","notify-policies.js","webhooklogs.js","webhooks.js","change-password.js","notifications.js","humanshtml/humanshtml.js","terms/terms.js","locales.en.js"],"names":["configure","init","module","modules","taiga","this","taigaContribPlugins","generateHash","components","_","map","x","JSON","stringify","hex_sha1","join","generateUniqueSessionIdentifier","date","randomNumber","Date","getTime","Math","floor","random","sessionId","$routeProvider","$locationProvider","$httpProvider","$provide","$tgEventsProvider","tgLoaderProvider","$compileProvider","authHttpIntercept","defaultHeaders","versionCheckHttpIntercept","when","templateUrl","resolve","loader","add","reloadOnSearch","redirectTo","params","pslug","otherwise","html5Mode","enabled","requireBase","Content-Type","Accept-Language","X-Session-Id","defaults","headers","patch","post","put","get","setSessionId","$q","$location","$navUrls","$lightboxService","httpResponseError","response","nextPath","status","closeAll","path","replace","url","search","reject","responseError","factory","interceptors","push","$confirm","versionErrorMsg","data","version","notify","window","checksley","updateValidators","linewidth","val","width","lines","valid","nl2br","split","every","line","length","updateMessages","debugInfoEnabled","taigaConfig","debugInfo","$log","$i18n","$config","$rootscope","$auth","$events","$analytics","initialize","debug","contribPlugins","adminPlugins","where","type","isAuthenticated","setupConnection","concat","plugin","angular","config","run","call","TaigaBase","TaigaController","TaigaService","extend","child","parent","ctor","constructor","key","hasProp","prototype","__super__","hasOwnProperty","bind","fn","me","apply","arguments","superClass","onInitialDataError","xhr","location","navUrls","q","Base","Service","Controller","bindMethods","bindOnce","cancelTimeout","debounce","debounceLeading","groupBy","joinStr","mixOf","scopeDefer","sizeFormat","slugify","startswith","timeout","toString","toggleText","trim","unslugify","indexOf","item","i","l","slice","str","breakTag","object","dependencies","methods","keys","forIn","value","bindAll","scope","attr","continuation","delBind","$eval","$watch","Mixed","base","method","mixin","mixins","name","ref","char","capitalize","element","texts","nextTextPosition","text","coll","pred","len","result","wait","setTimeout","timeoutVar","clearTimeout","func","defer","$apply","isNumber","isString","isPlainObject","isUndefined","leading","trailing","str1","str2","startsWith","input","precision","number","size","units","isNaN","parseFloat","isFinite","log","pow","toFixed","FiltersMixin","PageMixin","fillUsersAndRoles","users","roles","activeUsers","availableRoles","filter","user","is_active","sortBy","activeUsersById","e","id","usersById","project","memberships","uniq","computableRoles","contains","loadUsersAndRoles","promise","all","rs","projects","usersList","projectId","rolesList","then","_this","results","selectFilter","load","existing","compact","isInCurrentRouteParams","noreload","replaceFilter","replaceAllFilters","filters","unselectFilter","newValues","parsedValues","isEmpty","AuthService","CancelAccountDirective","ChangeEmailDirective","ChangePasswordFromRecoveryDirective","ForgotPasswordDirective","InvitationDirective","LoginDirective","PublicRegisterMessageDirective","RegisterDirective","rootscope","storage","model","http","urls","$inject","getUser","userData","make_model","setUser","auth","$broadcast","default_language","set","getAttrs","clear","remove","setToken","token","getToken","removeToken","login","clone","auth_token","logout","register","getInvitation","invitations","acceptInvitiationWithNewUser","acceptInvitiationWithExistingUser","forgotPassword","changePasswordFromRecovery","changeEmail","cancelAccount","service","templates","template","templateFn","publicRegisterEnabled","restrict","directive","$routeParams","link","$scope","$el","onError","onSuccess","submit","nextUrl","event","form","loginFormType","preventDefault","Form","find","validate","username","password","on","onErrorSubmit","onSuccessSubmit","onlyOneErrorElement","trackEvent","_error_message","setErrors","success","email","$params","tokenInParams","loginForm","onErrorSubmitLogin","onErrorSubmitRegister","onSuccessSubmitLogin","onSuccessSubmitRegister","registerForm","submitLogin","submitRegister","invitation","dataLogin","project_slug","escape","project_name","dataRegister","$repo","$model","email_token","queryOne","cancel_token","TaigaMainDirective","$window","onresize","home","error","not-found","permission-denied","forgot-password","change-password","change-email","cancel-account","create-project","profile","project-backlog","project-taskboard","project-kanban","project-issues","project-search","project-userstories-detail","project-tasks-detail","project-issues-detail","project-wiki","project-wiki-page","project-team","project-admin-home","project-admin-project-profile-details","project-admin-project-profile-default-values","project-admin-project-profile-modules","project-admin-project-profile-export","project-admin-project-profile-reports","project-admin-project-values-status","project-admin-project-values-points","project-admin-project-values-priorities","project-admin-project-values-severities","project-admin-project-values-types","project-admin-project-values-custom-fields","project-admin-memberships","project-admin-roles","project-admin-third-parties-webhooks","project-admin-third-parties-github","project-admin-third-parties-gitlab","project-admin-third-parties-bitbucket","project-admin-contrib","user-settings-user-profile","user-settings-user-change-password","user-settings-user-avatar","user-settings-mail-notifications","$navurls","update","AnimationFrame","AppTitle","CheckPermissionDirective","ClassPermissionDirective","LimitLineLengthDirective","ProjectUrl","Qqueue","SelectedText","Template","ToggleCommentDirective","$document","getSelection","selection","createRange","render","permission","my_permissions","removeClass","$attrs","addClass","tgCheckPermission","$on","off","checkPermissions","tgClassPermissionWatchAction","unbindWatcher","className","negation","classes","animationFrame","performAnimation","tail","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","shift","$","ctx","slug","is_backlog_activated","is_kanban_activated","is_wiki_activated","is_issues_activated","maxColsPerLine","parseInt","code","keyCode","each","index","substring","deferred","lastPromise","qqueue","bindAdd","args","$templateCache","lodash","tmp","EventsProvider","EventsService","win","subscriptions","connected","pendingMessages","WebSocket","info","loc","scheme","stopExistingConnection","protocol","ltrim","host","ws","addEventListener","onOpen","onMessage","onClose","removeEventListener","close","serialize","message","isObject","sendMessage","messages","msg","send","subscribe","routingKey","callback","subscription","cmd","routing_key","unsubscribe","parse","$get","$win","$conf","provider","FeedbackDirective","$loading","submitButton","start","create","feedback","finish","open","focus","ProjectMenuDirective","ProjectsNavigationController","ProjectsNavigationDirective","navurls","projectUrl","loadInitialData","console","listByMember","filteredProjects","filterText","newProject","filterProjects","toLowerCase","controller","$timeout","tgLoader","$compile","$template","baseTemplate","hideMenu","loadingStart","overlay","projectsTemplate","difftime","timeoutValue","is","one","document","body","css","hide","disablePreventLoading","$ctrls","$ctrl","renderProjects","html","$emit","which","hasClass","show","toggleClass","currentUrl","target","currentTarget","prop","absUrl","preventLoading","require","$tgAuth","getSectionName","mainTemplate","menuEntriesTemplate","renderMainMenu","renderMenuEntries","videoConferenceUrl","sectionName","oldSectionName","targetScope","container","dom","section","feedbackEnabled","replaceWith","baseUrl","videoconferences","videoconferences_salt","popover","listener","stopPropagation","videoconferenceUrl","RelatedTaskAssignedToInlineEditionDirective","RelatedTaskCreateButtonDirective","RelatedTaskCreateFormDirective","RelatedTaskRowDirective","RelatedTasksDirective","templateEdit","templateView","renderEdit","renderView","saveTask","task","subject","save","$modelValue","perms","modify_task","delete_task","select","title","askOnDelete","ngModel","$tgmodel","newTask","assigned_to","createTask","default_task_status","us","$rs","loadTasks","tasks","list","usId","autoSave","notAutoSave","updateRelatedTask","member","imgurl","photo","full_name_display","tgRelatedTaskAssignedToInlineEdition","unbind","userId","updatedRelatedTask","ResourcesService","initResources","initUrls","auth-register","permissions","notify-policies","bulk-create-memberships","milestones","userstories","bulk-create-us","bulk-update-us-backlog-order","bulk-update-us-sprint-order","bulk-update-us-kanban-order","userstories-restore","bulk-create-tasks","bulk-update-task-taskboard-order","tasks-restore","issues","bulk-create-issues","issues-restore","wiki","wiki-restore","wiki-links","choices/userstory-statuses","choices/userstory-statuses/bulk-update-order","choices/points","choices/points/bulk-update-order","choices/task-statuses","choices/task-statuses/bulk-update-order","choices/issue-statuses","choices/issue-statuses/bulk-update-order","choices/issue-types","choices/issue-types/bulk-update-order","choices/priorities","choices/priorities/bulk-update-order","choices/severities","choices/severities/bulk-update-order","sites","project-templates","site-members","site-projects","users-password-recovery","users-change-password-from-recovery","users-change-password","users-change-email","users-cancel-account","user-storage","resolver","userstory-statuses","points","task-statuses","issue-statuses","issue-types","priorities","severities","project-modules","webhooks","webhooks-test","webhooklogs","webhooklogs-resend","history/us","history/issue","history/task","history/wiki","attachments/us","attachments/issue","attachments/task","attachments/wiki_page","custom-attributes/userstory","custom-attributes/issue","custom-attributes/task","custom-attributes-values/userstory","custom-attributes-values/issue","custom-attributes-values/task","exporter","importer","userstories-csv","tasks-csv","issues-csv","$urls","providers","toArray","SearchBoxDirective","SearchController","SearchDirective","scope1","repo","appTitle","loadSearchData","searchTerm","t","term","pageLoaded","loadFilters","defered","loadProject","getBySlug","issueStatusById","issue_statuses","taskStatusById","task_statuses","severityById","priorityById","membersById","usStatusById","us_statuses","searchResults","$route","reload","$templatecache","$routeparams","linkTable","getActiveSection","lastSeatchResults","markSectionTabActive","renderFilterTabs","renderTableContent","tabsDom","maxVal","selectedSectionData","selectedSectionName","wikipages","oldElements","oldScope","children","$destroy","$new","parseHTML","activeSection","sectionData","searchText","AnalyticsService","doc","conf","initialized","accountId","pageEvent","trackRoutes","ignoreFirstPageLoad","injectAnalytics","ga","getUrl","trackPage","s","o","g","r","a","m","createElement","getElementsByTagName","async","src","parentNode","insertBefore","page","category","action","label","AttachmentDirective","AttachmentsController","AttachmentsDirective","confirm","objectId","uploadingAttachments","attachments","attachmentsCount","deprecatedAttachmentsCount","showDeprecated","loadAttachments","urlname","updateCounters","is_deprecated","_createAttachment","attachment","urlName","isCreatedRightNow","splice","createAttachments","promises","addUploadingAttachments","union","reorderAttachment","newIndex","oldIndex","order","updateAttachment","saveAttachments","saveAll","j","revert","removeAttachment","filterAttachments","$templates","showSizeInfo","tdom","sortable","items","handle","containment","dropOnEmpty","scroll","tolerance","placeholder","ui","attach","files","maxFileSize","maxFileSizeMsg","controllerAs","saveAttachment","edit","modifyPermission","created_date","moment","format","description","isDeprecated","tgAttachment","BindScope","jQuery","AssignedToDirective","BlockButtonDirective","CreatedByDisplayDirective","DateRangeDirective","DateSelectorDirective","DeleteButtonDirective","EditableDescriptionDirective","EditableSubjectDirective","ListItemAssignedtoDirective","ListItemIssueStatusDirective","ListItemPriorityDirective","ListItemSeverityDirective","ListItemTaskStatusDirective","ListItemTypeDirective","ListItemUsStatusDirective","SprintProgressBarDirective","TgMainTitleDirective","TgProgressBarDirective","WatchersDirective","renderRange","first","second","endDate","initDate","tgDateRange","valFirst","valSecond","selectedDate","picker","Pikaday","field","onSelect","setDate","renderProgress","percentage","visual_percentage","tgSprintProgressbar","sprint","closedPoints","totalPoints","closed_points","total_points","round","owner","$qqueue","deleteWatcher","isEditable","renderWatchers","ref1","requiredPerm","watchers","$setViewValue","watcherId","watcherIds","pull","renderAssignedTo","issue","assignedTo","assignedToId","ask","instance","is_blocked","onDeleteGoToUrl","onDeleteTitle","subtitle","click","$selectedText","noDescriptionMegEditMode","noDescriptionMegReadMode","noDescriptionMsg","tgListitemIssueStatus","tgListitemTaskStatus","tgListitemUsStatus","tgListitemAssignedto","full_name","domNode","priority","color","tgListitemPriority","severity","tgListitemSeverity","issueTypeById","tgListitemType","el","tgProgressBar","max","min","projectName","ConfirmService","NOTIFICATION_MSG","light-error","lightboxService","loading","lightboxSelector","ok","askChoice","choices","replacement","warning","choicesField","append","selected","stop","percent","time","selector","tsem","CustomAttributeValueDirective","CustomAttributesValuesController","CustomAttributesValuesDirective","customAttributes","customAttributesValues","loadCustomAttributesValues","getAttributeValue","attribute","attributeValue","attributes_values","updateAttributeValue","attributesValues","$storage","collapsedHash","collapsed","hash","requiredEditionPerm","saveAttributeValue","editable","tgCustomAttributeValue","EstimationsService","LbUsEstimationDirective","UsEstimationDirective","$tgEstimationsService","$rootScope","estimationProcess","onSelectedPointForRole","calculateTotalPoints","calculateRoles","roleId","pointId","EstimationProcess","pointsTemplate","$el1","us1","project1","bindClickEvents","pointsById","notNullValues","values","v","reduce","acc","num","role","pointObj","renderPointsSelector","siblings","horizontalList","maxPointLength","point","some","horizontal","closest","defaultFilter","momentFormat","momentFromNow","yesNoFilter","defaultValue","without_suffix","fromNow","HistoryController","HistoryDirective","loadHistory","history","historyResult","values_diff","description_diff","description_html","blocked_note_diff","blocked_note","blocked_note_html","comments","comment","deleteComment","activityId","undeleteComment","templateActivity","templateBase","templateBaseEntries","templateChangeAttachment","templateChangeDiff","templateChangeGeneric","templateChangeList","templateChangePoints","templateDeletedComment","countChanges","formatChange","getHumanizedFieldName","getUserAvatar","getUserFullName","renderActivity","renderAttachmentEntry","renderChange","renderChangeEntries","renderChangeEntry","renderChangesHelperText","renderComment","renderComments","renderCustomAttributesEntry","renderHistory","showAllActivity","showAllComments","humanizedFieldNames","is_closed","finish_date","client_requirement","team_requirement","milestone","user_story","is_iocaine","change","isArray","changes","diff","filename","from","to","flatten","customAttrsChanges","added","removed","difference","ref2","delete_comment_date","delete_comment_user","deleteCommentDate","deleteCommentUser","comment_html","canRestoreComment","pk","avatar","userFullName","creationDate","created_at","changesText","mode","canDeleteComment","entries","totalEntries","showMore","totalComments","last","totalChanges","parents","ngmodel","ImportProjectButtonDirective","trigger","file","errorMsg","AssignedToLightboxDirective","BlockLightboxDirective","BlockingMessageInputDirective","CreateBulkUserstoriesDirective","CreateEditUserstoryDirective","LightboxDirective","LightboxKeyboardNavigationService","LightboxService","WatchersLightboxDirective","docEl","lightboxContent","not","removeAttr","lightboxEl","dispatch","activeElement","next","prev","$tgrepo","block","unblock","finishCallback","watch","isNew","statusList","usStatusList","is_archived","tags","broadcastEvent","keydown","statusId","bulk","bulkCreate","lightboxKeyboardNavigationService","closeLightbox","filterUsers","normalizeString","selectedItem","selectedUser","usersTemplate","string","normalizedString","toUpperCase","partial","searchingText","usersSearch","getFilteredUsers","_filterUsers","Loader","LoaderDirective","onStart","onEnd","startCurrentPageLoader","reset","defaultConfig","forceDisabled","minTime","merge","startLoadTime","force","endTime","TgLoadingService","oldContent","RelatedTaskStatusDirective","UsStatusDirective","usStatusDom","usStatusDomParent","tgUsStatus","onUpdate","statuses","selectionTemplate","updateTaskStatus","taskStatusDom","taskStatusDomParent","tgRelatedTaskStatus","closePopover","isVisible","docViewBottom","docViewLeft","docViewRight","docViewTop","docViewWidth","elemBottom","elemLeft","elemRight","elemTop","elemWidth","display","visibility","scrollTop","height","offset","top","left","fadeOut","fadeIn","ExceptionHandlerFactory","ravenConfig","Raven","install","exception","captureException","ColorizeTagsDirective","LbTagLineDirective","TagLineDirective","TagsDirective","formatter","parser","$formatters","$parsers","backlog","kanban","taskboard","srcTags","tgColorizeTagsType","sort","tag","tags_colors","tgColorizeTags","COMMA_KEY","ENTER_KEY","templateTags","addValue","deleteValue","hideSaveButton","removeInputLastCharacter","renderTags","resetInput","saveInputTag","showSaveButton","tagsColors","style","autocomplete","inputValue","positioningFunction","position","elements","menu","source","my","using","ESC_KEY","hideAddTagButton","hideAddTagButtonText","hideInput","renderInReadModeOnly","showAddTagButton","showAddTagButtonText","showInput","blur","tgMarkitupDirective","$tr","previewTemplate","addLine","closePreviewMode","markdownSettings","markdownTitle","prepareUrlFormatting","preview","previewDomNode","setCaretPosition","urlFormatting","class","markItUpDomNode","markdownDomNode","mdrender","markdown","textarea","caretPosition","range","scrollRelation","totalLines","createTextRange","move","selectionStart","setSelectionRange","scrollHeight","nline","cursorPosition","nameSpace","onShiftEnter","keepDefault","openWith","onEnter","afterInsert","cursorLine","emptyListItem","lastLine","markdownCaretPositon","match","newLineContent","markupSet","placeHolder","closeWith","markItUp","separator","beforeInsert","indices","regex","exec","donotparse","endIndex","startIndex","heading","n","BacklogFiltersDirective","templateSelected","initializeSelectedFilters","renderFilters","renderSelectedFilters","selectQFilter","selectedFilters","showCategories","showFilters","toggleFilterSelection","f","currentFiltersType","loadUserstories","CreateEditSprint","createSprint","hasErrors","estimated_start","estimated_finish","newSprint","copy","setAttr","sprintsCounter","__all__","milestonesCounter","estimatedFinish","estimatedStart","lastSprint","lastSprintNameDom","sprints","BacklogController","BacklogDirective","TgBacklogProgressBarDirective","UsPointsDirective","UsRolePointsSelectorDirective","tgBacklogGraphDirective","params1","events","analytics","showTags","activeFilters","initializeEventHandlers","getShowTags","loadProjectStats","loadSprints","moveUs","loadClosedSprints","unloadClosedSprints","initializeSubscription","routingKey1","routingKey2","toggleShowTags","storeShowTags","toggleActiveFilters","stats","completedPercentage","refreshTagsColors","closedSprints","closed","user_stories","openSprints","reverse","sprintsById","resetFilters","selectedStatuses","selectedTags","filtersQ","filterGrp","httpParams","getUrlFilters","storeQueryParams","listUnassigned","setSearchDataFilters","filterVisibleUserstories","generateFilters","loadBacklog","totalClosedMilestones","total_closed_milestones","visibleUserstories","isFilterSelected","searchdata","Object","prepareBulkUpdateData","uses","us_id","resortUserStories","isModified","usList","newUsIndex","newSprintId","len1","len2","oldSprintId","Array","bulkUpdateBacklogOrder","bulkUpdateSprintOrder","len3","oldSprint","urlfilters","results1","pick","plainStatuses","plainTags","countBy","k","obj","count","editUserStory","deleteUserStory","without","addNewUs","default_us_status","addNewSprint","doomLineTemplate","linkDoomLine","linkFilters","linkToolbar","showHideFilter","showHideTags","addDoomLineDom","getUsItems","reloadDoomLine","removeDoomlineDom","current_sum","domElement","assigned_points","before","rowElements","moveToCurrentSprint","selectedUss","extraPoints","totalExtraPoints","ussCurrent","moveToCurrentSprintDom","selectedUsDom","ussDom","ussToMove","itemScope","elm","sidebar","filtersSearch","disableSelection","numberOfRoles","roleName","rolScope","$tgTemplate","rolesTemplate","bindClickElements","filteringRoleId","renderRolesSelector","selectedRoleId","updatingSelectedRoleId","tgBacklogUsPoints","popRolesDom","redrawChart","dataToDraw","client_increment_line","colors","evolution_line","milestonesRange","optimal_line","options","team_increment_line","zero_line","zip","fillColor","ml","optimal","evolution","grid","borderWidth","right","bottom","borderColor","hoverable","xaxis","ticks","axisLabel","axisLabelUseCanvas","axisLabelFontSizePixels","axisLabelFontFamily","axisLabelPadding","tickFormatter","series","shadowSize","fill","radius","lineWidth","tooltip","tooltipOpts","content","xval","yval","flotItem","seriesIndex","abs","empty","plot","adjustPercentaje","projectPointsPercentaje","closedPointsPercentaje","adjusted","tgBacklogProgressBar","definedPoints","defined_points","BacklogEmptySortableDirective","BacklogSortableDirective","SprintSortableDirective","deleteElement","$tgConfirm","getUsIndex","filterError","$translate","instant","cancel","connectWith","cursorAt","itemIndex","itemUs","BacklogSprintDirective","BacklogSprintHeaderDirective","ToggleExcludeClosedSprintsVisualization","refreshSprintTableHeight","slideOptions","sprintTableMinHeight","toggleSprint","duration","easing","sprintTable","sprintArrow","tgBacklogSprint","slideToggle","estimatedDateRange","taskboardUrl","excludeClosedSprints","loadingElm","after","SprintGraphDirective","days","day","unshift","d","optimal_points","open_points","tickSize","daysNames","yaxis","formattedDate","roundedValue","CreateBulkTasksDirective","CreateEditTaskDirective","sprintId","TaskboardController","TaskboardDirective","TaskboardSquishColumnDirective","TaskboardTaskDirective","TaskboardUserDirective","rs1","loadTaskboard","taskMove","loadSprintStats","loadSprint","pointsList","roleById","taskStatusList","completedPointsSum","remainingPointsSum","remainingTasks","totalPointsSum","res","completed_points","total_tasks","completed_tasks","openTasks","usTasks","sslug","refreshTasksOrder","resortTasks","bulkUpdateTaskTaskboardOrder","task_id","taskboard_order","addNewTask","editTaskAssignedTo","tableBodyDom","tableHeaderDom","scrollLeft","avatarWidth","maxColumnWidth","getCeilWidth","recalculateStatusColumnWidth","recalculateTaskboardWidth","refreshTaskboardTableWidth","setStatusColumnWidth","statusesFolded","getStatusColumnModes","usFolded","getUsRowModes","foldStatus","storeStatusColumnModes","foldUs","storeUsRowModes","tasksMatrixSize","sqrt","column","columnWidths","columns","totalWidth","outerWidth","total","statusFoldedWidth","forEach","clickable","username_label","assign","TaskboardSortableDirective","itemEl","newParentScope","oldParentScope","itemTask","newStatusId","newUsId","oldStatusId","oldUsId","parentEl","st","KanbanArchivedStatusHeaderDirective","KanbanArchivedStatusIntroDirective","KanbanController","KanbanDirective","KanbanSquishColumnDirective","KanbanUserDirective","KanbanUserstoryDirective","KanbanWipLimitDirective","defaultViewMode","defaultViewModes","maximized","cardClass","minimized","statusViewModes","onAssignedToChanged","loadUserStoriesForStatus","hideUserStoriesForStatus","changeUsAssignedTo","userid","status__is_archived","listAll","usByStatus","us_archived","loadKanban","generateStatusViewModes","storedStatusViewModes","getStatusViewModes","has","storeStatusViewModes","updateStatusViewMode","newViewMode","getCardClass","kanban_order","itemsToSave","bulkUpdateKanbanOrder","hideArchivedText","showArchivedText","hidden","tgKanbanArchivedStatusHeader","hiddenUserStoriexText","userStories","updateIntroText","tgKanbanArchivedStatusIntro","isArchived","userStoriesLoaded","updateTableWidth","folds","redrawWipLimit","tgKanbanWipLimit","wtid","tgKanbanUserAvatar","KanbanSortableDirective","IssueDetailController","IssuePriorityButtonDirective","IssueSeverityButtonDirective","IssueStatusButtonDirective","IssueStatusDisplayDirective","IssueTypeButtonDirective","PromoteIssueToUsButtonDirective","issueRef","issueref","initializeOnDeleteGoToUrl","loadIssue","statusById","typeById","issue_types","typeList","severityList","priorityList","getByRef","issueId","commentModel","neighbors","previous","previousUrl","typees","severityes","priorityes","generated_from_issue","CreateBulkIssuesDirective","CreateIssueDirective","default_issue_status","default_issue_type","default_priority","default_severity","IssueAssignedToInlineEditionDirective","IssueStatusInlineEditionDirective","IssuesController","IssuesDirective","IssuesFiltersDirective","loadIssues","getFilters","storeFilters","issueStatusList","issueTypes","getUrlFilter","loadMyFilters","getMyFilters","removeNotExistingFiltersFromUrl","currentSearch","existingValues","filterName","filterValue","splittedValues","intersection","markSelectedFilters","isSelected","omit","myFilters","filtersData","choicesFiltersFormat","tagsFilterFormat","usersFiltersFormat","unknownOption","reformatedUsers","unknownItem","u","byIdObject","createdBy","created_by","types","loadIssuesRequests","urlFilters","models","current","paginatedBy","saveCurrentFiltersTo","newFilter","storeMyFilters","deleteMyFilter","addNewIssue","addIssuesInBulk","linkOrdering","linkPagination","$pagEl","afterCurrent","atBegin","atEnd","beforeCurrent","getNumPages","renderPagination","numPages","cpage","pages","showPrevious","showNext","pagenum","colHeadElement","currentOrder","icon","finalOrder","newOrder","filterId","customFilterName","loadPromise","currentfilterstype","updateIssueStatus","issueStatusDom","issueStatusDomParent","tgIssueStatusInlineEdition","updateIssue","tgIssueAssignedToInlineEdition","updatedIssue","UsClientRequirementButtonDirective","UsStatusButtonDirective","UsStatusDisplayDirective","UsTasksProgressDisplayDirective","UsTeamRequirementButtonDirective","UserStoryDetailController","usRef","usref","loadUs","progress","totalClosedTasks","totalTasks","canEdit","isRequired","TaskDetailController","TaskIsIocaineButtonDirective","TaskStatusButtonDirective","TaskStatusDisplayDirective","taskRef","taskref","loadTask","taskId","loadUserStory","isIocaine","LeaveProjectDirective","TeamController","TeamFiltersDirective","TeamMemberCurrentUserDirective","TeamMemberStatsDirective","TeamMembersDirective","setRole","filtersRole","loadMembers","currentUser","membership","totals","is_user_active","issuesEnabled","tasksEnabled","wikiEnabled","loadMemberStats","memberStats","vals","sum","processStats","processStat","stat","singleStat","leave","projectid","EditableWikiContentDirective","WikiDetailController","WikiSummaryDirective","projectSlug","wikiSlug","loadWiki","wikiId","loadWikiLinks","listLinks","wikiLinks","last_modifier","imgUrl","totalEditions","editions","lastModifiedDate","modified_date","wikiPage","cancelEdition","disableEdition","getSelectedText","switchToEditMode","switchToReadMode","button","WikiNavDirective","addWikiLinkPermission","deleteWikiLinkPermission","linkId","linkSlug","href","newLink","CreateMembersDirective","MAX_MEMBERSHIP_FIELDSETS","extraTextTemplate","createFieldSet","resetForm","required","roleList","fieldSet","prepend","lastActionButton","newFieldSet","invitation_extra_text","memberWrappers","destroy","mw","memberWrapper","role_id","bulkCreateMemberships","MembershipsController","MembershipsDirective","MembershipsRowActionsDirective","MembershipsRowAdminCheckboxDirective","MembershipsRowAvatarDirective","MembershipsRowRoleSelectorDirective","i_am_owner","httpFilters","addNewMembers","user_email","tgMembershipsRowAvatar","inputId","tgMembershipsRowAdminCheckbox","is_owner","selectedRole","tgMembershipsRowRoleSelector","newRole","activedTemplate","pendingTemplate","tgMembershipsRowActions","resendInvitation","AdminNavigationDirective","tgAdminNavigation","CsvExporterController","CsvExporterIssuesController","CsvExporterTasksController","CsvExporterUserstoriesController","ProjectDefaultValuesDirective","ProjectExportDirective","ProjectModulesDirective","ProjectProfileController","ProjectProfileDirective","prioritiesList","severitiesList","issueTypesList","openDeleteLightbox","newUrl","isVideoconferenceActivated","buttonsEl","hideButtons","hideResult","hideSpinner","resultEl","resultMessageEl","resultTitleEl","setAsyncMessage","setAsyncTitle","setLoadingMessage","setLoadingTitle","setSyncMessage","setSyncTitle","showButtons","showErrorMode","showExportResultAsyncMode","showExportResultSyncMode","showLoadingMode","showResult","showSpinner","spinnerEl","dumpUrl","_generateUuid","setCsvUuid","csvUrl","resolveAbsolute","csvUuid","uuid","regenerateUuid","identity","ColorSelectionDirective","ProjectCustomAttributesController","ProjectCustomAttributesDirective","ProjectValuesController","ProjectValuesDirective","ProjectValuesSectionController","moveValue","loadValues","resource","listValues","maxValueOrder","itemValue","linkDragAndDrop","linkValue","axis","goToBottomList","initializeNewValue","saveNewValue","saveValue","valueType","newValue","table","formEl","row","editionRow","option","onSucces","moveTo","moveCustomAttributes","deleteCustomAttribute","saveCustomAttribute","createCustomAttribute","loadCustomAttributes","maxOrder","attrValues","attrModel","idx","cancelCreate","cancelUpdate","hideAddButton","hideCancelButton","hideCreateForm","hideEditForm","resetNewAttr","revertChangesInCustomAttribute","showAddButton","showCancelButton","showCreateForm","showEditForm","sortableEl","itemAttr","newAttr","EditRoleDirective","NewRoleDirective","RolePermissionsDirective","RolesController","RolesDirective","anyComputableRole","computable","loadExternalUserRole","public_permission","external_user","public_permissions","loadRoles","setComputable","toggleView","toggle","DEFAULT_PERMISSIONS","categoryTemplate","resumeTemplate","generateCategoriesFromRole","renderCategory","renderPermissions","renderResume","categories","isPermissionEditable","issuePermissions","milestonePermissions","setActivePermissions","setActivePermissionsPerCategory","taskPermissions","userStoryPermissions","wikiPermissions","active","is_private","cat","activePermissions","getActivePermissions","categoryId","anon_permissions","BitbucketController","BitbucketWebhooksDirective","GithubController","GithubWebhooksDirective","GitlabController","GitlabWebhooksDirective","NewWebhookDirective","SelectInputText","ValidOriginIpsDirective","WebhookDirective","WebhooksController","loadWebhooks","openHistory","showEditMode","showVisualizationMode","updateLogs","updateShowHideHistoryText","webhook","tgWebhook","validStatus","prettySentHeaders","pairs","request_headers","arg","header","prettySentData","request_data","prettyDate","created","logs_counter","logs","historyElement","textElement","test","resend","addWebhookDOMNode","formDOMNode","loadModules","github","gitlab","bitbucket","saveAttribute","$ngModel","CreateProject","DeleteProjectDirective","$projectUrl","$cacheFactory","removeAll","error_field","error_step","selectors","total_story_points","total_milestones","creation_template","head","step","fields","projectToDelete","ProjectController","ProjectsController","ProjectsListDirective","ProjectsPaginationDirective","recents","loadPageData","checkButtonVisibility","containerSize","hasNextPage","hasPagination","hasPrevPage","nextBtn","nextPage","pageSize","prevBtn","prevPage","visible","lastLi","maxTop","newTop","outerHeight","animate","BindHtmlDirective","BindOnceAltDirective","BindOnceBindDirective","BindOnceHrefDirective","BindOnceHtmlDirective","BindOnceRefDirective","BindOnceSrcDirective","BindOnceTitleDirective","BindTitleDirective","tgBoBind","tgBoHtml","tgBoRef","tgBoSrc","tgBoHref","tgBoAlt","tgBoTitle","tgTitleHtml","tgBindHtml","ConfigurationService","ContribController","rootScope","currentPlugin","pluginTemplate","FiltersStorageService","HttpService","Authorization","request","I18nDirective","I18nService","ns","fallbackLng","lng","localesEn","resStore","en","app","setLanguage","language","i18n","setLng","currentLang","opts","tr","trOpts","locationFactory","lastRoute","un","Model","ModelService","dataTypes","_attrs","_name","_dataTypes","setAttrs","_modifiedAttrs","_isModified","applyCasts","attrName","castMethod","castName","casts","getIdAttrName","getName","attrs","getter","self","setter","substr","enumerable","configurable","defineProperty","isAttributeModified","markSaved","desSerialize","sdata","ddata","cls","int","float","NavigationUrlsDirective","NavigationUrlsService","formatUrl","replacer","bindOnceP","parseNav","tgNav","fullUrl","RepositoryService","model1","resolveUrlForModel","idAttrName","resolveUrlForAttributeModel","extraParams","_data","refresh","queryMany","httpOptions","enablePagination","queryOneAttribute","queryOneRaw","queryPaginated","cache","wikipage","StorageService","_default","serializedValue","localStorage","getItem","setItem","removeItem","UrlsService","fmt","String","mainUrl","Error","rtrim","resourceProvider","object_id","uploadComplete","uploadFailed","uploadProgress","evt","progressMessage","loaded","progressPercent","responseText","_error","FormData","XMLHttpRequest","upload","setRequestHeader","_get","userstory","_list","$http","filtersHashSuffix","hashSuffix","myFiltersHashSuffix","getQueryParams","project_id","bulk_issues","innerPromise","hashSuffixStatusColumnModes","hashSuffixStatusViewModes","listByUser","bulk_memberships","notifyPolicies","memberId","regenerate_userstories_csv_uuid","regenerate_issues_csv_uuid","regenerate_tasks_csv_uuid","statusUpdater","complete","failed","get_all","hashSuffixUserstories","storeUserstoriesQueryParams","hashSuffixUsRowModes","userStoryId","sprint_id","bulk_tasks","changeAvatar","transformRequest","removeAvatar","changePassword","currentPassword","newPassword","current_password","userSettings","status_id","bulk_stories","webhookId","webhooklogId","UserChangePasswordController","UserChangePasswordDirective","newPassword1","newPassword2","DeleteUserDirective","TaigaAvatarModelDirective","UserAvatarDirective","UserProfileDirective","UserSettingsController","avatarAttachment","$parse","modelSetter","tgAvatarModel","UserSettingsNavigationDirective","tgUserSettingsNavigation","UserNotificationsController","UserNotificationsDirective","UserNotificationsListDirective","loadNotifyPolicies","policy","policyIndex","prev_level","notify_level","TermsNoticeDirective","privacyPolicyUrl","termsOfServiceUrl","termsUrl","privacyUrl","defaultMessage","type-email","type-url","type-urlstrict","type-number","type-digits","type-dateIso","type-alphanum","type-phone","notnull","notblank","regexp","minlength","maxlength","rangelength","mincheck","maxcheck","rangecheck","equalto","common","blocked","new-bulk","one-item-line","pagination","markdown-editor","heading-1","heading-2","heading-3","bold","italic","strike","bulleted-list","numeric-list","picture","quotes","code-block","help","link-placeholder","title-new","team-requirement","client-requirement"],"mappings":"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","file":"app.js","sourcesContent":["\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: app.coffee\n */\n\n(function() {\n var configure, init, module, modules, taiga;\n\n this.taiga = taiga = {};\n\n this.taigaContribPlugins = this.taigaContribPlugins || [];\n\n taiga.generateHash = function(components) {\n if (components == null) {\n components = [];\n }\n components = _.map(components, function(x) {\n return JSON.stringify(x);\n });\n return hex_sha1(components.join(\":\"));\n };\n\n taiga.generateUniqueSessionIdentifier = function() {\n var date, randomNumber;\n date = (new Date()).getTime();\n randomNumber = Math.floor(Math.random() * 0x9000000);\n return taiga.generateHash([date, randomNumber]);\n };\n\n taiga.sessionId = taiga.generateUniqueSessionIdentifier();\n\n configure = function($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, tgLoaderProvider, $compileProvider) {\n var authHttpIntercept, defaultHeaders, versionCheckHttpIntercept;\n $routeProvider.when(\"/\", {\n templateUrl: \"project/projects.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/\", {\n templateUrl: \"project/project.html\"\n });\n $routeProvider.when(\"/project/:pslug/search\", {\n templateUrl: \"search/search.html\",\n reloadOnSearch: false\n });\n $routeProvider.when(\"/project/:pslug/backlog\", {\n templateUrl: \"backlog/backlog.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/kanban\", {\n templateUrl: \"kanban/kanban.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/taskboard/:sslug\", {\n templateUrl: \"taskboard/taskboard.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/us/:usref\", {\n templateUrl: \"us/us-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/task/:taskref\", {\n templateUrl: \"task/task-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/wiki\", {\n redirectTo: function(params) {\n return \"/project/\" + params.pslug + \"/wiki/home\";\n }\n });\n $routeProvider.when(\"/project/:pslug/wiki/:slug\", {\n templateUrl: \"wiki/wiki.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/team\", {\n templateUrl: \"team/team.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/issues\", {\n templateUrl: \"issue/issues.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/issue/:issueref\", {\n templateUrl: \"issue/issues-detail.html\",\n resolve: {\n loader: tgLoaderProvider.add()\n }\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/details\", {\n templateUrl: \"admin/admin-project-profile.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/default-values\", {\n templateUrl: \"admin/admin-project-default-values.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/modules\", {\n templateUrl: \"admin/admin-project-modules.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/export\", {\n templateUrl: \"admin/admin-project-export.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/reports\", {\n templateUrl: \"admin/admin-project-reports.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/status\", {\n templateUrl: \"admin/admin-project-values-status.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/points\", {\n templateUrl: \"admin/admin-project-values-points.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/priorities\", {\n templateUrl: \"admin/admin-project-values-priorities.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/severities\", {\n templateUrl: \"admin/admin-project-values-severities.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/types\", {\n templateUrl: \"admin/admin-project-values-types.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/custom-fields\", {\n templateUrl: \"admin/admin-project-values-custom-fields.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/memberships\", {\n templateUrl: \"admin/admin-memberships.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/roles\", {\n templateUrl: \"admin/admin-roles.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/webhooks\", {\n templateUrl: \"admin/admin-third-parties-webhooks.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/github\", {\n templateUrl: \"admin/admin-third-parties-github.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/gitlab\", {\n templateUrl: \"admin/admin-third-parties-gitlab.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/bitbucket\", {\n templateUrl: \"admin/admin-third-parties-bitbucket.html\"\n });\n $routeProvider.when(\"/project/:pslug/admin/contrib/:plugin\", {\n templateUrl: \"contrib/main.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-profile\", {\n templateUrl: \"user/user-profile.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-change-password\", {\n templateUrl: \"user/user-change-password.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/user-avatar\", {\n templateUrl: \"user/user-avatar.html\"\n });\n $routeProvider.when(\"/project/:pslug/user-settings/mail-notifications\", {\n templateUrl: \"user/mail-notifications.html\"\n });\n $routeProvider.when(\"/change-email/:email_token\", {\n templateUrl: \"user/change-email.html\"\n });\n $routeProvider.when(\"/cancel-account/:cancel_token\", {\n templateUrl: \"user/cancel-account.html\"\n });\n $routeProvider.when(\"/login\", {\n templateUrl: \"auth/login.html\"\n });\n $routeProvider.when(\"/register\", {\n templateUrl: \"auth/register.html\"\n });\n $routeProvider.when(\"/forgot-password\", {\n templateUrl: \"auth/forgot-password.html\"\n });\n $routeProvider.when(\"/change-password\", {\n templateUrl: \"auth/change-password-from-recovery.html\"\n });\n $routeProvider.when(\"/change-password/:token\", {\n templateUrl: \"auth/change-password-from-recovery.html\"\n });\n $routeProvider.when(\"/invitation/:token\", {\n templateUrl: \"auth/invitation.html\"\n });\n $routeProvider.when(\"/error\", {\n templateUrl: \"error/error.html\"\n });\n $routeProvider.when(\"/not-found\", {\n templateUrl: \"error/not-found.html\"\n });\n $routeProvider.when(\"/permission-denied\", {\n templateUrl: \"error/permission-denied.html\"\n });\n $routeProvider.otherwise({\n redirectTo: '/not-found'\n });\n $locationProvider.html5Mode({\n enabled: true,\n requireBase: false\n });\n defaultHeaders = {\n \"Content-Type\": \"application/json\",\n \"Accept-Language\": \"en\",\n \"X-Session-Id\": taiga.sessionId\n };\n $httpProvider.defaults.headers[\"delete\"] = defaultHeaders;\n $httpProvider.defaults.headers.patch = defaultHeaders;\n $httpProvider.defaults.headers.post = defaultHeaders;\n $httpProvider.defaults.headers.put = defaultHeaders;\n $httpProvider.defaults.headers.get = {\n \"X-Session-Id\": taiga.sessionId\n };\n $tgEventsProvider.setSessionId(taiga.sessionId);\n authHttpIntercept = function($q, $location, $navUrls, $lightboxService) {\n var httpResponseError;\n httpResponseError = function(response) {\n var nextPath;\n if (response.status === 0) {\n $lightboxService.closeAll();\n $location.path($navUrls.resolve(\"error\"));\n $location.replace();\n } else if (response.status === 401) {\n nextPath = $location.path();\n $location.url($navUrls.resolve(\"login\")).search(\"next=\" + nextPath);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"authHttpIntercept\", [\"$q\", \"$location\", \"$tgNavUrls\", \"lightboxService\", authHttpIntercept]);\n $httpProvider.interceptors.push('authHttpIntercept');\n versionCheckHttpIntercept = function($q, $confirm) {\n var httpResponseError, versionErrorMsg;\n versionErrorMsg = \"Someone inside Taiga has changed this before and our Oompa Loompas cannot apply your changes. Please reload and apply your changes again (they will be lost).\";\n httpResponseError = function(response) {\n if (response.status === 400 && response.data.version) {\n $confirm.notify(\"error\", versionErrorMsg, null, 10000);\n return $q.reject(response);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"versionCheckHttpIntercept\", [\"$q\", \"$tgConfirm\", versionCheckHttpIntercept]);\n $httpProvider.interceptors.push('versionCheckHttpIntercept');\n window.checksley.updateValidators({\n linewidth: function(val, width) {\n var lines, valid;\n lines = taiga.nl2br(val).split(\"
\");\n valid = _.every(lines, function(line) {\n return line.length < width;\n });\n return valid;\n }\n });\n window.checksley.updateMessages(\"default\", {\n linewidth: \"The subject must have a maximum size of %s\"\n });\n return $compileProvider.debugInfoEnabled(window.taigaConfig.debugInfo || false);\n };\n\n init = function($log, $i18n, $config, $rootscope, $auth, $events, $analytics) {\n $i18n.initialize($config.get(\"defaultLanguage\"));\n $log.debug(\"Initialize application\");\n $rootscope.contribPlugins = this.taigaContribPlugins;\n $rootscope.adminPlugins = _.where(this.taigaContribPlugins, {\n \"type\": \"admin\"\n });\n if ($auth.isAuthenticated()) {\n $events.setupConnection();\n }\n return $analytics.initialize();\n };\n\n modules = [\"taigaBase\", \"taigaCommon\", \"taigaResources\", \"taigaLocales\", \"taigaAuth\", \"taigaEvents\", \"taigaRelatedTasks\", \"taigaBacklog\", \"taigaTaskboard\", \"taigaKanban\", \"taigaIssues\", \"taigaUserStories\", \"taigaTasks\", \"taigaTeam\", \"taigaWiki\", \"taigaSearch\", \"taigaAdmin\", \"taigaNavMenu\", \"taigaProject\", \"taigaUserSettings\", \"taigaFeedback\", \"taigaPlugins\", \"taigaIntegrations\", \"templates\", \"ngRoute\", \"ngAnimate\"].concat(_.map(this.taigaContribPlugins, function(plugin) {\n return plugin.module;\n }));\n\n module = angular.module(\"taiga\", modules);\n\n module.config([\"$routeProvider\", \"$locationProvider\", \"$httpProvider\", \"$provide\", \"$tgEventsProvider\", \"tgLoaderProvider\", \"$compileProvider\", configure]);\n\n module.run([\"$log\", \"$tgI18n\", \"$tgConfig\", \"$rootScope\", \"$tgAuth\", \"$tgEvents\", \"$tgAnalytics\", init]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: classes.coffee\n */\n\n(function() {\n var TaigaBase, TaigaController, TaigaService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n TaigaBase = (function() {\n function TaigaBase() {}\n\n return TaigaBase;\n\n })();\n\n TaigaService = (function(superClass) {\n extend(TaigaService, superClass);\n\n function TaigaService() {\n return TaigaService.__super__.constructor.apply(this, arguments);\n }\n\n return TaigaService;\n\n })(TaigaBase);\n\n TaigaController = (function(superClass) {\n extend(TaigaController, superClass);\n\n function TaigaController() {\n this.onInitialDataError = bind(this.onInitialDataError, this);\n return TaigaController.__super__.constructor.apply(this, arguments);\n }\n\n TaigaController.prototype.onInitialDataError = function(xhr) {\n if (xhr) {\n if (xhr.status === 404) {\n this.location.path(this.navUrls.resolve(\"not-found\"));\n this.location.replace();\n } else if (xhr.status === 403) {\n this.location.path(this.navUrls.resolve(\"permission-denied\"));\n this.location.replace();\n }\n }\n return this.q.reject(xhr);\n };\n\n return TaigaController;\n\n })(TaigaBase);\n\n this.taiga.Base = TaigaBase;\n\n this.taiga.Service = TaigaService;\n\n this.taiga.Controller = TaigaController;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: utils.coffee\n */\n\n(function() {\n var bindMethods, bindOnce, cancelTimeout, debounce, debounceLeading, groupBy, joinStr, mixOf, nl2br, scopeDefer, sizeFormat, slugify, startswith, taiga, timeout, toString, toggleText, trim, unslugify,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n slice = [].slice,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n nl2br = (function(_this) {\n return function(str) {\n var breakTag;\n breakTag = '
';\n return (str + '').replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1' + breakTag + '$2');\n };\n })(this);\n\n bindMethods = (function(_this) {\n return function(object) {\n var dependencies, methods;\n dependencies = _.keys(object);\n methods = [];\n _.forIn(object, function(value, key) {\n if (indexOf.call(dependencies, key) < 0) {\n return methods.push(key);\n }\n });\n return _.bindAll(object, methods);\n };\n })(this);\n\n bindOnce = (function(_this) {\n return function(scope, attr, continuation) {\n var delBind, val;\n val = scope.$eval(attr);\n if (val !== void 0) {\n return continuation(val);\n }\n delBind = null;\n return delBind = scope.$watch(attr, function(val) {\n if (val === void 0) {\n return;\n }\n continuation(val);\n if (delBind) {\n return delBind();\n }\n });\n };\n })(this);\n\n mixOf = function() {\n var Mixed, base, i, method, mixin, mixins, name, ref;\n base = arguments[0], mixins = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n Mixed = (function(superClass) {\n extend(Mixed, superClass);\n\n function Mixed() {\n return Mixed.__super__.constructor.apply(this, arguments);\n }\n\n return Mixed;\n\n })(base);\n for (i = mixins.length - 1; i >= 0; i += -1) {\n mixin = mixins[i];\n ref = mixin.prototype;\n for (name in ref) {\n method = ref[name];\n Mixed.prototype[name] = method;\n }\n }\n return Mixed;\n };\n\n trim = function(data, char) {\n return _.str.trim(data, char);\n };\n\n slugify = function(data) {\n return _.str.slugify(data);\n };\n\n unslugify = function(data) {\n if (data) {\n return _.str.capitalize(data.replace(/-/g, ' '));\n }\n return data;\n };\n\n toggleText = function(element, texts) {\n var nextTextPosition, text;\n nextTextPosition = element.data('nextTextPosition');\n if ((nextTextPosition == null) || nextTextPosition >= texts.length) {\n nextTextPosition = 0;\n }\n text = texts[nextTextPosition];\n element.data('nextTextPosition', nextTextPosition + 1);\n return element.text(text);\n };\n\n groupBy = function(coll, pred) {\n var i, item, len, result;\n result = {};\n for (i = 0, len = coll.length; i < len; i++) {\n item = coll[i];\n result[pred(item)] = item;\n }\n return result;\n };\n\n timeout = function(wait, continuation) {\n return window.setTimeout(continuation, wait);\n };\n\n cancelTimeout = function(timeoutVar) {\n return window.clearTimeout(timeoutVar);\n };\n\n scopeDefer = function(scope, func) {\n return _.defer((function(_this) {\n return function() {\n return scope.$apply(func);\n };\n })(this));\n };\n\n toString = function(value) {\n if (_.isNumber(value)) {\n return value + \"\";\n } else if (_.isString(value)) {\n return value;\n } else if (_.isPlainObject(value)) {\n return JSON.stringify(value);\n } else if (_.isUndefined(value)) {\n return \"\";\n }\n return value.toString();\n };\n\n joinStr = function(str, coll) {\n return _.str.join(str, coll);\n };\n\n debounce = function(wait, func) {\n return _.debounce(func, wait, {\n leading: true,\n trailing: false\n });\n };\n\n debounceLeading = function(wait, func) {\n return _.debounce(func, wait, {\n leading: false,\n trailing: true\n });\n };\n\n startswith = function(str1, str2) {\n return _.str.startsWith(str1, str2);\n };\n\n sizeFormat = function(input, precision) {\n var number, size, units;\n if (precision == null) {\n precision = 1;\n }\n if (isNaN(parseFloat(input)) || !isFinite(input)) {\n return \"-\";\n }\n if (input === 0) {\n return \"0 bytes\";\n }\n units = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\n number = Math.floor(Math.log(input) / Math.log(1024));\n if (number > 5) {\n number = 5;\n }\n size = (input / Math.pow(1024, number)).toFixed(precision);\n return size + \" \" + units[number];\n };\n\n taiga = this.taiga;\n\n taiga.nl2br = nl2br;\n\n taiga.bindMethods = bindMethods;\n\n taiga.bindOnce = bindOnce;\n\n taiga.mixOf = mixOf;\n\n taiga.trim = trim;\n\n taiga.slugify = slugify;\n\n taiga.unslugify = unslugify;\n\n taiga.toggleText = toggleText;\n\n taiga.groupBy = groupBy;\n\n taiga.timeout = timeout;\n\n taiga.cancelTimeout = cancelTimeout;\n\n taiga.scopeDefer = scopeDefer;\n\n taiga.toString = toString;\n\n taiga.joinStr = joinStr;\n\n taiga.debounce = debounce;\n\n taiga.debounceLeading = debounceLeading;\n\n taiga.startswith = startswith;\n\n taiga.sizeFormat = sizeFormat;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/controllerMixins.coffee\n */\n\n(function() {\n var FiltersMixin, PageMixin, groupBy, joinStr, taiga, toString, trim;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n joinStr = this.taiga.joinStr;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n PageMixin = (function() {\n function PageMixin() {}\n\n PageMixin.prototype.fillUsersAndRoles = function(users, roles) {\n var activeUsers, availableRoles;\n activeUsers = _.filter(users, (function(_this) {\n return function(user) {\n return user.is_active;\n };\n })(this));\n this.scope.activeUsers = _.sortBy(activeUsers, \"full_name_display\");\n this.scope.activeUsersById = groupBy(this.scope.activeUsers, function(e) {\n return e.id;\n });\n this.scope.users = _.sortBy(users, \"full_name_display\");\n this.scope.usersById = groupBy(this.scope.users, function(e) {\n return e.id;\n });\n this.scope.roles = _.sortBy(roles, \"order\");\n availableRoles = _(this.scope.project.memberships).map(\"role\").uniq().value();\n return this.scope.computableRoles = _(roles).filter(\"computable\").filter(function(x) {\n return _.contains(availableRoles, x.id);\n }).value();\n };\n\n PageMixin.prototype.loadUsersAndRoles = function() {\n var promise;\n promise = this.q.all([this.rs.projects.usersList(this.scope.projectId), this.rs.projects.rolesList(this.scope.projectId)]);\n return promise.then((function(_this) {\n return function(results) {\n var roles, users;\n users = results[0], roles = results[1];\n _this.fillUsersAndRoles(users, roles);\n return results;\n };\n })(this));\n };\n\n return PageMixin;\n\n })();\n\n taiga.PageMixin = PageMixin;\n\n FiltersMixin = (function() {\n function FiltersMixin() {}\n\n FiltersMixin.prototype.selectFilter = function(name, value, load) {\n var existing, location, params;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\n if (params[name] !== void 0 && name !== \"page\") {\n existing = _.map(taiga.toString(params[name]).split(\",\"), function(x) {\n return trim(x);\n });\n existing.push(taiga.toString(value));\n existing = _.compact(existing);\n value = joinStr(\",\", _.uniq(existing));\n }\n if (!this.location.isInCurrentRouteParams(name, value)) {\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n }\n };\n\n FiltersMixin.prototype.replaceFilter = function(name, value, load) {\n var location;\n if (load == null) {\n load = false;\n }\n if (!this.location.isInCurrentRouteParams(name, value)) {\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n }\n };\n\n FiltersMixin.prototype.replaceAllFilters = function(filters, load) {\n var location;\n if (load == null) {\n load = false;\n }\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(filters);\n };\n\n FiltersMixin.prototype.unselectFilter = function(name, value, load) {\n var location, newValues, params, parsedValues;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\n if (params[name] === void 0) {\n return;\n }\n if (value === void 0 || value === null) {\n delete params[name];\n }\n parsedValues = _.map(taiga.toString(params[name]).split(\",\"), function(x) {\n return trim(x);\n });\n newValues = _.reject(parsedValues, function(x) {\n return x === taiga.toString(value);\n });\n newValues = _.compact(newValues);\n if (_.isEmpty(newValues)) {\n value = null;\n } else {\n value = joinStr(\",\", _.uniq(newValues));\n }\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n };\n\n return FiltersMixin;\n\n })();\n\n taiga.FiltersMixin = FiltersMixin;\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaAdmin\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/auth.coffee\n */\n\n(function() {\n var AuthService, CancelAccountDirective, ChangeEmailDirective, ChangePasswordFromRecoveryDirective, ForgotPasswordDirective, InvitationDirective, LoginDirective, PublicRegisterMessageDirective, RegisterDirective, debounce, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAuth\", [\"taigaResources\"]);\n\n AuthService = (function(superClass) {\n extend(AuthService, superClass);\n\n AuthService.$inject = [\"$rootScope\", \"$tgStorage\", \"$tgModel\", \"$tgResources\", \"$tgHttp\", \"$tgUrls\"];\n\n function AuthService(rootscope, storage, model, rs, http, urls) {\n this.rootscope = rootscope;\n this.storage = storage;\n this.model = model;\n this.rs = rs;\n this.http = http;\n this.urls = urls;\n AuthService.__super__.constructor.call(this);\n }\n\n AuthService.prototype.getUser = function() {\n var user, userData;\n if (this.rootscope.user) {\n return this.rootscope.user;\n }\n userData = this.storage.get(\"userInfo\");\n if (userData) {\n user = this.model.make_model(\"users\", userData);\n this.rootscope.user = user;\n return user;\n }\n return null;\n };\n\n AuthService.prototype.setUser = function(user) {\n this.rootscope.auth = user;\n this.rootscope.$broadcast(\"i18n:change\", user.default_language);\n this.storage.set(\"userInfo\", user.getAttrs());\n return this.rootscope.user = user;\n };\n\n AuthService.prototype.clear = function() {\n this.rootscope.auth = null;\n this.rootscope.user = null;\n return this.storage.remove(\"userInfo\");\n };\n\n AuthService.prototype.setToken = function(token) {\n return this.storage.set(\"token\", token);\n };\n\n AuthService.prototype.getToken = function() {\n return this.storage.get(\"token\");\n };\n\n AuthService.prototype.removeToken = function() {\n return this.storage.remove(\"token\");\n };\n\n AuthService.prototype.isAuthenticated = function() {\n if (this.getUser() !== null) {\n return true;\n }\n return false;\n };\n\n AuthService.prototype.login = function(data, type) {\n var url;\n url = this.urls.resolve(\"auth\");\n data = _.clone(data, false);\n data.type = type ? type : \"normal\";\n this.removeToken();\n return this.http.post(url, data).then((function(_this) {\n return function(data, status) {\n var user;\n user = _this.model.make_model(\"users\", data.data);\n _this.setToken(user.auth_token);\n _this.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.logout = function() {\n this.removeToken();\n return this.clear();\n };\n\n AuthService.prototype.register = function(data, type, existing) {\n var url;\n url = this.urls.resolve(\"auth-register\");\n data = _.clone(data, false);\n data.type = type ? type : \"public\";\n if (type === \"private\") {\n data.existing = existing ? existing : false;\n }\n this.removeToken();\n return this.http.post(url, data).then((function(_this) {\n return function(response) {\n var user;\n user = _this.model.make_model(\"users\", response.data);\n _this.setToken(user.auth_token);\n _this.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.getInvitation = function(token) {\n return this.rs.invitations.get(token);\n };\n\n AuthService.prototype.acceptInvitiationWithNewUser = function(data) {\n return this.register(data, \"private\", false);\n };\n\n AuthService.prototype.acceptInvitiationWithExistingUser = function(data) {\n return this.register(data, \"private\", true);\n };\n\n AuthService.prototype.forgotPassword = function(data) {\n var url;\n url = this.urls.resolve(\"users-password-recovery\");\n data = _.clone(data, false);\n this.removeToken();\n return this.http.post(url, data);\n };\n\n AuthService.prototype.changePasswordFromRecovery = function(data) {\n var url;\n url = this.urls.resolve(\"users-change-password-from-recovery\");\n data = _.clone(data, false);\n this.removeToken();\n return this.http.post(url, data);\n };\n\n AuthService.prototype.changeEmail = function(data) {\n var url;\n url = this.urls.resolve(\"users-change-email\");\n data = _.clone(data, false);\n return this.http.post(url, data);\n };\n\n AuthService.prototype.cancelAccount = function(data) {\n var url;\n url = this.urls.resolve(\"users-cancel-account\");\n data = _.clone(data, false);\n return this.http.post(url, data);\n };\n\n return AuthService;\n\n })(taiga.Service);\n\n module.service(\"$tgAuth\", AuthService);\n\n PublicRegisterMessageDirective = function($config, $navUrls, templates) {\n var template, templateFn;\n template = templates.get(\"auth/login-text.html\", true);\n templateFn = function() {\n var publicRegisterEnabled;\n publicRegisterEnabled = $config.get(\"publicRegisterEnabled\");\n if (!publicRegisterEnabled) {\n return \"\";\n }\n return template({\n url: $navUrls.resolve(\"register\")\n });\n };\n return {\n restrict: \"AE\",\n scope: {},\n template: templateFn\n };\n };\n\n module.directive(\"tgPublicRegisterMessage\", [\"$tgConfig\", \"$tgNavUrls\", \"$tgTemplate\", PublicRegisterMessageDirective]);\n\n LoginDirective = function($auth, $confirm, $location, $config, $routeParams, $navUrls, $events) {\n var link;\n link = function($scope, $el, $attrs) {\n var onError, onSuccess, submit;\n onSuccess = function(response) {\n var nextUrl;\n if ($routeParams['next'] && $routeParams['next'] !== $navUrls.resolve(\"login\")) {\n nextUrl = $routeParams['next'];\n } else {\n nextUrl = $navUrls.resolve(\"home\");\n }\n $events.setupConnection();\n return $location.path(nextUrl);\n };\n onError = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your username/email or password are incorrect.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var data, form, loginFormType, promise;\n event.preventDefault();\n form = new checksley.Form($el.find(\"form.login-form\"));\n if (!form.validate()) {\n return;\n }\n data = {\n \"username\": $el.find(\"form.login-form input[name=username]\").val(),\n \"password\": $el.find(\"form.login-form input[name=password]\").val()\n };\n loginFormType = $config.get(\"loginFormType\", \"normal\");\n promise = $auth.login(data, loginFormType);\n return promise.then(onSuccess, onError);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLogin\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgConfig\", \"$routeParams\", \"$tgNavUrls\", \"$tgEvents\", LoginDirective]);\n\n RegisterDirective = function($auth, $confirm, $location, $navUrls, $config, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n if (!$config.get(\"publicRegisterEnabled\")) {\n $location.path($navUrls.resolve(\"not-found\"));\n $location.replace();\n }\n $scope.data = {};\n form = $el.find(\"form\").checksley({\n onlyOneErrorElement: true\n });\n onSuccessSubmit = function(response) {\n $analytics.trackEvent(\"auth\", \"register\", \"user registration\", 1);\n $confirm.notify(\"success\", \"Our Oompa Loompas are happy, welcome to Taiga.\");\n return $location.path($navUrls.resolve(\"home\"));\n };\n onErrorSubmit = function(response) {\n if (response.data._error_message != null) {\n $confirm.notify(\"light-error\", \"According to our Oompa Loompas there was an error. \" + response.data._error_message);\n }\n return form.setErrors(response.data);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.register($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRegister\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", \"$tgConfig\", \"$tgAnalytics\", RegisterDirective]);\n\n ForgotPasswordDirective = function($auth, $confirm, $location, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Check your inbox!
We have sent a mail to
\" + response.data.email + \"
with the instructions to set a new password\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your are not registered yet.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.forgotPassword($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgForgotPassword\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", ForgotPasswordDirective]);\n\n ChangePasswordFromRecoveryDirective = function($auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n if ($params.token != null) {\n $scope.tokenInParams = true;\n $scope.data.token = $params.token;\n } else {\n $scope.tokenInParams = false;\n }\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Our Oompa Loompas saved your new password.
Try to sign in with it.\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"light-error\", \"One of our Oompa Loompas say '\" + response.data._error_message + \"'.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.changePasswordFromRecovery($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangePasswordFromRecovery\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", ChangePasswordFromRecoveryDirective]);\n\n InvitationDirective = function($auth, $confirm, $location, $params, $navUrls, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var loginForm, onErrorSubmitLogin, onErrorSubmitRegister, onSuccessSubmitLogin, onSuccessSubmitRegister, promise, registerForm, submitLogin, submitRegister, token;\n token = $params.token;\n promise = $auth.getInvitation(token);\n promise.then(function(invitation) {\n return $scope.invitation = invitation;\n });\n promise.then(null, function(response) {\n $location.path($navUrls.resolve(\"login\"));\n return $confirm.success(\"Ooops, we have a problem
Our Oompa Loompas can't find your invitation.\");\n });\n $scope.dataLogin = {\n token: token\n };\n loginForm = $el.find(\"form.login-form\").checksley({\n onlyOneErrorElement: true\n });\n onSuccessSubmitLogin = function(response) {\n $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with existing user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitLogin = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, your are not registered yet or typed an invalid password.\");\n };\n submitLogin = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!loginForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithExistingUser($scope.dataLogin);\n return promise.then(onSuccessSubmitLogin, onErrorSubmitLogin);\n };\n })(this));\n $el.on(\"submit\", \"form.login-form\", submitLogin);\n $el.on(\"click\", \".button-login\", submitLogin);\n $scope.dataRegister = {\n token: token\n };\n registerForm = $el.find(\"form.register-form\").checksley();\n onSuccessSubmitRegister = function(response) {\n $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with new user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitRegister = function(response) {\n return $confirm.notify(\"light-error\", \"According to our Oompa Loompas, that username or email is already in use.\");\n };\n submitRegister = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!registerForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithNewUser($scope.dataRegister);\n return promise.then(onSuccessSubmitRegister, onErrorSubmitRegister);\n };\n })(this));\n $el.on(\"submit\", \"form.register-form\", submitRegister);\n return $el.on(\"click\", \".button-register\", submitRegister);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgInvitation\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$tgAnalytics\", InvitationDirective]);\n\n ChangeEmailDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.email_token = $params.email_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n return $repo.queryOne(\"users\", $auth.getUser().id).then((function(_this) {\n return function(data) {\n $auth.setUser(data);\n $location.path($navUrls.resolve(\"home\"));\n return $confirm.success(\"Our Oompa Loompas updated your email\");\n };\n })(this));\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"error\", \"One of our Oompa Loompas says '\" + response.data._error_message + \"'.\");\n };\n submit = function() {\n var promise;\n if (!form.validate()) {\n return;\n }\n promise = $auth.changeEmail($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n $el.on(\"submit\", function(event) {\n event.preventDefault();\n return submit();\n });\n return $el.on(\"click\", \"a.button-change-email\", function(event) {\n event.preventDefault();\n return submit();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangeEmail\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", ChangeEmailDirective]);\n\n CancelAccountDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.cancel_token = $params.cancel_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $auth.logout();\n $location.path($navUrls.resolve(\"home\"));\n return $confirm.success(\"Our Oompa Loompas removed your account\");\n };\n onErrorSubmit = function(response) {\n return $confirm.notify(\"error\", \"One of our Oompa Loompas says '\" + response.data._error_message + \"'.\");\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.cancelAccount($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgCancelAccount\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", CancelAccountDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/backlog.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaBacklog\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base.coffee\n */\n\n(function() {\n var TaigaMainDirective, bindOnce, groupBy, init, module, taiga, urls;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaBase\", [\"taigaLocales\"]);\n\n TaigaMainDirective = function($rootscope, $window) {\n var link;\n link = function($scope, $el, $attrs) {\n return $window.onresize = function() {\n return $rootscope.$broadcast(\"resize\");\n };\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMain\", [\"$rootScope\", \"$window\", TaigaMainDirective]);\n\n urls = {\n \"home\": \"/\",\n \"error\": \"/error\",\n \"not-found\": \"/not-found\",\n \"permission-denied\": \"/permission-denied\",\n \"login\": \"/login\",\n \"forgot-password\": \"/forgot-password\",\n \"change-password\": \"/change-password/:token\",\n \"change-email\": \"/change-email/:token\",\n \"cancel-account\": \"/cancel-account/:token\",\n \"register\": \"/register\",\n \"invitation\": \"/invitation/:token\",\n \"create-project\": \"/create-project\",\n \"profile\": \"/:user\",\n \"project\": \"/project/:project\",\n \"project-backlog\": \"/project/:project/backlog\",\n \"project-taskboard\": \"/project/:project/taskboard/:sprint\",\n \"project-kanban\": \"/project/:project/kanban\",\n \"project-issues\": \"/project/:project/issues\",\n \"project-search\": \"/project/:project/search\",\n \"project-userstories-detail\": \"/project/:project/us/:ref\",\n \"project-tasks-detail\": \"/project/:project/task/:ref\",\n \"project-issues-detail\": \"/project/:project/issue/:ref\",\n \"project-wiki\": \"/project/:project/wiki\",\n \"project-wiki-page\": \"/project/:project/wiki/:slug\",\n \"project-team\": \"/project/:project/team\",\n \"project-admin-home\": \"/project/:project/admin/project-profile/details\",\n \"project-admin-project-profile-details\": \"/project/:project/admin/project-profile/details\",\n \"project-admin-project-profile-default-values\": \"/project/:project/admin/project-profile/default-values\",\n \"project-admin-project-profile-modules\": \"/project/:project/admin/project-profile/modules\",\n \"project-admin-project-profile-export\": \"/project/:project/admin/project-profile/export\",\n \"project-admin-project-profile-reports\": \"/project/:project/admin/project-profile/reports\",\n \"project-admin-project-values-status\": \"/project/:project/admin/project-values/status\",\n \"project-admin-project-values-points\": \"/project/:project/admin/project-values/points\",\n \"project-admin-project-values-priorities\": \"/project/:project/admin/project-values/priorities\",\n \"project-admin-project-values-severities\": \"/project/:project/admin/project-values/severities\",\n \"project-admin-project-values-types\": \"/project/:project/admin/project-values/types\",\n \"project-admin-project-values-custom-fields\": \"/project/:project/admin/project-values/custom-fields\",\n \"project-admin-memberships\": \"/project/:project/admin/memberships\",\n \"project-admin-roles\": \"/project/:project/admin/roles\",\n \"project-admin-third-parties-webhooks\": \"/project/:project/admin/third-parties/webhooks\",\n \"project-admin-third-parties-github\": \"/project/:project/admin/third-parties/github\",\n \"project-admin-third-parties-gitlab\": \"/project/:project/admin/third-parties/gitlab\",\n \"project-admin-third-parties-bitbucket\": \"/project/:project/admin/third-parties/bitbucket\",\n \"project-admin-contrib\": \"/project/:project/admin/contrib/:plugin\",\n \"user-settings-user-profile\": \"/project/:project/user-settings/user-profile\",\n \"user-settings-user-change-password\": \"/project/:project/user-settings/user-change-password\",\n \"user-settings-user-avatar\": \"/project/:project/user-settings/user-avatar\",\n \"user-settings-mail-notifications\": \"/project/:project/user-settings/mail-notifications\"\n };\n\n init = function($log, $navurls) {\n $log.debug(\"Initialize navigation urls\");\n return $navurls.update(urls);\n };\n\n module.run([\"$log\", \"$tgNavUrls\", init]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common.coffee\n */\n\n(function() {\n var AnimationFrame, AppTitle, CheckPermissionDirective, ClassPermissionDirective, LimitLineLengthDirective, ProjectUrl, Qqueue, SelectedText, Template, ToggleCommentDirective, module, taiga,\n slice = [].slice;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\", []);\n\n SelectedText = function($window, $document) {\n var get;\n get = function() {\n if ($window.getSelection) {\n return $window.getSelection().toString();\n } else if ($document.selection) {\n return $document.selection.createRange().text;\n }\n return \"\";\n };\n return {\n get: get\n };\n };\n\n module.factory(\"$selectedText\", [\"$window\", \"$document\", SelectedText]);\n\n CheckPermissionDirective = function() {\n var link, render;\n render = function($el, project, permission) {\n if (project.my_permissions.indexOf(permission) > -1) {\n return $el.removeClass('hidden');\n }\n };\n link = function($scope, $el, $attrs) {\n var permission;\n $el.addClass('hidden');\n permission = $attrs.tgCheckPermission;\n $scope.$watch(\"project\", function(project) {\n if (project != null) {\n return render($el, project, permission);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgCheckPermission\", CheckPermissionDirective);\n\n ClassPermissionDirective = function() {\n var link, name;\n name = \"tgClassPermission\";\n link = function($scope, $el, $attrs) {\n var checkPermissions, tgClassPermissionWatchAction, unbindWatcher;\n checkPermissions = function(project, className, permission) {\n var negation;\n negation = permission[0] === \"!\";\n if (negation) {\n permission = permission.slice(1);\n }\n if (negation && project.my_permissions.indexOf(permission) === -1) {\n return $el.addClass(className);\n } else if (!negation && project.my_permissions.indexOf(permission) !== -1) {\n return $el.addClass(className);\n } else {\n return $el.removeClass(className);\n }\n };\n tgClassPermissionWatchAction = function(project) {\n var className, classes, permission, results;\n if (project) {\n unbindWatcher();\n classes = $scope.$eval($attrs[name]);\n results = [];\n for (className in classes) {\n permission = classes[className];\n results.push(checkPermissions(project, className, permission));\n }\n return results;\n }\n };\n return unbindWatcher = $scope.$watch(\"project\", tgClassPermissionWatchAction);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgClassPermission\", ClassPermissionDirective);\n\n AnimationFrame = function() {\n var add, animationFrame, performAnimation, tail;\n animationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n performAnimation = (function(_this) {\n return function(time) {\n var fn;\n fn = tail.shift();\n fn();\n if (tail.length) {\n return animationFrame(performAnimation);\n }\n };\n })(this);\n tail = [];\n add = function() {\n var fn, i, len, results;\n results = [];\n for (i = 0, len = arguments.length; i < len; i++) {\n fn = arguments[i];\n tail.push(fn);\n if (tail.length === 1) {\n results.push(animationFrame(performAnimation));\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n return {\n add: add\n };\n };\n\n module.factory(\"animationFrame\", AnimationFrame);\n\n ToggleCommentDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.find(\"textarea\").on(\"focus\", function() {\n return $el.addClass(\"active\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgToggleComment\", ToggleCommentDirective);\n\n AppTitle = function() {\n var set;\n set = function(text) {\n return $(\"title\").text(text);\n };\n return {\n set: set\n };\n };\n\n module.factory(\"$appTitle\", AppTitle);\n\n ProjectUrl = function($navurls) {\n var get;\n get = function(project) {\n var ctx;\n ctx = {\n project: project.slug\n };\n if (project.is_backlog_activated && project.my_permissions.indexOf(\"view_us\") > -1) {\n return $navurls.resolve(\"project-backlog\", ctx);\n }\n if (project.is_kanban_activated && project.my_permissions.indexOf(\"view_us\") > -1) {\n return $navurls.resolve(\"project-kanban\", ctx);\n }\n if (project.is_wiki_activated && project.my_permissions.indexOf(\"view_wiki_pages\") > -1) {\n return $navurls.resolve(\"project-wiki\", ctx);\n }\n if (project.is_issues_activated && project.my_permissions.indexOf(\"view_issues\") > -1) {\n return $navurls.resolve(\"project-issues\", ctx);\n }\n return $navurls.resolve(\"project\", ctx);\n };\n return {\n get: get\n };\n };\n\n module.factory(\"$projectUrl\", [\"$tgNavUrls\", ProjectUrl]);\n\n LimitLineLengthDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var maxColsPerLine;\n maxColsPerLine = parseInt($el.attr(\"cols\"));\n return $el.on(\"keyup\", function(event) {\n var code, lines;\n code = event.keyCode;\n lines = $el.val().split(\"\\n\");\n _.each(lines, function(line, index) {\n return lines[index] = line.substring(0, maxColsPerLine - 2);\n });\n return $el.val(lines.join(\"\\n\"));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLimitLineLength\", LimitLineLengthDirective);\n\n Qqueue = function($q) {\n var deferred, lastPromise, qqueue;\n deferred = $q.defer();\n deferred.resolve();\n lastPromise = deferred.promise;\n qqueue = {\n bindAdd: (function(_this) {\n return function(fn) {\n return function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return lastPromise = lastPromise.then(function() {\n return fn.apply(_this, args);\n });\n };\n return qqueue;\n };\n })(this),\n add: (function(_this) {\n return function(fn) {\n if (!lastPromise) {\n lastPromise = fn();\n } else {\n lastPromise = lastPromise.then(fn);\n }\n return qqueue;\n };\n })(this)\n };\n return qqueue;\n };\n\n module.factory(\"$tgQqueue\", [\"$q\", Qqueue]);\n\n Template = function($templateCache) {\n return {\n get: (function(_this) {\n return function(name, lodash) {\n var tmp;\n if (lodash == null) {\n lodash = false;\n }\n tmp = $templateCache.get(name);\n if (lodash) {\n tmp = _.template(tmp);\n }\n return tmp;\n };\n })(this)\n };\n };\n\n module.factory(\"$tgTemplate\", [\"$templateCache\", Template]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/events.coffee\n */\n\n(function() {\n var EventsProvider, EventsService, bindMethods, module, startswith, taiga;\n\n taiga = this.taiga;\n\n startswith = this.taiga.startswith;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaEvents\", []);\n\n EventsService = (function() {\n function EventsService(win, log, config, auth) {\n this.win = win;\n this.log = log;\n this.config = config;\n this.auth = auth;\n bindMethods(this);\n }\n\n EventsService.prototype.initialize = function(sessionId) {\n this.sessionId = sessionId;\n this.subscriptions = {};\n this.connected = false;\n this.error = false;\n this.pendingMessages = [];\n if (this.win.WebSocket === void 0) {\n return this.log.info(\"WebSockets not supported on your browser\");\n }\n };\n\n EventsService.prototype.setupConnection = function() {\n var loc, path, scheme, url;\n this.stopExistingConnection();\n url = this.config.get(\"eventsUrl\");\n if (!url) {\n return;\n }\n if (!startswith(url, \"ws:\") && !startswith(url, \"wss:\")) {\n loc = this.win.location;\n scheme = loc.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n path = _.str.ltrim(url, \"/\");\n url = scheme + \"//\" + loc.host + \"/\" + path;\n }\n this.ws = new this.win.WebSocket(url);\n this.ws.addEventListener(\"open\", this.onOpen);\n this.ws.addEventListener(\"message\", this.onMessage);\n this.ws.addEventListener(\"error\", this.onError);\n return this.ws.addEventListener(\"close\", this.onClose);\n };\n\n EventsService.prototype.stopExistingConnection = function() {\n if (this.ws === void 0) {\n return;\n }\n this.ws.removeEventListener(\"open\", this.onOpen);\n this.ws.removeEventListener(\"close\", this.onClose);\n this.ws.removeEventListener(\"error\", this.onError);\n this.ws.removeEventListener(\"message\", this.onMessage);\n this.ws.close();\n return delete this.ws;\n };\n\n EventsService.prototype.serialize = function(message) {\n if (_.isObject(message)) {\n return JSON.stringify(message);\n }\n return message;\n };\n\n EventsService.prototype.sendMessage = function(message) {\n var i, len, messages, msg, results;\n this.pendingMessages.push(message);\n if (!this.connected) {\n return;\n }\n messages = _.map(this.pendingMessages, this.serialize);\n this.pendingMessages = [];\n results = [];\n for (i = 0, len = messages.length; i < len; i++) {\n msg = messages[i];\n results.push(this.ws.send(msg));\n }\n return results;\n };\n\n EventsService.prototype.subscribe = function(scope, routingKey, callback) {\n var message, subscription;\n if (this.error) {\n return;\n }\n this.log.debug(\"Subscribe to: \" + routingKey);\n subscription = {\n scope: scope,\n routingKey: routingKey,\n callback: _.debounce(callback, 500, {\n \"leading\": true,\n \"trailing\": false\n })\n };\n message = {\n \"cmd\": \"subscribe\",\n \"routing_key\": routingKey\n };\n this.subscriptions[routingKey] = subscription;\n this.sendMessage(message);\n return scope.$on(\"$destroy\", (function(_this) {\n return function() {\n return _this.unsubscribe(routingKey);\n };\n })(this));\n };\n\n EventsService.prototype.unsubscribe = function(routingKey) {\n var message;\n if (this.error) {\n return;\n }\n this.log.debug(\"Unsubscribe from: \" + routingKey);\n message = {\n \"cmd\": \"unsubscribe\",\n \"routing_key\": routingKey\n };\n return this.sendMessage(message);\n };\n\n EventsService.prototype.onOpen = function() {\n var message, token;\n this.connected = true;\n this.log.debug(\"WebSocket connection opened\");\n token = this.auth.getToken();\n message = {\n cmd: \"auth\",\n data: {\n token: token,\n sessionId: this.sessionId\n }\n };\n return this.sendMessage(message);\n };\n\n EventsService.prototype.onMessage = function(event) {\n var data, routingKey, subscription;\n this.log.debug(\"WebSocket message received: \" + event.data);\n data = JSON.parse(event.data);\n routingKey = data.routing_key;\n if (this.subscriptions[routingKey] == null) {\n return;\n }\n subscription = this.subscriptions[routingKey];\n return subscription.scope.$apply(function() {\n return subscription.callback(data.data);\n });\n };\n\n EventsService.prototype.onError = function(error) {\n this.log.error(\"WebSocket error: \" + error);\n return this.error = true;\n };\n\n EventsService.prototype.onClose = function() {\n this.log.debug(\"WebSocket closed.\");\n return this.connected = false;\n };\n\n return EventsService;\n\n })();\n\n EventsProvider = (function() {\n function EventsProvider() {}\n\n EventsProvider.prototype.setSessionId = function(sessionId) {\n return this.sessionId = sessionId;\n };\n\n EventsProvider.prototype.$get = function($win, $log, $conf, $auth) {\n var service;\n service = new EventsService($win, $log, $conf, $auth);\n service.initialize(this.sessionId);\n return service;\n };\n\n EventsProvider.prototype.$get.$inject = [\"$window\", \"$log\", \"$tgConfig\", \"$tgAuth\"];\n\n return EventsProvider;\n\n })();\n\n module.provider(\"$tgEvents\", EventsProvider);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/feedback.coffee\n */\n\n(function() {\n var FeedbackDirective, bindOnce, debounce, groupBy, mixOf, module, taiga, trim;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n mixOf = this.taiga.mixOf;\n\n debounce = this.taiga.debounce;\n\n trim = this.taiga.trim;\n\n module = angular.module(\"taigaFeedback\", []);\n\n FeedbackDirective = function($lightboxService, $repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley();\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.create(\"feedback\", $scope.feedback);\n promise.then(function(data) {\n $loading.finish(submitButton);\n $lightboxService.close($el);\n return $confirm.notify(\"success\", \"\\\\o/ we'll be happy to read your\");\n });\n return promise.then(null, function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n $scope.$on(\"feedback:show\", function() {\n $scope.$apply(function() {\n return $scope.feedback = {};\n });\n $lightboxService.open($el);\n return $el.find(\"textarea\").focus();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbFeedback\", [\"lightboxService\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", FeedbackDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/integrations.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIntegrations\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/issues.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage, $q) {\n var filtersHashSuffix, hashSuffix, myFiltersHashSuffix, service;\n service = {};\n hashSuffix = \"issues-queryparams\";\n filtersHashSuffix = \"issues-filters\";\n myFiltersHashSuffix = \"issues-my-filters\";\n service.get = function(projectId, issueId) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"issues\", issueId, params);\n };\n service.getByRef = function(projectId, ref) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n return $repo.queryOne(\"issues\", \"by_ref\", params);\n };\n service.list = function(projectId, filters, options) {\n var params;\n params = {\n project: projectId\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryPaginated(\"issues\", params, options);\n };\n service.bulkCreate = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-create-issues\");\n params = {\n project_id: projectId,\n bulk_issues: data\n };\n return $http.post(url, params);\n };\n service.stats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/issues_stats\");\n };\n service.filtersData = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/issue_filters_data\");\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(type, params);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeFilters = function(projectSlug, params) {\n var hash, ns;\n ns = projectSlug + \":\" + filtersHashSuffix;\n hash = generateHash([projectSlug, ns]);\n return $storage.set(hash, params);\n };\n service.getFilters = function(projectSlug) {\n var hash, ns;\n ns = projectSlug + \":\" + filtersHashSuffix;\n hash = generateHash([projectSlug, ns]);\n return $storage.get(hash) || {};\n };\n service.storeMyFilters = function(projectId, myFilters) {\n var deferred, hash, ns, promise, url;\n deferred = $q.defer();\n url = $urls.resolve(\"user-storage\");\n ns = projectId + \":\" + myFiltersHashSuffix;\n hash = generateHash([projectId, ns]);\n if (_.isEmpty(myFilters)) {\n promise = $http[\"delete\"](url + \"/\" + hash, {\n key: hash,\n value: myFilters\n });\n promise.then(function() {\n return deferred.resolve();\n });\n promise.then(null, function() {\n return deferred.reject();\n });\n } else {\n promise = $http.put(url + \"/\" + hash, {\n key: hash,\n value: myFilters\n });\n promise.then(function(data) {\n return deferred.resolve();\n });\n promise.then(null, function(data) {\n var innerPromise;\n innerPromise = $http.post(\"\" + url, {\n key: hash,\n value: myFilters\n });\n innerPromise.then(function() {\n return deferred.resolve();\n });\n return innerPromise.then(null, function() {\n return deferred.reject();\n });\n });\n }\n return deferred.promise;\n };\n service.getMyFilters = function(projectId) {\n var deferred, hash, ns, promise, url;\n deferred = $q.defer();\n url = $urls.resolve(\"user-storage\");\n ns = projectId + \":\" + myFiltersHashSuffix;\n hash = generateHash([projectId, ns]);\n promise = $http.get(url + \"/\" + hash);\n promise.then(function(data) {\n return deferred.resolve(data.data.value);\n });\n promise.then(null, function(data) {\n return deferred.resolve({});\n });\n return deferred.promise;\n };\n return function(instance) {\n return instance.issues = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgIssuesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", \"$q\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/kanban.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($storage) {\n var hashSuffixStatusColumnModes, hashSuffixStatusViewModes, service;\n service = {};\n hashSuffixStatusViewModes = \"kanban-statusviewmodels\";\n hashSuffixStatusColumnModes = \"kanban-statuscolumnmodels\";\n service.storeStatusViewModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusViewModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusViewModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusViewModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeStatusColumnModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusColumnModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n return function(instance) {\n return instance.kanban = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgKanbanResourcesProvider\", [\"$tgStorage\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/locales.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaLocales\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/nav.coffee\n */\n\n(function() {\n var UserSettingsNavigationDirective, module;\n\n UserSettingsNavigationDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var section;\n section = $attrs.tgUserSettingsNavigation;\n $el.find(\".active\").removeClass(\"active\");\n $el.find(\"#usersettingsmenu-\" + section + \" a\").addClass(\"active\");\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module = angular.module(\"taigaUserSettings\");\n\n module.directive(\"tgUserSettingsNavigation\", UserSettingsNavigationDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($config, $repo, $http, $urls, $auth, $q, $rootScope) {\n var service;\n service = {};\n service.get = function(projectId) {\n return $repo.queryOne(\"projects\", projectId);\n };\n service.getBySlug = function(projectSlug) {\n return $repo.queryOne(\"projects\", \"by_slug?slug=\" + projectSlug);\n };\n service.list = function() {\n return $repo.queryMany(\"projects\");\n };\n service.listByMember = function(memberId) {\n var params;\n params = {\n \"member\": memberId\n };\n return $repo.queryMany(\"projects\", params);\n };\n service.templates = function() {\n return $repo.queryMany(\"project-templates\");\n };\n service.usersList = function(projectId) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(\"users\", params);\n };\n service.rolesList = function(projectId) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(\"roles\", params);\n };\n service.stats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/stats\");\n };\n service.regenerate_userstories_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_userstories_csv_uuid\";\n return $http.post(url);\n };\n service.regenerate_issues_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_issues_csv_uuid\";\n return $http.post(url);\n };\n service.regenerate_tasks_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_tasks_csv_uuid\";\n return $http.post(url);\n };\n service.leave = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/leave\";\n return $http.post(url);\n };\n service.memberStats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/member_stats\");\n };\n service.tagsColors = function(projectId) {\n return $repo.queryOne(\"projects\", projectId + \"/tags_colors\");\n };\n service[\"export\"] = function(projectId) {\n var url;\n url = ($urls.resolve(\"exporter\")) + \"/\" + projectId;\n return $http.get(url);\n };\n service[\"import\"] = function(file, statusUpdater) {\n var complete, data, defered, failed, maxFileSize, response, uploadComplete, uploadFailed, uploadProgress, xhr;\n defered = $q.defer();\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered.reject(response);\n return defered.promise;\n }\n uploadProgress = (function(_this) {\n return function(evt) {\n var message, percent;\n percent = Math.round((evt.loaded / evt.total) * 100);\n message = \"Uloaded \" + (sizeFormat(evt.loaded)) + \" of \" + (sizeFormat(evt.total));\n return statusUpdater(\"in-progress\", null, message, percent);\n };\n })(this);\n uploadComplete = (function(_this) {\n return function(evt) {\n return statusUpdater(\"done\", \"Importing Project\", \"This process can take a while, please keep the window open.\");\n };\n })(this);\n uploadFailed = (function(_this) {\n return function(evt) {\n return statusUpdater(\"error\");\n };\n })(this);\n complete = (function(_this) {\n return function(evt) {\n var ref;\n response = {};\n try {\n response.data = JSON.parse(evt.target.responseText);\n } catch (_error) {\n response.data = {};\n }\n response.status = evt.target.status;\n if ((ref = response.status) === 201 || ref === 202) {\n defered.resolve(response);\n }\n return defered.reject(response);\n };\n })(this);\n failed = (function(_this) {\n return function(evt) {\n return defered.reject(\"fail\");\n };\n })(this);\n data = new FormData();\n data.append('dump', file);\n xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.upload.addEventListener(\"load\", uploadComplete, false);\n xhr.upload.addEventListener(\"error\", uploadFailed, false);\n xhr.upload.addEventListener(\"abort\", uploadFailed, false);\n xhr.addEventListener(\"load\", complete, false);\n xhr.addEventListener(\"error\", failed, false);\n xhr.open(\"POST\", $urls.resolve(\"importer\"));\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + ($auth.getToken()));\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send(data);\n return defered.promise;\n };\n return function(instance) {\n return instance.projects = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgProjectsResourcesProvider\", [\"$tgConfig\", \"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgAuth\", \"$q\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/related-tasks.coffee\n */\n\n(function() {\n var RelatedTaskAssignedToInlineEditionDirective, RelatedTaskCreateButtonDirective, RelatedTaskCreateFormDirective, RelatedTaskRowDirective, RelatedTasksDirective, debounce, module, taiga, trim;\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaRelatedTasks\", []);\n\n RelatedTaskRowDirective = function($repo, $compile, $confirm, $rootscope, $loading, $template) {\n var link, templateEdit, templateView;\n templateView = $template.get(\"task/related-task-row.html\", true);\n templateEdit = $template.get(\"task/related-task-row-edit.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var renderEdit, renderView, saveTask;\n saveTask = debounce(2000, function(task) {\n var promise;\n task.subject = $el.find('input').val();\n $loading.start($el.find('.task-name'));\n promise = $repo.save(task);\n promise.then((function(_this) {\n return function() {\n $loading.finish($el.find('.task-name'));\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"related-tasks:update\");\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n $loading.finish($el.find('.task-name'));\n $el.find('input').val(task.subject);\n return $confirm.notify(\"error\");\n };\n })(this));\n return promise;\n });\n renderEdit = function(task) {\n $el.html($compile(templateEdit({\n task: task\n }))($scope));\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return saveTask($model.$modelValue).then(function() {\n return renderView($model.$modelValue);\n });\n } else if (event.keyCode === 27) {\n return renderView($model.$modelValue);\n }\n });\n $el.on(\"click\", \".icon-floppy\", function(event) {\n return saveTask($model.$modelValue).then(function() {\n return renderView($model.$modelValue);\n });\n });\n return $el.on(\"click\", \".cancel-edit\", function(event) {\n return renderView($model.$modelValue);\n });\n };\n renderView = function(task) {\n var perms;\n $el.off();\n perms = {\n modify_task: $scope.project.my_permissions.indexOf(\"modify_task\") !== -1,\n delete_task: $scope.project.my_permissions.indexOf(\"delete_task\") !== -1\n };\n $el.html($compile(templateView({\n task: task,\n perms: perms\n }))($scope));\n $el.on(\"click\", \".icon-edit\", function() {\n renderEdit($model.$modelValue);\n return $el.find('input').focus().select();\n });\n return $el.on(\"click\", \".delete-task\", function(event) {\n var message, title;\n task = $model.$modelValue;\n title = \"Delete Task\";\n message = task.subject;\n return $confirm.askOnDelete(title, message).then(function(finish) {\n var promise;\n promise = $repo.remove(task);\n promise.then(function() {\n finish();\n $confirm.notify(\"success\");\n return $scope.$emit(\"related-tasks:delete\");\n });\n return promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n });\n });\n };\n $scope.$watch($attrs.ngModel, function(val) {\n if (!val) {\n return;\n }\n return renderView(val);\n });\n $scope.$on(\"related-tasks:assigned-to-changed\", function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n $scope.$on(\"related-tasks:status-changed\", function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgRelatedTaskRow\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$rootScope\", \"$tgLoading\", \"$tgTemplate\", RelatedTaskRowDirective]);\n\n RelatedTaskCreateFormDirective = function($repo, $compile, $confirm, $tgmodel, $loading, $analytics, $template) {\n var link, newTask, template;\n template = $template.get(\"task/related-task-create-form.html\", true);\n newTask = {\n subject: \"\",\n assigned_to: null\n };\n link = function($scope, $el, $attrs) {\n var createTask, render;\n createTask = debounce(2000, function(task) {\n var promise;\n task.subject = $el.find('input').val();\n task.assigned_to = $scope.newTask.assigned_to;\n task.status = $scope.newTask.status;\n $scope.newTask.status = $scope.project.default_task_status;\n $scope.newTask.assigned_to = null;\n $loading.start($el.find('.task-name'));\n promise = $repo.create(\"tasks\", task);\n promise.then(function() {\n $analytics.trackEvent(\"task\", \"create\", \"create task on userstory\", 1);\n $loading.finish($el.find('.task-name'));\n $scope.$emit(\"related-tasks:add\");\n return $confirm.notify(\"success\");\n });\n promise.then(null, function() {\n $el.find('input').val(task.subject);\n $loading.finish($el.find('.task-name'));\n return $confirm.notify(\"error\");\n });\n return promise;\n });\n render = function() {\n $el.off();\n $el.html($compile(template())($scope));\n $el.find('input').focus().select();\n $el.addClass('active');\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return createTask(newTask).then(function() {\n return render();\n });\n } else if (event.keyCode === 27) {\n return $el.html(\"\");\n }\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n return $el.html(\"\");\n });\n return $el.on(\"click\", \".icon-floppy\", function(event) {\n return createTask(newTask).then(function() {\n return $el.html(\"\");\n });\n });\n };\n taiga.bindOnce($scope, \"us\", function(val) {\n newTask[\"status\"] = $scope.project.default_task_status;\n newTask[\"project\"] = $scope.project.id;\n newTask[\"user_story\"] = $scope.us.id;\n $scope.newTask = $tgmodel.make_model(\"tasks\", newTask);\n return $el.html(\"\");\n });\n $scope.$on(\"related-tasks:show-form\", function() {\n return render();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateForm\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", \"$tgLoading\", \"$tgAnalytics\", \"$tgTemplate\", RelatedTaskCreateFormDirective]);\n\n RelatedTaskCreateButtonDirective = function($repo, $compile, $confirm, $tgmodel) {\n var link, template;\n template = _.template(\"\");\n link = function($scope, $el, $attrs) {\n $scope.$watch(\"project\", function(val) {\n if (!val) {\n return;\n }\n $el.off();\n if ($scope.project.my_permissions.indexOf(\"add_task\") !== -1) {\n $el.html(template());\n } else {\n $el.html(\"\");\n }\n return $el.on(\"click\", \".icon\", function(event) {\n return $scope.$emit(\"related-tasks:add-new-clicked\");\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateButton\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", RelatedTaskCreateButtonDirective]);\n\n RelatedTasksDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var loadTasks;\n loadTasks = function() {\n return $rs.tasks.list($scope.projectId, null, $scope.usId).then((function(_this) {\n return function(tasks) {\n $scope.tasks = tasks;\n return tasks;\n };\n })(this));\n };\n $scope.$on(\"related-tasks:add\", function() {\n return loadTasks().then(function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n });\n $scope.$on(\"related-tasks:delete\", function() {\n return loadTasks().then(function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n });\n $scope.$on(\"related-tasks:add-new-clicked\", function() {\n return $scope.$broadcast(\"related-tasks:show-form\");\n });\n taiga.bindOnce($scope, \"us\", function(val) {\n return loadTasks();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTasks\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", RelatedTasksDirective]);\n\n RelatedTaskAssignedToInlineEditionDirective = function($repo, $rootscope, popoverService) {\n var link, template;\n template = _.template(\"\\\" alt=\\\"<%- name %>\\\"/>\\n
<%- name %>
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task, updateRelatedTask;\n updateRelatedTask = function(task) {\n var ctx, member;\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = $scope.usersById[task.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name_display;\n }\n $el.find(\".avatar\").html(template(ctx));\n return $el.find(\".task-assignedto\").attr('title', ctx.name);\n };\n $ctrl = $el.controller();\n task = $scope.$eval($attrs.tgRelatedTaskAssignedToInlineEdition);\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n autoSave = !notAutoSave;\n updateRelatedTask(task);\n $el.on(\"click\", \".task-assignedto\", function(event) {\n return $rootscope.$broadcast(\"assigned-to:add\", task);\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_task\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$on(\"assigned-to:added\", debounce(2000, (function(_this) {\n return function(ctx, userId, updatedRelatedTask) {\n if (updatedRelatedTask.id === task.id) {\n updatedRelatedTask.assigned_to = userId;\n if (autoSave) {\n $repo.save(updatedRelatedTask).then(function() {\n return $scope.$emit(\"related-tasks:assigned-to-changed\");\n });\n }\n return updateRelatedTask(updatedRelatedTask);\n }\n };\n })(this)));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", RelatedTaskAssignedToInlineEditionDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources.coffee\n */\n\n(function() {\n var ResourcesService, initResources, initUrls, module, taiga, urls,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n ResourcesService = (function(superClass) {\n extend(ResourcesService, superClass);\n\n function ResourcesService() {\n return ResourcesService.__super__.constructor.apply(this, arguments);\n }\n\n return ResourcesService;\n\n })(taiga.Service);\n\n urls = {\n \"auth\": \"/auth\",\n \"auth-register\": \"/auth/register\",\n \"invitations\": \"/invitations\",\n \"permissions\": \"/permissions\",\n \"roles\": \"/roles\",\n \"projects\": \"/projects\",\n \"memberships\": \"/memberships\",\n \"notify-policies\": \"/notify-policies\",\n \"bulk-create-memberships\": \"/memberships/bulk_create\",\n \"milestones\": \"/milestones\",\n \"userstories\": \"/userstories\",\n \"bulk-create-us\": \"/userstories/bulk_create\",\n \"bulk-update-us-backlog-order\": \"/userstories/bulk_update_backlog_order\",\n \"bulk-update-us-sprint-order\": \"/userstories/bulk_update_sprint_order\",\n \"bulk-update-us-kanban-order\": \"/userstories/bulk_update_kanban_order\",\n \"userstories-restore\": \"/userstories/%s/restore\",\n \"tasks\": \"/tasks\",\n \"bulk-create-tasks\": \"/tasks/bulk_create\",\n \"bulk-update-task-taskboard-order\": \"/tasks/bulk_update_taskboard_order\",\n \"tasks-restore\": \"/tasks/%s/restore\",\n \"issues\": \"/issues\",\n \"bulk-create-issues\": \"/issues/bulk_create\",\n \"issues-restore\": \"/issues/%s/restore\",\n \"wiki\": \"/wiki\",\n \"wiki-restore\": \"/wiki/%s/restore\",\n \"wiki-links\": \"/wiki-links\",\n \"choices/userstory-statuses\": \"/userstory-statuses\",\n \"choices/userstory-statuses/bulk-update-order\": \"/userstory-statuses/bulk_update_order\",\n \"choices/points\": \"/points\",\n \"choices/points/bulk-update-order\": \"/points/bulk_update_order\",\n \"choices/task-statuses\": \"/task-statuses\",\n \"choices/task-statuses/bulk-update-order\": \"/task-statuses/bulk_update_order\",\n \"choices/issue-statuses\": \"/issue-statuses\",\n \"choices/issue-statuses/bulk-update-order\": \"/issue-statuses/bulk_update_order\",\n \"choices/issue-types\": \"/issue-types\",\n \"choices/issue-types/bulk-update-order\": \"/issue-types/bulk_update_order\",\n \"choices/priorities\": \"/priorities\",\n \"choices/priorities/bulk-update-order\": \"/priorities/bulk_update_order\",\n \"choices/severities\": \"/severities\",\n \"choices/severities/bulk-update-order\": \"/severities/bulk_update_order\",\n \"search\": \"/search\",\n \"sites\": \"/sites\",\n \"project-templates\": \"/project-templates\",\n \"site-members\": \"/site-members\",\n \"site-projects\": \"/site-projects\",\n \"users\": \"/users\",\n \"users-password-recovery\": \"/users/password_recovery\",\n \"users-change-password-from-recovery\": \"/users/change_password_from_recovery\",\n \"users-change-password\": \"/users/change_password\",\n \"users-change-email\": \"/users/change_email\",\n \"users-cancel-account\": \"/users/cancel\",\n \"user-storage\": \"/user-storage\",\n \"resolver\": \"/resolver\",\n \"userstory-statuses\": \"/userstory-statuses\",\n \"points\": \"/points\",\n \"task-statuses\": \"/task-statuses\",\n \"issue-statuses\": \"/issue-statuses\",\n \"issue-types\": \"/issue-types\",\n \"priorities\": \"/priorities\",\n \"severities\": \"/severities\",\n \"project-modules\": \"/projects/%s/modules\",\n \"webhooks\": \"/webhooks\",\n \"webhooks-test\": \"/webhooks/%s/test\",\n \"webhooklogs\": \"/webhooklogs\",\n \"webhooklogs-resend\": \"/webhooklogs/%s/resend\",\n \"history/us\": \"/history/userstory\",\n \"history/issue\": \"/history/issue\",\n \"history/task\": \"/history/task\",\n \"history/wiki\": \"/history/wiki\",\n \"attachments/us\": \"/userstories/attachments\",\n \"attachments/issue\": \"/issues/attachments\",\n \"attachments/task\": \"/tasks/attachments\",\n \"attachments/wiki_page\": \"/wiki/attachments\",\n \"custom-attributes/userstory\": \"/userstory-custom-attributes\",\n \"custom-attributes/issue\": \"/issue-custom-attributes\",\n \"custom-attributes/task\": \"/task-custom-attributes\",\n \"custom-attributes-values/userstory\": \"/userstories/custom-attributes-values\",\n \"custom-attributes-values/issue\": \"/issues/custom-attributes-values\",\n \"custom-attributes-values/task\": \"/tasks/custom-attributes-values\",\n \"feedback\": \"/feedback\",\n \"exporter\": \"/exporter\",\n \"importer\": \"/importer/load_dump\",\n \"userstories-csv\": \"/userstories/csv?uuid=%s\",\n \"tasks-csv\": \"/tasks/csv?uuid=%s\",\n \"issues-csv\": \"/issues/csv?uuid=%s\"\n };\n\n initUrls = function($log, $urls) {\n $log.debug(\"Initialize api urls\");\n return $urls.update(urls);\n };\n\n initResources = function($log, $rs) {\n var i, len, provider, providers, results;\n $log.debug(\"Initialize resources\");\n providers = _.toArray(arguments).slice(2);\n results = [];\n for (i = 0, len = providers.length; i < len; i++) {\n provider = providers[i];\n results.push(provider($rs));\n }\n return results;\n };\n\n module = angular.module(\"taigaResources\", [\"taigaBase\"]);\n\n module.service(\"$tgResources\", ResourcesService);\n\n module.run([\"$log\", \"$tgUrls\", initUrls]);\n\n module.run([\"$log\", \"$tgResources\", \"$tgProjectsResourcesProvider\", \"$tgCustomAttributesResourcesProvider\", \"$tgCustomAttributesValuesResourcesProvider\", \"$tgMembershipsResourcesProvider\", \"$tgNotifyPoliciesResourcesProvider\", \"$tgInvitationsResourcesProvider\", \"$tgRolesResourcesProvider\", \"$tgUserSettingsResourcesProvider\", \"$tgSprintsResourcesProvider\", \"$tgUserstoriesResourcesProvider\", \"$tgTasksResourcesProvider\", \"$tgIssuesResourcesProvider\", \"$tgWikiResourcesProvider\", \"$tgSearchResourcesProvider\", \"$tgAttachmentsResourcesProvider\", \"$tgMdRenderResourcesProvider\", \"$tgHistoryResourcesProvider\", \"$tgKanbanResourcesProvider\", \"$tgModulesResourcesProvider\", \"$tgWebhooksResourcesProvider\", \"$tgWebhookLogsResourcesProvider\", initResources]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/search.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service[\"do\"] = function(projectId, term) {\n var params, url;\n url = $urls.resolve(\"search\");\n params = {\n project: projectId,\n text: term,\n get_all: false\n };\n return $http.get(url, params).then(function(data) {\n return data.data;\n });\n };\n return function(instance) {\n return instance.search = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgSearchResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/taskboard.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTaskboard\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/tasks.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage) {\n var hashSuffix, hashSuffixStatusColumnModes, hashSuffixUsRowModes, service;\n service = {};\n hashSuffix = \"tasks-queryparams\";\n hashSuffixStatusColumnModes = \"tasks-statuscolumnmodels\";\n hashSuffixUsRowModes = \"tasks-usrowmodels\";\n service.get = function(projectId, taskId) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"tasks\", taskId, params);\n };\n service.getByRef = function(projectId, ref) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n return $repo.queryOne(\"tasks\", \"by_ref\", params);\n };\n service.list = function(projectId, sprintId, userStoryId) {\n var params;\n if (sprintId == null) {\n sprintId = null;\n }\n if (userStoryId == null) {\n userStoryId = null;\n }\n params = {\n project: projectId\n };\n if (sprintId) {\n params.milestone = sprintId;\n }\n if (userStoryId) {\n params.user_story = userStoryId;\n }\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"tasks\", params);\n };\n service.bulkCreate = function(projectId, sprintId, usId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-create-tasks\");\n params = {\n project_id: projectId,\n sprint_id: sprintId,\n us_id: usId,\n bulk_tasks: data\n };\n return $http.post(url, params).then(function(result) {\n return result.data;\n });\n };\n service.bulkUpdateTaskTaskboardOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-task-taskboard-order\");\n params = {\n project_id: projectId,\n bulk_tasks: data\n };\n return $http.post(url, params);\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(type, params);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeStatusColumnModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusColumnModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeUsRowModes = function(projectId, sprintId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUsRowModes;\n hash = generateHash([projectId, sprintId, ns]);\n return $storage.set(hash, params);\n };\n service.getUsRowModes = function(projectId, sprintId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUsRowModes;\n hash = generateHash([projectId, sprintId, ns]);\n return $storage.get(hash) || {};\n };\n return function(instance) {\n return instance.tasks = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgTasksResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/team.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTeam\", []);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($config, $repo, $http, $urls, $q) {\n var service;\n service = {};\n service.changeAvatar = function(file) {\n var data, defered, maxFileSize, options, response, url;\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered = $q.defer();\n defered.reject(response);\n return defered.promise;\n }\n data = new FormData();\n data.append('avatar', file);\n options = {\n transformRequest: angular.identity,\n headers: {\n 'Content-Type': void 0\n }\n };\n url = ($urls.resolve(\"users\")) + \"/change_avatar\";\n return $http.post(url, data, {}, options);\n };\n service.removeAvatar = function() {\n var url;\n url = ($urls.resolve(\"users\")) + \"/remove_avatar\";\n return $http.post(url);\n };\n service.changePassword = function(currentPassword, newPassword) {\n var data, url;\n url = ($urls.resolve(\"users\")) + \"/change_password\";\n data = {\n current_password: currentPassword,\n password: newPassword\n };\n return $http.post(url, data);\n };\n return function(instance) {\n return instance.userSettings = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgUserSettingsResourcesProvider\", [\"$tgConfig\", \"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$q\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/userstories.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage) {\n var hashSuffix, service;\n service = {};\n hashSuffix = \"userstories-queryparams\";\n service.get = function(projectId, usId) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"userstories\", usId, params);\n };\n service.getByRef = function(projectId, ref) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n return $repo.queryOne(\"userstories\", \"by_ref\", params);\n };\n service.listUnassigned = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId,\n \"milestone\": \"null\"\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"userstories\", params);\n };\n service.listAll = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"userstories\", params);\n };\n service.bulkCreate = function(projectId, status, bulk) {\n var data, url;\n data = {\n project_id: projectId,\n status_id: status,\n bulk_stories: bulk\n };\n url = $urls.resolve(\"bulk-create-us\");\n return $http.post(url, data);\n };\n service.bulkUpdateBacklogOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-backlog-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.bulkUpdateSprintOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-sprint-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.bulkUpdateKanbanOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-kanban-order\");\n params = {\n project_id: projectId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(type, params);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeShowTags = function(projectId, showTags) {\n var hash;\n hash = generateHash([projectId, 'showTags']);\n return $storage.set(hash, showTags);\n };\n service.getShowTags = function(projectId) {\n var hash;\n hash = generateHash([projectId, 'showTags']);\n return $storage.get(hash) || null;\n };\n return function(instance) {\n return instance.userstories = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgUserstoriesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/wikis.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(wikiId) {\n return $repo.queryOne(\"wiki\", wikiId);\n };\n service.getBySlug = function(projectId, slug) {\n return $repo.queryOne(\"wiki\", \"by_slug?project=\" + projectId + \"&slug=\" + slug);\n };\n service.listLinks = function(projectId) {\n return $repo.queryMany(\"wiki-links\", {\n project: projectId\n });\n };\n return function(instance) {\n return instance.wiki = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWikiResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/analytics.coffee\n */\n\n(function() {\n var AnalyticsService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n AnalyticsService = (function(superClass) {\n extend(AnalyticsService, superClass);\n\n AnalyticsService.$inject = [\"$rootScope\", \"$log\", \"$tgConfig\", \"$window\", \"$document\", \"$location\"];\n\n function AnalyticsService(rootscope, log, config, win, doc, location) {\n var conf;\n this.rootscope = rootscope;\n this.log = log;\n this.config = config;\n this.win = win;\n this.doc = doc;\n this.location = location;\n this.initialized = false;\n conf = this.config.get(\"analytics\", {});\n this.accountId = conf.accountId;\n this.pageEvent = conf.pageEvent || \"$routeChangeSuccess\";\n this.trackRoutes = conf.trackRoutes || true;\n this.ignoreFirstPageLoad = conf.ignoreFirstPageLoad || false;\n }\n\n AnalyticsService.prototype.initialize = function() {\n if (!this.accountId) {\n this.log.debug(\"Analytics: no acount id provided. Disabling.\");\n return;\n }\n this.injectAnalytics();\n this.win.ga(\"create\", this.accountId, \"auto\");\n this.win.ga(\"require\", \"displayfeatures\");\n if (this.trackRoutes && (!this.ignoreFirstPageLoad)) {\n this.win.ga(\"send\", \"pageview\", this.getUrl());\n }\n if (this.trackRoutes) {\n this.rootscope.$on(this.pageEvent, (function(_this) {\n return function() {\n return _this.trackPage(_this.getUrl(), \"Taiga\");\n };\n })(this));\n }\n return this.initialized = true;\n };\n\n AnalyticsService.prototype.getUrl = function() {\n return this.location.path();\n };\n\n AnalyticsService.prototype.injectAnalytics = function() {\n var fn;\n fn = (function(i,s,o,g,r,a,m){i[\"GoogleAnalyticsObject\"]=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments);},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m);});\n return fn(window, document, \"script\", \"//www.google-analytics.com/analytics.js\", \"ga\");\n };\n\n AnalyticsService.prototype.trackPage = function(url, title) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n title = title || this.doc[0].title;\n return this.win.ga(\"send\", \"pageview\", {\n \"page\": url,\n \"title\": title\n });\n };\n\n AnalyticsService.prototype.trackEvent = function(category, action, label, value) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n return this.win.ga(\"send\", \"event\", category, action, label, value);\n };\n\n return AnalyticsService;\n\n })(taiga.Service);\n\n module.service(\"$tgAnalytics\", AnalyticsService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/attachments.coffee\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($rootScope, $config, $urls, $model, $repo, $auth, $q) {\n var service;\n service = {};\n service.list = function(urlName, objectId, projectId) {\n var params;\n params = {\n object_id: objectId,\n project: projectId\n };\n return $repo.queryMany(urlName, params);\n };\n service.create = function(urlName, projectId, objectId, file) {\n var data, defered, maxFileSize, response, uploadComplete, uploadFailed, uploadProgress, xhr;\n defered = $q.defer();\n if (file === void 0) {\n defered.reject(null);\n return defered.promise;\n }\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered.reject(response);\n return defered.promise;\n }\n uploadProgress = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n file.status = \"in-progress\";\n file.size = sizeFormat(evt.total);\n file.progressMessage = \"upload \" + (sizeFormat(evt.loaded)) + \" of \" + (sizeFormat(evt.total));\n return file.progressPercent = (Math.round((evt.loaded / evt.total) * 100)) + \"%\";\n });\n };\n })(this);\n uploadComplete = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n var data, model;\n file.status = \"done\";\n try {\n data = JSON.parse(evt.target.responseText);\n } catch (_error) {\n data = {};\n }\n model = $model.make_model(urlName, data);\n return defered.resolve(model);\n });\n };\n })(this);\n uploadFailed = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n file.status = \"error\";\n return defered.reject(\"fail\");\n });\n };\n })(this);\n data = new FormData();\n data.append(\"project\", projectId);\n data.append(\"object_id\", objectId);\n data.append(\"attached_file\", file);\n xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.addEventListener(\"load\", uploadComplete, false);\n xhr.addEventListener(\"error\", uploadFailed, false);\n xhr.open(\"POST\", $urls.resolve(urlName));\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + ($auth.getToken()));\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send(data);\n return defered.promise;\n };\n return function(instance) {\n return instance.attachments = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgAttachmentsResourcesProvider\", [\"$rootScope\", \"$tgConfig\", \"$tgUrls\", \"$tgModel\", \"$tgRepo\", \"$tgAuth\", \"$q\", resourceProvider]);\n\n}).call(this);\n","(function() {\n var BindScope, module;\n\n module = angular.module(\"taigaCommon\");\n\n BindScope = function(config) {\n var link;\n if (!config.debugInfo) {\n jQuery.fn.scope = function() {\n return this.data('scope');\n };\n }\n link = function($scope, $el) {\n if (!config.debugInfo) {\n return $el.data('scope', $scope).addClass('tg-scope');\n }\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBindScope\", [\"$tgConfig\", BindScope]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/components.coffee\n */\n\n(function() {\n var AssignedToDirective, BlockButtonDirective, CreatedByDisplayDirective, DateRangeDirective, DateSelectorDirective, DeleteButtonDirective, EditableDescriptionDirective, EditableSubjectDirective, ListItemAssignedtoDirective, ListItemIssueStatusDirective, ListItemPriorityDirective, ListItemSeverityDirective, ListItemTaskStatusDirective, ListItemTypeDirective, ListItemUsStatusDirective, SprintProgressBarDirective, TgMainTitleDirective, TgProgressBarDirective, WatchersDirective, bindOnce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n DateRangeDirective = function() {\n var link, renderRange;\n renderRange = function($el, first, second) {\n var endDate, initDate;\n initDate = moment(first).format(\"DD MMM YYYY\");\n endDate = moment(second).format(\"DD MMM YYYY\");\n return $el.html(initDate + \"-\" + endDate);\n };\n link = function($scope, $el, $attrs) {\n var first, ref, second;\n ref = $attrs.tgDateRange.split(\",\"), first = ref[0], second = ref[1];\n return bindOnce($scope, first, function(valFirst) {\n return bindOnce($scope, second, function(valSecond) {\n return renderRange($el, valFirst, valSecond);\n });\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgDateRange\", DateRangeDirective);\n\n DateSelectorDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var selectedDate;\n selectedDate = null;\n $el.picker = new Pikaday({\n field: $el[0],\n format: \"DD MMM YYYY\",\n onSelect: (function(_this) {\n return function(date) {\n return selectedDate = date;\n };\n })(this),\n onOpen: (function(_this) {\n return function() {\n if (selectedDate != null) {\n return $el.picker.setDate(selectedDate);\n }\n };\n })(this)\n });\n return $scope.$watch($attrs.ngModel, function(val) {\n if (val != null) {\n return $el.picker.setDate(val);\n }\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgDateSelector\", DateSelectorDirective);\n\n SprintProgressBarDirective = function() {\n var link, renderProgress;\n renderProgress = function($el, percentage, visual_percentage) {\n if ($el.hasClass(\".current-progress\")) {\n return $el.css(\"width\", percentage + \"%\");\n } else {\n $el.find(\".current-progress\").css(\"width\", visual_percentage + \"%\");\n return $el.find(\".number\").html(percentage + \" %\");\n }\n };\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgSprintProgressbar, function(sprint) {\n var closedPoints, percentage, totalPoints, visual_percentage;\n closedPoints = sprint.closed_points;\n totalPoints = sprint.total_points;\n percentage = 0;\n if (totalPoints !== 0) {\n percentage = Math.round(100 * (closedPoints / totalPoints));\n }\n visual_percentage = 0;\n if (totalPoints !== 0) {\n visual_percentage = Math.round(98 * (closedPoints / totalPoints));\n }\n return renderProgress($el, percentage, visual_percentage);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSprintProgressbar\", SprintProgressBarDirective);\n\n CreatedByDisplayDirective = function($template) {\n var link, template;\n template = $template.get(\"common/components/created-by.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(model) {\n var html, owner, ref;\n owner = ((ref = $scope.usersById) != null ? ref[model.owner] : void 0) || {\n full_name_display: \"external user\",\n photo: \"/images/unnamed.png\"\n };\n html = template({\n owner: owner,\n date: moment(model.created_date).format(\"DD MMM YYYY HH:mm\")\n });\n return $el.html(html);\n };\n bindOnce($scope, $attrs.ngModel, function(model) {\n if (model != null) {\n return render(model);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgCreatedByDisplay\", [\"$tgTemplate\", CreatedByDisplayDirective]);\n\n WatchersDirective = function($rootscope, $confirm, $repo, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/watchers.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var deleteWatcher, isEditable, renderWatchers, save;\n isEditable = function() {\n var ref, ref1;\n return ((ref = $scope.project) != null ? (ref1 = ref.my_permissions) != null ? ref1.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(watchers) {\n var item, promise;\n item = $model.$modelValue.clone();\n item.watchers = watchers;\n $model.$setViewValue(item);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n watchers = _.map(watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n renderWatchers(watchers);\n return $rootscope.$broadcast(\"history:reload\");\n });\n return promise.then(null, function() {\n return $model.$modelValue.revert();\n });\n };\n })(this));\n deleteWatcher = $qqueue.bindAdd((function(_this) {\n return function(watcherIds) {\n var item, promise;\n item = $model.$modelValue.clone();\n item.watchers = watcherIds;\n $model.$setViewValue(item);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n var watchers;\n $confirm.notify(\"success\");\n watchers = _.map(item.watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n renderWatchers(watchers);\n return $rootscope.$broadcast(\"history:reload\");\n });\n return promise.then(null, function() {\n item.revert();\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n renderWatchers = function(watchers) {\n var ctx, html;\n ctx = {\n watchers: watchers,\n isEditable: isEditable()\n };\n html = template(ctx);\n $el.html(html);\n if (isEditable() && watchers.length === 0) {\n $el.find(\".title\").text(\"Add watchers\");\n return $el.find(\".watchers-header\").addClass(\"no-watchers\");\n }\n };\n $el.on(\"click\", \".icon-delete\", function(event) {\n var message, target, title, watcherId;\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n watcherId = target.data(\"watcher-id\");\n title = \"Delete watcher\";\n message = $scope.usersById[watcherId].full_name_display;\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(finish) {\n var watcherIds;\n finish();\n watcherIds = _.clone($model.$modelValue.watchers, false);\n watcherIds = _.pull(watcherIds, watcherId);\n return deleteWatcher(watcherIds);\n };\n })(this));\n });\n $el.on(\"click\", \".add-watcher\", function(event) {\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n return $scope.$apply(function() {\n return $rootscope.$broadcast(\"watcher:add\", $model.$modelValue);\n });\n });\n $scope.$on(\"watcher:added\", function(ctx, watcherId) {\n var watchers;\n watchers = _.clone($model.$modelValue.watchers, false);\n watchers.push(watcherId);\n watchers = _.uniq(watchers);\n return save(watchers);\n });\n $scope.$watch($attrs.ngModel, function(item) {\n var watchers;\n if (item == null) {\n return;\n }\n watchers = _.map(item.watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n return renderWatchers(watchers);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgWatchers\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgQqueue\", \"$tgTemplate\", WatchersDirective]);\n\n AssignedToDirective = function($rootscope, $confirm, $repo, $loading, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/assigned-to.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, renderAssignedTo, save;\n isEditable = function() {\n var ref, ref1;\n return ((ref = $scope.project) != null ? (ref1 = ref.my_permissions) != null ? ref1.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(userId) {\n var promise;\n $model.$modelValue.assigned_to = userId;\n $loading.start($el);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $loading.finish($el);\n $confirm.notify(\"success\");\n renderAssignedTo($model.$modelValue);\n return $rootscope.$broadcast(\"history:reload\");\n });\n promise.then(null, function() {\n $model.$modelValue.revert();\n $confirm.notify(\"error\");\n return $loading.finish($el);\n });\n return promise;\n };\n })(this));\n renderAssignedTo = function(issue) {\n var assignedTo, assignedToId, ctx, html;\n assignedToId = issue != null ? issue.assigned_to : void 0;\n assignedTo = assignedToId != null ? $scope.usersById[assignedToId] : null;\n ctx = {\n assignedTo: assignedTo,\n isEditable: isEditable()\n };\n html = template(ctx);\n return $el.html(html);\n };\n $el.on(\"click\", \".user-assigned\", function(event) {\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n return $scope.$apply(function() {\n return $rootscope.$broadcast(\"assigned-to:add\", $model.$modelValue);\n });\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n var title;\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n title = \"Are you sure you want to leave it unassigned?\";\n return $confirm.ask(title).then((function(_this) {\n return function(finish) {\n finish();\n $model.$modelValue.assigned_to = null;\n return save(null);\n };\n })(this));\n });\n $scope.$on(\"assigned-to:added\", function(ctx, userId, item) {\n if (item.id !== $model.$modelValue.id) {\n return;\n }\n return save(userId);\n });\n $scope.$watch($attrs.ngModel, function(instance) {\n return renderAssignedTo(instance);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgAssignedTo\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", AssignedToDirective]);\n\n BlockButtonDirective = function($rootscope, $loading, $template) {\n var link, template;\n template = $template.get(\"common/components/block-button.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_us\") !== -1;\n };\n $scope.$watch($attrs.ngModel, function(item) {\n if (!item) {\n return;\n }\n if (isEditable()) {\n $el.find('.item-block').addClass('editable');\n }\n if (item.is_blocked) {\n $el.find('.item-block').hide();\n return $el.find('.item-unblock').show();\n } else {\n $el.find('.item-block').show();\n return $el.find('.item-unblock').hide();\n }\n });\n $el.on(\"click\", \".item-block\", function(event) {\n event.preventDefault();\n return $rootscope.$broadcast(\"block\", $model.$modelValue);\n });\n $el.on(\"click\", \".item-unblock\", function(event) {\n var finish;\n event.preventDefault();\n $loading.start($el.find(\".item-unblock\"));\n finish = function() {\n return $loading.finish($el.find(\".item-unblock\"));\n };\n return $rootscope.$broadcast(\"unblock\", $model.$modelValue, finish);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgBlockButton\", [\"$rootScope\", \"$tgLoading\", \"$tgTemplate\", BlockButtonDirective]);\n\n DeleteButtonDirective = function($log, $repo, $confirm, $location, $template) {\n var link, template;\n template = $template.get(\"common/components/delete-button.html\");\n link = function($scope, $el, $attrs, $model) {\n if (!$attrs.onDeleteGoToUrl) {\n return $log.error(\"DeleteButtonDirective requires on-delete-go-to-url set in scope.\");\n }\n if (!$attrs.onDeleteTitle) {\n return $log.error(\"DeleteButtonDirective requires on-delete-title set in scope.\");\n }\n $el.on(\"click\", \".button\", function(event) {\n var subtitle, title;\n title = $scope.$eval($attrs.onDeleteTitle);\n subtitle = $model.$modelValue.subject;\n return $confirm.askOnDelete(title, subtitle).then((function(_this) {\n return function(finish) {\n var promise;\n promise = $repo.remove($model.$modelValue);\n promise.then(function() {\n var url;\n finish();\n url = $scope.$eval($attrs.onDeleteGoToUrl);\n return $location.path(url);\n });\n return promise.then(null, function() {\n finish(false);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgDeleteButton\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"$tgTemplate\", DeleteButtonDirective]);\n\n EditableSubjectDirective = function($rootscope, $repo, $confirm, $loading, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/editable-subject.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(subject) {\n var promise;\n $model.$modelValue.subject = subject;\n $loading.start($el.find('.save-container'));\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"history:reload\");\n $el.find('.edit-subject').hide();\n return $el.find('.view-subject').show();\n });\n promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n promise[\"finally\"](function() {\n return $loading.finish($el.find('.save-container'));\n });\n return promise;\n };\n })(this));\n $el.click(function() {\n if (!isEditable()) {\n return;\n }\n $el.find('.edit-subject').show();\n $el.find('.view-subject').hide();\n return $el.find('input').focus();\n });\n $el.on(\"click\", \".save\", function() {\n var subject;\n subject = $scope.item.subject;\n return save(subject);\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var subject;\n if (event.keyCode === 13) {\n subject = $scope.item.subject;\n return save(subject);\n } else if (event.keyCode === 27) {\n $scope.$apply((function(_this) {\n return function() {\n return $model.$modelValue.revert();\n };\n })(this));\n $el.find('div.edit-subject').hide();\n return $el.find('div.view-subject').show();\n }\n });\n $el.find('div.edit-subject').hide();\n $el.find('div.view-subject span.edit').hide();\n $scope.$watch($attrs.ngModel, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n if (!isEditable()) {\n return $el.find('.view-subject .edit').remove();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgEditableSubject\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", EditableSubjectDirective]);\n\n EditableDescriptionDirective = function($rootscope, $repo, $confirm, $compile, $loading, $selectedText, $qqueue, $template) {\n var link, noDescriptionMegEditMode, noDescriptionMegReadMode, template;\n template = $template.get(\"common/components/editable-description.html\");\n noDescriptionMegEditMode = $template.get(\"common/components/editable-description-msg-edit-mode.html\");\n noDescriptionMegReadMode = $template.get(\"common/components/editable-description-msg-read-mode.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, save;\n $el.find('.edit-description').hide();\n $el.find('.view-description .edit').hide();\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(description) {\n var promise;\n $model.$modelValue.description = description;\n $loading.start($el.find('.save-container'));\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"history:reload\");\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n });\n promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return promise[\"finally\"](function() {\n return $loading.finish($el.find('.save-container'));\n });\n };\n })(this));\n $el.on(\"mouseup\", \".view-description\", function(event) {\n var target;\n target = angular.element(event.target);\n if (!isEditable()) {\n return;\n }\n if (target.is('a')) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n $el.find('.edit-description').show();\n $el.find('.view-description').hide();\n return $el.find('textarea').focus();\n });\n $el.on(\"click\", \".save\", function(e) {\n var description;\n e.preventDefault();\n description = $scope.item.description;\n return save(description);\n });\n $el.on(\"keydown\", \"textarea\", function(event) {\n if (event.keyCode === 27) {\n $scope.$apply((function(_this) {\n return function() {\n return $scope.item.revert();\n };\n })(this));\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n }\n });\n $scope.$watch($attrs.ngModel, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n if (isEditable()) {\n $el.find('.view-description .edit').show();\n $el.find('.view-description .us-content').addClass('editable');\n return $scope.noDescriptionMsg = noDescriptionMegEditMode;\n } else {\n return $scope.noDescriptionMsg = noDescriptionMegReadMode;\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgEditableDescription\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$compile\", \"$tgLoading\", \"$selectedText\", \"$tgQqueue\", \"$tgTemplate\", EditableDescriptionDirective]);\n\n ListItemIssueStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemIssueStatus);\n return bindOnce($scope, \"issueStatusById\", function(issueStatusById) {\n return $el.html(issueStatusById[issue.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n ListItemTaskStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var task;\n task = $scope.$eval($attrs.tgListitemTaskStatus);\n return bindOnce($scope, \"taskStatusById\", function(taskStatusById) {\n return $el.html(taskStatusById[task.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n ListItemUsStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var us;\n us = $scope.$eval($attrs.tgListitemUsStatus);\n return bindOnce($scope, \"usStatusById\", function(usStatusById) {\n return $el.html(usStatusById[us.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n ListItemAssignedtoDirective = function($template) {\n var link, template;\n template = $template.get(\"common/components/list-item-assigned-to-avatar.html\", true);\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, \"membersById\", function(membersById) {\n var ctx, item, member;\n item = $scope.$eval($attrs.tgListitemAssignedto);\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = membersById[item.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name;\n }\n return $el.html(template(ctx));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemAssignedto\", [\"$tgTemplate\", ListItemAssignedtoDirective]);\n\n ListItemPriorityDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(priorityById, issue) {\n var domNode, priority;\n priority = priorityById[issue.priority];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", priority.color);\n return domNode.attr(\"title\", priority.name);\n };\n bindOnce($scope, \"priorityById\", function(priorityById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemPriority);\n return render(priorityById, issue);\n });\n return $scope.$watch($attrs.tgListitemPriority, function(issue) {\n return render($scope.priorityById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n module.directive(\"tgListitemPriority\", ListItemPriorityDirective);\n\n ListItemSeverityDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(severityById, issue) {\n var domNode, severity;\n severity = severityById[issue.severity];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", severity.color);\n return domNode.attr(\"title\", severity.name);\n };\n bindOnce($scope, \"severityById\", function(severityById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemSeverity);\n return render(severityById, issue);\n });\n return $scope.$watch($attrs.tgListitemSeverity, function(issue) {\n return render($scope.severityById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n ListItemTypeDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(issueTypeById, issue) {\n var domNode, type;\n type = issueTypeById[issue.type];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", type.color);\n return domNode.attr(\"title\", type.name);\n };\n bindOnce($scope, \"issueTypeById\", function(issueTypeById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemType);\n return render(issueTypeById, issue);\n });\n return $scope.$watch($attrs.tgListitemType, function(issue) {\n return render($scope.issueTypeById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n TgProgressBarDirective = function($template) {\n var link, render, template;\n template = $template.get(\"common/components/progress-bar.html\", true);\n render = function(el, percentage) {\n return el.html(template({\n percentage: percentage\n }));\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch($attrs.tgProgressBar, function(percentage) {\n percentage = _.max([0, percentage]);\n percentage = _.min([100, percentage]);\n return render($el, percentage);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProgressBar\", [\"$tgTemplate\", TgProgressBarDirective]);\n\n TgMainTitleDirective = function($template) {\n var link, render, template;\n template = $template.get(\"common/components/main-title.html\", true);\n render = function(el, projectName, sectionName) {\n return el.html(template({\n projectName: projectName,\n sectionName: sectionName\n }));\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch(\"project\", function(project) {\n if (project) {\n return render($el, project.name, $scope.sectionName);\n }\n });\n $scope.$on(\"project:loaded\", (function(_this) {\n return function(ctx, project) {\n return render($el, project.name, $scope.sectionName);\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMainTitle\", [\"$tgTemplate\", TgMainTitleDirective]);\n\n module.directive(\"tgListitemType\", ListItemTypeDirective);\n\n module.directive(\"tgListitemIssueStatus\", ListItemIssueStatusDirective);\n\n module.directive(\"tgListitemSeverity\", ListItemSeverityDirective);\n\n module.directive(\"tgListitemTaskStatus\", ListItemTaskStatusDirective);\n\n module.directive(\"tgListitemUsStatus\", ListItemUsStatusDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/confirm.coffee\n */\n\n(function() {\n var ConfirmService, NOTIFICATION_MSG, bindMethods, cancelTimeout, debounce, module, taiga, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n timeout = this.taiga.timeout;\n\n cancelTimeout = this.taiga.cancelTimeout;\n\n debounce = this.taiga.debounce;\n\n bindMethods = this.taiga.bindMethods;\n\n NOTIFICATION_MSG = {\n \"success\": {\n title: \"Everything is ok\",\n message: \"Our Oompa Loompas saved all your changes!\"\n },\n \"error\": {\n title: \"Oops, something happened...\",\n message: \"Our Oompa Loompas are sad, your changes were not saved!\"\n },\n \"light-error\": {\n title: \"Oops, something happened...\",\n message: \"Our Oompa Loompas are sad, your changes were not saved!\"\n }\n };\n\n ConfirmService = (function(superClass) {\n extend(ConfirmService, superClass);\n\n ConfirmService.$inject = [\"$q\", \"lightboxService\", \"$tgLoading\"];\n\n function ConfirmService(q, lightboxService, loading) {\n this.q = q;\n this.lightboxService = lightboxService;\n this.loading = loading;\n bindMethods(this);\n }\n\n ConfirmService.prototype.hide = function(el) {\n if (el) {\n this.lightboxService.close(el);\n return el.off(\".confirm-dialog\");\n }\n };\n\n ConfirmService.prototype.ask = function(title, subtitle, message, lightboxSelector) {\n var defered, el;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-generic-ask\";\n }\n el = angular.element(lightboxSelector);\n el.find(\"h2.title\").html(title);\n el.find(\"span.subtitle\").html(subtitle);\n el.find(\"span.message\").html(message);\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", debounce(2000, (function(_this) {\n return function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n _this.loading.start(target);\n return defered.resolve(function(ok) {\n if (ok == null) {\n ok = true;\n }\n _this.loading.finish(target);\n if (ok) {\n return _this.hide(el);\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \"a.button-red\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.askOnDelete = function(title, message) {\n return this.ask(title, \"Are you sure you want to delete?\", message);\n };\n\n ConfirmService.prototype.askChoice = function(title, subtitle, choices, replacement, warning, lightboxSelector) {\n var choicesField, defered, el;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-ask-choice\";\n }\n el = angular.element(lightboxSelector);\n el.find(\".title\").html(title);\n el.find(\".subtitle\").html(subtitle);\n if (replacement) {\n el.find(\".replacement\").html(replacement);\n } else {\n el.find(\".replacement\").remove();\n }\n if (warning) {\n el.find(\".warning\").html(warning);\n } else {\n el.find(\".warning\").remove();\n }\n choicesField = el.find(\".choices\");\n choicesField.html('');\n _.each(choices, function(value, key) {\n return choicesField.append(angular.element(\"\"));\n });\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", debounce(2000, (function(_this) {\n return function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n _this.loading.start(target);\n return defered.resolve({\n selected: choicesField.val(),\n finish: function() {\n _this.loading.finish(target);\n return _this.hide(el);\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \"a.button-red\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.error = function(message) {\n var defered, el;\n el = angular.element(\".lightbox-generic-error\");\n el.find(\"h2.title\").html(message);\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n el.on(\"click.confirm-dialog\", \"a.close\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.success = function(title, message) {\n var defered, el;\n el = angular.element(\".lightbox-generic-success\");\n if (title) {\n el.find(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.message\").html(message);\n }\n defered = this.q.defer();\n el.on(\"click.confirm-dialog\", \"a.button-green\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n el.on(\"click.confirm-dialog\", \"a.close\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.loader = function(title, message) {\n var el;\n el = angular.element(\".lightbox-generic-loading\");\n if (title) {\n el.find(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.message\").html(message);\n }\n return {\n start: (function(_this) {\n return function() {\n return _this.lightboxService.open(el);\n };\n })(this),\n stop: (function(_this) {\n return function() {\n return _this.lightboxService.close(el);\n };\n })(this),\n update: (function(_this) {\n return function(status, title, message, percent) {\n if (title) {\n el.find(\"h2.title\").html(title);\n }\n if (message) {\n el.find(\"p.message\").html(message);\n }\n if (percent) {\n el.find(\".spin\").addClass(\"hidden\");\n el.find(\".progress-bar-wrapper\").removeClass(\"hidden\");\n el.find(\".progress-bar-wrapper > .bar\").width(percent + '%');\n return el.find(\".progress-bar-wrapper > span\").html(percent + '%').css('left', (percent - 9) + '%');\n } else {\n el.find(\".spin\").removeClass(\"hidden\");\n return el.find(\".progress-bar-wrapper\").addClass(\"hidden\");\n }\n };\n })(this)\n };\n };\n\n ConfirmService.prototype.notify = function(type, message, title, time) {\n var body, el, selector;\n selector = \".notification-message-\" + type;\n el = angular.element(selector);\n if (el.hasClass(\"active\")) {\n return;\n }\n if (title) {\n el.find(\"h4\").html(title);\n } else {\n el.find(\"h4\").html(NOTIFICATION_MSG[type].title);\n }\n if (message) {\n el.find(\"p\").html(message);\n } else {\n el.find(\"p\").html(NOTIFICATION_MSG[type].message);\n }\n body = angular.element(\"body\");\n body.find(\".notification-message .notification-light\").removeClass('active').addClass('inactive');\n body.find(selector).removeClass('inactive').addClass('active');\n if (this.tsem) {\n cancelTimeout(this.tsem);\n }\n if (!time) {\n time = type === 'error' || type === 'light-error' ? 3500 : 1500;\n }\n this.tsem = timeout(time, (function(_this) {\n return function() {\n body.find(selector).removeClass('active').addClass('inactive');\n return delete _this.tsem;\n };\n })(this));\n return el.on(\"click\", \".icon-delete\", (function(_this) {\n return function(event) {\n return body.find(selector).removeClass('active').addClass('inactive');\n };\n })(this));\n };\n\n return ConfirmService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaCommon\");\n\n module.service(\"$tgConfirm\", ConfirmService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/custom-field-values.coffee\n */\n\n(function() {\n var CustomAttributeValueDirective, CustomAttributesValuesController, CustomAttributesValuesDirective, bindMethods, bindOnce, debounce, generateHash, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n bindMethods = this.taiga.bindMethods;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n generateHash = taiga.generateHash;\n\n module = angular.module(\"taigaCommon\");\n\n CustomAttributesValuesController = (function(superClass) {\n extend(CustomAttributesValuesController, superClass);\n\n CustomAttributesValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$q\"];\n\n function CustomAttributesValuesController(scope, rootscope, repo, rs, confirm, q) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.rs = rs;\n this.confirm = confirm;\n this.q = q;\n bindMethods(this);\n this.type = null;\n this.objectId = null;\n this.projectId = null;\n this.customAttributes = [];\n this.customAttributesValues = null;\n }\n\n CustomAttributesValuesController.prototype.initialize = function(type, objectId) {\n this.project = this.scope.project;\n this.type = type;\n this.objectId = objectId;\n return this.projectId = this.scope.projectId;\n };\n\n CustomAttributesValuesController.prototype.loadCustomAttributesValues = function() {\n if (!this.objectId) {\n return this.customAttributesValues;\n }\n return this.rs.customAttributesValues[this.type].get(this.objectId).then((function(_this) {\n return function(customAttributesValues) {\n _this.customAttributes = _this.project[_this.type + \"_custom_attributes\"];\n _this.customAttributesValues = customAttributesValues;\n return customAttributesValues;\n };\n })(this));\n };\n\n CustomAttributesValuesController.prototype.getAttributeValue = function(attribute) {\n var attributeValue;\n attributeValue = _.clone(attribute, false);\n attributeValue.value = this.customAttributesValues.attributes_values[attribute.id];\n return attributeValue;\n };\n\n CustomAttributesValuesController.prototype.updateAttributeValue = function(attributeValue) {\n var attributesValues, onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"custom-attributes-values:edit\");\n };\n })(this);\n onError = (function(_this) {\n return function(response) {\n _this.confirm.notify(\"error\");\n return _this.q.reject();\n };\n })(this);\n attributesValues = _.clone(this.customAttributesValues.attributes_values, true);\n attributesValues[attributeValue.id] = attributeValue.value;\n this.customAttributesValues.attributes_values = attributesValues;\n this.customAttributesValues.id = this.objectId;\n return this.repo.save(this.customAttributesValues).then(onSuccess, onError);\n };\n\n return CustomAttributesValuesController;\n\n })(taiga.Controller);\n\n CustomAttributesValuesDirective = function($templates, $storage) {\n var collapsedHash, link, template, templateFn;\n template = $templates.get(\"custom-attributes/custom-attributes-values.html\", true);\n collapsedHash = function(type) {\n return generateHash([\"custom-attributes-collapsed\", type]);\n };\n link = function($scope, $el, $attrs, $ctrls) {\n var $ctrl, $model;\n $ctrl = $ctrls[0];\n $model = $ctrls[1];\n bindOnce($scope, $attrs.ngModel, function(value) {\n $ctrl.initialize($attrs.type, value.id);\n return $ctrl.loadCustomAttributesValues();\n });\n $el.on(\"click\", \".custom-fields-header a\", function() {\n var collapsed, hash;\n hash = collapsedHash($attrs.type);\n collapsed = !($storage.get(hash) || false);\n $storage.set(hash, collapsed);\n if (collapsed) {\n $el.find(\".custom-fields-header a\").removeClass(\"open\");\n return $el.find(\".custom-fields-body\").removeClass(\"open\");\n } else {\n $el.find(\".custom-fields-header a\").addClass(\"open\");\n return $el.find(\".custom-fields-body\").addClass(\"open\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n templateFn = function($el, $attrs) {\n var collapsed;\n collapsed = $storage.get(collapsedHash($attrs.type)) || false;\n return template({\n requiredEditionPerm: $attrs.requiredEditionPerm,\n collapsed: collapsed\n });\n };\n return {\n require: [\"tgCustomAttributesValues\", \"ngModel\"],\n controller: CustomAttributesValuesController,\n controllerAs: \"ctrl\",\n restrict: \"AE\",\n scope: true,\n link: link,\n template: templateFn\n };\n };\n\n module.directive(\"tgCustomAttributesValues\", [\"$tgTemplate\", \"$tgStorage\", CustomAttributesValuesDirective]);\n\n CustomAttributeValueDirective = function($template, $selectedText) {\n var link, template, templateEdit;\n template = $template.get(\"custom-attributes/custom-attribute-value.html\", true);\n templateEdit = $template.get(\"custom-attributes/custom-attribute-value-edit.html\", true);\n link = function($scope, $el, $attrs, $ctrl) {\n var attributeValue, isEditable, render, saveAttributeValue, submit;\n render = function(attributeValue, edit) {\n var ctx, editable, html, value;\n if (edit == null) {\n edit = false;\n }\n value = attributeValue.value;\n editable = isEditable();\n ctx = {\n id: attributeValue.id,\n name: attributeValue.name,\n description: attributeValue.description,\n value: value,\n isEditable: editable\n };\n if (editable && (edit || !value)) {\n html = templateEdit(ctx);\n } else {\n html = template(ctx);\n }\n return $el.html(html);\n };\n isEditable = function() {\n var permissions, requiredEditionPerm;\n permissions = $scope.project.my_permissions;\n requiredEditionPerm = $attrs.requiredEditionPerm;\n return permissions.indexOf(requiredEditionPerm) > -1;\n };\n saveAttributeValue = function() {\n attributeValue.value = $el.find(\"input\").val();\n return $scope.$apply(function() {\n return $ctrl.updateAttributeValue(attributeValue).then(function() {\n return render(attributeValue, false);\n });\n });\n };\n $el.on(\"keyup\", \"input[name=description]\", function(event) {\n if (event.keyCode === 13) {\n return submit(event);\n } else if (event.keyCode === 27) {\n return render(attributeValue, false);\n }\n });\n $el.on(\"click\", \".custom-field-value.read-mode\", function() {\n if (!isEditable()) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n render(attributeValue, true);\n return $el.find(\"input[name='description']\").focus().select();\n });\n $el.on(\"click\", \"a.icon-edit\", function(event) {\n event.preventDefault();\n render(attributeValue, true);\n return $el.find(\"input[name='description']\").focus().select();\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n return saveAttributeValue();\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n $el.on(\"click\", \"a.icon-floppy\", submit);\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n attributeValue = $scope.$eval($attrs.tgCustomAttributeValue);\n return render(attributeValue);\n };\n return {\n link: link,\n require: \"^tgCustomAttributesValues\",\n restrict: \"AE\"\n };\n };\n\n module.directive(\"tgCustomAttributeValue\", [\"$tgTemplate\", \"$selectedText\", CustomAttributeValueDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/estimation.coffee\n */\n\n(function() {\n var EstimationsService, LbUsEstimationDirective, UsEstimationDirective, groupBy, module, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n module = angular.module(\"taigaCommon\");\n\n LbUsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $confirm, $template) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n $scope.$watch($attrs.ngModel, function(us) {\n var estimationProcess;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n estimationProcess.onSelectedPointForRole = function(roleId, pointId) {\n return $scope.$apply(function() {\n return $model.$setViewValue(us);\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, template;\n ctx = {\n totalPoints: this.calculateTotalPoints(),\n roles: this.calculateRoles(),\n editable: this.isEditable\n };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgLbUsEstimation\", [\"$tgEstimationsService\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgTemplate\", LbUsEstimationDirective]);\n\n UsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $confirm, $qqueue, $template) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n $scope.$watch($attrs.ngModel, function(us) {\n var estimationProcess;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n estimationProcess.onSelectedPointForRole = function(roleId, pointId) {\n return this.save(roleId, pointId).then(function() {\n return $rootScope.$broadcast(\"history:reload\");\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, template;\n ctx = {\n totalPoints: this.calculateTotalPoints(),\n roles: this.calculateRoles(),\n editable: this.isEditable\n };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgUsEstimation\", [\"$tgEstimationsService\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgQqueue\", \"$tgTemplate\", UsEstimationDirective]);\n\n EstimationsService = function($template, $qqueue, $repo, $confirm, $q) {\n var EstimationProcess, create, pointsTemplate;\n pointsTemplate = $template.get(\"common/estimation/us-estimation-points.html\", true);\n EstimationProcess = (function() {\n function EstimationProcess($el1, us1, project1) {\n this.$el = $el1;\n this.us = us1;\n this.project = project1;\n this.bindClickEvents = bind(this.bindClickEvents, this);\n this.isEditable = this.project.my_permissions.indexOf(\"modify_us\") !== -1;\n this.roles = this.project.roles;\n this.points = this.project.points;\n this.pointsById = groupBy(this.points, function(x) {\n return x.id;\n });\n this.onSelectedPointForRole = function(roleId, pointId) {};\n this.render = function() {};\n }\n\n EstimationProcess.prototype.save = function(roleId, pointId) {\n var deferred;\n deferred = $q.defer();\n $qqueue.add((function(_this) {\n return function() {\n var onError, onSuccess;\n onSuccess = function() {\n deferred.resolve();\n return $confirm.notify(\"success\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n _this.us.revert();\n _this.render();\n return deferred.reject();\n };\n return $repo.save(_this.us).then(onSuccess, onError);\n };\n })(this));\n return deferred.promise;\n };\n\n EstimationProcess.prototype.calculateTotalPoints = function() {\n var notNullValues, values;\n values = _.map(this.us.points, (function(_this) {\n return function(v, k) {\n var ref;\n return (ref = _this.pointsById[v]) != null ? ref.value : void 0;\n };\n })(this));\n if (values.length === 0) {\n return \"0\";\n }\n notNullValues = _.filter(values, function(v) {\n return v != null;\n });\n if (notNullValues.length === 0) {\n return \"?\";\n }\n return _.reduce(notNullValues, function(acc, num) {\n return acc + num;\n });\n };\n\n EstimationProcess.prototype.calculateRoles = function() {\n var computableRoles, roles;\n computableRoles = _.filter(this.project.roles, \"computable\");\n roles = _.map(computableRoles, (function(_this) {\n return function(role) {\n var pointId, pointObj;\n pointId = _this.us.points[role.id];\n pointObj = _this.pointsById[pointId];\n role = _.clone(role, true);\n role.points = (pointObj != null) && (pointObj.name != null) ? pointObj.name : \"?\";\n return role;\n };\n })(this));\n return roles;\n };\n\n EstimationProcess.prototype.bindClickEvents = function() {\n this.$el.on(\"click\", \".total.clickable\", (function(_this) {\n return function(event) {\n var roleId, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n roleId = target.data(\"role-id\");\n _this.renderPointsSelector(roleId, target);\n target.siblings().removeClass('active');\n return target.addClass('active');\n };\n })(this));\n return this.$el.on(\"click\", \".point\", (function(_this) {\n return function(event) {\n var pointId, points, roleId, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n roleId = target.data(\"role-id\");\n pointId = target.data(\"point-id\");\n _this.$el.find(\".popover\").popover().close();\n points = _.clone(_this.us.points, true);\n points[roleId] = pointId;\n _this.us.points = points;\n _this.render();\n return _this.onSelectedPointForRole(roleId, pointId);\n };\n })(this));\n };\n\n EstimationProcess.prototype.renderPointsSelector = function(roleId, target) {\n var horizontalList, html, maxPointLength, points;\n points = _.map(this.points, (function(_this) {\n return function(point) {\n point = _.clone(point, true);\n point.selected = _this.us.points[roleId] === point.id ? false : true;\n return point;\n };\n })(this));\n maxPointLength = 5;\n horizontalList = _.some(points, (function(_this) {\n return function(point) {\n return point.name.length > maxPointLength;\n };\n })(this));\n html = pointsTemplate({\n \"points\": points,\n roleId: roleId,\n horizontal: horizontalList\n });\n this.$el.find(\".popover\").popover().close();\n this.$el.find(\".pop-points-open\").remove();\n if (target != null) {\n this.$el.find(target).append(html);\n } else {\n this.$el.append(html);\n }\n this.$el.find(\".pop-points-open\").popover().open(function() {\n return $(this).removeClass(\"active\").closest(\"li\").removeClass(\"active\");\n });\n return this.$el.find(\".pop-points-open\").show();\n };\n\n return EstimationProcess;\n\n })();\n create = function($el, us, project) {\n var estimationProcess;\n $el.unbind(\"click\");\n estimationProcess = new EstimationProcess($el, us, project);\n if (estimationProcess.isEditable) {\n estimationProcess.bindClickEvents();\n }\n return estimationProcess;\n };\n return {\n create: create\n };\n };\n\n module.factory(\"$tgEstimationsService\", [\"$tgTemplate\", \"$tgQqueue\", \"$tgRepo\", \"$tgConfirm\", \"$q\", EstimationsService]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/filters.coffee\n */\n\n(function() {\n var FiltersStorageService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n FiltersStorageService = (function(superClass) {\n extend(FiltersStorageService, superClass);\n\n FiltersStorageService.$inject = [\"$tgStorage\", \"$routeParams\"];\n\n function FiltersStorageService(storage, params) {\n this.storage = storage;\n this.params = params;\n }\n\n FiltersStorageService.prototype.generateHash = function(components) {\n if (components == null) {\n components = [];\n }\n components = _.map(components, function(x) {\n return JSON.stringify(x);\n });\n return hex_sha1(components.join(\":\"));\n };\n\n return FiltersStorageService;\n\n })(taiga.Service);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/history.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(type, objectId) {\n return $repo.queryOneRaw(\"history/\" + type, objectId);\n };\n service.deleteComment = function(type, objectId, activityId) {\n var params, url;\n url = $urls.resolve(\"history/\" + type);\n url = url + \"/\" + objectId + \"/delete_comment\";\n params = {\n id: activityId\n };\n return $http.post(url, null, params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n service.undeleteComment = function(type, objectId, activityId) {\n var params, url;\n url = $urls.resolve(\"history/\" + type);\n url = url + \"/\" + objectId + \"/undelete_comment\";\n params = {\n id: activityId\n };\n return $http.post(url, null, params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n return function(instance) {\n return instance.history = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgHistoryResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/importer.coffee\n */\n\n(function() {\n var ImportProjectButtonDirective, module;\n\n module = angular.module(\"taigaCommon\");\n\n ImportProjectButtonDirective = function($rs, $confirm, $location, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n $el.on(\"click\", \".import-project-button\", function(event) {\n event.preventDefault();\n $el.find(\"input.import-file\").val(\"\");\n return $el.find(\"input.import-file\").trigger(\"click\");\n });\n return $el.on(\"change\", \"input.import-file\", function(event) {\n var file, loader, onError, onSuccess;\n event.preventDefault();\n file = event.target.files[0];\n if (!file) {\n return;\n }\n loader = $confirm.loader(\"Uploading dump file\");\n onSuccess = function(result) {\n var ctx, message, title;\n loader.stop();\n if (result.status === 202) {\n title = \"Our Oompa Loompas are importing your project\";\n message = \"This process could take a few minutes
We will send you an email when ready\";\n return $confirm.success(title, message);\n } else {\n ctx = {\n project: result.data.slug\n };\n $location.path($navUrls.resolve(\"project-admin-project-profile-details\", ctx));\n return $confirm.notify(\"success\", \"Your project has been imported successfuly.\");\n }\n };\n onError = function(result) {\n var errorMsg, ref;\n loader.stop();\n console.log(\"Error\", result);\n errorMsg = \"Our oompa loompas have some problems importing your dump data. Please try again. \";\n if (result.status === 429) {\n errorMsg = \"Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. \";\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = \"Our oompa loompas have some problems importing your dump data: \" + result.data._error_message;\n }\n return $confirm.notify(\"error\", errorMsg);\n };\n loader.start();\n return $rs.projects[\"import\"](file, loader.update).then(onSuccess, onError);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgImportProjectButton\", [\"$tgResources\", \"$tgConfirm\", \"$location\", \"$tgNavUrls\", ImportProjectButtonDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/issues/lightboxes.coffee\n */\n\n(function() {\n var DeleteUserDirective, bindOnce, debounce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaUserSettings\");\n\n DeleteUserDirective = function($repo, $rootscope, $auth, $location, $navUrls, lightboxService) {\n var link;\n link = function($scope, $el, $attrs) {\n var submit;\n $scope.$on(\"deletelightbox:new\", function(ctx, user) {\n return lightboxService.open($el);\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n submit = function() {\n var promise;\n promise = $repo.remove($scope.user);\n promise.then(function(data) {\n lightboxService.close($el);\n $auth.logout();\n return $location.path($navUrls.resolve(\"login\"));\n });\n return promise.then(null, function() {\n return console.log(\"FAIL\");\n });\n };\n $el.on(\"click\", \".button-red\", function(event) {\n event.preventDefault();\n return lightboxService.close($el);\n });\n return $el.on(\"click\", \".button-green\", debounce(2000, function(event) {\n event.preventDefault();\n return submit();\n }));\n };\n return {\n link: link,\n templateUrl: \"user/lightbox/lightbox-delete-account.html\"\n };\n };\n\n module.directive(\"tgLbDeleteUser\", [\"$tgRepo\", \"$rootScope\", \"$tgAuth\", \"$tgLocation\", \"$tgNavUrls\", \"lightboxService\", DeleteUserDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n * Copyright (C) 2014 Juan Francisco Alcántara \n * Copyright (C) 2014 Alejandro Alonso \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/loader.coffee\n */\n\n(function() {\n var Loader, LoaderDirective, module, sizeFormat, taiga, timeout;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaCommon\");\n\n LoaderDirective = function(tgLoader, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n tgLoader.onStart(function() {\n $(document.body).addClass(\"loader-active\");\n return $el.addClass(\"active\");\n });\n tgLoader.onEnd(function() {\n $(document.body).removeClass(\"loader-active\");\n return $el.removeClass(\"active\");\n });\n $rootscope.$on(\"$routeChangeSuccess\", function(e) {\n return tgLoader.startCurrentPageLoader();\n });\n return $rootscope.$on(\"$locationChangeSuccess\", function(e) {\n return tgLoader.reset();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLoader\", [\"tgLoader\", \"$rootScope\", LoaderDirective]);\n\n Loader = function() {\n var config, defaultConfig, forceDisabled;\n forceDisabled = false;\n defaultConfig = {\n enabled: false,\n minTime: 300\n };\n config = _.merge({}, defaultConfig);\n this.add = function() {\n return function() {\n if (!forceDisabled) {\n return config.enabled = true;\n }\n };\n };\n this.$get = [\n \"$rootScope\", function($rootscope) {\n var pageLoaded, reset, start, startLoadTime;\n startLoadTime = 0;\n reset = function() {\n return config = _.merge({}, defaultConfig);\n };\n pageLoaded = function(force) {\n var diff, endTime, timeoutValue;\n if (force == null) {\n force = false;\n }\n if (startLoadTime) {\n timeoutValue = 0;\n if (!force) {\n endTime = new Date().getTime();\n diff = endTime - startLoadTime;\n if (diff < config.minTime) {\n timeoutValue = config.minTime - diff;\n }\n }\n return timeout(timeoutValue, function() {\n return $rootscope.$broadcast(\"loader:end\");\n });\n }\n };\n start = function() {\n startLoadTime = new Date().getTime();\n return $rootscope.$broadcast(\"loader:start\");\n };\n return {\n reset: reset,\n pageLoaded: pageLoaded,\n start: start,\n startCurrentPageLoader: function() {\n if (config.enabled) {\n return start();\n }\n },\n onStart: function(fn) {\n return $rootscope.$on(\"loader:start\", fn);\n },\n onEnd: function(fn) {\n return $rootscope.$on(\"loader:end\", fn);\n },\n preventLoading: function() {\n return forceDisabled = true;\n },\n disablePreventLoading: function() {\n return forceDisabled = false;\n }\n };\n }\n ];\n };\n\n module.provider(\"tgLoader\", [Loader]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/lightboxes.coffee\n */\n\n(function() {\n var TgLoadingService, module,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n module = angular.module(\"taigaCommon\");\n\n TgLoadingService = (function(superClass) {\n extend(TgLoadingService, superClass);\n\n function TgLoadingService() {\n return TgLoadingService.__super__.constructor.apply(this, arguments);\n }\n\n TgLoadingService.prototype.start = function(target) {\n if (!target.hasClass('loading')) {\n target.data('loading-old-content', target.html());\n target.addClass('loading');\n return target.html(\"loading...\");\n }\n };\n\n TgLoadingService.prototype.finish = function(target) {\n var oldContent;\n if (target.hasClass('loading')) {\n oldContent = target.data('loading-old-content');\n target.data('loading-old-content', null);\n target.html(oldContent);\n return target.removeClass('loading');\n }\n };\n\n return TgLoadingService;\n\n })(taiga.Service);\n\n module.service(\"$tgLoading\", TgLoadingService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/popovers.coffee\n */\n\n(function() {\n var RelatedTaskStatusDirective, UsStatusDirective, bindOnce, debounce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaCommon\");\n\n UsStatusDirective = function($repo, $template) {\n\n /*\n Print the status of a US and a popover to change it.\n - tg-us-status: The user story\n - on-update: Method call after US is updated\n \n Example:\n \n div.status(tg-us-status=\"us\" on-update=\"ctrl.loadSprintState()\")\n a.us-status(href=\"\", title=\"Status Name\")\n \n NOTE: This directive need 'usStatusById' and 'project'.\n */\n var link, template;\n template = $template.get(\"common/popover/popover-us-status.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, render, us;\n $ctrl = $el.controller();\n render = function(us) {\n var usStatusById, usStatusDom, usStatusDomParent;\n usStatusDomParent = $el.find(\".us-status\");\n usStatusDom = $el.find(\".us-status .us-status-bind\");\n usStatusById = $scope.usStatusById;\n if (usStatusById[us.status]) {\n usStatusDom.text(usStatusById[us.status].name);\n return usStatusDomParent.css(\"color\", usStatusById[us.status].color);\n }\n };\n $el.on(\"click\", \".us-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", debounce(2000, function(event) {\n var target, us;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n us = $scope.$eval($attrs.tgUsStatus);\n us.status = target.data(\"status-id\");\n render(us);\n $el.find(\".pop-status\").popover().close();\n return $scope.$apply(function() {\n return $repo.save(us).then(function() {\n return $scope.$eval($attrs.onUpdate);\n });\n });\n }));\n $scope.$on(\"userstories:loaded\", function() {\n return render($scope.$eval($attrs.tgUsStatus));\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n us = $scope.$eval($attrs.tgUsStatus);\n render(us);\n return bindOnce($scope, \"project\", function(project) {\n var html;\n html = template({\n \"statuses\": project.us_statuses\n });\n $el.append(html);\n if ($scope.project.my_permissions.indexOf(\"modify_us\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUsStatus\", [\"$tgRepo\", \"$tgTemplate\", UsStatusDirective]);\n\n RelatedTaskStatusDirective = function($repo, $template) {\n\n /*\n Print the status of a related task and a popover to change it.\n - tg-related-task-status: The related task\n - on-update: Method call after US is updated\n \n Example:\n \n div.status(tg-related-task-status=\"task\" on-update=\"ctrl.loadSprintState()\")\n a.task-status(href=\"\", title=\"Status Name\")\n \n NOTE: This directive need 'taskStatusById' and 'project'.\n */\n var link, selectionTemplate, updateTaskStatus;\n selectionTemplate = $template.get(\"common/popover/popover-related-task-status.html\", true);\n updateTaskStatus = function($el, task, taskStatusById) {\n var taskStatusDom, taskStatusDomParent;\n taskStatusDomParent = $el.find(\".us-status\");\n taskStatusDom = $el.find(\".task-status .task-status-bind\");\n if (taskStatusById[task.status]) {\n taskStatusDom.text(taskStatusById[task.status].name);\n return taskStatusDomParent.css('color', taskStatusById[task.status].color);\n }\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task;\n $ctrl = $el.controller();\n task = $scope.$eval($attrs.tgRelatedTaskStatus);\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n autoSave = !notAutoSave;\n $el.on(\"click\", \".task-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n task.status = target.data(\"status-id\");\n $el.find(\".pop-status\").popover().close();\n updateTaskStatus($el, task, $scope.taskStatusById);\n if (autoSave) {\n return $scope.$apply(function() {\n return $repo.save(task).then(function() {\n $scope.$eval($attrs.onUpdate);\n return $scope.$emit(\"related-tasks:status-changed\");\n });\n });\n }\n }));\n taiga.bindOnce($scope, \"project\", function(project) {\n $el.append(selectionTemplate({\n 'statuses': project.task_statuses\n }));\n updateTaskStatus($el, task, $scope.taskStatusById);\n if (project.my_permissions.indexOf(\"modify_task\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskStatus\", [\"$tgRepo\", \"$tgTemplate\", RelatedTaskStatusDirective]);\n\n $.fn.popover = function() {\n var $el, close, closeAll, closePopover, isVisible, open;\n $el = this;\n isVisible = (function(_this) {\n return function() {\n var docViewBottom, docViewLeft, docViewRight, docViewTop, docViewWidth, elemBottom, elemLeft, elemRight, elemTop, elemWidth;\n $el.css({\n \"display\": \"block\",\n \"visibility\": \"hidden\"\n });\n docViewTop = $(window).scrollTop();\n docViewBottom = docViewTop + $(window).height();\n docViewWidth = $(window).width();\n docViewRight = docViewWidth;\n docViewLeft = 0;\n elemTop = $el.offset().top;\n elemBottom = elemTop + $el.height();\n elemWidth = $el.width();\n elemLeft = $el.offset().left;\n elemRight = $el.offset().left + elemWidth;\n $el.css({\n \"display\": \"none\",\n \"visibility\": \"visible\"\n });\n return (elemBottom <= docViewBottom) && (elemTop >= docViewTop) && (elemLeft >= docViewLeft) && (elemRight <= docViewRight);\n };\n })(this);\n closePopover = (function(_this) {\n return function(onClose) {\n if (onClose) {\n onClose.call($el);\n }\n $el.fadeOut(function() {\n return $el.removeClass(\"active\").removeClass(\"fix\");\n });\n return $el.off(\"popup:close\");\n };\n })(this);\n closeAll = (function(_this) {\n return function() {\n return $(\".popover.active\").each(function() {\n return $(this).trigger(\"popup:close\");\n });\n };\n })(this);\n open = (function(_this) {\n return function(onClose) {\n if ($el.hasClass(\"active\")) {\n return close();\n } else {\n closeAll();\n if (!isVisible()) {\n $el.addClass(\"fix\");\n }\n $el.fadeIn(function() {\n $el.addClass(\"active\");\n $(document.body).off(\"popover\");\n return $(document.body).one(\"click.popover\", function() {\n return closeAll();\n });\n });\n return $el.on(\"popup:close\", function(e) {\n return closePopover(onClose);\n });\n }\n };\n })(this);\n close = (function(_this) {\n return function() {\n return $el.trigger(\"popup:close\");\n };\n })(this);\n return {\n open: open,\n close: close,\n closeAll: closeAll\n };\n };\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/raven-logger.coffee\n */\n\n(function() {\n var ExceptionHandlerFactory, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n ExceptionHandlerFactory = function($log, config) {\n var ravenConfig;\n this.config = config;\n ravenConfig = this.config.get(\"ravenConfig\", null);\n if (ravenConfig) {\n $log.debug(\"Using the RavenJS exception handler.\");\n Raven.config(ravenConfig).install();\n return function(exception, cause) {\n $log.error.apply($log, arguments);\n return Raven.captureException(exception);\n };\n } else {\n $log.debug(\"Using the default logging exception handler.\");\n return function(exception, cause) {\n return $log.error.apply($log, arguments);\n };\n }\n };\n\n module.factory(\"$exceptionHandler\", [\"$log\", \"$tgConfig\", ExceptionHandlerFactory]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/tags.coffee\n */\n\n(function() {\n var ColorizeTagsDirective, LbTagLineDirective, TagLineDirective, TagsDirective, bindOnce, module, taiga, trim,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n TagsDirective = function() {\n var formatter, link, parser;\n formatter = function(v) {\n if (_.isArray(v)) {\n return v.join(\", \");\n }\n return \"\";\n };\n parser = function(v) {\n var result;\n if (!v) {\n return [];\n }\n result = _(v.split(\",\")).map(function(x) {\n return _.str.trim(x);\n });\n return result.value();\n };\n link = function($scope, $el, $attrs, $ctrl) {\n $ctrl.$formatters.push(formatter);\n $ctrl.$parsers.push(parser);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n require: \"ngModel\",\n link: link\n };\n };\n\n module.directive(\"tgTags\", TagsDirective);\n\n ColorizeTagsDirective = function() {\n var link, templates;\n templates = {\n backlog: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\"><%- tag.name %>\\n<% }) %>\"),\n kanban: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\" title=\\\"<%- tag.name %>\\\" />\\n<% }) %>\"),\n taskboard: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\" title=\\\"<%- tag.name %>\\\" />\\n<% }) %>\")\n };\n link = function($scope, $el, $attrs, $ctrl) {\n var render;\n render = function(srcTags) {\n var html, tags, template;\n template = templates[$attrs.tgColorizeTagsType];\n srcTags.sort();\n tags = _.map(srcTags, function(tag) {\n var color;\n color = $scope.project.tags_colors[tag];\n return {\n name: tag,\n color: color\n };\n });\n html = template({\n tags: tags\n });\n return $el.html(html);\n };\n $scope.$watch($attrs.tgColorizeTags, function(tags) {\n if (tags != null) {\n return render(tags);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgColorizeTags\", ColorizeTagsDirective);\n\n LbTagLineDirective = function($rs, $template) {\n var COMMA_KEY, ENTER_KEY, link, templateTags;\n ENTER_KEY = 13;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/lb-tag-line-tags.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideSaveButton, removeInputLastCharacter, renderTags, resetInput, saveInputTag, showSaveButton;\n renderTags = function(tags, tagsColors) {\n var ctx, html;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n color: tagsColors[t]\n };\n })\n };\n _.map(ctx.tags, (function(_this) {\n return function(tag) {\n if (tag.color) {\n return tag.style = \"border-left: 5px solid \" + tag.color;\n }\n };\n })(this));\n html = templateTags(ctx);\n return $el.find(\"div.tags-container\").html(html);\n };\n showSaveButton = function() {\n return $el.find(\".save\").removeClass(\"hidden\");\n };\n hideSaveButton = function() {\n return $el.find(\".save\").addClass(\"hidden\");\n };\n resetInput = function() {\n $el.find(\"input\").val(\"\");\n return $el.find(\"input\").autocomplete(\"close\");\n };\n addValue = function(value) {\n var tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue, false);\n if (tags == null) {\n tags = [];\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n $scope.$apply(function() {\n return $model.$setViewValue(tags);\n });\n return hideSaveButton();\n };\n deleteValue = function(value) {\n var tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue, false);\n tags = _.pull(tags, value);\n return $scope.$apply(function() {\n return $model.$setViewValue(tags);\n });\n };\n saveInputTag = function() {\n var value;\n value = $el.find(\"input\").val();\n addValue(value);\n return resetInput();\n };\n removeInputLastCharacter = (function(_this) {\n return function(input) {\n var inputValue;\n inputValue = input.val();\n return input.val(inputValue.substring(0, inputValue.length - 1));\n };\n })(this);\n $el.on(\"keypress\", \"input\", function(event) {\n if (event.keyCode !== ENTER_KEY) {\n return;\n }\n return event.preventDefault();\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n return saveInputTag();\n } else if (event.keyCode === COMMA_KEY) {\n removeInputLastCharacter(target);\n return saveInputTag();\n } else {\n if (target.val().length) {\n return showSaveButton();\n } else {\n return hideSaveButton();\n }\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n event.preventDefault();\n return saveInputTag();\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n var target, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n value = target.siblings(\".tag-name\").text();\n return deleteValue(value);\n });\n bindOnce($scope, \"project\", function(project) {\n var positioningFunction;\n positioningFunction = function(position, elements) {\n var menu;\n menu = elements.element.element;\n menu.css(\"width\", elements.target.width);\n menu.css(\"top\", position.top);\n return menu.css(\"left\", position.left);\n };\n return $el.find(\"input\").autocomplete({\n source: _.keys(project.tags_colors),\n position: {\n my: \"left top\",\n using: positioningFunction\n },\n select: function(event, ui) {\n addValue(ui.item.value);\n return ui.item.value = \"\";\n }\n });\n });\n $scope.$watch($attrs.ngModel, function(tags) {\n var ref, tagsColors;\n tagsColors = ((ref = $scope.project) != null ? ref.tags_colors : void 0) || [];\n return renderTags(tags, tagsColors);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\",\n templateUrl: \"common/tag/lb-tag-line.html\"\n };\n };\n\n module.directive(\"tgLbTagLine\", [\"$tgResources\", \"$tgTemplate\", LbTagLineDirective]);\n\n TagLineDirective = function($rootScope, $repo, $rs, $confirm, $qqueue, $template) {\n var COMMA_KEY, ENTER_KEY, ESC_KEY, link, templateTags;\n ENTER_KEY = 13;\n ESC_KEY = 27;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/tags-line-tags.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideAddTagButton, hideAddTagButtonText, hideInput, hideSaveButton, isEditable, removeInputLastCharacter, renderInReadModeOnly, renderTags, resetInput, saveInputTag, showAddTagButton, showAddTagButtonText, showInput, showSaveButton;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n renderTags = function(tags, tagsColors) {\n var ctx, html;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n color: tagsColors[t]\n };\n }),\n isEditable: isEditable()\n };\n html = templateTags(ctx);\n return $el.find(\"div.tags-container\").html(html);\n };\n renderInReadModeOnly = function() {\n $el.find(\".add-tag\").remove();\n $el.find(\"input\").remove();\n return $el.find(\".save\").remove();\n };\n showAddTagButton = function() {\n return $el.find(\".add-tag\").removeClass(\"hidden\");\n };\n hideAddTagButton = function() {\n return $el.find(\".add-tag\").addClass(\"hidden\");\n };\n showAddTagButtonText = function() {\n return $el.find(\".add-tag-text\").removeClass(\"hidden\");\n };\n hideAddTagButtonText = function() {\n return $el.find(\".add-tag-text\").addClass(\"hidden\");\n };\n showSaveButton = function() {\n return $el.find(\".save\").removeClass(\"hidden\");\n };\n hideSaveButton = function() {\n return $el.find(\".save\").addClass(\"hidden\");\n };\n showInput = function() {\n return $el.find(\"input\").removeClass(\"hidden\").focus();\n };\n hideInput = function() {\n return $el.find(\"input\").addClass(\"hidden\").blur();\n };\n resetInput = function() {\n $el.find(\"input\").val(\"\");\n return $el.find(\"input\").autocomplete(\"close\");\n };\n addValue = $qqueue.bindAdd(function(value) {\n var model, onError, onSuccess, tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue.tags, false);\n if (tags == null) {\n tags = [];\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n model = $model.$modelValue.clone();\n model.tags = tags;\n $model.$setViewValue(model);\n onSuccess = function() {\n return $rootScope.$broadcast(\"history:reload\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n model.revert();\n return $model.$setViewValue(model);\n };\n $repo.save(model).then(onSuccess, onError);\n return hideSaveButton();\n });\n deleteValue = $qqueue.bindAdd(function(value) {\n var model, onError, onSuccess, tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue.tags, false);\n tags = _.pull(tags, value);\n model = $model.$modelValue.clone();\n model.tags = tags;\n $model.$setViewValue(model);\n onSuccess = function() {\n return $rootScope.$broadcast(\"history:reload\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n model.revert();\n return $model.$setViewValue(model);\n };\n return $repo.save(model).then(onSuccess, onError);\n });\n saveInputTag = function() {\n var value;\n value = $el.find(\"input\").val();\n addValue(value);\n return resetInput();\n };\n removeInputLastCharacter = (function(_this) {\n return function(input) {\n var inputValue;\n inputValue = input.val();\n return input.val(inputValue.substring(0, inputValue.length - 1));\n };\n })(this);\n $el.on(\"keypress\", \"input\", function(event) {\n var ref;\n if ((ref = event.keyCode) !== ENTER_KEY && ref !== ESC_KEY) {\n return;\n }\n return event.preventDefault();\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n return saveInputTag();\n } else if (event.keyCode === COMMA_KEY) {\n removeInputLastCharacter(target);\n return saveInputTag();\n } else if (event.keyCode === ESC_KEY) {\n resetInput();\n hideInput();\n hideSaveButton();\n return showAddTagButton();\n } else {\n if (target.val().length) {\n return showSaveButton();\n } else {\n return hideSaveButton();\n }\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n event.preventDefault();\n return saveInputTag();\n });\n $el.on(\"click\", \".add-tag\", function(event) {\n event.preventDefault();\n hideAddTagButton();\n return showInput();\n });\n $el.on(\"click\", \".icon-delete\", function(event) {\n var target, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n value = target.siblings(\".tag-name\").text();\n return deleteValue(value);\n });\n bindOnce($scope, \"project\", function(project) {\n var positioningFunction;\n if (!isEditable()) {\n renderInReadModeOnly();\n return;\n }\n showAddTagButton();\n positioningFunction = function(position, elements) {\n var menu;\n menu = elements.element.element;\n menu.css(\"width\", elements.target.width);\n menu.css(\"top\", position.top);\n return menu.css(\"left\", position.left);\n };\n return $el.find(\"input\").autocomplete({\n source: _.keys(project.tags_colors),\n position: {\n my: \"left top\",\n using: positioningFunction\n },\n select: function(event, ui) {\n addValue(ui.item.value);\n return ui.item.value = \"\";\n }\n });\n });\n $scope.$watch($attrs.ngModel, function(model) {\n var ref, ref1, tagsColors;\n if (!model) {\n return;\n }\n if ((ref = model.tags) != null ? ref.length : void 0) {\n hideAddTagButtonText();\n } else {\n showAddTagButtonText();\n }\n tagsColors = ((ref1 = $scope.project) != null ? ref1.tags_colors : void 0) || [];\n return renderTags(model.tags, tagsColors);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\",\n templateUrl: \"common/tag/tag-line.html\"\n };\n };\n\n module.directive(\"tgTagLine\", [\"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$tgQqueue\", \"$tgTemplate\", TagLineDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/common/wisiwyg.coffee\n */\n\n(function() {\n var bindOnce, module, taiga, tgMarkitupDirective,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n tgMarkitupDirective = function($rootscope, $rs, $tr, $selectedText, $template) {\n var link, previewTemplate;\n previewTemplate = $template.get(\"common/wysiwyg/wysiwyg-markitup-preview.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addLine, closePreviewMode, element, markdownSettings, markdownTitle, prepareUrlFormatting, preview, previewDomNode, setCaretPosition, urlFormatting;\n element = angular.element($el);\n previewDomNode = $(\"
\", {\n \"class\": \"preview\"\n });\n closePreviewMode = function() {\n element.parents(\".markdown\").find(\".preview\").remove();\n return element.parents(\".markItUp\").show();\n };\n $scope.$on(\"markdown-editor:submit\", function() {\n return closePreviewMode();\n });\n preview = function() {\n var markItUpDomNode, markdownDomNode;\n markdownDomNode = element.parents(\".markdown\");\n markItUpDomNode = element.parents(\".markItUp\");\n return $rs.mdrender.render($scope.projectId, $model.$modelValue).then(function(data) {\n var markdown;\n markdownDomNode.append(previewTemplate({\n data: data.data\n }));\n markItUpDomNode.hide();\n markdown = element.closest(\".markdown\");\n return markdown.on(\"mouseup.preview\", \".preview\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.target);\n if (!target.is('a') && $selectedText.get().length) {\n return;\n }\n markdown.off(\".preview\");\n return closePreviewMode();\n });\n });\n };\n setCaretPosition = function(textarea, caretPosition) {\n var line, range, scrollRelation, totalLines;\n if (textarea.createTextRange) {\n range = textarea.createTextRange();\n range.move(\"character\", caretPosition);\n range.select();\n } else if (textarea.selectionStart) {\n textarea.focus();\n textarea.setSelectionRange(caretPosition, caretPosition);\n }\n totalLines = textarea.value.split(\"\\n\").length;\n line = textarea.value.slice(0, +(caretPosition - 1) + 1 || 9e9).split(\"\\n\").length;\n scrollRelation = line / totalLines;\n return $el.scrollTop((scrollRelation * $el[0].scrollHeight) - ($el.height() / 2));\n };\n addLine = function(textarea, nline, replace) {\n var cursorPosition, j, key, len, line, lines;\n lines = textarea.value.split(\"\\n\");\n if (replace) {\n lines[nline] = replace + lines[nline];\n } else {\n lines[nline] = \"\";\n }\n cursorPosition = 0;\n for (key = j = 0, len = lines.length; j < len; key = ++j) {\n line = lines[key];\n cursorPosition += line.length + 1 || 1;\n if (key === nline) {\n break;\n }\n }\n textarea.value = lines.join(\"\\n\");\n if (replace) {\n return cursorPosition - lines[nline].length + replace.length - 1;\n } else {\n return cursorPosition;\n }\n };\n markdownSettings = {\n nameSpace: \"markdown\",\n onShiftEnter: {\n keepDefault: false,\n openWith: \"\\n\\n\"\n },\n onEnter: {\n keepDefault: false,\n replaceWith: function() {\n return \"\\n\";\n },\n afterInsert: function(data) {\n var cursorLine, emptyListItem, lastLine, lines, markdownCaretPositon, match, newLineContent;\n lines = data.textarea.value.split(\"\\n\");\n cursorLine = data.textarea.value.slice(0, +(data.caretPosition - 1) + 1 || 9e9).split(\"\\n\").length;\n newLineContent = data.textarea.value.slice(data.caretPosition).split(\"\\n\")[0];\n lastLine = lines[cursorLine - 1];\n match = lastLine.match(/^(\\s*- ).*/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*)\\-\\s$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, \"\" + match[1]);\n }\n }\n match = lastLine.match(/^(\\s*\\* ).*/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*\\* )$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, \"\" + match[1]);\n }\n }\n match = lastLine.match(/^(\\s*)(\\d+)\\.\\s/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*)(\\d+)\\.\\s$/);\n if (emptyListItem) {\n markdownCaretPositon = addLine(data.textarea, cursorLine - 1);\n } else {\n markdownCaretPositon = addLine(data.textarea, cursorLine, (match[1] + (parseInt(match[2], 10) + 1)) + \". \");\n }\n }\n if (markdownCaretPositon) {\n return setCaretPosition(data.textarea, markdownCaretPositon);\n }\n }\n },\n markupSet: [\n {\n name: $tr.t(\"markdown-editor.heading-1\"),\n key: \"1\",\n placeHolder: $tr.t(\"markdown-editor.placeholder\"),\n closeWith: function(markItUp) {\n return markdownTitle(markItUp, \"=\");\n }\n }, {\n name: $tr.t(\"markdown-editor.heading-2\"),\n key: \"2\",\n placeHolder: $tr.t(\"markdown-editor.placeholder\"),\n closeWith: function(markItUp) {\n return markdownTitle(markItUp, \"-\");\n }\n }, {\n name: $tr.t(\"markdown-editor.heading-3\"),\n key: \"3\",\n openWith: \"### \",\n placeHolder: $tr.t(\"markdown-editor.placeholder\")\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.bold\"),\n key: \"B\",\n openWith: \"**\",\n closeWith: \"**\"\n }, {\n name: $tr.t(\"markdown-editor.italic\"),\n key: \"I\",\n openWith: \"_\",\n closeWith: \"_\"\n }, {\n name: $tr.t(\"markdown-editor.strike\"),\n key: \"S\",\n openWith: \"~~\",\n closeWith: \"~~\"\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.bulleted-list\"),\n openWith: \"- \"\n }, {\n name: $tr.t(\"markdown-editor.numeric-list\"),\n openWith: function(markItUp) {\n return markItUp.line + \". \";\n }\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.picture\"),\n key: \"P\",\n replaceWith: '![[![Alternative text]!]](<<<[![Url:!:http://]!]>>> \"[![Title]!]\")',\n beforeInsert: function(markItUp) {\n return prepareUrlFormatting(markItUp);\n },\n afterInsert: function(markItUp) {\n return urlFormatting(markItUp);\n }\n }, {\n name: $tr.t(\"markdown-editor.link\"),\n key: \"L\",\n openWith: \"[\",\n closeWith: '](<<<[![Url:!:http://]!]>>> \"[![Title]!]\")',\n placeHolder: $tr.t(\"markdown-editor.link-placeholder\"),\n beforeInsert: function(markItUp) {\n return prepareUrlFormatting(markItUp);\n },\n afterInsert: function(markItUp) {\n return urlFormatting(markItUp);\n }\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.quotes\"),\n openWith: \"> \"\n }, {\n name: $tr.t(\"markdown-editor.code-block\"),\n openWith: \"```\\n\",\n closeWith: \"\\n```\"\n }, {\n separator: \"---------------\"\n }, {\n name: $tr.t(\"markdown-editor.preview\"),\n call: preview,\n className: \"preview-icon\"\n }\n ],\n afterInsert: function(event) {\n var target;\n target = angular.element(event.textarea);\n return $model.$setViewValue(target.val());\n }\n };\n prepareUrlFormatting = function(markItUp) {\n var indices, regex, result;\n console.log(markItUp);\n regex = /(<<<|>>>)/gi;\n result = 0;\n indices = [];\n while ((result = regex.exec(markItUp.textarea.value))) {\n indices.push(result.index);\n }\n markItUp.donotparse = indices;\n return console.log(indices);\n };\n urlFormatting = function(markItUp) {\n var endIndex, ref, ref1, regex, result, startIndex, url, value;\n console.log(markItUp.donotparse);\n regex = /<<>>/gi;\n endIndex = 0;\n while (true) {\n result = regex.exec(markItUp.textarea.value);\n if (!result) {\n break;\n }\n if (ref1 = result.index, indexOf.call(markItUp.donotparse, ref1) < 0) {\n endIndex = result.index;\n break;\n }\n }\n value = markItUp.textarea.value;\n url = value.substring(startIndex, endIndex).replace('<<<', '').replace('>>>', '');\n url = url.replace('(', '%28').replace(')', '%29');\n url = url.replace('[', '%5B').replace(']', '%5D');\n value = value.substring(0, startIndex) + url + value.substring(endIndex + 3, value.length);\n markItUp.textarea.value = value;\n return markItUp.donotparse = void 0;\n };\n markdownTitle = function(markItUp, char) {\n var heading, i, j, n, ref;\n heading = \"\";\n n = $.trim(markItUp.selection || markItUp.placeHolder).length;\n for (i = j = 0, ref = n - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n heading += char;\n }\n return \"\\n\" + heading + \"\\n\";\n };\n element.markItUp(markdownSettings);\n element.on(\"keypress\", function(event) {\n return $scope.$apply();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgMarkitup\", [\"$rootScope\", \"$tgResources\", \"$tgI18n\", \"$selectedText\", \"$tgTemplate\", tgMarkitupDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: pluggins/main.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaPlugins\", [\"ngRoute\"]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/kanban/sortable.coffee\n */\n\n(function() {\n var KanbanSortableDirective, bindOnce, groupBy, mixOf, module, scopeDefer, taiga, timeout, toggleText;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toggleText = this.taiga.toggleText;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaKanban\");\n\n KanbanSortableDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n bindOnce($scope, \"project\", function(project) {\n var deleteElement, itemEl, newParentScope, oldParentScope, tdom;\n if (!(project.my_permissions.indexOf(\"modify_us\") > -1)) {\n return;\n }\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el;\n deleteElement = function(itemEl) {\n itemEl.scope().$destroy();\n itemEl.off();\n return itemEl.remove();\n };\n tdom.sortable({\n handle: \".kanban-task-inner\",\n dropOnEmpty: true,\n connectWith: \".kanban-uses-box\",\n revert: 400\n });\n tdom.on(\"sortstop\", function(event, ui) {\n var itemIndex, itemUs, newStatusId, oldStatusId, parentEl;\n parentEl = ui.item.parent();\n itemEl = ui.item;\n itemUs = itemEl.scope().us;\n itemIndex = itemEl.index();\n newParentScope = parentEl.scope();\n newStatusId = newParentScope.s.id;\n oldStatusId = oldParentScope.s.id;\n if (newStatusId !== oldStatusId) {\n deleteElement(itemEl);\n }\n $scope.$apply(function() {\n return $rootscope.$broadcast(\"kanban:us:move\", itemUs, itemUs.status, newStatusId, itemIndex);\n });\n return ui.item.find('a').removeClass('noclick');\n });\n return tdom.on(\"sortstart\", function(event, ui) {\n oldParentScope = ui.item.parent().scope();\n return ui.item.find('a').addClass('noclick');\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanSortable\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", KanbanSortableDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/sprints.coffee\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $model, $storage) {\n var hashSuffixUserstories, service;\n service = {};\n hashSuffixUserstories = \"userstories-queryparams\";\n service.get = function(projectId, sprintId) {\n return $repo.queryOne(\"milestones\", sprintId).then(function(sprint) {\n var uses;\n service.storeUserstoriesQueryParams(projectId, {\n \"milestone\": sprintId\n });\n uses = sprint.user_stories;\n uses = _.map(uses, function(u) {\n return $model.make_model(\"userstories\", u);\n });\n sprint._attrs.user_stories = uses;\n return sprint;\n });\n };\n service.stats = function(projectId, sprintId) {\n return $repo.queryOneRaw(\"milestones\", sprintId + \"/stats\");\n };\n service.list = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId\n };\n params = _.extend({}, params, filters || {});\n return $repo.queryMany(\"milestones\", params).then((function(_this) {\n return function(milestones) {\n var i, len, m, uses;\n for (i = 0, len = milestones.length; i < len; i++) {\n m = milestones[i];\n uses = m.user_stories;\n uses = _.map(uses, function(u) {\n return $model.make_model(\"userstories\", u);\n });\n m._attrs.user_stories = uses;\n }\n return milestones;\n };\n })(this));\n };\n service.storeUserstoriesQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUserstories;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n return function(instance) {\n return instance.sprints = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgSprintsResourcesProvider\", [\"$tgRepo\", \"$tgModel\", \"$tgStorage\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/taskboard/charts.coffee\n */\n\n(function() {\n var SprintGraphDirective, bindOnce, groupBy, mixOf, module, scopeDefer, taiga, timeout, toggleText;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toggleText = this.taiga.toggleText;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaTaskboard\");\n\n SprintGraphDirective = function() {\n var link, redrawChart;\n redrawChart = function(element, dataToDraw) {\n var data, days, options, width;\n width = element.width();\n element.height(240);\n days = _.map(dataToDraw, function(x) {\n return moment(x.day);\n });\n data = [];\n data.unshift({\n data: _.zip(days, _.map(dataToDraw, function(d) {\n return d.optimal_points;\n })),\n lines: {\n fillColor: \"rgba(120,120,120,0.2)\"\n }\n });\n data.unshift({\n data: _.zip(days, _.map(dataToDraw, function(d) {\n return d.open_points;\n })),\n lines: {\n fillColor: \"rgba(102,153,51,0.3)\"\n }\n });\n options = {\n grid: {\n borderWidth: {\n top: 0,\n right: 1,\n left: 0,\n bottom: 0\n },\n borderColor: '#ccc',\n hoverable: true\n },\n xaxis: {\n tickSize: [1, \"day\"],\n min: days[0],\n max: _.last(days),\n mode: \"time\",\n daysNames: days,\n axisLabel: 'Day',\n axisLabelUseCanvas: true,\n axisLabelFontSizePixels: 12,\n axisLabelFontFamily: 'Verdana, Arial, Helvetica, Tahoma, sans-serif',\n axisLabelPadding: 5\n },\n yaxis: {\n min: 0\n },\n series: {\n shadowSize: 0,\n lines: {\n show: true,\n fill: true\n },\n points: {\n show: true,\n fill: true,\n radius: 4,\n lineWidth: 2\n }\n },\n colors: [\"rgba(102,153,51,1)\", \"rgba(120,120,120,0.2)\"],\n tooltip: true,\n tooltipOpts: {\n content: function(label, xval, yval, flotItem) {\n var formattedDate, roundedValue;\n formattedDate = moment(xval).format(\"DD MMM\");\n roundedValue = Math.round(yval);\n if (flotItem.seriesIndex === 1) {\n return \"Optimal pending points for day \" + formattedDate + \" should be \" + roundedValue;\n } else {\n return \"Real pending points for day \" + formattedDate + \" is \" + roundedValue;\n }\n }\n }\n };\n element.empty();\n return element.plot(data, options).data(\"plot\");\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$on(\"resize\", function() {\n if ($scope.stats) {\n return redrawChart(element, $scope.stats.days);\n }\n });\n $scope.$on(\"taskboard:graph:toggle-visibility\", function() {\n $el.parent().toggleClass('open');\n return timeout(100, function() {\n if ($scope.stats) {\n return redrawChart(element, $scope.stats.days);\n }\n });\n });\n $scope.$watch('stats', function(value) {\n if ($scope.stats == null) {\n return;\n }\n return redrawChart(element, $scope.stats.days);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSprintGraph\", SprintGraphDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/tasks/detail.coffee\n */\n\n(function() {\n var TaskDetailController, TaskIsIocaineButtonDirective, TaskStatusButtonDirective, TaskStatusDisplayDirective, groupBy, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n groupBy = this.taiga.groupBy;\n\n module = angular.module(\"taigaTasks\");\n\n TaskDetailController = (function(superClass) {\n extend(TaskDetailController, superClass);\n\n TaskDetailController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$log\", \"$appTitle\", \"$tgNavUrls\", \"$tgAnalytics\", \"tgLoader\"];\n\n function TaskDetailController(scope, rootscope, repo, confirm, rs, params, q, location, log, appTitle, navUrls, analytics, tgLoader) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.log = log;\n this.appTitle = appTitle;\n this.navUrls = navUrls;\n this.analytics = analytics;\n this.scope.taskRef = this.params.taskref;\n this.scope.sectionName = \"Task Details\";\n this.initializeEventHandlers();\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n _this.appTitle.set(_this.scope.task.subject + \" - \" + _this.scope.project.name);\n return _this.initializeOnDeleteGoToUrl();\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n promise[\"finally\"](tgLoader.pageLoaded);\n }\n\n TaskDetailController.prototype.initializeEventHandlers = function() {\n this.scope.$on(\"attachment:create\", (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"attachment\", \"create\", \"create attachment on task\", 1);\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n this.scope.$on(\"attachment:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n this.scope.$on(\"attachment:delete\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n return this.scope.$on(\"custom-attributes-values:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"history:reload\");\n };\n })(this));\n };\n\n TaskDetailController.prototype.initializeOnDeleteGoToUrl = function() {\n var ctx;\n ctx = {\n project: this.scope.project.slug\n };\n this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project\", ctx);\n if (this.scope.project.is_backlog_activated) {\n if (this.scope.task.milestone) {\n ctx.sprint = this.scope.sprint.slug;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-taskboard\", ctx);\n } else if (this.scope.task.us) {\n ctx.ref = this.scope.us.ref;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-userstories-detail\", ctx);\n }\n } else if (this.scope.project.is_kanban_activated) {\n if (this.scope.us) {\n ctx.ref = this.scope.us.ref;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-userstories-detail\", ctx);\n }\n }\n };\n\n TaskDetailController.prototype.loadProject = function() {\n return this.rs.projects.getBySlug(this.params.pslug).then((function(_this) {\n return function(project) {\n _this.scope.projectId = project.id;\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.statusList = project.task_statuses;\n _this.scope.statusById = groupBy(project.task_statuses, function(x) {\n return x.id;\n });\n _this.scope.membersById = groupBy(project.memberships, function(x) {\n return x.user;\n });\n return project;\n };\n })(this));\n };\n\n TaskDetailController.prototype.loadTask = function() {\n return this.rs.tasks.getByRef(this.scope.projectId, this.params.taskref).then((function(_this) {\n return function(task) {\n var ctx;\n _this.scope.task = task;\n _this.scope.taskId = task.id;\n _this.scope.commentModel = task;\n if (_this.scope.task.neighbors.previous.ref != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.task.neighbors.previous.ref\n };\n _this.scope.previousUrl = _this.navUrls.resolve(\"project-tasks-detail\", ctx);\n }\n if (_this.scope.task.neighbors.next.ref != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.task.neighbors.next.ref\n };\n _this.scope.nextUrl = _this.navUrls.resolve(\"project-tasks-detail\", ctx);\n }\n return task;\n };\n })(this));\n };\n\n TaskDetailController.prototype.loadSprint = function() {\n if (this.scope.task.milestone) {\n return this.rs.sprints.get(this.scope.task.project, this.scope.task.milestone).then((function(_this) {\n return function(sprint) {\n _this.scope.sprint = sprint;\n return sprint;\n };\n })(this));\n }\n };\n\n TaskDetailController.prototype.loadUserStory = function() {\n if (this.scope.task.user_story) {\n return this.rs.userstories.get(this.scope.task.project, this.scope.task.user_story).then((function(_this) {\n return function(us) {\n _this.scope.us = us;\n return us;\n };\n })(this));\n }\n };\n\n TaskDetailController.prototype.loadInitialData = function() {\n var promise;\n promise = this.loadProject();\n return promise.then((function(_this) {\n return function(project) {\n _this.fillUsersAndRoles(project.users, project.roles);\n return _this.loadTask().then(function() {\n return _this.q.all([_this.loadSprint(), _this.loadUserStory()]);\n });\n };\n })(this));\n };\n\n return TaskDetailController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"TaskDetailController\", TaskDetailController);\n\n TaskStatusDisplayDirective = function($template) {\n var link, template;\n template = $template.get(\"common/components/status-display.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(task) {\n var html, status;\n status = $scope.statusById[task.status];\n html = template({\n is_closed: status.is_closed,\n status: status\n });\n return $el.html(html);\n };\n $scope.$watch($attrs.ngModel, function(task) {\n if (task != null) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskStatusDisplay\", [\"$tgTemplate\", TaskStatusDisplayDirective]);\n\n TaskStatusButtonDirective = function($rootScope, $repo, $confirm, $loading, $qqueue) {\n var link, template;\n template = _.template(\"\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_task\") !== -1;\n };\n render = (function(_this) {\n return function(task) {\n var html, status;\n status = $scope.statusById[task.status];\n html = template({\n status: status,\n statuses: $scope.statusList,\n editable: isEditable()\n });\n return $el.html(html);\n };\n })(this);\n save = $qqueue.bindAdd((function(_this) {\n return function(status) {\n var onError, onSuccess, task;\n task = $model.$modelValue.clone();\n task.status = status;\n $model.$setViewValue(task);\n onSuccess = function() {\n $confirm.notify(\"success\");\n $rootScope.$broadcast(\"history:reload\");\n return $loading.finish($el.find(\".level-name\"));\n };\n onError = function() {\n $confirm.notify(\"error\");\n task.revert();\n $model.$setViewValue(task);\n return $loading.finish($el.find(\".level-name\"));\n };\n $loading.start($el.find(\".level-name\"));\n return $repo.save($model.$modelValue).then(onSuccess, onError);\n };\n })(this));\n $el.on(\"click\", \".status-data\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n $.fn.popover().closeAll();\n return save(target.data(\"status-id\"));\n });\n $scope.$watch($attrs.ngModel, function(task) {\n if (task) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskStatusButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQqueue\", TaskStatusButtonDirective]);\n\n TaskIsIocaineButtonDirective = function($rootscope, $tgrepo, $confirm, $loading, $qqueue) {\n var link, template;\n template = _.template(\"
\\n \\n \\n
\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_task\") !== -1;\n };\n render = function(task) {\n var ctx, html;\n if (!isEditable() && !task.is_iocaine) {\n $el.html(\"\");\n return;\n }\n ctx = {\n isIocaine: task.is_iocaine,\n isEditable: isEditable()\n };\n html = template(ctx);\n return $el.html(html);\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(is_iocaine) {\n var promise, task;\n task = $model.$modelValue.clone();\n task.is_iocaine = is_iocaine;\n $model.$setViewValue(task);\n $loading.start($el.find('label'));\n promise = $tgrepo.save(task);\n promise.then(function() {\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"history:reload\");\n });\n promise.then(null, function() {\n task.revert();\n $model.$setViewValue(task);\n return $confirm.notify(\"error\");\n });\n return promise[\"finally\"](function() {\n return $loading.finish($el.find('label'));\n });\n };\n })(this));\n $el.on(\"click\", \".is-iocaine\", function(event) {\n var is_iocaine;\n if (!isEditable()) {\n return;\n }\n is_iocaine = !$model.$modelValue.is_iocaine;\n return save(is_iocaine);\n });\n $scope.$watch($attrs.ngModel, function(task) {\n if (task) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskIsIocaineButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQqueue\", TaskIsIocaineButtonDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/issues/list.coffee\n */\n\n(function() {\n var IssueAssignedToInlineEditionDirective, IssueStatusInlineEditionDirective, IssuesController, IssuesDirective, IssuesFiltersDirective, bindOnce, debounceLeading, groupBy, joinStr, mixOf, module, startswith, taiga, toString, trim,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounceLeading = this.taiga.debounceLeading;\n\n startswith = this.taiga.startswith;\n\n module = angular.module(\"taigaIssues\");\n\n IssuesController = (function(superClass) {\n extend(IssuesController, superClass);\n\n IssuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$tgUrls\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$appTitle\", \"$tgNavUrls\", \"$tgEvents\", \"$tgAnalytics\", \"tgLoader\"];\n\n function IssuesController(scope, rootscope, repo, confirm, rs, urls, params, q, location, appTitle, navUrls, events, analytics, tgLoader) {\n var filters, promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.urls = urls;\n this.params = params;\n this.q = q;\n this.location = location;\n this.appTitle = appTitle;\n this.navUrls = navUrls;\n this.events = events;\n this.analytics = analytics;\n this.loadIssues = bind(this.loadIssues, this);\n this.scope.sectionName = \"Issues\";\n this.scope.filters = {};\n if (_.isEmpty(this.location.search())) {\n filters = this.rs.issues.getFilters(this.params.pslug);\n filters.page = 1;\n this.location.search(filters);\n this.location.replace();\n return;\n }\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Issues - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n promise[\"finally\"](tgLoader.pageLoaded);\n this.scope.$on(\"issueform:new:success\", (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"issue\", \"create\", \"create issue on issues list\", 1);\n _this.loadIssues();\n return _this.loadFilters();\n };\n })(this));\n }\n\n IssuesController.prototype.initializeSubscription = function() {\n var routingKey;\n routingKey = \"changes.project.\" + this.scope.projectId + \".issues\";\n return this.events.subscribe(this.scope, routingKey, (function(_this) {\n return function(message) {\n return _this.loadIssues();\n };\n })(this));\n };\n\n IssuesController.prototype.storeFilters = function() {\n return this.rs.issues.storeFilters(this.params.pslug, this.location.search());\n };\n\n IssuesController.prototype.loadProject = function() {\n return this.rs.projects.getBySlug(this.params.pslug).then((function(_this) {\n return function(project) {\n if (!project.is_issues_activated) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.projectId = project.id;\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.issueStatusById = groupBy(project.issue_statuses, function(x) {\n return x.id;\n });\n _this.scope.issueStatusList = _.sortBy(project.issue_statuses, \"order\");\n _this.scope.severityById = groupBy(project.severities, function(x) {\n return x.id;\n });\n _this.scope.severityList = _.sortBy(project.severities, \"order\");\n _this.scope.priorityById = groupBy(project.priorities, function(x) {\n return x.id;\n });\n _this.scope.priorityList = _.sortBy(project.priorities, \"order\");\n _this.scope.issueTypes = _.sortBy(project.issue_types, \"order\");\n _this.scope.issueTypeById = groupBy(project.issue_types, function(x) {\n return x.id;\n });\n _this.scope.membersById = groupBy(project.memberships, function(x) {\n return x.user;\n });\n return project;\n };\n })(this));\n };\n\n IssuesController.prototype.getUrlFilters = function() {\n var filters;\n filters = _.pick(this.location.search(), \"page\", \"tags\", \"statuses\", \"types\", \"q\", \"severities\", \"priorities\", \"assignedTo\", \"createdBy\", \"orderBy\");\n if (!filters.page) {\n filters.page = 1;\n }\n return filters;\n };\n\n IssuesController.prototype.getUrlFilter = function(name) {\n var filters;\n filters = _.pick(this.location.search(), name);\n return filters[name];\n };\n\n IssuesController.prototype.loadMyFilters = function() {\n return this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n return _.map(filters, function(value, key) {\n return {\n id: key,\n name: key,\n type: \"myFilters\",\n selected: false\n };\n });\n };\n })(this));\n };\n\n IssuesController.prototype.removeNotExistingFiltersFromUrl = function() {\n var currentSearch, existingValues, filterName, filterValue, splittedValues, urlfilters;\n currentSearch = this.location.search();\n urlfilters = this.getUrlFilters();\n for (filterName in urlfilters) {\n filterValue = urlfilters[filterName];\n if (filterName === \"page\" || filterName === \"orderBy\" || filterName === \"q\") {\n continue;\n }\n if (filterName === \"tags\") {\n splittedValues = _.map((\"\" + filterValue).split(\",\"));\n } else {\n splittedValues = _.map((\"\" + filterValue).split(\",\"), function(x) {\n if (x === \"null\") {\n return null;\n } else {\n return parseInt(x);\n }\n });\n }\n existingValues = _.intersection(splittedValues, _.map(this.scope.filters[filterName], \"id\"));\n if (splittedValues.length !== existingValues.length) {\n this.location.search(filterName, existingValues.join());\n }\n }\n if (currentSearch !== this.location.search()) {\n return this.location.replace();\n }\n };\n\n IssuesController.prototype.markSelectedFilters = function(filters, urlfilters) {\n var isSelected, j, key, len, name, obj, ref, ref1, results, searchdata, val, value;\n searchdata = {};\n ref = _.omit(urlfilters, \"page\", \"orderBy\");\n for (name in ref) {\n value = ref[name];\n if (searchdata[name] == null) {\n searchdata[name] = {};\n }\n ref1 = (\"\" + value).split(\",\");\n for (j = 0, len = ref1.length; j < len; j++) {\n val = ref1[j];\n searchdata[name][val] = true;\n }\n }\n isSelected = function(type, id) {\n if ((searchdata[type] != null) && searchdata[type][id]) {\n return true;\n }\n return false;\n };\n results = [];\n for (key in filters) {\n value = filters[key];\n results.push((function() {\n var k, len1, results1;\n results1 = [];\n for (k = 0, len1 = value.length; k < len1; k++) {\n obj = value[k];\n results1.push(obj.selected = isSelected(obj.type, obj.id) ? true : void 0);\n }\n return results1;\n })());\n }\n return results;\n };\n\n IssuesController.prototype.loadFilters = function() {\n var promise, urlfilters;\n urlfilters = this.getUrlFilters();\n if (urlfilters.q) {\n this.scope.filtersQ = urlfilters.q;\n }\n promise = this.loadMyFilters().then((function(_this) {\n return function(myFilters) {\n _this.scope.filters.myFilters = myFilters;\n return myFilters;\n };\n })(this));\n promise = promise.then((function(_this) {\n return function() {\n return _this.rs.issues.filtersData(_this.scope.projectId);\n };\n })(this));\n return promise.then((function(_this) {\n return function(data) {\n var choicesFiltersFormat, tagsFilterFormat, usersFiltersFormat;\n usersFiltersFormat = function(users, type, unknownOption) {\n var reformatedUsers, unknownItem;\n reformatedUsers = _.map(users, function(t) {\n return {\n id: t[0],\n count: t[1],\n type: type,\n name: t[0] ? _this.scope.usersById[t[0]].full_name_display : unknownOption\n };\n });\n unknownItem = _.remove(reformatedUsers, function(u) {\n return !u.id;\n });\n reformatedUsers = _.sortBy(reformatedUsers, function(u) {\n return u.name.toUpperCase();\n });\n if (unknownItem.length > 0) {\n reformatedUsers.unshift(unknownItem[0]);\n }\n return reformatedUsers;\n };\n choicesFiltersFormat = function(choices, type, byIdObject) {\n return _.map(choices, function(t) {\n return {\n id: t[0],\n name: byIdObject[t[0]].name,\n color: byIdObject[t[0]].color,\n count: t[1],\n type: type\n };\n });\n };\n tagsFilterFormat = function(tags) {\n return _.map(tags, function(t) {\n return {\n id: t[0],\n name: t[0],\n color: _this.scope.project.tags_colors[t[0]],\n count: t[1],\n type: \"tags\"\n };\n });\n };\n _this.scope.filters.statuses = choicesFiltersFormat(data.statuses, \"statuses\", _this.scope.issueStatusById);\n _this.scope.filters.severities = choicesFiltersFormat(data.severities, \"severities\", _this.scope.severityById);\n _this.scope.filters.priorities = choicesFiltersFormat(data.priorities, \"priorities\", _this.scope.priorityById);\n _this.scope.filters.assignedTo = usersFiltersFormat(data.assigned_to, \"assignedTo\", \"Unassigned\");\n _this.scope.filters.createdBy = usersFiltersFormat(data.created_by, \"createdBy\", \"Unknown\");\n _this.scope.filters.types = choicesFiltersFormat(data.types, \"types\", _this.scope.issueTypeById);\n _this.scope.filters.tags = tagsFilterFormat(data.tags);\n _this.removeNotExistingFiltersFromUrl();\n _this.markSelectedFilters(_this.scope.filters, urlfilters);\n return _this.rootscope.$broadcast(\"filters:loaded\", _this.scope.filters);\n };\n })(this));\n };\n\n IssuesController.prototype.loadIssuesRequests = 0;\n\n IssuesController.prototype.loadIssues = function() {\n var name, promise, ref, values;\n this.scope.urlFilters = this.getUrlFilters();\n this.scope.httpParams = {};\n ref = this.scope.urlFilters;\n for (name in ref) {\n values = ref[name];\n if (name === \"severities\") {\n name = \"severity\";\n } else if (name === \"orderBy\") {\n name = \"order_by\";\n } else if (name === \"priorities\") {\n name = \"priority\";\n } else if (name === \"assignedTo\") {\n name = \"assigned_to\";\n } else if (name === \"createdBy\") {\n name = \"owner\";\n } else if (name === \"statuses\") {\n name = \"status\";\n } else if (name === \"types\") {\n name = \"type\";\n }\n this.scope.httpParams[name] = values;\n }\n promise = this.rs.issues.list(this.scope.projectId, this.scope.httpParams);\n this.loadIssuesRequests += 1;\n promise.index = this.loadIssuesRequests;\n return promise.then((function(_this) {\n return function(data) {\n if (promise.index === _this.loadIssuesRequests) {\n _this.scope.issues = data.models;\n _this.scope.page = data.current;\n _this.scope.count = data.count;\n _this.scope.paginatedBy = data.paginatedBy;\n }\n return data;\n };\n })(this));\n };\n\n IssuesController.prototype.loadInitialData = function() {\n var promise;\n promise = this.loadProject();\n return promise.then((function(_this) {\n return function(project) {\n _this.fillUsersAndRoles(project.users, project.roles);\n _this.initializeSubscription();\n return _this.q.all([_this.loadFilters(), _this.loadIssues()]);\n };\n })(this));\n };\n\n IssuesController.prototype.saveCurrentFiltersTo = function(newFilter) {\n var deferred;\n deferred = this.q.defer();\n this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n filters[newFilter] = _this.location.search();\n return _this.rs.issues.storeMyFilters(_this.scope.projectId, filters).then(function() {\n return deferred.resolve();\n });\n };\n })(this));\n return deferred.promise;\n };\n\n IssuesController.prototype.deleteMyFilter = function(filter) {\n var deferred;\n deferred = this.q.defer();\n this.rs.issues.getMyFilters(this.scope.projectId).then((function(_this) {\n return function(filters) {\n delete filters[filter];\n return _this.rs.issues.storeMyFilters(_this.scope.projectId, filters).then(function() {\n return deferred.resolve();\n });\n };\n })(this));\n return deferred.promise;\n };\n\n IssuesController.prototype.addNewIssue = function() {\n return this.rootscope.$broadcast(\"issueform:new\", this.scope.project);\n };\n\n IssuesController.prototype.addIssuesInBulk = function() {\n return this.rootscope.$broadcast(\"issueform:bulk\", this.scope.projectId);\n };\n\n return IssuesController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"IssuesController\", IssuesController);\n\n IssuesDirective = function($log, $location, $template) {\n var link, linkOrdering, linkPagination, template;\n template = $template.get(\"issue/issue-paginator.html\", true);\n linkPagination = function($scope, $el, $attrs, $ctrl) {\n var $pagEl, afterCurrent, atBegin, atEnd, beforeCurrent, getNumPages, renderPagination;\n afterCurrent = 2;\n beforeCurrent = 4;\n atBegin = 2;\n atEnd = 2;\n $pagEl = $el.find(\".issues-paginator\");\n getNumPages = function() {\n var numPages;\n numPages = $scope.count / $scope.paginatedBy;\n if (parseInt(numPages, 10) < numPages) {\n numPages = parseInt(numPages, 10) + 1;\n } else {\n numPages = parseInt(numPages, 10);\n }\n return numPages;\n };\n renderPagination = function() {\n var cpage, i, j, numPages, options, pages, ref;\n numPages = getNumPages();\n if (numPages <= 1) {\n $pagEl.hide();\n return;\n }\n $pagEl.show();\n pages = [];\n options = {};\n options.pages = pages;\n options.showPrevious = $scope.page > 1;\n options.showNext = !($scope.page === numPages);\n cpage = $scope.page;\n for (i = j = 1, ref = numPages; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n if (i === (cpage + afterCurrent) && numPages > (cpage + afterCurrent + atEnd)) {\n pages.push({\n classes: \"dots\",\n type: \"dots\"\n });\n } else if (i === (cpage - beforeCurrent) && cpage > (atBegin + beforeCurrent)) {\n pages.push({\n classes: \"dots\",\n type: \"dots\"\n });\n } else if (i > (cpage + afterCurrent) && i <= (numPages - atEnd)) {\n\n } else if (i < (cpage - beforeCurrent) && i > atBegin) {\n\n } else if (i === cpage) {\n pages.push({\n classes: \"active\",\n num: i,\n type: \"page-active\"\n });\n } else {\n pages.push({\n classes: \"page\",\n num: i,\n type: \"page\"\n });\n }\n }\n return $pagEl.html(template(options));\n };\n $scope.$watch(\"issues\", function(value) {\n if (!value) {\n return;\n }\n return renderPagination();\n });\n $el.on(\"click\", \".issues-paginator a.next\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", $scope.page + 1);\n return $ctrl.loadIssues();\n });\n });\n $el.on(\"click\", \".issues-paginator a.previous\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", $scope.page - 1);\n return $ctrl.loadIssues();\n });\n });\n return $el.on(\"click\", \".issues-paginator li.page > a\", function(event) {\n var pagenum, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n pagenum = target.data(\"pagenum\");\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", pagenum);\n return $ctrl.loadIssues();\n });\n });\n };\n linkOrdering = function($scope, $el, $attrs, $ctrl) {\n var colHeadElement, currentOrder, icon;\n currentOrder = $ctrl.getUrlFilter(\"orderBy\") || \"created_date\";\n if (currentOrder) {\n icon = startswith(currentOrder, \"-\") ? \"icon-caret-up\" : \"icon-caret-down\";\n colHeadElement = $el.find(\".row.title > div[data-fieldname='\" + (trim(currentOrder, \"-\")) + \"']\");\n colHeadElement.html((colHeadElement.html()) + \"\");\n }\n return $el.on(\"click\", \".row.title > div\", function(event) {\n var finalOrder, newOrder, target;\n target = angular.element(event.currentTarget);\n currentOrder = $ctrl.getUrlFilter(\"orderBy\");\n newOrder = target.data(\"fieldname\");\n finalOrder = currentOrder === newOrder ? \"-\" + newOrder : newOrder;\n return $scope.$apply(function() {\n $ctrl.replaceFilter(\"orderBy\", finalOrder);\n $ctrl.storeFilters();\n return $ctrl.loadIssues().then(function() {\n $el.find(\".row.title > div > span.icon\").remove();\n icon = startswith(finalOrder, \"-\") ? \"icon-caret-up\" : \"icon-caret-down\";\n return target.html((target.html()) + \"\");\n });\n });\n });\n };\n link = function($scope, $el, $attrs) {\n var $ctrl;\n $ctrl = $el.controller();\n linkOrdering($scope, $el, $attrs, $ctrl);\n linkPagination($scope, $el, $attrs, $ctrl);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssues\", [\"$log\", \"$tgLocation\", \"$tgTemplate\", IssuesDirective]);\n\n IssuesFiltersDirective = function($log, $location, $rs, $confirm, $loading, $template) {\n var link, template, templateSelected;\n template = $template.get(\"issue/issues-filters.html\", true);\n templateSelected = $template.get(\"issue/issues-filters-selected.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, initializeSelectedFilters, renderFilters, renderSelectedFilters, selectQFilter, selectedFilters, showCategories, showFilters, toggleFilterSelection;\n $ctrl = $el.closest(\".wrapper\").controller();\n selectedFilters = [];\n showFilters = function(title, type) {\n $el.find(\".filters-cats\").hide();\n $el.find(\".filter-list\").removeClass(\"hidden\");\n $el.find(\"h2.breadcrumb\").removeClass(\"hidden\");\n $el.find(\"h2 a.subfilter span.title\").html(title);\n return $el.find(\"h2 a.subfilter span.title\").prop(\"data-type\", type);\n };\n showCategories = function() {\n $el.find(\".filters-cats\").show();\n $el.find(\".filter-list\").addClass(\"hidden\");\n return $el.find(\"h2.breadcrumb\").addClass(\"hidden\");\n };\n initializeSelectedFilters = function(filters) {\n var j, len, name, val, values;\n selectedFilters = [];\n for (name in filters) {\n values = filters[name];\n for (j = 0, len = values.length; j < len; j++) {\n val = values[j];\n if (val.selected) {\n selectedFilters.push(val);\n }\n }\n }\n return renderSelectedFilters(selectedFilters);\n };\n renderSelectedFilters = function(selectedFilters) {\n var html;\n _.filter(selectedFilters, (function(_this) {\n return function(f) {\n if (f.color) {\n return f.style = \"border-left: 3px solid \" + f.color;\n }\n };\n })(this));\n html = templateSelected({\n filters: selectedFilters\n });\n $el.find(\".filters-applied\").html(html);\n if (selectedFilters.length > 0) {\n return $el.find(\".save-filters\").show();\n } else {\n return $el.find(\".save-filters\").hide();\n }\n };\n renderFilters = function(filters) {\n var html;\n _.filter(filters, (function(_this) {\n return function(f) {\n if (f.color) {\n return f.style = \"border-left: 3px solid \" + f.color;\n }\n };\n })(this));\n html = template({\n filters: filters\n });\n return $el.find(\".filter-list\").html(html);\n };\n toggleFilterSelection = function(type, id) {\n var currentFiltersType, filter, filterId, filters;\n if (type === \"myFilters\") {\n $rs.issues.getMyFilters($scope.projectId).then(function(data) {\n var filters, myFilters;\n myFilters = data;\n filters = myFilters[id];\n filters.page = 1;\n $ctrl.replaceAllFilters(filters);\n $ctrl.storeFilters();\n $ctrl.loadIssues();\n $ctrl.markSelectedFilters($scope.filters, filters);\n return initializeSelectedFilters($scope.filters);\n });\n return null;\n }\n filters = $scope.filters[type];\n filterId = type === 'tags' ? taiga.toString(id) : id;\n filter = _.find(filters, {\n id: filterId\n });\n filter.selected = !filter.selected;\n if (id === null) {\n id = \"null\";\n }\n if (filter.selected) {\n selectedFilters.push(filter);\n $scope.$apply(function() {\n $ctrl.selectFilter(type, id);\n $ctrl.selectFilter(\"page\", 1);\n $ctrl.storeFilters();\n return $ctrl.loadIssues();\n });\n } else {\n selectedFilters = _.reject(selectedFilters, filter);\n $scope.$apply(function() {\n $ctrl.unselectFilter(type, id);\n $ctrl.selectFilter(\"page\", 1);\n $ctrl.storeFilters();\n return $ctrl.loadIssues();\n });\n }\n renderSelectedFilters(selectedFilters);\n currentFiltersType = $el.find(\"h2 a.subfilter span.title\").prop('data-type');\n if (type === currentFiltersType) {\n return renderFilters(_.reject(filters, \"selected\"));\n }\n };\n $scope.$on(\"filters:loaded\", function(ctx, filters) {\n return initializeSelectedFilters(filters);\n });\n $scope.$on(\"filters:issueupdate\", function(ctx, filters) {\n var html;\n html = template({\n filters: filters.statuses\n });\n return $el.find(\".filter-list\").html(html);\n });\n selectQFilter = debounceLeading(100, function(value) {\n if (value === void 0) {\n return;\n }\n $ctrl.replaceFilter(\"page\", null);\n if (value.length === 0) {\n $ctrl.replaceFilter(\"q\", null);\n $ctrl.storeFilters();\n } else {\n $ctrl.replaceFilter(\"q\", value);\n $ctrl.storeFilters();\n }\n return $ctrl.loadIssues();\n });\n $scope.$watch(\"filtersQ\", selectQFilter);\n $el.on(\"click\", \".filters-cats > ul > li > a\", function(event) {\n var tags, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n tags = $scope.filters[target.data(\"type\")];\n renderFilters(_.reject(tags, \"selected\"));\n return showFilters(target.attr(\"title\"), target.data(\"type\"));\n });\n $el.on(\"click\", \".filters-inner > .filters-step-cat > .breadcrumb > .back\", function(event) {\n event.preventDefault();\n return showCategories($el);\n });\n $el.on(\"click\", \".filters-applied a\", function(event) {\n var id, target, type;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n id = target.data(\"id\") || null;\n type = target.data(\"type\");\n return toggleFilterSelection(type, id);\n });\n $el.on(\"click\", \".filter-list .single-filter\", function(event) {\n var id, target, type;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n target.toggleClass(\"active\");\n id = target.data(\"id\") || null;\n type = target.data(\"type\");\n if (type === \"myFilters\") {\n target.removeClass(\"active\");\n }\n return toggleFilterSelection(type, id);\n });\n $el.on(\"click\", \".filter-list .single-filter .icon-delete\", function(event) {\n var customFilterName, message, target, title;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n customFilterName = target.parent().data('id');\n title = \"Delete custom filter\";\n message = \"the custom filter '\" + customFilterName + \"'\";\n return $confirm.askOnDelete(title, message).then(function(finish) {\n var promise;\n promise = $ctrl.deleteMyFilter(customFilterName);\n promise.then(function() {\n promise = $ctrl.loadMyFilters();\n promise.then(function(filters) {\n finish();\n $scope.filters.myFilters = filters;\n return renderFilters($scope.filters.myFilters);\n });\n return promise.then(null, function() {\n return finish();\n });\n });\n return promise.then(null, function() {\n finish(false);\n return $confirm.notify(\"error\");\n });\n });\n });\n $el.on(\"click\", \".save-filters\", function(event) {\n event.preventDefault();\n renderFilters($scope.filters[\"myFilters\"]);\n showFilters(\"My filters\", \"myFilters\");\n $el.find('.save-filters').hide();\n $el.find('.my-filter-name').removeClass(\"hidden\");\n return $el.find('.my-filter-name').focus();\n });\n return $el.on(\"keyup\", \".my-filter-name\", function(event) {\n var newFilter, promise, target;\n event.preventDefault();\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n newFilter = target.val();\n $loading.start($el.find(\".new\"));\n promise = $ctrl.saveCurrentFiltersTo(newFilter);\n promise.then(function() {\n var loadPromise;\n loadPromise = $ctrl.loadMyFilters();\n loadPromise.then(function(filters) {\n var currentfilterstype;\n $loading.finish($el.find(\".new\"));\n $scope.filters.myFilters = filters;\n currentfilterstype = $el.find(\"h2 a.subfilter span.title\").prop('data-type');\n if (currentfilterstype === \"myFilters\") {\n renderFilters($scope.filters.myFilters);\n }\n $el.find('.my-filter-name').addClass(\"hidden\");\n return $el.find('.save-filters').show();\n });\n return loadPromise.then(null, function() {\n $loading.finish($el.find(\".new\"));\n return $confirm.notify(\"error\", \"Error loading custom filters\");\n });\n });\n return promise.then(null, function() {\n $loading.finish($el.find(\".new\"));\n $el.find(\".my-filter-name\").val(newFilter).focus().select();\n return $confirm.notify(\"error\", \"Filter not saved\");\n });\n } else if (event.keyCode === 27) {\n $el.find('.my-filter-name').val('');\n $el.find('.my-filter-name').addClass(\"hidden\");\n return $el.find('.save-filters').show();\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssuesFilters\", [\"$log\", \"$tgLocation\", \"$tgResources\", \"$tgConfirm\", \"$tgLoading\", \"$tgTemplate\", IssuesFiltersDirective]);\n\n IssueStatusInlineEditionDirective = function($repo, $template, $rootscope) {\n\n /*\n Print the status of an Issue and a popover to change it.\n - tg-issue-status-inline-edition: The issue\n \n Example:\n \n div.status(tg-issue-status-inline-edition=\"issue\")\n a.issue-status(href=\"\")\n \n NOTE: This directive need 'issueStatusById' and 'project'.\n */\n var link, selectionTemplate, updateIssueStatus;\n selectionTemplate = $template.get(\"issue/issue-status-inline-edition-selection.html\", true);\n updateIssueStatus = function($el, issue, issueStatusById) {\n var issueStatusDom, issueStatusDomParent, status;\n issueStatusDomParent = $el.find(\".issue-status\");\n issueStatusDom = $el.find(\".issue-status .issue-status-bind\");\n status = issueStatusById[issue.status];\n if (status) {\n issueStatusDom.text(status.name);\n issueStatusDom.prop(\"title\", status.name);\n return issueStatusDomParent.css('color', status.color);\n }\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, issue;\n $ctrl = $el.controller();\n issue = $scope.$eval($attrs.tgIssueStatusInlineEdition);\n $el.on(\"click\", \".issue-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var filter, j, len, ref, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n ref = $scope.filters.statuses;\n for (j = 0, len = ref.length; j < len; j++) {\n filter = ref[j];\n if (filter.id === issue.status) {\n filter.count--;\n }\n }\n issue.status = target.data(\"status-id\");\n $el.find(\".pop-status\").popover().close();\n updateIssueStatus($el, issue, $scope.issueStatusById);\n return $scope.$apply(function() {\n var k, len1, ref1;\n $repo.save(issue).then;\n ref1 = $scope.filters.statuses;\n for (k = 0, len1 = ref1.length; k < len1; k++) {\n filter = ref1[k];\n if (filter.id === issue.status) {\n filter.count++;\n }\n }\n return $rootscope.$broadcast(\"filters:issueupdate\", $scope.filters);\n });\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n $el.append(selectionTemplate({\n 'statuses': project.issue_statuses\n }));\n updateIssueStatus($el, issue, $scope.issueStatusById);\n if (project.my_permissions.indexOf(\"modify_issue\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$watch($attrs.tgIssueStatusInlineEdition, (function(_this) {\n return function(val) {\n return updateIssueStatus($el, val, $scope.issueStatusById);\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssueStatusInlineEdition\", [\"$tgRepo\", \"$tgTemplate\", \"$rootScope\", IssueStatusInlineEditionDirective]);\n\n IssueAssignedToInlineEditionDirective = function($repo, $rootscope, popoverService) {\n var link, template;\n template = _.template(\"\\\" alt=\\\"<%- name %>\\\"/>\\n
<%- name %>
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, issue, updateIssue;\n updateIssue = function(issue) {\n var ctx, member;\n ctx = {\n name: \"Unassigned\",\n imgurl: \"/images/unnamed.png\"\n };\n member = $scope.usersById[issue.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name_display;\n }\n $el.find(\".avatar\").html(template(ctx));\n return $el.find(\".issue-assignedto\").attr('title', ctx.name);\n };\n $ctrl = $el.controller();\n issue = $scope.$eval($attrs.tgIssueAssignedToInlineEdition);\n updateIssue(issue);\n $el.on(\"click\", \".issue-assignedto\", function(event) {\n return $rootscope.$broadcast(\"assigned-to:add\", issue);\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_issue\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$on(\"assigned-to:added\", (function(_this) {\n return function(ctx, userId, updatedIssue) {\n if (updatedIssue.id === issue.id) {\n updatedIssue.assigned_to = userId;\n $repo.save(updatedIssue);\n return updateIssue(updatedIssue);\n }\n };\n })(this));\n $scope.$watch($attrs.tgIssueAssignedToInlineEdition, (function(_this) {\n return function(val) {\n return updateIssue(val);\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssueAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", IssueAssignedToInlineEditionDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"memberships\", id);\n };\n service.list = function(projectId, filters, enablePagination) {\n var options, params;\n if (enablePagination == null) {\n enablePagination = true;\n }\n params = {\n project: projectId\n };\n params = _.extend({}, params, filters || {});\n if (enablePagination) {\n return $repo.queryPaginated(\"memberships\", params);\n }\n return $repo.queryMany(\"memberships\", params, options = {\n enablePagination: enablePagination\n });\n };\n service.listByUser = function(userId, filters) {\n var params;\n params = {\n user: userId\n };\n params = _.extend({}, params, filters || {});\n return $repo.queryPaginated(\"memberships\", params);\n };\n service.resendInvitation = function(id) {\n var url;\n url = $urls.resolve(\"memberships\");\n return $http.post(url + \"/\" + id + \"/resend_invitation\", {});\n };\n service.bulkCreateMemberships = function(projectId, data, invitation_extra_text) {\n var params, url;\n url = $urls.resolve(\"bulk-create-memberships\");\n params = {\n project_id: projectId,\n bulk_memberships: data,\n invitation_extra_text: invitation_extra_text\n };\n return $http.post(url, params);\n };\n return function(instance) {\n return instance.memberships = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgMembershipsResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/project-profile.coffee\n */\n\n(function() {\n var CsvExporterController, CsvExporterIssuesController, CsvExporterTasksController, CsvExporterUserstoriesController, ProjectDefaultValuesDirective, ProjectExportDirective, ProjectModulesDirective, ProjectProfileController, ProjectProfileDirective, bindOnce, debounce, groupBy, joinStr, mixOf, module, taiga, toString, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAdmin\");\n\n ProjectProfileController = (function(superClass) {\n extend(ProjectProfileController, superClass);\n\n ProjectProfileController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function ProjectProfileController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appTitle = appTitle;\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Project profile - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:loaded\", (function(_this) {\n return function() {\n return _this.appTitle.set(\"Project profile - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n }\n\n ProjectProfileController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.pointsList = _.sortBy(project.points, \"order\");\n _this.scope.usStatusList = _.sortBy(project.us_statuses, \"order\");\n _this.scope.taskStatusList = _.sortBy(project.task_statuses, \"order\");\n _this.scope.prioritiesList = _.sortBy(project.priorities, \"order\");\n _this.scope.severitiesList = _.sortBy(project.severities, \"order\");\n _this.scope.issueTypesList = _.sortBy(project.issue_types, \"order\");\n _this.scope.issueStatusList = _.sortBy(project.issue_statuses, \"order\");\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ProjectProfileController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n ProjectProfileController.prototype.openDeleteLightbox = function() {\n return this.rootscope.$broadcast(\"deletelightbox:new\", this.scope.project);\n };\n\n return ProjectProfileController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectProfileController\", ProjectProfileController);\n\n ProjectProfileDirective = function($repo, $confirm, $loading, $navurls, $location) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.save($scope.project);\n promise.then(function() {\n var newUrl;\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n newUrl = $navurls.resolve(\"project-admin-project-profile-details\", {\n project: $scope.project.slug\n });\n $location.path(newUrl);\n return $scope.$emit(\"project:loaded\", $scope.project);\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectProfile\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgNavUrls\", \"$tgLocation\", ProjectProfileDirective]);\n\n ProjectDefaultValuesDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.save($scope.project);\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectDefaultValues\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectDefaultValuesDirective]);\n\n ProjectModulesDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit;\n form = $el.find(\"form\").checksley();\n submit = (function(_this) {\n return function() {\n var promise, target;\n if (!form.validate()) {\n return;\n }\n target = angular.element(\".admin-functionalities a.button-green\");\n $loading.start(target);\n promise = $repo.save($scope.project);\n promise.then(function() {\n $loading.finish(target);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:loaded\", $scope.project);\n });\n return promise.then(null, function(data) {\n $loading.finish(target);\n return $confirm.notify(\"error\", data._error_message);\n });\n };\n })(this);\n $el.on(\"submit\", \"form\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"click\", \".admin-functionalities a.button-green\", function(event) {\n event.preventDefault();\n return submit();\n });\n $scope.$watch(\"isVideoconferenceActivated\", function(isVideoconferenceActivated) {\n if (isVideoconferenceActivated) {\n return $el.find(\".videoconference-attributes\").removeClass(\"hidden\");\n } else {\n $el.find(\".videoconference-attributes\").addClass(\"hidden\");\n $scope.project.videoconferences = null;\n return $scope.project.videoconferences_salt = \"\";\n }\n });\n return $scope.$watch(\"project\", function(project) {\n if (project.videoconferences != null) {\n return $scope.isVideoconferenceActivated = true;\n } else {\n return $scope.isVideoconferenceActivated = false;\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectModules\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectModulesDirective]);\n\n ProjectExportDirective = function($window, $rs, $confirm) {\n var link;\n link = function($scope, $el, $attrs) {\n var buttonsEl, hideButtons, hideResult, hideSpinner, resultEl, resultMessageEl, resultTitleEl, setAsyncMessage, setAsyncTitle, setLoadingMessage, setLoadingTitle, setSyncMessage, setSyncTitle, showButtons, showErrorMode, showExportResultAsyncMode, showExportResultSyncMode, showLoadingMode, showResult, showSpinner, spinnerEl;\n buttonsEl = $el.find(\".admin-project-export-buttons\");\n showButtons = function() {\n return buttonsEl.removeClass(\"hidden\");\n };\n hideButtons = function() {\n return buttonsEl.addClass(\"hidden\");\n };\n resultEl = $el.find(\".admin-project-export-result\");\n showResult = function() {\n return resultEl.removeClass(\"hidden\");\n };\n hideResult = function() {\n return resultEl.addClass(\"hidden\");\n };\n spinnerEl = $el.find(\".spin\");\n showSpinner = function() {\n return spinnerEl.removeClass(\"hidden\");\n };\n hideSpinner = function() {\n return spinnerEl.addClass(\"hidden\");\n };\n resultTitleEl = $el.find(\".result-title\");\n setLoadingTitle = function() {\n return resultTitleEl.html(\"We are generating your dump file\");\n };\n setAsyncTitle = function() {\n return resultTitleEl.html(\"We are generating your dump file\");\n };\n setSyncTitle = function() {\n return resultTitleEl.html(\"Your dump file is ready!\");\n };\n resultMessageEl = $el.find(\".result-message \");\n setLoadingMessage = function() {\n return resultMessageEl.html(\"Please don't close this page.\");\n };\n setAsyncMessage = function() {\n return resultMessageEl.html(\"We will send you an email when ready.\");\n };\n setSyncMessage = function(url) {\n return resultMessageEl.html(\"If the download doesn't start automatically click here.\");\n };\n showLoadingMode = function() {\n showSpinner();\n setLoadingTitle();\n setLoadingMessage();\n hideButtons();\n return showResult();\n };\n showExportResultAsyncMode = function() {\n hideSpinner();\n setAsyncTitle();\n return setAsyncMessage();\n };\n showExportResultSyncMode = function(url) {\n hideSpinner();\n setSyncTitle();\n return setSyncMessage(url);\n };\n showErrorMode = function() {\n hideSpinner();\n hideResult();\n return showButtons();\n };\n return $el.on(\"click\", \"a.button-export\", debounce(2000, (function(_this) {\n return function(event) {\n var onError, onSuccess;\n event.preventDefault();\n onSuccess = function(result) {\n var dumpUrl;\n if (result.status === 202) {\n return showExportResultAsyncMode();\n } else {\n dumpUrl = result.data.url;\n showExportResultSyncMode(dumpUrl);\n return $window.open(dumpUrl, \"_blank\");\n }\n };\n onError = function(result) {\n var errorMsg, ref;\n showErrorMode();\n errorMsg = \"Our oompa loompas have some problems generasting your dump. Please try again. \";\n if (result.status === 429) {\n errorMsg = \"Sorry, our oompa loompas are very busy right now. Please try again in a few minutes. \";\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = \"Our oompa loompas have some problems generasting your dump: \" + result.data._error_message;\n }\n return $confirm.notify(\"error\", errorMsg);\n };\n showLoadingMode();\n return $rs.projects[\"export\"]($scope.projectId).then(onSuccess, onError);\n };\n })(this)));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectExport\", [\"$window\", \"$tgResources\", \"$tgConfirm\", ProjectExportDirective]);\n\n CsvExporterController = (function(superClass) {\n extend(CsvExporterController, superClass);\n\n CsvExporterController.$inject = [\"$scope\", \"$rootScope\", \"$tgUrls\", \"$tgConfirm\", \"$tgResources\"];\n\n function CsvExporterController(scope, rootscope, urls, confirm, rs) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.urls = urls;\n this.confirm = confirm;\n this.rs = rs;\n this._generateUuid = bind(this._generateUuid, this);\n this.setCsvUuid = bind(this.setCsvUuid, this);\n this.rootscope.$on(\"project:loaded\", this.setCsvUuid);\n this.scope.$watch(\"csvUuid\", (function(_this) {\n return function(value) {\n if (value) {\n return _this.scope.csvUrl = _this.urls.resolveAbsolute(_this.type + \"-csv\", value);\n } else {\n return _this.scope.csvUrl = \"\";\n }\n };\n })(this));\n }\n\n CsvExporterController.prototype.setCsvUuid = function() {\n return this.scope.csvUuid = this.scope.project[this.type + \"_csv_uuid\"];\n };\n\n CsvExporterController.prototype._generateUuid = function(finish) {\n var promise;\n promise = this.rs.projects[\"regenerate_\" + this.type + \"_csv_uuid\"](this.scope.projectId);\n promise.then((function(_this) {\n return function(data) {\n var ref;\n return _this.scope.csvUuid = (ref = data.data) != null ? ref.uuid : void 0;\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n promise[\"finally\"](function() {\n return finish();\n });\n return promise;\n };\n\n CsvExporterController.prototype.regenerateUuid = function() {\n var subtitle, title;\n if (this.scope.csvUuid) {\n title = \"Change URL\";\n subtitle = \"You going to change the CSV data access url. The previous url will be disabled. Are you sure?\";\n return this.confirm.ask(title, subtitle).then(this._generateUuid);\n } else {\n return this._generateUuid(_.identity);\n }\n };\n\n return CsvExporterController;\n\n })(taiga.Controller);\n\n CsvExporterUserstoriesController = (function(superClass) {\n extend(CsvExporterUserstoriesController, superClass);\n\n function CsvExporterUserstoriesController() {\n return CsvExporterUserstoriesController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterUserstoriesController.prototype.type = \"userstories\";\n\n return CsvExporterUserstoriesController;\n\n })(CsvExporterController);\n\n CsvExporterTasksController = (function(superClass) {\n extend(CsvExporterTasksController, superClass);\n\n function CsvExporterTasksController() {\n return CsvExporterTasksController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterTasksController.prototype.type = \"tasks\";\n\n return CsvExporterTasksController;\n\n })(CsvExporterController);\n\n CsvExporterIssuesController = (function(superClass) {\n extend(CsvExporterIssuesController, superClass);\n\n function CsvExporterIssuesController() {\n return CsvExporterIssuesController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterIssuesController.prototype.type = \"issues\";\n\n return CsvExporterIssuesController;\n\n })(CsvExporterController);\n\n module.controller(\"CsvExporterUserstoriesController\", CsvExporterUserstoriesController);\n\n module.controller(\"CsvExporterTasksController\", CsvExporterTasksController);\n\n module.controller(\"CsvExporterIssuesController\", CsvExporterIssuesController);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/project-profile.coffee\n */\n\n(function() {\n var ColorSelectionDirective, ProjectCustomAttributesController, ProjectCustomAttributesDirective, ProjectValuesController, ProjectValuesDirective, ProjectValuesSectionController, bindOnce, debounce, groupBy, joinStr, mixOf, module, taiga, toString, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAdmin\");\n\n ProjectValuesSectionController = (function(superClass) {\n extend(ProjectValuesSectionController, superClass);\n\n ProjectValuesSectionController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function ProjectValuesSectionController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appTitle) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appTitle = appTitle;\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Project values - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n ProjectValuesSectionController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ProjectValuesSectionController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n return ProjectValuesSectionController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectValuesSectionController\", ProjectValuesSectionController);\n\n ProjectValuesController = (function(superClass) {\n extend(ProjectValuesController, superClass);\n\n ProjectValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\"];\n\n function ProjectValuesController(scope, rootscope, repo, confirm, rs) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.moveValue = bind(this.moveValue, this);\n this.loadValues = bind(this.loadValues, this);\n this.scope.$on(\"admin:project-values:move\", this.moveValue);\n this.rootscope.$on(\"project:loaded\", this.loadValues);\n }\n\n ProjectValuesController.prototype.loadValues = function() {\n return this.rs[this.scope.resource].listValues(this.scope.projectId, this.scope.type).then((function(_this) {\n return function(values) {\n _this.scope.values = values;\n _this.scope.maxValueOrder = _.max(values, \"order\").order;\n return values;\n };\n })(this));\n };\n\n ProjectValuesController.prototype.moveValue = function(ctx, itemValue, itemIndex) {\n var r, values;\n values = this.scope.values;\n r = values.indexOf(itemValue);\n values.splice(r, 1);\n values.splice(itemIndex, 0, itemValue);\n _.each(values, function(value, index) {\n return value.order = index;\n });\n return this.repo.saveAll(values);\n };\n\n return ProjectValuesController;\n\n })(taiga.Controller);\n\n module.controller(\"ProjectValuesController\", ProjectValuesController);\n\n ProjectValuesDirective = function($log, $repo, $confirm, $location, animationFrame) {\n var link, linkDragAndDrop, linkValue;\n linkDragAndDrop = function($scope, $el, $attrs) {\n var itemEl, newParentScope, oldParentScope, tdom;\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el.find(\".sortable\");\n tdom.sortable({\n handle: \".row.table-main.visualization\",\n dropOnEmpty: true,\n connectWith: \".project-values-body\",\n revert: 400,\n axis: \"y\"\n });\n tdom.on(\"sortstop\", function(event, ui) {\n var itemIndex, itemValue;\n itemEl = ui.item;\n itemValue = itemEl.scope().value;\n itemIndex = itemEl.index();\n return $scope.$broadcast(\"admin:project-values:move\", itemValue, itemIndex);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n linkValue = function($scope, $el, $attrs) {\n var $ctrl, cancel, goToBottomList, initializeNewValue, saveNewValue, saveValue, valueType;\n $ctrl = $el.controller();\n valueType = $attrs.type;\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"is_closed\": false,\n \"is_archived\": false\n };\n };\n initializeNewValue();\n goToBottomList = (function(_this) {\n return function(focus) {\n var table;\n if (focus == null) {\n focus = false;\n }\n table = $el.find(\".table-main\");\n $(document.body).scrollTop(table.offset().top + table.height());\n if (focus) {\n return $el.find(\".new-value input:visible\").first().focus();\n }\n };\n })(this);\n saveValue = function(target) {\n var form, formEl, promise, value;\n formEl = target.parents(\"form\");\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n value = formEl.scope().value;\n promise = $repo.save(value);\n promise.then((function(_this) {\n return function() {\n var row;\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n return row.siblings(\".visualization\").removeClass('hidden');\n };\n })(this));\n return promise.then(null, function(data) {\n return form.setErrors(data);\n });\n };\n saveNewValue = function(target) {\n var form, formEl, promise;\n formEl = target.parents(\"form\");\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n $scope.newValue.project = $scope.project.id;\n $scope.newValue.order = $scope.maxValueOrder ? $scope.maxValueOrder + 1 : 1;\n promise = $repo.create(valueType, $scope.newValue);\n promise.then((function(_this) {\n return function(data) {\n target.addClass(\"hidden\");\n $scope.values.push(data);\n $scope.maxValueOrder = data.order;\n return initializeNewValue();\n };\n })(this));\n return promise.then(null, function(data) {\n return form.setErrors(data);\n });\n };\n cancel = function(target) {\n var formEl, row, value;\n row = target.parents(\".row.table-main\");\n formEl = target.parents(\"form\");\n value = formEl.scope().value;\n return $scope.$apply(function() {\n row.addClass(\"hidden\");\n value.revert();\n return row.siblings(\".visualization\").removeClass('hidden');\n });\n };\n $el.on(\"click\", \".show-add-new\", function(event) {\n event.preventDefault();\n $el.find(\".new-value\").removeClass('hidden');\n return goToBottomList(true);\n });\n $el.on(\"click\", \".add-new\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n }));\n $el.on(\"click\", \".delete-new\", function(event) {\n event.preventDefault();\n $el.find(\".new-value\").addClass(\"hidden\");\n return initializeNewValue();\n });\n $el.on(\"click\", \".edit-value\", function(event) {\n var editionRow, row, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n editionRow = row.siblings(\".edition\");\n editionRow.removeClass('hidden');\n return editionRow.find('input:visible').first().focus().select();\n });\n $el.on(\"keyup\", \".edition input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n return saveValue(target);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n return cancel(target);\n }\n });\n $el.on(\"keyup\", \".new-value input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n } else if (event.keyCode === 27) {\n $el.find(\".new-value\").addClass(\"hidden\");\n return initializeNewValue();\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return saveValue(target);\n });\n $el.on(\"click\", \".cancel\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return cancel(target);\n });\n return $el.on(\"click\", \".delete-value\", function(event) {\n var choices, formEl, replacement, subtitle, target, title, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.parents(\"form\");\n value = formEl.scope().value;\n choices = {};\n _.each($scope.values, function(option) {\n if (value.id !== option.id) {\n return choices[option.id] = option.name;\n }\n });\n title = \"Delete value\";\n subtitle = value.name;\n replacement = \"All items with this value will be changed to\";\n if (_.keys(choices).length === 0) {\n return $confirm.error(\"You can't delete all values.\");\n }\n return $confirm.askChoice(title, subtitle, choices, replacement).then(function(response) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadValues()[\"finally\"](function() {\n return response.finish();\n });\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n return $repo.remove(value, {\n \"moveTo\": response.selected\n }).then(onSucces, onError);\n });\n });\n };\n link = function($scope, $el, $attrs) {\n linkDragAndDrop($scope, $el, $attrs);\n linkValue($scope, $el, $attrs);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectValues\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"animationFrame\", ProjectValuesDirective]);\n\n ColorSelectionDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var $ctrl;\n $ctrl = $el.controller();\n $scope.$watch($attrs.ngModel, function(element) {\n return $scope.color = element.color;\n });\n $el.on(\"click\", \".current-color\", function(event) {\n var body, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n $el.find(\".select-color\").hide();\n target.siblings(\".select-color\").show();\n body = angular.element(\"body\");\n return body.on(\"click\", (function(_this) {\n return function(event) {\n if (angular.element(event.target).parent(\".select-color\").length === 0) {\n $el.find(\".select-color\").hide();\n return body.unbind(\"click\");\n }\n };\n })(this));\n });\n $el.on(\"click\", \".select-color .color\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n $scope.$apply(function() {\n return $model.$modelValue.color = target.data(\"color\");\n });\n return $el.find(\".select-color\").hide();\n });\n $el.on(\"click\", \".select-color .selected-color\", function(event) {\n event.preventDefault();\n $scope.$apply(function() {\n return $model.$modelValue.color = $scope.color;\n });\n return $el.find(\".select-color\").hide();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgColorSelection\", ColorSelectionDirective);\n\n ProjectCustomAttributesController = (function(superClass) {\n extend(ProjectCustomAttributesController, superClass);\n\n ProjectCustomAttributesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function ProjectCustomAttributesController(scope, rootscope, repo, rs, params, q, location, navUrls, appTitle) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appTitle = appTitle;\n this.moveCustomAttributes = bind(this.moveCustomAttributes, this);\n this.deleteCustomAttribute = bind(this.deleteCustomAttribute, this);\n this.saveCustomAttribute = bind(this.saveCustomAttribute, this);\n this.createCustomAttribute = bind(this.createCustomAttribute, this);\n this.loadCustomAttributes = bind(this.loadCustomAttributes, this);\n this.scope.project = {};\n this.rootscope.$on(\"project:loaded\", (function(_this) {\n return function() {\n _this.loadCustomAttributes();\n return _this.appTitle.set(\"Project Custom Attributes - \" + _this.scope.sectionName + \" - \" + _this.scope.project.name);\n };\n })(this));\n }\n\n ProjectCustomAttributesController.prototype.loadCustomAttributes = function() {\n return this.rs.customAttributes[this.scope.type].list(this.scope.projectId).then((function(_this) {\n return function(customAttributes) {\n _this.scope.customAttributes = customAttributes;\n _this.scope.maxOrder = _.max(customAttributes, \"order\").order;\n return customAttributes;\n };\n })(this));\n };\n\n ProjectCustomAttributesController.prototype.createCustomAttribute = function(attrValues) {\n return this.repo.create(\"custom-attributes/\" + this.scope.type, attrValues);\n };\n\n ProjectCustomAttributesController.prototype.saveCustomAttribute = function(attrModel) {\n return this.repo.save(attrModel);\n };\n\n ProjectCustomAttributesController.prototype.deleteCustomAttribute = function(attrModel) {\n return this.repo.remove(attrModel);\n };\n\n ProjectCustomAttributesController.prototype.moveCustomAttributes = function(attrModel, newIndex) {\n var customAttributes, r;\n customAttributes = this.scope.customAttributes;\n r = customAttributes.indexOf(attrModel);\n customAttributes.splice(r, 1);\n customAttributes.splice(newIndex, 0, attrModel);\n _.each(customAttributes, function(val, idx) {\n return val.order = idx;\n });\n return this.repo.saveAll(customAttributes);\n };\n\n return ProjectCustomAttributesController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectCustomAttributesController\", ProjectCustomAttributesController);\n\n ProjectCustomAttributesDirective = function($log, $confirm, animationFrame) {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl, cancelCreate, cancelUpdate, create, deleteCustomAttribute, hideAddButton, hideCancelButton, hideCreateForm, hideEditForm, resetNewAttr, revertChangesInCustomAttribute, showAddButton, showCancelButton, showCreateForm, showEditForm, sortableEl, update;\n $ctrl = $el.controller();\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n sortableEl = $el.find(\".js-sortable\");\n sortableEl.sortable({\n handle: \".js-view-custom-field\",\n dropOnEmpty: true,\n revert: 400,\n axis: \"y\"\n });\n sortableEl.on(\"sortstop\", function(event, ui) {\n var itemAttr, itemEl, itemIndex;\n itemEl = ui.item;\n itemAttr = itemEl.scope().attr;\n itemIndex = itemEl.index();\n return $ctrl.moveCustomAttributes(itemAttr, itemIndex);\n });\n showCreateForm = function() {\n $el.find(\".js-new-custom-field\").removeClass(\"hidden\");\n return $el.find(\".js-new-custom-field input:visible\").first().focus();\n };\n hideCreateForm = function() {\n return $el.find(\".js-new-custom-field\").addClass(\"hidden\");\n };\n showAddButton = function() {\n return $el.find(\".js-add-custom-field-button\").removeClass(\"hidden\");\n };\n hideAddButton = function() {\n return $el.find(\".js-add-custom-field-button\").addClass(\"hidden\");\n };\n showCancelButton = function() {\n return $el.find(\".js-cancel-new-custom-field-button\").removeClass(\"hidden\");\n };\n hideCancelButton = function() {\n return $el.find(\".js-cancel-new-custom-field-button\").addClass(\"hidden\");\n };\n resetNewAttr = function() {\n return $scope.newAttr = {};\n };\n create = function(formEl) {\n var attr, form, onError, onSucces;\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n onSucces = (function(_this) {\n return function() {\n $ctrl.loadCustomAttributes();\n hideCreateForm();\n resetNewAttr();\n return $confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function(data) {\n return form.setErrors(data);\n };\n })(this);\n attr = $scope.newAttr;\n attr.project = $scope.projectId;\n attr.order = $scope.maxOrder ? $scope.maxOrder + 1 : 1;\n return $ctrl.createCustomAttribute(attr).then(onSucces, onError);\n };\n cancelCreate = function() {\n hideCreateForm();\n return resetNewAttr();\n };\n $scope.$watch(\"customAttributes\", function(customAttributes) {\n if (!customAttributes) {\n return;\n }\n if (customAttributes.length === 0) {\n hideCancelButton();\n hideAddButton();\n return showCreateForm();\n } else {\n hideCreateForm();\n showAddButton();\n return showCancelButton();\n }\n });\n $el.on(\"click\", \".js-add-custom-field-button\", function(event) {\n event.preventDefault();\n return showCreateForm();\n });\n $el.on(\"click\", \".js-create-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return create(formEl);\n }));\n $el.on(\"click\", \".js-cancel-new-custom-field-button\", function(event) {\n event.preventDefault();\n return cancelCreate();\n });\n $el.on(\"keyup\", \".js-new-custom-field input\", function(event) {\n var formEl, target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return create(formEl);\n } else if (event.keyCode === 27) {\n return cancelCreate();\n }\n });\n showEditForm = function(formEl) {\n formEl.find(\".js-view-custom-field\").addClass(\"hidden\");\n formEl.find(\".js-edit-custom-field\").removeClass(\"hidden\");\n return formEl.find(\".js-edit-custom-field input:visible\").first().focus().select();\n };\n hideEditForm = function(formEl) {\n formEl.find(\".js-edit-custom-field\").addClass(\"hidden\");\n return formEl.find(\".js-view-custom-field\").removeClass(\"hidden\");\n };\n revertChangesInCustomAttribute = function(formEl) {\n return $scope.$apply(function() {\n return formEl.scope().attr.revert();\n });\n };\n update = function(formEl) {\n var attr, form, onError, onSucces;\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n onSucces = (function(_this) {\n return function() {\n $ctrl.loadCustomAttributes();\n hideEditForm(formEl);\n return $confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function(data) {\n return form.setErrors(data);\n };\n })(this);\n attr = formEl.scope().attr;\n return $ctrl.saveCustomAttribute(attr).then(onSucces, onError);\n };\n cancelUpdate = function(formEl) {\n hideEditForm(formEl);\n return revertChangesInCustomAttribute(formEl);\n };\n $el.on(\"click\", \".js-edit-custom-field-button\", function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return showEditForm(formEl);\n });\n $el.on(\"click\", \".js-update-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return update(formEl);\n }));\n $el.on(\"click\", \".js-cancel-edit-custom-field-button\", function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return cancelUpdate(formEl);\n });\n $el.on(\"keyup\", \".js-edit-custom-field input\", function(event) {\n var formEl, target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return update(formEl);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return cancelUpdate(formEl);\n }\n });\n deleteCustomAttribute = function(formEl) {\n var attr, message, subtitle, title;\n attr = formEl.scope().attr;\n title = \"Delete custom attribute\";\n subtitle = \"Remeber that all values in this custom field will be deleted.
Are you sure you want to continue?\";\n message = attr.name;\n return $confirm.ask(title, subtitle, message).then(function(finish) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadCustomAttributes()[\"finally\"](function() {\n return finish();\n });\n };\n onError = function() {\n finish(false);\n return $confirm.notify(\"error\", null, \"We have not been able to delete '\" + message + \"'.\");\n };\n return $ctrl.deleteCustomAttribute(attr).then(onSucces, onError);\n });\n };\n return $el.on(\"click\", \".js-delete-custom-field-button\", debounce(2000, function(event) {\n var formEl, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.closest(\"form\");\n return deleteCustomAttribute(formEl);\n }));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectCustomAttributes\", [\"$log\", \"$tgConfirm\", \"animationFrame\", ProjectCustomAttributesDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"roles\", id);\n };\n service.list = function(projectId) {\n return $repo.queryMany(\"roles\", {\n project: projectId\n });\n };\n return function(instance) {\n return instance.roles = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgRolesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/admin/third-parties.coffee\n */\n\n(function() {\n var BitbucketController, BitbucketWebhooksDirective, GithubController, GithubWebhooksDirective, GitlabController, GitlabWebhooksDirective, NewWebhookDirective, SelectInputText, ValidOriginIpsDirective, WebhookDirective, WebhooksController, bindMethods, debounce, mixOf, module, taiga, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindMethods = this.taiga.bindMethods;\n\n debounce = this.taiga.debounce;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaAdmin\");\n\n WebhooksController = (function(superClass) {\n extend(WebhooksController, superClass);\n\n WebhooksController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$tgLocation\", \"$tgNavUrls\", \"$appTitle\"];\n\n function WebhooksController(scope, repo, rs, params, location, navUrls, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.location = location;\n this.navUrls = navUrls;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Webhooks\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Webhooks - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"webhooks:reload\", this.loadWebhooks);\n }\n\n WebhooksController.prototype.loadWebhooks = function() {\n return this.rs.webhooks.list(this.scope.projectId).then((function(_this) {\n return function(webhooks) {\n return _this.scope.webhooks = webhooks;\n };\n })(this));\n };\n\n WebhooksController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.i_am_owner) {\n _this.location.path(_this.navUrls.resolve(\"permission-denied\"));\n }\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n WebhooksController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadWebhooks();\n };\n })(this));\n };\n\n return WebhooksController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"WebhooksController\", WebhooksController);\n\n WebhookDirective = function($rs, $repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var cancel, openHistory, save, showEditMode, showVisualizationMode, updateLogs, updateShowHideHistoryText, webhook;\n webhook = $scope.$eval($attrs.tgWebhook);\n updateLogs = function() {\n return $rs.webhooklogs.list(webhook.id).then((function(_this) {\n return function(webhooklogs) {\n var i, len, log, ref;\n for (i = 0, len = webhooklogs.length; i < len; i++) {\n log = webhooklogs[i];\n log.validStatus = (200 <= (ref = log.status) && ref < 300);\n log.prettySentHeaders = _.map(_.pairs(log.request_headers), function(arg) {\n var header, value;\n header = arg[0], value = arg[1];\n return header + \": \" + value;\n }).join(\"\\n\");\n log.prettySentData = JSON.stringify(log.request_data);\n log.prettyDate = moment(log.created).format(\"DD MMM YYYY [at] hh:mm:ss\");\n }\n webhook.logs_counter = webhooklogs.length;\n webhook.logs = webhooklogs;\n return updateShowHideHistoryText();\n };\n })(this));\n };\n updateShowHideHistoryText = function() {\n var historyElement, textElement;\n textElement = $el.find(\".toggle-history\");\n historyElement = textElement.parents(\".single-webhook-wrapper\").find(\".webhooks-history\");\n if (historyElement.hasClass(\"open\")) {\n return textElement.text(\"(Hide history)\");\n } else {\n return textElement.text(\"(Show history)\");\n }\n };\n showVisualizationMode = function() {\n $el.find(\".edition-mode\").addClass(\"hidden\");\n return $el.find(\".visualization-mode\").removeClass(\"hidden\");\n };\n showEditMode = function() {\n $el.find(\".visualization-mode\").addClass(\"hidden\");\n return $el.find(\".edition-mode\").removeClass(\"hidden\");\n };\n openHistory = function() {\n return $el.find(\".webhooks-history\").addClass(\"open\");\n };\n cancel = function() {\n showVisualizationMode();\n return $scope.$apply(function() {\n return webhook.revert();\n });\n };\n save = debounce(2000, function(target) {\n var form, promise;\n form = target.parents(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n promise = $repo.save(webhook);\n promise.then((function(_this) {\n return function() {\n return showVisualizationMode();\n };\n })(this));\n return promise.then(null, function(data) {\n $confirm.notify(\"error\");\n return form.setErrors(data);\n });\n });\n $el.on(\"click\", \".test-webhook\", function() {\n openHistory();\n return $rs.webhooks.test(webhook.id).then((function(_this) {\n return function() {\n return updateLogs();\n };\n })(this));\n });\n $el.on(\"click\", \".edit-webhook\", function() {\n return showEditMode();\n });\n $el.on(\"click\", \".cancel-existing\", function() {\n return cancel();\n });\n $el.on(\"click\", \".edit-existing\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return save(target);\n });\n $el.on(\"keyup\", \".edition-mode input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n return save(target);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n return cancel(target);\n }\n });\n $el.on(\"click\", \".delete-webhook\", function() {\n var message, title;\n title = \"Delete webhook\";\n message = \"Webhook '\" + webhook.name + \"'\";\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(finish) {\n var onError, onSucces;\n onSucces = function() {\n finish();\n return $scope.$emit(\"webhooks:reload\");\n };\n onError = function() {\n finish(false);\n return $confirm.notify(\"error\");\n };\n return $repo.remove(webhook).then(onSucces, onError);\n };\n })(this));\n });\n $el.on(\"click\", \".toggle-history\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if ((webhook.logs == null) || webhook.logs.length === 0) {\n return updateLogs().then(function() {\n return timeout(0, function() {\n $el.find(\".webhooks-history\").toggleClass(\"open\");\n return updateShowHideHistoryText();\n });\n });\n } else {\n $el.find(\".webhooks-history\").toggleClass(\"open\");\n return $scope.$apply(function() {\n return updateShowHideHistoryText();\n });\n }\n });\n $el.on(\"click\", \".history-single\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n target.toggleClass(\"history-single-open\");\n return target.siblings(\".history-single-response\").toggleClass(\"open\");\n });\n return $el.on(\"click\", \".resend-request\", function(event) {\n var log, target;\n target = angular.element(event.currentTarget);\n log = target.data(\"log\");\n return $rs.webhooklogs.resend(log).then((function(_this) {\n return function() {\n return updateLogs();\n };\n })(this));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgWebhook\", [\"$tgResources\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", WebhookDirective]);\n\n NewWebhookDirective = function($rs, $repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var addWebhookDOMNode, formDOMNode, initializeNewValue, save, webhook;\n webhook = $scope.$eval($attrs.tgWebhook);\n formDOMNode = $el.find(\".new-webhook-form\");\n addWebhookDOMNode = $el.find(\".add-webhook\");\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"url\": \"\",\n \"key\": \"\"\n };\n };\n initializeNewValue();\n $scope.$watch(\"webhooks\", function(webhooks) {\n if (webhooks != null) {\n if (webhooks.length === 0) {\n formDOMNode.removeClass(\"hidden\");\n addWebhookDOMNode.addClass(\"hidden\");\n return formDOMNode.find(\"input\")[0].focus();\n } else {\n formDOMNode.addClass(\"hidden\");\n return addWebhookDOMNode.removeClass(\"hidden\");\n }\n }\n });\n save = debounce(2000, function() {\n var form, promise;\n form = formDOMNode.checksley();\n if (!form.validate()) {\n return;\n }\n $scope.newValue.project = $scope.project.id;\n promise = $repo.create(\"webhooks\", $scope.newValue);\n promise.then((function(_this) {\n return function() {\n $scope.$emit(\"webhooks:reload\");\n return initializeNewValue();\n };\n })(this));\n return promise.then(null, function(data) {\n $confirm.notify(\"error\");\n return form.setErrors(data);\n });\n });\n formDOMNode.on(\"click\", \".add-new\", function(event) {\n event.preventDefault();\n return save();\n });\n formDOMNode.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return save();\n }\n });\n formDOMNode.on(\"click\", \".cancel-new\", function(event) {\n return $scope.$apply(function() {\n return initializeNewValue();\n });\n });\n return addWebhookDOMNode.on(\"click\", function(event) {\n formDOMNode.removeClass(\"hidden\");\n return formDOMNode.find(\"input\")[0].focus();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgNewWebhook\", [\"$tgResources\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", NewWebhookDirective]);\n\n GithubController = (function(superClass) {\n extend(GithubController, superClass);\n\n GithubController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$appTitle\"];\n\n function GithubController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Github\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Github - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n GithubController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"github\").then((function(_this) {\n return function(github) {\n return _this.scope.github = github;\n };\n })(this));\n };\n\n GithubController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n GithubController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n };\n\n return GithubController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"GithubController\", GithubController);\n\n GitlabController = (function(superClass) {\n extend(GitlabController, superClass);\n\n GitlabController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$appTitle\"];\n\n function GitlabController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Gitlab\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Gitlab - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:modules:reload\", (function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n }\n\n GitlabController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"gitlab\").then((function(_this) {\n return function(gitlab) {\n return _this.scope.gitlab = gitlab;\n };\n })(this));\n };\n\n GitlabController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n GitlabController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n };\n\n return GitlabController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"GitlabController\", GitlabController);\n\n BitbucketController = (function(superClass) {\n extend(BitbucketController, superClass);\n\n BitbucketController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$appTitle\"];\n\n function BitbucketController(scope, repo, rs, params, appTitle) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appTitle = appTitle;\n bindMethods(this);\n this.scope.sectionName = \"Bitbucket\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(\"Bitbucket - \" + _this.scope.project.name);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:modules:reload\", (function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n }\n\n BitbucketController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"bitbucket\").then((function(_this) {\n return function(bitbucket) {\n return _this.scope.bitbucket = bitbucket;\n };\n })(this));\n };\n\n BitbucketController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n BitbucketController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n };\n\n return BitbucketController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"BitbucketController\", BitbucketController);\n\n SelectInputText = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.on(\"click\", \".select-input-content\", function() {\n $el.find(\"input\").select();\n return $el.find(\".help-copy\").addClass(\"visible\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSelectInputText\", SelectInputText);\n\n GithubWebhooksDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.github, \"github\");\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgGithubWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", GithubWebhooksDirective]);\n\n GitlabWebhooksDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.gitlab, \"gitlab\");\n promise.then(function() {\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgGitlabWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", GitlabWebhooksDirective]);\n\n BitbucketWebhooksDirective = function($repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n $loading.start(submitButton);\n promise = $repo.saveAttribute($scope.bitbucket, \"bitbucket\");\n promise.then(function() {\n $loading.finish(submitButton);\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n $loading.finish(submitButton);\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBitbucketWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", BitbucketWebhooksDirective]);\n\n ValidOriginIpsDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $ngModel) {\n return $ngModel.$parsers.push(function(value) {\n value = $.trim(value);\n if (value === \"\") {\n return [];\n }\n return value.split(\",\");\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgValidOriginIps\", ValidOriginIpsDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/bind.coffee\n */\n\n(function() {\n var BindHtmlDirective, BindOnceAltDirective, BindOnceBindDirective, BindOnceHrefDirective, BindOnceHtmlDirective, BindOnceRefDirective, BindOnceSrcDirective, BindOnceTitleDirective, BindTitleDirective, bindOnce, module;\n\n bindOnce = this.taiga.bindOnce;\n\n BindOnceBindDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoBind, function(val) {\n return $el.text(val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceHtmlDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoHtml, function(val) {\n return $el.html(val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceRefDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoRef, function(val) {\n return $el.html(\"#\" + val + \" \");\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceSrcDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoSrc, function(val) {\n return $el.attr(\"src\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceHrefDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoHref, function(val) {\n return $el.attr(\"href\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceAltDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoAlt, function(val) {\n return $el.attr(\"alt\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceTitleDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoTitle, function(val) {\n return $el.attr(\"title\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindTitleDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$watch($attrs.tgTitleHtml, function(val) {\n if (val != null) {\n return $el.attr(\"title\", val);\n }\n });\n };\n return {\n link: link\n };\n };\n\n BindHtmlDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$watch($attrs.tgBindHtml, function(val) {\n if (val != null) {\n return $el.html(val);\n }\n });\n };\n return {\n link: link\n };\n };\n\n module = angular.module(\"taigaBase\");\n\n module.directive(\"tgBoBind\", BindOnceBindDirective);\n\n module.directive(\"tgBoHtml\", BindOnceHtmlDirective);\n\n module.directive(\"tgBoRef\", BindOnceRefDirective);\n\n module.directive(\"tgBoSrc\", BindOnceSrcDirective);\n\n module.directive(\"tgBoHref\", BindOnceHrefDirective);\n\n module.directive(\"tgBoAlt\", BindOnceAltDirective);\n\n module.directive(\"tgBoTitle\", BindOnceTitleDirective);\n\n module.directive(\"tgBindTitle\", BindTitleDirective);\n\n module.directive(\"tgBindHtml\", BindHtmlDirective);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/conf.coffee\n */\n\n(function() {\n var ConfigurationService, module;\n\n ConfigurationService = (function() {\n function ConfigurationService() {\n this.config = window.taigaConfig;\n }\n\n ConfigurationService.prototype.get = function(key, defaultValue) {\n if (defaultValue == null) {\n defaultValue = null;\n }\n if (_.has(this.config, key)) {\n return this.config[key];\n }\n return defaultValue;\n };\n\n return ConfigurationService;\n\n })();\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgConfig\", ConfigurationService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/contrib.coffee\n */\n\n(function() {\n var ContribController, module, taigaContribPlugins,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taigaContribPlugins = this.taigaContribPlugins = this.taigaContribPlugins || [];\n\n ContribController = (function(superClass) {\n extend(ContribController, superClass);\n\n ContribController.$inject = [\"$rootScope\", \"$scope\", \"$routeParams\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$appTitle\"];\n\n function ContribController(rootScope, scope, params, repo, rs, confirm, appTitle) {\n var promise;\n this.rootScope = rootScope;\n this.scope = scope;\n this.params = params;\n this.repo = repo;\n this.rs = rs;\n this.confirm = confirm;\n this.appTitle = appTitle;\n this.scope.adminPlugins = _.where(this.rootScope.contribPlugins, {\n \"type\": \"admin\"\n });\n this.scope.currentPlugin = _.first(_.where(this.scope.adminPlugins, {\n \"slug\": this.params.plugin\n }));\n this.scope.pluginTemplate = \"contrib/\" + this.scope.currentPlugin.slug;\n this.scope.projectSlug = this.params.pslug;\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this.appTitle.set(_this.scope.project.name);\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n }\n\n ContribController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.$broadcast('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n ContribController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n return ContribController;\n\n })(taiga.Controller);\n\n module = angular.module(\"taigaBase\");\n\n module.controller(\"ContribController\", ContribController);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/http.coffee\n */\n\n(function() {\n var HttpService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n HttpService = (function(superClass) {\n extend(HttpService, superClass);\n\n HttpService.$inject = [\"$http\", \"$q\", \"$tgStorage\"];\n\n HttpService.prototype.headers = function() {\n var token;\n token = this.storage.get('token');\n if (token) {\n return {\n \"Authorization\": \"Bearer \" + token\n };\n }\n return {};\n };\n\n function HttpService(http, q, storage) {\n this.http = http;\n this.q = q;\n this.storage = storage;\n HttpService.__super__.constructor.call(this);\n }\n\n HttpService.prototype.request = function(options) {\n options.headers = _.merge({}, options.headers || {}, this.headers());\n if (_.isPlainObject(options.data)) {\n options.data = JSON.stringify(options.data);\n }\n return this.http(options);\n };\n\n HttpService.prototype.get = function(url, params, options) {\n options = _.merge({\n method: \"GET\",\n url: url\n }, options);\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype.post = function(url, data, params, options) {\n options = _.merge({\n method: \"POST\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype.put = function(url, data, params, options) {\n options = _.merge({\n method: \"PUT\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype.patch = function(url, data, params, options) {\n options = _.merge({\n method: \"PATCH\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype[\"delete\"] = function(url, data, params, options) {\n options = _.merge({\n method: \"DELETE\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n return HttpService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgHttp\", HttpService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/i18n.coffee\n */\n\n(function() {\n var I18nDirective, I18nService, bindOnce, defaults, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n defaults = {\n ns: \"app\",\n fallbackLng: \"en\",\n async: false,\n lng: \"en\"\n };\n\n I18nService = (function(superClass) {\n extend(I18nService, superClass);\n\n function I18nService(rootscope, localesEn) {\n this.rootscope = rootscope;\n this.options = _.clone(defaults, true);\n this.options.resStore = {\n en: {\n app: localesEn\n }\n };\n }\n\n I18nService.prototype.setLanguage = function(language) {\n i18n.setLng(language);\n this.rootscope.currentLang = language;\n return this.rootscope.$broadcast(\"i18n:changeLang\", language);\n };\n\n I18nService.prototype.initialize = function() {\n i18n.init(this.options);\n return this.rootscope.t = i18n.t;\n };\n\n I18nService.prototype.t = function(path, opts) {\n return i18n.t(path, opts);\n };\n\n return I18nService;\n\n })(taiga.Service);\n\n I18nDirective = function($rootscope, $i18n) {\n var link;\n link = function($scope, $el, $attrs) {\n var i, len, ns, options, opts, ref, results, v, values;\n values = $attrs.tr.split(\",\");\n options = $attrs.trOpts || '{}';\n opts = $scope.$eval(options);\n results = [];\n for (i = 0, len = values.length; i < len; i++) {\n v = values[i];\n if (v.indexOf(\":\") === -1) {\n results.push($el.html(_.escape($i18n.t(v, opts))));\n } else {\n ref = v.split(\":\"), ns = ref[0], v = ref[1];\n results.push($el.attr(ns, _.escape($i18n.t(v, opts))));\n }\n }\n return results;\n };\n return {\n link: link,\n restrict: \"A\",\n scope: false\n };\n };\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgI18n\", [\"$rootScope\", \"localesEn\", I18nService]);\n\n module.directive(\"tr\", [\"$rootScope\", \"$tgI18n\", I18nDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/location.coffee\n */\n\n(function() {\n var locationFactory, module;\n\n locationFactory = function($location, $route, $rootscope) {\n $location.noreload = function(scope) {\n var lastRoute, un;\n lastRoute = $route.current;\n un = scope.$on(\"$locationChangeSuccess\", function() {\n $route.current = lastRoute;\n return un();\n });\n return $location;\n };\n $location.isInCurrentRouteParams = function(name, value) {\n var params;\n params = _.merge($route.current.params, $location.search());\n return params[name] === value;\n };\n return $location;\n };\n\n module = angular.module(\"taigaBase\");\n\n module.factory(\"$tgLocation\", [\"$location\", \"$route\", \"$rootScope\", locationFactory]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/model.coffee\n */\n\n(function() {\n var Model, ModelService, module, provider, taiga,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n Model = (function() {\n function Model(name, data, dataTypes) {\n this._attrs = data;\n this._name = name;\n this._dataTypes = dataTypes;\n this.setAttrs(data);\n this.initialize();\n }\n\n Model.prototype.clone = function() {\n var instance;\n instance = new Model(this._name, this._attrs, this._dataTypes);\n instance._modifiedAttrs = this._modifiedAttrs;\n instance._isModified = this._isModified;\n return instance;\n };\n\n Model.prototype.applyCasts = function() {\n var attrName, castMethod, castName, ref, results;\n ref = this._dataTypes;\n results = [];\n for (attrName in ref) {\n castName = ref[attrName];\n castMethod = service.casts[castName];\n if (!castMethod) {\n continue;\n }\n results.push(this._attrs[attrName] = castMethod(this._attrs[attrName]));\n }\n return results;\n };\n\n Model.prototype.getIdAttrName = function() {\n return \"id\";\n };\n\n Model.prototype.getName = function() {\n return this._name;\n };\n\n Model.prototype.getAttrs = function(patch) {\n if (patch == null) {\n patch = false;\n }\n if (this._attrs.version != null) {\n this._modifiedAttrs.version = this._attrs.version;\n }\n if (patch) {\n return _.extend({}, this._modifiedAttrs);\n }\n return _.extend({}, this._attrs, this._modifiedAttrs);\n };\n\n Model.prototype.setAttrs = function(attrs) {\n this._attrs = attrs;\n this._modifiedAttrs = {};\n this.applyCasts();\n return this._isModified = false;\n };\n\n Model.prototype.setAttr = function(name, value) {\n this._modifiedAttrs[name] = value;\n return this._isModified = true;\n };\n\n Model.prototype.initialize = function() {\n var getter, self, setter;\n self = this;\n getter = function(name) {\n return function() {\n if (typeof name === 'string' && name.substr(0, 2) === \"__\") {\n return self[name];\n }\n if (indexOf.call(_.keys(self._modifiedAttrs), name) < 0) {\n return self._attrs[name];\n }\n return self._modifiedAttrs[name];\n };\n };\n setter = function(name) {\n return function(value) {\n if (typeof name === 'string' && name.substr(0, 2) === \"__\") {\n self[name] = value;\n return;\n }\n if (self._attrs[name] !== value) {\n self._modifiedAttrs[name] = value;\n self._isModified = true;\n } else {\n delete self._modifiedAttrs[name];\n }\n };\n };\n return _.each(this._attrs, function(value, name) {\n var options;\n options = {\n get: getter(name),\n set: setter(name),\n enumerable: true,\n configurable: true\n };\n return Object.defineProperty(self, name, options);\n });\n };\n\n Model.prototype.serialize = function() {\n var data;\n data = {\n \"data\": _.clone(this._attrs),\n \"name\": this._name\n };\n return JSON.stringify(data);\n };\n\n Model.prototype.isModified = function() {\n return this._isModified;\n };\n\n Model.prototype.isAttributeModified = function(attribute) {\n return this._modifiedAttrs[attribute] != null;\n };\n\n Model.prototype.markSaved = function() {\n this._isModified = false;\n this._attrs = this.getAttrs();\n return this._modifiedAttrs = {};\n };\n\n Model.prototype.revert = function() {\n this._modifiedAttrs = {};\n return this._isModified = false;\n };\n\n Model.desSerialize = function(sdata) {\n var ddata, model;\n ddata = JSON.parse(sdata);\n model = new Model(ddata.url, ddata.data);\n return model;\n };\n\n return Model;\n\n })();\n\n taiga = this.taiga;\n\n ModelService = (function(superClass) {\n extend(ModelService, superClass);\n\n ModelService.$inject = [\"$q\", \"$tgUrls\", \"$tgStorage\", \"$tgHttp\"];\n\n function ModelService(q, urls, storage, http) {\n this.q = q;\n this.urls = urls;\n this.storage = storage;\n this.http = http;\n ModelService.__super__.constructor.call(this);\n }\n\n return ModelService;\n\n })(taiga.Service);\n\n provider = function($q, $http, $gmUrls, $gmStorage) {\n var service;\n service = {};\n service.make_model = function(name, data, cls, dataTypes) {\n if (cls == null) {\n cls = Model;\n }\n if (dataTypes == null) {\n dataTypes = {};\n }\n return new cls(name, data, dataTypes);\n };\n service.cls = Model;\n service.casts = {\n int: function(value) {\n return parseInt(value, 10);\n },\n float: function(value) {\n return parseFloat(value, 10);\n }\n };\n return service;\n };\n\n module = angular.module(\"taigaBase\");\n\n module.factory(\"$tgModel\", [\"$q\", \"$http\", \"$tgUrls\", \"$tgStorage\", provider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/navurl.coffee\n */\n\n(function() {\n var NavigationUrlsDirective, NavigationUrlsService, bindOnce, module, taiga, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaBase\");\n\n NavigationUrlsService = (function(superClass) {\n extend(NavigationUrlsService, superClass);\n\n function NavigationUrlsService() {\n this.urls = {};\n }\n\n NavigationUrlsService.prototype.update = function(urls) {\n return this.urls = _.merge({}, this.urls, urls || {});\n };\n\n NavigationUrlsService.prototype.formatUrl = function(url, ctx) {\n var replacer;\n if (ctx == null) {\n ctx = {};\n }\n replacer = function(match) {\n match = trim(match, \":\");\n return ctx[match] || \"undefined\";\n };\n return url.replace(/(:\\w+)/g, replacer);\n };\n\n NavigationUrlsService.prototype.resolve = function(name, ctx) {\n var url;\n url = this.urls[name];\n if (!url) {\n return \"\";\n }\n if (ctx) {\n return this.formatUrl(url, ctx);\n }\n return url;\n };\n\n return NavigationUrlsService;\n\n })(taiga.Service);\n\n module.service(\"$tgNavUrls\", NavigationUrlsService);\n\n NavigationUrlsDirective = function($navurls, $auth, $q, $location) {\n var bindOnceP, link, parseNav;\n bindOnceP = function($scope, attr) {\n var defered;\n defered = $q.defer();\n bindOnce($scope, attr, function(v) {\n return defered.resolve(v);\n });\n return defered.promise;\n };\n parseNav = function(data, $scope) {\n var name, params, promises, ref, values;\n ref = _.map(data.split(\":\"), trim), name = ref[0], params = ref[1];\n if (params) {\n params = _.map(params.split(\",\"), trim);\n } else {\n params = [];\n }\n values = _.map(params, function(x) {\n return trim(x.split(\"=\")[1]);\n });\n promises = _.map(values, function(x) {\n return bindOnceP($scope, x);\n });\n return $q.all(promises).then(function() {\n var i, item, key, len, options, ref1, value;\n options = {};\n for (i = 0, len = params.length; i < len; i++) {\n item = params[i];\n ref1 = _.map(item.split(\"=\"), trim), key = ref1[0], value = ref1[1];\n options[key] = $scope.$eval(value);\n }\n return [name, options];\n });\n };\n link = function($scope, $el, $attrs) {\n if ($el.is(\"a\")) {\n $el.attr(\"href\", \"#\");\n }\n $el.on(\"mouseenter\", function(event) {\n var target;\n target = $(event.currentTarget);\n if (!target.data(\"fullUrl\")) {\n return parseNav($attrs.tgNav, $scope).then(function(result) {\n var fullUrl, name, options, url, user;\n name = result[0], options = result[1];\n user = $auth.getUser();\n if (user) {\n options.user = user.username;\n }\n url = $navurls.resolve(name);\n fullUrl = $navurls.formatUrl(url, options);\n target.data(\"fullUrl\", fullUrl);\n if (target.is(\"a\")) {\n target.attr(\"href\", fullUrl);\n }\n return $el.on(\"click\", function(event) {\n event.preventDefault();\n target = $(event.currentTarget);\n if (target.hasClass('noclick')) {\n return;\n }\n fullUrl = target.data(\"fullUrl\");\n switch (event.which) {\n case 1:\n $location.url(fullUrl);\n return $scope.$apply();\n case 2:\n return window.open(fullUrl);\n }\n });\n });\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgNav\", [\"$tgNavUrls\", \"$tgAuth\", \"$q\", \"$tgLocation\", NavigationUrlsDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/repository.coffee\n */\n\n(function() {\n var RepositoryService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n RepositoryService = (function(superClass) {\n extend(RepositoryService, superClass);\n\n RepositoryService.$inject = [\"$q\", \"$tgModel\", \"$tgStorage\", \"$tgHttp\", \"$tgUrls\"];\n\n function RepositoryService(q, model1, storage, http, urls) {\n this.q = q;\n this.model = model1;\n this.storage = storage;\n this.http = http;\n this.urls = urls;\n RepositoryService.__super__.constructor.call(this);\n }\n\n RepositoryService.prototype.resolveUrlForModel = function(model) {\n var idAttrName;\n idAttrName = model.getIdAttrName();\n return (this.urls.resolve(model.getName())) + \"/\" + model[idAttrName];\n };\n\n RepositoryService.prototype.resolveUrlForAttributeModel = function(model) {\n return this.urls.resolve(model.getName(), model.parent);\n };\n\n RepositoryService.prototype.create = function(name, data, dataTypes, extraParams) {\n var defered, promise, url;\n if (dataTypes == null) {\n dataTypes = {};\n }\n if (extraParams == null) {\n extraParams = {};\n }\n defered = this.q.defer();\n url = this.urls.resolve(name);\n promise = this.http.post(url, JSON.stringify(data));\n promise.success((function(_this) {\n return function(_data, _status) {\n return defered.resolve(_this.model.make_model(name, _data, null, dataTypes));\n };\n })(this));\n promise.error((function(_this) {\n return function(data, status) {\n return defered.reject(data);\n };\n })(this));\n return defered.promise;\n };\n\n RepositoryService.prototype.remove = function(model, params) {\n var defered, promise, url;\n if (params == null) {\n params = {};\n }\n defered = this.q.defer();\n url = this.resolveUrlForModel(model);\n promise = this.http[\"delete\"](url, {}, params);\n promise.success(function(data, status) {\n return defered.resolve(model);\n });\n promise.error(function(data, status) {\n return defered.reject(model);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.saveAll = function(models, patch) {\n var promises;\n if (patch == null) {\n patch = true;\n }\n promises = _.map(models, (function(_this) {\n return function(x) {\n return _this.save(x, true);\n };\n })(this));\n return this.q.all(promises);\n };\n\n RepositoryService.prototype.save = function(model, patch) {\n var data, defered, promise, url;\n if (patch == null) {\n patch = true;\n }\n defered = this.q.defer();\n if (!model.isModified() && patch) {\n defered.resolve(model);\n return defered.promise;\n }\n url = this.resolveUrlForModel(model);\n data = JSON.stringify(model.getAttrs(patch));\n if (patch) {\n promise = this.http.patch(url, data);\n } else {\n promise = this.http.put(url, data);\n }\n promise.success((function(_this) {\n return function(data, status) {\n model._isModified = false;\n model._attrs = _.extend(model.getAttrs(), data);\n model._modifiedAttrs = {};\n model.applyCasts();\n return defered.resolve(model);\n };\n })(this));\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.saveAttribute = function(model, attribute, patch) {\n var data, defered, promise, url;\n if (patch == null) {\n patch = true;\n }\n defered = this.q.defer();\n if (!model.isModified() && patch) {\n defered.resolve(model);\n return defered.promise;\n }\n url = this.resolveUrlForAttributeModel(model);\n data = {};\n data[attribute] = model.getAttrs();\n if (patch) {\n promise = this.http.patch(url, data);\n } else {\n promise = this.http.put(url, data);\n }\n promise.success((function(_this) {\n return function(data, status) {\n model._isModified = false;\n model._attrs = _.extend(model.getAttrs(), data);\n model._modifiedAttrs = {};\n model.applyCasts();\n return defered.resolve(model);\n };\n })(this));\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.refresh = function(model) {\n var defered, promise, url;\n defered = this.q.defer();\n url = this.resolveUrlForModel(model);\n promise = this.http.get(url);\n promise.success(function(data, status) {\n model._modifiedAttrs = {};\n model._attrs = data;\n model._isModified = false;\n model.applyCasts();\n return defered.resolve(model);\n });\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.queryMany = function(name, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n return _.map(data.data, function(x) {\n return _this.model.make_model(name, x);\n });\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOneAttribute = function(name, id, attribute, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name, id);\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n var model;\n model = _this.model.make_model(name, data.data[attribute]);\n model.parent = id;\n return model;\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOne = function(name, id, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n if (id) {\n url = url + \"/\" + id;\n }\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n return _this.model.make_model(name, data.data);\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOneRaw = function(name, id, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n if (id) {\n url = url + \"/\" + id;\n }\n httpOptions = _.merge({\n headers: {}\n }, options);\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n\n RepositoryService.prototype.queryPaginated = function(name, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n httpOptions = _.merge({\n headers: {}\n }, options);\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n var headers, result;\n headers = data.headers();\n result = {};\n result.models = _.map(data.data, function(x) {\n return _this.model.make_model(name, x);\n });\n result.count = parseInt(headers[\"x-pagination-count\"], 10);\n result.current = parseInt(headers[\"x-pagination-current\"] || 1, 10);\n result.paginatedBy = parseInt(headers[\"x-paginated-by\"], 10);\n return result;\n };\n })(this));\n };\n\n RepositoryService.prototype.resolve = function(options) {\n var cache, params;\n params = {};\n if (options.pslug != null) {\n params.project = options.pslug;\n }\n if (options.usref != null) {\n params.us = options.usref;\n }\n if (options.taskref != null) {\n params.task = options.taskref;\n }\n if (options.issueref != null) {\n params.issue = options.issueref;\n }\n if (options.sslug != null) {\n params.milestone = options.sslug;\n }\n if (options.wikipage != null) {\n params.wikipage = options.wikipage;\n }\n cache = !(options.wikipage || options.sslug);\n return this.queryOneRaw(\"resolver\", null, params, {\n cache: cache\n });\n };\n\n return RepositoryService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgRepo\", RepositoryService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/storage.coffee\n */\n\n(function() {\n var StorageService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n StorageService = (function(superClass) {\n extend(StorageService, superClass);\n\n StorageService.$inject = [\"$rootScope\"];\n\n function StorageService($rootScope) {\n StorageService.__super__.constructor.call(this);\n }\n\n StorageService.prototype.get = function(key, _default) {\n var serializedValue;\n serializedValue = localStorage.getItem(key);\n if (serializedValue === null) {\n return _default || null;\n }\n return JSON.parse(serializedValue);\n };\n\n StorageService.prototype.set = function(key, val) {\n if (_.isObject(key)) {\n return _.each(key, (function(_this) {\n return function(val, key) {\n return _this.set(key, val);\n };\n })(this));\n } else {\n return localStorage.setItem(key, JSON.stringify(val));\n }\n };\n\n StorageService.prototype.contains = function(key) {\n var value;\n value = this.get(key);\n return value !== null;\n };\n\n StorageService.prototype.remove = function(key) {\n return localStorage.removeItem(key);\n };\n\n StorageService.prototype.clear = function() {\n return localStorage.clear();\n };\n\n return StorageService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgStorage\", StorageService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/base/http.coffee\n */\n\n(function() {\n var UrlsService, format, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n format = function(fmt, obj) {\n obj = _.clone(obj);\n return fmt.replace(/%s/g, function(match) {\n return String(obj.shift());\n });\n };\n\n taiga = this.taiga;\n\n UrlsService = (function(superClass) {\n extend(UrlsService, superClass);\n\n UrlsService.$inject = [\"$tgConfig\"];\n\n function UrlsService(config) {\n this.config = config;\n this.urls = {};\n this.mainUrl = this.config.get(\"api\");\n }\n\n UrlsService.prototype.update = function(urls) {\n return this.urls = _.merge(this.urls, urls);\n };\n\n UrlsService.prototype.resolve = function() {\n var args, name, url;\n args = _.toArray(arguments);\n if (args.length === 0) {\n throw Error(\"wrong arguments to setUrls\");\n }\n name = args.slice(0, 1)[0];\n url = format(this.urls[name], args.slice(1));\n return format(\"%s/%s\", [_.str.rtrim(this.mainUrl, \"/\"), _.str.ltrim(url, \"/\")]);\n };\n\n UrlsService.prototype.resolveAbsolute = function() {\n var url;\n url = this.resolve.apply(this, arguments);\n if (/^https?:\\/\\//i.test(url)) {\n return url;\n }\n if (/^\\//.test(url)) {\n return window.location.protocol + \"//\" + window.location.host + url;\n }\n return window.location.protocol + \"//\" + window.location.host + \"/\" + url;\n };\n\n return UrlsService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service('$tgUrls', UrlsService);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/custom-field-values.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo) {\n var _get, service;\n _get = function(objectId, resource) {\n return $repo.queryOne(resource, objectId);\n };\n service = {\n userstory: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/userstory\");\n }\n },\n task: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/task\");\n }\n },\n issue: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/issue\");\n }\n }\n };\n return function(instance) {\n return instance.customAttributesValues = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgCustomAttributesValuesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($repo) {\n var _list, service;\n _list = function(projectId, resource) {\n return $repo.queryMany(resource, {\n project: projectId\n });\n };\n service = {\n userstory: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/userstory\");\n }\n },\n task: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/task\");\n }\n },\n issue: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/issue\");\n }\n }\n };\n return function(instance) {\n return instance.customAttributes = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgCustomAttributesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/projects.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo) {\n var service;\n service = {};\n service.get = function(token) {\n return $repo.queryOne(\"invitations\", token);\n };\n return function(instance) {\n return instance.invitations = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgInvitationsResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/mdrender.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.render = function(projectId, content) {\n var params, url;\n if ((content == null) || content === \"\") {\n content = ' ';\n }\n params = {\n project_id: projectId,\n content: content\n };\n url = $urls.resolve(\"wiki\");\n return $http.post(url + \"/render\", params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n return function(instance) {\n return instance.mdrender = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgMdRenderResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n","(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo) {\n var service;\n service = {};\n service.list = function(projectId, module) {\n return $repo.queryOneAttribute(\"project-modules\", projectId, module);\n };\n return function(instance) {\n return instance.modules = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgModulesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/resources/memberships.coffee\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"notify-policies\", id);\n };\n service.list = function(filters) {\n var params;\n params = _.extend({}, params, filters || {});\n return $repo.queryMany(\"notify-policies\", params);\n };\n return function(instance) {\n return instance.notifyPolicies = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgNotifyPoliciesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n","(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.list = function(webhookId) {\n var params;\n params = {\n webhook: webhookId\n };\n return $repo.queryMany(\"webhooklogs\", params);\n };\n service.resend = function(webhooklogId) {\n var url;\n url = $urls.resolve(\"webhooklogs-resend\", webhooklogId);\n return $http.post(url);\n };\n return function(instance) {\n return instance.webhooklogs = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWebhookLogsResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n","(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.list = function(projectId) {\n var params;\n params = {\n project: projectId\n };\n return $repo.queryMany(\"webhooks\", params);\n };\n service.test = function(webhookId) {\n var url;\n url = $urls.resolve(\"webhooks-test\", webhookId);\n return $http.post(url);\n };\n return function(instance) {\n return instance.webhooks = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWebhooksResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/main.coffee\n */\n\n(function() {\n var UserChangePasswordController, UserChangePasswordDirective, debounce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserChangePasswordController = (function(superClass) {\n extend(UserChangePasswordController, superClass);\n\n UserChangePasswordController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAuth\"];\n\n function UserChangePasswordController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, auth) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.auth = auth;\n this.scope.sectionName = \"Change Password\";\n this.scope.project = {};\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserChangePasswordController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n UserChangePasswordController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this));\n };\n\n return UserChangePasswordController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserChangePasswordController\", UserChangePasswordController);\n\n UserChangePasswordDirective = function($rs, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs, ctrl) {\n var submit, submitButton;\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if ($scope.newPassword1 !== $scope.newPassword2) {\n $confirm.notify('error', \"The passwords dosn't match\");\n return;\n }\n $loading.start(submitButton);\n promise = $rs.userSettings.changePassword($scope.currentPassword, $scope.newPassword1);\n promise.then(function() {\n $loading.finish(submitButton);\n return $confirm.notify('success');\n });\n return promise.then(null, function(response) {\n $loading.finish(submitButton);\n return $confirm.notify('error', response.data._error_message);\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserChangePassword\", [\"$tgResources\", \"$tgConfirm\", \"$tgLoading\", UserChangePasswordDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: modules/user-settings/notifications.coffee\n */\n\n(function() {\n var UserNotificationsController, UserNotificationsDirective, UserNotificationsListDirective, bindOnce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserNotificationsController = (function(superClass) {\n extend(UserNotificationsController, superClass);\n\n UserNotificationsController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAuth\"];\n\n function UserNotificationsController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, auth) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.auth = auth;\n this.scope.sectionName = \"Email Notifications\";\n this.scope.project = {};\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserNotificationsController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n return project;\n };\n })(this));\n };\n\n UserNotificationsController.prototype.loadNotifyPolicies = function() {\n return this.rs.notifyPolicies.list().then((function(_this) {\n return function(notifyPolicies) {\n _this.scope.notifyPolicies = notifyPolicies;\n return notifyPolicies;\n };\n })(this));\n };\n\n UserNotificationsController.prototype.loadInitialData = function() {\n var promise;\n promise = this.repo.resolve({\n pslug: this.params.pslug\n }).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.loadNotifyPolicies();\n };\n })(this));\n };\n\n return UserNotificationsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserNotificationsController\", UserNotificationsController);\n\n UserNotificationsDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserNotifications\", UserNotificationsDirective);\n\n UserNotificationsListDirective = function($repo, $confirm) {\n var link, template;\n template = _.template(\"<% _.each(notifyPolicies, function (notifyPolicy, index) { %>\\n
\\\">\\n
<%- notifyPolicy.project_name %>
\\n
\\n
\\n \\\" id=\\\"policy-all-<%- notifyPolicy.id %>\\\"\\n value=\\\"2\\\" <% if (notifyPolicy.notify_level == 2) { %>checked=\\\"checked\\\"<% } %>/>\\n \\n
\\n
\\n
\\n
\\n \\\" id=\\\"policy-involved-<%- notifyPolicy.id %>\\\"\\n value=\\\"1\\\" <% if (notifyPolicy.notify_level == 1) { %>checked=\\\"checked\\\"<% } %> />\\n \\n
\\n
\\n
\\n
\\n \\\" id=\\\"policy-none-<%- notifyPolicy.id %>\\\"\\n value=\\\"3\\\" <% if (notifyPolicy.notify_level == 3) { %>checked=\\\"checked\\\"<% } %> />\\n \\n
\\n
\\n
\\n<% }) %>\");\n link = function($scope, $el, $attrs) {\n var render;\n render = function() {\n $el.off();\n $el.html(template({\n notifyPolicies: $scope.notifyPolicies\n }));\n return $el.on(\"change\", \"input[type=radio]\", function(event) {\n var onError, onSuccess, policy, policyIndex, prev_level, target;\n target = angular.element(event.currentTarget);\n policyIndex = target.parents(\".policy-table-row\").data('index');\n policy = $scope.notifyPolicies[policyIndex];\n prev_level = policy.notify_level;\n policy.notify_level = parseInt(target.val(), 10);\n onSuccess = function() {\n return $confirm.notify(\"success\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n return target.parents(\".policy-table-row\").find(\"input[value=\" + prev_level + \"]\").prop(\"checked\", true);\n };\n return $repo.save(policy).then(onSuccess, onError);\n });\n };\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return bindOnce($scope, $attrs.ngModel, render);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserNotificationsList\", [\"$tgRepo\", \"$tgConfirm\", UserNotificationsListDirective]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: plugins/humanshtml/humanshtml.coffee\n */\n\n(function() {\n var configure, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaPlugins\");\n\n configure = function($routeProvider) {\n return $routeProvider.when(\"/humans.html\", {\n \"templateUrl\": \"/plugins/humanshtml/templates/humans.html\"\n });\n };\n\n module.config([\"$routeProvider\", configure]);\n\n}).call(this);\n","\n/*\n * Copyright (C) 2014 Andrey Antukh \n * Copyright (C) 2014 Jesús Espino Garcia \n * Copyright (C) 2014 David Barragán Merino \n#\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n#\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n#\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n#\n * File: plugins/terms/terms.coffee\n */\n\n(function() {\n var TermsNoticeDirective, module, taiga, template;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaPlugins\");\n\n template = _.template(\"

\\n By clicking \\\"Sign up\\\", you agree to our
\\n
\\\" title=\\\"See terms of service\\\" target=\\\"_blank\\\"> terms of service\\n and\\n \\\" title=\\\"See privacy policy\\\" target=\\\"_blank\\\"> privacy policy.\\n

\");\n\n TermsNoticeDirective = function($config) {\n var privacyPolicyUrl, templateFn, termsOfServiceUrl;\n privacyPolicyUrl = $config.get(\"privacyPolicyUrl\");\n termsOfServiceUrl = $config.get(\"termsOfServiceUrl\");\n templateFn = function() {\n var ctx;\n if (!(privacyPolicyUrl && termsOfServiceUrl)) {\n return \"\";\n }\n ctx = {\n termsUrl: termsOfServiceUrl,\n privacyUrl: privacyPolicyUrl\n };\n return template(ctx);\n };\n return {\n scope: {},\n restrict: \"AE\",\n template: templateFn\n };\n };\n\n module.directive(\"tgTermsNotice\", [\"$tgConfig\", TermsNoticeDirective]);\n\n}).call(this);\n","angular.module('taigaBase').value('localesEn', {\n \"checksley\": {\n \"defaultMessage\": \"This value seems to be invalid.\",\n \"type-email\": \"This value should be a valid email.\",\n \"type-url\": \"This value should be a valid url.\",\n \"type-urlstrict\": \"This value should be a valid url.\",\n \"type-number\": \"This value should be a valid number.\",\n \"type-digits\": \"This value should be digits.\",\n \"type-dateIso\": \"This value should be a valid date (YYYY-MM-DD).\",\n \"type-alphanum\": \"This value should be alphanumeric.\",\n \"type-phone\": \"This value should be a valid phone number.\",\n \"notnull\": \"This value should not be null.\",\n \"notblank\": \"This value should not be blank.\",\n \"required\": \"This value is required.\",\n \"regexp\": \"This value seems to be invalid.\",\n \"min\": \"This value should be greater than or equal to %s.\",\n \"max\": \"This value should be lower than or equal to %s.\",\n \"range\": \"This value should be between %s and %s.\",\n \"minlength\": \"This value is too short. It should have %s characters or more.\",\n \"maxlength\": \"This value is too long. It should have %s characters or less.\",\n \"rangelength\": \"This value length is invalid. It should be between %s and %s characters long.\",\n \"mincheck\": \"You must select at least %s choices.\",\n \"maxcheck\": \"You must select %s choices or less.\",\n \"rangecheck\": \"You must select between %s and %s choices.\",\n \"equalto\": \"This value should be the same.\"\n },\n \"common\": {\n \"subject\": \"Subject\",\n \"save\": \"Save\",\n \"blocked\": \"Blocked\",\n \"cancel\": \"Cancel\",\n \"status\": \"Status\",\n \"new-bulk\": \"New bulk insert\",\n \"one-item-line\": \"One item per line...\"\n },\n \"pagination\": {\n \"next\": \"Next\",\n \"prev\": \"Previous\"\n },\n \"markdown-editor\": {\n \"heading-1\": \"First Level Heading\",\n \"heading-2\": \"Second Level Heading\",\n \"heading-3\": \"Third Level Heading\",\n \"bold\": \"Bold\",\n \"italic\": \"Italic\",\n \"strike\": \"Strike\",\n \"bulleted-list\": \"Bulleted List\",\n \"numeric-list\": \"Numeric List\",\n \"picture\": \"Picture\",\n \"link\": \"Link\",\n \"quotes\": \"Quotes\",\n \"code-block\": \"Code Block / Code\",\n \"preview\": \"Preview\",\n \"help\": \"Help\",\n \"placeholder\": \"Your title here...\",\n \"link-placeholder\": \"Your text to link here...\"\n },\n \"us\": {\n \"title-new\": \"New User Story\",\n \"team-requirement\": \"Team Requirement\",\n \"client-requirement\": \"Client Requirement\"\n }\n}\n);"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dist/js/templates.js b/dist/js/templates.js index 10eaecc..71e54b0 100644 --- a/dist/js/templates.js +++ b/dist/js/templates.js @@ -1,26 +1,26 @@ -angular.module("templates", []).run(["$templateCache", function($templateCache) {$templateCache.put("admin/admin-membership-paginator.html","\n
    <% if (showPrevious) { %>\n
  • Prev
  • <% } %>\n <% _.each(pages, function(item) { %>\n
  • \"><% if (item.type === \"page\") { %>\"><%- item.num %><% } else if (item.type === \"page-active\") { %><%- item.num %><% } else { %>...<% } %>
  • <% }); %>\n <% if (showNext) { %>\n
  • Next
  • <% } %>\n
"); -$templateCache.put("admin/admin-memberships-row-checkbox.html","\n
\n \"/>\n
YesNo\n
"); -$templateCache.put("admin/admin-memberships.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n
\n
\n
\n
\n

\n
\n
\n \n
\n
\n
\n
Member
\n
Admin
\n
Role
\n
Status
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

New Member

\n
\n \n

If users are already registered on Taiga, they will be added automatically. Otherwise they will receive an invitation.

\n
\n
\n
"); -$templateCache.put("admin/admin-project-default-values.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n

Default Values

\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
"); -$templateCache.put("admin/admin-project-export.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n

Export your project to save a backup or to create a new one based on this.

\n
\n \n
\n
\"loading...\"/
\n

\n

\n
Do you need help? Check out our support page!\n
\n
"); -$templateCache.put("admin/admin-project-modules.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n
\n
\n

Backlog Manage your user stories to maintain an organized view of upcoming and prioritized work.

\n
\n \n \n
\n
\n
\n
\n
\n
\n

Kanban Organize your project in a lean way with this board.

\n
\n \n \n
\n
\n
\n
\n
\n
\n

Issues Track the bugs, questions and enhancements related to your project. Don\'t miss anything!

\n
\n \n \n
\n
\n
\n
\n
\n
\n

Wiki Add, modify, or delete content in collaboration with others. This is the right place for your project documentation.

\n
\n \n \n
\n
\n
\n
\n
\n
\n

Meet Up Choose your videoconference system. Even developers need face to face contact.

\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n
"); -$templateCache.put("admin/admin-project-profile.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n Delete this project\n
\n
\n
\n
\n
\n

Delete project

\n

Are you sure you want to delete this project?All project data US/Tasks/Issues/Sprints/WikiPages will be lost! :-(

\n \n
\n
"); -$templateCache.put("admin/admin-project-reports.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n

Export your project data in CSV format and make your own reports.

\n
\n

Download a CSV file or copy the generated URL and open it in your favourite text editor or spreadsheet to make your own project data reports. You will be able to visualize and analize all your data easily.

\n
\n
\n
\n

US reports

Download CSV\n
\n
\n
\n \n
\n
\n
\n
Generate URLRegenerate\n
\n
\n
\n
\n
\n
\n

Task reports

Download CSV\n
\n
\n
\n \n
\n
\n
\n
Generate URLRegenerate\n
\n
\n
\n
\n
\n
\n

Issues reports

Download CSV\n
\n
\n
\n \n
\n
\n
\n
Generate URLRegenerate\n
\n
How to use this on my own spreadsheet?\n
\n
\n
"); -$templateCache.put("admin/admin-project-values-custom-fields.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the custom fields for your user stories, tasks and issues

\n
\n
\n
\n

User stories custom fields

Add custom field\n
\n
\n
\n
Name
\n
Description
\n
\n
\n
\n
\n
\n
\n
\n
{{ attr.name }}
\n
{{ attr.description }}
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Tasks custom fields

Add custom field\n
\n
\n
\n
Name
\n
Description
\n
\n
\n
\n
\n
\n
\n
\n
{{ attr.name }}
\n
{{ attr.description }}
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Issues custom fields

Add custom field\n
\n
\n
\n
Name
\n
Description
\n
\n
\n
\n
\n
\n
\n
\n
{{ attr.name }}
\n
{{ attr.description }}
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
"); -$templateCache.put("admin/admin-project-values-points.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the points your user stories could be estimated to

\n
\n
\n \n
\n
\n
Name
\n
Value
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
{{ value.value }}
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); -$templateCache.put("admin/admin-project-values-priorities.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the priorities your issues will have

\n
\n
\n
\n

{{ sectionName }}

Add new {{ objName }}\n
\n
\n
\n
Color
\n
Name
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); -$templateCache.put("admin/admin-project-values-severities.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the severities your issues will have

\n
\n
\n
\n

{{ sectionName }}

Add new {{ objName }}\n
\n
\n
\n
Color
\n
Name
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); -$templateCache.put("admin/admin-project-values-status.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the statuses your user stories, tasks and issues will go through

\n
\n
\n \n
\n
\n
\n
Color
\n
Name
\n
Slug
\n
Is closed?
\n
Is archived?
\n
WIP Limit
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
{{ value.slug }}
\n
\n
\n
\n
\n
\n
\n
{{ value.wip_limit }}
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
Color
\n
Name
\n
Slug
\n
Is closed?
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
{{ value.slug }}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
Color
\n
Name
\n
Slug
\n
Is closed?
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
{{ value.slug }}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); -$templateCache.put("admin/admin-project-values-types.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the types your user stories could be estimated to

\n
\n
\n
\n

{{ sectionName }}

Add new {{ objName }}\n
\n
\n
\n
Color
\n
Name
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); -$templateCache.put("admin/admin-roles.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Roles

\n
\n \n
\n
\n
\n
\n
\n

\n
\n \n
\n
\n
\n
\n \n
\n

{{ role.name }}

\n
\n
Be careful, no role in your project will be able to estimate the point value for user stories
\n
When enabled, members assigned to this role will be able to estimate the point value for user stories\n
\n \n
YesNo\n
\n
\n
\n
\n

{{ role.name }}

\n
\n
\n
\n
"); -$templateCache.put("admin/admin-third-parties-bitbucket.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
Copy to clipboard: Ctrl+C
\n
\n
\n
\n
\n \n \n
\n \n
Do you need help? Check out our support page!\n
\n
"); -$templateCache.put("admin/admin-third-parties-github.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
Copy to clipboard: Ctrl+C
\n
\n
\n
\n \n
Do you need help? Check out our support page!\n
\n
"); -$templateCache.put("admin/admin-third-parties-gitlab.html","\nTaiga Your agile, free, and open source project management tool\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
Copy to clipboard: Ctrl+C
\n
\n
\n
\n
\n \n \n
\n \n
Do you need help? Check out our support page!\n
\n
"); -$templateCache.put("admin/admin-third-parties-webhooks.html","\nTaiga Your agile, free, and open source project management tool\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n

Webhooks notify external services about events in Taiga, like comments, user stories....

\n \n
\n
\n
\n
Name
\n
URL
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
Headers\n \n
\n
Payload\n \n
\n
\n
Response
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
Do you need help? Check out our support page!\n
\n
"); -$templateCache.put("admin/memberships-row-avatar.html","\n
\" alt=\"<%- full_name %>\"/>\n
<%- full_name %><%- email %>
\n
"); -$templateCache.put("attachment/attachment-edit.html","\n\n
<%- size %>
\n
\n \" placeholder=\"Type a short description\"/>\n
\n
\n -is-deprecated\"/>\n \n
\n
"); +angular.module("templates", []).run(["$templateCache", function($templateCache) {$templateCache.put("attachment/attachment-edit.html","\n\n
<%- size %>
\n
\n \" placeholder=\"Type a short description\"/>\n
\n
\n -is-deprecated\"/>\n \n
\n
"); $templateCache.put("attachment/attachment.html","\n\n
<%- size %>
\n
<% if (isDeprecated){ %>(deprecated)<% } %><%- description %>
<% if (modifyPermission) {%>\n
<% } %>"); $templateCache.put("attachment/attachments.html","\n
\n
\n

attachments

\n
\" title=\"Add new attachment. <%- maxFileSizeMsg %>\" class=\"add-attach\"><% if (maxFileSize){ %>[Max. size: <%- maxFileSize %>]<% }; %>\n \n \n
\n
\n \n
"); +$templateCache.put("admin/admin-membership-paginator.html","\n
    <% if (showPrevious) { %>\n
  • Prev
  • <% } %>\n <% _.each(pages, function(item) { %>\n
  • \"><% if (item.type === \"page\") { %>\"><%- item.num %><% } else if (item.type === \"page-active\") { %><%- item.num %><% } else { %>...<% } %>
  • <% }); %>\n <% if (showNext) { %>\n
  • Next
  • <% } %>\n
"); +$templateCache.put("admin/admin-memberships-row-checkbox.html","\n
\n \"/>\n
YesNo\n
"); +$templateCache.put("admin/admin-memberships.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n
\n
\n
\n
\n

\n
\n
\n \n
\n
\n
\n
Member
\n
Admin
\n
Role
\n
Status
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

New Member

\n
\n \n

If users are already registered on Taiga, they will be added automatically. Otherwise they will receive an invitation.

\n
\n
\n
"); +$templateCache.put("admin/admin-project-default-values.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n

Default Values

\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
"); +$templateCache.put("admin/admin-project-export.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n

Export your project to save a backup or to create a new one based on this.

\n
\n \n
\n
\"loading...\"/
\n

\n

\n
Do you need help? Check out our support page!\n
\n
"); +$templateCache.put("admin/admin-project-modules.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n
\n
\n

Backlog Manage your user stories to maintain an organized view of upcoming and prioritized work.

\n
\n \n \n
\n
\n
\n
\n
\n
\n

Kanban Organize your project in a lean way with this board.

\n
\n \n \n
\n
\n
\n
\n
\n
\n

Issues Track the bugs, questions and enhancements related to your project. Don\'t miss anything!

\n
\n \n \n
\n
\n
\n
\n
\n
\n

Wiki Add, modify, or delete content in collaboration with others. This is the right place for your project documentation.

\n
\n \n \n
\n
\n
\n
\n
\n
\n

Meet Up Choose your videoconference system. Even developers need face to face contact.

\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n
"); +$templateCache.put("admin/admin-project-profile.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n Delete this project\n
\n
\n
\n
\n
\n

Delete project

\n

Are you sure you want to delete this project?All project data US/Tasks/Issues/Sprints/WikiPages will be lost! :-(

\n \n
\n
"); +$templateCache.put("admin/admin-project-reports.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Project Profile

\n
\n \n
\n
\n
\n
\n
\n

\n
\n

Export your project data in CSV format and make your own reports.

\n
\n

Download a CSV file or copy the generated URL and open it in your favourite text editor or spreadsheet to make your own project data reports. You will be able to visualize and analize all your data easily.

\n
\n
\n
\n

US reports

Download CSV\n
\n
\n
\n \n
\n
\n
\n
Generate URLRegenerate\n
\n
\n
\n
\n
\n
\n

Task reports

Download CSV\n
\n
\n
\n \n
\n
\n
\n
Generate URLRegenerate\n
\n
\n
\n
\n
\n
\n

Issues reports

Download CSV\n
\n
\n
\n \n
\n
\n
\n
Generate URLRegenerate\n
\n
How to use this on my own spreadsheet?\n
\n
\n
"); +$templateCache.put("admin/admin-project-values-custom-fields.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the custom fields for your user stories, tasks and issues

\n
\n
\n
\n

User stories custom fields

Add custom field\n
\n
\n
\n
Name
\n
Description
\n
\n
\n
\n
\n
\n
\n
\n
{{ attr.name }}
\n
{{ attr.description }}
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Tasks custom fields

Add custom field\n
\n
\n
\n
Name
\n
Description
\n
\n
\n
\n
\n
\n
\n
\n
{{ attr.name }}
\n
{{ attr.description }}
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Issues custom fields

Add custom field\n
\n
\n
\n
Name
\n
Description
\n
\n
\n
\n
\n
\n
\n
\n
{{ attr.name }}
\n
{{ attr.description }}
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
"); +$templateCache.put("admin/admin-project-values-points.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the points your user stories could be estimated to

\n
\n
\n \n
\n
\n
Name
\n
Value
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
{{ value.value }}
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); +$templateCache.put("admin/admin-project-values-priorities.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the priorities your issues will have

\n
\n
\n
\n

{{ sectionName }}

Add new {{ objName }}\n
\n
\n
\n
Color
\n
Name
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); +$templateCache.put("admin/admin-project-values-severities.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the severities your issues will have

\n
\n
\n
\n

{{ sectionName }}

Add new {{ objName }}\n
\n
\n
\n
Color
\n
Name
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); +$templateCache.put("admin/admin-project-values-status.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the statuses your user stories, tasks and issues will go through

\n
\n
\n \n
\n
\n
\n
Color
\n
Name
\n
Slug
\n
Is closed?
\n
Is archived?
\n
WIP Limit
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
{{ value.slug }}
\n
\n
\n
\n
\n
\n
\n
{{ value.wip_limit }}
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
Color
\n
Name
\n
Slug
\n
Is closed?
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
{{ value.slug }}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
Color
\n
Name
\n
Slug
\n
Is closed?
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
{{ value.slug }}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); +$templateCache.put("admin/admin-project-values-types.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Attributes

\n
\n \n
\n
\n
\n
\n

\n
\n

Specify the types your user stories could be estimated to

\n
\n
\n
\n

{{ sectionName }}

Add new {{ objName }}\n
\n
\n
\n
Color
\n
Name
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{ value.name }}
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
"); +$templateCache.put("admin/admin-roles.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Roles

\n
\n \n
\n
\n
\n
\n
\n

\n
\n \n
\n
\n
\n
\n \n
\n

{{ role.name }}

\n
\n
Be careful, no role in your project will be able to estimate the point value for user stories
\n
When enabled, members assigned to this role will be able to estimate the point value for user stories\n
\n \n
YesNo\n
\n
\n
\n
\n

{{ role.name }}

\n
\n
\n
\n
"); +$templateCache.put("admin/admin-third-parties-bitbucket.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
Copy to clipboard: Ctrl+C
\n
\n
\n
\n
\n \n \n
\n \n
Do you need help? Check out our support page!\n
\n
"); +$templateCache.put("admin/admin-third-parties-github.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
Copy to clipboard: Ctrl+C
\n
\n
\n
\n \n
Do you need help? Check out our support page!\n
\n
"); +$templateCache.put("admin/admin-third-parties-gitlab.html","\nTaiga Your agile, free, and open source project management tool\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
Copy to clipboard: Ctrl+C
\n
\n
\n
\n
\n \n \n
\n \n
Do you need help? Check out our support page!\n
\n
"); +$templateCache.put("admin/admin-third-parties-webhooks.html","\nTaiga Your agile, free, and open source project management tool\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Services

\n
\n \n
\n
\n
\n
\n

\n
\n

Webhooks notify external services about events in Taiga, like comments, user stories....

\n \n
\n
\n
\n
Name
\n
URL
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
Headers\n \n
\n
Payload\n \n
\n
\n
Response
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
Do you need help? Check out our support page!\n
\n
"); +$templateCache.put("admin/memberships-row-avatar.html","\n
\" alt=\"<%- full_name %>\"/>\n
<%- full_name %><%- email %>
\n
"); $templateCache.put("auth/change-password-from-recovery.html","\n
\n
\n
\n

\"TAIGA\"

\n

Your agile, free, and open source project management tool

\n
\n

Create a new Taiga pass
And hey, you may want to eat some more iron-rich food, it\'s good for your brain :P

\n
\n
\n Need one?\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
"); $templateCache.put("auth/forgot-password.html","\n
\n
\n
\"TAIGA\"\n

Taiga

\n

LOVE YOUR PROJECT

\n
\n

Oops, did you forget your password?
Enter your username or email to get a new one

\n
\n
\n \n
\n
\n \n
Nah, take me back. I think I remember it.\n
\n
\n
\n
\n
"); $templateCache.put("auth/invitation.html","\n
\n
\n
\n
\n

has invited you to join the project

\n

\n
\n
\n

I already have a Taiga login

\n
\n \n
\n
\n Forgot it?\n
\n
\n \n
\n
\n
\n
\n

Register a new Taiga account (free)

\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n
"); @@ -33,7 +33,7 @@ $templateCache.put("backlog/filters.html","\n<% _.each(filters, function(f) { %> $templateCache.put("backlog/progress-bar.html","\n
\n
%\" class=\"project-points-progress\">
\n
%\" class=\"closed-points-progress\">
"); $templateCache.put("backlog/sprint-header.html","\n
<% if(isVisible){ %>\" title=\"\'Go to the taskboard of \'<%- name %>\'\"><%- name %><% } %>\n <% if(isEditable){ %><% } %>\n
\n
\n
<%- estimatedDateRange %>
\n
    \n
  • <%- closedPoints %>closed
  • \n
  • <%- totalPoints %>total
  • \n
\n
"); $templateCache.put("backlog/us-role-points-popover.html","\n"); -$templateCache.put("contrib/main.html","\nTaiga Your agile, free, and open source project management tool\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Plugins

\n
\n \n
\n
\n
\n
"); +$templateCache.put("contrib/main.html","\nTaiga Your agile, free, and open source project management tool\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Plugins

\n
\n \n
\n
\n
\n
"); $templateCache.put("custom-attributes/custom-attribute-value-edit.html","\n
\n
\n <% if (description){ %><%- description %><% } %>\n
\n
\n \"/>\n
\n
\n
"); $templateCache.put("custom-attributes/custom-attribute-value.html","\n
\n
<%- name %><% if (description){ %><%- description %><% } %>
\n
<%- value %>
<% if (isEditable) { %>\n
<% } %>\n
"); $templateCache.put("custom-attributes/custom-attributes-values.html","\n
\n
Custom Fields\n open<% } %>\">\n
\n
open<% } %>\">\n
\">
\n
\n
"); @@ -53,7 +53,7 @@ $templateCache.put("issue/issues.html","\n
Promote to User Story"); $templateCache.put("kanban/kanban-task.html","\n
\n
\n
\n
\n

pointsNot estimated

\n
\n
\n

You have archived

\n

\n

Drag & drop again to undo

\n
\n
"); $templateCache.put("kanban/kanban.html","\n
\n
\n
\n

\n
\n
\n
\n
\n

\n
\n

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n

\n
\n \n
\n \n
\n
\n
\n
"); -$templateCache.put("project/project-colors.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Roles

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n \n
\n
\n
\n
Color
\n
Name
\n
Is closed?
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
"); +$templateCache.put("project/project-colors.html","\n
\n \n
\n
\n

Admin

\n
\n \n
\n
\n \n
\n
\n

Roles

\n
\n \n
\n
\n
\n
\n
\n

\n
\n
\n \n
\n
\n
\n
Color
\n
Name
\n
Is closed?
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
    \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n \n
\n
\n
\n
Ready for test
\n
\n
\n
\n
\n
\n
\n
\n
"); $templateCache.put("project/project-list.html","\n
\n
\n
\n \n
\n
\n
"); $templateCache.put("project/project-menu.html","\n
\n
    \n
  • Search
  • <% if (project.is_backlog_activated && project.my_permissions.indexOf(\"view_us\") != -1) { %>\n
  • Backlog
  • <% } %>\n <% if (project.is_kanban_activated && project.my_permissions.indexOf(\"view_us\") != -1) { %>\n
  • Kanban
  • <% } %>\n <% if (project.is_issues_activated && project.my_permissions.indexOf(\"view_issues\") != -1) { %>\n
  • Issues
  • <% } %>\n <% if (project.is_wiki_activated && project.my_permissions.indexOf(\"view_wiki_pages\") != -1) { %>\n
  • Wiki
  • <% } %>\n
  • Team
  • <% if (project.videoconferences) { %>\n
  • \" target=\"_blank\" title=\"Meet Up\">Meet Up
  • <% } %>\n <% if (project.i_am_owner) { %>\n
  • Admin
  • <% } %>\n
<% if (user) { %>\n
\n
\n \"{{\n
\n
<% } %>\n
"); $templateCache.put("project/project-navigation-base.html","\n

Your projects

\n
\n
\n \n
\n
\n
Create project\n
\n \n
\n
\n
\n
\n
    \n
    \n
    "); @@ -99,7 +99,7 @@ $templateCache.put("common/components/level.html","\n
    $templateCache.put("common/components/list-item-assigned-to-avatar.html","\n
    \" alt=\"<%- name %>\"/>\n
    <%- name %>
    \n
    "); $templateCache.put("common/components/main-title.html","<%- projectName %><%- sectionName %>"); $templateCache.put("common/components/progress-bar.html","\n
    %\" class=\"current-progress\">
    "); -$templateCache.put("common/components/status-display.html","\n <% if (status.is_closed) { %>\n Closed\n <% } else { %>\n Open\n <% } %>\" class=\"us-detail-status\"><%- status.name %>"); +$templateCache.put("common/components/status-display.html","\n <% if (is_closed) { %>\n Closed\n <% } else { %>\n Open\n <% } %>\" class=\"us-detail-status\"><%- status.name %>"); $templateCache.put("common/components/watchers.html","<% if(isEditable){ %>\n
    watchers
    <% } else if(watchers.length > 0){ %>\n
    watchers
    <% }; %>\n<% _.each(watchers, function(watcher) { %>\n<% if(watcher) { %>\n
    \n
    \" alt=\"<%- watcher.full_name_display %>\"/>
    \n
    <%- watcher.full_name_display %><% if(isEditable){ %>\" href=\"\" title=\"delete-watcher\" class=\"icon icon-delete\"><% }; %>
    \n
    <% } %>\n<% }); %>"); $templateCache.put("common/estimation/us-estimation-points-per-role.html","\n
      \n
    • <%- totalPoints %>total
    • <% _.each(roles, function(role) { %>\n
    • \" title=\"<%- role.name %>\" class=\"total <% if(editable){ %>clickable<% } %>\"><%- role.points %><%- role.name %>
    • <% }); %>\n
    "); $templateCache.put("common/estimation/us-estimation-points.html","\n"); @@ -114,13 +114,13 @@ $templateCache.put("common/history/history-change-generic.html","\n
    \n
    <%- name %>
    \n
    <% if (removed.length > 0) { %>\n

    removed
    <%- removed %>

    <% } %>\n <% if (added.length > 0) { %>\n

    added
    <%- added %>

    <% } %>\n
    \n
    "); $templateCache.put("common/history/history-change-points.html","<% _.each(points, function(point, name) { %>\n
    \n
    US points (<%- name.toLowerCase() %>)
    \n
    \n

    from
    <%- point[0] %>

    \n

    to
    <%- point[1] %>

    \n
    \n
    <% }); %>"); $templateCache.put("common/history/history-deleted-comment.html","\n
    \n
    Comment deleted by <%- deleteCommentUser %> on <%- deleteCommentDate %>(Show deleted comment)(Hide deleted comment)\n
    <%= deleteComment %>
    \n
    <% if (canRestoreComment) { %>\" class=\"comment-restore\">Restore comment<% } %>\n
    "); +$templateCache.put("common/popover/popover-related-task-status.html","\n"); +$templateCache.put("common/popover/popover-us-status.html","\n"); $templateCache.put("common/lightbox/lightbox-assigned-to-users.html","<% if (selected) { %>\n<% } %>\n<% _.each(users, function(user) { %>\n<% }) %>\n<% if (showMore) { %>\n
    ...too many users, keep filtering
    <% } %>"); $templateCache.put("common/lightbox/lightbox-assigned-to.html","\n
    \n

    Select assigned to

    \n
    \n \n
    \n
    \n
    "); $templateCache.put("common/lightbox/lightbox-block.html","\n
    \n

    \n
    \n \n
    Save\n
    "); $templateCache.put("common/lightbox/lightbox-blocking-message-input.html","\n
    \n \n
    "); $templateCache.put("common/lightbox/lightbox-users.html","\n
    \n

    Add watchers

    \n
    \n \n
    \n
    //- The content of this is rendered by directive
    \n
    "); -$templateCache.put("common/popover/popover-related-task-status.html","\n"); -$templateCache.put("common/popover/popover-us-status.html","\n"); $templateCache.put("common/tag/lb-tag-line-tags.html","<% _.each(tags, function(tag) { %>\" class=\"tag\"><%- tag.name %><% }); %>"); $templateCache.put("common/tag/lb-tag-line.html","\n
    \n"); $templateCache.put("common/tag/tag-line.html","\n
    Add tag\n");