// Google Closure Compiler helpers (used only to make the minified file smaller)
ko.exportSymbol=function(a,b){var c=a.split("."),d=window;for(var e=0;e<c.length-1;e++)d=d[c[e]];d[c[c.length-1]]=b},ko.exportProperty=function(a,b,c){a[b]=c},function(){function e(a,b){for(var c in b)b.hasOwnProperty(c)&&b[c]&&(!a[c]||a[c]instanceof Array?a[c]=b[c]:e(a[c],b[c]))}function f(a,b){var c={};return e(c,a),e(c,b),c}function g(a){return a&&typeof a=="object"&&a.constructor==(new Date).constructor?"date":typeof a}function h(a,b){a=a||{};if(a.create instanceof Function||a.key instanceof Function||a.arrayChanged instanceof Function)a={"":a};return b&&(a.ignore=i(b.ignore,a.ignore),a.include=i(b.include,a.include),a.copy=i(b.copy,a.copy)),a.ignore=i(a.ignore,d.ignore),a.include=i(a.include,d.include),a.copy=i(a.copy,d.copy),a.mappedProperties={},a}function i(a,b){var c=[];return a instanceof Array||(g(a)==="undefined"?a=[]:a=[a]),b instanceof Array||(g(b)==="undefined"?b=[]:b=[b]),a.concat(b)}function j(a){var c=ko.dependentObservable;ko.dependentObservable=function(){var a=arguments[2]||{};a.deferEvaluation=!0;var c=new b(arguments[0],arguments[1],a);return c.__ko_proto__=b,c};var d=a();return ko.dependentObservable=c,d}function k(b,c,d,e,h,i,m){var r=ko.utils.unwrapObservable(c)instanceof Array;m=m||"";if(ko.mapping.isMapped(b)){var t=ko.utils.unwrapObservable(b)[a];d=f(t,d)}var u=function(){return d[h]&&d[h].create instanceof Function};e=e||new s;if(e.get(c))return b;h=h||"";if(!r)if(!q(c))switch(g(c)){case"function":b=c;break;default:ko.isWriteableObservable(b)?b(ko.utils.unwrapObservable(c)):u()?b=j(function(){return d[h].create({data:c,parent:i})}):b=ko.observable(ko.utils.unwrapObservable(c))}else{if(!b){if(u()){var v=j(function(){return d[h].create({data:c,parent:i})});return v}b={}}e.save(c,b),p(c,function(a){var f=m.length?m+"."+a:a;if(ko.utils.arrayIndexOf(d.ignore,f)!=-1)return;if(ko.utils.arrayIndexOf(d.copy,f)!=-1){b[a]=c[a];return}var g,h=e.get(c[a]);h?b[a]=h:b[a]=k(b[a],c[a],d,e,a,b,f),d.mappedProperties[f]=!0})}else{var w=[],x=function(a){return a};d[h]&&d[h].key&&(x=d[h].key);var y=function(a){return a};u()&&(y=function(a){return d[h].create({data:a,parent:i})}),ko.isObservable(b)||(b=ko.observableArray([]),b.mappedRemove=function(a){var c=typeof a=="function"?a:function(b){return b===x(a)};return b.remove(function(a){return c(x(a))})},b.mappedRemoveAll=function(a){var c=o(a,x);return b.remove(function(a){return ko.utils.arrayIndexOf(c,x(a))!=-1})},b.mappedDestroy=function(a){var c=typeof a=="function"?a:function(b){return b===x(a)};return b.destroy(function(a){return c(x(a))})},b.mappedDestroyAll=function(a){var c=o(a,x);return b.destroy(function(a){return ko.utils.arrayIndexOf(c,x(a))!=-1})},b.mappedIndexOf=function(a){var c=o(b(),x),d=x(a);return ko.utils.arrayIndexOf(c,d)},b.mappedCreate=function(a){if(b.mappedIndexOf(a)!==-1)throw new Error("There already is an object with the key that you specified.");var c=y(a);return b.push(c),c});var z=o(ko.utils.unwrapObservable(b),x).sort(),A=o(c,x).sort(),B=ko.utils.compareArrays(z,A),C={},D=[];for(var E=0,F=B.length;E<F;E++){var G=B[E],H,I=m+"["+E+"]";switch(G.status){case"added":var J=n(ko.utils.unwrapObservable(c),G.value,x);H=ko.utils.unwrapObservable(k(undefined,J,d,e,h,b,I));var K=l(ko.utils.unwrapObservable(c),J,C);D[K]=H,C[K]=!0;break;case"retained":var J=n(ko.utils.unwrapObservable(c),G.value,x);H=n(b,G.value,x),k(H,J,d,e,h,b,I);var K=l(ko.utils.unwrapObservable(c),J,C);D[K]=H,C[K]=!0;break;case"deleted":H=n(b,G.value,x)}w.push({event:G.status,item:H})}b(D),d[h]&&d[h].arrayChanged&&ko.utils.arrayForEach(w,function(a){d[h].arrayChanged(a.event,a.item)})}return b}function l(a,b,c){for(var d=0,e=a.length;d<e;d++){if(c[d]===!0)continue;if(a[d]==b)return d}return null}function m(a,b){var c;return b&&(c=b(a)),g(c)==="undefined"&&(c=a),ko.utils.unwrapObservable(c)}function n(a,b,c){var d=ko.utils.arrayFilter(ko.utils.unwrapObservable(a),function(a){return m(a,c)==b});if(d.length==0)throw new Error("When calling ko.update*, the key '"+b+"' was not found!");if(d.length>1&&q(d[0]))throw new Error("When calling ko.update*, the key '"+b+"' was not unique!");return d[0]}function o(a,b){return ko.utils.arrayMap(ko.utils.unwrapObservable(a),function(a){return b?m(a,b):a})}function p(a,b){if(a instanceof Array)for(var c=0;c<a.length;c++)b(c);else for(var d in a)b(d)}function q(a){var b=g(a);return b=="object"&&a!==null&&b!=="undefined"}function r(a,b,c){var d=a||"";return b instanceof Array?a&&(d+="["+c+"]"):(a&&(d+="."),d+=c),d}function s(){var a=[],b=[];this.save=function(c,d){var e=ko.utils.arrayIndexOf(a,c);e>=0?b[e]=d:(a.push(c),b.push(d))},this.get=function(c){var d=ko.utils.arrayIndexOf(a,c);return d>=0?b[d]:undefined}}ko.mapping={};var a="__ko_mapping__",b=ko.dependentObservable,c={include:["_destroy"],ignore:[],copy:[]},d=c;ko.mapping.fromJS=function(b,c,d){if(arguments.length==0)throw new Error("When calling ko.fromJS, pass the object you want to convert.");c=h(c);var e=k(d,b,c);return e[a]=f(e[a],c),e},ko.mapping.fromJSON=function(a,b){var c=ko.utils.parseJson(a);return ko.mapping.fromJS(c,b)},ko.mapping.isMapped=function(b){var c=ko.utils.unwrapObservable(b);return c&&c[a]},ko.mapping.updateFromJS=function(b,c){if(arguments.length<2)throw new Error("When calling ko.updateFromJS, pass: the object to update and the object you want to update from.");if(!b)throw new Error("The object is undefined.");if(!b[a])throw new Error("The object you are trying to update was not created by a 'fromJS' or 'fromJSON' mapping.");return k(b,c,b[a])},ko.mapping.updateFromJSON=function(a,b,c){var d=ko.utils.parseJson(b);return ko.mapping.updateFromJS(a,d,c)},ko.mapping.toJS=function(b,c){d||ko.mapping.resetDefaultOptions();if(arguments.length==0)throw new Error("When calling ko.mapping.toJS, pass the object you want to convert.");if(d.ignore instanceof Array){if(d.include instanceof Array){if(d.copy instanceof Array)return c=h(c,b[a]),ko.mapping.visitModel(b,function(a){return ko.utils.unwrapObservable(a)},c);throw new Error("ko.mapping.defaultOptions().copy should be an array.")}throw new Error("ko.mapping.defaultOptions().include should be an array.")}throw new Error("ko.mapping.defaultOptions().ignore should be an array.")},ko.mapping.toJSON=function(a,b){var c=ko.mapping.toJS(a,b);return ko.utils.stringifyJson(c)},ko.mapping.defaultOptions=function(){if(arguments.length>0)d=arguments[0];else return d},ko.mapping.resetDefaultOptions=function(){d={include:c.include.slice(0),ignore:c.ignore.slice(0),copy:c.copy.slice(0)}},ko.mapping.visitModel=function(b,c,d){d=d||{},d.visitedObjects=d.visitedObjects||new s,d.parentName||(d=h(d));var e,f=ko.utils.unwrapObservable(b);if(!q(f))return c(b,d.parentName);c(b,d.parentName),e=f instanceof Array?[]:{},d.visitedObjects.save(b,e);var i=d.parentName;return p(f,function(b){if(d.ignore&&ko.utils.arrayIndexOf(d.ignore,b)!=-1)return;var h=f[b];d.parentName=r(i,f,b);if(ko.utils.arrayIndexOf(d.copy,b)===-1&&ko.utils.arrayIndexOf(d.include,b)===-1&&f[a]&&f[a].mappedProperties&&!f[a].mappedProperties[b]&&!(f instanceof Array))return;var j;switch(g(ko.utils.unwrapObservable(h))){case"object":case"undefined":var k=d.visitedObjects.get(h);e[b]=g(k)!=="undefined"?k:ko.mapping.visitModel(h,c,d);break;default:e[b]=c(h,d.parentName)}}),e},ko.exportSymbol("ko.mapping",ko.mapping),ko.exportSymbol("ko.mapping.fromJS",ko.mapping.fromJS),ko.exportSymbol("ko.mapping.fromJSON",ko.mapping.fromJSON),ko.exportSymbol("ko.mapping.isMapped",ko.mapping.isMapped),ko.exportSymbol("ko.mapping.defaultOptions",ko.mapping.defaultOptions),ko.exportSymbol("ko.mapping.toJS",ko.mapping.toJS),ko.exportSymbol("ko.mapping.toJSON",ko.mapping.toJSON),ko.exportSymbol("ko.mapping.updateFromJS",ko.mapping.updateFromJS),ko.exportSymbol("ko.mapping.updateFromJSON",ko.mapping.updateFromJSON),ko.exportSymbol("ko.mapping.visitModel",ko.mapping.visitModel)}()
