jacobinathanialpeterson commited on
Commit
8fe7caa
·
1 Parent(s): ca81e93

Delete ovo

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
ovo/GameAnalytics.js DELETED
@@ -1,7 +0,0 @@
1
- (function(scope){
2
- var CryptoJS=CryptoJS||function(e,n){var t={},i=t.lib={},r=function(){},s=i.Base={extend:function(e){r.prototype=this;var n=new r;return e&&n.mixIn(e),n.hasOwnProperty("init")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var n in e)e.hasOwnProperty(n)&&(this[n]=e[n]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},o=i.WordArray=s.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=void 0!=n?n:4*e.length},toString:function(e){return(e||u).stringify(this)},concat:function(e){var n=this.words,t=e.words,i=this.sigBytes;if(e=e.sigBytes,this.clamp(),i%4)for(var r=0;r<e;r++)n[i+r>>>2]|=(t[r>>>2]>>>24-r%4*8&255)<<24-(i+r)%4*8;else if(65535<t.length)for(r=0;r<e;r+=4)n[i+r>>>2]=t[r>>>2];else n.push.apply(n,t);return this.sigBytes+=e,this},clamp:function(){var n=this.words,t=this.sigBytes;n[t>>>2]&=4294967295<<32-t%4*8,n.length=e.ceil(t/4)},clone:function(){var e=s.clone.call(this);return e.words=this.words.slice(0),e},random:function(n){for(var t=[],i=0;i<n;i+=4)t.push(4294967296*e.random()|0);return new o.init(t,n)}}),a=t.enc={},u=a.Hex={stringify:function(e){var n=e.words;e=e.sigBytes;for(var t=[],i=0;i<e;i++){var r=n[i>>>2]>>>24-i%4*8&255;t.push((r>>>4).toString(16)),t.push((15&r).toString(16))}return t.join("")},parse:function(e){for(var n=e.length,t=[],i=0;i<n;i+=2)t[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new o.init(t,n/2)}},c=a.Latin1={stringify:function(e){var n=e.words;e=e.sigBytes;for(var t=[],i=0;i<e;i++)t.push(String.fromCharCode(n[i>>>2]>>>24-i%4*8&255));return t.join("")},parse:function(e){for(var n=e.length,t=[],i=0;i<n;i++)t[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new o.init(t,n)}},d=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return c.parse(unescape(encodeURIComponent(e)))}},l=i.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(n){var t=this._data,i=t.words,r=t.sigBytes,s=this.blockSize,a=r/(4*s),a=n?e.ceil(a):e.max((0|a)-this._minBufferSize,0);if(n=a*s,r=e.min(4*n,r),n){for(var u=0;u<n;u+=s)this._doProcessBlock(i,u);u=i.splice(0,n),t.sigBytes-=r}return new o.init(u,r)},clone:function(){var e=s.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});i.Hasher=l.extend({cfg:s.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){l.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(n,t){return new e.init(t).finalize(n)}},_createHmacHelper:function(e){return function(n,t){return new f.HMAC.init(e,t).finalize(n)}}});var f=t.algo={};return t}(Math);!function(e){for(var n=CryptoJS,t=n.lib,i=t.WordArray,r=t.Hasher,t=n.algo,s=[],o=[],a=function(e){return 4294967296*(e-(0|e))|0},u=2,c=0;64>c;){var d;e:{d=u;for(var l=e.sqrt(d),f=2;f<=l;f++)if(!(d%f)){d=!1;break e}d=!0}d&&(8>c&&(s[c]=a(e.pow(u,.5))),o[c]=a(e.pow(u,1/3)),c++),u++}var v=[],t=t.SHA256=r.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(e,n){for(var t=this._hash.words,i=t[0],r=t[1],s=t[2],a=t[3],u=t[4],c=t[5],d=t[6],l=t[7],f=0;64>f;f++){if(16>f)v[f]=0|e[n+f];else{var g=v[f-15],m=v[f-2];v[f]=((g<<25|g>>>7)^(g<<14|g>>>18)^g>>>3)+v[f-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+v[f-16]}g=l+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&c^~u&d)+o[f]+v[f],m=((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+(i&r^i&s^r&s),l=d,d=c,c=u,u=a+g|0,a=s,s=r,r=i,i=g+m|0}t[0]=t[0]+i|0,t[1]=t[1]+r|0,t[2]=t[2]+s|0,t[3]=t[3]+a|0,t[4]=t[4]+u|0,t[5]=t[5]+c|0,t[6]=t[6]+d|0,t[7]=t[7]+l|0},_doFinalize:function(){var n=this._data,t=n.words,i=8*this._nDataBytes,r=8*n.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=e.floor(i/4294967296),t[15+(r+64>>>9<<4)]=i,n.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}});n.SHA256=r._createHelper(t),n.HmacSHA256=r._createHmacHelper(t)}(Math),function(){var e=CryptoJS,n=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var i=e.blockSize,r=4*i;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,u=o.words,c=0;c<i;c++)a[c]^=1549556828,u[c]^=909522486;s.sigBytes=o.sigBytes=r,this.reset()},reset:function(){var e=this._hasher;e.reset(),e.update(this._iKey)},update:function(e){return this._hasher.update(e),this},finalize:function(e){var n=this._hasher;return e=n.finalize(e),n.reset(),n.finalize(this._oKey.clone().concat(e))}})}(),function(){var e=CryptoJS,n=e.lib.WordArray;e.enc.Base64={stringify:function(e){var n=e.words,t=e.sigBytes,i=this._map;e.clamp(),e=[];for(var r=0;r<t;r+=3)for(var s=(n[r>>>2]>>>24-r%4*8&255)<<16|(n[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|n[r+2>>>2]>>>24-(r+2)%4*8&255,o=0;4>o&&r+.75*o<t;o++)e.push(i.charAt(s>>>6*(3-o)&63));if(n=i.charAt(64))for(;e.length%4;)e.push(n);return e.join("")},parse:function(e){var t=e.length,i=this._map,r=i.charAt(64);r&&-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],s=0,o=0;o<t;o++)if(o%4){var a=i.indexOf(e.charAt(o-1))<<o%4*2,u=i.indexOf(e.charAt(o))>>>6-o%4*2;r[s>>>2]|=(a|u)<<24-s%4*8,s++}return n.create(r,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}();var gameanalytics;!function(e){!function(e){e[e.Undefined=0]="Undefined",e[e.Debug=1]="Debug",e[e.Info=2]="Info",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical"}(e.EGAErrorSeverity||(e.EGAErrorSeverity={}));!function(e){e[e.Undefined=0]="Undefined",e[e.Male=1]="Male",e[e.Female=2]="Female"}(e.EGAGender||(e.EGAGender={}));!function(e){e[e.Undefined=0]="Undefined",e[e.Start=1]="Start",e[e.Complete=2]="Complete",e[e.Fail=3]="Fail"}(e.EGAProgressionStatus||(e.EGAProgressionStatus={}));!function(e){e[e.Undefined=0]="Undefined",e[e.Source=1]="Source",e[e.Sink=2]="Sink"}(e.EGAResourceFlowType||(e.EGAResourceFlowType={}));!function(e){!function(e){e[e.Undefined=0]="Undefined",e[e.Rejected=1]="Rejected"}(e.EGASdkErrorType||(e.EGASdkErrorType={}));!function(e){e[e.NoResponse=0]="NoResponse",e[e.BadResponse=1]="BadResponse",e[e.RequestTimeout=2]="RequestTimeout",e[e.JsonEncodeFailed=3]="JsonEncodeFailed",e[e.JsonDecodeFailed=4]="JsonDecodeFailed",e[e.InternalServerError=5]="InternalServerError",e[e.BadRequest=6]="BadRequest",e[e.Unauthorized=7]="Unauthorized",e[e.UnknownResponseCode=8]="UnknownResponseCode",e[e.Ok=9]="Ok"}(e.EGAHTTPApiResponse||(e.EGAHTTPApiResponse={}))}(e.http||(e.http={}))}(gameanalytics||(gameanalytics={}));var EGAErrorSeverity=gameanalytics.EGAErrorSeverity,EGAGender=gameanalytics.EGAGender,EGAProgressionStatus=gameanalytics.EGAProgressionStatus,EGAResourceFlowType=gameanalytics.EGAResourceFlowType,gameanalytics;!function(e){!function(e){var n;!function(e){e[e.Error=0]="Error",e[e.Warning=1]="Warning",e[e.Info=2]="Info",e[e.Debug=3]="Debug"}(n||(n={}));var t=function(){function e(){e.debugEnabled=!1}return e.setInfoLog=function(n){e.instance.infoLogEnabled=n},e.setVerboseLog=function(n){e.instance.infoLogVerboseEnabled=n},e.i=function(t){if(e.instance.infoLogEnabled){var i="Info/"+e.Tag+": "+t;e.instance.sendNotificationMessage(i,n.Info)}},e.w=function(t){var i="Warning/"+e.Tag+": "+t;e.instance.sendNotificationMessage(i,n.Warning)},e.e=function(t){var i="Error/"+e.Tag+": "+t;e.instance.sendNotificationMessage(i,n.Error)},e.ii=function(t){if(e.instance.infoLogVerboseEnabled){var i="Verbose/"+e.Tag+": "+t;e.instance.sendNotificationMessage(i,n.Info)}},e.d=function(t){if(e.debugEnabled){var i="Debug/"+e.Tag+": "+t;e.instance.sendNotificationMessage(i,n.Debug)}},e.prototype.sendNotificationMessage=function(e,t){switch(t){case n.Error:console.error(e);break;case n.Warning:console.warn(e);break;case n.Debug:"function"==typeof console.debug?console.debug(e):console.log(e);break;case n.Info:console.log(e)}},e}();t.instance=new t,t.Tag="GameAnalytics",e.GALogger=t}(e.logging||(e.logging={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(n){var t=e.logging.GALogger,i=function(){function e(){}return e.getHmac=function(e,n){var t=CryptoJS.HmacSHA256(n,e);return CryptoJS.enc.Base64.stringify(t)},e.stringMatch=function(e,n){return!(!e||!n)&&n.test(e)},e.joinStringArray=function(e,n){for(var t="",i=0,r=e.length;i<r;i++)i>0&&(t+=n),t+=e[i];return t},e.stringArrayContainsString=function(e,n){if(0===e.length)return!1;for(var t in e)if(e[t]===n)return!0;return!1},e.encode64=function(n){n=encodeURI(n);var t,i,r,s,o,a="",u=0,c=0,d=0;do{t=n.charCodeAt(d++),i=n.charCodeAt(d++),u=n.charCodeAt(d++),r=t>>2,s=(3&t)<<4|i>>4,o=(15&i)<<2|u>>6,c=63&u,isNaN(i)?o=c=64:isNaN(u)&&(c=64),a=a+e.keyStr.charAt(r)+e.keyStr.charAt(s)+e.keyStr.charAt(o)+e.keyStr.charAt(c),t=i=u=0,r=s=o=c=0}while(d<n.length);return a},e.decode64=function(n){var i,r,s,o,a,u="",c=0,d=0,l=0;/[^A-Za-z0-9\+\/\=]/g.exec(n)&&t.w("There were invalid base64 characters in the input text. Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='. Expect errors in decoding."),n=n.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{s=e.keyStr.indexOf(n.charAt(l++)),o=e.keyStr.indexOf(n.charAt(l++)),a=e.keyStr.indexOf(n.charAt(l++)),d=e.keyStr.indexOf(n.charAt(l++)),i=s<<2|o>>4,r=(15&o)<<4|a>>2,c=(3&a)<<6|d,u+=String.fromCharCode(i),64!=a&&(u+=String.fromCharCode(r)),64!=d&&(u+=String.fromCharCode(c)),i=r=c=0,s=o=a=d=0}while(l<n.length);return decodeURI(u)},e.timeIntervalSince1970=function(){var e=new Date;return Math.round(e.getTime()/1e3)},e.createGuid=function(){return(e.s4()+e.s4()+"-"+e.s4()+"-4"+e.s4().substr(0,3)+"-"+e.s4()+"-"+e.s4()+e.s4()+e.s4()).toLowerCase()},e.s4=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)},e}();i.keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n.GAUtilities=i}(e.utilities||(e.utilities={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(n){var t=e.logging.GALogger,i=e.http.EGASdkErrorType,r=e.utilities.GAUtilities,s=function(){function n(){}return n.validateBusinessEvent=function(e,i,r,s,o){return n.validateCurrency(e)?n.validateShortString(r,!0)?n.validateEventPartLength(s,!1)?n.validateEventPartCharacters(s)?n.validateEventPartLength(o,!1)?!!n.validateEventPartCharacters(o)||(t.i("Validation fail - business event - itemId: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: "+o),!1):(t.i("Validation fail - business event - itemId. Cannot be (null), empty or above 64 characters. String: "+o),!1):(t.i("Validation fail - business event - itemType: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: "+s),!1):(t.i("Validation fail - business event - itemType: Cannot be (null), empty or above 64 characters. String: "+s),!1):(t.i("Validation fail - business event - cartType. Cannot be above 32 length. String: "+r),!1):(t.i("Validation fail - business event - currency: Cannot be (null) and need to be A-Z, 3 characters and in the standard at openexchangerates.org. Failed currency: "+e),!1)},n.validateResourceEvent=function(i,s,o,a,u,c,d){return i==e.EGAResourceFlowType.Undefined?(t.i("Validation fail - resource event - flowType: Invalid flow type."),!1):s?r.stringArrayContainsString(c,s)?o>0?a?n.validateEventPartLength(a,!1)?n.validateEventPartCharacters(a)?r.stringArrayContainsString(d,a)?n.validateEventPartLength(u,!1)?!!n.validateEventPartCharacters(u)||(t.i("Validation fail - resource event - itemId: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: "+u),!1):(t.i("Validation fail - resource event - itemId: Cannot be (null), empty or above 64 characters. String: "+u),!1):(t.i("Validation fail - resource event - itemType: Not found in list of pre-defined available resource itemTypes. String: "+a),!1):(t.i("Validation fail - resource event - itemType: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: "+a),!1):(t.i("Validation fail - resource event - itemType: Cannot be (null), empty or above 64 characters. String: "+a),!1):(t.i("Validation fail - resource event - itemType: Cannot be (null)"),!1):(t.i("Validation fail - resource event - amount: Float amount cannot be 0 or negative. Value: "+o),!1):(t.i("Validation fail - resource event - currency: Not found in list of pre-defined available resource currencies. String: "+s),!1):(t.i("Validation fail - resource event - currency: Cannot be (null)"),!1)},n.validateProgressionEvent=function(i,r,s,o){if(i==e.EGAProgressionStatus.Undefined)return t.i("Validation fail - progression event: Invalid progression status."),!1;if(o&&!s&&r)return t.i("Validation fail - progression event: 03 found but 01+02 are invalid. Progression must be set as either 01, 01+02 or 01+02+03."),!1;if(s&&!r)return t.i("Validation fail - progression event: 02 found but not 01. Progression must be set as either 01, 01+02 or 01+02+03"),!1;if(!r)return t.i("Validation fail - progression event: progression01 not valid. Progressions must be set as either 01, 01+02 or 01+02+03"),!1;if(!n.validateEventPartLength(r,!1))return t.i("Validation fail - progression event - progression01: Cannot be (null), empty or above 64 characters. String: "+r),!1;if(!n.validateEventPartCharacters(r))return t.i("Validation fail - progression event - progression01: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: "+r),!1;if(s){if(!n.validateEventPartLength(s,!0))return t.i("Validation fail - progression event - progression02: Cannot be empty or above 64 characters. String: "+s),!1;if(!n.validateEventPartCharacters(s))return t.i("Validation fail - progression event - progression02: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: "+s),!1}if(o){if(!n.validateEventPartLength(o,!0))return t.i("Validation fail - progression event - progression03: Cannot be empty or above 64 characters. String: "+o),!1;if(!n.validateEventPartCharacters(o))return t.i("Validation fail - progression event - progression03: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: "+o),!1}return!0},n.validateDesignEvent=function(e,i){return n.validateEventIdLength(e)?!!n.validateEventIdCharacters(e)||(t.i("Validation fail - design event - eventId: Non valid characters. Only allowed A-z, 0-9, -_., ()!?. String: "+e),!1):(t.i("Validation fail - design event - eventId: Cannot be (null) or empty. Only 5 event parts allowed seperated by :. Each part need to be 32 characters or less. String: "+e),!1)},n.validateErrorEvent=function(i,r){return i==e.EGAErrorSeverity.Undefined?(t.i("Validation fail - error event - severity: Severity was unsupported value."),!1):!!n.validateLongString(r,!0)||(t.i("Validation fail - error event - message: Message cannot be above 8192 characters."),!1)},n.validateSdkErrorEvent=function(e,r,s){return!!n.validateKeys(e,r)&&(s!==i.Undefined||(t.i("Validation fail - sdk error event - type: Type was unsupported value."),!1))},n.validateKeys=function(e,n){return!(!r.stringMatch(e,/^[A-z0-9]{32}$/)||!r.stringMatch(n,/^[A-z0-9]{40}$/))},n.validateCurrency=function(e){return!!e&&!!r.stringMatch(e,/^[A-Z]{3}$/)},n.validateEventPartLength=function(e,n){return!(!n||e)||!!e&&!(e.length>64)},n.validateEventPartCharacters=function(e){return!!r.stringMatch(e,/^[A-Za-z0-9\s\-_\.\(\)\!\?]{1,64}$/)},n.validateEventIdLength=function(e){return!!e&&!!r.stringMatch(e,/^[^:]{1,64}(?::[^:]{1,64}){0,4}$/)},n.validateEventIdCharacters=function(e){return!!e&&!!r.stringMatch(e,/^[A-Za-z0-9\s\-_\.\(\)\!\?]{1,64}(:[A-Za-z0-9\s\-_\.\(\)\!\?]{1,64}){0,4}$/)},n.validateAndCleanInitRequestResponse=function(e){if(null==e)return t.w("validateInitRequestResponse failed - no response dictionary."),null;var n={};try{n.enabled=e.enabled}catch(e){return t.w("validateInitRequestResponse failed - invalid type in 'enabled' field."),null}try{var i=e.server_ts;if(!(i>0))return t.w("validateInitRequestResponse failed - invalid value in 'server_ts' field."),null;n.server_ts=i}catch(n){return t.w("validateInitRequestResponse failed - invalid type in 'server_ts' field. type="+typeof e.server_ts+", value="+e.server_ts+", "+n),null}return n},n.validateBuild=function(e){return!!n.validateShortString(e,!1)},n.validateSdkWrapperVersion=function(e){return!!r.stringMatch(e,/^(unity|unreal|gamemaker|cocos2d|construct|defold) [0-9]{0,5}(\.[0-9]{0,5}){0,2}$/)},n.validateEngineVersion=function(e){return!(!e||!r.stringMatch(e,/^(unity|unreal|gamemaker|cocos2d|construct|defold) [0-9]{0,5}(\.[0-9]{0,5}){0,2}$/))},n.validateUserId=function(e){return!!n.validateString(e,!1)||(t.i("Validation fail - user id: id cannot be (null), empty or above 64 characters."),!1)},n.validateShortString=function(e,n){return!(!n||e)||!(!e||e.length>32)},n.validateString=function(e,n){return!(!n||e)||!(!e||e.length>64)},n.validateLongString=function(e,n){return!(!n||e)||!(!e||e.length>8192)},n.validateConnectionType=function(e){return r.stringMatch(e,/^(wwan|wifi|lan|offline)$/)},n.validateCustomDimensions=function(e){return n.validateArrayOfStrings(20,32,!1,"custom dimensions",e)},n.validateResourceCurrencies=function(e){if(!n.validateArrayOfStrings(20,64,!1,"resource currencies",e))return!1;for(var i=0;i<e.length;++i)if(!r.stringMatch(e[i],/^[A-Za-z]+$/))return t.i("resource currencies validation failed: a resource currency can only be A-Z, a-z. String was: "+e[i]),!1;return!0},n.validateResourceItemTypes=function(e){if(!n.validateArrayOfStrings(20,32,!1,"resource item types",e))return!1;for(var i=0;i<e.length;++i)if(!n.validateEventPartCharacters(e[i]))return t.i("resource item types validation failed: a resource item type cannot contain other characters than A-z, 0-9, -_., ()!?. String was: "+e[i]),!1;return!0},n.validateDimension01=function(e,n){return!e||!!r.stringArrayContainsString(n,e)},n.validateDimension02=function(e,n){return!e||!!r.stringArrayContainsString(n,e)},n.validateDimension03=function(e,n){return!e||!!r.stringArrayContainsString(n,e)},n.validateArrayOfStrings=function(e,n,i,r,s){var o=r;if(o||(o="Array"),!s)return t.i(o+" validation failed: array cannot be null. "),!1;if(0==i&&0==s.length)return t.i(o+" validation failed: array cannot be empty. "),!1;if(e>0&&s.length>e)return t.i(o+" validation failed: array cannot exceed "+e+" values. It has "+s.length+" values."),!1;for(var a=0;a<s.length;++a){var u=s[a]?s[a].length:0;if(0===u)return t.i(o+" validation failed: contained an empty string. Array="+JSON.stringify(s)),!1;if(n>0&&u>n)return t.i(o+" validation failed: a string exceeded max allowed length (which is: "+n+"). String was: "+s[a]),!1}return!0},n.validateFacebookId=function(e){return!!n.validateString(e,!1)||(t.i("Validation fail - facebook id: id cannot be (null), empty or above 64 characters."),!1)},n.validateGender=function(n){if(isNaN(Number(e.EGAGender[n]))){if(n==e.EGAGender.Undefined||n!=e.EGAGender.Male&&n!=e.EGAGender.Female)return t.i("Validation fail - gender: Has to be 'male' or 'female'. Was: "+n),!1}else if(n==e.EGAGender[e.EGAGender.Undefined]||n!=e.EGAGender[e.EGAGender.Male]&&n!=e.EGAGender[e.EGAGender.Female])return t.i("Validation fail - gender: Has to be 'male' or 'female'. Was: "+n),!1;return!0},n.validateBirthyear=function(e){return!(e<0||e>9999)||(t.i("Validation fail - birthYear: Cannot be (null) or invalid range."),!1)},n.validateClientTs=function(e){return!(e<-4294967294||e>4294967294)},n}();n.GAValidator=s}(e.validators||(e.validators={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(e){var n=function(){function e(e,n,t){this.name=e,this.value=n,this.version=t}return e}();e.NameValueVersion=n;var t=function(){function e(e,n){this.name=e,this.version=n}return e}();e.NameVersion=t;var i=function(){function e(){}return e.touch=function(){},e.getRelevantSdkVersion=function(){return e.sdkGameEngineVersion?e.sdkGameEngineVersion:e.sdkWrapperVersion},e.getConnectionType=function(){return e.connectionType},e.updateConnectionType=function(){navigator.onLine?"ios"===e.buildPlatform||"android"===e.buildPlatform?e.connectionType="wwan":e.connectionType="lan":e.connectionType="offline"},e.getOSVersionString=function(){return e.buildPlatform+" "+e.osVersionPair.version},e.runtimePlatformToString=function(){return e.osVersionPair.name},e.getBrowserVersionString=function(){var e,n=navigator.userAgent,t=n.match(/(opera|chrome|safari|firefox|ubrowser|msie|trident|fbav(?=\/))\/?\s*(\d+)/i)||[];if(/trident/i.test(t[1]))return e=/\brv[ :]+(\d+)/g.exec(n)||[],"IE "+(e[1]||"");if("Chrome"===t[1]&&null!=(e=n.match(/\b(OPR|Edge|UBrowser)\/(\d+)/)))return e.slice(1).join(" ").replace("OPR","Opera").replace("UBrowser","UC").toLowerCase();if("fbav"===t[1].toLowerCase()&&(t[1]="facebook",t[2]))return"facebook "+t[2];var i=t[2]?[t[1],t[2]]:[navigator.appName,navigator.appVersion,"-?"];return null!=(e=n.match(/version\/(\d+)/i))&&i.splice(1,1,e[1]),i.join(" ").toLowerCase()},e.getDeviceModel=function(){return"unknown"},e.getDeviceManufacturer=function(){return"unknown"},e.matchItem=function(e,n){var i,r,s,o,a,u=new t("unknown","0.0.0"),c=0,d=0;for(c=0;c<n.length;c+=1)if(i=new RegExp(n[c].value,"i"),i.test(e)){if(r=new RegExp(n[c].version+"[- /:;]([\\d._]+)","i"),s=e.match(r),a="",s&&s[1]&&(o=s[1]),o){var l=o.split(/[._]+/);for(d=0;d<Math.min(l.length,3);d+=1)a+=l[d]+(d<Math.min(l.length,3)-1?".":"")}else a="0.0.0";return u.name=n[c].name,u.version=a,u}return u},e}();i.sdkWrapperVersion="javascript 2.1.2",i.osVersionPair=i.matchItem([navigator.platform,navigator.userAgent,navigator.appVersion,navigator.vendor,window.opera].join(" "),[new n("windows_phone","Windows Phone","OS"),new n("windows","Win","NT"),new n("ios","iPhone","OS"),new n("ios","iPad","OS"),new n("ios","iPod","OS"),new n("android","Android","Android"),new n("blackBerry","BlackBerry","/"),new n("mac_osx","Mac","OS X"),new n("tizen","Tizen","Tizen"),new n("linux","Linux","rv")]),i.buildPlatform=i.runtimePlatformToString(),i.deviceModel=i.getDeviceModel(),i.deviceManufacturer=i.getDeviceManufacturer(),i.osVersion=i.getOSVersionString(),i.browserVersion=i.getBrowserVersionString(),i.maxSafeInteger=Math.pow(2,53)-1,e.GADevice=i}(e.device||(e.device={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(e){var n=function(){function e(n){this.deadline=n,this.ignore=!1,this.async=!1,this.running=!1,this.id=++e.idCounter}return e}();n.idCounter=0,e.TimedBlock=n}(e.threading||(e.threading={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(e){var n=function(){function e(e){this.comparer=e,this._subQueues={},this._sortedKeys=[]}return e.prototype.enqueue=function(e,n){-1===this._sortedKeys.indexOf(e)&&this.addQueueOfPriority(e),this._subQueues[e].push(n)},e.prototype.addQueueOfPriority=function(e){var n=this;this._sortedKeys.push(e),this._sortedKeys.sort(function(e,t){return n.comparer.compare(e,t)}),this._subQueues[e]=[]},e.prototype.peek=function(){if(this.hasItems())return this._subQueues[this._sortedKeys[0]][0];throw new Error("The queue is empty")},e.prototype.hasItems=function(){return this._sortedKeys.length>0},e.prototype.dequeue=function(){if(this.hasItems())return this.dequeueFromHighPriorityQueue();throw new Error("The queue is empty")},e.prototype.dequeueFromHighPriorityQueue=function(){var e=this._sortedKeys[0],n=this._subQueues[e].shift();return 0===this._subQueues[e].length&&(this._sortedKeys.shift(),delete this._subQueues[e]),n},e}();e.PriorityQueue=n}(e.threading||(e.threading={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(n){var t,i=e.logging.GALogger;!function(e){e[e.Equal=0]="Equal",e[e.LessOrEqual=1]="LessOrEqual",e[e.NotEqual=2]="NotEqual"}(t=n.EGAStoreArgsOperator||(n.EGAStoreArgsOperator={}));var r;!function(e){e[e.Events=0]="Events",e[e.Sessions=1]="Sessions",e[e.Progression=2]="Progression"}(r=n.EGAStore||(n.EGAStore={}));var s=function(){function e(){this.eventsStore=[],this.sessionsStore=[],this.progressionStore=[],this.storeItems={};try{"object"==typeof localStorage?(localStorage.setItem("testingLocalStorage","yes"),localStorage.removeItem("testingLocalStorage"),e.storageAvailable=!0):e.storageAvailable=!1}catch(e){}}return e.isStorageAvailable=function(){return e.storageAvailable},e.isStoreTooLargeForEvents=function(){return e.instance.eventsStore.length+e.instance.sessionsStore.length>e.MaxNumberOfEntries},e.select=function(n,i,r,s){void 0===i&&(i=[]),void 0===r&&(r=!1),void 0===s&&(s=0);var o=e.getStore(n);if(!o)return null;for(var a=[],u=0;u<o.length;++u){for(var c=o[u],d=!0,l=0;l<i.length;++l){var f=i[l];if(c[f[0]])switch(f[1]){case t.Equal:d=c[f[0]]==f[2];break;case t.LessOrEqual:d=c[f[0]]<=f[2];break;case t.NotEqual:d=c[f[0]]!=f[2];break;default:d=!1}else d=!1;if(!d)break}d&&a.push(c)}return r&&a.sort(function(e,n){return e.client_ts-n.client_ts}),s>0&&a.length>s&&(a=a.slice(0,s+1)),a},e.update=function(n,i,r){void 0===r&&(r=[]);var s=e.getStore(n);if(!s)return!1;for(var o=0;o<s.length;++o){for(var a=s[o],u=!0,c=0;c<r.length;++c){var d=r[c];if(a[d[0]])switch(d[1]){case t.Equal:u=a[d[0]]==d[2];break;case t.LessOrEqual:u=a[d[0]]<=d[2];break;case t.NotEqual:u=a[d[0]]!=d[2];break;default:u=!1}else u=!1;if(!u)break}if(u)for(var c=0;c<i.length;++c){var l=i[c];a[l[0]]=l[1]}}return!0},e.delete=function(n,i){var r=e.getStore(n);if(r)for(var s=0;s<r.length;++s){for(var o=r[s],a=!0,u=0;u<i.length;++u){var c=i[u];if(o[c[0]])switch(c[1]){case t.Equal:a=o[c[0]]==c[2];break;case t.LessOrEqual:a=o[c[0]]<=c[2];break;case t.NotEqual:a=o[c[0]]!=c[2];break;default:a=!1}else a=!1;if(!a)break}a&&(r.splice(s,1),--s)}},e.insert=function(n,t,i,r){void 0===i&&(i=!1),void 0===r&&(r=null);var s=e.getStore(n);if(s)if(i){if(!r)return;for(var o=!1,a=0;a<s.length;++a){var u=s[a];if(u[r]==t[r]){for(var c in t)u[c]=t[c];o=!0;break}}o||s.push(t)}else s.push(t)},e.save=function(){if(!e.isStorageAvailable())return void i.w("Storage is not available, cannot save.");localStorage.setItem(e.KeyPrefix+e.EventsStoreKey,JSON.stringify(e.instance.eventsStore)),localStorage.setItem(e.KeyPrefix+e.SessionsStoreKey,JSON.stringify(e.instance.sessionsStore)),localStorage.setItem(e.KeyPrefix+e.ProgressionStoreKey,JSON.stringify(e.instance.progressionStore)),localStorage.setItem(e.KeyPrefix+e.ItemsStoreKey,JSON.stringify(e.instance.storeItems))},e.load=function(){if(!e.isStorageAvailable())return void i.w("Storage is not available, cannot load.");try{e.instance.eventsStore=JSON.parse(localStorage.getItem(e.KeyPrefix+e.EventsStoreKey)),e.instance.eventsStore||(e.instance.eventsStore=[])}catch(n){i.w("Load failed for 'events' store. Using empty store."),e.instance.eventsStore=[]}try{e.instance.sessionsStore=JSON.parse(localStorage.getItem(e.KeyPrefix+e.SessionsStoreKey)),e.instance.sessionsStore||(e.instance.sessionsStore=[])}catch(n){i.w("Load failed for 'sessions' store. Using empty store."),e.instance.sessionsStore=[]}try{e.instance.progressionStore=JSON.parse(localStorage.getItem(e.KeyPrefix+e.ProgressionStoreKey)),e.instance.progressionStore||(e.instance.progressionStore=[])}catch(n){i.w("Load failed for 'progression' store. Using empty store."),e.instance.progressionStore=[]}try{e.instance.storeItems=JSON.parse(localStorage.getItem(e.KeyPrefix+e.ItemsStoreKey)),e.instance.storeItems||(e.instance.storeItems={})}catch(n){i.w("Load failed for 'items' store. Using empty store."),e.instance.progressionStore=[]}},e.setItem=function(n,t){var i=e.KeyPrefix+n;t?e.instance.storeItems[i]=t:i in e.instance.storeItems&&delete e.instance.storeItems[i]},e.getItem=function(n){var t=e.KeyPrefix+n;return t in e.instance.storeItems?e.instance.storeItems[t]:null},e.getStore=function(n){switch(n){case r.Events:return e.instance.eventsStore;case r.Sessions:return e.instance.sessionsStore;case r.Progression:return e.instance.progressionStore;default:return i.w("GAStore.getStore(): Cannot find store: "+n),null}},e}();s.instance=new s,s.MaxNumberOfEntries=2e3,s.KeyPrefix="GA::",s.EventsStoreKey="ga_event",s.SessionsStoreKey="ga_session",s.ProgressionStoreKey="ga_progression",s.ItemsStoreKey="ga_items",n.GAStore=s}(e.store||(e.store={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(n){var t=e.validators.GAValidator,i=e.utilities.GAUtilities,r=e.logging.GALogger,s=e.store.GAStore,o=e.device.GADevice,a=e.store.EGAStore,u=e.store.EGAStoreArgsOperator,c=function(){function n(){this.availableCustomDimensions01=[],this.availableCustomDimensions02=[],this.availableCustomDimensions03=[],this.availableResourceCurrencies=[],this.availableResourceItemTypes=[],this.sdkConfigDefault={},this.sdkConfig={},this.progressionTries={}}return n.setUserId=function(e){n.instance.userId=e,n.cacheIdentifier()},n.getIdentifier=function(){return n.instance.identifier},n.isInitialized=function(){return n.instance.initialized},n.setInitialized=function(e){n.instance.initialized=e},n.getSessionStart=function(){return n.instance.sessionStart},n.getSessionNum=function(){return n.instance.sessionNum},n.getTransactionNum=function(){return n.instance.transactionNum},n.getSessionId=function(){return n.instance.sessionId},n.getCurrentCustomDimension01=function(){return n.instance.currentCustomDimension01},n.getCurrentCustomDimension02=function(){return n.instance.currentCustomDimension02},n.getCurrentCustomDimension03=function(){return n.instance.currentCustomDimension03},n.getGameKey=function(){return n.instance.gameKey},n.getGameSecret=function(){return n.instance.gameSecret},n.getAvailableCustomDimensions01=function(){return n.instance.availableCustomDimensions01},n.setAvailableCustomDimensions01=function(e){t.validateCustomDimensions(e)&&(n.instance.availableCustomDimensions01=e,n.validateAndFixCurrentDimensions(),r.i("Set available custom01 dimension values: ("+i.joinStringArray(e,", ")+")"))},n.getAvailableCustomDimensions02=function(){return n.instance.availableCustomDimensions02},n.setAvailableCustomDimensions02=function(e){t.validateCustomDimensions(e)&&(n.instance.availableCustomDimensions02=e,n.validateAndFixCurrentDimensions(),r.i("Set available custom02 dimension values: ("+i.joinStringArray(e,", ")+")"))},n.getAvailableCustomDimensions03=function(){return n.instance.availableCustomDimensions03},n.setAvailableCustomDimensions03=function(e){t.validateCustomDimensions(e)&&(n.instance.availableCustomDimensions03=e,n.validateAndFixCurrentDimensions(),r.i("Set available custom03 dimension values: ("+i.joinStringArray(e,", ")+")"))},n.getAvailableResourceCurrencies=function(){return n.instance.availableResourceCurrencies},n.setAvailableResourceCurrencies=function(e){t.validateResourceCurrencies(e)&&(n.instance.availableResourceCurrencies=e,r.i("Set available resource currencies: ("+i.joinStringArray(e,", ")+")"))},n.getAvailableResourceItemTypes=function(){return n.instance.availableResourceItemTypes},n.setAvailableResourceItemTypes=function(e){t.validateResourceItemTypes(e)&&(n.instance.availableResourceItemTypes=e,r.i("Set available resource item types: ("+i.joinStringArray(e,", ")+")"))},n.getBuild=function(){return n.instance.build},n.setBuild=function(e){n.instance.build=e,r.i("Set build version: "+e)},n.getUseManualSessionHandling=function(){return n.instance.useManualSessionHandling},n.prototype.setDefaultId=function(e){this.defaultUserId=e||"",n.cacheIdentifier()},n.getDefaultId=function(){return n.instance.defaultUserId},n.getSdkConfig=function(){var e,t=0;for(var i in n.instance.sdkConfig)0===t&&(e=i),++t;if(e&&t>0)return n.instance.sdkConfig;var e,t=0;for(var i in n.instance.sdkConfigCached)0===t&&(e=i),++t
3
- ;return e&&t>0?n.instance.sdkConfigCached:n.instance.sdkConfigDefault},n.isEnabled=function(){var e=n.getSdkConfig();return(!e.enabled||"false"!=e.enabled)&&!!n.instance.initAuthorized},n.setCustomDimension01=function(e){n.instance.currentCustomDimension01=e,s.setItem(n.Dimension01Key,e),r.i("Set custom01 dimension value: "+e)},n.setCustomDimension02=function(e){n.instance.currentCustomDimension02=e,s.setItem(n.Dimension02Key,e),r.i("Set custom02 dimension value: "+e)},n.setCustomDimension03=function(e){n.instance.currentCustomDimension03=e,s.setItem(n.Dimension03Key,e),r.i("Set custom03 dimension value: "+e)},n.setFacebookId=function(e){n.instance.facebookId=e,s.setItem(n.FacebookIdKey,e),r.i("Set facebook id: "+e)},n.setGender=function(t){n.instance.gender=isNaN(Number(e.EGAGender[t]))?e.EGAGender[t].toString().toLowerCase():e.EGAGender[e.EGAGender[t]].toString().toLowerCase(),s.setItem(n.GenderKey,n.instance.gender),r.i("Set gender: "+n.instance.gender)},n.setBirthYear=function(e){n.instance.birthYear=e,s.setItem(n.BirthYearKey,e.toString()),r.i("Set birth year: "+e)},n.incrementSessionNum=function(){var e=n.getSessionNum()+1;n.instance.sessionNum=e},n.incrementTransactionNum=function(){var e=n.getTransactionNum()+1;n.instance.transactionNum=e},n.incrementProgressionTries=function(e){var t=n.getProgressionTries(e)+1;n.instance.progressionTries[e]=t;var i={};i.progression=e,i.tries=t,s.insert(a.Progression,i,!0,"progression")},n.getProgressionTries=function(e){return e in n.instance.progressionTries?n.instance.progressionTries[e]:0},n.clearProgressionTries=function(e){e in n.instance.progressionTries&&delete n.instance.progressionTries[e];var t=[];t.push(["progression",u.Equal,e]),s.delete(a.Progression,t)},n.setKeys=function(e,t){n.instance.gameKey=e,n.instance.gameSecret=t},n.setManualSessionHandling=function(e){n.instance.useManualSessionHandling=e,r.i("Use manual session handling: "+e)},n.getEventAnnotations=function(){var e={};e.v=2,e.user_id=n.instance.identifier,e.client_ts=n.getClientTsAdjusted(),e.sdk_version=o.getRelevantSdkVersion(),e.os_version=o.osVersion,e.manufacturer=o.deviceManufacturer,e.device=o.deviceModel,e.browser_version=o.browserVersion,e.platform=o.buildPlatform,e.session_id=n.instance.sessionId,e[n.SessionNumKey]=n.instance.sessionNum;var i=o.getConnectionType();return t.validateConnectionType(i)&&(e.connection_type=i),o.gameEngineVersion&&(e.engine_version=o.gameEngineVersion),n.instance.build&&(e.build=n.instance.build),n.instance.facebookId&&(e[n.FacebookIdKey]=n.instance.facebookId),n.instance.gender&&(e[n.GenderKey]=n.instance.gender),0!=n.instance.birthYear&&(e[n.BirthYearKey]=n.instance.birthYear),e},n.getSdkErrorEventAnnotations=function(){var e={};e.v=2,e.category=n.CategorySdkError,e.sdk_version=o.getRelevantSdkVersion(),e.os_version=o.osVersion,e.manufacturer=o.deviceManufacturer,e.device=o.deviceModel,e.platform=o.buildPlatform;var i=o.getConnectionType();return t.validateConnectionType(i)&&(e.connection_type=i),o.gameEngineVersion&&(e.engine_version=o.gameEngineVersion),e},n.getInitAnnotations=function(){var e={};return e.sdk_version=o.getRelevantSdkVersion(),e.os_version=o.osVersion,e.platform=o.buildPlatform,e},n.getClientTsAdjusted=function(){var e=i.timeIntervalSince1970(),r=e+n.instance.clientServerTimeOffset;return t.validateClientTs(r)?r:e},n.sessionIsStarted=function(){return 0!=n.instance.sessionStart},n.cacheIdentifier=function(){n.instance.userId?n.instance.identifier=n.instance.userId:n.instance.defaultUserId&&(n.instance.identifier=n.instance.defaultUserId)},n.ensurePersistedStates=function(){s.isStorageAvailable()&&s.load();var e=n.instance;e.setDefaultId(null!=s.getItem(n.DefaultUserIdKey)?s.getItem(n.DefaultUserIdKey):i.createGuid()),e.sessionNum=null!=s.getItem(n.SessionNumKey)?Number(s.getItem(n.SessionNumKey)):0,e.transactionNum=null!=s.getItem(n.TransactionNumKey)?Number(s.getItem(n.TransactionNumKey)):0,e.facebookId?s.setItem(n.FacebookIdKey,e.facebookId):(e.facebookId=null!=s.getItem(n.FacebookIdKey)?s.getItem(n.FacebookIdKey):"",e.facebookId),e.gender?s.setItem(n.GenderKey,e.gender):(e.gender=null!=s.getItem(n.GenderKey)?s.getItem(n.GenderKey):"",e.gender),e.birthYear&&0!=e.birthYear?s.setItem(n.BirthYearKey,e.birthYear.toString()):(e.birthYear=null!=s.getItem(n.BirthYearKey)?Number(s.getItem(n.BirthYearKey)):0,e.birthYear),e.currentCustomDimension01?s.setItem(n.Dimension01Key,e.currentCustomDimension01):(e.currentCustomDimension01=null!=s.getItem(n.Dimension01Key)?s.getItem(n.Dimension01Key):"",e.currentCustomDimension01),e.currentCustomDimension02?s.setItem(n.Dimension02Key,e.currentCustomDimension02):(e.currentCustomDimension02=null!=s.getItem(n.Dimension02Key)?s.getItem(n.Dimension02Key):"",e.currentCustomDimension02),e.currentCustomDimension03?s.setItem(n.Dimension03Key,e.currentCustomDimension03):(e.currentCustomDimension03=null!=s.getItem(n.Dimension03Key)?s.getItem(n.Dimension03Key):"",e.currentCustomDimension03);var t=null!=s.getItem(n.SdkConfigCachedKey)?s.getItem(n.SdkConfigCachedKey):"";if(t){var r=JSON.parse(i.decode64(t));r&&(e.sdkConfigCached=r)}var o=s.select(a.Progression);if(o)for(var u=0;u<o.length;++u){var c=o[u];c&&(e.progressionTries[c.progression]=c.tries)}},n.calculateServerTimeOffset=function(e){return e-i.timeIntervalSince1970()},n.validateAndFixCurrentDimensions=function(){t.validateDimension01(n.getCurrentCustomDimension01(),n.getAvailableCustomDimensions01())||n.setCustomDimension01(""),t.validateDimension02(n.getCurrentCustomDimension02(),n.getAvailableCustomDimensions02())||n.setCustomDimension02(""),t.validateDimension03(n.getCurrentCustomDimension03(),n.getAvailableCustomDimensions03())||n.setCustomDimension03("")},n}();c.CategorySdkError="sdk_error",c.instance=new c,c.DefaultUserIdKey="default_user_id",c.SessionNumKey="session_num",c.TransactionNumKey="transaction_num",c.FacebookIdKey="facebook_id",c.GenderKey="gender",c.BirthYearKey="birth_year",c.Dimension01Key="dimension01",c.Dimension02Key="dimension02",c.Dimension03Key="dimension03",c.SdkConfigCachedKey="sdk_config_cached",n.GAState=c}(e.state||(e.state={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(n){var t=e.utilities.GAUtilities,i=e.logging.GALogger,r=function(){function e(){}return e.execute=function(n,r,s,o){if(e.countMap[r]||(e.countMap[r]=0),!(e.countMap[r]>=e.MaxCount)){var a=t.getHmac(o,s),u=new XMLHttpRequest;u.onreadystatechange=function(){if(4===u.readyState){if(!u.responseText)return;if(200!=u.status)return void i.w("sdk error failed. response code not 200. status code: "+u.status+", description: "+u.statusText+", body: "+u.responseText);e.countMap[r]=e.countMap[r]+1}},u.open("POST",n,!0),u.setRequestHeader("Content-Type","application/json"),u.setRequestHeader("Authorization",a);try{u.send(s)}catch(e){console.error(e)}}},e}();r.MaxCount=10,r.countMap={},n.SdkErrorTask=r}(e.tasks||(e.tasks={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(n){var t=e.state.GAState,i=e.logging.GALogger,r=e.utilities.GAUtilities,s=e.validators.GAValidator,o=e.tasks.SdkErrorTask,a=function(){function e(){this.protocol="https",this.hostName="api.gameanalytics.com",this.version="v2",this.baseUrl=this.protocol+"://"+this.hostName+"/"+this.version,this.initializeUrlPath="init",this.eventsUrlPath="events",this.useGzip=!1}return e.prototype.requestInit=function(i){var r=t.getGameKey(),s=this.baseUrl+"/"+r+"/"+this.initializeUrlPath,o=t.getInitAnnotations(),a=JSON.stringify(o);if(!a)return void i(n.EGAHTTPApiResponse.JsonEncodeFailed,null);var u=this.createPayloadData(a,this.useGzip),c=[];c.push(a),e.sendRequest(s,u,c,this.useGzip,e.initRequestCallback,i)},e.prototype.sendEventsInArray=function(i,r,s){if(0!=i.length){var o=t.getGameKey(),a=this.baseUrl+"/"+o+"/"+this.eventsUrlPath,u=JSON.stringify(i);if(!u)return void s(n.EGAHTTPApiResponse.JsonEncodeFailed,null,r,i.length);var c=this.createPayloadData(u,this.useGzip),d=[];d.push(u),d.push(r),d.push(i.length.toString()),e.sendRequest(a,c,d,this.useGzip,e.sendEventInArrayRequestCallback,s)}},e.prototype.sendSdkErrorEvent=function(n){var r=t.getGameKey(),a=t.getGameSecret();if(s.validateSdkErrorEvent(r,a,n)){var u=this.baseUrl+"/"+r+"/"+this.eventsUrlPath,c="",d=t.getSdkErrorEventAnnotations(),l=e.sdkErrorTypeToString(n);d.type=l;var f=[];if(f.push(d),!(c=JSON.stringify(f)))return void i.w("sendSdkErrorEvent: JSON encoding failed.");o.execute(u,n,c,a)}},e.sendEventInArrayRequestCallback=function(t,i,r,s){void 0===s&&(s=null);var o=(s[0],s[1],s[2]),a=parseInt(s[3]),u="",c=0;u=t.responseText,c=t.status;var d=e.instance.processRequestResponse(c,t.statusText,u,"Events");if(d!=n.EGAHTTPApiResponse.Ok&&d!=n.EGAHTTPApiResponse.BadRequest)return void r(d,null,o,a);var l=u?JSON.parse(u):{};if(null==l)return void r(n.EGAHTTPApiResponse.JsonDecodeFailed,null,o,a);n.EGAHTTPApiResponse.BadRequest,r(d,l,o,a)},e.sendRequest=function(e,n,i,s,o,a){var u=new XMLHttpRequest,c=t.getGameSecret(),d=r.getHmac(c,n),l=[];l.push(d);for(var f in i)l.push(i[f]);if(u.onreadystatechange=function(){4===u.readyState&&o(u,e,a,l)},u.open("POST",e,!0),u.setRequestHeader("Content-Type","text/plain"),u.setRequestHeader("Authorization",d),s)throw new Error("gzip not supported");try{u.send(n)}catch(e){console.error(e.stack)}},e.initRequestCallback=function(t,i,r,o){void 0===o&&(o=null);var a=(o[0],o[1],""),u=0;a=t.responseText,u=t.status;var c=a?JSON.parse(a):{},d=e.instance.processRequestResponse(u,t.statusText,a,"Init");if(d!=n.EGAHTTPApiResponse.Ok&&d!=n.EGAHTTPApiResponse.BadRequest)return void r(d,null);if(null==c)return void r(n.EGAHTTPApiResponse.JsonDecodeFailed,null);if(d===n.EGAHTTPApiResponse.BadRequest)return void r(d,null);var l=s.validateAndCleanInitRequestResponse(c);if(!l)return void r(n.EGAHTTPApiResponse.BadResponse,null);r(n.EGAHTTPApiResponse.Ok,l)},e.prototype.createPayloadData=function(e,n){if(n)throw new Error("gzip not supported");return e},e.prototype.processRequestResponse=function(e,t,i,r){return i?200===e?n.EGAHTTPApiResponse.Ok:0===e||401===e?n.EGAHTTPApiResponse.Unauthorized:400===e?n.EGAHTTPApiResponse.BadRequest:500===e?n.EGAHTTPApiResponse.InternalServerError:n.EGAHTTPApiResponse.UnknownResponseCode:n.EGAHTTPApiResponse.NoResponse},e.sdkErrorTypeToString=function(e){switch(e){case n.EGASdkErrorType.Rejected:return"rejected";default:return""}},e}();a.instance=new a,n.GAHTTPApi=a}(e.http||(e.http={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(n){var t=e.store.GAStore,i=e.store.EGAStore,r=e.store.EGAStoreArgsOperator,s=e.state.GAState,o=e.logging.GALogger,a=e.utilities.GAUtilities,u=e.http.EGAHTTPApiResponse,c=e.http.GAHTTPApi,d=e.validators.GAValidator,l=e.http.EGASdkErrorType,f=function(){function n(){}return n.addSessionStartEvent=function(){var e={};e.category=n.CategorySessionStart,s.incrementSessionNum(),t.setItem(s.SessionNumKey,s.getSessionNum().toString()),n.addDimensionsToEvent(e),n.addEventToStore(e),o.i("Add SESSION START event"),n.processEvents(n.CategorySessionStart,!1)},n.addSessionEndEvent=function(){var e=s.getSessionStart(),t=s.getClientTsAdjusted(),i=t-e;i<0&&(o.w("Session length was calculated to be less then 0. Should not be possible. Resetting to 0."),i=0);var r={};r.category=n.CategorySessionEnd,r.length=i,n.addDimensionsToEvent(r),n.addEventToStore(r),o.i("Add SESSION END event."),n.processEvents("",!1)},n.addBusinessEvent=function(e,i,r,a,u){if(void 0===u&&(u=null),!d.validateBusinessEvent(e,i,u,r,a))return void c.instance.sendSdkErrorEvent(l.Rejected);var f={};s.incrementTransactionNum(),t.setItem(s.TransactionNumKey,s.getTransactionNum().toString()),f.event_id=r+":"+a,f.category=n.CategoryBusiness,f.currency=e,f.amount=i,f[s.TransactionNumKey]=s.getTransactionNum(),u&&(f.cart_type=u),n.addDimensionsToEvent(f),o.i("Add BUSINESS event: {currency:"+e+", amount:"+i+", itemType:"+r+", itemId:"+a+", cartType:"+u+"}"),n.addEventToStore(f)},n.addResourceEvent=function(t,i,r,a,u){if(!d.validateResourceEvent(t,i,r,a,u,s.getAvailableResourceCurrencies(),s.getAvailableResourceItemTypes()))return void c.instance.sendSdkErrorEvent(l.Rejected);t===e.EGAResourceFlowType.Sink&&(r*=-1);var f={},v=n.resourceFlowTypeToString(t);f.event_id=v+":"+i+":"+a+":"+u,f.category=n.CategoryResource,f.amount=r,n.addDimensionsToEvent(f),o.i("Add RESOURCE event: {currency:"+i+", amount:"+r+", itemType:"+a+", itemId:"+u+"}"),n.addEventToStore(f)},n.addProgressionEvent=function(t,i,r,a,u,f){var v=n.progressionStatusToString(t);if(!d.validateProgressionEvent(t,i,r,a))return void c.instance.sendSdkErrorEvent(l.Rejected);var g,m={};g=r?a?i+":"+r+":"+a:i+":"+r:i,m.category=n.CategoryProgression,m.event_id=v+":"+g;var p=0;f&&t!=e.EGAProgressionStatus.Start&&(m.score=u),t===e.EGAProgressionStatus.Fail&&s.incrementProgressionTries(g),t===e.EGAProgressionStatus.Complete&&(s.incrementProgressionTries(g),p=s.getProgressionTries(g),m.attempt_num=p,s.clearProgressionTries(g)),n.addDimensionsToEvent(m),o.i("Add PROGRESSION event: {status:"+v+", progression01:"+i+", progression02:"+r+", progression03:"+a+", score:"+u+", attempt:"+p+"}"),n.addEventToStore(m)},n.addDesignEvent=function(e,t,i){if(!d.validateDesignEvent(e,t))return void c.instance.sendSdkErrorEvent(l.Rejected);var r={};r.category=n.CategoryDesign,r.event_id=e,i&&(r.value=t),o.i("Add DESIGN event: {eventId:"+e+", value:"+t+"}"),n.addEventToStore(r)},n.addErrorEvent=function(e,t){var i=n.errorSeverityToString(e);if(!d.validateErrorEvent(e,t))return void c.instance.sendSdkErrorEvent(l.Rejected);var r={};r.category=n.CategoryError,r.severity=i,r.message=t,o.i("Add ERROR event: {severity:"+i+", message:"+t+"}"),n.addEventToStore(r)},n.processEvents=function(e,s){try{var u=a.createGuid();s&&(n.cleanupEvents(),n.fixMissingSessionEndEvents());var d=[];d.push(["status",r.Equal,"new"]);var l=[];l.push(["status",r.Equal,"new"]),e&&(d.push(["category",r.Equal,e]),l.push(["category",r.Equal,e]));var f=[];f.push(["status",u]);var v=t.select(i.Events,d);if(!v||0==v.length)return void o.i("Event queue: No events to send");if(v.length>n.MaxEventCount){if(!(v=t.select(i.Events,d,!0,n.MaxEventCount)))return;var g=v[v.length-1],m=g.client_ts;if(d.push(["client_ts",r.LessOrEqual,m]),!(v=t.select(i.Events,d)))return;l.push(["client_ts",r.LessOrEqual,m])}if(o.i("Event queue: Sending "+v.length+" events."),!t.update(i.Events,f,l))return;for(var p=[],h=0;h<v.length;++h){var y=v[h],S=JSON.parse(a.decode64(y.event));0!=S.length&&p.push(S)}c.instance.sendEventsInArray(p,u,n.processEventsCallback)}catch(e){o.e("Error during ProcessEvents(): "+e.stack)}},n.processEventsCallback=function(e,s,a,c){var d=[];if(d.push(["status",r.Equal,a]),e===u.Ok)t.delete(i.Events,d),o.i("Event queue: "+c+" events sent.");else if(e===u.NoResponse){var l=[];l.push(["status","new"]),o.w("Event queue: Failed to send events to collector - Retrying next time"),t.update(i.Events,l,d)}else{if(s){var f,v=0;for(var g in s)0==v&&(f=s[g]),++v;e===u.BadRequest&&f.constructor===Array?o.w("Event queue: "+c+" events sent. "+v+" events failed GA server validation."):o.w("Event queue: Failed to send events.")}else o.w("Event queue: Failed to send events.");t.delete(i.Events,d)}n.updateSessionStore()},n.cleanupEvents=function(){t.update(i.Events,[["status","new"]])},n.fixMissingSessionEndEvents=function(){var e=[];e.push(["session_id",r.NotEqual,s.getSessionId()]);var u=t.select(i.Sessions,e);if(u&&0!=u.length){o.i(u.length+" session(s) located with missing session_end event.");for(var c=0;c<u.length;++c){var d=JSON.parse(a.decode64(u[c].event)),l=d.client_ts,f=u[c].timestamp,v=l-f;v=Math.max(0,v),d.category=n.CategorySessionEnd,d.length=v,n.addEventToStore(d)}}},n.addEventToStore=function(e){if(!s.isInitialized())return void o.w("Could not add event: SDK is not initialized");try{if(t.isStoreTooLargeForEvents()&&!a.stringMatch(e.category,/^(user|session_end|business)$/))return void o.w("Database too large. Event has been blocked.");var u=s.getEventAnnotations(),c=a.encode64(JSON.stringify(u));for(var d in e)u[d]=e[d];var l=JSON.stringify(u);o.ii("Event added to queue: "+l);var f={};f.status="new",f.category=u.category,f.session_id=u.session_id,f.client_ts=u.client_ts,f.event=a.encode64(JSON.stringify(u)),t.insert(i.Events,f),e.category==n.CategorySessionEnd?t.delete(i.Sessions,[["session_id",r.Equal,u.session_id]]):(f={},f.session_id=u.session_id,f.timestamp=s.getSessionStart(),f.event=c,t.insert(i.Sessions,f,!0,"session_id")),t.isStorageAvailable()&&t.save()}catch(d){o.e("addEventToStore: error"),o.e(d.stack)}},n.updateSessionStore=function(){if(s.sessionIsStarted()){var e={};e.session_id=s.instance.sessionId,e.timestamp=s.getSessionStart(),e.event=a.encode64(JSON.stringify(s.getEventAnnotations())),t.insert(i.Sessions,e,!0,"session_id"),t.isStorageAvailable()&&t.save()}},n.addDimensionsToEvent=function(e){e&&(s.getCurrentCustomDimension01()&&(e.custom_01=s.getCurrentCustomDimension01()),s.getCurrentCustomDimension02()&&(e.custom_02=s.getCurrentCustomDimension02()),s.getCurrentCustomDimension03()&&(e.custom_03=s.getCurrentCustomDimension03()))},n.resourceFlowTypeToString=function(n){return n==e.EGAResourceFlowType.Source||n==e.EGAResourceFlowType[e.EGAResourceFlowType.Source]?"Source":n==e.EGAResourceFlowType.Sink||n==e.EGAResourceFlowType[e.EGAResourceFlowType.Sink]?"Sink":""},n.progressionStatusToString=function(n){return n==e.EGAProgressionStatus.Start||n==e.EGAProgressionStatus[e.EGAProgressionStatus.Start]?"Start":n==e.EGAProgressionStatus.Complete||n==e.EGAProgressionStatus[e.EGAProgressionStatus.Complete]?"Complete":n==e.EGAProgressionStatus.Fail||n==e.EGAProgressionStatus[e.EGAProgressionStatus.Fail]?"Fail":""},n.errorSeverityToString=function(n){return n==e.EGAErrorSeverity.Debug||n==e.EGAErrorSeverity[e.EGAErrorSeverity.Debug]?"debug":n==e.EGAErrorSeverity.Info||n==e.EGAErrorSeverity[e.EGAErrorSeverity.Info]?"info":n==e.EGAErrorSeverity.Warning||n==e.EGAErrorSeverity[e.EGAErrorSeverity.Warning]?"warning":n==e.EGAErrorSeverity.Error||n==e.EGAErrorSeverity[e.EGAErrorSeverity.Error]?"error":n==e.EGAErrorSeverity.Critical||n==e.EGAErrorSeverity[e.EGAErrorSeverity.Critical]?"critical":""},n}();f.instance=new f,f.CategorySessionStart="user",f.CategorySessionEnd="session_end",f.CategoryDesign="design",f.CategoryBusiness="business",f.CategoryProgression="progression",f.CategoryResource="resource",f.CategoryError="error",f.MaxEventCount=500,n.GAEvents=f}(e.events||(e.events={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){!function(n){var t=e.logging.GALogger,i=e.state.GAState,r=e.events.GAEvents,s=function(){function e(){this.blocks=new n.PriorityQueue({compare:function(e,n){return e-n}}),this.id2TimedBlockMap={},e.startThread()}return e.createTimedBlock=function(e){void 0===e&&(e=0);var t=new Date;return t.setSeconds(t.getSeconds()+e),new n.TimedBlock(t)},e.performTaskOnGAThread=function(t,i){void 0===i&&(i=0);var r=new Date;r.setSeconds(r.getSeconds()+i);var s=new n.TimedBlock(r);s.block=t,e.instance.id2TimedBlockMap[s.id]=s,e.instance.addTimedBlock(s)},e.performTimedBlockOnGAThread=function(n){e.instance.id2TimedBlockMap[n.id]=n,e.instance.addTimedBlock(n)},e.scheduleTimer=function(t,i){var r=new Date;r.setSeconds(r.getSeconds()+t);var s=new n.TimedBlock(r);return s.block=i,e.instance.id2TimedBlockMap[s.id]=s,e.instance.addTimedBlock(s),s.id},e.getTimedBlockById=function(n){return n in e.instance.id2TimedBlockMap?e.instance.id2TimedBlockMap[n]:null},e.ensureEventQueueIsRunning=function(){e.instance.keepRunning=!0,e.instance.isRunning||(e.instance.isRunning=!0,e.scheduleTimer(e.ProcessEventsIntervalInSeconds,e.processEventQueue))},e.endSessionAndStopQueue=function(){i.isInitialized()&&(t.i("Ending session."),e.stopEventQueue(),i.isEnabled()&&i.sessionIsStarted()&&(r.addSessionEndEvent(),i.instance.sessionStart=0))},e.stopEventQueue=function(){e.instance.keepRunning=!1},e.ignoreTimer=function(n){n in e.instance.id2TimedBlockMap&&(e.instance.id2TimedBlockMap[n].ignore=!0)},e.setEventProcessInterval=function(n){n>0&&(e.ProcessEventsIntervalInSeconds=n)},e.prototype.addTimedBlock=function(e){this.blocks.enqueue(e.deadline.getTime(),e)},e.run=function(){clearTimeout(e.runTimeoutId);try{for(var n;n=e.getNextBlock();)if(!n.ignore)if(n.async){if(!n.running){n.running=!0,n.block();break}}else n.block();return void(e.runTimeoutId=setTimeout(e.run,e.ThreadWaitTimeInMs))}catch(e){t.e("Error on GA thread"),t.e(e.stack)}},e.startThread=function(){e.runTimeoutId=setTimeout(e.run,0)},e.getNextBlock=function(){var n=new Date;return e.instance.blocks.hasItems()&&e.instance.blocks.peek().deadline.getTime()<=n.getTime()?e.instance.blocks.peek().async&&e.instance.blocks.peek().running?e.instance.blocks.peek():e.instance.blocks.dequeue():null},e.processEventQueue=function(){r.processEvents("",!0),e.instance.keepRunning?e.scheduleTimer(e.ProcessEventsIntervalInSeconds,e.processEventQueue):e.instance.isRunning=!1},e}();s.instance=new s,s.ThreadWaitTimeInMs=1e3,s.ProcessEventsIntervalInSeconds=8,n.GAThreading=s}(e.threading||(e.threading={}))}(gameanalytics||(gameanalytics={}));var gameanalytics;!function(e){var n=e.threading.GAThreading,t=e.logging.GALogger,i=e.store.GAStore,r=e.state.GAState,s=e.http.GAHTTPApi,o=e.device.GADevice,a=e.validators.GAValidator,u=e.http.EGAHTTPApiResponse,c=e.utilities.GAUtilities,d=e.events.GAEvents,l=function(){function l(){}return l.init=function(){if(o.touch(),l.methodMap.configureAvailableCustomDimensions01=l.configureAvailableCustomDimensions01,l.methodMap.configureAvailableCustomDimensions02=l.configureAvailableCustomDimensions02,l.methodMap.configureAvailableCustomDimensions03=l.configureAvailableCustomDimensions03,l.methodMap.configureAvailableResourceCurrencies=l.configureAvailableResourceCurrencies,l.methodMap.configureAvailableResourceItemTypes=l.configureAvailableResourceItemTypes,l.methodMap.configureBuild=l.configureBuild,l.methodMap.configureSdkGameEngineVersion=l.configureSdkGameEngineVersion,l.methodMap.configureGameEngineVersion=l.configureGameEngineVersion,l.methodMap.configureUserId=l.configureUserId,l.methodMap.initialize=l.initialize,l.methodMap.addBusinessEvent=l.addBusinessEvent,l.methodMap.addResourceEvent=l.addResourceEvent,l.methodMap.addProgressionEvent=l.addProgressionEvent,l.methodMap.addDesignEvent=l.addDesignEvent,l.methodMap.addErrorEvent=l.addErrorEvent,l.methodMap.addErrorEvent=l.addErrorEvent,l.methodMap.setEnabledInfoLog=l.setEnabledInfoLog,l.methodMap.setEnabledVerboseLog=l.setEnabledVerboseLog,l.methodMap.setEnabledManualSessionHandling=l.setEnabledManualSessionHandling,l.methodMap.setCustomDimension01=l.setCustomDimension01,l.methodMap.setCustomDimension02=l.setCustomDimension02,l.methodMap.setCustomDimension03=l.setCustomDimension03,l.methodMap.setFacebookId=l.setFacebookId,l.methodMap.setGender=l.setGender,l.methodMap.setBirthYear=l.setBirthYear,l.methodMap.setEventProcessInterval=l.setEventProcessInterval,l.methodMap.startSession=l.startSession,l.methodMap.endSession=l.endSession,l.methodMap.onStop=l.onStop,l.methodMap.onResume=l.onResume,"undefined"!=typeof window&&void 0!==window.GameAnalytics&&void 0!==window.GameAnalytics.q){var e=window.GameAnalytics.q;for(var n in e)l.gaCommand.apply(null,e[n])}},l.gaCommand=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];n.length>0&&n[0]in e.GameAnalytics.methodMap&&(n.length>1?e.GameAnalytics.methodMap[n[0]].apply(null,Array.prototype.slice.call(n,1)):e.GameAnalytics.methodMap[n[0]]())},l.configureAvailableCustomDimensions01=function(e){void 0===e&&(e=[]),n.performTaskOnGAThread(function(){if(l.isSdkReady(!0,!1))return void t.w("Available custom dimensions must be set before SDK is initialized");r.setAvailableCustomDimensions01(e)})},l.configureAvailableCustomDimensions02=function(e){void 0===e&&(e=[]),n.performTaskOnGAThread(function(){if(l.isSdkReady(!0,!1))return void t.w("Available custom dimensions must be set before SDK is initialized");r.setAvailableCustomDimensions02(e)})},l.configureAvailableCustomDimensions03=function(e){void 0===e&&(e=[]),n.performTaskOnGAThread(function(){if(l.isSdkReady(!0,!1))return void t.w("Available custom dimensions must be set before SDK is initialized");r.setAvailableCustomDimensions03(e)})},l.configureAvailableResourceCurrencies=function(e){void 0===e&&(e=[]),n.performTaskOnGAThread(function(){if(l.isSdkReady(!0,!1))return void t.w("Available resource currencies must be set before SDK is initialized");r.setAvailableResourceCurrencies(e)})},l.configureAvailableResourceItemTypes=function(e){void 0===e&&(e=[]),n.performTaskOnGAThread(function(){if(l.isSdkReady(!0,!1))return void t.w("Available resource item types must be set before SDK is initialized");r.setAvailableResourceItemTypes(e)})},l.configureBuild=function(e){void 0===e&&(e=""),n.performTaskOnGAThread(function(){return l.isSdkReady(!0,!1)?void t.w("Build version must be set before SDK is initialized."):a.validateBuild(e)?void r.setBuild(e):void t.i("Validation fail - configure build: Cannot be null, empty or above 32 length. String: "+e)})},l.configureSdkGameEngineVersion=function(e){void 0===e&&(e=""),n.performTaskOnGAThread(function(){if(!l.isSdkReady(!0,!1))return a.validateSdkWrapperVersion(e)?void(o.sdkGameEngineVersion=e):void t.i("Validation fail - configure sdk version: Sdk version not supported. String: "+e)})},l.configureGameEngineVersion=function(e){void 0===e&&(e=""),n.performTaskOnGAThread(function(){if(!l.isSdkReady(!0,!1))return a.validateEngineVersion(e)?void(o.gameEngineVersion=e):void t.i("Validation fail - configure game engine version: Game engine version not supported. String: "+e)})},l.configureUserId=function(e){void 0===e&&(e=""),n.performTaskOnGAThread(function(){return l.isSdkReady(!0,!1)?void t.w("A custom user id must be set before SDK is initialized."):a.validateUserId(e)?void r.setUserId(e):void t.i("Validation fail - configure user_id: Cannot be null, empty or above 64 length. Will use default user_id method. Used string: "+e)})},l.initialize=function(e,i){void 0===e&&(e=""),void 0===i&&(i=""),o.updateConnectionType();var s=n.createTimedBlock();s.async=!0,l.initTimedBlockId=s.id,s.block=function(){return l.isSdkReady(!0,!1)?void t.w("SDK already initialized. Can only be called once."):a.validateKeys(e,i)?(r.setKeys(e,i),void l.internalInitialize()):void t.w("SDK failed initialize. Game key or secret key is invalid. Can only contain characters A-z 0-9, gameKey is 32 length, gameSecret is 40 length. Failed keys - gameKey: "+e+", secretKey: "+i)},n.performTimedBlockOnGAThread(s)},l.addBusinessEvent=function(e,t,i,r,s){void 0===e&&(e=""),void 0===t&&(t=0),void 0===i&&(i=""),void 0===r&&(r=""),void 0===s&&(s=""),o.updateConnectionType(),n.performTaskOnGAThread(function(){l.isSdkReady(!0,!0,"Could not add business event")&&d.addBusinessEvent(e,t,i,r,s)})},l.addResourceEvent=function(t,i,r,s,a){void 0===t&&(t=e.EGAResourceFlowType.Undefined),void 0===i&&(i=""),void 0===r&&(r=0),void 0===s&&(s=""),void 0===a&&(a=""),o.updateConnectionType(),n.performTaskOnGAThread(function(){l.isSdkReady(!0,!0,"Could not add resource event")&&d.addResourceEvent(t,i,r,s,a)})},l.addProgressionEvent=function(t,i,r,s,a){void 0===t&&(t=e.EGAProgressionStatus.Undefined),void 0===i&&(i=""),void 0===r&&(r=""),void 0===s&&(s=""),o.updateConnectionType(),n.performTaskOnGAThread(function(){if(l.isSdkReady(!0,!0,"Could not add progression event")){var e=void 0!==a;d.addProgressionEvent(t,i,r,s,e?a:0,e)}})},l.addDesignEvent=function(e,t){o.updateConnectionType(),n.performTaskOnGAThread(function(){if(l.isSdkReady(!0,!0,"Could not add design event")){var n=void 0!==t;d.addDesignEvent(e,n?t:0,n)}})},l.addErrorEvent=function(t,i){void 0===t&&(t=e.EGAErrorSeverity.Undefined),void 0===i&&(i=""),o.updateConnectionType(),n.performTaskOnGAThread(function(){l.isSdkReady(!0,!0,"Could not add error event")&&d.addErrorEvent(t,i)})},l.setEnabledInfoLog=function(e){void 0===e&&(e=!1),n.performTaskOnGAThread(function(){e?(t.setInfoLog(e),t.i("Info logging enabled")):(t.i("Info logging disabled"),t.setInfoLog(e))})},l.setEnabledVerboseLog=function(e){void 0===e&&(e=!1),n.performTaskOnGAThread(function(){e?(t.setVerboseLog(e),t.i("Verbose logging enabled")):(t.i("Verbose logging disabled"),t.setVerboseLog(e))})},l.setEnabledManualSessionHandling=function(e){void 0===e&&(e=!1),n.performTaskOnGAThread(function(){r.setManualSessionHandling(e)})},l.setCustomDimension01=function(e){void 0===e&&(e=""),n.performTaskOnGAThread(function(){if(!a.validateDimension01(e,r.getAvailableCustomDimensions01()))return void t.w("Could not set custom01 dimension value to '"+e+"'. Value not found in available custom01 dimension values");r.setCustomDimension01(e)})},l.setCustomDimension02=function(e){void 0===e&&(e=""),n.performTaskOnGAThread(function(){if(!a.validateDimension02(e,r.getAvailableCustomDimensions02()))return void t.w("Could not set custom02 dimension value to '"+e+"'. Value not found in available custom02 dimension values");r.setCustomDimension02(e)})},l.setCustomDimension03=function(e){void 0===e&&(e=""),n.performTaskOnGAThread(function(){if(!a.validateDimension03(e,r.getAvailableCustomDimensions03()))return void t.w("Could not set custom03 dimension value to '"+e+"'. Value not found in available custom03 dimension values");r.setCustomDimension03(e)})},l.setFacebookId=function(e){void 0===e&&(e=""),n.performTaskOnGAThread(function(){a.validateFacebookId(e)&&r.setFacebookId(e)})},l.setGender=function(t){void 0===t&&(t=e.EGAGender.Undefined),n.performTaskOnGAThread(function(){a.validateGender(t)&&r.setGender(t)})},l.setBirthYear=function(e){void 0===e&&(e=0),n.performTaskOnGAThread(function(){a.validateBirthyear(e)&&r.setBirthYear(e)})},l.setEventProcessInterval=function(e){n.performTaskOnGAThread(function(){n.setEventProcessInterval(e)})},l.startSession=function(){if(r.getUseManualSessionHandling()){if(!r.isInitialized())return;var e=n.createTimedBlock();e.async=!0,l.initTimedBlockId=e.id,e.block=function(){r.isEnabled()&&r.sessionIsStarted()&&n.endSessionAndStopQueue(),l.resumeSessionAndStartQueue()},n.performTimedBlockOnGAThread(e)}},l.endSession=function(){r.getUseManualSessionHandling()&&l.onStop()},l.onStop=function(){n.performTaskOnGAThread(function(){try{n.endSessionAndStopQueue()}catch(e){}})},l.onResume=function(){var e=n.createTimedBlock();e.async=!0,l.initTimedBlockId=e.id,e.block=function(){l.resumeSessionAndStartQueue()},n.performTimedBlockOnGAThread(e)},l.internalInitialize=function(){r.ensurePersistedStates(),i.setItem(r.DefaultUserIdKey,r.getDefaultId()),r.setInitialized(!0),l.newSession(),r.isEnabled()&&n.ensureEventQueueIsRunning()},l.newSession=function(){t.i("Starting a new session."),r.validateAndFixCurrentDimensions(),s.instance.requestInit(l.startNewSessionCallback)},l.startNewSessionCallback=function(e,s){if(e===u.Ok&&s){var o=0;if(s.server_ts){var a=s.server_ts;o=r.calculateServerTimeOffset(a)}s.time_offset=o,i.setItem(r.SdkConfigCachedKey,c.encode64(JSON.stringify(s))),r.instance.sdkConfigCached=s,r.instance.sdkConfig=s,r.instance.initAuthorized=!0}else e==u.Unauthorized?(t.w("Initialize SDK failed - Unauthorized"),r.instance.initAuthorized=!1):(e===u.NoResponse||e===u.RequestTimeout?t.i("Init call (session start) failed - no response. Could be offline or timeout."):e===u.BadResponse||e===u.JsonEncodeFailed||e===u.JsonDecodeFailed?t.i("Init call (session start) failed - bad response. Could be bad response from proxy or GA servers."):e!==u.BadRequest&&e!==u.UnknownResponseCode||t.i("Init call (session start) failed - bad request or unknown response."),null==r.instance.sdkConfig?null!=r.instance.sdkConfigCached?(t.i("Init call (session start) failed - using cached init values."),r.instance.sdkConfig=r.instance.sdkConfigCached):(t.i("Init call (session start) failed - using default init values."),
4
- r.instance.sdkConfig=r.instance.sdkConfigDefault):t.i("Init call (session start) failed - using cached init values."),r.instance.initAuthorized=!0);if(r.instance.clientServerTimeOffset=r.instance.sdkConfig.time_offset?r.instance.sdkConfig.time_offset:0,!r.isEnabled())return t.w("Could not start session: SDK is disabled."),void n.stopEventQueue();n.ensureEventQueueIsRunning();var f=c.createGuid();r.instance.sessionId=f,r.instance.sessionStart=r.getClientTsAdjusted(),d.addSessionStartEvent();var v=n.getTimedBlockById(l.initTimedBlockId);null!=v&&(v.running=!1),l.initTimedBlockId=-1},l.resumeSessionAndStartQueue=function(){r.isInitialized()&&(t.i("Resuming session."),r.sessionIsStarted()||l.newSession())},l.isSdkReady=function(e,n,i){return void 0===n&&(n=!0),void 0===i&&(i=""),i&&(i+=": "),e&&!r.isInitialized()?(n&&t.w(i+"SDK is not initialized"),!1):!(e&&!r.isEnabled())||(n&&t.w(i+"SDK is disabled"),!1)},l}();l.initTimedBlockId=-1,l.methodMap={},e.GameAnalytics=l}(gameanalytics||(gameanalytics={})),gameanalytics.GameAnalytics.init();var GameAnalytics=gameanalytics.GameAnalytics.gaCommand;
5
- scope.gameanalytics=gameanalytics;
6
- scope.GameAnalytics=GameAnalytics;
7
- })(this);
 
 
 
 
 
 
 
 
ovo/Tween.js DELETED
@@ -1,814 +0,0 @@
1
- /**
2
- * Tween.js - Licensed under the MIT license
3
- * https://github.com/tweenjs/tween.js
4
- * ----------------------------------------------
5
- *
6
- * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.
7
- * Thank you all, you're awesome!
8
- */
9
-
10
- var TWEEN = TWEEN || (function () {
11
-
12
- var _tweens = [];
13
-
14
- return {
15
-
16
- getAll: function () {
17
-
18
- return _tweens;
19
-
20
- },
21
-
22
- removeAll: function () {
23
-
24
- _tweens = [];
25
-
26
- },
27
-
28
- add: function (tween) {
29
-
30
- _tweens.push(tween);
31
-
32
- },
33
-
34
- remove: function (tween) {
35
-
36
- var i = _tweens.indexOf(tween);
37
-
38
- if (i !== -1) {
39
- _tweens.splice(i, 1);
40
- }
41
-
42
- },
43
-
44
- update: function (time, preserve) {
45
-
46
- if (_tweens.length === 0) {
47
- return false;
48
- }
49
-
50
- var i = 0;
51
-
52
- time = time !== undefined ? time : TWEEN.now();
53
-
54
- while (i < _tweens.length) {
55
-
56
- if (_tweens[i].update(time) || preserve) {
57
- i++;
58
- } else {
59
- _tweens.splice(i, 1);
60
- }
61
-
62
- }
63
-
64
- return true;
65
-
66
- }
67
- };
68
-
69
- })();
70
-
71
-
72
- // Include a performance.now polyfill.
73
- // In node.js, use process.hrtime.
74
- if (typeof (window) === 'undefined' && typeof (process) !== 'undefined') {
75
- TWEEN.now = function () {
76
- var time = process.hrtime();
77
-
78
- // Convert [seconds, nanoseconds] to milliseconds.
79
- return time[0] * 1000 + time[1] / 1000000;
80
- };
81
- }
82
- // In a browser, use window.performance.now if it is available.
83
- else if (typeof (window) !== 'undefined' &&
84
- window.performance !== undefined &&
85
- window.performance.now !== undefined) {
86
- // This must be bound, because directly assigning this function
87
- // leads to an invocation exception in Chrome.
88
- TWEEN.now = window.performance.now.bind(window.performance);
89
- }
90
- // Use Date.now if it is available.
91
- else if (Date.now !== undefined) {
92
- TWEEN.now = Date.now;
93
- }
94
- // Otherwise, use 'new Date().getTime()'.
95
- else {
96
- TWEEN.now = function () {
97
- return new Date().getTime();
98
- };
99
- }
100
-
101
-
102
- TWEEN.Tween = function (object) {
103
-
104
- var _object = null;
105
- if(object) _object = object;
106
-
107
-
108
- var _duration = 1000;
109
- var _time = 0;
110
- var _startTime = null;
111
-
112
- var _reversed = false;
113
- this.isPlaying = false;
114
-
115
-
116
- var _easingFunction = TWEEN.Easing.Linear.None;
117
- var _interpolationFunction = TWEEN.Interpolation.Linear;
118
-
119
-
120
- var _valuesStartOrigin = null;
121
- var _valuesEndOrigin = null;
122
- var _valuesStart = {};
123
- var _valuesEnd = {};
124
-
125
-
126
-
127
- var _isReset = true;
128
-
129
-
130
-
131
- var _deltas = {};
132
- var _deltas_init = {};
133
-
134
- var _onCompleteCallback = null;
135
- var _onCompleteCallbackScope = null;
136
- var _onReverseCompleteCallback = null;
137
- var _onReverseCompleteCallbackScope = null;
138
-
139
-
140
- this.setObject = function (object) {
141
- if(object)
142
- _object = object;
143
- };
144
-
145
- //Computes new deltas to tween to
146
- this.to = function (properties, duration) {
147
- _isReset = true;
148
- if (duration !== undefined) {
149
- _duration = duration;
150
- }
151
-
152
- var property, start=0, end=0;
153
- for (property in properties)
154
- {
155
- if (_object[property] === undefined) {
156
- continue;
157
- }
158
-
159
- start = _object[property];
160
- end = properties[property];
161
- _deltas[property] = end - start;
162
- _deltas_init[property] = _deltas[property];
163
- }
164
-
165
- return this;
166
- };
167
-
168
-
169
- this.reverse = function () {
170
-
171
- var property;
172
-
173
- if(this.isPlaying){
174
- this.isPlaying = false;
175
- for (property in _deltas) {
176
- if(_reversed){
177
- _deltas[property] = (1-_value)*_deltas[property];
178
- }else{
179
- _deltas[property] = _deltas_init[property]-(1-_value)*_deltas[property];
180
- }
181
- }
182
-
183
- if(_reversed){
184
- //console.log("start reverse, currently playing, reverse");
185
- }else{
186
- //console.log("start reverse, currently playing, no reverse");
187
- }
188
- }else{
189
- //console.log("start reverse, currently not playing; ");
190
- for (property in _deltas)
191
- {
192
- _deltas[property] = _deltas_init[property];
193
- }
194
- }
195
-
196
- _isReset = false;
197
- _prevValue = 0;
198
- _reversed = true;
199
- _time = TWEEN.now();
200
- _startTime = TWEEN.now();
201
- this.isPlaying = true;
202
-
203
-
204
- return this;
205
- };
206
-
207
- this.start = function (time) {
208
- var property;
209
-
210
-
211
- if(this.isPlaying){
212
- this.isPlaying = false;
213
-
214
- if(!_isReset){
215
- for (property in _deltas) {
216
- if(_reversed){
217
- _deltas[property] = _deltas_init[property]-(1-_value)*_deltas[property];
218
- }else{
219
- _deltas[property] = (1-_value)*_deltas[property];
220
- }
221
- }
222
- }
223
-
224
-
225
- if(_reversed){
226
- //console.log("start, currently playing, reverse");
227
- }else{
228
- //console.log("start, currently playing, no reverse");
229
- }
230
- }else{
231
- //console.log("start, currently not playing; ");
232
- for (property in _deltas)
233
- {
234
- _deltas[property] = _deltas_init[property];
235
- }
236
- }
237
-
238
-
239
-
240
- _isReset = false;
241
- _reversed = false;
242
- _prevValue = 0;
243
- _time = TWEEN.now();
244
- _startTime = _time;
245
- this.isPlaying = true;
246
-
247
-
248
- return this;
249
- };
250
-
251
-
252
-
253
-
254
- var _value = 0; //from 0 to 1 ; output of the tween function
255
- var _dvalue = 0; //delta _value and the one of the previous dt
256
- var _prevValue = 0; //_value of the previous dt
257
-
258
- this.update = function (dt) {
259
-
260
- var property;
261
- var elapsed; //% of the duration; from 0 to 1;
262
-
263
- _time = _time + dt;
264
- if (_time < _startTime) {
265
- return true;
266
- }
267
- elapsed = (_time - _startTime) / _duration;
268
- elapsed = elapsed > 1 ? 1 : elapsed;
269
-
270
-
271
- _value = _easingFunction(elapsed);
272
- _dvalue = _value - _prevValue;
273
- _prevValue = _value;
274
-
275
- var dv = 0;
276
-
277
- for (property in _deltas) {
278
- if(_reversed){
279
- _object[property] += -_dvalue*_deltas[property];
280
- }else{
281
- _object[property] += _dvalue*_deltas[property];
282
- }
283
-
284
-
285
- /*_object[property] = start + dValues[property] * value;
286
- dv = (start + (end - start) * value) - _object[property];*/
287
- }
288
-
289
-
290
-
291
- if (elapsed === 1) {
292
- if (_onCompleteCallback !== null && !_reversed) {
293
- if(_onCompleteCallbackScope!=null){
294
- _onCompleteCallback.call(_onCompleteCallbackScope);
295
- }else{
296
- _onCompleteCallback.call(_object, _object);
297
- }
298
-
299
- }
300
-
301
- if ((_onReverseCompleteCallback !== null) && _reversed) {
302
- if(_onReverseCompleteCallbackScope!=null){
303
- _onReverseCompleteCallback.call(_onReverseCompleteCallbackScope);
304
- }else{
305
- _onReverseCompleteCallback.call(_object, _object);
306
- }
307
- }
308
-
309
- this.isPlaying = false;
310
- return false;
311
- }
312
-
313
- return true;
314
-
315
- };
316
-
317
-
318
-
319
-
320
-
321
-
322
- this.onComplete = function (callback,scope) {
323
- _onCompleteCallback = callback;
324
- _onCompleteCallbackScope = scope;
325
- return this;
326
- };
327
-
328
- this.onReverseComplete = function (callback,scope) {
329
-
330
- _onReverseCompleteCallback = callback;
331
- _onReverseCompleteCallbackScope = scope;
332
- return this;
333
-
334
- };
335
-
336
-
337
- this.easing = function (easing) {
338
-
339
- _easingFunction = easing;
340
- return this;
341
-
342
- };
343
-
344
- this.interpolation = function (interpolation) {
345
-
346
- _interpolationFunction = interpolation;
347
- return this;
348
-
349
- };
350
-
351
- };
352
-
353
- TWEEN.Easing = {
354
-
355
- Linear: {
356
-
357
- None: function (k) {
358
-
359
- return k;
360
-
361
- }
362
-
363
- },
364
-
365
- Quadratic: {
366
-
367
- In: function (k) {
368
-
369
- return k * k;
370
-
371
- },
372
-
373
- Out: function (k) {
374
-
375
- return k * (2 - k);
376
-
377
- },
378
-
379
- InOut: function (k) {
380
-
381
- if ((k *= 2) < 1) {
382
- return 0.5 * k * k;
383
- }
384
-
385
- return - 0.5 * (--k * (k - 2) - 1);
386
-
387
- }
388
-
389
- },
390
-
391
- Cubic: {
392
-
393
- In: function (k) {
394
-
395
- return k * k * k;
396
-
397
- },
398
-
399
- Out: function (k) {
400
-
401
- return --k * k * k + 1;
402
-
403
- },
404
-
405
- InOut: function (k) {
406
-
407
- if ((k *= 2) < 1) {
408
- return 0.5 * k * k * k;
409
- }
410
-
411
- return 0.5 * ((k -= 2) * k * k + 2);
412
-
413
- }
414
-
415
- },
416
-
417
- Quartic: {
418
-
419
- In: function (k) {
420
-
421
- return k * k * k * k;
422
-
423
- },
424
-
425
- Out: function (k) {
426
-
427
- return 1 - (--k * k * k * k);
428
-
429
- },
430
-
431
- InOut: function (k) {
432
-
433
- if ((k *= 2) < 1) {
434
- return 0.5 * k * k * k * k;
435
- }
436
-
437
- return - 0.5 * ((k -= 2) * k * k * k - 2);
438
-
439
- }
440
-
441
- },
442
-
443
- Quintic: {
444
-
445
- In: function (k) {
446
-
447
- return k * k * k * k * k;
448
-
449
- },
450
-
451
- Out: function (k) {
452
-
453
- return --k * k * k * k * k + 1;
454
-
455
- },
456
-
457
- InOut: function (k) {
458
-
459
- if ((k *= 2) < 1) {
460
- return 0.5 * k * k * k * k * k;
461
- }
462
-
463
- return 0.5 * ((k -= 2) * k * k * k * k + 2);
464
-
465
- }
466
-
467
- },
468
-
469
- Sinusoidal: {
470
-
471
- In: function (k) {
472
-
473
- return 1 - Math.cos(k * Math.PI / 2);
474
-
475
- },
476
-
477
- Out: function (k) {
478
-
479
- return Math.sin(k * Math.PI / 2);
480
-
481
- },
482
-
483
- InOut: function (k) {
484
-
485
- return 0.5 * (1 - Math.cos(Math.PI * k));
486
-
487
- }
488
-
489
- },
490
-
491
- Exponential: {
492
-
493
- In: function (k) {
494
-
495
- return k === 0 ? 0 : Math.pow(1024, k - 1);
496
-
497
- },
498
-
499
- Out: function (k) {
500
-
501
- return k === 1 ? 1 : 1 - Math.pow(2, - 10 * k);
502
-
503
- },
504
-
505
- InOut: function (k) {
506
-
507
- if (k === 0) {
508
- return 0;
509
- }
510
-
511
- if (k === 1) {
512
- return 1;
513
- }
514
-
515
- if ((k *= 2) < 1) {
516
- return 0.5 * Math.pow(1024, k - 1);
517
- }
518
-
519
- return 0.5 * (- Math.pow(2, - 10 * (k - 1)) + 2);
520
-
521
- }
522
-
523
- },
524
-
525
- Circular: {
526
-
527
- In: function (k) {
528
-
529
- return 1 - Math.sqrt(1 - k * k);
530
-
531
- },
532
-
533
- Out: function (k) {
534
-
535
- return Math.sqrt(1 - (--k * k));
536
-
537
- },
538
-
539
- InOut: function (k) {
540
-
541
- if ((k *= 2) < 1) {
542
- return - 0.5 * (Math.sqrt(1 - k * k) - 1);
543
- }
544
-
545
- return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);
546
-
547
- }
548
-
549
- },
550
-
551
- Elastic: {
552
-
553
- In: function (k) {
554
-
555
- if (k === 0) {
556
- return 0;
557
- }
558
-
559
- if (k === 1) {
560
- return 1;
561
- }
562
-
563
- return -Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);
564
-
565
- },
566
-
567
- Out: function (k) {
568
-
569
- if (k === 0) {
570
- return 0;
571
- }
572
-
573
- if (k === 1) {
574
- return 1;
575
- }
576
-
577
- return Math.pow(2, -10 * k) * Math.sin((k - 0.1) * 5 * Math.PI) + 1;
578
-
579
- },
580
-
581
- InOut: function (k) {
582
-
583
- if (k === 0) {
584
- return 0;
585
- }
586
-
587
- if (k === 1) {
588
- return 1;
589
- }
590
-
591
- k *= 2;
592
-
593
- if (k < 1) {
594
- return -0.5 * Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);
595
- }
596
-
597
- return 0.5 * Math.pow(2, -10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI) + 1;
598
-
599
- }
600
-
601
- },
602
-
603
- Back: {
604
-
605
- In: function (k) {
606
-
607
- var s = 1.70158;
608
-
609
- return k * k * ((s + 1) * k - s);
610
-
611
- },
612
-
613
- Out: function (k) {
614
-
615
- var s = 1.70158;
616
-
617
- return --k * k * ((s + 1) * k + s) + 1;
618
-
619
- },
620
-
621
- InOut: function (k) {
622
-
623
- var s = 1.70158 * 1.525;
624
-
625
- if ((k *= 2) < 1) {
626
- return 0.5 * (k * k * ((s + 1) * k - s));
627
- }
628
-
629
- return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);
630
-
631
- }
632
-
633
- },
634
-
635
- Bounce: {
636
-
637
- In: function (k) {
638
-
639
- return 1 - TWEEN.Easing.Bounce.Out(1 - k);
640
-
641
- },
642
-
643
- Out: function (k) {
644
-
645
- if (k < (1 / 2.75)) {
646
- return 7.5625 * k * k;
647
- } else if (k < (2 / 2.75)) {
648
- return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;
649
- } else if (k < (2.5 / 2.75)) {
650
- return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;
651
- } else {
652
- return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;
653
- }
654
-
655
- },
656
-
657
- InOut: function (k) {
658
-
659
- if (k < 0.5) {
660
- return TWEEN.Easing.Bounce.In(k * 2) * 0.5;
661
- }
662
-
663
- return TWEEN.Easing.Bounce.Out(k * 2 - 1) * 0.5 + 0.5;
664
-
665
- }
666
-
667
- }
668
-
669
- };
670
-
671
- TWEEN.Interpolation = {
672
-
673
- Linear: function (v, k) {
674
-
675
- var m = v.length - 1;
676
- var f = m * k;
677
- var i = Math.floor(f);
678
- var fn = TWEEN.Interpolation.Utils.Linear;
679
-
680
- if (k < 0) {
681
- return fn(v[0], v[1], f);
682
- }
683
-
684
- if (k > 1) {
685
- return fn(v[m], v[m - 1], m - f);
686
- }
687
-
688
- return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);
689
-
690
- },
691
-
692
- Bezier: function (v, k) {
693
-
694
- var b = 0;
695
- var n = v.length - 1;
696
- var pw = Math.pow;
697
- var bn = TWEEN.Interpolation.Utils.Bernstein;
698
-
699
- for (var i = 0; i <= n; i++) {
700
- b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);
701
- }
702
-
703
- return b;
704
-
705
- },
706
-
707
- CatmullRom: function (v, k) {
708
-
709
- var m = v.length - 1;
710
- var f = m * k;
711
- var i = Math.floor(f);
712
- var fn = TWEEN.Interpolation.Utils.CatmullRom;
713
-
714
- if (v[0] === v[m]) {
715
-
716
- if (k < 0) {
717
- i = Math.floor(f = m * (1 + k));
718
- }
719
-
720
- return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);
721
-
722
- } else {
723
-
724
- if (k < 0) {
725
- return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);
726
- }
727
-
728
- if (k > 1) {
729
- return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);
730
- }
731
-
732
- return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);
733
-
734
- }
735
-
736
- },
737
-
738
- Utils: {
739
-
740
- Linear: function (p0, p1, t) {
741
-
742
- return (p1 - p0) * t + p0;
743
-
744
- },
745
-
746
- Bernstein: function (n, i) {
747
-
748
- var fc = TWEEN.Interpolation.Utils.Factorial;
749
-
750
- return fc(n) / fc(i) / fc(n - i);
751
-
752
- },
753
-
754
- Factorial: (function () {
755
-
756
- var a = [1];
757
-
758
- return function (n) {
759
-
760
- var s = 1;
761
-
762
- if (a[n]) {
763
- return a[n];
764
- }
765
-
766
- for (var i = n; i > 1; i--) {
767
- s *= i;
768
- }
769
-
770
- a[n] = s;
771
- return s;
772
-
773
- };
774
-
775
- })(),
776
-
777
- CatmullRom: function (p0, p1, p2, p3, t) {
778
-
779
- var v0 = (p2 - p0) * 0.5;
780
- var v1 = (p3 - p1) * 0.5;
781
- var t2 = t * t;
782
- var t3 = t * t2;
783
-
784
- return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;
785
-
786
- }
787
-
788
- }
789
-
790
- };
791
-
792
- // UMD (Universal Module Definition)
793
- (function (root) {
794
-
795
- if (typeof define === 'function' && define.amd) {
796
-
797
- // AMD
798
- define([], function () {
799
- return TWEEN;
800
- });
801
-
802
- } else if (typeof module !== 'undefined' && typeof exports === 'object') {
803
-
804
- // Node.js
805
- module.exports = TWEEN;
806
-
807
- } else if (root !== undefined) {
808
-
809
- // Global variable
810
- root.TWEEN = TWEEN;
811
-
812
- }
813
-
814
- })(this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ovo/achievements.json DELETED
@@ -1,222 +0,0 @@
1
- [
2
- {
3
- "name": "OvO",
4
- "description": "What's this?",
5
- "hidden": false,
6
- "icon": "ovo.png",
7
- "callback": "Skins > Gold",
8
- "params": "5,achievements,0",
9
- "divider": ",",
10
- "type": "n,s,n"
11
- },
12
- {
13
- "name": "Hittin da head",
14
- "description": "Stop it please",
15
- "hidden": true,
16
- "icon": "ovo2.png",
17
- "callback": "Skins > Gold",
18
- "params": "10,achievements,1",
19
- "divider": ",",
20
- "type": "n,s,n"
21
- },
22
- {
23
- "name": "Hurtin da head",
24
- "description": ":(",
25
- "hidden": true,
26
- "icon": "ovo3.png",
27
- "callback": "Skins > Gold",
28
- "params": "20,achievements,2",
29
- "divider": ",",
30
- "type": "n,s,n"
31
- },
32
- {
33
- "name": "Tutorials",
34
- "description": "Finish the tutorial section",
35
- "hidden": false,
36
- "icon": "tutorials.png",
37
- "callback": "Skins > Gold",
38
- "params": "5,achievements,3",
39
- "divider": ",",
40
- "type": "n,s,n"
41
- },
42
- {
43
- "name": "Getting Serious",
44
- "description": "Finish the getting serious section",
45
- "hidden": false,
46
- "icon": "gettingserious.png",
47
- "callback": "Skins > Gold",
48
- "params": "5,achievements,3",
49
- "divider": ",",
50
- "type": "n,s,n"
51
- },
52
- {
53
- "name": "Higher Order",
54
- "description": "Finish the higher order section",
55
- "hidden": false,
56
- "icon": "higherorder.png",
57
- "callback": "Skins > Unlock",
58
- "params": "4",
59
- "divider": ",",
60
- "type": "n"
61
- },
62
- {
63
- "name": "Mechanics",
64
- "description": "Finish the mechanics section",
65
- "hidden": false,
66
- "icon": "mechanics.png",
67
- "callback": "Skins > Unlock",
68
- "params": "1",
69
- "divider": ",",
70
- "type": "n"
71
- },
72
- {
73
- "name": "OvO Space Program",
74
- "description": "Finish the OvO Space Program section",
75
- "hidden": false,
76
- "icon": "ovospaceprogram.png",
77
- "callback": "Skins > Unlock",
78
- "params": "8",
79
- "divider": ",",
80
- "type": "n"
81
- },
82
- {
83
- "name": "A mystical journey",
84
- "description": "Finish the Journey through the portal section",
85
- "hidden": false,
86
- "icon": "jttp.png",
87
- "callback": "Skins > Unlock",
88
- "params": "14",
89
- "divider": ",",
90
- "type": "n"
91
- },
92
- {
93
- "name": "Community Work",
94
- "description": "Finish the Community levels",
95
- "hidden": false,
96
- "icon": "community.png",
97
- "callback": "Skins > Unlock",
98
- "params": "15",
99
- "divider": ",",
100
- "type": "n"
101
- },
102
- {
103
- "name": "Purified",
104
- "description": "Finish every level",
105
- "hidden": false,
106
- "icon": "purified.png",
107
- "callback": "Skins > Unlock",
108
- "params": "11",
109
- "divider": ",",
110
- "type": "n"
111
- },
112
- {
113
- "name": "Coins!",
114
- "description": "Collect a coin",
115
- "hidden": false,
116
- "icon": "coin.png",
117
- "callback": "",
118
- "params": "",
119
- "divider": ",",
120
- "type": ""
121
- },
122
- {
123
- "name": "Coin enthusiast",
124
- "description": "Collect 5 coins",
125
- "hidden": false,
126
- "icon": "coin5.png",
127
- "callback": "",
128
- "params": "",
129
- "divider": ",",
130
- "type": ""
131
- },
132
- {
133
- "name": "Coin connoisseur",
134
- "description": "Collect 10 coins",
135
- "hidden": false,
136
- "icon": "coin10.png",
137
- "callback": "",
138
- "params": "",
139
- "divider": ",",
140
- "type": ""
141
- },
142
- {
143
- "name": "Coin hunter",
144
- "description": "Collect 30 coins",
145
- "hidden": false,
146
- "icon": "coin30.png",
147
- "callback": "",
148
- "params": "",
149
- "divider": ",",
150
- "type": "n"
151
- },
152
- {
153
- "name": "Coin god",
154
- "description": "Collect 40 coins",
155
- "hidden": false,
156
- "icon": "coin40.png",
157
- "callback": "Skins > Unlock",
158
- "params": "7",
159
- "divider": ",",
160
- "type": "n"
161
- },
162
- {
163
- "name": "Secret Coin",
164
- "description": "Collect the secret coin",
165
- "hidden": true,
166
- "icon": "coinsecret.png",
167
- "callback": "",
168
- "params": "",
169
- "divider": ",",
170
- "type": "n"
171
- },
172
- {
173
- "name": "Runner",
174
- "description": "Finish OvO in less than 30mn",
175
- "hidden": false,
176
- "icon": "runner.png",
177
- "callback": "",
178
- "params": "",
179
- "divider": ",",
180
- "type": "n"
181
- },
182
- {
183
- "name": "Speedrunner",
184
- "description": "Finish OvO in less than 20mn",
185
- "hidden": false,
186
- "icon": "speedrunner.png",
187
- "callback": "",
188
- "params": "",
189
- "divider": ",",
190
- "type": "n"
191
- },
192
- {
193
- "name": "Velocity master",
194
- "description": "Finish OvO in less than 15mn",
195
- "hidden": false,
196
- "icon": "velocity.png",
197
- "callback": "",
198
- "params": "",
199
- "divider": ",",
200
- "type": "n"
201
- },
202
- {
203
- "name": "Top charts",
204
- "description": "Finish OvO in less than 12mn",
205
- "hidden": false,
206
- "icon": "topcharts.png",
207
- "callback": "Skins > Unlock",
208
- "params": "13",
209
- "divider": ",",
210
- "type": "n"
211
- },
212
- {
213
- "name": "Light speed",
214
- "description": "Finish OvO in less than 10mn",
215
- "hidden": false,
216
- "icon": "lightspeed.png",
217
- "callback": "",
218
- "params": "",
219
- "divider": ",",
220
- "type": "n"
221
- }
222
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ovo/ada.png DELETED
Binary file (548 Bytes)
 
ovo/adconfig.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "networks": [
3
- "Poki",
4
- "CrazyGames",
5
- "GamePix",
6
- "GameDistribution",
7
- "GameMonetize",
8
- "CoolMathGames"
9
- ],
10
- "name": "",
11
- "gameId": "1377b99c10284c229423118a941af3b1",
12
- "removeSocials": false,
13
- "stopAudioInBackground": false,
14
- "removeMidrollRewarded": true,
15
- "noReligion": false
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ovo/alien.png DELETED
Binary file (459 Bytes)
 
ovo/amongus.png DELETED
Binary file (1.88 kB)
 
ovo/animate.css DELETED
@@ -1,3504 +0,0 @@
1
- @charset "UTF-8";
2
-
3
- /*!
4
- * animate.css -http://daneden.me/animate
5
- * Version - 3.5.0
6
- * Licensed under the MIT license - http://opensource.org/licenses/MIT
7
- *
8
- * Copyright (c) 2015 Daniel Eden
9
- */
10
-
11
- .animated {
12
- -webkit-animation-duration: 1s;
13
- animation-duration: 1s;
14
- -webkit-animation-fill-mode: both;
15
- animation-fill-mode: both;
16
- }
17
-
18
- .animated.infinite {
19
- -webkit-animation-iteration-count: infinite;
20
- animation-iteration-count: infinite;
21
- }
22
-
23
- .animated.hinge {
24
- -webkit-animation-duration: 2s;
25
- animation-duration: 2s;
26
- }
27
-
28
- .animated.flipOutX,
29
- .animated.flipOutY,
30
- .animated.bounceIn,
31
- .animated.bounceOut {
32
- -webkit-animation-duration: .75s;
33
- animation-duration: .75s;
34
- }
35
-
36
- @-webkit-keyframes bounce {
37
- from, 20%, 53%, 80%, to {
38
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
39
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
40
- -webkit-transform: translate3d(0,0,0);
41
- transform: translate3d(0,0,0);
42
- }
43
-
44
- 40%, 43% {
45
- -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
46
- animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
47
- -webkit-transform: translate3d(0, -30px, 0);
48
- transform: translate3d(0, -30px, 0);
49
- }
50
-
51
- 70% {
52
- -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
53
- animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
54
- -webkit-transform: translate3d(0, -15px, 0);
55
- transform: translate3d(0, -15px, 0);
56
- }
57
-
58
- 90% {
59
- -webkit-transform: translate3d(0,-4px,0);
60
- transform: translate3d(0,-4px,0);
61
- }
62
- }
63
-
64
- @keyframes bounce {
65
- from, 20%, 53%, 80%, to {
66
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
67
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
68
- -webkit-transform: translate3d(0,0,0);
69
- transform: translate3d(0,0,0);
70
- }
71
-
72
- 40%, 43% {
73
- -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
74
- animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
75
- -webkit-transform: translate3d(0, -30px, 0);
76
- transform: translate3d(0, -30px, 0);
77
- }
78
-
79
- 70% {
80
- -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
81
- animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
82
- -webkit-transform: translate3d(0, -15px, 0);
83
- transform: translate3d(0, -15px, 0);
84
- }
85
-
86
- 90% {
87
- -webkit-transform: translate3d(0,-4px,0);
88
- transform: translate3d(0,-4px,0);
89
- }
90
- }
91
-
92
- .bounce {
93
- -webkit-animation-name: bounce;
94
- animation-name: bounce;
95
- -webkit-transform-origin: center bottom;
96
- transform-origin: center bottom;
97
- }
98
-
99
- @-webkit-keyframes flash {
100
- from, 50%, to {
101
- opacity: 1;
102
- }
103
-
104
- 25%, 75% {
105
- opacity: 0;
106
- }
107
- }
108
-
109
- @keyframes flash {
110
- from, 50%, to {
111
- opacity: 1;
112
- }
113
-
114
- 25%, 75% {
115
- opacity: 0;
116
- }
117
- }
118
-
119
- .flash {
120
- -webkit-animation-name: flash;
121
- animation-name: flash;
122
- }
123
-
124
- /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
125
-
126
- @-webkit-keyframes pulse {
127
- from {
128
- -webkit-transform: scale3d(1, 1, 1);
129
- transform: scale3d(1, 1, 1);
130
- }
131
-
132
- 50% {
133
- -webkit-transform: scale3d(1.05, 1.05, 1.05);
134
- transform: scale3d(1.05, 1.05, 1.05);
135
- }
136
-
137
- to {
138
- -webkit-transform: scale3d(1, 1, 1);
139
- transform: scale3d(1, 1, 1);
140
- }
141
- }
142
-
143
- @keyframes pulse {
144
- from {
145
- -webkit-transform: scale3d(1, 1, 1);
146
- transform: scale3d(1, 1, 1);
147
- }
148
-
149
- 50% {
150
- -webkit-transform: scale3d(1.05, 1.05, 1.05);
151
- transform: scale3d(1.05, 1.05, 1.05);
152
- }
153
-
154
- to {
155
- -webkit-transform: scale3d(1, 1, 1);
156
- transform: scale3d(1, 1, 1);
157
- }
158
- }
159
-
160
- .pulse {
161
- -webkit-animation-name: pulse;
162
- animation-name: pulse;
163
- }
164
-
165
- @-webkit-keyframes rubberBand {
166
- from {
167
- -webkit-transform: scale3d(1, 1, 1);
168
- transform: scale3d(1, 1, 1);
169
- }
170
-
171
- 30% {
172
- -webkit-transform: scale3d(1.25, 0.75, 1);
173
- transform: scale3d(1.25, 0.75, 1);
174
- }
175
-
176
- 40% {
177
- -webkit-transform: scale3d(0.75, 1.25, 1);
178
- transform: scale3d(0.75, 1.25, 1);
179
- }
180
-
181
- 50% {
182
- -webkit-transform: scale3d(1.15, 0.85, 1);
183
- transform: scale3d(1.15, 0.85, 1);
184
- }
185
-
186
- 65% {
187
- -webkit-transform: scale3d(.95, 1.05, 1);
188
- transform: scale3d(.95, 1.05, 1);
189
- }
190
-
191
- 75% {
192
- -webkit-transform: scale3d(1.05, .95, 1);
193
- transform: scale3d(1.05, .95, 1);
194
- }
195
-
196
- to {
197
- -webkit-transform: scale3d(1, 1, 1);
198
- transform: scale3d(1, 1, 1);
199
- }
200
- }
201
-
202
- @keyframes rubberBand {
203
- from {
204
- -webkit-transform: scale3d(1, 1, 1);
205
- transform: scale3d(1, 1, 1);
206
- }
207
-
208
- 30% {
209
- -webkit-transform: scale3d(1.25, 0.75, 1);
210
- transform: scale3d(1.25, 0.75, 1);
211
- }
212
-
213
- 40% {
214
- -webkit-transform: scale3d(0.75, 1.25, 1);
215
- transform: scale3d(0.75, 1.25, 1);
216
- }
217
-
218
- 50% {
219
- -webkit-transform: scale3d(1.15, 0.85, 1);
220
- transform: scale3d(1.15, 0.85, 1);
221
- }
222
-
223
- 65% {
224
- -webkit-transform: scale3d(.95, 1.05, 1);
225
- transform: scale3d(.95, 1.05, 1);
226
- }
227
-
228
- 75% {
229
- -webkit-transform: scale3d(1.05, .95, 1);
230
- transform: scale3d(1.05, .95, 1);
231
- }
232
-
233
- to {
234
- -webkit-transform: scale3d(1, 1, 1);
235
- transform: scale3d(1, 1, 1);
236
- }
237
- }
238
-
239
- .rubberBand {
240
- -webkit-animation-name: rubberBand;
241
- animation-name: rubberBand;
242
- }
243
-
244
- @-webkit-keyframes shake {
245
- from, to {
246
- -webkit-transform: translate3d(0, 0, 0);
247
- transform: translate3d(0, 0, 0);
248
- }
249
-
250
- 10%, 30%, 50%, 70%, 90% {
251
- -webkit-transform: translate3d(-10px, 0, 0);
252
- transform: translate3d(-10px, 0, 0);
253
- }
254
-
255
- 20%, 40%, 60%, 80% {
256
- -webkit-transform: translate3d(10px, 0, 0);
257
- transform: translate3d(10px, 0, 0);
258
- }
259
- }
260
-
261
- @keyframes shake {
262
- from, to {
263
- -webkit-transform: translate3d(0, 0, 0);
264
- transform: translate3d(0, 0, 0);
265
- }
266
-
267
- 10%, 30%, 50%, 70%, 90% {
268
- -webkit-transform: translate3d(-10px, 0, 0);
269
- transform: translate3d(-10px, 0, 0);
270
- }
271
-
272
- 20%, 40%, 60%, 80% {
273
- -webkit-transform: translate3d(10px, 0, 0);
274
- transform: translate3d(10px, 0, 0);
275
- }
276
- }
277
-
278
- .shake {
279
- -webkit-animation-name: shake;
280
- animation-name: shake;
281
- }
282
-
283
- @-webkit-keyframes headShake {
284
- 0% {
285
- -webkit-transform: translateX(0);
286
- transform: translateX(0);
287
- }
288
-
289
- 6.5% {
290
- -webkit-transform: translateX(-6px) rotateY(-9deg);
291
- transform: translateX(-6px) rotateY(-9deg);
292
- }
293
-
294
- 18.5% {
295
- -webkit-transform: translateX(5px) rotateY(7deg);
296
- transform: translateX(5px) rotateY(7deg);
297
- }
298
-
299
- 31.5% {
300
- -webkit-transform: translateX(-3px) rotateY(-5deg);
301
- transform: translateX(-3px) rotateY(-5deg);
302
- }
303
-
304
- 43.5% {
305
- -webkit-transform: translateX(2px) rotateY(3deg);
306
- transform: translateX(2px) rotateY(3deg);
307
- }
308
-
309
- 50% {
310
- -webkit-transform: translateX(0);
311
- transform: translateX(0);
312
- }
313
- }
314
-
315
- @keyframes headShake {
316
- 0% {
317
- -webkit-transform: translateX(0);
318
- transform: translateX(0);
319
- }
320
-
321
- 6.5% {
322
- -webkit-transform: translateX(-6px) rotateY(-9deg);
323
- transform: translateX(-6px) rotateY(-9deg);
324
- }
325
-
326
- 18.5% {
327
- -webkit-transform: translateX(5px) rotateY(7deg);
328
- transform: translateX(5px) rotateY(7deg);
329
- }
330
-
331
- 31.5% {
332
- -webkit-transform: translateX(-3px) rotateY(-5deg);
333
- transform: translateX(-3px) rotateY(-5deg);
334
- }
335
-
336
- 43.5% {
337
- -webkit-transform: translateX(2px) rotateY(3deg);
338
- transform: translateX(2px) rotateY(3deg);
339
- }
340
-
341
- 50% {
342
- -webkit-transform: translateX(0);
343
- transform: translateX(0);
344
- }
345
- }
346
-
347
- .headShake {
348
- -webkit-animation-timing-function: ease-in-out;
349
- animation-timing-function: ease-in-out;
350
- -webkit-animation-name: headShake;
351
- animation-name: headShake;
352
- }
353
-
354
- @-webkit-keyframes swing {
355
- 20% {
356
- -webkit-transform: rotate3d(0, 0, 1, 15deg);
357
- transform: rotate3d(0, 0, 1, 15deg);
358
- }
359
-
360
- 40% {
361
- -webkit-transform: rotate3d(0, 0, 1, -10deg);
362
- transform: rotate3d(0, 0, 1, -10deg);
363
- }
364
-
365
- 60% {
366
- -webkit-transform: rotate3d(0, 0, 1, 5deg);
367
- transform: rotate3d(0, 0, 1, 5deg);
368
- }
369
-
370
- 80% {
371
- -webkit-transform: rotate3d(0, 0, 1, -5deg);
372
- transform: rotate3d(0, 0, 1, -5deg);
373
- }
374
-
375
- to {
376
- -webkit-transform: rotate3d(0, 0, 1, 0deg);
377
- transform: rotate3d(0, 0, 1, 0deg);
378
- }
379
- }
380
-
381
- @keyframes swing {
382
- 20% {
383
- -webkit-transform: rotate3d(0, 0, 1, 15deg);
384
- transform: rotate3d(0, 0, 1, 15deg);
385
- }
386
-
387
- 40% {
388
- -webkit-transform: rotate3d(0, 0, 1, -10deg);
389
- transform: rotate3d(0, 0, 1, -10deg);
390
- }
391
-
392
- 60% {
393
- -webkit-transform: rotate3d(0, 0, 1, 5deg);
394
- transform: rotate3d(0, 0, 1, 5deg);
395
- }
396
-
397
- 80% {
398
- -webkit-transform: rotate3d(0, 0, 1, -5deg);
399
- transform: rotate3d(0, 0, 1, -5deg);
400
- }
401
-
402
- to {
403
- -webkit-transform: rotate3d(0, 0, 1, 0deg);
404
- transform: rotate3d(0, 0, 1, 0deg);
405
- }
406
- }
407
-
408
- .swing {
409
- -webkit-transform-origin: top center;
410
- transform-origin: top center;
411
- -webkit-animation-name: swing;
412
- animation-name: swing;
413
- }
414
-
415
- @-webkit-keyframes tada {
416
- from {
417
- -webkit-transform: scale3d(1, 1, 1);
418
- transform: scale3d(1, 1, 1);
419
- }
420
-
421
- 10%, 20% {
422
- -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
423
- transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
424
- }
425
-
426
- 30%, 50%, 70%, 90% {
427
- -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
428
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
429
- }
430
-
431
- 40%, 60%, 80% {
432
- -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
433
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
434
- }
435
-
436
- to {
437
- -webkit-transform: scale3d(1, 1, 1);
438
- transform: scale3d(1, 1, 1);
439
- }
440
- }
441
-
442
- @keyframes tada {
443
- from {
444
- -webkit-transform: scale3d(1, 1, 1);
445
- transform: scale3d(1, 1, 1);
446
- }
447
-
448
- 10%, 20% {
449
- -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
450
- transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
451
- }
452
-
453
- 30%, 50%, 70%, 90% {
454
- -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
455
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
456
- }
457
-
458
- 40%, 60%, 80% {
459
- -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
460
- transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
461
- }
462
-
463
- to {
464
- -webkit-transform: scale3d(1, 1, 1);
465
- transform: scale3d(1, 1, 1);
466
- }
467
- }
468
-
469
- .tada {
470
- -webkit-animation-name: tada;
471
- animation-name: tada;
472
- }
473
-
474
- /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
475
-
476
- @-webkit-keyframes wobble {
477
- from {
478
- -webkit-transform: none;
479
- transform: none;
480
- }
481
-
482
- 15% {
483
- -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
484
- transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
485
- }
486
-
487
- 30% {
488
- -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
489
- transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
490
- }
491
-
492
- 45% {
493
- -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
494
- transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
495
- }
496
-
497
- 60% {
498
- -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
499
- transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
500
- }
501
-
502
- 75% {
503
- -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
504
- transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
505
- }
506
-
507
- to {
508
- -webkit-transform: none;
509
- transform: none;
510
- }
511
- }
512
-
513
- @keyframes wobble {
514
- from {
515
- -webkit-transform: none;
516
- transform: none;
517
- }
518
-
519
- 15% {
520
- -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
521
- transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
522
- }
523
-
524
- 30% {
525
- -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
526
- transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
527
- }
528
-
529
- 45% {
530
- -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
531
- transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
532
- }
533
-
534
- 60% {
535
- -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
536
- transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
537
- }
538
-
539
- 75% {
540
- -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
541
- transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
542
- }
543
-
544
- to {
545
- -webkit-transform: none;
546
- transform: none;
547
- }
548
- }
549
-
550
- .wobble {
551
- -webkit-animation-name: wobble;
552
- animation-name: wobble;
553
- }
554
-
555
- @-webkit-keyframes jello {
556
- from, 11.1%, to {
557
- -webkit-transform: none;
558
- transform: none;
559
- }
560
-
561
- 22.2% {
562
- -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
563
- transform: skewX(-12.5deg) skewY(-12.5deg);
564
- }
565
-
566
- 33.3% {
567
- -webkit-transform: skewX(6.25deg) skewY(6.25deg);
568
- transform: skewX(6.25deg) skewY(6.25deg);
569
- }
570
-
571
- 44.4% {
572
- -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
573
- transform: skewX(-3.125deg) skewY(-3.125deg);
574
- }
575
-
576
- 55.5% {
577
- -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
578
- transform: skewX(1.5625deg) skewY(1.5625deg);
579
- }
580
-
581
- 66.6% {
582
- -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
583
- transform: skewX(-0.78125deg) skewY(-0.78125deg);
584
- }
585
-
586
- 77.7% {
587
- -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
588
- transform: skewX(0.390625deg) skewY(0.390625deg);
589
- }
590
-
591
- 88.8% {
592
- -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
593
- transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
594
- }
595
- }
596
-
597
- @keyframes jello {
598
- from, 11.1%, to {
599
- -webkit-transform: none;
600
- transform: none;
601
- }
602
-
603
- 22.2% {
604
- -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
605
- transform: skewX(-12.5deg) skewY(-12.5deg);
606
- }
607
-
608
- 33.3% {
609
- -webkit-transform: skewX(6.25deg) skewY(6.25deg);
610
- transform: skewX(6.25deg) skewY(6.25deg);
611
- }
612
-
613
- 44.4% {
614
- -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
615
- transform: skewX(-3.125deg) skewY(-3.125deg);
616
- }
617
-
618
- 55.5% {
619
- -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
620
- transform: skewX(1.5625deg) skewY(1.5625deg);
621
- }
622
-
623
- 66.6% {
624
- -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
625
- transform: skewX(-0.78125deg) skewY(-0.78125deg);
626
- }
627
-
628
- 77.7% {
629
- -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
630
- transform: skewX(0.390625deg) skewY(0.390625deg);
631
- }
632
-
633
- 88.8% {
634
- -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
635
- transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
636
- }
637
- }
638
-
639
- .jello {
640
- -webkit-animation-name: jello;
641
- animation-name: jello;
642
- -webkit-transform-origin: center;
643
- transform-origin: center;
644
- }
645
-
646
- @-webkit-keyframes bounceIn {
647
- from, 20%, 40%, 60%, 80%, to {
648
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
649
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
650
- }
651
-
652
- 0% {
653
- opacity: 0;
654
- -webkit-transform: scale3d(.3, .3, .3);
655
- transform: scale3d(.3, .3, .3);
656
- }
657
-
658
- 20% {
659
- -webkit-transform: scale3d(1.1, 1.1, 1.1);
660
- transform: scale3d(1.1, 1.1, 1.1);
661
- }
662
-
663
- 40% {
664
- -webkit-transform: scale3d(.9, .9, .9);
665
- transform: scale3d(.9, .9, .9);
666
- }
667
-
668
- 60% {
669
- opacity: 1;
670
- -webkit-transform: scale3d(1.03, 1.03, 1.03);
671
- transform: scale3d(1.03, 1.03, 1.03);
672
- }
673
-
674
- 80% {
675
- -webkit-transform: scale3d(.97, .97, .97);
676
- transform: scale3d(.97, .97, .97);
677
- }
678
-
679
- to {
680
- opacity: 1;
681
- -webkit-transform: scale3d(1, 1, 1);
682
- transform: scale3d(1, 1, 1);
683
- }
684
- }
685
-
686
- @keyframes bounceIn {
687
- from, 20%, 40%, 60%, 80%, to {
688
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
689
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
690
- }
691
-
692
- 0% {
693
- opacity: 0;
694
- -webkit-transform: scale3d(.3, .3, .3);
695
- transform: scale3d(.3, .3, .3);
696
- }
697
-
698
- 20% {
699
- -webkit-transform: scale3d(1.1, 1.1, 1.1);
700
- transform: scale3d(1.1, 1.1, 1.1);
701
- }
702
-
703
- 40% {
704
- -webkit-transform: scale3d(.9, .9, .9);
705
- transform: scale3d(.9, .9, .9);
706
- }
707
-
708
- 60% {
709
- opacity: 1;
710
- -webkit-transform: scale3d(1.03, 1.03, 1.03);
711
- transform: scale3d(1.03, 1.03, 1.03);
712
- }
713
-
714
- 80% {
715
- -webkit-transform: scale3d(.97, .97, .97);
716
- transform: scale3d(.97, .97, .97);
717
- }
718
-
719
- to {
720
- opacity: 1;
721
- -webkit-transform: scale3d(1, 1, 1);
722
- transform: scale3d(1, 1, 1);
723
- }
724
- }
725
-
726
- .bounceIn {
727
- -webkit-animation-name: bounceIn;
728
- animation-name: bounceIn;
729
- }
730
-
731
- @-webkit-keyframes bounceInDown {
732
- from, 60%, 75%, 90%, to {
733
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
734
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
735
- }
736
-
737
- 0% {
738
- opacity: 0;
739
- -webkit-transform: translate3d(0, -3000px, 0);
740
- transform: translate3d(0, -3000px, 0);
741
- }
742
-
743
- 60% {
744
- opacity: 1;
745
- -webkit-transform: translate3d(0, 25px, 0);
746
- transform: translate3d(0, 25px, 0);
747
- }
748
-
749
- 75% {
750
- -webkit-transform: translate3d(0, -10px, 0);
751
- transform: translate3d(0, -10px, 0);
752
- }
753
-
754
- 90% {
755
- -webkit-transform: translate3d(0, 5px, 0);
756
- transform: translate3d(0, 5px, 0);
757
- }
758
-
759
- to {
760
- -webkit-transform: none;
761
- transform: none;
762
- }
763
- }
764
-
765
- @keyframes bounceInDown {
766
- from, 60%, 75%, 90%, to {
767
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
768
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
769
- }
770
-
771
- 0% {
772
- opacity: 0;
773
- -webkit-transform: translate3d(0, -3000px, 0);
774
- transform: translate3d(0, -3000px, 0);
775
- }
776
-
777
- 60% {
778
- opacity: 1;
779
- -webkit-transform: translate3d(0, 25px, 0);
780
- transform: translate3d(0, 25px, 0);
781
- }
782
-
783
- 75% {
784
- -webkit-transform: translate3d(0, -10px, 0);
785
- transform: translate3d(0, -10px, 0);
786
- }
787
-
788
- 90% {
789
- -webkit-transform: translate3d(0, 5px, 0);
790
- transform: translate3d(0, 5px, 0);
791
- }
792
-
793
- to {
794
- -webkit-transform: none;
795
- transform: none;
796
- }
797
- }
798
-
799
- .bounceInDown {
800
- -webkit-animation-name: bounceInDown;
801
- animation-name: bounceInDown;
802
- }
803
-
804
- @-webkit-keyframes bounceInLeft {
805
- from, 60%, 75%, 90%, to {
806
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
807
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
808
- }
809
-
810
- 0% {
811
- opacity: 0;
812
- -webkit-transform: translate3d(-3000px, 0, 0);
813
- transform: translate3d(-3000px, 0, 0);
814
- }
815
-
816
- 60% {
817
- opacity: 1;
818
- -webkit-transform: translate3d(25px, 0, 0);
819
- transform: translate3d(25px, 0, 0);
820
- }
821
-
822
- 75% {
823
- -webkit-transform: translate3d(-10px, 0, 0);
824
- transform: translate3d(-10px, 0, 0);
825
- }
826
-
827
- 90% {
828
- -webkit-transform: translate3d(5px, 0, 0);
829
- transform: translate3d(5px, 0, 0);
830
- }
831
-
832
- to {
833
- -webkit-transform: none;
834
- transform: none;
835
- }
836
- }
837
-
838
- @keyframes bounceInLeft {
839
- from, 60%, 75%, 90%, to {
840
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
841
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
842
- }
843
-
844
- 0% {
845
- opacity: 0;
846
- -webkit-transform: translate3d(-3000px, 0, 0);
847
- transform: translate3d(-3000px, 0, 0);
848
- }
849
-
850
- 60% {
851
- opacity: 1;
852
- -webkit-transform: translate3d(25px, 0, 0);
853
- transform: translate3d(25px, 0, 0);
854
- }
855
-
856
- 75% {
857
- -webkit-transform: translate3d(-10px, 0, 0);
858
- transform: translate3d(-10px, 0, 0);
859
- }
860
-
861
- 90% {
862
- -webkit-transform: translate3d(5px, 0, 0);
863
- transform: translate3d(5px, 0, 0);
864
- }
865
-
866
- to {
867
- -webkit-transform: none;
868
- transform: none;
869
- }
870
- }
871
-
872
- .bounceInLeft {
873
- -webkit-animation-name: bounceInLeft;
874
- animation-name: bounceInLeft;
875
- }
876
-
877
- @-webkit-keyframes bounceInRight {
878
- from, 60%, 75%, 90%, to {
879
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
880
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
881
- }
882
-
883
- from {
884
- opacity: 0;
885
- -webkit-transform: translate3d(3000px, 0, 0);
886
- transform: translate3d(3000px, 0, 0);
887
- }
888
-
889
- 60% {
890
- opacity: 1;
891
- -webkit-transform: translate3d(-25px, 0, 0);
892
- transform: translate3d(-25px, 0, 0);
893
- }
894
-
895
- 75% {
896
- -webkit-transform: translate3d(10px, 0, 0);
897
- transform: translate3d(10px, 0, 0);
898
- }
899
-
900
- 90% {
901
- -webkit-transform: translate3d(-5px, 0, 0);
902
- transform: translate3d(-5px, 0, 0);
903
- }
904
-
905
- to {
906
- -webkit-transform: none;
907
- transform: none;
908
- }
909
- }
910
-
911
- @keyframes bounceInRight {
912
- from, 60%, 75%, 90%, to {
913
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
914
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
915
- }
916
-
917
- from {
918
- opacity: 0;
919
- -webkit-transform: translate3d(3000px, 0, 0);
920
- transform: translate3d(3000px, 0, 0);
921
- }
922
-
923
- 60% {
924
- opacity: 1;
925
- -webkit-transform: translate3d(-25px, 0, 0);
926
- transform: translate3d(-25px, 0, 0);
927
- }
928
-
929
- 75% {
930
- -webkit-transform: translate3d(10px, 0, 0);
931
- transform: translate3d(10px, 0, 0);
932
- }
933
-
934
- 90% {
935
- -webkit-transform: translate3d(-5px, 0, 0);
936
- transform: translate3d(-5px, 0, 0);
937
- }
938
-
939
- to {
940
- -webkit-transform: none;
941
- transform: none;
942
- }
943
- }
944
-
945
- .bounceInRight {
946
- -webkit-animation-name: bounceInRight;
947
- animation-name: bounceInRight;
948
- }
949
-
950
- @-webkit-keyframes bounceInUp {
951
- from, 60%, 75%, 90%, to {
952
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
953
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
954
- }
955
-
956
- from {
957
- opacity: 0;
958
- -webkit-transform: translate3d(0, 3000px, 0);
959
- transform: translate3d(0, 3000px, 0);
960
- }
961
-
962
- 60% {
963
- opacity: 1;
964
- -webkit-transform: translate3d(0, -20px, 0);
965
- transform: translate3d(0, -20px, 0);
966
- }
967
-
968
- 75% {
969
- -webkit-transform: translate3d(0, 10px, 0);
970
- transform: translate3d(0, 10px, 0);
971
- }
972
-
973
- 90% {
974
- -webkit-transform: translate3d(0, -5px, 0);
975
- transform: translate3d(0, -5px, 0);
976
- }
977
-
978
- to {
979
- -webkit-transform: translate3d(0, 0, 0);
980
- transform: translate3d(0, 0, 0);
981
- }
982
- }
983
-
984
- @keyframes bounceInUp {
985
- from, 60%, 75%, 90%, to {
986
- -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
987
- animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
988
- }
989
-
990
- from {
991
- opacity: 0;
992
- -webkit-transform: translate3d(0, 3000px, 0);
993
- transform: translate3d(0, 3000px, 0);
994
- }
995
-
996
- 60% {
997
- opacity: 1;
998
- -webkit-transform: translate3d(0, -20px, 0);
999
- transform: translate3d(0, -20px, 0);
1000
- }
1001
-
1002
- 75% {
1003
- -webkit-transform: translate3d(0, 10px, 0);
1004
- transform: translate3d(0, 10px, 0);
1005
- }
1006
-
1007
- 90% {
1008
- -webkit-transform: translate3d(0, -5px, 0);
1009
- transform: translate3d(0, -5px, 0);
1010
- }
1011
-
1012
- to {
1013
- -webkit-transform: translate3d(0, 0, 0);
1014
- transform: translate3d(0, 0, 0);
1015
- }
1016
- }
1017
-
1018
- .bounceInUp {
1019
- -webkit-animation-name: bounceInUp;
1020
- animation-name: bounceInUp;
1021
- }
1022
-
1023
- @-webkit-keyframes bounceOut {
1024
- 20% {
1025
- -webkit-transform: scale3d(.9, .9, .9);
1026
- transform: scale3d(.9, .9, .9);
1027
- }
1028
-
1029
- 50%, 55% {
1030
- opacity: 1;
1031
- -webkit-transform: scale3d(1.1, 1.1, 1.1);
1032
- transform: scale3d(1.1, 1.1, 1.1);
1033
- }
1034
-
1035
- to {
1036
- opacity: 0;
1037
- -webkit-transform: scale3d(.3, .3, .3);
1038
- transform: scale3d(.3, .3, .3);
1039
- }
1040
- }
1041
-
1042
- @keyframes bounceOut {
1043
- 20% {
1044
- -webkit-transform: scale3d(.9, .9, .9);
1045
- transform: scale3d(.9, .9, .9);
1046
- }
1047
-
1048
- 50%, 55% {
1049
- opacity: 1;
1050
- -webkit-transform: scale3d(1.1, 1.1, 1.1);
1051
- transform: scale3d(1.1, 1.1, 1.1);
1052
- }
1053
-
1054
- to {
1055
- opacity: 0;
1056
- -webkit-transform: scale3d(.3, .3, .3);
1057
- transform: scale3d(.3, .3, .3);
1058
- }
1059
- }
1060
-
1061
- .bounceOut {
1062
- -webkit-animation-name: bounceOut;
1063
- animation-name: bounceOut;
1064
- }
1065
-
1066
- @-webkit-keyframes bounceOutDown {
1067
- 20% {
1068
- -webkit-transform: translate3d(0, 10px, 0);
1069
- transform: translate3d(0, 10px, 0);
1070
- }
1071
-
1072
- 40%, 45% {
1073
- opacity: 1;
1074
- -webkit-transform: translate3d(0, -20px, 0);
1075
- transform: translate3d(0, -20px, 0);
1076
- }
1077
-
1078
- to {
1079
- opacity: 0;
1080
- -webkit-transform: translate3d(0, 2000px, 0);
1081
- transform: translate3d(0, 2000px, 0);
1082
- }
1083
- }
1084
-
1085
- @keyframes bounceOutDown {
1086
- 20% {
1087
- -webkit-transform: translate3d(0, 10px, 0);
1088
- transform: translate3d(0, 10px, 0);
1089
- }
1090
-
1091
- 40%, 45% {
1092
- opacity: 1;
1093
- -webkit-transform: translate3d(0, -20px, 0);
1094
- transform: translate3d(0, -20px, 0);
1095
- }
1096
-
1097
- to {
1098
- opacity: 0;
1099
- -webkit-transform: translate3d(0, 2000px, 0);
1100
- transform: translate3d(0, 2000px, 0);
1101
- }
1102
- }
1103
-
1104
- .bounceOutDown {
1105
- -webkit-animation-name: bounceOutDown;
1106
- animation-name: bounceOutDown;
1107
- }
1108
-
1109
- @-webkit-keyframes bounceOutLeft {
1110
- 20% {
1111
- opacity: 1;
1112
- -webkit-transform: translate3d(20px, 0, 0);
1113
- transform: translate3d(20px, 0, 0);
1114
- }
1115
-
1116
- to {
1117
- opacity: 0;
1118
- -webkit-transform: translate3d(-2000px, 0, 0);
1119
- transform: translate3d(-2000px, 0, 0);
1120
- }
1121
- }
1122
-
1123
- @keyframes bounceOutLeft {
1124
- 20% {
1125
- opacity: 1;
1126
- -webkit-transform: translate3d(20px, 0, 0);
1127
- transform: translate3d(20px, 0, 0);
1128
- }
1129
-
1130
- to {
1131
- opacity: 0;
1132
- -webkit-transform: translate3d(-2000px, 0, 0);
1133
- transform: translate3d(-2000px, 0, 0);
1134
- }
1135
- }
1136
-
1137
- .bounceOutLeft {
1138
- -webkit-animation-name: bounceOutLeft;
1139
- animation-name: bounceOutLeft;
1140
- }
1141
-
1142
- @-webkit-keyframes bounceOutRight {
1143
- 20% {
1144
- opacity: 1;
1145
- -webkit-transform: translate3d(-20px, 0, 0);
1146
- transform: translate3d(-20px, 0, 0);
1147
- }
1148
-
1149
- to {
1150
- opacity: 0;
1151
- -webkit-transform: translate3d(2000px, 0, 0);
1152
- transform: translate3d(2000px, 0, 0);
1153
- }
1154
- }
1155
-
1156
- @keyframes bounceOutRight {
1157
- 20% {
1158
- opacity: 1;
1159
- -webkit-transform: translate3d(-20px, 0, 0);
1160
- transform: translate3d(-20px, 0, 0);
1161
- }
1162
-
1163
- to {
1164
- opacity: 0;
1165
- -webkit-transform: translate3d(2000px, 0, 0);
1166
- transform: translate3d(2000px, 0, 0);
1167
- }
1168
- }
1169
-
1170
- .bounceOutRight {
1171
- -webkit-animation-name: bounceOutRight;
1172
- animation-name: bounceOutRight;
1173
- }
1174
-
1175
- @-webkit-keyframes bounceOutUp {
1176
- 20% {
1177
- -webkit-transform: translate3d(0, -10px, 0);
1178
- transform: translate3d(0, -10px, 0);
1179
- }
1180
-
1181
- 40%, 45% {
1182
- opacity: 1;
1183
- -webkit-transform: translate3d(0, 20px, 0);
1184
- transform: translate3d(0, 20px, 0);
1185
- }
1186
-
1187
- to {
1188
- opacity: 0;
1189
- -webkit-transform: translate3d(0, -2000px, 0);
1190
- transform: translate3d(0, -2000px, 0);
1191
- }
1192
- }
1193
-
1194
- @keyframes bounceOutUp {
1195
- 20% {
1196
- -webkit-transform: translate3d(0, -10px, 0);
1197
- transform: translate3d(0, -10px, 0);
1198
- }
1199
-
1200
- 40%, 45% {
1201
- opacity: 1;
1202
- -webkit-transform: translate3d(0, 20px, 0);
1203
- transform: translate3d(0, 20px, 0);
1204
- }
1205
-
1206
- to {
1207
- opacity: 0;
1208
- -webkit-transform: translate3d(0, -2000px, 0);
1209
- transform: translate3d(0, -2000px, 0);
1210
- }
1211
- }
1212
-
1213
- .bounceOutUp {
1214
- -webkit-animation-name: bounceOutUp;
1215
- animation-name: bounceOutUp;
1216
- }
1217
-
1218
- @-webkit-keyframes fadeIn {
1219
- from {
1220
- opacity: 0;
1221
- }
1222
-
1223
- to {
1224
- opacity: 1;
1225
- }
1226
- }
1227
-
1228
- @keyframes fadeIn {
1229
- from {
1230
- opacity: 0;
1231
- }
1232
-
1233
- to {
1234
- opacity: 1;
1235
- }
1236
- }
1237
-
1238
- .fadeIn {
1239
- -webkit-animation-name: fadeIn;
1240
- animation-name: fadeIn;
1241
- }
1242
-
1243
- @-webkit-keyframes fadeInDown {
1244
- from {
1245
- opacity: 0;
1246
- -webkit-transform: translate3d(0, -100%, 0);
1247
- transform: translate3d(0, -100%, 0);
1248
- }
1249
-
1250
- to {
1251
- opacity: 1;
1252
- -webkit-transform: none;
1253
- transform: none;
1254
- }
1255
- }
1256
-
1257
- @keyframes fadeInDown {
1258
- from {
1259
- opacity: 0;
1260
- -webkit-transform: translate3d(0, -100%, 0);
1261
- transform: translate3d(0, -100%, 0);
1262
- }
1263
-
1264
- to {
1265
- opacity: 1;
1266
- -webkit-transform: none;
1267
- transform: none;
1268
- }
1269
- }
1270
-
1271
- .fadeInDown {
1272
- -webkit-animation-name: fadeInDown;
1273
- animation-name: fadeInDown;
1274
- }
1275
-
1276
- @-webkit-keyframes fadeInDownBig {
1277
- from {
1278
- opacity: 0;
1279
- -webkit-transform: translate3d(0, -2000px, 0);
1280
- transform: translate3d(0, -2000px, 0);
1281
- }
1282
-
1283
- to {
1284
- opacity: 1;
1285
- -webkit-transform: none;
1286
- transform: none;
1287
- }
1288
- }
1289
-
1290
- @keyframes fadeInDownBig {
1291
- from {
1292
- opacity: 0;
1293
- -webkit-transform: translate3d(0, -2000px, 0);
1294
- transform: translate3d(0, -2000px, 0);
1295
- }
1296
-
1297
- to {
1298
- opacity: 1;
1299
- -webkit-transform: none;
1300
- transform: none;
1301
- }
1302
- }
1303
-
1304
- .fadeInDownBig {
1305
- -webkit-animation-name: fadeInDownBig;
1306
- animation-name: fadeInDownBig;
1307
- }
1308
-
1309
- @-webkit-keyframes fadeInLeft {
1310
- from {
1311
- opacity: 0;
1312
- -webkit-transform: translate3d(-100%, 0, 0);
1313
- transform: translate3d(-100%, 0, 0);
1314
- }
1315
-
1316
- to {
1317
- opacity: 1;
1318
- -webkit-transform: none;
1319
- transform: none;
1320
- }
1321
- }
1322
-
1323
- @keyframes fadeInLeft {
1324
- from {
1325
- opacity: 0;
1326
- -webkit-transform: translate3d(-100%, 0, 0);
1327
- transform: translate3d(-100%, 0, 0);
1328
- }
1329
-
1330
- to {
1331
- opacity: 1;
1332
- -webkit-transform: none;
1333
- transform: none;
1334
- }
1335
- }
1336
-
1337
- .fadeInLeft {
1338
- -webkit-animation-name: fadeInLeft;
1339
- animation-name: fadeInLeft;
1340
- }
1341
-
1342
- @-webkit-keyframes fadeInLeftBig {
1343
- from {
1344
- opacity: 0;
1345
- -webkit-transform: translate3d(-2000px, 0, 0);
1346
- transform: translate3d(-2000px, 0, 0);
1347
- }
1348
-
1349
- to {
1350
- opacity: 1;
1351
- -webkit-transform: none;
1352
- transform: none;
1353
- }
1354
- }
1355
-
1356
- @keyframes fadeInLeftBig {
1357
- from {
1358
- opacity: 0;
1359
- -webkit-transform: translate3d(-2000px, 0, 0);
1360
- transform: translate3d(-2000px, 0, 0);
1361
- }
1362
-
1363
- to {
1364
- opacity: 1;
1365
- -webkit-transform: none;
1366
- transform: none;
1367
- }
1368
- }
1369
-
1370
- .fadeInLeftBig {
1371
- -webkit-animation-name: fadeInLeftBig;
1372
- animation-name: fadeInLeftBig;
1373
- }
1374
-
1375
- @-webkit-keyframes fadeInRight {
1376
- from {
1377
- opacity: 0;
1378
- -webkit-transform: translate3d(100%, 0, 0);
1379
- transform: translate3d(100%, 0, 0);
1380
- }
1381
-
1382
- to {
1383
- opacity: 1;
1384
- -webkit-transform: none;
1385
- transform: none;
1386
- }
1387
- }
1388
-
1389
- @keyframes fadeInRight {
1390
- from {
1391
- opacity: 0;
1392
- -webkit-transform: translate3d(100%, 0, 0);
1393
- transform: translate3d(100%, 0, 0);
1394
- }
1395
-
1396
- to {
1397
- opacity: 1;
1398
- -webkit-transform: none;
1399
- transform: none;
1400
- }
1401
- }
1402
-
1403
- .fadeInRight {
1404
- -webkit-animation-name: fadeInRight;
1405
- animation-name: fadeInRight;
1406
- }
1407
-
1408
- @-webkit-keyframes fadeInRightBig {
1409
- from {
1410
- opacity: 0;
1411
- -webkit-transform: translate3d(2000px, 0, 0);
1412
- transform: translate3d(2000px, 0, 0);
1413
- }
1414
-
1415
- to {
1416
- opacity: 1;
1417
- -webkit-transform: none;
1418
- transform: none;
1419
- }
1420
- }
1421
-
1422
- @keyframes fadeInRightBig {
1423
- from {
1424
- opacity: 0;
1425
- -webkit-transform: translate3d(2000px, 0, 0);
1426
- transform: translate3d(2000px, 0, 0);
1427
- }
1428
-
1429
- to {
1430
- opacity: 1;
1431
- -webkit-transform: none;
1432
- transform: none;
1433
- }
1434
- }
1435
-
1436
- .fadeInRightBig {
1437
- -webkit-animation-name: fadeInRightBig;
1438
- animation-name: fadeInRightBig;
1439
- }
1440
-
1441
- @-webkit-keyframes fadeInUp {
1442
- from {
1443
- opacity: 0;
1444
- -webkit-transform: translate3d(0, 100%, 0);
1445
- transform: translate3d(0, 100%, 0);
1446
- }
1447
-
1448
- to {
1449
- opacity: 1;
1450
- -webkit-transform: none;
1451
- transform: none;
1452
- }
1453
- }
1454
-
1455
- @keyframes fadeInUp {
1456
- from {
1457
- opacity: 0;
1458
- -webkit-transform: translate3d(0, 100%, 0);
1459
- transform: translate3d(0, 100%, 0);
1460
- }
1461
-
1462
- to {
1463
- opacity: 1;
1464
- -webkit-transform: none;
1465
- transform: none;
1466
- }
1467
- }
1468
-
1469
- .fadeInUp {
1470
- -webkit-animation-name: fadeInUp;
1471
- animation-name: fadeInUp;
1472
- }
1473
-
1474
- @-webkit-keyframes fadeInUpBig {
1475
- from {
1476
- opacity: 0;
1477
- -webkit-transform: translate3d(0, 2000px, 0);
1478
- transform: translate3d(0, 2000px, 0);
1479
- }
1480
-
1481
- to {
1482
- opacity: 1;
1483
- -webkit-transform: none;
1484
- transform: none;
1485
- }
1486
- }
1487
-
1488
- @keyframes fadeInUpBig {
1489
- from {
1490
- opacity: 0;
1491
- -webkit-transform: translate3d(0, 2000px, 0);
1492
- transform: translate3d(0, 2000px, 0);
1493
- }
1494
-
1495
- to {
1496
- opacity: 1;
1497
- -webkit-transform: none;
1498
- transform: none;
1499
- }
1500
- }
1501
-
1502
- .fadeInUpBig {
1503
- -webkit-animation-name: fadeInUpBig;
1504
- animation-name: fadeInUpBig;
1505
- }
1506
-
1507
- @-webkit-keyframes fadeOut {
1508
- from {
1509
- opacity: 1;
1510
- }
1511
-
1512
- to {
1513
- opacity: 0;
1514
- }
1515
- }
1516
-
1517
- @keyframes fadeOut {
1518
- from {
1519
- opacity: 1;
1520
- }
1521
-
1522
- to {
1523
- opacity: 0;
1524
- }
1525
- }
1526
-
1527
- .fadeOut {
1528
- -webkit-animation-name: fadeOut;
1529
- animation-name: fadeOut;
1530
- }
1531
-
1532
- @-webkit-keyframes fadeOutDown {
1533
- from {
1534
- opacity: 1;
1535
- }
1536
-
1537
- to {
1538
- opacity: 0;
1539
- -webkit-transform: translate3d(0, 100%, 0);
1540
- transform: translate3d(0, 100%, 0);
1541
- }
1542
- }
1543
-
1544
- @keyframes fadeOutDown {
1545
- from {
1546
- opacity: 1;
1547
- }
1548
-
1549
- to {
1550
- opacity: 0;
1551
- -webkit-transform: translate3d(0, 100%, 0);
1552
- transform: translate3d(0, 100%, 0);
1553
- }
1554
- }
1555
-
1556
- .fadeOutDown {
1557
- -webkit-animation-name: fadeOutDown;
1558
- animation-name: fadeOutDown;
1559
- }
1560
-
1561
- @-webkit-keyframes fadeOutDownBig {
1562
- from {
1563
- opacity: 1;
1564
- }
1565
-
1566
- to {
1567
- opacity: 0;
1568
- -webkit-transform: translate3d(0, 2000px, 0);
1569
- transform: translate3d(0, 2000px, 0);
1570
- }
1571
- }
1572
-
1573
- @keyframes fadeOutDownBig {
1574
- from {
1575
- opacity: 1;
1576
- }
1577
-
1578
- to {
1579
- opacity: 0;
1580
- -webkit-transform: translate3d(0, 2000px, 0);
1581
- transform: translate3d(0, 2000px, 0);
1582
- }
1583
- }
1584
-
1585
- .fadeOutDownBig {
1586
- -webkit-animation-name: fadeOutDownBig;
1587
- animation-name: fadeOutDownBig;
1588
- }
1589
-
1590
- @-webkit-keyframes fadeOutLeft {
1591
- from {
1592
- opacity: 1;
1593
- }
1594
-
1595
- to {
1596
- opacity: 0;
1597
- -webkit-transform: translate3d(-100%, 0, 0);
1598
- transform: translate3d(-100%, 0, 0);
1599
- }
1600
- }
1601
-
1602
- @keyframes fadeOutLeft {
1603
- from {
1604
- opacity: 1;
1605
- }
1606
-
1607
- to {
1608
- opacity: 0;
1609
- -webkit-transform: translate3d(-100%, 0, 0);
1610
- transform: translate3d(-100%, 0, 0);
1611
- }
1612
- }
1613
-
1614
- .fadeOutLeft {
1615
- -webkit-animation-name: fadeOutLeft;
1616
- animation-name: fadeOutLeft;
1617
- }
1618
-
1619
- @-webkit-keyframes fadeOutLeftBig {
1620
- from {
1621
- opacity: 1;
1622
- }
1623
-
1624
- to {
1625
- opacity: 0;
1626
- -webkit-transform: translate3d(-2000px, 0, 0);
1627
- transform: translate3d(-2000px, 0, 0);
1628
- }
1629
- }
1630
-
1631
- @keyframes fadeOutLeftBig {
1632
- from {
1633
- opacity: 1;
1634
- }
1635
-
1636
- to {
1637
- opacity: 0;
1638
- -webkit-transform: translate3d(-2000px, 0, 0);
1639
- transform: translate3d(-2000px, 0, 0);
1640
- }
1641
- }
1642
-
1643
- .fadeOutLeftBig {
1644
- -webkit-animation-name: fadeOutLeftBig;
1645
- animation-name: fadeOutLeftBig;
1646
- }
1647
-
1648
- @-webkit-keyframes fadeOutRight {
1649
- from {
1650
- opacity: 1;
1651
- }
1652
-
1653
- to {
1654
- opacity: 0;
1655
- -webkit-transform: translate3d(100%, 0, 0);
1656
- transform: translate3d(100%, 0, 0);
1657
- }
1658
- }
1659
-
1660
- @keyframes fadeOutRight {
1661
- from {
1662
- opacity: 1;
1663
- }
1664
-
1665
- to {
1666
- opacity: 0;
1667
- -webkit-transform: translate3d(100%, 0, 0);
1668
- transform: translate3d(100%, 0, 0);
1669
- }
1670
- }
1671
-
1672
- .fadeOutRight {
1673
- -webkit-animation-name: fadeOutRight;
1674
- animation-name: fadeOutRight;
1675
- }
1676
-
1677
- @-webkit-keyframes fadeOutRightBig {
1678
- from {
1679
- opacity: 1;
1680
- }
1681
-
1682
- to {
1683
- opacity: 0;
1684
- -webkit-transform: translate3d(2000px, 0, 0);
1685
- transform: translate3d(2000px, 0, 0);
1686
- }
1687
- }
1688
-
1689
- @keyframes fadeOutRightBig {
1690
- from {
1691
- opacity: 1;
1692
- }
1693
-
1694
- to {
1695
- opacity: 0;
1696
- -webkit-transform: translate3d(2000px, 0, 0);
1697
- transform: translate3d(2000px, 0, 0);
1698
- }
1699
- }
1700
-
1701
- .fadeOutRightBig {
1702
- -webkit-animation-name: fadeOutRightBig;
1703
- animation-name: fadeOutRightBig;
1704
- }
1705
-
1706
- @-webkit-keyframes fadeOutUp {
1707
- from {
1708
- opacity: 1;
1709
- }
1710
-
1711
- to {
1712
- opacity: 0;
1713
- -webkit-transform: translate3d(0, -100%, 0);
1714
- transform: translate3d(0, -100%, 0);
1715
- }
1716
- }
1717
-
1718
- @keyframes fadeOutUp {
1719
- from {
1720
- opacity: 1;
1721
- }
1722
-
1723
- to {
1724
- opacity: 0;
1725
- -webkit-transform: translate3d(0, -100%, 0);
1726
- transform: translate3d(0, -100%, 0);
1727
- }
1728
- }
1729
-
1730
- .fadeOutUp {
1731
- -webkit-animation-name: fadeOutUp;
1732
- animation-name: fadeOutUp;
1733
- }
1734
-
1735
- @-webkit-keyframes fadeOutUpBig {
1736
- from {
1737
- opacity: 1;
1738
- }
1739
-
1740
- to {
1741
- opacity: 0;
1742
- -webkit-transform: translate3d(0, -2000px, 0);
1743
- transform: translate3d(0, -2000px, 0);
1744
- }
1745
- }
1746
-
1747
- @keyframes fadeOutUpBig {
1748
- from {
1749
- opacity: 1;
1750
- }
1751
-
1752
- to {
1753
- opacity: 0;
1754
- -webkit-transform: translate3d(0, -2000px, 0);
1755
- transform: translate3d(0, -2000px, 0);
1756
- }
1757
- }
1758
-
1759
- .fadeOutUpBig {
1760
- -webkit-animation-name: fadeOutUpBig;
1761
- animation-name: fadeOutUpBig;
1762
- }
1763
-
1764
- @-webkit-keyframes flip {
1765
- from {
1766
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1767
- transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1768
- -webkit-animation-timing-function: ease-out;
1769
- animation-timing-function: ease-out;
1770
- }
1771
-
1772
- 40% {
1773
- -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1774
- transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1775
- -webkit-animation-timing-function: ease-out;
1776
- animation-timing-function: ease-out;
1777
- }
1778
-
1779
- 50% {
1780
- -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1781
- transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1782
- -webkit-animation-timing-function: ease-in;
1783
- animation-timing-function: ease-in;
1784
- }
1785
-
1786
- 80% {
1787
- -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
1788
- transform: perspective(400px) scale3d(.95, .95, .95);
1789
- -webkit-animation-timing-function: ease-in;
1790
- animation-timing-function: ease-in;
1791
- }
1792
-
1793
- to {
1794
- -webkit-transform: perspective(400px);
1795
- transform: perspective(400px);
1796
- -webkit-animation-timing-function: ease-in;
1797
- animation-timing-function: ease-in;
1798
- }
1799
- }
1800
-
1801
- @keyframes flip {
1802
- from {
1803
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1804
- transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
1805
- -webkit-animation-timing-function: ease-out;
1806
- animation-timing-function: ease-out;
1807
- }
1808
-
1809
- 40% {
1810
- -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1811
- transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
1812
- -webkit-animation-timing-function: ease-out;
1813
- animation-timing-function: ease-out;
1814
- }
1815
-
1816
- 50% {
1817
- -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1818
- transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
1819
- -webkit-animation-timing-function: ease-in;
1820
- animation-timing-function: ease-in;
1821
- }
1822
-
1823
- 80% {
1824
- -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
1825
- transform: perspective(400px) scale3d(.95, .95, .95);
1826
- -webkit-animation-timing-function: ease-in;
1827
- animation-timing-function: ease-in;
1828
- }
1829
-
1830
- to {
1831
- -webkit-transform: perspective(400px);
1832
- transform: perspective(400px);
1833
- -webkit-animation-timing-function: ease-in;
1834
- animation-timing-function: ease-in;
1835
- }
1836
- }
1837
-
1838
- .animated.flip {
1839
- -webkit-backface-visibility: visible;
1840
- backface-visibility: visible;
1841
- -webkit-animation-name: flip;
1842
- animation-name: flip;
1843
- }
1844
-
1845
- @-webkit-keyframes flipInX {
1846
- from {
1847
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1848
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1849
- -webkit-animation-timing-function: ease-in;
1850
- animation-timing-function: ease-in;
1851
- opacity: 0;
1852
- }
1853
-
1854
- 40% {
1855
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
1856
- transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
1857
- -webkit-animation-timing-function: ease-in;
1858
- animation-timing-function: ease-in;
1859
- }
1860
-
1861
- 60% {
1862
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
1863
- transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
1864
- opacity: 1;
1865
- }
1866
-
1867
- 80% {
1868
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
1869
- transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
1870
- }
1871
-
1872
- to {
1873
- -webkit-transform: perspective(400px);
1874
- transform: perspective(400px);
1875
- }
1876
- }
1877
-
1878
- @keyframes flipInX {
1879
- from {
1880
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1881
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1882
- -webkit-animation-timing-function: ease-in;
1883
- animation-timing-function: ease-in;
1884
- opacity: 0;
1885
- }
1886
-
1887
- 40% {
1888
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
1889
- transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
1890
- -webkit-animation-timing-function: ease-in;
1891
- animation-timing-function: ease-in;
1892
- }
1893
-
1894
- 60% {
1895
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
1896
- transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
1897
- opacity: 1;
1898
- }
1899
-
1900
- 80% {
1901
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
1902
- transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
1903
- }
1904
-
1905
- to {
1906
- -webkit-transform: perspective(400px);
1907
- transform: perspective(400px);
1908
- }
1909
- }
1910
-
1911
- .flipInX {
1912
- -webkit-backface-visibility: visible !important;
1913
- backface-visibility: visible !important;
1914
- -webkit-animation-name: flipInX;
1915
- animation-name: flipInX;
1916
- }
1917
-
1918
- /************************************/
1919
-
1920
- .animated.flipOutXX,
1921
- .animated.flipInXX,
1922
- .animated.flipInYY,
1923
- .animated.flipOutYY
1924
- {
1925
- -webkit-animation-duration: .30s !important;
1926
- animation-duration: .30s !important;
1927
- }
1928
-
1929
- @-webkit-keyframes flipInXX {
1930
- from {
1931
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 270deg);
1932
- transform: perspective(400px) rotate3d(1, 0, 0, 270deg);
1933
- -webkit-animation-timing-function: linear;
1934
- animation-timing-function: linear;
1935
- opacity: 0;
1936
- }
1937
- to {
1938
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 360deg);
1939
- transform: perspective(400px) rotate3d(1, 0, 0, 360deg);
1940
- }
1941
- }
1942
-
1943
- @keyframes flipInXX {
1944
- from {
1945
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 270deg);
1946
- transform: perspective(400px) rotate3d(1, 0, 0, 270deg);
1947
- -webkit-animation-timing-function: linear;
1948
- animation-timing-function: linear;
1949
- opacity: 0;
1950
- }
1951
- to {
1952
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 360deg);
1953
- transform: perspective(400px) rotate3d(1, 0, 0, 360deg);
1954
- }
1955
- }
1956
-
1957
- .flipInXX {
1958
- -webkit-backface-visibility: visible !important;
1959
- backface-visibility: visible !important;
1960
- -webkit-animation-name: flipInXX;
1961
- animation-name: flipInXX;
1962
- }
1963
-
1964
- @-webkit-keyframes flipOutXX {
1965
- from {
1966
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 0deg);
1967
- transform: perspective(400px) rotate3d(1, 0, 0, 0deg);
1968
- -webkit-animation-timing-function: linear;
1969
- animation-timing-function: linear;
1970
- }
1971
- to {
1972
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1973
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1974
- opacity: 0;
1975
- }
1976
- }
1977
-
1978
- @keyframes flipOutXX {
1979
- from {
1980
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 0deg);
1981
- transform: perspective(400px) rotate3d(1, 0, 0, 0deg);
1982
- -webkit-animation-timing-function: linear;
1983
- animation-timing-function: linear;
1984
- }
1985
- to {
1986
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1987
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
1988
- opacity: 0;
1989
- }
1990
- }
1991
-
1992
- .flipOutXX {
1993
- -webkit-backface-visibility: visible !important;
1994
- backface-visibility: visible !important;
1995
- -webkit-animation-name: flipOutXX;
1996
- animation-name: flipOutXX;
1997
- }
1998
-
1999
-
2000
- @-webkit-keyframes flipInYY {
2001
- from {
2002
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2003
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2004
- -webkit-animation-timing-function: ease-out;
2005
- animation-timing-function: ease-out;
2006
- opacity: 0;
2007
- }
2008
- to {
2009
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 360deg);
2010
- transform: perspective(400px) rotate3d(0, 1, 0, 360deg);
2011
- }
2012
- }
2013
-
2014
- @keyframes flipInYY {
2015
- from {
2016
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 270deg);
2017
- transform: perspective(400px) rotate3d(0, 1, 0, 270deg);
2018
- -webkit-animation-timing-function: ease-out;
2019
- animation-timing-function: ease-out;
2020
- opacity: 0;
2021
- }
2022
- to {
2023
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 360deg);
2024
- transform: perspective(400px) rotate3d(0, 1, 0, 360deg);
2025
- }
2026
- }
2027
-
2028
- .flipInYY {
2029
- -webkit-backface-visibility: visible !important;
2030
- backface-visibility: visible !important;
2031
- -webkit-animation-name: flipInYY;
2032
- animation-name: flipInYY;
2033
- }
2034
-
2035
-
2036
- @-webkit-keyframes flipOutYY {
2037
- from {
2038
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 0deg);
2039
- transform: perspective(400px) rotate3d(0, 1, 0, 0deg);
2040
- -webkit-animation-timing-function: ease-in;
2041
- animation-timing-function: ease-in;
2042
- }
2043
- to {
2044
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2045
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2046
- opacity: 0;
2047
- }
2048
- }
2049
-
2050
- @keyframes flipOutYY {
2051
- from {
2052
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 0deg);
2053
- transform: perspective(400px) rotate3d(0, 1, 0, 0deg);
2054
- -webkit-animation-timing-function: ease-in;
2055
- animation-timing-function: ease-in;
2056
- }
2057
- to {
2058
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2059
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2060
- opacity: 0;
2061
- }
2062
- }
2063
-
2064
- .flipOutYY {
2065
- -webkit-backface-visibility: visible !important;
2066
- backface-visibility: visible !important;
2067
- -webkit-animation-name: flipOutYY;
2068
- animation-name: flipOutYY;
2069
- }
2070
-
2071
-
2072
-
2073
-
2074
-
2075
-
2076
-
2077
-
2078
-
2079
-
2080
- /**************************************/
2081
-
2082
- @-webkit-keyframes flipInY {
2083
- from {
2084
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2085
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2086
- -webkit-animation-timing-function: ease-in;
2087
- animation-timing-function: ease-in;
2088
- opacity: 0;
2089
- }
2090
-
2091
- 40% {
2092
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2093
- transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2094
- -webkit-animation-timing-function: ease-in;
2095
- animation-timing-function: ease-in;
2096
- }
2097
-
2098
- 60% {
2099
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2100
- transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2101
- opacity: 1;
2102
- }
2103
-
2104
- 80% {
2105
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2106
- transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2107
- }
2108
-
2109
- to {
2110
- -webkit-transform: perspective(400px);
2111
- transform: perspective(400px);
2112
- }
2113
- }
2114
-
2115
- @keyframes flipInY {
2116
- from {
2117
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2118
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2119
- -webkit-animation-timing-function: ease-in;
2120
- animation-timing-function: ease-in;
2121
- opacity: 0;
2122
- }
2123
-
2124
- 40% {
2125
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2126
- transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
2127
- -webkit-animation-timing-function: ease-in;
2128
- animation-timing-function: ease-in;
2129
- }
2130
-
2131
- 60% {
2132
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2133
- transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
2134
- opacity: 1;
2135
- }
2136
-
2137
- 80% {
2138
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2139
- transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
2140
- }
2141
-
2142
- to {
2143
- -webkit-transform: perspective(400px);
2144
- transform: perspective(400px);
2145
- }
2146
- }
2147
-
2148
- .flipInY {
2149
- -webkit-backface-visibility: visible !important;
2150
- backface-visibility: visible !important;
2151
- -webkit-animation-name: flipInY;
2152
- animation-name: flipInY;
2153
- }
2154
-
2155
- @-webkit-keyframes flipOutX {
2156
- from {
2157
- -webkit-transform: perspective(400px);
2158
- transform: perspective(400px);
2159
- }
2160
-
2161
- 30% {
2162
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2163
- transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2164
- opacity: 1;
2165
- }
2166
-
2167
- to {
2168
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2169
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2170
- opacity: 0;
2171
- }
2172
- }
2173
-
2174
- @keyframes flipOutX {
2175
- from {
2176
- -webkit-transform: perspective(400px);
2177
- transform: perspective(400px);
2178
- }
2179
-
2180
- 30% {
2181
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2182
- transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
2183
- opacity: 1;
2184
- }
2185
-
2186
- to {
2187
- -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2188
- transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
2189
- opacity: 0;
2190
- }
2191
- }
2192
-
2193
- .flipOutX {
2194
- -webkit-animation-name: flipOutX;
2195
- animation-name: flipOutX;
2196
- -webkit-backface-visibility: visible !important;
2197
- backface-visibility: visible !important;
2198
- }
2199
-
2200
- @-webkit-keyframes flipOutY {
2201
- from {
2202
- -webkit-transform: perspective(400px);
2203
- transform: perspective(400px);
2204
- }
2205
-
2206
- 30% {
2207
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2208
- transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2209
- opacity: 1;
2210
- }
2211
-
2212
- to {
2213
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2214
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2215
- opacity: 0;
2216
- }
2217
- }
2218
-
2219
- @keyframes flipOutY {
2220
- from {
2221
- -webkit-transform: perspective(400px);
2222
- transform: perspective(400px);
2223
- }
2224
-
2225
- 30% {
2226
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2227
- transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
2228
- opacity: 1;
2229
- }
2230
-
2231
- to {
2232
- -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2233
- transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
2234
- opacity: 0;
2235
- }
2236
- }
2237
-
2238
- .flipOutY {
2239
- -webkit-backface-visibility: visible !important;
2240
- backface-visibility: visible !important;
2241
- -webkit-animation-name: flipOutY;
2242
- animation-name: flipOutY;
2243
- }
2244
-
2245
- @-webkit-keyframes lightSpeedIn {
2246
- from {
2247
- -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
2248
- transform: translate3d(100%, 0, 0) skewX(-30deg);
2249
- opacity: 0;
2250
- }
2251
-
2252
- 60% {
2253
- -webkit-transform: skewX(20deg);
2254
- transform: skewX(20deg);
2255
- opacity: 1;
2256
- }
2257
-
2258
- 80% {
2259
- -webkit-transform: skewX(-5deg);
2260
- transform: skewX(-5deg);
2261
- opacity: 1;
2262
- }
2263
-
2264
- to {
2265
- -webkit-transform: none;
2266
- transform: none;
2267
- opacity: 1;
2268
- }
2269
- }
2270
-
2271
- @keyframes lightSpeedIn {
2272
- from {
2273
- -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
2274
- transform: translate3d(100%, 0, 0) skewX(-30deg);
2275
- opacity: 0;
2276
- }
2277
-
2278
- 60% {
2279
- -webkit-transform: skewX(20deg);
2280
- transform: skewX(20deg);
2281
- opacity: 1;
2282
- }
2283
-
2284
- 80% {
2285
- -webkit-transform: skewX(-5deg);
2286
- transform: skewX(-5deg);
2287
- opacity: 1;
2288
- }
2289
-
2290
- to {
2291
- -webkit-transform: none;
2292
- transform: none;
2293
- opacity: 1;
2294
- }
2295
- }
2296
-
2297
- .lightSpeedIn {
2298
- -webkit-animation-name: lightSpeedIn;
2299
- animation-name: lightSpeedIn;
2300
- -webkit-animation-timing-function: ease-out;
2301
- animation-timing-function: ease-out;
2302
- }
2303
-
2304
- @-webkit-keyframes lightSpeedOut {
2305
- from {
2306
- opacity: 1;
2307
- }
2308
-
2309
- to {
2310
- -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
2311
- transform: translate3d(100%, 0, 0) skewX(30deg);
2312
- opacity: 0;
2313
- }
2314
- }
2315
-
2316
- @keyframes lightSpeedOut {
2317
- from {
2318
- opacity: 1;
2319
- }
2320
-
2321
- to {
2322
- -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
2323
- transform: translate3d(100%, 0, 0) skewX(30deg);
2324
- opacity: 0;
2325
- }
2326
- }
2327
-
2328
- .lightSpeedOut {
2329
- -webkit-animation-name: lightSpeedOut;
2330
- animation-name: lightSpeedOut;
2331
- -webkit-animation-timing-function: ease-in;
2332
- animation-timing-function: ease-in;
2333
- }
2334
-
2335
- @-webkit-keyframes rotateIn {
2336
- from {
2337
- -webkit-transform-origin: center;
2338
- transform-origin: center;
2339
- -webkit-transform: rotate3d(0, 0, 1, -200deg);
2340
- transform: rotate3d(0, 0, 1, -200deg);
2341
- opacity: 0;
2342
- }
2343
-
2344
- to {
2345
- -webkit-transform-origin: center;
2346
- transform-origin: center;
2347
- -webkit-transform: none;
2348
- transform: none;
2349
- opacity: 1;
2350
- }
2351
- }
2352
-
2353
- @keyframes rotateIn {
2354
- from {
2355
- -webkit-transform-origin: center;
2356
- transform-origin: center;
2357
- -webkit-transform: rotate3d(0, 0, 1, -200deg);
2358
- transform: rotate3d(0, 0, 1, -200deg);
2359
- opacity: 0;
2360
- }
2361
-
2362
- to {
2363
- -webkit-transform-origin: center;
2364
- transform-origin: center;
2365
- -webkit-transform: none;
2366
- transform: none;
2367
- opacity: 1;
2368
- }
2369
- }
2370
-
2371
- .rotateIn {
2372
- -webkit-animation-name: rotateIn;
2373
- animation-name: rotateIn;
2374
- }
2375
-
2376
- @-webkit-keyframes rotateInDownLeft {
2377
- from {
2378
- -webkit-transform-origin: left bottom;
2379
- transform-origin: left bottom;
2380
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2381
- transform: rotate3d(0, 0, 1, -45deg);
2382
- opacity: 0;
2383
- }
2384
-
2385
- to {
2386
- -webkit-transform-origin: left bottom;
2387
- transform-origin: left bottom;
2388
- -webkit-transform: none;
2389
- transform: none;
2390
- opacity: 1;
2391
- }
2392
- }
2393
-
2394
- @keyframes rotateInDownLeft {
2395
- from {
2396
- -webkit-transform-origin: left bottom;
2397
- transform-origin: left bottom;
2398
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2399
- transform: rotate3d(0, 0, 1, -45deg);
2400
- opacity: 0;
2401
- }
2402
-
2403
- to {
2404
- -webkit-transform-origin: left bottom;
2405
- transform-origin: left bottom;
2406
- -webkit-transform: none;
2407
- transform: none;
2408
- opacity: 1;
2409
- }
2410
- }
2411
-
2412
- .rotateInDownLeft {
2413
- -webkit-animation-name: rotateInDownLeft;
2414
- animation-name: rotateInDownLeft;
2415
- }
2416
-
2417
- @-webkit-keyframes rotateInDownRight {
2418
- from {
2419
- -webkit-transform-origin: right bottom;
2420
- transform-origin: right bottom;
2421
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2422
- transform: rotate3d(0, 0, 1, 45deg);
2423
- opacity: 0;
2424
- }
2425
-
2426
- to {
2427
- -webkit-transform-origin: right bottom;
2428
- transform-origin: right bottom;
2429
- -webkit-transform: none;
2430
- transform: none;
2431
- opacity: 1;
2432
- }
2433
- }
2434
-
2435
- @keyframes rotateInDownRight {
2436
- from {
2437
- -webkit-transform-origin: right bottom;
2438
- transform-origin: right bottom;
2439
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2440
- transform: rotate3d(0, 0, 1, 45deg);
2441
- opacity: 0;
2442
- }
2443
-
2444
- to {
2445
- -webkit-transform-origin: right bottom;
2446
- transform-origin: right bottom;
2447
- -webkit-transform: none;
2448
- transform: none;
2449
- opacity: 1;
2450
- }
2451
- }
2452
-
2453
- .rotateInDownRight {
2454
- -webkit-animation-name: rotateInDownRight;
2455
- animation-name: rotateInDownRight;
2456
- }
2457
-
2458
- @-webkit-keyframes rotateInUpLeft {
2459
- from {
2460
- -webkit-transform-origin: left bottom;
2461
- transform-origin: left bottom;
2462
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2463
- transform: rotate3d(0, 0, 1, 45deg);
2464
- opacity: 0;
2465
- }
2466
-
2467
- to {
2468
- -webkit-transform-origin: left bottom;
2469
- transform-origin: left bottom;
2470
- -webkit-transform: none;
2471
- transform: none;
2472
- opacity: 1;
2473
- }
2474
- }
2475
-
2476
- @keyframes rotateInUpLeft {
2477
- from {
2478
- -webkit-transform-origin: left bottom;
2479
- transform-origin: left bottom;
2480
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2481
- transform: rotate3d(0, 0, 1, 45deg);
2482
- opacity: 0;
2483
- }
2484
-
2485
- to {
2486
- -webkit-transform-origin: left bottom;
2487
- transform-origin: left bottom;
2488
- -webkit-transform: none;
2489
- transform: none;
2490
- opacity: 1;
2491
- }
2492
- }
2493
-
2494
- .rotateInUpLeft {
2495
- -webkit-animation-name: rotateInUpLeft;
2496
- animation-name: rotateInUpLeft;
2497
- }
2498
-
2499
- @-webkit-keyframes rotateInUpRight {
2500
- from {
2501
- -webkit-transform-origin: right bottom;
2502
- transform-origin: right bottom;
2503
- -webkit-transform: rotate3d(0, 0, 1, -90deg);
2504
- transform: rotate3d(0, 0, 1, -90deg);
2505
- opacity: 0;
2506
- }
2507
-
2508
- to {
2509
- -webkit-transform-origin: right bottom;
2510
- transform-origin: right bottom;
2511
- -webkit-transform: none;
2512
- transform: none;
2513
- opacity: 1;
2514
- }
2515
- }
2516
-
2517
- @keyframes rotateInUpRight {
2518
- from {
2519
- -webkit-transform-origin: right bottom;
2520
- transform-origin: right bottom;
2521
- -webkit-transform: rotate3d(0, 0, 1, -90deg);
2522
- transform: rotate3d(0, 0, 1, -90deg);
2523
- opacity: 0;
2524
- }
2525
-
2526
- to {
2527
- -webkit-transform-origin: right bottom;
2528
- transform-origin: right bottom;
2529
- -webkit-transform: none;
2530
- transform: none;
2531
- opacity: 1;
2532
- }
2533
- }
2534
-
2535
- .rotateInUpRight {
2536
- -webkit-animation-name: rotateInUpRight;
2537
- animation-name: rotateInUpRight;
2538
- }
2539
-
2540
- @-webkit-keyframes rotateOut {
2541
- from {
2542
- -webkit-transform-origin: center;
2543
- transform-origin: center;
2544
- opacity: 1;
2545
- }
2546
-
2547
- to {
2548
- -webkit-transform-origin: center;
2549
- transform-origin: center;
2550
- -webkit-transform: rotate3d(0, 0, 1, 200deg);
2551
- transform: rotate3d(0, 0, 1, 200deg);
2552
- opacity: 0;
2553
- }
2554
- }
2555
-
2556
- @keyframes rotateOut {
2557
- from {
2558
- -webkit-transform-origin: center;
2559
- transform-origin: center;
2560
- opacity: 1;
2561
- }
2562
-
2563
- to {
2564
- -webkit-transform-origin: center;
2565
- transform-origin: center;
2566
- -webkit-transform: rotate3d(0, 0, 1, 200deg);
2567
- transform: rotate3d(0, 0, 1, 200deg);
2568
- opacity: 0;
2569
- }
2570
- }
2571
-
2572
- .rotateOut {
2573
- -webkit-animation-name: rotateOut;
2574
- animation-name: rotateOut;
2575
- }
2576
-
2577
- @-webkit-keyframes rotateOutDownLeft {
2578
- from {
2579
- -webkit-transform-origin: left bottom;
2580
- transform-origin: left bottom;
2581
- opacity: 1;
2582
- }
2583
-
2584
- to {
2585
- -webkit-transform-origin: left bottom;
2586
- transform-origin: left bottom;
2587
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2588
- transform: rotate3d(0, 0, 1, 45deg);
2589
- opacity: 0;
2590
- }
2591
- }
2592
-
2593
- @keyframes rotateOutDownLeft {
2594
- from {
2595
- -webkit-transform-origin: left bottom;
2596
- transform-origin: left bottom;
2597
- opacity: 1;
2598
- }
2599
-
2600
- to {
2601
- -webkit-transform-origin: left bottom;
2602
- transform-origin: left bottom;
2603
- -webkit-transform: rotate3d(0, 0, 1, 45deg);
2604
- transform: rotate3d(0, 0, 1, 45deg);
2605
- opacity: 0;
2606
- }
2607
- }
2608
-
2609
- .rotateOutDownLeft {
2610
- -webkit-animation-name: rotateOutDownLeft;
2611
- animation-name: rotateOutDownLeft;
2612
- }
2613
-
2614
- @-webkit-keyframes rotateOutDownRight {
2615
- from {
2616
- -webkit-transform-origin: right bottom;
2617
- transform-origin: right bottom;
2618
- opacity: 1;
2619
- }
2620
-
2621
- to {
2622
- -webkit-transform-origin: right bottom;
2623
- transform-origin: right bottom;
2624
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2625
- transform: rotate3d(0, 0, 1, -45deg);
2626
- opacity: 0;
2627
- }
2628
- }
2629
-
2630
- @keyframes rotateOutDownRight {
2631
- from {
2632
- -webkit-transform-origin: right bottom;
2633
- transform-origin: right bottom;
2634
- opacity: 1;
2635
- }
2636
-
2637
- to {
2638
- -webkit-transform-origin: right bottom;
2639
- transform-origin: right bottom;
2640
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2641
- transform: rotate3d(0, 0, 1, -45deg);
2642
- opacity: 0;
2643
- }
2644
- }
2645
-
2646
- .rotateOutDownRight {
2647
- -webkit-animation-name: rotateOutDownRight;
2648
- animation-name: rotateOutDownRight;
2649
- }
2650
-
2651
- @-webkit-keyframes rotateOutUpLeft {
2652
- from {
2653
- -webkit-transform-origin: left bottom;
2654
- transform-origin: left bottom;
2655
- opacity: 1;
2656
- }
2657
-
2658
- to {
2659
- -webkit-transform-origin: left bottom;
2660
- transform-origin: left bottom;
2661
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2662
- transform: rotate3d(0, 0, 1, -45deg);
2663
- opacity: 0;
2664
- }
2665
- }
2666
-
2667
- @keyframes rotateOutUpLeft {
2668
- from {
2669
- -webkit-transform-origin: left bottom;
2670
- transform-origin: left bottom;
2671
- opacity: 1;
2672
- }
2673
-
2674
- to {
2675
- -webkit-transform-origin: left bottom;
2676
- transform-origin: left bottom;
2677
- -webkit-transform: rotate3d(0, 0, 1, -45deg);
2678
- transform: rotate3d(0, 0, 1, -45deg);
2679
- opacity: 0;
2680
- }
2681
- }
2682
-
2683
- .rotateOutUpLeft {
2684
- -webkit-animation-name: rotateOutUpLeft;
2685
- animation-name: rotateOutUpLeft;
2686
- }
2687
-
2688
- @-webkit-keyframes rotateOutUpRight {
2689
- from {
2690
- -webkit-transform-origin: right bottom;
2691
- transform-origin: right bottom;
2692
- opacity: 1;
2693
- }
2694
-
2695
- to {
2696
- -webkit-transform-origin: right bottom;
2697
- transform-origin: right bottom;
2698
- -webkit-transform: rotate3d(0, 0, 1, 90deg);
2699
- transform: rotate3d(0, 0, 1, 90deg);
2700
- opacity: 0;
2701
- }
2702
- }
2703
-
2704
- @keyframes rotateOutUpRight {
2705
- from {
2706
- -webkit-transform-origin: right bottom;
2707
- transform-origin: right bottom;
2708
- opacity: 1;
2709
- }
2710
-
2711
- to {
2712
- -webkit-transform-origin: right bottom;
2713
- transform-origin: right bottom;
2714
- -webkit-transform: rotate3d(0, 0, 1, 90deg);
2715
- transform: rotate3d(0, 0, 1, 90deg);
2716
- opacity: 0;
2717
- }
2718
- }
2719
-
2720
- .rotateOutUpRight {
2721
- -webkit-animation-name: rotateOutUpRight;
2722
- animation-name: rotateOutUpRight;
2723
- }
2724
-
2725
- @-webkit-keyframes hinge {
2726
- 0% {
2727
- -webkit-transform-origin: top left;
2728
- transform-origin: top left;
2729
- -webkit-animation-timing-function: ease-in-out;
2730
- animation-timing-function: ease-in-out;
2731
- }
2732
-
2733
- 20%, 60% {
2734
- -webkit-transform: rotate3d(0, 0, 1, 80deg);
2735
- transform: rotate3d(0, 0, 1, 80deg);
2736
- -webkit-transform-origin: top left;
2737
- transform-origin: top left;
2738
- -webkit-animation-timing-function: ease-in-out;
2739
- animation-timing-function: ease-in-out;
2740
- }
2741
-
2742
- 40%, 80% {
2743
- -webkit-transform: rotate3d(0, 0, 1, 60deg);
2744
- transform: rotate3d(0, 0, 1, 60deg);
2745
- -webkit-transform-origin: top left;
2746
- transform-origin: top left;
2747
- -webkit-animation-timing-function: ease-in-out;
2748
- animation-timing-function: ease-in-out;
2749
- opacity: 1;
2750
- }
2751
-
2752
- to {
2753
- -webkit-transform: translate3d(0, 700px, 0);
2754
- transform: translate3d(0, 700px, 0);
2755
- opacity: 0;
2756
- }
2757
- }
2758
-
2759
- @keyframes hinge {
2760
- 0% {
2761
- -webkit-transform-origin: top left;
2762
- transform-origin: top left;
2763
- -webkit-animation-timing-function: ease-in-out;
2764
- animation-timing-function: ease-in-out;
2765
- }
2766
-
2767
- 20%, 60% {
2768
- -webkit-transform: rotate3d(0, 0, 1, 80deg);
2769
- transform: rotate3d(0, 0, 1, 80deg);
2770
- -webkit-transform-origin: top left;
2771
- transform-origin: top left;
2772
- -webkit-animation-timing-function: ease-in-out;
2773
- animation-timing-function: ease-in-out;
2774
- }
2775
-
2776
- 40%, 80% {
2777
- -webkit-transform: rotate3d(0, 0, 1, 60deg);
2778
- transform: rotate3d(0, 0, 1, 60deg);
2779
- -webkit-transform-origin: top left;
2780
- transform-origin: top left;
2781
- -webkit-animation-timing-function: ease-in-out;
2782
- animation-timing-function: ease-in-out;
2783
- opacity: 1;
2784
- }
2785
-
2786
- to {
2787
- -webkit-transform: translate3d(0, 700px, 0);
2788
- transform: translate3d(0, 700px, 0);
2789
- opacity: 0;
2790
- }
2791
- }
2792
-
2793
- .hinge {
2794
- -webkit-animation-name: hinge;
2795
- animation-name: hinge;
2796
- }
2797
-
2798
- /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2799
-
2800
- @-webkit-keyframes rollIn {
2801
- from {
2802
- opacity: 0;
2803
- -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2804
- transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2805
- }
2806
-
2807
- to {
2808
- opacity: 1;
2809
- -webkit-transform: none;
2810
- transform: none;
2811
- }
2812
- }
2813
-
2814
- @keyframes rollIn {
2815
- from {
2816
- opacity: 0;
2817
- -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2818
- transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
2819
- }
2820
-
2821
- to {
2822
- opacity: 1;
2823
- -webkit-transform: none;
2824
- transform: none;
2825
- }
2826
- }
2827
-
2828
- .rollIn {
2829
- -webkit-animation-name: rollIn;
2830
- animation-name: rollIn;
2831
- }
2832
-
2833
- /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2834
-
2835
- @-webkit-keyframes rollOut {
2836
- from {
2837
- opacity: 1;
2838
- }
2839
-
2840
- to {
2841
- opacity: 0;
2842
- -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2843
- transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2844
- }
2845
- }
2846
-
2847
- @keyframes rollOut {
2848
- from {
2849
- opacity: 1;
2850
- }
2851
-
2852
- to {
2853
- opacity: 0;
2854
- -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2855
- transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
2856
- }
2857
- }
2858
-
2859
- .rollOut {
2860
- -webkit-animation-name: rollOut;
2861
- animation-name: rollOut;
2862
- }
2863
-
2864
- @-webkit-keyframes zoomIn {
2865
- from {
2866
- opacity: 0;
2867
- -webkit-transform: scale3d(.3, .3, .3);
2868
- transform: scale3d(.3, .3, .3);
2869
- }
2870
-
2871
- 50% {
2872
- opacity: 1;
2873
- }
2874
- }
2875
-
2876
- @keyframes zoomIn {
2877
- from {
2878
- opacity: 0;
2879
- -webkit-transform: scale3d(.3, .3, .3);
2880
- transform: scale3d(.3, .3, .3);
2881
- }
2882
-
2883
- 50% {
2884
- opacity: 1;
2885
- }
2886
- }
2887
-
2888
- .zoomIn {
2889
- -webkit-animation-name: zoomIn;
2890
- animation-name: zoomIn;
2891
- }
2892
-
2893
- @-webkit-keyframes zoomInDown {
2894
- from {
2895
- opacity: 0;
2896
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2897
- transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2898
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2899
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2900
- }
2901
-
2902
- 60% {
2903
- opacity: 1;
2904
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2905
- transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2906
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2907
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2908
- }
2909
- }
2910
-
2911
- @keyframes zoomInDown {
2912
- from {
2913
- opacity: 0;
2914
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2915
- transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
2916
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2917
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2918
- }
2919
-
2920
- 60% {
2921
- opacity: 1;
2922
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2923
- transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
2924
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2925
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2926
- }
2927
- }
2928
-
2929
- .zoomInDown {
2930
- -webkit-animation-name: zoomInDown;
2931
- animation-name: zoomInDown;
2932
- }
2933
-
2934
- @-webkit-keyframes zoomInLeft {
2935
- from {
2936
- opacity: 0;
2937
- -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2938
- transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2939
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2940
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2941
- }
2942
-
2943
- 60% {
2944
- opacity: 1;
2945
- -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2946
- transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2947
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2948
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2949
- }
2950
- }
2951
-
2952
- @keyframes zoomInLeft {
2953
- from {
2954
- opacity: 0;
2955
- -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2956
- transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
2957
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2958
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2959
- }
2960
-
2961
- 60% {
2962
- opacity: 1;
2963
- -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2964
- transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
2965
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2966
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2967
- }
2968
- }
2969
-
2970
- .zoomInLeft {
2971
- -webkit-animation-name: zoomInLeft;
2972
- animation-name: zoomInLeft;
2973
- }
2974
-
2975
- @-webkit-keyframes zoomInRight {
2976
- from {
2977
- opacity: 0;
2978
- -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2979
- transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2980
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2981
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2982
- }
2983
-
2984
- 60% {
2985
- opacity: 1;
2986
- -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2987
- transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
2988
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2989
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
2990
- }
2991
- }
2992
-
2993
- @keyframes zoomInRight {
2994
- from {
2995
- opacity: 0;
2996
- -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2997
- transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
2998
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
2999
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3000
- }
3001
-
3002
- 60% {
3003
- opacity: 1;
3004
- -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3005
- transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
3006
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3007
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3008
- }
3009
- }
3010
-
3011
- .zoomInRight {
3012
- -webkit-animation-name: zoomInRight;
3013
- animation-name: zoomInRight;
3014
- }
3015
-
3016
- @-webkit-keyframes zoomInUp {
3017
- from {
3018
- opacity: 0;
3019
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3020
- transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3021
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3022
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3023
- }
3024
-
3025
- 60% {
3026
- opacity: 1;
3027
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3028
- transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3029
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3030
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3031
- }
3032
- }
3033
-
3034
- @keyframes zoomInUp {
3035
- from {
3036
- opacity: 0;
3037
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3038
- transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
3039
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3040
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3041
- }
3042
-
3043
- 60% {
3044
- opacity: 1;
3045
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3046
- transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3047
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3048
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3049
- }
3050
- }
3051
-
3052
- .zoomInUp {
3053
- -webkit-animation-name: zoomInUp;
3054
- animation-name: zoomInUp;
3055
- }
3056
-
3057
- @-webkit-keyframes zoomOut {
3058
- from {
3059
- opacity: 1;
3060
- }
3061
-
3062
- 50% {
3063
- opacity: 0;
3064
- -webkit-transform: scale3d(.3, .3, .3);
3065
- transform: scale3d(.3, .3, .3);
3066
- }
3067
-
3068
- to {
3069
- opacity: 0;
3070
- }
3071
- }
3072
-
3073
- @keyframes zoomOut {
3074
- from {
3075
- opacity: 1;
3076
- }
3077
-
3078
- 50% {
3079
- opacity: 0;
3080
- -webkit-transform: scale3d(.3, .3, .3);
3081
- transform: scale3d(.3, .3, .3);
3082
- }
3083
-
3084
- to {
3085
- opacity: 0;
3086
- }
3087
- }
3088
-
3089
- .zoomOut {
3090
- -webkit-animation-name: zoomOut;
3091
- animation-name: zoomOut;
3092
- }
3093
-
3094
- @-webkit-keyframes zoomOutDown {
3095
- 40% {
3096
- opacity: 1;
3097
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3098
- transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3099
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3100
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3101
- }
3102
-
3103
- to {
3104
- opacity: 0;
3105
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3106
- transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3107
- -webkit-transform-origin: center bottom;
3108
- transform-origin: center bottom;
3109
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3110
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3111
- }
3112
- }
3113
-
3114
- @keyframes zoomOutDown {
3115
- 40% {
3116
- opacity: 1;
3117
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3118
- transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
3119
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3120
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3121
- }
3122
-
3123
- to {
3124
- opacity: 0;
3125
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3126
- transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
3127
- -webkit-transform-origin: center bottom;
3128
- transform-origin: center bottom;
3129
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3130
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3131
- }
3132
- }
3133
-
3134
- .zoomOutDown {
3135
- -webkit-animation-name: zoomOutDown;
3136
- animation-name: zoomOutDown;
3137
- }
3138
-
3139
- @-webkit-keyframes zoomOutLeft {
3140
- 40% {
3141
- opacity: 1;
3142
- -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3143
- transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3144
- }
3145
-
3146
- to {
3147
- opacity: 0;
3148
- -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3149
- transform: scale(.1) translate3d(-2000px, 0, 0);
3150
- -webkit-transform-origin: left center;
3151
- transform-origin: left center;
3152
- }
3153
- }
3154
-
3155
- @keyframes zoomOutLeft {
3156
- 40% {
3157
- opacity: 1;
3158
- -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3159
- transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
3160
- }
3161
-
3162
- to {
3163
- opacity: 0;
3164
- -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
3165
- transform: scale(.1) translate3d(-2000px, 0, 0);
3166
- -webkit-transform-origin: left center;
3167
- transform-origin: left center;
3168
- }
3169
- }
3170
-
3171
- .zoomOutLeft {
3172
- -webkit-animation-name: zoomOutLeft;
3173
- animation-name: zoomOutLeft;
3174
- }
3175
-
3176
- @-webkit-keyframes zoomOutRight {
3177
- 40% {
3178
- opacity: 1;
3179
- -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3180
- transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3181
- }
3182
-
3183
- to {
3184
- opacity: 0;
3185
- -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3186
- transform: scale(.1) translate3d(2000px, 0, 0);
3187
- -webkit-transform-origin: right center;
3188
- transform-origin: right center;
3189
- }
3190
- }
3191
-
3192
- @keyframes zoomOutRight {
3193
- 40% {
3194
- opacity: 1;
3195
- -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3196
- transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
3197
- }
3198
-
3199
- to {
3200
- opacity: 0;
3201
- -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
3202
- transform: scale(.1) translate3d(2000px, 0, 0);
3203
- -webkit-transform-origin: right center;
3204
- transform-origin: right center;
3205
- }
3206
- }
3207
-
3208
- .zoomOutRight {
3209
- -webkit-animation-name: zoomOutRight;
3210
- animation-name: zoomOutRight;
3211
- }
3212
-
3213
- @-webkit-keyframes zoomOutUp {
3214
- 40% {
3215
- opacity: 1;
3216
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3217
- transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3218
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3219
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3220
- }
3221
-
3222
- to {
3223
- opacity: 0;
3224
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3225
- transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3226
- -webkit-transform-origin: center bottom;
3227
- transform-origin: center bottom;
3228
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3229
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3230
- }
3231
- }
3232
-
3233
- @keyframes zoomOutUp {
3234
- 40% {
3235
- opacity: 1;
3236
- -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3237
- transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
3238
- -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3239
- animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
3240
- }
3241
-
3242
- to {
3243
- opacity: 0;
3244
- -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3245
- transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
3246
- -webkit-transform-origin: center bottom;
3247
- transform-origin: center bottom;
3248
- -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3249
- animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
3250
- }
3251
- }
3252
-
3253
- .zoomOutUp {
3254
- -webkit-animation-name: zoomOutUp;
3255
- animation-name: zoomOutUp;
3256
- }
3257
-
3258
- @-webkit-keyframes slideInDown {
3259
- from {
3260
- -webkit-transform: translate3d(0, -100%, 0);
3261
- transform: translate3d(0, -100%, 0);
3262
- visibility: visible;
3263
- }
3264
-
3265
- to {
3266
- -webkit-transform: translate3d(0, 0, 0);
3267
- transform: translate3d(0, 0, 0);
3268
- }
3269
- }
3270
-
3271
- @keyframes slideInDown {
3272
- from {
3273
- -webkit-transform: translate3d(0, -100%, 0);
3274
- transform: translate3d(0, -100%, 0);
3275
- visibility: visible;
3276
- }
3277
-
3278
- to {
3279
- -webkit-transform: translate3d(0, 0, 0);
3280
- transform: translate3d(0, 0, 0);
3281
- }
3282
- }
3283
-
3284
- .slideInDown {
3285
- -webkit-animation-name: slideInDown;
3286
- animation-name: slideInDown;
3287
- }
3288
-
3289
- @-webkit-keyframes slideInLeft {
3290
- from {
3291
- -webkit-transform: translate3d(-100%, 0, 0);
3292
- transform: translate3d(-100%, 0, 0);
3293
- visibility: visible;
3294
- }
3295
-
3296
- to {
3297
- -webkit-transform: translate3d(0, 0, 0);
3298
- transform: translate3d(0, 0, 0);
3299
- }
3300
- }
3301
-
3302
- @keyframes slideInLeft {
3303
- from {
3304
- -webkit-transform: translate3d(-100%, 0, 0);
3305
- transform: translate3d(-100%, 0, 0);
3306
- visibility: visible;
3307
- }
3308
-
3309
- to {
3310
- -webkit-transform: translate3d(0, 0, 0);
3311
- transform: translate3d(0, 0, 0);
3312
- }
3313
- }
3314
-
3315
- .slideInLeft {
3316
- -webkit-animation-name: slideInLeft;
3317
- animation-name: slideInLeft;
3318
- }
3319
-
3320
- @-webkit-keyframes slideInRight {
3321
- from {
3322
- -webkit-transform: translate3d(100%, 0, 0);
3323
- transform: translate3d(100%, 0, 0);
3324
- visibility: visible;
3325
- }
3326
-
3327
- to {
3328
- -webkit-transform: translate3d(0, 0, 0);
3329
- transform: translate3d(0, 0, 0);
3330
- }
3331
- }
3332
-
3333
- @keyframes slideInRight {
3334
- from {
3335
- -webkit-transform: translate3d(100%, 0, 0);
3336
- transform: translate3d(100%, 0, 0);
3337
- visibility: visible;
3338
- }
3339
-
3340
- to {
3341
- -webkit-transform: translate3d(0, 0, 0);
3342
- transform: translate3d(0, 0, 0);
3343
- }
3344
- }
3345
-
3346
- .slideInRight {
3347
- -webkit-animation-name: slideInRight;
3348
- animation-name: slideInRight;
3349
- }
3350
-
3351
- @-webkit-keyframes slideInUp {
3352
- from {
3353
- -webkit-transform: translate3d(0, 100%, 0);
3354
- transform: translate3d(0, 100%, 0);
3355
- visibility: visible;
3356
- }
3357
-
3358
- to {
3359
- -webkit-transform: translate3d(0, 0, 0);
3360
- transform: translate3d(0, 0, 0);
3361
- }
3362
- }
3363
-
3364
- @keyframes slideInUp {
3365
- from {
3366
- -webkit-transform: translate3d(0, 100%, 0);
3367
- transform: translate3d(0, 100%, 0);
3368
- visibility: visible;
3369
- }
3370
-
3371
- to {
3372
- -webkit-transform: translate3d(0, 0, 0);
3373
- transform: translate3d(0, 0, 0);
3374
- }
3375
- }
3376
-
3377
- .slideInUp {
3378
- -webkit-animation-name: slideInUp;
3379
- animation-name: slideInUp;
3380
- }
3381
-
3382
- @-webkit-keyframes slideOutDown {
3383
- from {
3384
- -webkit-transform: translate3d(0, 0, 0);
3385
- transform: translate3d(0, 0, 0);
3386
- }
3387
-
3388
- to {
3389
- visibility: hidden;
3390
- -webkit-transform: translate3d(0, 100%, 0);
3391
- transform: translate3d(0, 100%, 0);
3392
- }
3393
- }
3394
-
3395
- @keyframes slideOutDown {
3396
- from {
3397
- -webkit-transform: translate3d(0, 0, 0);
3398
- transform: translate3d(0, 0, 0);
3399
- }
3400
-
3401
- to {
3402
- visibility: hidden;
3403
- -webkit-transform: translate3d(0, 100%, 0);
3404
- transform: translate3d(0, 100%, 0);
3405
- }
3406
- }
3407
-
3408
- .slideOutDown {
3409
- -webkit-animation-name: slideOutDown;
3410
- animation-name: slideOutDown;
3411
- }
3412
-
3413
- @-webkit-keyframes slideOutLeft {
3414
- from {
3415
- -webkit-transform: translate3d(0, 0, 0);
3416
- transform: translate3d(0, 0, 0);
3417
- }
3418
-
3419
- to {
3420
- visibility: hidden;
3421
- -webkit-transform: translate3d(-100%, 0, 0);
3422
- transform: translate3d(-100%, 0, 0);
3423
- }
3424
- }
3425
-
3426
- @keyframes slideOutLeft {
3427
- from {
3428
- -webkit-transform: translate3d(0, 0, 0);
3429
- transform: translate3d(0, 0, 0);
3430
- }
3431
-
3432
- to {
3433
- visibility: hidden;
3434
- -webkit-transform: translate3d(-100%, 0, 0);
3435
- transform: translate3d(-100%, 0, 0);
3436
- }
3437
- }
3438
-
3439
- .slideOutLeft {
3440
- -webkit-animation-name: slideOutLeft;
3441
- animation-name: slideOutLeft;
3442
- }
3443
-
3444
- @-webkit-keyframes slideOutRight {
3445
- from {
3446
- -webkit-transform: translate3d(0, 0, 0);
3447
- transform: translate3d(0, 0, 0);
3448
- }
3449
-
3450
- to {
3451
- visibility: hidden;
3452
- -webkit-transform: translate3d(100%, 0, 0);
3453
- transform: translate3d(100%, 0, 0);
3454
- }
3455
- }
3456
-
3457
- @keyframes slideOutRight {
3458
- from {
3459
- -webkit-transform: translate3d(0, 0, 0);
3460
- transform: translate3d(0, 0, 0);
3461
- }
3462
-
3463
- to {
3464
- visibility: hidden;
3465
- -webkit-transform: translate3d(100%, 0, 0);
3466
- transform: translate3d(100%, 0, 0);
3467
- }
3468
- }
3469
-
3470
- .slideOutRight {
3471
- -webkit-animation-name: slideOutRight;
3472
- animation-name: slideOutRight;
3473
- }
3474
-
3475
- @-webkit-keyframes slideOutUp {
3476
- from {
3477
- -webkit-transform: translate3d(0, 0, 0);
3478
- transform: translate3d(0, 0, 0);
3479
- }
3480
-
3481
- to {
3482
- visibility: hidden;
3483
- -webkit-transform: translate3d(0, -100%, 0);
3484
- transform: translate3d(0, -100%, 0);
3485
- }
3486
- }
3487
-
3488
- @keyframes slideOutUp {
3489
- from {
3490
- -webkit-transform: translate3d(0, 0, 0);
3491
- transform: translate3d(0, 0, 0);
3492
- }
3493
-
3494
- to {
3495
- visibility: hidden;
3496
- -webkit-transform: translate3d(0, -100%, 0);
3497
- transform: translate3d(0, -100%, 0);
3498
- }
3499
- }
3500
-
3501
- .slideOutUp {
3502
- -webkit-animation-name: slideOutUp;
3503
- animation-name: slideOutUp;
3504
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ovo/appmanifest.json DELETED
@@ -1,28 +0,0 @@
1
- {
2
- "name": "OvO",
3
- "short_name": "OvO",
4
- "start_url": "index.html",
5
- "display": "fullscreen",
6
- "orientation": "any",
7
- "icons": [{
8
- "src": "icon-16.png",
9
- "sizes": "16x16",
10
- "type": "image/png"
11
- }, {
12
- "src": "icon-32.png",
13
- "sizes": "32x32",
14
- "type": "image/png"
15
- }, {
16
- "src": "icon-128.png",
17
- "sizes": "128x128",
18
- "type": "image/png"
19
- }, {
20
- "src": "icon-256.png",
21
- "sizes": "144x144",
22
- "type": "image/png"
23
- }, {
24
- "src": "icon-256.png",
25
- "sizes": "256x256",
26
- "type": "image/png"
27
- }]
28
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ovo/astronaut.png DELETED
Binary file (515 Bytes)
 
ovo/batter.png DELETED
Binary file (802 Bytes)
 
ovo/brazilian.png DELETED
Binary file (539 Bytes)
 
ovo/c2runtime.js DELETED
The diff for this file is too large to render. See raw diff
 
ovo/check.png DELETED
Binary file (322 Bytes)
 
ovo/cmg.png DELETED
Binary file (552 Bytes)
 
ovo/coin.png DELETED
Binary file (844 Bytes)
 
ovo/coin10.png DELETED
Binary file (863 Bytes)
 
ovo/coin30.png DELETED
Binary file (875 Bytes)
 
ovo/coin40.png DELETED
Binary file (916 Bytes)
 
ovo/coin5.png DELETED
Binary file (873 Bytes)
 
ovo/coinsecret.png DELETED
Binary file (865 Bytes)
 
ovo/community.png DELETED
Binary file (389 Bytes)
 
ovo/data.js DELETED
The diff for this file is too large to render. See raw diff
 
ovo/default.png DELETED
Binary file (330 Bytes)
 
ovo/dknight.png DELETED
Binary file (517 Bytes)
 
ovo/electrical.png DELETED
Binary file (431 Bytes)
 
ovo/english.png DELETED
Binary file (701 Bytes)
 
ovo/erigato.png DELETED
Binary file (465 Bytes)
 
ovo/fl1ckd.png DELETED
Binary file (995 Bytes)
 
ovo/fonts.css DELETED
@@ -1,9 +0,0 @@
1
- /* @font-face {
2
- font-family: Silver;
3
- src: url(./silver.ttf);
4
- } */
5
-
6
- @font-face {
7
- font-family: Retron2000;
8
- src: url(./retron2000.ttf);
9
- }
 
 
 
 
 
 
 
 
 
 
ovo/frank.png DELETED
Binary file (419 Bytes)
 
ovo/french.png DELETED
Binary file (518 Bytes)
 
ovo/gettingserious.png DELETED
Binary file (272 Bytes)
 
ovo/higherorder.png DELETED
Binary file (274 Bytes)
 
ovo/hmmg_layoutTransition.css DELETED
@@ -1,57 +0,0 @@
1
- #c2canvasdiv.prepared
2
- {
3
- position:absolute !important;
4
- margin:0px !important;
5
- z-index:49;
6
- }
7
-
8
- #fakeBody
9
- {
10
- position:absolute;
11
- z-index:999999999;
12
- overflow:hidden !important;
13
- }
14
-
15
-
16
- #fakeBody #fakeCanvas
17
- {
18
- position:absolute;
19
- top:0px;
20
- z-index:50;
21
- overflow:hidden !important;
22
- height:100%;
23
- width:100%;
24
- }
25
-
26
-
27
- #fakeCanvas div
28
- {
29
- position:absolute;
30
- width:100%;
31
- height:100%;
32
- top:0px;
33
- left:0px;
34
- }
35
- #fakeCanvas div.darker
36
- {
37
- -webkit-transition: background-color 100ms linear ;
38
- -moz-transition: background-color 100ms linear ;
39
- -o-transition: background-color 100ms linear ;
40
- -ms-transition: background-color 100ms linear ;
41
- transition: background-color 100ms linear ;
42
- background-color:rgba(0,0,0,0.3);
43
- }
44
-
45
- #c2canvasdiv.animated
46
- {
47
- z-index:51;
48
- }
49
- #fakeCanvas.animated
50
- {
51
- z-index:49;
52
- }
53
-
54
- .hidden
55
- {
56
- display:none;
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ovo/howler.js DELETED
@@ -1,1987 +0,0 @@
1
- /*! howler.js v2.2.3 | (c) 2013-2020, James Simpson of GoldFire Studios | MIT License | howlerjs.com */
2
- !(function () {
3
- "use strict";
4
- var e = function () {
5
- this.init();
6
- };
7
- e.prototype = {
8
- init: function () {
9
- var e = this || n;
10
- return (
11
- (e._counter = 1e3),
12
- (e._html5AudioPool = []),
13
- (e.html5PoolSize = 10),
14
- (e._codecs = {}),
15
- (e._howls = []),
16
- (e._muted = !1),
17
- (e._volume = 1),
18
- (e._canPlayEvent = "canplaythrough"),
19
- (e._navigator =
20
- "undefined" != typeof window && window.navigator
21
- ? window.navigator
22
- : null),
23
- (e.masterGain = null),
24
- (e.noAudio = !1),
25
- (e.usingWebAudio = !0),
26
- (e.autoSuspend = !0),
27
- (e.ctx = null),
28
- (e.autoUnlock = !0),
29
- e._setup(),
30
- e
31
- );
32
- },
33
- volume: function (e) {
34
- var o = this || n;
35
- if (
36
- ((e = parseFloat(e)), o.ctx || _(), void 0 !== e && e >= 0 && e <= 1)
37
- ) {
38
- if (((o._volume = e), o._muted)) return o;
39
- o.usingWebAudio &&
40
- o.masterGain.gain.setValueAtTime(e, n.ctx.currentTime);
41
- for (var t = 0; t < o._howls.length; t++)
42
- if (!o._howls[t]._webAudio)
43
- for (var r = o._howls[t]._getSoundIds(), a = 0; a < r.length; a++) {
44
- var u = o._howls[t]._soundById(r[a]);
45
- u && u._node && (u._node.volume = u._volume * e);
46
- }
47
- return o;
48
- }
49
- return o._volume;
50
- },
51
- mute: function (e) {
52
- var o = this || n;
53
- o.ctx || _(),
54
- (o._muted = e),
55
- o.usingWebAudio &&
56
- o.masterGain.gain.setValueAtTime(
57
- e ? 0 : o._volume,
58
- n.ctx.currentTime
59
- );
60
- for (var t = 0; t < o._howls.length; t++)
61
- if (!o._howls[t]._webAudio)
62
- for (var r = o._howls[t]._getSoundIds(), a = 0; a < r.length; a++) {
63
- var u = o._howls[t]._soundById(r[a]);
64
- u && u._node && (u._node.muted = !!e || u._muted);
65
- }
66
- return o;
67
- },
68
- stop: function () {
69
- for (var e = this || n, o = 0; o < e._howls.length; o++)
70
- e._howls[o].stop();
71
- return e;
72
- },
73
- unload: function () {
74
- for (var e = this || n, o = e._howls.length - 1; o >= 0; o--)
75
- e._howls[o].unload();
76
- return (
77
- e.usingWebAudio &&
78
- e.ctx &&
79
- void 0 !== e.ctx.close &&
80
- (e.ctx.close(), (e.ctx = null), _()),
81
- e
82
- );
83
- },
84
- codecs: function (e) {
85
- return (this || n)._codecs[e.replace(/^x-/, "")];
86
- },
87
- _setup: function () {
88
- var e = this || n;
89
- if (
90
- ((e.state = e.ctx ? e.ctx.state || "suspended" : "suspended"),
91
- e._autoSuspend(),
92
- !e.usingWebAudio)
93
- )
94
- if ("undefined" != typeof Audio)
95
- try {
96
- var o = new Audio();
97
- void 0 === o.oncanplaythrough && (e._canPlayEvent = "canplay");
98
- } catch (n) {
99
- e.noAudio = !0;
100
- }
101
- else e.noAudio = !0;
102
- try {
103
- var o = new Audio();
104
- o.muted && (e.noAudio = !0);
105
- } catch (e) {}
106
- return e.noAudio || e._setupCodecs(), e;
107
- },
108
- _setupCodecs: function () {
109
- var e = this || n,
110
- o = null;
111
- try {
112
- o = "undefined" != typeof Audio ? new Audio() : null;
113
- } catch (n) {
114
- return e;
115
- }
116
- if (!o || "function" != typeof o.canPlayType) return e;
117
- var t = o.canPlayType("audio/mpeg;").replace(/^no$/, ""),
118
- r = e._navigator ? e._navigator.userAgent : "",
119
- a = r.match(/OPR\/([0-6].)/g),
120
- u = a && parseInt(a[0].split("/")[1], 10) < 33,
121
- d = -1 !== r.indexOf("Safari") && -1 === r.indexOf("Chrome"),
122
- i = r.match(/Version\/(.*?) /),
123
- _ = d && i && parseInt(i[1], 10) < 15;
124
- return (
125
- (e._codecs = {
126
- mp3: !(u || (!t && !o.canPlayType("audio/mp3;").replace(/^no$/, ""))),
127
- mpeg: !!t,
128
- opus: !!o.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, ""),
129
- ogg: !!o
130
- .canPlayType('audio/ogg; codecs="vorbis"')
131
- .replace(/^no$/, ""),
132
- oga: !!o
133
- .canPlayType('audio/ogg; codecs="vorbis"')
134
- .replace(/^no$/, ""),
135
- wav: !!(
136
- o.canPlayType('audio/wav; codecs="1"') || o.canPlayType("audio/wav")
137
- ).replace(/^no$/, ""),
138
- aac: !!o.canPlayType("audio/aac;").replace(/^no$/, ""),
139
- caf: !!o.canPlayType("audio/x-caf;").replace(/^no$/, ""),
140
- m4a: !!(
141
- o.canPlayType("audio/x-m4a;") ||
142
- o.canPlayType("audio/m4a;") ||
143
- o.canPlayType("audio/aac;")
144
- ).replace(/^no$/, ""),
145
- m4b: !!(
146
- o.canPlayType("audio/x-m4b;") ||
147
- o.canPlayType("audio/m4b;") ||
148
- o.canPlayType("audio/aac;")
149
- ).replace(/^no$/, ""),
150
- mp4: !!(
151
- o.canPlayType("audio/x-mp4;") ||
152
- o.canPlayType("audio/mp4;") ||
153
- o.canPlayType("audio/aac;")
154
- ).replace(/^no$/, ""),
155
- weba: !(
156
- _ ||
157
- !o.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, "")
158
- ),
159
- webm: !(
160
- _ ||
161
- !o.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, "")
162
- ),
163
- dolby: !!o
164
- .canPlayType('audio/mp4; codecs="ec-3"')
165
- .replace(/^no$/, ""),
166
- flac: !!(
167
- o.canPlayType("audio/x-flac;") || o.canPlayType("audio/flac;")
168
- ).replace(/^no$/, ""),
169
- }),
170
- e
171
- );
172
- },
173
- _unlockAudio: function () {
174
- var e = this || n;
175
- if (!e._audioUnlocked && e.ctx) {
176
- (e._audioUnlocked = !1),
177
- (e.autoUnlock = !1),
178
- e._mobileUnloaded ||
179
- 44100 === e.ctx.sampleRate ||
180
- ((e._mobileUnloaded = !0), e.unload()),
181
- (e._scratchBuffer = e.ctx.createBuffer(1, 1, 22050));
182
- var o = function (n) {
183
- for (; e._html5AudioPool.length < e.html5PoolSize; )
184
- try {
185
- var t = new Audio();
186
- (t._unlocked = !0), e._releaseHtml5Audio(t);
187
- } catch (n) {
188
- e.noAudio = !0;
189
- break;
190
- }
191
- for (var r = 0; r < e._howls.length; r++)
192
- if (!e._howls[r]._webAudio)
193
- for (
194
- var a = e._howls[r]._getSoundIds(), u = 0;
195
- u < a.length;
196
- u++
197
- ) {
198
- var d = e._howls[r]._soundById(a[u]);
199
- d &&
200
- d._node &&
201
- !d._node._unlocked &&
202
- ((d._node._unlocked = !0), d._node.load());
203
- }
204
- e._autoResume();
205
- var i = e.ctx.createBufferSource();
206
- (i.buffer = e._scratchBuffer),
207
- i.connect(e.ctx.destination),
208
- void 0 === i.start ? i.noteOn(0) : i.start(0),
209
- "function" == typeof e.ctx.resume && e.ctx.resume(),
210
- (i.onended = function () {
211
- i.disconnect(0),
212
- (e._audioUnlocked = !0),
213
- document.removeEventListener("touchstart", o, !0),
214
- document.removeEventListener("touchend", o, !0),
215
- document.removeEventListener("click", o, !0),
216
- document.removeEventListener("keydown", o, !0);
217
- for (var n = 0; n < e._howls.length; n++)
218
- e._howls[n]._emit("unlock");
219
- });
220
- };
221
- return (
222
- document.addEventListener("touchstart", o, !0),
223
- document.addEventListener("touchend", o, !0),
224
- document.addEventListener("click", o, !0),
225
- document.addEventListener("keydown", o, !0),
226
- e
227
- );
228
- }
229
- },
230
- _obtainHtml5Audio: function () {
231
- var e = this || n;
232
- if (e._html5AudioPool.length) return e._html5AudioPool.pop();
233
- var o = new Audio().play();
234
- return (
235
- o &&
236
- "undefined" != typeof Promise &&
237
- (o instanceof Promise || "function" == typeof o.then) &&
238
- o.catch(function () {
239
- console.warn(
240
- "HTML5 Audio pool exhausted, returning potentially locked audio object."
241
- );
242
- }),
243
- new Audio()
244
- );
245
- },
246
- _releaseHtml5Audio: function (e) {
247
- var o = this || n;
248
- return e._unlocked && o._html5AudioPool.push(e), o;
249
- },
250
- _autoSuspend: function () {
251
- var e = this;
252
- if (
253
- e.autoSuspend &&
254
- e.ctx &&
255
- void 0 !== e.ctx.suspend &&
256
- n.usingWebAudio
257
- ) {
258
- for (var o = 0; o < e._howls.length; o++)
259
- if (e._howls[o]._webAudio)
260
- for (var t = 0; t < e._howls[o]._sounds.length; t++)
261
- if (!e._howls[o]._sounds[t]._paused) return e;
262
- return (
263
- e._suspendTimer && clearTimeout(e._suspendTimer),
264
- (e._suspendTimer = setTimeout(function () {
265
- if (e.autoSuspend) {
266
- (e._suspendTimer = null), (e.state = "suspending");
267
- var n = function () {
268
- (e.state = "suspended"),
269
- e._resumeAfterSuspend &&
270
- (delete e._resumeAfterSuspend, e._autoResume());
271
- };
272
- e.ctx.suspend().then(n, n);
273
- }
274
- }, 3e4)),
275
- e
276
- );
277
- }
278
- },
279
- _autoResume: function () {
280
- var e = this;
281
- if (e.ctx && void 0 !== e.ctx.resume && n.usingWebAudio)
282
- return (
283
- "running" === e.state &&
284
- "interrupted" !== e.ctx.state &&
285
- e._suspendTimer
286
- ? (clearTimeout(e._suspendTimer), (e._suspendTimer = null))
287
- : "suspended" === e.state ||
288
- ("running" === e.state && "interrupted" === e.ctx.state)
289
- ? (e.ctx.resume().then(function () {
290
- e.state = "running";
291
- for (var n = 0; n < e._howls.length; n++)
292
- e._howls[n]._emit("resume");
293
- }),
294
- e._suspendTimer &&
295
- (clearTimeout(e._suspendTimer), (e._suspendTimer = null)))
296
- : "suspending" === e.state && (e._resumeAfterSuspend = !0),
297
- e
298
- );
299
- },
300
- };
301
- var n = new e(),
302
- o = function (e) {
303
- var n = this;
304
- if (!e.src || 0 === e.src.length)
305
- return void console.error(
306
- "An array of source files must be passed with any new Howl."
307
- );
308
- n.init(e);
309
- };
310
- o.prototype = {
311
- init: function (e) {
312
- var o = this;
313
- return (
314
- n.ctx || _(),
315
- (o._autoplay = e.autoplay || !1),
316
- (o._format = "string" != typeof e.format ? e.format : [e.format]),
317
- (o._html5 = e.html5 || !1),
318
- (o._muted = e.mute || !1),
319
- (o._loop = e.loop || !1),
320
- (o._pool = e.pool || 5),
321
- (o._preload =
322
- ("boolean" != typeof e.preload && "metadata" !== e.preload) ||
323
- e.preload),
324
- (o._rate = e.rate || 1),
325
- (o._sprite = e.sprite || {}),
326
- (o._src = "string" != typeof e.src ? e.src : [e.src]),
327
- (o._volume = void 0 !== e.volume ? e.volume : 1),
328
- (o._xhr = {
329
- method: e.xhr && e.xhr.method ? e.xhr.method : "GET",
330
- headers: e.xhr && e.xhr.headers ? e.xhr.headers : null,
331
- withCredentials:
332
- !(!e.xhr || !e.xhr.withCredentials) && e.xhr.withCredentials,
333
- }),
334
- (o._duration = 0),
335
- (o._state = "unloaded"),
336
- (o._sounds = []),
337
- (o._endTimers = {}),
338
- (o._queue = []),
339
- (o._playLock = !1),
340
- (o._onend = e.onend ? [{ fn: e.onend }] : []),
341
- (o._onfade = e.onfade ? [{ fn: e.onfade }] : []),
342
- (o._onload = e.onload ? [{ fn: e.onload }] : []),
343
- (o._onloaderror = e.onloaderror ? [{ fn: e.onloaderror }] : []),
344
- (o._onplayerror = e.onplayerror ? [{ fn: e.onplayerror }] : []),
345
- (o._onpause = e.onpause ? [{ fn: e.onpause }] : []),
346
- (o._onplay = e.onplay ? [{ fn: e.onplay }] : []),
347
- (o._onstop = e.onstop ? [{ fn: e.onstop }] : []),
348
- (o._onmute = e.onmute ? [{ fn: e.onmute }] : []),
349
- (o._onvolume = e.onvolume ? [{ fn: e.onvolume }] : []),
350
- (o._onrate = e.onrate ? [{ fn: e.onrate }] : []),
351
- (o._onseek = e.onseek ? [{ fn: e.onseek }] : []),
352
- (o._onunlock = e.onunlock ? [{ fn: e.onunlock }] : []),
353
- (o._onresume = []),
354
- (o._webAudio = n.usingWebAudio && !o._html5),
355
- void 0 !== n.ctx && n.ctx && n.autoUnlock && n._unlockAudio(),
356
- n._howls.push(o),
357
- o._autoplay &&
358
- o._queue.push({
359
- event: "play",
360
- action: function () {
361
- o.play();
362
- },
363
- }),
364
- o._preload && "none" !== o._preload && o.load(),
365
- o
366
- );
367
- },
368
- load: function () {
369
- var e = this,
370
- o = null;
371
- if (n.noAudio)
372
- return void e._emit("loaderror", null, "No audio support.");
373
- "string" == typeof e._src && (e._src = [e._src]);
374
- for (var r = 0; r < e._src.length; r++) {
375
- var u, d;
376
- if (e._format && e._format[r]) u = e._format[r];
377
- else {
378
- if ("string" != typeof (d = e._src[r])) {
379
- e._emit(
380
- "loaderror",
381
- null,
382
- "Non-string found in selected audio sources - ignoring."
383
- );
384
- continue;
385
- }
386
- (u = /^data:audio\/([^;,]+);/i.exec(d)),
387
- u || (u = /\.([^.]+)$/.exec(d.split("?", 1)[0])),
388
- u && (u = u[1].toLowerCase());
389
- }
390
- if (
391
- (u ||
392
- console.warn(
393
- 'No file extension was found. Consider using the "format" property or specify an extension.'
394
- ),
395
- u && n.codecs(u))
396
- ) {
397
- o = e._src[r];
398
- break;
399
- }
400
- }
401
- return o
402
- ? ((e._src = o),
403
- (e._state = "loading"),
404
- "https:" === window.location.protocol &&
405
- "http:" === o.slice(0, 5) &&
406
- ((e._html5 = !0), (e._webAudio = !1)),
407
- new t(e),
408
- e._webAudio && a(e),
409
- e)
410
- : void e._emit(
411
- "loaderror",
412
- null,
413
- "No codec support for selected audio sources."
414
- );
415
- },
416
- play: function (e, o) {
417
- var t = this,
418
- r = null;
419
- if ("number" == typeof e) (r = e), (e = null);
420
- else {
421
- if ("string" == typeof e && "loaded" === t._state && !t._sprite[e])
422
- return null;
423
- if (void 0 === e && ((e = "__default"), !t._playLock)) {
424
- for (var a = 0, u = 0; u < t._sounds.length; u++)
425
- t._sounds[u]._paused &&
426
- !t._sounds[u]._ended &&
427
- (a++, (r = t._sounds[u]._id));
428
- 1 === a ? (e = null) : (r = null);
429
- }
430
- }
431
- var d = r ? t._soundById(r) : t._inactiveSound();
432
- if (!d) return null;
433
- if ((r && !e && (e = d._sprite || "__default"), "loaded" !== t._state)) {
434
- (d._sprite = e), (d._ended = !1);
435
- var i = d._id;
436
- return (
437
- t._queue.push({
438
- event: "play",
439
- action: function () {
440
- t.play(i);
441
- },
442
- }),
443
- i
444
- );
445
- }
446
- if (r && !d._paused) return o || t._loadQueue("play"), d._id;
447
- t._webAudio && n._autoResume();
448
- var _ = Math.max(0, d._seek > 0 ? d._seek : t._sprite[e][0] / 1e3),
449
- s = Math.max(0, (t._sprite[e][0] + t._sprite[e][1]) / 1e3 - _),
450
- l = (1e3 * s) / Math.abs(d._rate),
451
- c = t._sprite[e][0] / 1e3,
452
- f = (t._sprite[e][0] + t._sprite[e][1]) / 1e3;
453
- (d._sprite = e), (d._ended = !1);
454
- var p = function () {
455
- (d._paused = !1),
456
- (d._seek = _),
457
- (d._start = c),
458
- (d._stop = f),
459
- (d._loop = !(!d._loop && !t._sprite[e][2]));
460
- };
461
- if (_ >= f) return void t._ended(d);
462
- var m = d._node;
463
- if (t._webAudio) {
464
- var v = function () {
465
- (t._playLock = !1), p(), t._refreshBuffer(d);
466
- var e = d._muted || t._muted ? 0 : d._volume;
467
- m.gain.setValueAtTime(e, n.ctx.currentTime),
468
- (d._playStart = n.ctx.currentTime),
469
- void 0 === m.bufferSource.start
470
- ? d._loop
471
- ? m.bufferSource.noteGrainOn(0, _, 86400)
472
- : m.bufferSource.noteGrainOn(0, _, s)
473
- : d._loop
474
- ? m.bufferSource.start(0, _, 86400)
475
- : m.bufferSource.start(0, _, s),
476
- l !== 1 / 0 &&
477
- (t._endTimers[d._id] = setTimeout(t._ended.bind(t, d), l)),
478
- o ||
479
- setTimeout(function () {
480
- t._emit("play", d._id), t._loadQueue();
481
- }, 0);
482
- };
483
- "running" === n.state && "interrupted" !== n.ctx.state
484
- ? v()
485
- : ((t._playLock = !0), t.once("resume", v), t._clearTimer(d._id));
486
- } else {
487
- var h = function () {
488
- (m.currentTime = _),
489
- (m.muted = d._muted || t._muted || n._muted || m.muted),
490
- (m.volume = d._volume * n.volume()),
491
- (m.playbackRate = d._rate);
492
- try {
493
- var r = m.play();
494
- if (
495
- (r &&
496
- "undefined" != typeof Promise &&
497
- (r instanceof Promise || "function" == typeof r.then)
498
- ? ((t._playLock = !0),
499
- p(),
500
- r
501
- .then(function () {
502
- (t._playLock = !1),
503
- (m._unlocked = !0),
504
- o ? t._loadQueue() : t._emit("play", d._id);
505
- })
506
- .catch(function () {
507
- (t._playLock = !1),
508
- t._emit(
509
- "playerror",
510
- d._id,
511
- "Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."
512
- ),
513
- (d._ended = !0),
514
- (d._paused = !0);
515
- }))
516
- : o || ((t._playLock = !1), p(), t._emit("play", d._id)),
517
- (m.playbackRate = d._rate),
518
- m.paused)
519
- )
520
- return void t._emit(
521
- "playerror",
522
- d._id,
523
- "Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."
524
- );
525
- "__default" !== e || d._loop
526
- ? (t._endTimers[d._id] = setTimeout(t._ended.bind(t, d), l))
527
- : ((t._endTimers[d._id] = function () {
528
- t._ended(d),
529
- m.removeEventListener("ended", t._endTimers[d._id], !1);
530
- }),
531
- m.addEventListener("ended", t._endTimers[d._id], !1));
532
- } catch (e) {
533
- t._emit("playerror", d._id, e);
534
- }
535
- };
536
- "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA" ===
537
- m.src && ((m.src = t._src), m.load());
538
- var y =
539
- (window && window.ejecta) ||
540
- (!m.readyState && n._navigator.isCocoonJS);
541
- if (m.readyState >= 3 || y) h();
542
- else {
543
- (t._playLock = !0), (t._state = "loading");
544
- var g = function () {
545
- (t._state = "loaded"),
546
- h(),
547
- m.removeEventListener(n._canPlayEvent, g, !1);
548
- };
549
- m.addEventListener(n._canPlayEvent, g, !1), t._clearTimer(d._id);
550
- }
551
- }
552
- return d._id;
553
- },
554
- pause: function (e) {
555
- var n = this;
556
- if ("loaded" !== n._state || n._playLock)
557
- return (
558
- n._queue.push({
559
- event: "pause",
560
- action: function () {
561
- n.pause(e);
562
- },
563
- }),
564
- n
565
- );
566
- for (var o = n._getSoundIds(e), t = 0; t < o.length; t++) {
567
- n._clearTimer(o[t]);
568
- var r = n._soundById(o[t]);
569
- if (
570
- r &&
571
- !r._paused &&
572
- ((r._seek = n.seek(o[t])),
573
- (r._rateSeek = 0),
574
- (r._paused = !0),
575
- n._stopFade(o[t]),
576
- r._node)
577
- )
578
- if (n._webAudio) {
579
- if (!r._node.bufferSource) continue;
580
- void 0 === r._node.bufferSource.stop
581
- ? r._node.bufferSource.noteOff(0)
582
- : r._node.bufferSource.stop(0),
583
- n._cleanBuffer(r._node);
584
- } else
585
- (isNaN(r._node.duration) && r._node.duration !== 1 / 0) ||
586
- r._node.pause();
587
- arguments[1] || n._emit("pause", r ? r._id : null);
588
- }
589
- return n;
590
- },
591
- stop: function (e, n) {
592
- var o = this;
593
- if ("loaded" !== o._state || o._playLock)
594
- return (
595
- o._queue.push({
596
- event: "stop",
597
- action: function () {
598
- o.stop(e);
599
- },
600
- }),
601
- o
602
- );
603
- for (var t = o._getSoundIds(e), r = 0; r < t.length; r++) {
604
- o._clearTimer(t[r]);
605
- var a = o._soundById(t[r]);
606
- a &&
607
- ((a._seek = a._start || 0),
608
- (a._rateSeek = 0),
609
- (a._paused = !0),
610
- (a._ended = !0),
611
- o._stopFade(t[r]),
612
- a._node &&
613
- (o._webAudio
614
- ? a._node.bufferSource &&
615
- (void 0 === a._node.bufferSource.stop
616
- ? a._node.bufferSource.noteOff(0)
617
- : a._node.bufferSource.stop(0),
618
- o._cleanBuffer(a._node))
619
- : (isNaN(a._node.duration) && a._node.duration !== 1 / 0) ||
620
- ((a._node.currentTime = a._start || 0),
621
- a._node.pause(),
622
- a._node.duration === 1 / 0 && o._clearSound(a._node))),
623
- n || o._emit("stop", a._id));
624
- }
625
- return o;
626
- },
627
- mute: function (e, o) {
628
- var t = this;
629
- if ("loaded" !== t._state || t._playLock)
630
- return (
631
- t._queue.push({
632
- event: "mute",
633
- action: function () {
634
- t.mute(e, o);
635
- },
636
- }),
637
- t
638
- );
639
- if (void 0 === o) {
640
- if ("boolean" != typeof e) return t._muted;
641
- t._muted = e;
642
- }
643
- for (var r = t._getSoundIds(o), a = 0; a < r.length; a++) {
644
- var u = t._soundById(r[a]);
645
- u &&
646
- ((u._muted = e),
647
- u._interval && t._stopFade(u._id),
648
- t._webAudio && u._node
649
- ? u._node.gain.setValueAtTime(e ? 0 : u._volume, n.ctx.currentTime)
650
- : u._node && (u._node.muted = !!n._muted || e),
651
- t._emit("mute", u._id));
652
- }
653
- return t;
654
- },
655
- volume: function () {
656
- var e,
657
- o,
658
- t = this,
659
- r = arguments;
660
- if (0 === r.length) return t._volume;
661
- if (1 === r.length || (2 === r.length && void 0 === r[1])) {
662
- t._getSoundIds().indexOf(r[0]) >= 0
663
- ? (o = parseInt(r[0], 10))
664
- : (e = parseFloat(r[0]));
665
- } else
666
- r.length >= 2 && ((e = parseFloat(r[0])), (o = parseInt(r[1], 10)));
667
- var a;
668
- if (!(void 0 !== e && e >= 0 && e <= 1))
669
- return (a = o ? t._soundById(o) : t._sounds[0]), a ? a._volume : 0;
670
- if ("loaded" !== t._state || t._playLock)
671
- return (
672
- t._queue.push({
673
- event: "volume",
674
- action: function () {
675
- t.volume.apply(t, r);
676
- },
677
- }),
678
- t
679
- );
680
- void 0 === o && (t._volume = e), (o = t._getSoundIds(o));
681
- for (var u = 0; u < o.length; u++)
682
- (a = t._soundById(o[u])) &&
683
- ((a._volume = e),
684
- r[2] || t._stopFade(o[u]),
685
- t._webAudio && a._node && !a._muted
686
- ? a._node.gain.setValueAtTime(e, n.ctx.currentTime)
687
- : a._node && !a._muted && (a._node.volume = e * n.volume()),
688
- t._emit("volume", a._id));
689
- return t;
690
- },
691
- fade: function (e, o, t, r) {
692
- var a = this;
693
- if ("loaded" !== a._state || a._playLock)
694
- return (
695
- a._queue.push({
696
- event: "fade",
697
- action: function () {
698
- a.fade(e, o, t, r);
699
- },
700
- }),
701
- a
702
- );
703
- (e = Math.min(Math.max(0, parseFloat(e)), 1)),
704
- (o = Math.min(Math.max(0, parseFloat(o)), 1)),
705
- (t = parseFloat(t)),
706
- a.volume(e, r);
707
- for (var u = a._getSoundIds(r), d = 0; d < u.length; d++) {
708
- var i = a._soundById(u[d]);
709
- if (i) {
710
- if ((r || a._stopFade(u[d]), a._webAudio && !i._muted)) {
711
- var _ = n.ctx.currentTime,
712
- s = _ + t / 1e3;
713
- (i._volume = e),
714
- i._node.gain.setValueAtTime(e, _),
715
- i._node.gain.linearRampToValueAtTime(o, s);
716
- }
717
- a._startFadeInterval(i, e, o, t, u[d], void 0 === r);
718
- }
719
- }
720
- return a;
721
- },
722
- _startFadeInterval: function (e, n, o, t, r, a) {
723
- var u = this,
724
- d = n,
725
- i = o - n,
726
- _ = Math.abs(i / 0.01),
727
- s = Math.max(4, _ > 0 ? t / _ : t),
728
- l = Date.now();
729
- (e._fadeTo = o),
730
- (e._interval = setInterval(function () {
731
- var r = (Date.now() - l) / t;
732
- (l = Date.now()),
733
- (d += i * r),
734
- (d = Math.round(100 * d) / 100),
735
- (d = i < 0 ? Math.max(o, d) : Math.min(o, d)),
736
- u._webAudio ? (e._volume = d) : u.volume(d, e._id, !0),
737
- a && (u._volume = d),
738
- ((o < n && d <= o) || (o > n && d >= o)) &&
739
- (clearInterval(e._interval),
740
- (e._interval = null),
741
- (e._fadeTo = null),
742
- u.volume(o, e._id),
743
- u._emit("fade", e._id));
744
- }, s));
745
- },
746
- _stopFade: function (e) {
747
- var o = this,
748
- t = o._soundById(e);
749
- return (
750
- t &&
751
- t._interval &&
752
- (o._webAudio && t._node.gain.cancelScheduledValues(n.ctx.currentTime),
753
- clearInterval(t._interval),
754
- (t._interval = null),
755
- o.volume(t._fadeTo, e),
756
- (t._fadeTo = null),
757
- o._emit("fade", e)),
758
- o
759
- );
760
- },
761
- loop: function () {
762
- var e,
763
- n,
764
- o,
765
- t = this,
766
- r = arguments;
767
- if (0 === r.length) return t._loop;
768
- if (1 === r.length) {
769
- if ("boolean" != typeof r[0])
770
- return !!(o = t._soundById(parseInt(r[0], 10))) && o._loop;
771
- (e = r[0]), (t._loop = e);
772
- } else 2 === r.length && ((e = r[0]), (n = parseInt(r[1], 10)));
773
- for (var a = t._getSoundIds(n), u = 0; u < a.length; u++)
774
- (o = t._soundById(a[u])) &&
775
- ((o._loop = e),
776
- t._webAudio &&
777
- o._node &&
778
- o._node.bufferSource &&
779
- ((o._node.bufferSource.loop = e),
780
- e &&
781
- ((o._node.bufferSource.loopStart = o._start || 0),
782
- (o._node.bufferSource.loopEnd = o._stop),
783
- t.playing(a[u]) && (t.pause(a[u], !0), t.play(a[u], !0)))));
784
- return t;
785
- },
786
- rate: function () {
787
- var e,
788
- o,
789
- t = this,
790
- r = arguments;
791
- if (0 === r.length) o = t._sounds[0]._id;
792
- else if (1 === r.length) {
793
- var a = t._getSoundIds(),
794
- u = a.indexOf(r[0]);
795
- u >= 0 ? (o = parseInt(r[0], 10)) : (e = parseFloat(r[0]));
796
- } else
797
- 2 === r.length && ((e = parseFloat(r[0])), (o = parseInt(r[1], 10)));
798
- var d;
799
- if ("number" != typeof e)
800
- return (d = t._soundById(o)), d ? d._rate : t._rate;
801
- if ("loaded" !== t._state || t._playLock)
802
- return (
803
- t._queue.push({
804
- event: "rate",
805
- action: function () {
806
- t.rate.apply(t, r);
807
- },
808
- }),
809
- t
810
- );
811
- void 0 === o && (t._rate = e), (o = t._getSoundIds(o));
812
- for (var i = 0; i < o.length; i++)
813
- if ((d = t._soundById(o[i]))) {
814
- t.playing(o[i]) &&
815
- ((d._rateSeek = t.seek(o[i])),
816
- (d._playStart = t._webAudio ? n.ctx.currentTime : d._playStart)),
817
- (d._rate = e),
818
- t._webAudio && d._node && d._node.bufferSource
819
- ? d._node.bufferSource.playbackRate.setValueAtTime(
820
- e,
821
- n.ctx.currentTime
822
- )
823
- : d._node && (d._node.playbackRate = e);
824
- var _ = t.seek(o[i]),
825
- s = (t._sprite[d._sprite][0] + t._sprite[d._sprite][1]) / 1e3 - _,
826
- l = (1e3 * s) / Math.abs(d._rate);
827
- (!t._endTimers[o[i]] && d._paused) ||
828
- (t._clearTimer(o[i]),
829
- (t._endTimers[o[i]] = setTimeout(t._ended.bind(t, d), l))),
830
- t._emit("rate", d._id);
831
- }
832
- return t;
833
- },
834
- seek: function () {
835
- var e,
836
- o,
837
- t = this,
838
- r = arguments;
839
- if (0 === r.length) t._sounds.length && (o = t._sounds[0]._id);
840
- else if (1 === r.length) {
841
- var a = t._getSoundIds(),
842
- u = a.indexOf(r[0]);
843
- u >= 0
844
- ? (o = parseInt(r[0], 10))
845
- : t._sounds.length &&
846
- ((o = t._sounds[0]._id), (e = parseFloat(r[0])));
847
- } else
848
- 2 === r.length && ((e = parseFloat(r[0])), (o = parseInt(r[1], 10)));
849
- if (void 0 === o) return 0;
850
- if ("number" == typeof e && ("loaded" !== t._state || t._playLock))
851
- return (
852
- t._queue.push({
853
- event: "seek",
854
- action: function () {
855
- t.seek.apply(t, r);
856
- },
857
- }),
858
- t
859
- );
860
- var d = t._soundById(o);
861
- if (d) {
862
- if (!("number" == typeof e && e >= 0)) {
863
- if (t._webAudio) {
864
- var i = t.playing(o) ? n.ctx.currentTime - d._playStart : 0,
865
- _ = d._rateSeek ? d._rateSeek - d._seek : 0;
866
- return d._seek + (_ + i * Math.abs(d._rate));
867
- }
868
- return d._node.currentTime;
869
- }
870
- var s = t.playing(o);
871
- s && t.pause(o, !0),
872
- (d._seek = e),
873
- (d._ended = !1),
874
- t._clearTimer(o),
875
- t._webAudio ||
876
- !d._node ||
877
- isNaN(d._node.duration) ||
878
- (d._node.currentTime = e);
879
- var l = function () {
880
- s && t.play(o, !0), t._emit("seek", o);
881
- };
882
- if (s && !t._webAudio) {
883
- var c = function () {
884
- t._playLock ? setTimeout(c, 0) : l();
885
- };
886
- setTimeout(c, 0);
887
- } else l();
888
- }
889
- return t;
890
- },
891
- playing: function (e) {
892
- var n = this;
893
- if ("number" == typeof e) {
894
- var o = n._soundById(e);
895
- return !!o && !o._paused;
896
- }
897
- for (var t = 0; t < n._sounds.length; t++)
898
- if (!n._sounds[t]._paused) return !0;
899
- return !1;
900
- },
901
- duration: function (e) {
902
- var n = this,
903
- o = n._duration,
904
- t = n._soundById(e);
905
- return t && (o = n._sprite[t._sprite][1] / 1e3), o;
906
- },
907
- state: function () {
908
- return this._state;
909
- },
910
- unload: function () {
911
- for (var e = this, o = e._sounds, t = 0; t < o.length; t++)
912
- o[t]._paused || e.stop(o[t]._id),
913
- e._webAudio ||
914
- (e._clearSound(o[t]._node),
915
- o[t]._node.removeEventListener("error", o[t]._errorFn, !1),
916
- o[t]._node.removeEventListener(n._canPlayEvent, o[t]._loadFn, !1),
917
- o[t]._node.removeEventListener("ended", o[t]._endFn, !1),
918
- n._releaseHtml5Audio(o[t]._node)),
919
- delete o[t]._node,
920
- e._clearTimer(o[t]._id);
921
- var a = n._howls.indexOf(e);
922
- a >= 0 && n._howls.splice(a, 1);
923
- var u = !0;
924
- for (t = 0; t < n._howls.length; t++)
925
- if (
926
- n._howls[t]._src === e._src ||
927
- e._src.indexOf(n._howls[t]._src) >= 0
928
- ) {
929
- u = !1;
930
- break;
931
- }
932
- return (
933
- r && u && delete r[e._src],
934
- (n.noAudio = !1),
935
- (e._state = "unloaded"),
936
- (e._sounds = []),
937
- (e = null),
938
- null
939
- );
940
- },
941
- on: function (e, n, o, t) {
942
- var r = this,
943
- a = r["_on" + e];
944
- return (
945
- "function" == typeof n &&
946
- a.push(t ? { id: o, fn: n, once: t } : { id: o, fn: n }),
947
- r
948
- );
949
- },
950
- off: function (e, n, o) {
951
- var t = this,
952
- r = t["_on" + e],
953
- a = 0;
954
- if (("number" == typeof n && ((o = n), (n = null)), n || o))
955
- for (a = 0; a < r.length; a++) {
956
- var u = o === r[a].id;
957
- if ((n === r[a].fn && u) || (!n && u)) {
958
- r.splice(a, 1);
959
- break;
960
- }
961
- }
962
- else if (e) t["_on" + e] = [];
963
- else {
964
- var d = Object.keys(t);
965
- for (a = 0; a < d.length; a++)
966
- 0 === d[a].indexOf("_on") && Array.isArray(t[d[a]]) && (t[d[a]] = []);
967
- }
968
- return t;
969
- },
970
- once: function (e, n, o) {
971
- var t = this;
972
- return t.on(e, n, o, 1), t;
973
- },
974
- _emit: function (e, n, o) {
975
- for (var t = this, r = t["_on" + e], a = r.length - 1; a >= 0; a--)
976
- (r[a].id && r[a].id !== n && "load" !== e) ||
977
- (setTimeout(
978
- function (e) {
979
- e.call(this, n, o);
980
- }.bind(t, r[a].fn),
981
- 0
982
- ),
983
- r[a].once && t.off(e, r[a].fn, r[a].id));
984
- return t._loadQueue(e), t;
985
- },
986
- _loadQueue: function (e) {
987
- var n = this;
988
- if (n._queue.length > 0) {
989
- var o = n._queue[0];
990
- o.event === e && (n._queue.shift(), n._loadQueue()), e || o.action();
991
- }
992
- return n;
993
- },
994
- _ended: function (e) {
995
- var o = this,
996
- t = e._sprite;
997
- if (
998
- !o._webAudio &&
999
- e._node &&
1000
- !e._node.paused &&
1001
- !e._node.ended &&
1002
- e._node.currentTime < e._stop
1003
- )
1004
- return setTimeout(o._ended.bind(o, e), 100), o;
1005
- var r = !(!e._loop && !o._sprite[t][2]);
1006
- if (
1007
- (o._emit("end", e._id),
1008
- !o._webAudio && r && o.stop(e._id, !0).play(e._id),
1009
- o._webAudio && r)
1010
- ) {
1011
- o._emit("play", e._id),
1012
- (e._seek = e._start || 0),
1013
- (e._rateSeek = 0),
1014
- (e._playStart = n.ctx.currentTime);
1015
- var a = (1e3 * (e._stop - e._start)) / Math.abs(e._rate);
1016
- o._endTimers[e._id] = setTimeout(o._ended.bind(o, e), a);
1017
- }
1018
- return (
1019
- o._webAudio &&
1020
- !r &&
1021
- ((e._paused = !0),
1022
- (e._ended = !0),
1023
- (e._seek = e._start || 0),
1024
- (e._rateSeek = 0),
1025
- o._clearTimer(e._id),
1026
- o._cleanBuffer(e._node),
1027
- n._autoSuspend()),
1028
- o._webAudio || r || o.stop(e._id, !0),
1029
- o
1030
- );
1031
- },
1032
- _clearTimer: function (e) {
1033
- var n = this;
1034
- if (n._endTimers[e]) {
1035
- if ("function" != typeof n._endTimers[e]) clearTimeout(n._endTimers[e]);
1036
- else {
1037
- var o = n._soundById(e);
1038
- o &&
1039
- o._node &&
1040
- o._node.removeEventListener("ended", n._endTimers[e], !1);
1041
- }
1042
- delete n._endTimers[e];
1043
- }
1044
- return n;
1045
- },
1046
- _soundById: function (e) {
1047
- for (var n = this, o = 0; o < n._sounds.length; o++)
1048
- if (e === n._sounds[o]._id) return n._sounds[o];
1049
- return null;
1050
- },
1051
- _inactiveSound: function () {
1052
- var e = this;
1053
- e._drain();
1054
- for (var n = 0; n < e._sounds.length; n++)
1055
- if (e._sounds[n]._ended) return e._sounds[n].reset();
1056
- return new t(e);
1057
- },
1058
- _drain: function () {
1059
- var e = this,
1060
- n = e._pool,
1061
- o = 0,
1062
- t = 0;
1063
- if (!(e._sounds.length < n)) {
1064
- for (t = 0; t < e._sounds.length; t++) e._sounds[t]._ended && o++;
1065
- for (t = e._sounds.length - 1; t >= 0; t--) {
1066
- if (o <= n) return;
1067
- e._sounds[t]._ended &&
1068
- (e._webAudio &&
1069
- e._sounds[t]._node &&
1070
- e._sounds[t]._node.disconnect(0),
1071
- e._sounds.splice(t, 1),
1072
- o--);
1073
- }
1074
- }
1075
- },
1076
- _getSoundIds: function (e) {
1077
- var n = this;
1078
- if (void 0 === e) {
1079
- for (var o = [], t = 0; t < n._sounds.length; t++)
1080
- o.push(n._sounds[t]._id);
1081
- return o;
1082
- }
1083
- return [e];
1084
- },
1085
- _refreshBuffer: function (e) {
1086
- var o = this;
1087
- return (
1088
- (e._node.bufferSource = n.ctx.createBufferSource()),
1089
- (e._node.bufferSource.buffer = r[o._src]),
1090
- e._panner
1091
- ? e._node.bufferSource.connect(e._panner)
1092
- : e._node.bufferSource.connect(e._node),
1093
- (e._node.bufferSource.loop = e._loop),
1094
- e._loop &&
1095
- ((e._node.bufferSource.loopStart = e._start || 0),
1096
- (e._node.bufferSource.loopEnd = e._stop || 0)),
1097
- e._node.bufferSource.playbackRate.setValueAtTime(
1098
- e._rate,
1099
- n.ctx.currentTime
1100
- ),
1101
- o
1102
- );
1103
- },
1104
- _cleanBuffer: function (e) {
1105
- var o = this,
1106
- t = n._navigator && n._navigator.vendor.indexOf("Apple") >= 0;
1107
- if (
1108
- n._scratchBuffer &&
1109
- e.bufferSource &&
1110
- ((e.bufferSource.onended = null), e.bufferSource.disconnect(0), t)
1111
- )
1112
- try {
1113
- e.bufferSource.buffer = n._scratchBuffer;
1114
- } catch (e) {}
1115
- return (e.bufferSource = null), o;
1116
- },
1117
- _clearSound: function (e) {
1118
- /MSIE |Trident\//.test(n._navigator && n._navigator.userAgent) ||
1119
- (e.src =
1120
- "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA");
1121
- },
1122
- };
1123
- var t = function (e) {
1124
- (this._parent = e), this.init();
1125
- };
1126
- t.prototype = {
1127
- init: function () {
1128
- var e = this,
1129
- o = e._parent;
1130
- return (
1131
- (e._muted = o._muted),
1132
- (e._loop = o._loop),
1133
- (e._volume = o._volume),
1134
- (e._rate = o._rate),
1135
- (e._seek = 0),
1136
- (e._paused = !0),
1137
- (e._ended = !0),
1138
- (e._sprite = "__default"),
1139
- (e._id = ++n._counter),
1140
- o._sounds.push(e),
1141
- e.create(),
1142
- e
1143
- );
1144
- },
1145
- create: function () {
1146
- var e = this,
1147
- o = e._parent,
1148
- t = n._muted || e._muted || e._parent._muted ? 0 : e._volume;
1149
- return (
1150
- o._webAudio
1151
- ? ((e._node =
1152
- void 0 === n.ctx.createGain
1153
- ? n.ctx.createGainNode()
1154
- : n.ctx.createGain()),
1155
- e._node.gain.setValueAtTime(t, n.ctx.currentTime),
1156
- (e._node.paused = !0),
1157
- e._node.connect(n.masterGain))
1158
- : n.noAudio ||
1159
- ((e._node = n._obtainHtml5Audio()),
1160
- (e._errorFn = e._errorListener.bind(e)),
1161
- e._node.addEventListener("error", e._errorFn, !1),
1162
- (e._loadFn = e._loadListener.bind(e)),
1163
- e._node.addEventListener(n._canPlayEvent, e._loadFn, !1),
1164
- (e._endFn = e._endListener.bind(e)),
1165
- e._node.addEventListener("ended", e._endFn, !1),
1166
- (e._node.src = o._src),
1167
- (e._node.preload = !0 === o._preload ? "auto" : o._preload),
1168
- (e._node.volume = t * n.volume()),
1169
- e._node.load()),
1170
- e
1171
- );
1172
- },
1173
- reset: function () {
1174
- var e = this,
1175
- o = e._parent;
1176
- return (
1177
- (e._muted = o._muted),
1178
- (e._loop = o._loop),
1179
- (e._volume = o._volume),
1180
- (e._rate = o._rate),
1181
- (e._seek = 0),
1182
- (e._rateSeek = 0),
1183
- (e._paused = !0),
1184
- (e._ended = !0),
1185
- (e._sprite = "__default"),
1186
- (e._id = ++n._counter),
1187
- e
1188
- );
1189
- },
1190
- _errorListener: function () {
1191
- var e = this;
1192
- e._parent._emit(
1193
- "loaderror",
1194
- e._id,
1195
- e._node.error ? e._node.error.code : 0
1196
- ),
1197
- e._node.removeEventListener("error", e._errorFn, !1);
1198
- },
1199
- _loadListener: function () {
1200
- var e = this,
1201
- o = e._parent;
1202
- (o._duration = Math.ceil(10 * e._node.duration) / 10),
1203
- 0 === Object.keys(o._sprite).length &&
1204
- (o._sprite = { __default: [0, 1e3 * o._duration] }),
1205
- "loaded" !== o._state &&
1206
- ((o._state = "loaded"), o._emit("load"), o._loadQueue()),
1207
- e._node.removeEventListener(n._canPlayEvent, e._loadFn, !1);
1208
- },
1209
- _endListener: function () {
1210
- var e = this,
1211
- n = e._parent;
1212
- n._duration === 1 / 0 &&
1213
- ((n._duration = Math.ceil(10 * e._node.duration) / 10),
1214
- n._sprite.__default[1] === 1 / 0 &&
1215
- (n._sprite.__default[1] = 1e3 * n._duration),
1216
- n._ended(e)),
1217
- e._node.removeEventListener("ended", e._endFn, !1);
1218
- },
1219
- };
1220
- var r = {},
1221
- a = function (e) {
1222
- var n = e._src;
1223
- if (r[n]) return (e._duration = r[n].duration), void i(e);
1224
- if (/^data:[^;]+;base64,/.test(n)) {
1225
- for (
1226
- var o = atob(n.split(",")[1]), t = new Uint8Array(o.length), a = 0;
1227
- a < o.length;
1228
- ++a
1229
- )
1230
- t[a] = o.charCodeAt(a);
1231
- d(t.buffer, e);
1232
- } else {
1233
- var _ = new XMLHttpRequest();
1234
- _.open(e._xhr.method, n, !0),
1235
- (_.withCredentials = e._xhr.withCredentials),
1236
- (_.responseType = "arraybuffer"),
1237
- e._xhr.headers &&
1238
- Object.keys(e._xhr.headers).forEach(function (n) {
1239
- _.setRequestHeader(n, e._xhr.headers[n]);
1240
- }),
1241
- (_.onload = function () {
1242
- var n = (_.status + "")[0];
1243
- if ("0" !== n && "2" !== n && "3" !== n)
1244
- return void e._emit(
1245
- "loaderror",
1246
- null,
1247
- "Failed loading audio file with status: " + _.status + "."
1248
- );
1249
- d(_.response, e);
1250
- }),
1251
- (_.onerror = function () {
1252
- e._webAudio &&
1253
- ((e._html5 = !0),
1254
- (e._webAudio = !1),
1255
- (e._sounds = []),
1256
- delete r[n],
1257
- e.load());
1258
- }),
1259
- u(_);
1260
- }
1261
- },
1262
- u = function (e) {
1263
- try {
1264
- e.send();
1265
- } catch (n) {
1266
- e.onerror();
1267
- }
1268
- },
1269
- d = function (e, o) {
1270
- var t = function () {
1271
- o._emit("loaderror", null, "Decoding audio data failed.");
1272
- },
1273
- a = function (e) {
1274
- e && o._sounds.length > 0 ? ((r[o._src] = e), i(o, e)) : t();
1275
- };
1276
- "undefined" != typeof Promise && 1 === n.ctx.decodeAudioData.length
1277
- ? n.ctx.decodeAudioData(e).then(a).catch(t)
1278
- : n.ctx.decodeAudioData(e, a, t);
1279
- },
1280
- i = function (e, n) {
1281
- n && !e._duration && (e._duration = n.duration),
1282
- 0 === Object.keys(e._sprite).length &&
1283
- (e._sprite = { __default: [0, 1e3 * e._duration] }),
1284
- "loaded" !== e._state &&
1285
- ((e._state = "loaded"), e._emit("load"), e._loadQueue());
1286
- },
1287
- _ = function () {
1288
- if (n.usingWebAudio) {
1289
- try {
1290
- "undefined" != typeof AudioContext
1291
- ? (n.ctx = new AudioContext())
1292
- : "undefined" != typeof webkitAudioContext
1293
- ? (n.ctx = new webkitAudioContext())
1294
- : (n.usingWebAudio = !1);
1295
- } catch (e) {
1296
- n.usingWebAudio = !1;
1297
- }
1298
- n.ctx || (n.usingWebAudio = !1);
1299
- var e = /iP(hone|od|ad)/.test(n._navigator && n._navigator.platform),
1300
- o =
1301
- n._navigator &&
1302
- n._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),
1303
- t = o ? parseInt(o[1], 10) : null;
1304
- if (e && t && t < 9) {
1305
- var r = /safari/.test(
1306
- n._navigator && n._navigator.userAgent.toLowerCase()
1307
- );
1308
- n._navigator && !r && (n.usingWebAudio = !1);
1309
- }
1310
- n.usingWebAudio &&
1311
- ((n.masterGain =
1312
- void 0 === n.ctx.createGain
1313
- ? n.ctx.createGainNode()
1314
- : n.ctx.createGain()),
1315
- n.masterGain.gain.setValueAtTime(
1316
- n._muted ? 0 : n._volume,
1317
- n.ctx.currentTime
1318
- ),
1319
- n.masterGain.connect(n.ctx.destination)),
1320
- n._setup();
1321
- }
1322
- };
1323
- "function" == typeof define &&
1324
- define.amd &&
1325
- define([], function () {
1326
- return { Howler: n, Howl: o };
1327
- }),
1328
- "undefined" != typeof exports && ((exports.Howler = n), (exports.Howl = o)),
1329
- "undefined" != typeof global
1330
- ? ((global.HowlerGlobal = e),
1331
- (global.Howler = n),
1332
- (global.Howl = o),
1333
- (global.Sound = t))
1334
- : "undefined" != typeof window &&
1335
- ((window.HowlerGlobal = e),
1336
- (window.Howler = n),
1337
- (window.Howl = o),
1338
- (window.Sound = t));
1339
- })();
1340
- /*! Spatial Plugin */
1341
- !(function () {
1342
- "use strict";
1343
- (HowlerGlobal.prototype._pos = [0, 0, 0]),
1344
- (HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0]),
1345
- (HowlerGlobal.prototype.stereo = function (e) {
1346
- var n = this;
1347
- if (!n.ctx || !n.ctx.listener) return n;
1348
- for (var t = n._howls.length - 1; t >= 0; t--) n._howls[t].stereo(e);
1349
- return n;
1350
- }),
1351
- (HowlerGlobal.prototype.pos = function (e, n, t) {
1352
- var r = this;
1353
- return r.ctx && r.ctx.listener
1354
- ? ((n = "number" != typeof n ? r._pos[1] : n),
1355
- (t = "number" != typeof t ? r._pos[2] : t),
1356
- "number" != typeof e
1357
- ? r._pos
1358
- : ((r._pos = [e, n, t]),
1359
- void 0 !== r.ctx.listener.positionX
1360
- ? (r.ctx.listener.positionX.setTargetAtTime(
1361
- r._pos[0],
1362
- Howler.ctx.currentTime,
1363
- 0.1
1364
- ),
1365
- r.ctx.listener.positionY.setTargetAtTime(
1366
- r._pos[1],
1367
- Howler.ctx.currentTime,
1368
- 0.1
1369
- ),
1370
- r.ctx.listener.positionZ.setTargetAtTime(
1371
- r._pos[2],
1372
- Howler.ctx.currentTime,
1373
- 0.1
1374
- ))
1375
- : r.ctx.listener.setPosition(r._pos[0], r._pos[1], r._pos[2]),
1376
- r))
1377
- : r;
1378
- }),
1379
- (HowlerGlobal.prototype.orientation = function (e, n, t, r, o, i) {
1380
- var a = this;
1381
- if (!a.ctx || !a.ctx.listener) return a;
1382
- var s = a._orientation;
1383
- return (
1384
- (n = "number" != typeof n ? s[1] : n),
1385
- (t = "number" != typeof t ? s[2] : t),
1386
- (r = "number" != typeof r ? s[3] : r),
1387
- (o = "number" != typeof o ? s[4] : o),
1388
- (i = "number" != typeof i ? s[5] : i),
1389
- "number" != typeof e
1390
- ? s
1391
- : ((a._orientation = [e, n, t, r, o, i]),
1392
- void 0 !== a.ctx.listener.forwardX
1393
- ? (a.ctx.listener.forwardX.setTargetAtTime(
1394
- e,
1395
- Howler.ctx.currentTime,
1396
- 0.1
1397
- ),
1398
- a.ctx.listener.forwardY.setTargetAtTime(
1399
- n,
1400
- Howler.ctx.currentTime,
1401
- 0.1
1402
- ),
1403
- a.ctx.listener.forwardZ.setTargetAtTime(
1404
- t,
1405
- Howler.ctx.currentTime,
1406
- 0.1
1407
- ),
1408
- a.ctx.listener.upX.setTargetAtTime(
1409
- r,
1410
- Howler.ctx.currentTime,
1411
- 0.1
1412
- ),
1413
- a.ctx.listener.upY.setTargetAtTime(
1414
- o,
1415
- Howler.ctx.currentTime,
1416
- 0.1
1417
- ),
1418
- a.ctx.listener.upZ.setTargetAtTime(
1419
- i,
1420
- Howler.ctx.currentTime,
1421
- 0.1
1422
- ))
1423
- : a.ctx.listener.setOrientation(e, n, t, r, o, i),
1424
- a)
1425
- );
1426
- }),
1427
- (Howl.prototype.init = (function (e) {
1428
- return function (n) {
1429
- var t = this;
1430
- return (
1431
- (t._orientation = n.orientation || [1, 0, 0]),
1432
- (t._stereo = n.stereo || null),
1433
- (t._pos = n.pos || null),
1434
- (t._pannerAttr = {
1435
- coneInnerAngle:
1436
- void 0 !== n.coneInnerAngle ? n.coneInnerAngle : 360,
1437
- coneOuterAngle:
1438
- void 0 !== n.coneOuterAngle ? n.coneOuterAngle : 360,
1439
- coneOuterGain: void 0 !== n.coneOuterGain ? n.coneOuterGain : 0,
1440
- distanceModel:
1441
- void 0 !== n.distanceModel ? n.distanceModel : "inverse",
1442
- maxDistance: void 0 !== n.maxDistance ? n.maxDistance : 1e4,
1443
- panningModel: void 0 !== n.panningModel ? n.panningModel : "HRTF",
1444
- refDistance: void 0 !== n.refDistance ? n.refDistance : 1,
1445
- rolloffFactor: void 0 !== n.rolloffFactor ? n.rolloffFactor : 1,
1446
- }),
1447
- (t._onstereo = n.onstereo ? [{ fn: n.onstereo }] : []),
1448
- (t._onpos = n.onpos ? [{ fn: n.onpos }] : []),
1449
- (t._onorientation = n.onorientation ? [{ fn: n.onorientation }] : []),
1450
- e.call(this, n)
1451
- );
1452
- };
1453
- })(Howl.prototype.init)),
1454
- (Howl.prototype.stereo = function (n, t) {
1455
- var r = this;
1456
- if (!r._webAudio) return r;
1457
- if ("loaded" !== r._state)
1458
- return (
1459
- r._queue.push({
1460
- event: "stereo",
1461
- action: function () {
1462
- r.stereo(n, t);
1463
- },
1464
- }),
1465
- r
1466
- );
1467
- var o = void 0 === Howler.ctx.createStereoPanner ? "spatial" : "stereo";
1468
- if (void 0 === t) {
1469
- if ("number" != typeof n) return r._stereo;
1470
- (r._stereo = n), (r._pos = [n, 0, 0]);
1471
- }
1472
- for (var i = r._getSoundIds(t), a = 0; a < i.length; a++) {
1473
- var s = r._soundById(i[a]);
1474
- if (s) {
1475
- if ("number" != typeof n) return s._stereo;
1476
- (s._stereo = n),
1477
- (s._pos = [n, 0, 0]),
1478
- s._node &&
1479
- ((s._pannerAttr.panningModel = "equalpower"),
1480
- (s._panner && s._panner.pan) || e(s, o),
1481
- "spatial" === o
1482
- ? void 0 !== s._panner.positionX
1483
- ? (s._panner.positionX.setValueAtTime(
1484
- n,
1485
- Howler.ctx.currentTime
1486
- ),
1487
- s._panner.positionY.setValueAtTime(
1488
- 0,
1489
- Howler.ctx.currentTime
1490
- ),
1491
- s._panner.positionZ.setValueAtTime(
1492
- 0,
1493
- Howler.ctx.currentTime
1494
- ))
1495
- : s._panner.setPosition(n, 0, 0)
1496
- : s._panner.pan.setValueAtTime(n, Howler.ctx.currentTime)),
1497
- r._emit("stereo", s._id);
1498
- }
1499
- }
1500
- return r;
1501
- }),
1502
- (Howl.prototype.pos = function (n, t, r, o) {
1503
- var i = this;
1504
- if (!i._webAudio) return i;
1505
- if ("loaded" !== i._state)
1506
- return (
1507
- i._queue.push({
1508
- event: "pos",
1509
- action: function () {
1510
- i.pos(n, t, r, o);
1511
- },
1512
- }),
1513
- i
1514
- );
1515
- if (
1516
- ((t = "number" != typeof t ? 0 : t),
1517
- (r = "number" != typeof r ? -0.5 : r),
1518
- void 0 === o)
1519
- ) {
1520
- if ("number" != typeof n) return i._pos;
1521
- i._pos = [n, t, r];
1522
- }
1523
- for (var a = i._getSoundIds(o), s = 0; s < a.length; s++) {
1524
- var p = i._soundById(a[s]);
1525
- if (p) {
1526
- if ("number" != typeof n) return p._pos;
1527
- (p._pos = [n, t, r]),
1528
- p._node &&
1529
- ((p._panner && !p._panner.pan) || e(p, "spatial"),
1530
- void 0 !== p._panner.positionX
1531
- ? (p._panner.positionX.setValueAtTime(
1532
- n,
1533
- Howler.ctx.currentTime
1534
- ),
1535
- p._panner.positionY.setValueAtTime(t, Howler.ctx.currentTime),
1536
- p._panner.positionZ.setValueAtTime(r, Howler.ctx.currentTime))
1537
- : p._panner.setPosition(n, t, r)),
1538
- i._emit("pos", p._id);
1539
- }
1540
- }
1541
- return i;
1542
- }),
1543
- (Howl.prototype.orientation = function (n, t, r, o) {
1544
- var i = this;
1545
- if (!i._webAudio) return i;
1546
- if ("loaded" !== i._state)
1547
- return (
1548
- i._queue.push({
1549
- event: "orientation",
1550
- action: function () {
1551
- i.orientation(n, t, r, o);
1552
- },
1553
- }),
1554
- i
1555
- );
1556
- if (
1557
- ((t = "number" != typeof t ? i._orientation[1] : t),
1558
- (r = "number" != typeof r ? i._orientation[2] : r),
1559
- void 0 === o)
1560
- ) {
1561
- if ("number" != typeof n) return i._orientation;
1562
- i._orientation = [n, t, r];
1563
- }
1564
- for (var a = i._getSoundIds(o), s = 0; s < a.length; s++) {
1565
- var p = i._soundById(a[s]);
1566
- if (p) {
1567
- if ("number" != typeof n) return p._orientation;
1568
- (p._orientation = [n, t, r]),
1569
- p._node &&
1570
- (p._panner ||
1571
- (p._pos || (p._pos = i._pos || [0, 0, -0.5]), e(p, "spatial")),
1572
- void 0 !== p._panner.orientationX
1573
- ? (p._panner.orientationX.setValueAtTime(
1574
- n,
1575
- Howler.ctx.currentTime
1576
- ),
1577
- p._panner.orientationY.setValueAtTime(
1578
- t,
1579
- Howler.ctx.currentTime
1580
- ),
1581
- p._panner.orientationZ.setValueAtTime(
1582
- r,
1583
- Howler.ctx.currentTime
1584
- ))
1585
- : p._panner.setOrientation(n, t, r)),
1586
- i._emit("orientation", p._id);
1587
- }
1588
- }
1589
- return i;
1590
- }),
1591
- (Howl.prototype.pannerAttr = function () {
1592
- var n,
1593
- t,
1594
- r,
1595
- o = this,
1596
- i = arguments;
1597
- if (!o._webAudio) return o;
1598
- if (0 === i.length) return o._pannerAttr;
1599
- if (1 === i.length) {
1600
- if ("object" != typeof i[0])
1601
- return (
1602
- (r = o._soundById(parseInt(i[0], 10))),
1603
- r ? r._pannerAttr : o._pannerAttr
1604
- );
1605
- (n = i[0]),
1606
- void 0 === t &&
1607
- (n.pannerAttr ||
1608
- (n.pannerAttr = {
1609
- coneInnerAngle: n.coneInnerAngle,
1610
- coneOuterAngle: n.coneOuterAngle,
1611
- coneOuterGain: n.coneOuterGain,
1612
- distanceModel: n.distanceModel,
1613
- maxDistance: n.maxDistance,
1614
- refDistance: n.refDistance,
1615
- rolloffFactor: n.rolloffFactor,
1616
- panningModel: n.panningModel,
1617
- }),
1618
- (o._pannerAttr = {
1619
- coneInnerAngle:
1620
- void 0 !== n.pannerAttr.coneInnerAngle
1621
- ? n.pannerAttr.coneInnerAngle
1622
- : o._coneInnerAngle,
1623
- coneOuterAngle:
1624
- void 0 !== n.pannerAttr.coneOuterAngle
1625
- ? n.pannerAttr.coneOuterAngle
1626
- : o._coneOuterAngle,
1627
- coneOuterGain:
1628
- void 0 !== n.pannerAttr.coneOuterGain
1629
- ? n.pannerAttr.coneOuterGain
1630
- : o._coneOuterGain,
1631
- distanceModel:
1632
- void 0 !== n.pannerAttr.distanceModel
1633
- ? n.pannerAttr.distanceModel
1634
- : o._distanceModel,
1635
- maxDistance:
1636
- void 0 !== n.pannerAttr.maxDistance
1637
- ? n.pannerAttr.maxDistance
1638
- : o._maxDistance,
1639
- refDistance:
1640
- void 0 !== n.pannerAttr.refDistance
1641
- ? n.pannerAttr.refDistance
1642
- : o._refDistance,
1643
- rolloffFactor:
1644
- void 0 !== n.pannerAttr.rolloffFactor
1645
- ? n.pannerAttr.rolloffFactor
1646
- : o._rolloffFactor,
1647
- panningModel:
1648
- void 0 !== n.pannerAttr.panningModel
1649
- ? n.pannerAttr.panningModel
1650
- : o._panningModel,
1651
- }));
1652
- } else 2 === i.length && ((n = i[0]), (t = parseInt(i[1], 10)));
1653
- for (var a = o._getSoundIds(t), s = 0; s < a.length; s++)
1654
- if ((r = o._soundById(a[s]))) {
1655
- var p = r._pannerAttr;
1656
- p = {
1657
- coneInnerAngle:
1658
- void 0 !== n.coneInnerAngle ? n.coneInnerAngle : p.coneInnerAngle,
1659
- coneOuterAngle:
1660
- void 0 !== n.coneOuterAngle ? n.coneOuterAngle : p.coneOuterAngle,
1661
- coneOuterGain:
1662
- void 0 !== n.coneOuterGain ? n.coneOuterGain : p.coneOuterGain,
1663
- distanceModel:
1664
- void 0 !== n.distanceModel ? n.distanceModel : p.distanceModel,
1665
- maxDistance:
1666
- void 0 !== n.maxDistance ? n.maxDistance : p.maxDistance,
1667
- refDistance:
1668
- void 0 !== n.refDistance ? n.refDistance : p.refDistance,
1669
- rolloffFactor:
1670
- void 0 !== n.rolloffFactor ? n.rolloffFactor : p.rolloffFactor,
1671
- panningModel:
1672
- void 0 !== n.panningModel ? n.panningModel : p.panningModel,
1673
- };
1674
- var c = r._panner;
1675
- c
1676
- ? ((c.coneInnerAngle = p.coneInnerAngle),
1677
- (c.coneOuterAngle = p.coneOuterAngle),
1678
- (c.coneOuterGain = p.coneOuterGain),
1679
- (c.distanceModel = p.distanceModel),
1680
- (c.maxDistance = p.maxDistance),
1681
- (c.refDistance = p.refDistance),
1682
- (c.rolloffFactor = p.rolloffFactor),
1683
- (c.panningModel = p.panningModel))
1684
- : (r._pos || (r._pos = o._pos || [0, 0, -0.5]), e(r, "spatial"));
1685
- }
1686
- return o;
1687
- }),
1688
- (Sound.prototype.init = (function (e) {
1689
- return function () {
1690
- var n = this,
1691
- t = n._parent;
1692
- (n._orientation = t._orientation),
1693
- (n._stereo = t._stereo),
1694
- (n._pos = t._pos),
1695
- (n._pannerAttr = t._pannerAttr),
1696
- e.call(this),
1697
- n._stereo
1698
- ? t.stereo(n._stereo)
1699
- : n._pos && t.pos(n._pos[0], n._pos[1], n._pos[2], n._id);
1700
- };
1701
- })(Sound.prototype.init)),
1702
- (Sound.prototype.reset = (function (e) {
1703
- return function () {
1704
- var n = this,
1705
- t = n._parent;
1706
- return (
1707
- (n._orientation = t._orientation),
1708
- (n._stereo = t._stereo),
1709
- (n._pos = t._pos),
1710
- (n._pannerAttr = t._pannerAttr),
1711
- n._stereo
1712
- ? t.stereo(n._stereo)
1713
- : n._pos
1714
- ? t.pos(n._pos[0], n._pos[1], n._pos[2], n._id)
1715
- : n._panner &&
1716
- (n._panner.disconnect(0),
1717
- (n._panner = void 0),
1718
- t._refreshBuffer(n)),
1719
- e.call(this)
1720
- );
1721
- };
1722
- })(Sound.prototype.reset));
1723
- var e = function (e, n) {
1724
- (n = n || "spatial"),
1725
- "spatial" === n
1726
- ? ((e._panner = Howler.ctx.createPanner()),
1727
- (e._panner.coneInnerAngle = e._pannerAttr.coneInnerAngle),
1728
- (e._panner.coneOuterAngle = e._pannerAttr.coneOuterAngle),
1729
- (e._panner.coneOuterGain = e._pannerAttr.coneOuterGain),
1730
- (e._panner.distanceModel = e._pannerAttr.distanceModel),
1731
- (e._panner.maxDistance = e._pannerAttr.maxDistance),
1732
- (e._panner.refDistance = e._pannerAttr.refDistance),
1733
- (e._panner.rolloffFactor = e._pannerAttr.rolloffFactor),
1734
- (e._panner.panningModel = e._pannerAttr.panningModel),
1735
- void 0 !== e._panner.positionX
1736
- ? (e._panner.positionX.setValueAtTime(
1737
- e._pos[0],
1738
- Howler.ctx.currentTime
1739
- ),
1740
- e._panner.positionY.setValueAtTime(
1741
- e._pos[1],
1742
- Howler.ctx.currentTime
1743
- ),
1744
- e._panner.positionZ.setValueAtTime(
1745
- e._pos[2],
1746
- Howler.ctx.currentTime
1747
- ))
1748
- : e._panner.setPosition(e._pos[0], e._pos[1], e._pos[2]),
1749
- void 0 !== e._panner.orientationX
1750
- ? (e._panner.orientationX.setValueAtTime(
1751
- e._orientation[0],
1752
- Howler.ctx.currentTime
1753
- ),
1754
- e._panner.orientationY.setValueAtTime(
1755
- e._orientation[1],
1756
- Howler.ctx.currentTime
1757
- ),
1758
- e._panner.orientationZ.setValueAtTime(
1759
- e._orientation[2],
1760
- Howler.ctx.currentTime
1761
- ))
1762
- : e._panner.setOrientation(
1763
- e._orientation[0],
1764
- e._orientation[1],
1765
- e._orientation[2]
1766
- ))
1767
- : ((e._panner = Howler.ctx.createStereoPanner()),
1768
- e._panner.pan.setValueAtTime(e._stereo, Howler.ctx.currentTime)),
1769
- e._panner.connect(e._node),
1770
- e._paused || e._parent.pause(e._id, !0).play(e._id, !0);
1771
- };
1772
- })();
1773
-
1774
- globalThis.HowlerAudioPlayer = {
1775
- audioStore: {},
1776
- loadedAudio: {},
1777
- paused: {},
1778
- volumes: {},
1779
- muted: {},
1780
- init(runtime) {
1781
- this.runtime = runtime;
1782
- },
1783
-
1784
- dbToLinear(x) {
1785
- var v = this.dbToLinear_nocap(x);
1786
-
1787
- if (!isFinite(v))
1788
- // accidentally passing a string can result in NaN; set volume to 0 if so
1789
- v = 0;
1790
-
1791
- if (v <= 0.0011) v = 0;
1792
- if (v > 1) v = 1;
1793
- return v;
1794
- },
1795
-
1796
- linearToDb(x) {
1797
- if (x < 0.001) x = 0.001;
1798
- if (x > 1) x = 1;
1799
- return this.linearToDb_nocap(x);
1800
- },
1801
-
1802
- dbToLinear_nocap(x) {
1803
- return Math.pow(10, x / 20);
1804
- },
1805
-
1806
- linearToDb_nocap(x) {
1807
- return (Math.log(x) / Math.log(10)) * 20;
1808
- },
1809
-
1810
- play(name, group = "sounds") {
1811
- //if sound has already been played before, reuse it, else create new Howler.
1812
- let howler;
1813
- this.audioStore[group] = this.audioStore[group] || {};
1814
- if (this.audioStore[group][name]) howler = this.audioStore[group][name];
1815
- else if (this.loadedAudio[name]) {
1816
- howler = this.audioStore[group][name] = this.loadedAudio[name];
1817
- delete this.loadedAudio[name];
1818
- } else howler = this.load(name, group);
1819
-
1820
- howler.volume(this.volumes[group] || 1);
1821
- howler.mute(!!this.muted[group]);
1822
- howler.play();
1823
- },
1824
- setPaused(paused = true, group) {
1825
- if (group) {
1826
- if (paused) {
1827
- if (!this.audioStore.hasOwnProperty(group)) return;
1828
- this.paused[group] = this.paused[group] || {};
1829
- Object.keys(this.audioStore[group]).forEach((name) => {
1830
- this.paused[group][name] = this.paused[group][name] || [];
1831
- let self = this.audioStore[group][name];
1832
- for (var i = 0; i < self._sounds.length; i++) {
1833
- let sound = self._sounds[i];
1834
- if (!sound._paused && !sound._ended) {
1835
- this.paused[group][name].push(sound._id);
1836
- self.pause(sound._id);
1837
- }
1838
- }
1839
- });
1840
- } else {
1841
- if (!this.paused.hasOwnProperty(group)) return;
1842
- if (!this.audioStore.hasOwnProperty(group)) return;
1843
- Object.keys(this.paused[group]).forEach((name) => {
1844
- if (!this.audioStore[group].hasOwnProperty(name)) return;
1845
- let ids = this.paused[group][name];
1846
- ids.forEach((id) => {
1847
- this.audioStore[group][name].play(id);
1848
- });
1849
- this.paused[group][name] = [];
1850
- });
1851
- }
1852
- } else {
1853
- if (paused) {
1854
- let arr = Object.keys(this.audioStore);
1855
- for (let i = 0; i < arr.length; i++) {
1856
- const groupName = arr[i];
1857
- this.setPaused(true, groupName);
1858
- }
1859
- } else {
1860
- let arr = Object.keys(this.paused);
1861
- for (let i = 0; i < arr.length; i++) {
1862
- const groupName = arr[i];
1863
- this.setPaused(false, groupName);
1864
- }
1865
- }
1866
- }
1867
- },
1868
- setMuted(muted = true, group) {
1869
- if (group) {
1870
- if (!this.audioStore.hasOwnProperty(group)) return;
1871
- this.muted[group] = muted;
1872
- Object.values(this.audioStore[group]).forEach((howl) => {
1873
- howl.mute(muted);
1874
- });
1875
- } else {
1876
- Howler.mute(muted);
1877
- }
1878
- },
1879
- setLooping(looping = true, group) {
1880
- if (group) {
1881
- if (!this.audioStore.hasOwnProperty(group)) return;
1882
- Object.values(this.audioStore[group]).forEach((howl) => {
1883
- howl.loop(looping);
1884
- });
1885
- } else {
1886
- let arr = Object.keys(this.audioStore);
1887
- for (let i = 0; i < arr.length; i++) {
1888
- const groupName = arr[i];
1889
- this.setLooping(looping, groupName);
1890
- }
1891
- }
1892
- },
1893
- setVolume(volume, group) {
1894
- volume = this.dbToLinear(volume);
1895
- this.setLinearVolume(volume, group);
1896
- },
1897
- setLinearVolume(volume, group) {
1898
- if (group) {
1899
- if (!this.audioStore.hasOwnProperty(group)) return;
1900
- this.volumes[group] = volume;
1901
- Object.values(this.audioStore[group]).forEach((howl) => {
1902
- howl.volume(volume);
1903
- });
1904
- } else {
1905
- Howler.volume(volume);
1906
- }
1907
- },
1908
- stop(group) {
1909
- if (group) {
1910
- if (!this.audioStore.hasOwnProperty(group)) return;
1911
-
1912
- if (this.paused.hasOwnProperty(group)) {
1913
- this.paused[group] = {};
1914
- }
1915
-
1916
- Object.values(this.audioStore[group]).forEach((howl) => {
1917
- howl.stop();
1918
- });
1919
- } else {
1920
- this.paused = {};
1921
- Howler.stop();
1922
- }
1923
- },
1924
- unload(name, group) {
1925
- if (name) {
1926
- if (group) {
1927
- if (this.audioStore[group] && this.audioStore[group][name])
1928
- this.audioStore[group][name].unload();
1929
- } else {
1930
- Object.values(this.audioStore).forEach((group) => {
1931
- if (group[name]) group[name].unload();
1932
- });
1933
- }
1934
- } else {
1935
- Howler.unload();
1936
- }
1937
- },
1938
- load(name, group) {
1939
- let fullName = this.runtime.files_subfolder + name.toLowerCase();
1940
- if (group) {
1941
- this.audioStore[group] = this.audioStore[group] || {};
1942
- if (!this.audioStore[group][name]) {
1943
- this.audioStore[group][name] = new Howl({
1944
- src: [fullName + ".ogg", fullName + ".m4a"],
1945
- });
1946
- }
1947
- return this.audioStore[group][name];
1948
- } else {
1949
- if (this.loadedAudio[name]) return;
1950
- this.loadedAudio[name] = new Howl({
1951
- src: [fullName + ".ogg", fullName + ".m4a"],
1952
- });
1953
- }
1954
- },
1955
- isPlaying(group) {
1956
- if (group) {
1957
- if (!this.audioStore.hasOwnProperty(group)) return false;
1958
- let arr = Object.values(this.audioStore[group]);
1959
- for (let i = 0; i < arr.length; i++) {
1960
- const howl = arr[i];
1961
- if (howl.playing()) return true;
1962
- }
1963
- return false;
1964
- } else {
1965
- let arr = Object.keys(this.audioStore);
1966
- for (let i = 0; i < arr.length; i++) {
1967
- const groupName = arr[i];
1968
- if (this.isPlaying(groupName)) return true;
1969
- }
1970
- return false;
1971
- }
1972
- },
1973
- getVolume(group) {
1974
- if (group) {
1975
- return this.linearToDb(this.volumes[group] || 1);
1976
- } else {
1977
- return this.linearToDb(Howler.volume());
1978
- }
1979
- },
1980
- getLinearVolume(group) {
1981
- if (group) {
1982
- return this.volumes[group] || 1;
1983
- } else {
1984
- return Howler.volume();
1985
- }
1986
- },
1987
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ovo/html2canvas.min.js DELETED
@@ -1,8 +0,0 @@
1
- /*
2
- html2canvas 0.5.0-beta2 <http://html2canvas.hertzen.com>
3
- Copyright (c) 2015 Niklas von Hertzen
4
-
5
- Released under License
6
- */
7
- !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.html2canvas=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(b,c,d){(function(b){!function(e){function f(a){throw RangeError(I[a])}function g(a,b){for(var c=a.length,d=[];c--;)d[c]=b(a[c]);return d}function h(a,b){var c=a.split("@"),d="";c.length>1&&(d=c[0]+"@",a=c[1]),a=a.replace(H,".");var e=a.split("."),f=g(e,b).join(".");return d+f}function i(a){for(var b,c,d=[],e=0,f=a.length;f>e;)b=a.charCodeAt(e++),b>=55296&&56319>=b&&f>e?(c=a.charCodeAt(e++),56320==(64512&c)?d.push(((1023&b)<<10)+(1023&c)+65536):(d.push(b),e--)):d.push(b);return d}function j(a){return g(a,function(a){var b="";return a>65535&&(a-=65536,b+=L(a>>>10&1023|55296),a=56320|1023&a),b+=L(a)}).join("")}function k(a){return 10>a-48?a-22:26>a-65?a-65:26>a-97?a-97:x}function l(a,b){return a+22+75*(26>a)-((0!=b)<<5)}function m(a,b,c){var d=0;for(a=c?K(a/B):a>>1,a+=K(a/b);a>J*z>>1;d+=x)a=K(a/J);return K(d+(J+1)*a/(a+A))}function n(a){var b,c,d,e,g,h,i,l,n,o,p=[],q=a.length,r=0,s=D,t=C;for(c=a.lastIndexOf(E),0>c&&(c=0),d=0;c>d;++d)a.charCodeAt(d)>=128&&f("not-basic"),p.push(a.charCodeAt(d));for(e=c>0?c+1:0;q>e;){for(g=r,h=1,i=x;e>=q&&f("invalid-input"),l=k(a.charCodeAt(e++)),(l>=x||l>K((w-r)/h))&&f("overflow"),r+=l*h,n=t>=i?y:i>=t+z?z:i-t,!(n>l);i+=x)o=x-n,h>K(w/o)&&f("overflow"),h*=o;b=p.length+1,t=m(r-g,b,0==g),K(r/b)>w-s&&f("overflow"),s+=K(r/b),r%=b,p.splice(r++,0,s)}return j(p)}function o(a){var b,c,d,e,g,h,j,k,n,o,p,q,r,s,t,u=[];for(a=i(a),q=a.length,b=D,c=0,g=C,h=0;q>h;++h)p=a[h],128>p&&u.push(L(p));for(d=e=u.length,e&&u.push(E);q>d;){for(j=w,h=0;q>h;++h)p=a[h],p>=b&&j>p&&(j=p);for(r=d+1,j-b>K((w-c)/r)&&f("overflow"),c+=(j-b)*r,b=j,h=0;q>h;++h)if(p=a[h],b>p&&++c>w&&f("overflow"),p==b){for(k=c,n=x;o=g>=n?y:n>=g+z?z:n-g,!(o>k);n+=x)t=k-o,s=x-o,u.push(L(l(o+t%s,0))),k=K(t/s);u.push(L(l(k,0))),g=m(c,r,d==e),c=0,++d}++c,++b}return u.join("")}function p(a){return h(a,function(a){return F.test(a)?n(a.slice(4).toLowerCase()):a})}function q(a){return h(a,function(a){return G.test(a)?"xn--"+o(a):a})}var r="object"==typeof d&&d&&!d.nodeType&&d,s="object"==typeof c&&c&&!c.nodeType&&c,t="object"==typeof b&&b;(t.global===t||t.window===t||t.self===t)&&(e=t);var u,v,w=2147483647,x=36,y=1,z=26,A=38,B=700,C=72,D=128,E="-",F=/^xn--/,G=/[^\x20-\x7E]/,H=/[\x2E\u3002\uFF0E\uFF61]/g,I={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},J=x-y,K=Math.floor,L=String.fromCharCode;if(u={version:"1.3.2",ucs2:{decode:i,encode:j},decode:n,encode:o,toASCII:q,toUnicode:p},"function"==typeof a&&"object"==typeof a.amd&&a.amd)a("punycode",function(){return u});else if(r&&s)if(c.exports==r)s.exports=u;else for(v in u)u.hasOwnProperty(v)&&(r[v]=u[v]);else e.punycode=u}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(a,b,c){function d(a,b,c){!a.defaultView||b===a.defaultView.pageXOffset&&c===a.defaultView.pageYOffset||a.defaultView.scrollTo(b,c)}function e(a,b){try{b&&(b.width=a.width,b.height=a.height,b.getContext("2d").putImageData(a.getContext("2d").getImageData(0,0,a.width,a.height),0,0))}catch(c){h("Unable to copy canvas content from",a,c)}}function f(a,b){for(var c=3===a.nodeType?document.createTextNode(a.nodeValue):a.cloneNode(!1),d=a.firstChild;d;)(b===!0||1!==d.nodeType||"SCRIPT"!==d.nodeName)&&c.appendChild(f(d,b)),d=d.nextSibling;return 1===a.nodeType&&(c._scrollTop=a.scrollTop,c._scrollLeft=a.scrollLeft,"CANVAS"===a.nodeName?e(a,c):("TEXTAREA"===a.nodeName||"SELECT"===a.nodeName)&&(c.value=a.value)),c}function g(a){if(1===a.nodeType){a.scrollTop=a._scrollTop,a.scrollLeft=a._scrollLeft;for(var b=a.firstChild;b;)g(b),b=b.nextSibling}}var h=a("./log");b.exports=function(a,b,c,e,h,i,j){var k=f(a.documentElement,h.javascriptEnabled),l=b.createElement("iframe");return l.className="html2canvas-container",l.style.visibility="hidden",l.style.position="fixed",l.style.left="-10000px",l.style.top="0px",l.style.border="0",l.width=c,l.height=e,l.scrolling="no",b.body.appendChild(l),new Promise(function(b){var c=l.contentWindow.document;l.contentWindow.onload=l.onload=function(){var a=setInterval(function(){c.body.childNodes.length>0&&(g(c.documentElement),clearInterval(a),"view"===h.type&&(l.contentWindow.scrollTo(i,j),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||l.contentWindow.scrollY===j&&l.contentWindow.scrollX===i||(c.documentElement.style.top=-j+"px",c.documentElement.style.left=-i+"px",c.documentElement.style.position="absolute")),b(l))},50)},c.open(),c.write("<!DOCTYPE html><html></html>"),d(a,i,j),c.replaceChild(c.adoptNode(k),c.documentElement),c.close()})}},{"./log":13}],3:[function(a,b,c){function d(a){this.r=0,this.g=0,this.b=0,this.a=null;this.fromArray(a)||this.namedColor(a)||this.rgb(a)||this.rgba(a)||this.hex6(a)||this.hex3(a)}d.prototype.darken=function(a){var b=1-a;return new d([Math.round(this.r*b),Math.round(this.g*b),Math.round(this.b*b),this.a])},d.prototype.isTransparent=function(){return 0===this.a},d.prototype.isBlack=function(){return 0===this.r&&0===this.g&&0===this.b},d.prototype.fromArray=function(a){return Array.isArray(a)&&(this.r=Math.min(a[0],255),this.g=Math.min(a[1],255),this.b=Math.min(a[2],255),a.length>3&&(this.a=a[3])),Array.isArray(a)};var e=/^#([a-f0-9]{3})$/i;d.prototype.hex3=function(a){var b=null;return null!==(b=a.match(e))&&(this.r=parseInt(b[1][0]+b[1][0],16),this.g=parseInt(b[1][1]+b[1][1],16),this.b=parseInt(b[1][2]+b[1][2],16)),null!==b};var f=/^#([a-f0-9]{6})$/i;d.prototype.hex6=function(a){var b=null;return null!==(b=a.match(f))&&(this.r=parseInt(b[1].substring(0,2),16),this.g=parseInt(b[1].substring(2,4),16),this.b=parseInt(b[1].substring(4,6),16)),null!==b};var g=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/;d.prototype.rgb=function(a){var b=null;return null!==(b=a.match(g))&&(this.r=Number(b[1]),this.g=Number(b[2]),this.b=Number(b[3])),null!==b};var h=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d?\.?\d+)\s*\)$/;d.prototype.rgba=function(a){var b=null;return null!==(b=a.match(h))&&(this.r=Number(b[1]),this.g=Number(b[2]),this.b=Number(b[3]),this.a=Number(b[4])),null!==b},d.prototype.toString=function(){return null!==this.a&&1!==this.a?"rgba("+[this.r,this.g,this.b,this.a].join(",")+")":"rgb("+[this.r,this.g,this.b].join(",")+")"},d.prototype.namedColor=function(a){a=a.toLowerCase();var b=i[a];if(b)this.r=b[0],this.g=b[1],this.b=b[2];else if("transparent"===a)return this.r=this.g=this.b=this.a=0,!0;return!!b},d.prototype.isColor=!0;var i={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};b.exports=d},{}],4:[function(b,c,d){function e(a,b){var c=x++;if(b=b||{},b.logging&&(window.html2canvas.logging=!0,window.html2canvas.start=Date.now()),b.async="undefined"==typeof b.async?!0:b.async,b.allowTaint="undefined"==typeof b.allowTaint?!1:b.allowTaint,b.removeContainer="undefined"==typeof b.removeContainer?!0:b.removeContainer,b.javascriptEnabled="undefined"==typeof b.javascriptEnabled?!1:b.javascriptEnabled,b.imageTimeout="undefined"==typeof b.imageTimeout?1e4:b.imageTimeout,b.renderer="function"==typeof b.renderer?b.renderer:n,b.strict=!!b.strict,"string"==typeof a){if("string"!=typeof b.proxy)return Promise.reject("Proxy must be used when rendering url");var d=null!=b.width?b.width:window.innerWidth,e=null!=b.height?b.height:window.innerHeight;return u(l(a),b.proxy,document,d,e,b).then(function(a){return g(a.contentWindow.document.documentElement,a,b,d,e)})}var h=(void 0===a?[document.documentElement]:a.length?a:[a])[0];return h.setAttribute(w+c,c),f(h.ownerDocument,b,h.ownerDocument.defaultView.innerWidth,h.ownerDocument.defaultView.innerHeight,c).then(function(a){return"function"==typeof b.onrendered&&(r("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas"),b.onrendered(a)),a})}function f(a,b,c,d,e){return t(a,a,c,d,b,a.defaultView.pageXOffset,a.defaultView.pageYOffset).then(function(f){r("Document cloned");var h=w+e,i="["+h+"='"+e+"']";a.querySelector(i).removeAttribute(h);var j=f.contentWindow,k=j.document.querySelector(i),l="function"==typeof b.onclone?Promise.resolve(b.onclone(j.document)):Promise.resolve(!0);return l.then(function(){return g(k,f,b,c,d)})})}function g(a,b,c,d,e){var f=b.contentWindow,g=new m(f.document),l=new o(c,g),n=v(a),q="view"===c.type?d:j(f.document),s="view"===c.type?e:k(f.document),t=new c.renderer(q,s,l,c,document),u=new p(a,t,g,l,c);return u.ready.then(function(){r("Finished rendering");var d;return d="view"===c.type?i(t.canvas,{width:t.canvas.width,height:t.canvas.height,top:0,left:0,x:0,y:0}):a===f.document.body||a===f.document.documentElement||null!=c.canvas?t.canvas:i(t.canvas,{width:null!=c.width?c.width:n.width,height:null!=c.height?c.height:n.height,top:n.top,left:n.left,x:f.pageXOffset,y:f.pageYOffset}),h(b,c),d})}function h(a,b){b.removeContainer&&(a.parentNode.removeChild(a),r("Cleaned up container"))}function i(a,b){var c=document.createElement("canvas"),d=Math.min(a.width-1,Math.max(0,b.left)),e=Math.min(a.width,Math.max(1,b.left+b.width)),f=Math.min(a.height-1,Math.max(0,b.top)),g=Math.min(a.height,Math.max(1,b.top+b.height));return c.width=b.width,c.height=b.height,r("Cropping canvas at:","left:",b.left,"top:",b.top,"width:",e-d,"height:",g-f),r("Resulting crop with width",b.width,"and height",b.height," with x",d,"and y",f),c.getContext("2d").drawImage(a,d,f,e-d,g-f,b.x,b.y,e-d,g-f),c}function j(a){return Math.max(Math.max(a.body.scrollWidth,a.documentElement.scrollWidth),Math.max(a.body.offsetWidth,a.documentElement.offsetWidth),Math.max(a.body.clientWidth,a.documentElement.clientWidth))}function k(a){return Math.max(Math.max(a.body.scrollHeight,a.documentElement.scrollHeight),Math.max(a.body.offsetHeight,a.documentElement.offsetHeight),Math.max(a.body.clientHeight,a.documentElement.clientHeight))}function l(a){var b=document.createElement("a");return b.href=a,b.href=b.href,b}var m=b("./support"),n=b("./renderers/canvas"),o=b("./imageloader"),p=b("./nodeparser"),q=b("./nodecontainer"),r=b("./log"),s=b("./utils"),t=b("./clone"),u=b("./proxy").loadUrlDocument,v=s.getBounds,w="data-html2canvas-node",x=0;e.CanvasRenderer=n,e.NodeContainer=q,e.log=r,e.utils=s;var y="undefined"==typeof document||"function"!=typeof Object.create||"function"!=typeof document.createElement("canvas").getContext?function(){return Promise.reject("No canvas support")}:e;c.exports=y,"function"==typeof a&&a.amd&&a("html2canvas",[],function(){return y})},{"./clone":2,"./imageloader":11,"./log":13,"./nodecontainer":14,"./nodeparser":15,"./proxy":16,"./renderers/canvas":20,"./support":22,"./utils":26}],5:[function(a,b,c){function d(a){if(this.src=a,e("DummyImageContainer for",a),!this.promise||!this.image){e("Initiating DummyImageContainer"),d.prototype.image=new Image;var b=this.image;d.prototype.promise=new Promise(function(a,c){b.onload=a,b.onerror=c,b.src=f(),b.complete===!0&&a(b)})}}var e=a("./log"),f=a("./utils").smallImage;b.exports=d},{"./log":13,"./utils":26}],6:[function(a,b,c){function d(a,b){var c,d,f=document.createElement("div"),g=document.createElement("img"),h=document.createElement("span"),i="Hidden Text";f.style.visibility="hidden",f.style.fontFamily=a,f.style.fontSize=b,f.style.margin=0,f.style.padding=0,document.body.appendChild(f),g.src=e(),g.width=1,g.height=1,g.style.margin=0,g.style.padding=0,g.style.verticalAlign="baseline",h.style.fontFamily=a,h.style.fontSize=b,h.style.margin=0,h.style.padding=0,h.appendChild(document.createTextNode(i)),f.appendChild(h),f.appendChild(g),c=g.offsetTop-h.offsetTop+1,f.removeChild(h),f.appendChild(document.createTextNode(i)),f.style.lineHeight="normal",g.style.verticalAlign="super",d=g.offsetTop-f.offsetTop+1,document.body.removeChild(f),this.baseline=c,this.lineWidth=1,this.middle=d}var e=a("./utils").smallImage;b.exports=d},{"./utils":26}],7:[function(a,b,c){function d(){this.data={}}var e=a("./font");d.prototype.getMetrics=function(a,b){return void 0===this.data[a+"-"+b]&&(this.data[a+"-"+b]=new e(a,b)),this.data[a+"-"+b]},b.exports=d},{"./font":6}],8:[function(a,b,c){function d(b,c,d){this.image=null,this.src=b;var e=this,g=f(b);this.promise=(c?new Promise(function(a){"about:blank"===b.contentWindow.document.URL||null==b.contentWindow.document.documentElement?b.contentWindow.onload=b.onload=function(){a(b)}:a(b)}):this.proxyLoad(d.proxy,g,d)).then(function(b){var c=a("./core");return c(b.contentWindow.document.documentElement,{type:"view",width:b.width,height:b.height,proxy:d.proxy,javascriptEnabled:d.javascriptEnabled,removeContainer:d.removeContainer,allowTaint:d.allowTaint,imageTimeout:d.imageTimeout/2})}).then(function(a){return e.image=a})}var e=a("./utils"),f=e.getBounds,g=a("./proxy").loadUrlDocument;d.prototype.proxyLoad=function(a,b,c){var d=this.src;return g(d.src,a,d.ownerDocument,b.width,b.height,c)},b.exports=d},{"./core":4,"./proxy":16,"./utils":26}],9:[function(a,b,c){function d(a){this.src=a.value,this.colorStops=[],this.type=null,this.x0=.5,this.y0=.5,this.x1=.5,this.y1=.5,this.promise=Promise.resolve(!0)}d.TYPES={LINEAR:1,RADIAL:2},d.REGEXP_COLORSTOP=/^\s*(rgba?\(\s*\d{1,3},\s*\d{1,3},\s*\d{1,3}(?:,\s*[0-9\.]+)?\s*\)|[a-z]{3,20}|#[a-f0-9]{3,6})(?:\s+(\d{1,3}(?:\.\d+)?)(%|px)?)?(?:\s|$)/i,b.exports=d},{}],10:[function(a,b,c){function d(a,b){this.src=a,this.image=new Image;var c=this;this.tainted=null,this.promise=new Promise(function(d,e){c.image.onload=d,c.image.onerror=e,b&&(c.image.crossOrigin="anonymous"),c.image.src=a,c.image.complete===!0&&d(c.image)})}b.exports=d},{}],11:[function(a,b,c){function d(a,b){this.link=null,this.options=a,this.support=b,this.origin=this.getOrigin(window.location.href)}var e=a("./log"),f=a("./imagecontainer"),g=a("./dummyimagecontainer"),h=a("./proxyimagecontainer"),i=a("./framecontainer"),j=a("./svgcontainer"),k=a("./svgnodecontainer"),l=a("./lineargradientcontainer"),m=a("./webkitgradientcontainer"),n=a("./utils").bind;d.prototype.findImages=function(a){var b=[];return a.reduce(function(a,b){switch(b.node.nodeName){case"IMG":return a.concat([{args:[b.node.src],method:"url"}]);case"svg":case"IFRAME":return a.concat([{args:[b.node],method:b.node.nodeName}])}return a},[]).forEach(this.addImage(b,this.loadImage),this),b},d.prototype.findBackgroundImage=function(a,b){return b.parseBackgroundImages().filter(this.hasImageBackground).forEach(this.addImage(a,this.loadImage),this),a},d.prototype.addImage=function(a,b){return function(c){c.args.forEach(function(d){this.imageExists(a,d)||(a.splice(0,0,b.call(this,c)),e("Added image #"+a.length,"string"==typeof d?d.substring(0,100):d))},this)}},d.prototype.hasImageBackground=function(a){return"none"!==a.method},d.prototype.loadImage=function(a){if("url"===a.method){var b=a.args[0];return!this.isSVG(b)||this.support.svg||this.options.allowTaint?b.match(/data:image\/.*;base64,/i)?new f(b.replace(/url\(['"]{0,}|['"]{0,}\)$/gi,""),!1):this.isSameOrigin(b)||this.options.allowTaint===!0||this.isSVG(b)?new f(b,!1):this.support.cors&&!this.options.allowTaint&&this.options.useCORS?new f(b,!0):this.options.proxy?new h(b,this.options.proxy):new g(b):new j(b)}return"linear-gradient"===a.method?new l(a):"gradient"===a.method?new m(a):"svg"===a.method?new k(a.args[0],this.support.svg):"IFRAME"===a.method?new i(a.args[0],this.isSameOrigin(a.args[0].src),this.options):new g(a)},d.prototype.isSVG=function(a){return"svg"===a.substring(a.length-3).toLowerCase()||j.prototype.isInline(a)},d.prototype.imageExists=function(a,b){return a.some(function(a){return a.src===b})},d.prototype.isSameOrigin=function(a){return this.getOrigin(a)===this.origin},d.prototype.getOrigin=function(a){var b=this.link||(this.link=document.createElement("a"));return b.href=a,b.href=b.href,b.protocol+b.hostname+b.port},d.prototype.getPromise=function(a){return this.timeout(a,this.options.imageTimeout)["catch"](function(){var b=new g(a.src);return b.promise.then(function(b){a.image=b})})},d.prototype.get=function(a){var b=null;return this.images.some(function(c){return(b=c).src===a})?b:null},d.prototype.fetch=function(a){return this.images=a.reduce(n(this.findBackgroundImage,this),this.findImages(a)),this.images.forEach(function(a,b){a.promise.then(function(){e("Succesfully loaded image #"+(b+1),a)},function(c){e("Failed loading image #"+(b+1),a,c)})}),this.ready=Promise.all(this.images.map(this.getPromise,this)),e("Finished searching images"),this},d.prototype.timeout=function(a,b){var c,d=Promise.race([a.promise,new Promise(function(d,f){c=setTimeout(function(){e("Timed out loading image",a),f(a)},b)})]).then(function(a){return clearTimeout(c),a});return d["catch"](function(){clearTimeout(c)}),d},b.exports=d},{"./dummyimagecontainer":5,"./framecontainer":8,"./imagecontainer":10,"./lineargradientcontainer":12,"./log":13,"./proxyimagecontainer":17,"./svgcontainer":23,"./svgnodecontainer":24,"./utils":26,"./webkitgradientcontainer":27}],12:[function(a,b,c){function d(a){e.apply(this,arguments),this.type=e.TYPES.LINEAR;var b=d.REGEXP_DIRECTION.test(a.args[0])||!e.REGEXP_COLORSTOP.test(a.args[0]);b?a.args[0].split(/\s+/).reverse().forEach(function(a,b){switch(a){case"left":this.x0=0,this.x1=1;break;case"top":this.y0=0,this.y1=1;break;case"right":this.x0=1,this.x1=0;break;case"bottom":this.y0=1,this.y1=0;break;case"to":var c=this.y0,d=this.x0;this.y0=this.y1,this.x0=this.x1,this.x1=d,this.y1=c;break;case"center":break;default:var e=.01*parseFloat(a,10);if(isNaN(e))break;0===b?(this.y0=e,this.y1=1-this.y0):(this.x0=e,this.x1=1-this.x0)}},this):(this.y0=0,this.y1=1),this.colorStops=a.args.slice(b?1:0).map(function(a){var b=a.match(e.REGEXP_COLORSTOP),c=+b[2],d=0===c?"%":b[3];return{color:new f(b[1]),stop:"%"===d?c/100:null}}),null===this.colorStops[0].stop&&(this.colorStops[0].stop=0),null===this.colorStops[this.colorStops.length-1].stop&&(this.colorStops[this.colorStops.length-1].stop=1),this.colorStops.forEach(function(a,b){null===a.stop&&this.colorStops.slice(b).some(function(c,d){return null!==c.stop?(a.stop=(c.stop-this.colorStops[b-1].stop)/(d+1)+this.colorStops[b-1].stop,!0):!1},this)},this)}var e=a("./gradientcontainer"),f=a("./color");d.prototype=Object.create(e.prototype),d.REGEXP_DIRECTION=/^\s*(?:to|left|right|top|bottom|center|\d{1,3}(?:\.\d+)?%?)(?:\s|$)/i,b.exports=d},{"./color":3,"./gradientcontainer":9}],13:[function(a,b,c){b.exports=function(){window.html2canvas.logging&&window.console&&window.console.log&&Function.prototype.bind.call(window.console.log,window.console).apply(window.console,[Date.now()-window.html2canvas.start+"ms","html2canvas:"].concat([].slice.call(arguments,0)))}},{}],14:[function(a,b,c){function d(a,b){this.node=a,this.parent=b,this.stack=null,this.bounds=null,this.borders=null,this.clip=[],this.backgroundClip=[],this.offsetBounds=null,this.visible=null,this.computedStyles=null,this.colors={},this.styles={},this.backgroundImages=null,this.transformData=null,this.transformMatrix=null,this.isPseudoElement=!1,this.opacity=null}function e(a){var b=a.options[a.selectedIndex||0];return b?b.text||"":""}function f(a){if(a&&"matrix"===a[1])return a[2].split(",").map(function(a){return parseFloat(a.trim())});if(a&&"matrix3d"===a[1]){var b=a[2].split(",").map(function(a){return parseFloat(a.trim())});return[b[0],b[1],b[4],b[5],b[12],b[13]]}}function g(a){return-1!==a.toString().indexOf("%")}function h(a){return a.replace("px","")}function i(a){return parseFloat(a)}var j=a("./color"),k=a("./utils"),l=k.getBounds,m=k.parseBackgrounds,n=k.offsetBounds;d.prototype.cloneTo=function(a){a.visible=this.visible,a.borders=this.borders,a.bounds=this.bounds,a.clip=this.clip,a.backgroundClip=this.backgroundClip,a.computedStyles=this.computedStyles,a.styles=this.styles,a.backgroundImages=this.backgroundImages,a.opacity=this.opacity},d.prototype.getOpacity=function(){return null===this.opacity?this.opacity=this.cssFloat("opacity"):this.opacity},d.prototype.assignStack=function(a){this.stack=a,a.children.push(this)},d.prototype.isElementVisible=function(){return this.node.nodeType===Node.TEXT_NODE?this.parent.visible:"none"!==this.css("display")&&"hidden"!==this.css("visibility")&&!this.node.hasAttribute("data-html2canvas-ignore")&&("INPUT"!==this.node.nodeName||"hidden"!==this.node.getAttribute("type"))},d.prototype.css=function(a){return this.computedStyles||(this.computedStyles=this.isPseudoElement?this.parent.computedStyle(this.before?":before":":after"):this.computedStyle(null)),this.styles[a]||(this.styles[a]=this.computedStyles[a])},d.prototype.prefixedCss=function(a){var b=["webkit","moz","ms","o"],c=this.css(a);return void 0===c&&b.some(function(b){return c=this.css(b+a.substr(0,1).toUpperCase()+a.substr(1)),void 0!==c},this),void 0===c?null:c},d.prototype.computedStyle=function(a){return this.node.ownerDocument.defaultView.getComputedStyle(this.node,a)},d.prototype.cssInt=function(a){var b=parseInt(this.css(a),10);return isNaN(b)?0:b},d.prototype.color=function(a){return this.colors[a]||(this.colors[a]=new j(this.css(a)))},d.prototype.cssFloat=function(a){var b=parseFloat(this.css(a));return isNaN(b)?0:b},d.prototype.fontWeight=function(){var a=this.css("fontWeight");switch(parseInt(a,10)){case 401:a="bold";break;case 400:a="normal"}return a},d.prototype.parseClip=function(){var a=this.css("clip").match(this.CLIP);return a?{top:parseInt(a[1],10),right:parseInt(a[2],10),bottom:parseInt(a[3],10),left:parseInt(a[4],10)}:null},d.prototype.parseBackgroundImages=function(){return this.backgroundImages||(this.backgroundImages=m(this.css("backgroundImage")))},d.prototype.cssList=function(a,b){var c=(this.css(a)||"").split(",");return c=c[b||0]||c[0]||"auto",c=c.trim().split(" "),1===c.length&&(c=[c[0],g(c[0])?"auto":c[0]]),c},d.prototype.parseBackgroundSize=function(a,b,c){var d,e,f=this.cssList("backgroundSize",c);if(g(f[0]))d=a.width*parseFloat(f[0])/100;else{if(/contain|cover/.test(f[0])){var h=a.width/a.height,i=b.width/b.height;return i>h^"contain"===f[0]?{width:a.height*i,height:a.height}:{width:a.width,height:a.width/i}}d=parseInt(f[0],10)}return e="auto"===f[0]&&"auto"===f[1]?b.height:"auto"===f[1]?d/b.width*b.height:g(f[1])?a.height*parseFloat(f[1])/100:parseInt(f[1],10),"auto"===f[0]&&(d=e/b.height*b.width),{width:d,height:e}},d.prototype.parseBackgroundPosition=function(a,b,c,d){var e,f,h=this.cssList("backgroundPosition",c);return e=g(h[0])?(a.width-(d||b).width)*(parseFloat(h[0])/100):parseInt(h[0],10),f="auto"===h[1]?e/b.width*b.height:g(h[1])?(a.height-(d||b).height)*parseFloat(h[1])/100:parseInt(h[1],10),"auto"===h[0]&&(e=f/b.height*b.width),{left:e,top:f}},d.prototype.parseBackgroundRepeat=function(a){return this.cssList("backgroundRepeat",a)[0]},d.prototype.parseTextShadows=function(){var a=this.css("textShadow"),b=[];if(a&&"none"!==a)for(var c=a.match(this.TEXT_SHADOW_PROPERTY),d=0;c&&d<c.length;d++){var e=c[d].match(this.TEXT_SHADOW_VALUES);b.push({color:new j(e[0]),offsetX:e[1]?parseFloat(e[1].replace("px","")):0,offsetY:e[2]?parseFloat(e[2].replace("px","")):0,blur:e[3]?e[3].replace("px",""):0})}return b},d.prototype.parseTransform=function(){if(!this.transformData)if(this.hasTransform()){var a=this.parseBounds(),b=this.prefixedCss("transformOrigin").split(" ").map(h).map(i);b[0]+=a.left,b[1]+=a.top,this.transformData={origin:b,matrix:this.parseTransformMatrix()}}else this.transformData={origin:[0,0],matrix:[1,0,0,1,0,0]};return this.transformData},d.prototype.parseTransformMatrix=function(){if(!this.transformMatrix){var a=this.prefixedCss("transform"),b=a?f(a.match(this.MATRIX_PROPERTY)):null;this.transformMatrix=b?b:[1,0,0,1,0,0]}return this.transformMatrix},d.prototype.parseBounds=function(){return this.bounds||(this.bounds=this.hasTransform()?n(this.node):l(this.node))},d.prototype.hasTransform=function(){return"1,0,0,1,0,0"!==this.parseTransformMatrix().join(",")||this.parent&&this.parent.hasTransform()},d.prototype.getValue=function(){var a=this.node.value||"";return"SELECT"===this.node.tagName?a=e(this.node):"password"===this.node.type&&(a=Array(a.length+1).join("•")),0===a.length?this.node.placeholder||"":a},d.prototype.MATRIX_PROPERTY=/(matrix|matrix3d)\((.+)\)/,d.prototype.TEXT_SHADOW_PROPERTY=/((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g,d.prototype.TEXT_SHADOW_VALUES=/(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g,d.prototype.CLIP=/^rect\((\d+)px,? (\d+)px,? (\d+)px,? (\d+)px\)$/,b.exports=d},{"./color":3,"./utils":26}],15:[function(a,b,c){function d(a,b,c,d,e){O("Starting NodeParser"),this.renderer=b,this.options=e,this.range=null,this.support=c,this.renderQueue=[],this.stack=new V(!0,1,a.ownerDocument,null);var f=new Q(a,null);if(e.background&&b.rectangle(0,0,b.width,b.height,new U(e.background)),a===a.ownerDocument.documentElement){var g=new Q(f.color("backgroundColor").isTransparent()?a.ownerDocument.body:a.ownerDocument.documentElement,null);b.rectangle(0,0,b.width,b.height,g.color("backgroundColor"))}f.visibile=f.isElementVisible(),this.createPseudoHideStyles(a.ownerDocument),this.disableAnimations(a.ownerDocument),this.nodes=J([f].concat(this.getChildren(f)).filter(function(a){return a.visible=a.isElementVisible()}).map(this.getPseudoElements,this)),this.fontMetrics=new T,O("Fetched nodes, total:",this.nodes.length),O("Calculate overflow clips"),this.calculateOverflowClips(),O("Start fetching images"),this.images=d.fetch(this.nodes.filter(B)),this.ready=this.images.ready.then(X(function(){return O("Images loaded, starting parsing"),O("Creating stacking contexts"),this.createStackingContexts(),O("Sorting stacking contexts"),this.sortStackingContexts(this.stack),this.parse(this.stack),O("Render queue created with "+this.renderQueue.length+" items"),new Promise(X(function(a){e.async?"function"==typeof e.async?e.async.call(this,this.renderQueue,a):this.renderQueue.length>0?(this.renderIndex=0,this.asyncRenderer(this.renderQueue,a)):a():(this.renderQueue.forEach(this.paint,this),a())},this))},this))}function e(a){return a.parent&&a.parent.clip.length}function f(a){return a.replace(/(\-[a-z])/g,function(a){return a.toUpperCase().replace("-","")})}function g(){}function h(a,b,c,d){return a.map(function(e,f){if(e.width>0){var g=b.left,h=b.top,i=b.width,j=b.height-a[2].width;switch(f){case 0:j=a[0].width,e.args=l({c1:[g,h],c2:[g+i,h],c3:[g+i-a[1].width,h+j],c4:[g+a[3].width,h+j]},d[0],d[1],c.topLeftOuter,c.topLeftInner,c.topRightOuter,c.topRightInner);break;case 1:g=b.left+b.width-a[1].width,i=a[1].width,e.args=l({c1:[g+i,h],c2:[g+i,h+j+a[2].width],c3:[g,h+j],c4:[g,h+a[0].width]},d[1],d[2],c.topRightOuter,c.topRightInner,c.bottomRightOuter,c.bottomRightInner);break;case 2:h=h+b.height-a[2].width,j=a[2].width,e.args=l({c1:[g+i,h+j],c2:[g,h+j],c3:[g+a[3].width,h],c4:[g+i-a[3].width,h]},d[2],d[3],c.bottomRightOuter,c.bottomRightInner,c.bottomLeftOuter,c.bottomLeftInner);break;case 3:i=a[3].width,e.args=l({c1:[g,h+j+a[2].width],c2:[g,h],c3:[g+i,h+a[0].width],c4:[g+i,h+j]},d[3],d[0],c.bottomLeftOuter,c.bottomLeftInner,c.topLeftOuter,c.topLeftInner)}}return e})}function i(a,b,c,d){var e=4*((Math.sqrt(2)-1)/3),f=c*e,g=d*e,h=a+c,i=b+d;return{topLeft:k({x:a,y:i},{x:a,y:i-g},{x:h-f,y:b},{x:h,y:b}),topRight:k({x:a,y:b},{x:a+f,y:b},{x:h,y:i-g},{x:h,y:i}),bottomRight:k({x:h,y:b},{x:h,y:b+g},{x:a+f,y:i},{x:a,y:i}),bottomLeft:k({x:h,y:i},{x:h-f,y:i},{x:a,y:b+g},{x:a,y:b})}}function j(a,b,c){var d=a.left,e=a.top,f=a.width,g=a.height,h=b[0][0]<f/2?b[0][0]:f/2,j=b[0][1]<g/2?b[0][1]:g/2,k=b[1][0]<f/2?b[1][0]:f/2,l=b[1][1]<g/2?b[1][1]:g/2,m=b[2][0]<f/2?b[2][0]:f/2,n=b[2][1]<g/2?b[2][1]:g/2,o=b[3][0]<f/2?b[3][0]:f/2,p=b[3][1]<g/2?b[3][1]:g/2,q=f-k,r=g-n,s=f-m,t=g-p;return{topLeftOuter:i(d,e,h,j).topLeft.subdivide(.5),topLeftInner:i(d+c[3].width,e+c[0].width,Math.max(0,h-c[3].width),Math.max(0,j-c[0].width)).topLeft.subdivide(.5),topRightOuter:i(d+q,e,k,l).topRight.subdivide(.5),topRightInner:i(d+Math.min(q,f+c[3].width),e+c[0].width,q>f+c[3].width?0:k-c[3].width,l-c[0].width).topRight.subdivide(.5),bottomRightOuter:i(d+s,e+r,m,n).bottomRight.subdivide(.5),bottomRightInner:i(d+Math.min(s,f-c[3].width),e+Math.min(r,g+c[0].width),Math.max(0,m-c[1].width),n-c[2].width).bottomRight.subdivide(.5),
8
- bottomLeftOuter:i(d,e+t,o,p).bottomLeft.subdivide(.5),bottomLeftInner:i(d+c[3].width,e+t,Math.max(0,o-c[3].width),p-c[2].width).bottomLeft.subdivide(.5)}}function k(a,b,c,d){var e=function(a,b,c){return{x:a.x+(b.x-a.x)*c,y:a.y+(b.y-a.y)*c}};return{start:a,startControl:b,endControl:c,end:d,subdivide:function(f){var g=e(a,b,f),h=e(b,c,f),i=e(c,d,f),j=e(g,h,f),l=e(h,i,f),m=e(j,l,f);return[k(a,g,j,m),k(m,l,i,d)]},curveTo:function(a){a.push(["bezierCurve",b.x,b.y,c.x,c.y,d.x,d.y])},curveToReversed:function(d){d.push(["bezierCurve",c.x,c.y,b.x,b.y,a.x,a.y])}}}function l(a,b,c,d,e,f,g){var h=[];return b[0]>0||b[1]>0?(h.push(["line",d[1].start.x,d[1].start.y]),d[1].curveTo(h)):h.push(["line",a.c1[0],a.c1[1]]),c[0]>0||c[1]>0?(h.push(["line",f[0].start.x,f[0].start.y]),f[0].curveTo(h),h.push(["line",g[0].end.x,g[0].end.y]),g[0].curveToReversed(h)):(h.push(["line",a.c2[0],a.c2[1]]),h.push(["line",a.c3[0],a.c3[1]])),b[0]>0||b[1]>0?(h.push(["line",e[1].end.x,e[1].end.y]),e[1].curveToReversed(h)):h.push(["line",a.c4[0],a.c4[1]]),h}function m(a,b,c,d,e,f,g){b[0]>0||b[1]>0?(a.push(["line",d[0].start.x,d[0].start.y]),d[0].curveTo(a),d[1].curveTo(a)):a.push(["line",f,g]),(c[0]>0||c[1]>0)&&a.push(["line",e[0].start.x,e[0].start.y])}function n(a){return a.cssInt("zIndex")<0}function o(a){return a.cssInt("zIndex")>0}function p(a){return 0===a.cssInt("zIndex")}function q(a){return-1!==["inline","inline-block","inline-table"].indexOf(a.css("display"))}function r(a){return a instanceof V}function s(a){return a.node.data.trim().length>0}function t(a){return/^(normal|none|0px)$/.test(a.parent.css("letterSpacing"))}function u(a){return["TopLeft","TopRight","BottomRight","BottomLeft"].map(function(b){var c=a.css("border"+b+"Radius"),d=c.split(" ");return d.length<=1&&(d[1]=d[0]),d.map(G)})}function v(a){return a.nodeType===Node.TEXT_NODE||a.nodeType===Node.ELEMENT_NODE}function w(a){var b=a.css("position"),c=-1!==["absolute","relative","fixed"].indexOf(b)?a.css("zIndex"):"auto";return"auto"!==c}function x(a){return"static"!==a.css("position")}function y(a){return"none"!==a.css("float")}function z(a){return-1!==["inline-block","inline-table"].indexOf(a.css("display"))}function A(a){var b=this;return function(){return!a.apply(b,arguments)}}function B(a){return a.node.nodeType===Node.ELEMENT_NODE}function C(a){return a.isPseudoElement===!0}function D(a){return a.node.nodeType===Node.TEXT_NODE}function E(a){return function(b,c){return b.cssInt("zIndex")+a.indexOf(b)/a.length-(c.cssInt("zIndex")+a.indexOf(c)/a.length)}}function F(a){return a.getOpacity()<1}function G(a){return parseInt(a,10)}function H(a){return a.width}function I(a){return a.node.nodeType!==Node.ELEMENT_NODE||-1===["SCRIPT","HEAD","TITLE","OBJECT","BR","OPTION"].indexOf(a.node.nodeName)}function J(a){return[].concat.apply([],a)}function K(a){var b=a.substr(0,1);return b===a.substr(a.length-1)&&b.match(/'|"/)?a.substr(1,a.length-2):a}function L(a){for(var b,c=[],d=0,e=!1;a.length;)M(a[d])===e?(b=a.splice(0,d),b.length&&c.push(P.ucs2.encode(b)),e=!e,d=0):d++,d>=a.length&&(b=a.splice(0,d),b.length&&c.push(P.ucs2.encode(b)));return c}function M(a){return-1!==[32,13,10,9,45].indexOf(a)}function N(a){return/[^\u0000-\u00ff]/.test(a)}var O=a("./log"),P=a("punycode"),Q=a("./nodecontainer"),R=a("./textcontainer"),S=a("./pseudoelementcontainer"),T=a("./fontmetrics"),U=a("./color"),V=a("./stackingcontext"),W=a("./utils"),X=W.bind,Y=W.getBounds,Z=W.parseBackgrounds,$=W.offsetBounds;d.prototype.calculateOverflowClips=function(){this.nodes.forEach(function(a){if(B(a)){C(a)&&a.appendToDOM(),a.borders=this.parseBorders(a);var b="hidden"===a.css("overflow")?[a.borders.clip]:[],c=a.parseClip();c&&-1!==["absolute","fixed"].indexOf(a.css("position"))&&b.push([["rect",a.bounds.left+c.left,a.bounds.top+c.top,c.right-c.left,c.bottom-c.top]]),a.clip=e(a)?a.parent.clip.concat(b):b,a.backgroundClip="hidden"!==a.css("overflow")?a.clip.concat([a.borders.clip]):a.clip,C(a)&&a.cleanDOM()}else D(a)&&(a.clip=e(a)?a.parent.clip:[]);C(a)||(a.bounds=null)},this)},d.prototype.asyncRenderer=function(a,b,c){c=c||Date.now(),this.paint(a[this.renderIndex++]),a.length===this.renderIndex?b():c+20>Date.now()?this.asyncRenderer(a,b,c):setTimeout(X(function(){this.asyncRenderer(a,b)},this),0)},d.prototype.createPseudoHideStyles=function(a){this.createStyles(a,"."+S.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+':before { content: "" !important; display: none !important; }.'+S.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER+':after { content: "" !important; display: none !important; }')},d.prototype.disableAnimations=function(a){this.createStyles(a,"* { -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; animation: none !important; -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; transition: none !important;}")},d.prototype.createStyles=function(a,b){var c=a.createElement("style");c.innerHTML=b,a.body.appendChild(c)},d.prototype.getPseudoElements=function(a){var b=[[a]];if(a.node.nodeType===Node.ELEMENT_NODE){var c=this.getPseudoElement(a,":before"),d=this.getPseudoElement(a,":after");c&&b.push(c),d&&b.push(d)}return J(b)},d.prototype.getPseudoElement=function(a,b){var c=a.computedStyle(b);if(!c||!c.content||"none"===c.content||"-moz-alt-content"===c.content||"none"===c.display)return null;for(var d=K(c.content),e="url"===d.substr(0,3),g=document.createElement(e?"img":"html2canvaspseudoelement"),h=new S(g,a,b),i=c.length-1;i>=0;i--){var j=f(c.item(i));g.style[j]=c[j]}if(g.className=S.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+" "+S.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER,e)return g.src=Z(d)[0].args[0],[h];var k=document.createTextNode(d);return g.appendChild(k),[h,new R(k,h)]},d.prototype.getChildren=function(a){return J([].filter.call(a.node.childNodes,v).map(function(b){var c=[b.nodeType===Node.TEXT_NODE?new R(b,a):new Q(b,a)].filter(I);return b.nodeType===Node.ELEMENT_NODE&&c.length&&"TEXTAREA"!==b.tagName?c[0].isElementVisible()?c.concat(this.getChildren(c[0])):[]:c},this))},d.prototype.newStackingContext=function(a,b){var c=new V(b,a.getOpacity(),a.node,a.parent);a.cloneTo(c);var d=b?c.getParentStack(this):c.parent.stack;d.contexts.push(c),a.stack=c},d.prototype.createStackingContexts=function(){this.nodes.forEach(function(a){B(a)&&(this.isRootElement(a)||F(a)||w(a)||this.isBodyWithTransparentRoot(a)||a.hasTransform())?this.newStackingContext(a,!0):B(a)&&(x(a)&&p(a)||z(a)||y(a))?this.newStackingContext(a,!1):a.assignStack(a.parent.stack)},this)},d.prototype.isBodyWithTransparentRoot=function(a){return"BODY"===a.node.nodeName&&a.parent.color("backgroundColor").isTransparent()},d.prototype.isRootElement=function(a){return null===a.parent},d.prototype.sortStackingContexts=function(a){a.contexts.sort(E(a.contexts.slice(0))),a.contexts.forEach(this.sortStackingContexts,this)},d.prototype.parseTextBounds=function(a){return function(b,c,d){if("none"!==a.parent.css("textDecoration").substr(0,4)||0!==b.trim().length){if(this.support.rangeBounds&&!a.parent.hasTransform()){var e=d.slice(0,c).join("").length;return this.getRangeBounds(a.node,e,b.length)}if(a.node&&"string"==typeof a.node.data){var f=a.node.splitText(b.length),g=this.getWrapperBounds(a.node,a.parent.hasTransform());return a.node=f,g}}else(!this.support.rangeBounds||a.parent.hasTransform())&&(a.node=a.node.splitText(b.length));return{}}},d.prototype.getWrapperBounds=function(a,b){var c=a.ownerDocument.createElement("html2canvaswrapper"),d=a.parentNode,e=a.cloneNode(!0);c.appendChild(a.cloneNode(!0)),d.replaceChild(c,a);var f=b?$(c):Y(c);return d.replaceChild(e,c),f},d.prototype.getRangeBounds=function(a,b,c){var d=this.range||(this.range=a.ownerDocument.createRange());return d.setStart(a,b),d.setEnd(a,b+c),d.getBoundingClientRect()},d.prototype.parse=function(a){var b=a.contexts.filter(n),c=a.children.filter(B),d=c.filter(A(y)),e=d.filter(A(x)).filter(A(q)),f=c.filter(A(x)).filter(y),h=d.filter(A(x)).filter(q),i=a.contexts.concat(d.filter(x)).filter(p),j=a.children.filter(D).filter(s),k=a.contexts.filter(o);b.concat(e).concat(f).concat(h).concat(i).concat(j).concat(k).forEach(function(a){this.renderQueue.push(a),r(a)&&(this.parse(a),this.renderQueue.push(new g))},this)},d.prototype.paint=function(a){try{a instanceof g?this.renderer.ctx.restore():D(a)?(C(a.parent)&&a.parent.appendToDOM(),this.paintText(a),C(a.parent)&&a.parent.cleanDOM()):this.paintNode(a)}catch(b){if(O(b),this.options.strict)throw b}},d.prototype.paintNode=function(a){r(a)&&(this.renderer.setOpacity(a.opacity),this.renderer.ctx.save(),a.hasTransform()&&this.renderer.setTransform(a.parseTransform())),"INPUT"===a.node.nodeName&&"checkbox"===a.node.type?this.paintCheckbox(a):"INPUT"===a.node.nodeName&&"radio"===a.node.type?this.paintRadio(a):this.paintElement(a)},d.prototype.paintElement=function(a){var b=a.parseBounds();this.renderer.clip(a.backgroundClip,function(){this.renderer.renderBackground(a,b,a.borders.borders.map(H))},this),this.renderer.clip(a.clip,function(){this.renderer.renderBorders(a.borders.borders)},this),this.renderer.clip(a.backgroundClip,function(){switch(a.node.nodeName){case"svg":case"IFRAME":var c=this.images.get(a.node);c?this.renderer.renderImage(a,b,a.borders,c):O("Error loading <"+a.node.nodeName+">",a.node);break;case"IMG":var d=this.images.get(a.node.src);d?this.renderer.renderImage(a,b,a.borders,d):O("Error loading <img>",a.node.src);break;case"CANVAS":this.renderer.renderImage(a,b,a.borders,{image:a.node});break;case"SELECT":case"INPUT":case"TEXTAREA":this.paintFormValue(a)}},this)},d.prototype.paintCheckbox=function(a){var b=a.parseBounds(),c=Math.min(b.width,b.height),d={width:c-1,height:c-1,top:b.top,left:b.left},e=[3,3],f=[e,e,e,e],g=[1,1,1,1].map(function(a){return{color:new U("#A5A5A5"),width:a}}),i=j(d,f,g);this.renderer.clip(a.backgroundClip,function(){this.renderer.rectangle(d.left+1,d.top+1,d.width-2,d.height-2,new U("#DEDEDE")),this.renderer.renderBorders(h(g,d,i,f)),a.node.checked&&(this.renderer.font(new U("#424242"),"normal","normal","bold",c-3+"px","arial"),this.renderer.text("✔",d.left+c/6,d.top+c-1))},this)},d.prototype.paintRadio=function(a){var b=a.parseBounds(),c=Math.min(b.width,b.height)-2;this.renderer.clip(a.backgroundClip,function(){this.renderer.circleStroke(b.left+1,b.top+1,c,new U("#DEDEDE"),1,new U("#A5A5A5")),a.node.checked&&this.renderer.circle(Math.ceil(b.left+c/4)+1,Math.ceil(b.top+c/4)+1,Math.floor(c/2),new U("#424242"))},this)},d.prototype.paintFormValue=function(a){var b=a.getValue();if(b.length>0){var c=a.node.ownerDocument,d=c.createElement("html2canvaswrapper"),e=["lineHeight","textAlign","fontFamily","fontWeight","fontSize","color","paddingLeft","paddingTop","paddingRight","paddingBottom","width","height","borderLeftStyle","borderTopStyle","borderLeftWidth","borderTopWidth","boxSizing","whiteSpace","wordWrap"];e.forEach(function(b){try{d.style[b]=a.css(b)}catch(c){O("html2canvas: Parse: Exception caught in renderFormValue: "+c.message)}});var f=a.parseBounds();d.style.position="fixed",d.style.left=f.left+"px",d.style.top=f.top+"px",d.textContent=b,c.body.appendChild(d),this.paintText(new R(d.firstChild,a)),c.body.removeChild(d)}},d.prototype.paintText=function(a){a.applyTextTransform();var b=P.ucs2.decode(a.node.data),c=this.options.letterRendering&&!t(a)||N(a.node.data)?b.map(function(a){return P.ucs2.encode([a])}):L(b),d=a.parent.fontWeight(),e=a.parent.css("fontSize"),f=a.parent.css("fontFamily"),g=a.parent.parseTextShadows();this.renderer.font(a.parent.color("color"),a.parent.css("fontStyle"),a.parent.css("fontVariant"),d,e,f),g.length?this.renderer.fontShadow(g[0].color,g[0].offsetX,g[0].offsetY,g[0].blur):this.renderer.clearShadow(),this.renderer.clip(a.parent.clip,function(){c.map(this.parseTextBounds(a),this).forEach(function(b,d){b&&(this.renderer.text(c[d],b.left,b.bottom),this.renderTextDecoration(a.parent,b,this.fontMetrics.getMetrics(f,e)))},this)},this)},d.prototype.renderTextDecoration=function(a,b,c){switch(a.css("textDecoration").split(" ")[0]){case"underline":this.renderer.rectangle(b.left,Math.round(b.top+c.baseline+c.lineWidth),b.width,1,a.color("color"));break;case"overline":this.renderer.rectangle(b.left,Math.round(b.top),b.width,1,a.color("color"));break;case"line-through":this.renderer.rectangle(b.left,Math.ceil(b.top+c.middle+c.lineWidth),b.width,1,a.color("color"))}};var _={inset:[["darken",.6],["darken",.1],["darken",.1],["darken",.6]]};d.prototype.parseBorders=function(a){var b=a.parseBounds(),c=u(a),d=["Top","Right","Bottom","Left"].map(function(b,c){var d=a.css("border"+b+"Style"),e=a.color("border"+b+"Color");"inset"===d&&e.isBlack()&&(e=new U([255,255,255,e.a]));var f=_[d]?_[d][c]:null;return{width:a.cssInt("border"+b+"Width"),color:f?e[f[0]](f[1]):e,args:null}}),e=j(b,c,d);return{clip:this.parseBackgroundClip(a,e,d,c,b),borders:h(d,b,e,c)}},d.prototype.parseBackgroundClip=function(a,b,c,d,e){var f=a.css("backgroundClip"),g=[];switch(f){case"content-box":case"padding-box":m(g,d[0],d[1],b.topLeftInner,b.topRightInner,e.left+c[3].width,e.top+c[0].width),m(g,d[1],d[2],b.topRightInner,b.bottomRightInner,e.left+e.width-c[1].width,e.top+c[0].width),m(g,d[2],d[3],b.bottomRightInner,b.bottomLeftInner,e.left+e.width-c[1].width,e.top+e.height-c[2].width),m(g,d[3],d[0],b.bottomLeftInner,b.topLeftInner,e.left+c[3].width,e.top+e.height-c[2].width);break;default:m(g,d[0],d[1],b.topLeftOuter,b.topRightOuter,e.left,e.top),m(g,d[1],d[2],b.topRightOuter,b.bottomRightOuter,e.left+e.width,e.top),m(g,d[2],d[3],b.bottomRightOuter,b.bottomLeftOuter,e.left+e.width,e.top+e.height),m(g,d[3],d[0],b.bottomLeftOuter,b.topLeftOuter,e.left,e.top+e.height)}return g},b.exports=d},{"./color":3,"./fontmetrics":7,"./log":13,"./nodecontainer":14,"./pseudoelementcontainer":18,"./stackingcontext":21,"./textcontainer":25,"./utils":26,punycode:1}],16:[function(a,b,c){function d(a,b,c){var d="withCredentials"in new XMLHttpRequest;if(!b)return Promise.reject("No proxy configured");var e=g(d),i=h(b,a,e);return d?k(i):f(c,i,e).then(function(a){return o(a.content)})}function e(a,b,c){var d="crossOrigin"in new Image,e=g(d),i=h(b,a,e);return d?Promise.resolve(i):f(c,i,e).then(function(a){return"data:"+a.type+";base64,"+a.content})}function f(a,b,c){return new Promise(function(d,e){var f=a.createElement("script"),g=function(){delete window.html2canvas.proxy[c],a.body.removeChild(f)};window.html2canvas.proxy[c]=function(a){g(),d(a)},f.src=b,f.onerror=function(a){g(),e(a)},a.body.appendChild(f)})}function g(a){return a?"":"html2canvas_"+Date.now()+"_"+ ++p+"_"+Math.round(1e5*Math.random())}function h(a,b,c){return a+"?url="+encodeURIComponent(b)+(c.length?"&callback=html2canvas.proxy."+c:"")}function i(a){return function(b){var c,d=new DOMParser;try{c=d.parseFromString(b,"text/html")}catch(e){m("DOMParser not supported, falling back to createHTMLDocument"),c=document.implementation.createHTMLDocument("");try{c.open(),c.write(b),c.close()}catch(f){m("createHTMLDocument write not supported, falling back to document.body.innerHTML"),c.body.innerHTML=b}}var g=c.querySelector("base");if(!g||!g.href.host){var h=c.createElement("base");h.href=a,c.head.insertBefore(h,c.head.firstChild)}return c}}function j(a,b,c,e,f,g){return new d(a,b,window.document).then(i(a)).then(function(a){return n(a,c,e,f,g,0,0)})}var k=a("./xhr"),l=a("./utils"),m=a("./log"),n=a("./clone"),o=l.decode64,p=0;c.Proxy=d,c.ProxyURL=e,c.loadUrlDocument=j},{"./clone":2,"./log":13,"./utils":26,"./xhr":28}],17:[function(a,b,c){function d(a,b){var c=document.createElement("a");c.href=a,a=c.href,this.src=a,this.image=new Image;var d=this;this.promise=new Promise(function(c,f){d.image.crossOrigin="Anonymous",d.image.onload=c,d.image.onerror=f,new e(a,b,document).then(function(a){d.image.src=a})["catch"](f)})}var e=a("./proxy").ProxyURL;b.exports=d},{"./proxy":16}],18:[function(a,b,c){function d(a,b,c){e.call(this,a,b),this.isPseudoElement=!0,this.before=":before"===c}var e=a("./nodecontainer");d.prototype.cloneTo=function(a){d.prototype.cloneTo.call(this,a),a.isPseudoElement=!0,a.before=this.before},d.prototype=Object.create(e.prototype),d.prototype.appendToDOM=function(){this.before?this.parent.node.insertBefore(this.node,this.parent.node.firstChild):this.parent.node.appendChild(this.node),this.parent.node.className+=" "+this.getHideClass()},d.prototype.cleanDOM=function(){this.node.parentNode.removeChild(this.node),this.parent.node.className=this.parent.node.className.replace(this.getHideClass(),"")},d.prototype.getHideClass=function(){return this["PSEUDO_HIDE_ELEMENT_CLASS_"+(this.before?"BEFORE":"AFTER")]},d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE="___html2canvas___pseudoelement_before",d.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER="___html2canvas___pseudoelement_after",b.exports=d},{"./nodecontainer":14}],19:[function(a,b,c){function d(a,b,c,d,e){this.width=a,this.height=b,this.images=c,this.options=d,this.document=e}var e=a("./log");d.prototype.renderImage=function(a,b,c,d){var e=a.cssInt("paddingLeft"),f=a.cssInt("paddingTop"),g=a.cssInt("paddingRight"),h=a.cssInt("paddingBottom"),i=c.borders,j=b.width-(i[1].width+i[3].width+e+g),k=b.height-(i[0].width+i[2].width+f+h);this.drawImage(d,0,0,d.image.width||j,d.image.height||k,b.left+e+i[3].width,b.top+f+i[0].width,j,k)},d.prototype.renderBackground=function(a,b,c){b.height>0&&b.width>0&&(this.renderBackgroundColor(a,b),this.renderBackgroundImage(a,b,c))},d.prototype.renderBackgroundColor=function(a,b){var c=a.color("backgroundColor");c.isTransparent()||this.rectangle(b.left,b.top,b.width,b.height,c)},d.prototype.renderBorders=function(a){a.forEach(this.renderBorder,this)},d.prototype.renderBorder=function(a){a.color.isTransparent()||null===a.args||this.drawShape(a.args,a.color)},d.prototype.renderBackgroundImage=function(a,b,c){var d=a.parseBackgroundImages();d.reverse().forEach(function(d,f,g){switch(d.method){case"url":var h=this.images.get(d.args[0]);h?this.renderBackgroundRepeating(a,b,h,g.length-(f+1),c):e("Error loading background-image",d.args[0]);break;case"linear-gradient":case"gradient":var i=this.images.get(d.value);i?this.renderBackgroundGradient(i,b,c):e("Error loading background-image",d.args[0]);break;case"none":break;default:e("Unknown background-image type",d.args[0])}},this)},d.prototype.renderBackgroundRepeating=function(a,b,c,d,e){var f=a.parseBackgroundSize(b,c.image,d),g=a.parseBackgroundPosition(b,c.image,d,f),h=a.parseBackgroundRepeat(d);switch(h){case"repeat-x":case"repeat no-repeat":this.backgroundRepeatShape(c,g,f,b,b.left+e[3],b.top+g.top+e[0],99999,f.height,e);break;case"repeat-y":case"no-repeat repeat":this.backgroundRepeatShape(c,g,f,b,b.left+g.left+e[3],b.top+e[0],f.width,99999,e);break;case"no-repeat":this.backgroundRepeatShape(c,g,f,b,b.left+g.left+e[3],b.top+g.top+e[0],f.width,f.height,e);break;default:this.renderBackgroundRepeat(c,g,f,{top:b.top,left:b.left},e[3],e[0])}},b.exports=d},{"./log":13}],20:[function(a,b,c){function d(a,b){f.apply(this,arguments),this.canvas=this.options.canvas||this.document.createElement("canvas"),this.options.canvas||(this.canvas.width=a,this.canvas.height=b),this.ctx=this.canvas.getContext("2d"),this.taintCtx=this.document.createElement("canvas").getContext("2d"),this.ctx.textBaseline="bottom",this.variables={},h("Initialized CanvasRenderer with size",a,"x",b)}function e(a){return a.length>0}var f=a("../renderer"),g=a("../lineargradientcontainer"),h=a("../log");d.prototype=Object.create(f.prototype),d.prototype.setFillStyle=function(a){return this.ctx.fillStyle="object"==typeof a&&a.isColor?a.toString():a,this.ctx},d.prototype.rectangle=function(a,b,c,d,e){this.setFillStyle(e).fillRect(a,b,c,d)},d.prototype.circle=function(a,b,c,d){this.setFillStyle(d),this.ctx.beginPath(),this.ctx.arc(a+c/2,b+c/2,c/2,0,2*Math.PI,!0),this.ctx.closePath(),this.ctx.fill()},d.prototype.circleStroke=function(a,b,c,d,e,f){this.circle(a,b,c,d),this.ctx.strokeStyle=f.toString(),this.ctx.stroke()},d.prototype.drawShape=function(a,b){this.shape(a),this.setFillStyle(b).fill()},d.prototype.taints=function(a){if(null===a.tainted){this.taintCtx.drawImage(a.image,0,0);try{this.taintCtx.getImageData(0,0,1,1),a.tainted=!1}catch(b){this.taintCtx=document.createElement("canvas").getContext("2d"),a.tainted=!0}}return a.tainted},d.prototype.drawImage=function(a,b,c,d,e,f,g,h,i){(!this.taints(a)||this.options.allowTaint)&&this.ctx.drawImage(a.image,b,c,d,e,f,g,h,i)},d.prototype.clip=function(a,b,c){this.ctx.save(),a.filter(e).forEach(function(a){this.shape(a).clip()},this),b.call(c),this.ctx.restore()},d.prototype.shape=function(a){return this.ctx.beginPath(),a.forEach(function(a,b){"rect"===a[0]?this.ctx.rect.apply(this.ctx,a.slice(1)):this.ctx[0===b?"moveTo":a[0]+"To"].apply(this.ctx,a.slice(1))},this),this.ctx.closePath(),this.ctx},d.prototype.font=function(a,b,c,d,e,f){this.setFillStyle(a).font=[b,c,d,e,f].join(" ").split(",")[0]},d.prototype.fontShadow=function(a,b,c,d){this.setVariable("shadowColor",a.toString()).setVariable("shadowOffsetY",b).setVariable("shadowOffsetX",c).setVariable("shadowBlur",d)},d.prototype.clearShadow=function(){this.setVariable("shadowColor","rgba(0,0,0,0)")},d.prototype.setOpacity=function(a){this.ctx.globalAlpha=a},d.prototype.setTransform=function(a){this.ctx.translate(a.origin[0],a.origin[1]),this.ctx.transform.apply(this.ctx,a.matrix),this.ctx.translate(-a.origin[0],-a.origin[1])},d.prototype.setVariable=function(a,b){return this.variables[a]!==b&&(this.variables[a]=this.ctx[a]=b),this},d.prototype.text=function(a,b,c){this.ctx.fillText(a,b,c)},d.prototype.backgroundRepeatShape=function(a,b,c,d,e,f,g,h,i){var j=[["line",Math.round(e),Math.round(f)],["line",Math.round(e+g),Math.round(f)],["line",Math.round(e+g),Math.round(h+f)],["line",Math.round(e),Math.round(h+f)]];this.clip([j],function(){this.renderBackgroundRepeat(a,b,c,d,i[3],i[0])},this)},d.prototype.renderBackgroundRepeat=function(a,b,c,d,e,f){var g=Math.round(d.left+b.left+e),h=Math.round(d.top+b.top+f);this.setFillStyle(this.ctx.createPattern(this.resizeImage(a,c),"repeat")),this.ctx.translate(g,h),this.ctx.fill(),this.ctx.translate(-g,-h)},d.prototype.renderBackgroundGradient=function(a,b){if(a instanceof g){var c=this.ctx.createLinearGradient(b.left+b.width*a.x0,b.top+b.height*a.y0,b.left+b.width*a.x1,b.top+b.height*a.y1);a.colorStops.forEach(function(a){c.addColorStop(a.stop,a.color.toString())}),this.rectangle(b.left,b.top,b.width,b.height,c)}},d.prototype.resizeImage=function(a,b){var c=a.image;if(c.width===b.width&&c.height===b.height)return c;var d,e=document.createElement("canvas");return e.width=b.width,e.height=b.height,d=e.getContext("2d"),d.drawImage(c,0,0,c.width,c.height,0,0,b.width,b.height),e},b.exports=d},{"../lineargradientcontainer":12,"../log":13,"../renderer":19}],21:[function(a,b,c){function d(a,b,c,d){e.call(this,c,d),this.ownStacking=a,this.contexts=[],this.children=[],this.opacity=(this.parent?this.parent.stack.opacity:1)*b}var e=a("./nodecontainer");d.prototype=Object.create(e.prototype),d.prototype.getParentStack=function(a){var b=this.parent?this.parent.stack:null;return b?b.ownStacking?b:b.getParentStack(a):a.stack},b.exports=d},{"./nodecontainer":14}],22:[function(a,b,c){function d(a){this.rangeBounds=this.testRangeBounds(a),this.cors=this.testCORS(),this.svg=this.testSVG()}d.prototype.testRangeBounds=function(a){var b,c,d,e,f=!1;return a.createRange&&(b=a.createRange(),b.getBoundingClientRect&&(c=a.createElement("boundtest"),c.style.height="123px",c.style.display="block",a.body.appendChild(c),b.selectNode(c),d=b.getBoundingClientRect(),e=d.height,123===e&&(f=!0),a.body.removeChild(c))),f},d.prototype.testCORS=function(){return"undefined"!=typeof(new Image).crossOrigin},d.prototype.testSVG=function(){var a=new Image,b=document.createElement("canvas"),c=b.getContext("2d");a.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{c.drawImage(a,0,0),b.toDataURL()}catch(d){return!1}return!0},b.exports=d},{}],23:[function(a,b,c){function d(a){this.src=a,this.image=null;var b=this;this.promise=this.hasFabric().then(function(){return b.isInline(a)?Promise.resolve(b.inlineFormatting(a)):e(a)}).then(function(a){return new Promise(function(c){window.html2canvas.svg.fabric.loadSVGFromString(a,b.createCanvas.call(b,c))})})}var e=a("./xhr"),f=a("./utils").decode64;d.prototype.hasFabric=function(){return window.html2canvas.svg&&window.html2canvas.svg.fabric?Promise.resolve():Promise.reject(new Error("html2canvas.svg.js is not loaded, cannot render svg"))},d.prototype.inlineFormatting=function(a){return/^data:image\/svg\+xml;base64,/.test(a)?this.decode64(this.removeContentType(a)):this.removeContentType(a)},d.prototype.removeContentType=function(a){return a.replace(/^data:image\/svg\+xml(;base64)?,/,"")},d.prototype.isInline=function(a){return/^data:image\/svg\+xml/i.test(a)},d.prototype.createCanvas=function(a){var b=this;return function(c,d){var e=new window.html2canvas.svg.fabric.StaticCanvas("c");b.image=e.lowerCanvasEl,e.setWidth(d.width).setHeight(d.height).add(window.html2canvas.svg.fabric.util.groupSVGElements(c,d)).renderAll(),a(e.lowerCanvasEl)}},d.prototype.decode64=function(a){return"function"==typeof window.atob?window.atob(a):f(a)},b.exports=d},{"./utils":26,"./xhr":28}],24:[function(a,b,c){function d(a,b){this.src=a,this.image=null;var c=this;this.promise=b?new Promise(function(b,d){c.image=new Image,c.image.onload=b,c.image.onerror=d,c.image.src="data:image/svg+xml,"+(new XMLSerializer).serializeToString(a),c.image.complete===!0&&b(c.image)}):this.hasFabric().then(function(){return new Promise(function(b){window.html2canvas.svg.fabric.parseSVGDocument(a,c.createCanvas.call(c,b))})})}var e=a("./svgcontainer");d.prototype=Object.create(e.prototype),b.exports=d},{"./svgcontainer":23}],25:[function(a,b,c){function d(a,b){f.call(this,a,b)}function e(a,b,c){return a.length>0?b+c.toUpperCase():void 0}var f=a("./nodecontainer");d.prototype=Object.create(f.prototype),d.prototype.applyTextTransform=function(){this.node.data=this.transform(this.parent.css("textTransform"))},d.prototype.transform=function(a){var b=this.node.data;switch(a){case"lowercase":return b.toLowerCase();case"capitalize":return b.replace(/(^|\s|:|-|\(|\))([a-z])/g,e);case"uppercase":return b.toUpperCase();default:return b}},b.exports=d},{"./nodecontainer":14}],26:[function(a,b,c){c.smallImage=function(){return"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},c.bind=function(a,b){return function(){return a.apply(b,arguments)}},c.decode64=function(a){var b,c,d,e,f,g,h,i,j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",k=a.length,l="";for(b=0;k>b;b+=4)c=j.indexOf(a[b]),d=j.indexOf(a[b+1]),e=j.indexOf(a[b+2]),f=j.indexOf(a[b+3]),g=c<<2|d>>4,h=(15&d)<<4|e>>2,i=(3&e)<<6|f,l+=64===e?String.fromCharCode(g):64===f||-1===f?String.fromCharCode(g,h):String.fromCharCode(g,h,i);return l},c.getBounds=function(a){if(a.getBoundingClientRect){var b=a.getBoundingClientRect(),c=null==a.offsetWidth?b.width:a.offsetWidth;return{top:b.top,bottom:b.bottom||b.top+b.height,right:b.left+c,left:b.left,width:c,height:null==a.offsetHeight?b.height:a.offsetHeight}}return{}},c.offsetBounds=function(a){var b=a.offsetParent?c.offsetBounds(a.offsetParent):{top:0,left:0};return{top:a.offsetTop+b.top,bottom:a.offsetTop+a.offsetHeight+b.top,right:a.offsetLeft+b.left+a.offsetWidth,left:a.offsetLeft+b.left,width:a.offsetWidth,height:a.offsetHeight}},c.parseBackgrounds=function(a){var b,c,d,e,f,g,h,i=" \r\n ",j=[],k=0,l=0,m=function(){b&&('"'===c.substr(0,1)&&(c=c.substr(1,c.length-2)),c&&h.push(c),"-"===b.substr(0,1)&&(e=b.indexOf("-",1)+1)>0&&(d=b.substr(0,e),b=b.substr(e)),j.push({prefix:d,method:b.toLowerCase(),value:f,args:h,image:null})),h=[],b=d=c=f=""};return h=[],b=d=c=f="",a.split("").forEach(function(a){if(!(0===k&&i.indexOf(a)>-1)){switch(a){case'"':g?g===a&&(g=null):g=a;break;case"(":if(g)break;if(0===k)return k=1,void(f+=a);l++;break;case")":if(g)break;if(1===k){if(0===l)return k=0,f+=a,void m();l--}break;case",":if(g)break;if(0===k)return void m();if(1===k&&0===l&&!b.match(/^url$/i))return h.push(c),c="",void(f+=a)}f+=a,0===k?b+=a:c+=a}}),m(),j}},{}],27:[function(a,b,c){function d(a){e.apply(this,arguments),this.type="linear"===a.args[0]?e.TYPES.LINEAR:e.TYPES.RADIAL}var e=a("./gradientcontainer");d.prototype=Object.create(e.prototype),b.exports=d},{"./gradientcontainer":9}],28:[function(a,b,c){function d(a){return new Promise(function(b,c){var d=new XMLHttpRequest;d.open("GET",a),d.onload=function(){200===d.status?b(d.responseText):c(new Error(d.statusText))},d.onerror=function(){c(new Error("Network Error"))},d.send()})}b.exports=d},{}]},{},[4])(4)});
 
 
 
 
 
 
 
 
 
ovo/icon-114.png DELETED
Binary file (1.4 kB)
 
ovo/icon-128.png DELETED
Binary file (2.13 kB)
 
ovo/icon-16.png DELETED
Binary file (210 Bytes)
 
ovo/icon-256.png DELETED
Binary file (3.36 kB)
 
ovo/icon-32.png DELETED
Binary file (420 Bytes)
 
ovo/images/ablue-sheet0.png DELETED
Binary file (176 Bytes)
 
ovo/images/adblocksign-sheet0.png DELETED
Binary file (280 Bytes)
 
ovo/images/agreen-sheet0.png DELETED
Binary file (176 Bytes)
 
ovo/images/ared-sheet0.png DELETED
Binary file (164 Bytes)
 
ovo/images/background-sheet0.png DELETED
Binary file (47.9 kB)
 
ovo/images/bannercontainer-sheet0.png DELETED
Binary file (105 Bytes)
 
ovo/images/bfakenine-sheet0.png DELETED
Binary file (244 Bytes)
 
ovo/images/body-sheet0.png DELETED
Binary file (98 Bytes)