//>>built
define("dojox/lang/typed",["dijit","dojo","dojox","dojo/require!dojox/json/schema"],function(z,h,t){(function(){function u(a,b){var f=function(){var e=b();if(e&&e.parameters){for(var k=e.parameters,d=0;d<k.length;d++)arguments[d]=l(arguments[d],k[d],d.toString());if(e.additionalParameters)for(;d<arguments.length;d++)arguments[d]=l(arguments[d],e.additionalParameters,d.toString())}k=a.apply(this,arguments);e.returns&&l(k,e.returns);return k};f.__typedFunction__=!0;for(var g in a)f[g]=a[g];return f}
function x(a){return function(){return a}}function l(a,b,f){"function"==typeof a&&b&&!a.__typedFunction__&&(a=u(a,x(b)));b=n._validate(a,b,f);if(!b.valid){a="";b=b.errors;for(f=0;f<b.length;f++)a+=b[f].property+" "+b[f].message+"\n";throw new TypeError(a);}return a}var p="undefined"!=typeof h;if(p){h.provide("dojox.lang.typed");h.require("dojox.json.schema");var n=t.json.schema}else{if("undefined"==typeof JSONSchema)throw Error("Dojo or JSON Schema library must be present");n=JSONSchema}var y=n.__defineGetter__,
r=function(a){if(a.__typedClass__)return a;var b=function(){var g,e,k=b.properties,d=b.methods;a.apply(this,arguments);this.__props__={};for(g in d)if(e=this[g]){if(!e.__typedFunction__){for(var m=this;!m.hasOwnProperty(g)&&m.__proto__;)m=m.__proto__;(function(c){m[c]=u(e,function(){return d[c]})})(g)}}else(function(c){this[c]=function(){throw new TypeError("The method "+c+" is defined but not implemented");}})(g);if(y){var q=this;for(g in k)e=this[g],this.hasOwnProperty(g)&&(this.__props__[g]=e),
function(c){delete q[c];q.__defineGetter__(c,function(){return c in this.__props__?this.__props__[c]:this.__proto__[c]});q.__defineSetter__(c,function(v){l(v,k[c],c);return this.__props__[c]=v})}(g)}l(this,b)};b.prototype=a.prototype;for(var f in a)b[f]=a[f];a.prototype.declaredClass&&p&&h.setObject(a.prototype.declaredClass,b);b.__typedClass__=!0;return b};if(p){if(t.lang.typed=r,h.config.typeCheckAllClasses){var w=h.declare;h.declare=function(a){var b=w.apply(this,arguments);return b=r(b)};h.mixin(h.declare,
w)}}else typed=r})()});