/*! (C) Andrea Giammarchi - MIT Style License */ define(function(){var Class=Class||function(Object){"use strict";var CONSTRUCTOR="constructor",EXTENDS="extends",IMPLEMENTS="implements",INIT="init",PROTOTYPE="prototype",STATIC="static",SUPER="super",TO_STRING="toString",VALUE="value",WITH="with",PROTO="__proto__",nonEnumerables=["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString",TO_STRING,"valueOf"],ObjectPrototype=Object[PROTOTYPE],hOP=ObjectPrototype[nonEnumerables[0]],toString=ObjectPrototype[TO_STRING],propertyIsEnumerable=ObjectPrototype[nonEnumerables[2]]||function(p){for(var k in this)if(p===k)return hOP.call(this,p);return false},hasIEEnumerableBug=!propertyIsEnumerable.call({toString:0},TO_STRING),create=Object.create||function(proto){var isInstance=this instanceof create;create[PROTOTYPE]=isInstance?createPrototype:proto||ObjectPrototype;return isInstance?this:new create},createPrototype=create[PROTOTYPE],defineProperty=Object.defineProperty,gOPD=Object.getOwnPropertyDescriptor,gOPN=Object.getOwnPropertyNames||function(object){var names=[],i,key;for(key in object){if(hOP.call(object,key)){names.push(key)}}if(hasIEEnumerableBug){for(i=0;i