Section 1
//CampaignInfo (com.google.analytics.campaign.CampaignInfo)
package com.google.analytics.campaign {
import com.google.analytics.utils.*;
public class CampaignInfo {
private var _new:Boolean;
private var _empty:Boolean;
public function CampaignInfo(_arg1:Boolean=true, _arg2:Boolean=false){
_empty = _arg1;
_new = _arg2;
}
public function isEmpty():Boolean{
return (_empty);
}
public function toURLString():String{
var _local1:Variables;
_local1 = toVariables();
return (_local1.toString());
}
public function toVariables():Variables{
var _local1:Variables;
_local1 = new Variables();
_local1.URIencode = true;
if (((!(isEmpty())) && (isNew()))){
_local1.utmcn = utmcn;
};
if (((!(isEmpty())) && (!(isNew())))){
_local1.utmcr = utmcr;
};
return (_local1);
}
public function isNew():Boolean{
return (_new);
}
public function get utmcn():String{
return ("1");
}
public function get utmcr():String{
return ("1");
}
}
}//package com.google.analytics.campaign
Section 2
//CampaignKey (com.google.analytics.campaign.CampaignKey)
package com.google.analytics.campaign {
public class CampaignKey {
public var UCMD:String;// = "utm_medium"
public var UCID:String;// = "utm_id"
public var UCTR:String;// = "utm_term"
public var UCSR:String;// = "utm_source"
public var UCNO:String;// = "utm_nooverride"
public var UCCN:String;// = "utm_campaign"
public var UGCLID:String;// = "gclid"
public var UCCT:String;// = "utm_content"
}
}//package com.google.analytics.campaign
Section 3
//CampaignManager (com.google.analytics.campaign.CampaignManager)
package com.google.analytics.campaign {
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
public class CampaignManager {
private var _config:Configuration;
private var _domainHash:Number;
private var _debug:DebugConfiguration;
private var _timeStamp:Number;
private var _referrer:String;
private var _buffer:Buffer;
public static const trackingDelimiter:String = "|";
public function CampaignManager(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Number, _arg5:String, _arg6:Number){
_config = _arg1;
_debug = _arg2;
_buffer = _arg3;
_domainHash = _arg4;
_referrer = _arg5;
_timeStamp = _arg6;
}
public function hasNoOverride(_arg1:String):Boolean{
var _local2:CampaignKey;
var _local3:Variables;
var _local4:String;
_local2 = _config.campaignKey;
if (_arg1 == ""){
return (false);
};
_local3 = new Variables(_arg1);
_local4 = "";
if (_local3.hasOwnProperty(_local2.UCNO)){
_local4 = _local3[_local2.UCNO];
switch (_local4){
case "1":
return (true);
case "":
case "0":
default:
return (false);
};
};
return (false);
}
public function getCampaignInformation(_arg1:String, _arg2:Boolean):CampaignInfo{
var _local3:CampaignInfo;
var _local4:CampaignTracker;
var _local5:Boolean;
var _local6:Boolean;
var _local7:int;
var _local8:CampaignTracker;
var _local9:int;
_local3 = new CampaignInfo();
_local5 = false;
_local6 = false;
_local7 = 0;
if (((_config.allowLinker) && (_buffer.isGenuine()))){
if (!_buffer.hasUTMZ()){
return (_local3);
};
};
_local4 = getTrackerFromSearchString(_arg1);
if (isValid(_local4)){
_local6 = hasNoOverride(_arg1);
if (((_local6) && (!(_buffer.hasUTMZ())))){
return (_local3);
};
};
if (!isValid(_local4)){
_local4 = getOrganicCampaign();
if (((!(_buffer.hasUTMZ())) && (isIgnoredKeyword(_local4)))){
return (_local3);
};
};
if (((!(isValid(_local4))) && (_arg2))){
_local4 = getReferrerCampaign();
if (((!(_buffer.hasUTMZ())) && (isIgnoredReferral(_local4)))){
return (_local3);
};
};
if (!isValid(_local4)){
if (((!(_buffer.hasUTMZ())) && (_arg2))){
_local4 = getDirectCampaign();
};
};
if (!isValid(_local4)){
return (_local3);
};
if (((_buffer.hasUTMZ()) && (!(_buffer.utmz.isEmpty())))){
_local8 = new CampaignTracker();
_local8.fromTrackerString(_buffer.utmz.campaignTracking);
_local5 = (_local8.toTrackerString() == _local4.toTrackerString());
_local7 = _buffer.utmz.responseCount;
};
if (((!(_local5)) || (_arg2))){
_local9 = _buffer.utma.sessionCount;
_local7++;
if (_local9 == 0){
_local9 = 1;
};
_buffer.utmz.domainHash = _domainHash;
_buffer.utmz.campaignCreation = _timeStamp;
_buffer.utmz.campaignSessions = _local9;
_buffer.utmz.responseCount = _local7;
_buffer.utmz.campaignTracking = _local4.toTrackerString();
_debug.info(_buffer.utmz.toString(), VisualDebugMode.geek);
_local3 = new CampaignInfo(false, true);
} else {
_local3 = new CampaignInfo(false, false);
};
return (_local3);
}
public function isValid(_arg1:CampaignTracker):Boolean{
if (((_arg1) && (_arg1.isValid()))){
return (true);
};
return (false);
}
public function getTrackerFromSearchString(_arg1:String):CampaignTracker{
var _local2:CampaignTracker;
var _local3:CampaignTracker;
var _local4:CampaignKey;
var _local5:Variables;
_local2 = getOrganicCampaign();
_local3 = new CampaignTracker();
_local4 = _config.campaignKey;
if (_arg1 == ""){
return (_local3);
};
_local5 = new Variables(_arg1);
if (_local5.hasOwnProperty(_local4.UCID)){
_local3.id = _local5[_local4.UCID];
};
if (_local5.hasOwnProperty(_local4.UCSR)){
_local3.source = _local5[_local4.UCSR];
};
if (_local5.hasOwnProperty(_local4.UGCLID)){
_local3.clickId = _local5[_local4.UGCLID];
};
if (_local5.hasOwnProperty(_local4.UCCN)){
_local3.name = _local5[_local4.UCCN];
} else {
_local3.name = "(not set)";
};
if (_local5.hasOwnProperty(_local4.UCMD)){
_local3.medium = _local5[_local4.UCMD];
} else {
_local3.medium = "(not set)";
};
if (_local5.hasOwnProperty(_local4.UCTR)){
_local3.term = _local5[_local4.UCTR];
} else {
if (((_local2) && (!((_local2.term == ""))))){
_local3.term = _local2.term;
};
};
if (_local5.hasOwnProperty(_local4.UCCT)){
_local3.content = _local5[_local4.UCCT];
};
return (_local3);
}
public function getOrganicCampaign():CampaignTracker{
var _local1:CampaignTracker;
var _local2:URL;
var _local3:String;
var _local4:Array;
var _local5:OrganicReferrer;
var _local6:String;
if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
return (_local1);
};
_local2 = new URL(_referrer);
_local3 = "";
if (_local2.hostName != ""){
if (_local2.hostName.indexOf(".") > -1){
_local4 = _local2.hostName.split(".");
switch (_local4.length){
case 2:
_local3 = _local4[0];
break;
case 3:
_local3 = _local4[1];
break;
};
};
};
if (_config.organic.match(_local3)){
_local5 = _config.organic.getReferrerByName(_local3);
_local6 = _config.organic.getKeywordValue(_local5, _local2.search);
_local1 = new CampaignTracker();
_local1.source = _local5.engine;
_local1.name = "(organic)";
_local1.medium = "organic";
_local1.term = _local6;
};
return (_local1);
}
public function isIgnoredReferral(_arg1:CampaignTracker):Boolean{
if (((_arg1) && ((_arg1.medium == "referral")))){
return (_config.organic.isIgnoredReferral(_arg1.source));
};
return (false);
}
public function getDirectCampaign():CampaignTracker{
var _local1:CampaignTracker;
_local1 = new CampaignTracker();
_local1.source = "(direct)";
_local1.name = "(direct)";
_local1.medium = "(none)";
return (_local1);
}
public function isIgnoredKeyword(_arg1:CampaignTracker):Boolean{
if (((_arg1) && ((_arg1.medium == "organic")))){
return (_config.organic.isIgnoredKeyword(_arg1.term));
};
return (false);
}
public function getReferrerCampaign():CampaignTracker{
var _local1:CampaignTracker;
var _local2:URL;
var _local3:String;
var _local4:String;
if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
return (_local1);
};
_local2 = new URL(_referrer);
_local3 = _local2.hostName;
_local4 = _local2.path;
if (_local3.indexOf("www.") == 0){
_local3 = _local3.substr(4);
};
_local1 = new CampaignTracker();
_local1.source = _local3;
_local1.name = "(referral)";
_local1.medium = "referral";
_local1.content = _local4;
return (_local1);
}
public static function isInvalidReferrer(_arg1:String):Boolean{
var _local2:URL;
if ((((((_arg1 == "")) || ((_arg1 == "-")))) || ((_arg1 == "0")))){
return (true);
};
if (_arg1.indexOf("://") > -1){
_local2 = new URL(_arg1);
if ((((_local2.protocol == Protocols.file)) || ((_local2.protocol == Protocols.none)))){
return (true);
};
};
return (false);
}
public static function isFromGoogleCSE(_arg1:String, _arg2:Configuration):Boolean{
var _local3:URL;
_local3 = new URL(_arg1);
if (_local3.hostName.indexOf(_arg2.google) > -1){
if (_local3.search.indexOf((_arg2.googleSearchParam + "=")) > -1){
if (_local3.path == ("/" + _arg2.googleCsePath)){
return (true);
};
};
};
return (false);
}
}
}//package com.google.analytics.campaign
Section 4
//CampaignTracker (com.google.analytics.campaign.CampaignTracker)
package com.google.analytics.campaign {
import com.google.analytics.utils.*;
public class CampaignTracker {
public var content:String;
public var source:String;
public var clickId:String;
public var name:String;
public var term:String;
public var medium:String;
public var id:String;
public function CampaignTracker(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:String="", _arg5:String="", _arg6:String="", _arg7:String=""){
this.id = _arg1;
this.source = _arg2;
this.clickId = _arg3;
this.name = _arg4;
this.medium = _arg5;
this.term = _arg6;
this.content = _arg7;
}
public function isValid():Boolean{
if (((((!((id == ""))) || (!((source == ""))))) || (!((clickId == ""))))){
return (true);
};
return (false);
}
public function toTrackerString():String{
var _local1:Array = [];
_addIfNotEmpty(_local1, "utmcsr=", source);
_addIfNotEmpty(_local1, "utmccn=", name);
_addIfNotEmpty(_local1, "utmcmd=", medium);
_addIfNotEmpty(_local1, "utmctr=", term);
_addIfNotEmpty(_local1, "utmcct=", content);
_addIfNotEmpty(_local1, "utmcid=", id);
_addIfNotEmpty(_local1, "utmgclid=", clickId);
return (_local1.join(CampaignManager.trackingDelimiter));
}
private function _addIfNotEmpty(_arg1:Array, _arg2:String, _arg3:String):void{
if (_arg3 != ""){
_arg3 = _arg3.split("+").join("%20");
_arg3 = _arg3.split(" ").join("%20");
_arg1.push((_arg2 + _arg3));
};
}
public function fromTrackerString(_arg1:String):void{
var _local2:String = _arg1.split(CampaignManager.trackingDelimiter).join("&");
var _local3:Variables = new Variables(_local2);
if (_local3.hasOwnProperty("utmcid")){
this.id = _local3["utmcid"];
};
if (_local3.hasOwnProperty("utmcsr")){
this.source = _local3["utmcsr"];
};
if (_local3.hasOwnProperty("utmccn")){
this.name = _local3["utmccn"];
};
if (_local3.hasOwnProperty("utmcmd")){
this.medium = _local3["utmcmd"];
};
if (_local3.hasOwnProperty("utmctr")){
this.term = _local3["utmctr"];
};
if (_local3.hasOwnProperty("utmcct")){
this.content = _local3["utmcct"];
};
if (_local3.hasOwnProperty("utmgclid")){
this.clickId = _local3["utmgclid"];
};
}
}
}//package com.google.analytics.campaign
Section 5
//FlashTracker (com.google.analytics.components.FlashTracker)
package com.google.analytics.components {
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.events.*;
import flash.display.*;
import com.google.analytics.utils.*;
import com.google.analytics.external.*;
import com.google.analytics.*;
import flash.utils.*;
import com.google.analytics.events.*;
public class FlashTracker extends Sprite implements AnalyticsTracker {
private var _adSense:AdSenseGlobals;
private var _env:Environment;
protected var _height:Number;// = 18
private var _idleTimer:IdleTimer;
private var _config:Configuration;
private var _mode:String;// = "AS3"
private var _dom:HTMLDOM;
private var _ready:Boolean;// = false
protected var _width:Number;// = 18
private var _account:String;// = ""
protected var _componentInspectorSetting:Boolean;
private var _visualDebug:Boolean;// = false
public var boundingBox_mc:DisplayObject;
private var _debug:DebugConfiguration;
private var _buffer:Buffer;
private var _display:DisplayObject;
protected var livePreviewHeight:Number;
private var _jsproxy:JavascriptProxy;
protected var isLivePreview:Boolean;
protected var preview:MovieClip;
private var _gifRequest:GIFRequest;
protected var livePreviewWidth:Number;
private var _tracker:GoogleAnalyticsAPI;
public static var version:Version = API.version;
public function FlashTracker(){
_ready = false;
_account = "";
_mode = TrackerMode.AS3;
_visualDebug = false;
_width = 18;
_height = 18;
super();
_tracker = new TrackerCache();
isLivePreview = _checkLivePreview();
_componentInspectorSetting = false;
if (boundingBox_mc){
boundingBox_mc.visible = false;
removeChild(boundingBox_mc);
boundingBox_mc = null;
};
if (isLivePreview){
_createLivePreview();
};
addEventListener(Event.ENTER_FRAME, _factory);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4));
}
public function trackTrans():void{
_tracker.trackTrans();
}
private function _createLivePreview():void{
var _local1:Graphics;
var _local2:Class;
preview = new MovieClip();
_local1 = preview.graphics;
_local1.beginFill(0xFFFFFF);
_local1.moveTo(0, 0);
_local1.lineTo(0, _width);
_local1.lineTo(_width, _height);
_local1.lineTo(_height, 0);
_local1.lineTo(0, 0);
_local1.endFill();
_local2 = (getDefinitionByName("com.google.analytics.components::Icon") as Class);
preview.icon_mc = new (_local2);
preview.icon_mc.name = "icon_mc";
preview.addChild(preview.icon_mc);
addChild(preview);
}
public function trackPageview(_arg1:String=""):void{
_tracker.trackPageview(_arg1);
}
public function get account():String{
return (_account);
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_tracker.linkByPost(_arg1, _arg2);
}
public function getDetectTitle():Boolean{
return (_tracker.getDetectTitle());
}
public function setCampNameKey(_arg1:String):void{
_tracker.setCampNameKey(_arg1);
}
public function resetSession():void{
_tracker.resetSession();
}
public function set account(_arg1:String):void{
_account = _arg1;
}
public function get debug():DebugConfiguration{
if (!_debug){
_createDebugAndConfig();
};
return (_debug);
}
public function createEventTracker(_arg1:String):EventTracker{
return (_tracker.createEventTracker(_arg1));
}
public function set config(_arg1:Configuration):void{
_config = _arg1;
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8));
}
public function setLocalServerMode():void{
_tracker.setLocalServerMode();
}
public function getLocalGifPath():String{
return (_tracker.getLocalGifPath());
}
public function clearIgnoredRef():void{
_tracker.clearIgnoredRef();
}
public function isReady():Boolean{
return (_ready);
}
public function set debug(_arg1:DebugConfiguration):void{
_debug = _arg1;
}
public function getVersion():String{
return (_tracker.getVersion());
}
public function setLocalRemoteServerMode():void{
_tracker.setLocalRemoteServerMode();
}
public function setCampNOKey(_arg1:String):void{
_tracker.setCampNOKey(_arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
_tracker.addIgnoredOrganic(_arg1);
}
public function setCookiePath(_arg1:String):void{
_tracker.setCookiePath(_arg1);
}
public function setCampTermKey(_arg1:String):void{
_tracker.setCampTermKey(_arg1);
}
private function _trackerFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account));
_adSense = new AdSenseGlobals(debug);
_dom = new HTMLDOM(debug);
_dom.cacheProperties();
_env = new Environment("", "", "", debug, _dom);
_buffer = new Buffer(config, debug, false);
_gifRequest = new GIFRequest(config, debug, _buffer, _env);
_idleTimer = new IdleTimer(config, debug, _display, _buffer);
_env.url = _display.stage.loaderInfo.url;
return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense));
}
public function setCampaignTrack(_arg1:Boolean):void{
_tracker.setCampaignTrack(_arg1);
}
public function getServiceMode():ServerOperationMode{
return (_tracker.getServiceMode());
}
public function set componentInspectorSetting(_arg1:Boolean):void{
_componentInspectorSetting = _arg1;
}
public function setSessionTimeout(_arg1:int):void{
_tracker.setSessionTimeout(_arg1);
}
public function setRemoteServerMode():void{
_tracker.setRemoteServerMode();
}
public function get visualDebug():Boolean{
return (_visualDebug);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_tracker.addOrganic(_arg1, _arg2);
}
public function setCookieTimeout(_arg1:int):void{
_tracker.setCookieTimeout(_arg1);
}
public function getClientInfo():Boolean{
return (_tracker.getClientInfo());
}
public function setAllowLinker(_arg1:Boolean):void{
_tracker.setAllowLinker(_arg1);
}
public function setClientInfo(_arg1:Boolean):void{
_tracker.setClientInfo(_arg1);
}
private function _bridgeFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account));
return (new Bridge(account, _debug, _jsproxy));
}
public function get config():Configuration{
if (!_config){
_createDebugAndConfig();
};
return (_config);
}
public function set mode(_arg1:String):void{
_mode = _arg1;
}
public function setDetectFlash(_arg1:Boolean):void{
_tracker.setDetectFlash(_arg1);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
public function setVar(_arg1:String):void{
_tracker.setVar(_arg1);
}
public function clearIgnoredOrganic():void{
_tracker.clearIgnoredOrganic();
}
public function setDomainName(_arg1:String):void{
_tracker.setDomainName(_arg1);
}
private function _checkLivePreview():Boolean{
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return (true);
};
return (false);
}
public function setCampSourceKey(_arg1:String):void{
_tracker.setCampSourceKey(_arg1);
}
public function setCampContentKey(_arg1:String):void{
_tracker.setCampContentKey(_arg1);
}
public function setSize(_arg1:Number, _arg2:Number):void{
}
public function setAllowAnchor(_arg1:Boolean):void{
_tracker.setAllowAnchor(_arg1);
}
public function setLocalGifPath(_arg1:String):void{
_tracker.setLocalGifPath(_arg1);
}
public function get mode():String{
return (_mode);
}
public function setSampleRate(_arg1:Number):void{
_tracker.setSampleRate(_arg1);
}
public function setAllowHash(_arg1:Boolean):void{
_tracker.setAllowHash(_arg1);
}
public function setDetectTitle(_arg1:Boolean):void{
_tracker.setDetectTitle(_arg1);
}
public function cookiePathCopy(_arg1:String):void{
_tracker.cookiePathCopy(_arg1);
}
private function _factory(_arg1:Event):void{
var _local2:GoogleAnalyticsAPI;
var _local3:TrackerCache;
removeEventListener(Event.ENTER_FRAME, _factory);
if (isLivePreview){
return;
};
_display = this;
_createDebugAndConfig();
if (visualDebug){
debug.layout = new Layout(debug, _display);
debug.active = visualDebug;
};
_jsproxy = new JavascriptProxy(debug);
_local3 = (_tracker as TrackerCache);
switch (mode){
case TrackerMode.BRIDGE:
_local2 = _bridgeFactory();
break;
case TrackerMode.AS3:
default:
_local2 = _trackerFactory();
};
if (!_local3.isEmpty()){
_local3.tracker = _local2;
_local3.flush();
};
_tracker = _local2;
_ready = true;
dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this));
}
public function getDetectFlash():Boolean{
return (_tracker.getDetectFlash());
}
public function clearOrganic():void{
_tracker.clearOrganic();
}
private function _createDebugAndConfig():void{
if (!_debug){
this.debug = new DebugConfiguration();
};
if (!_config){
this.config = new Configuration(debug);
};
}
public function addIgnoredRef(_arg1:String):void{
_tracker.addIgnoredRef(_arg1);
}
public function set visualDebug(_arg1:Boolean):void{
_visualDebug = _arg1;
}
public function setCampMediumKey(_arg1:String):void{
_tracker.setCampMediumKey(_arg1);
}
public function getAccount():String{
return (_tracker.getAccount());
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_tracker.link(_arg1, _arg2);
}
}
var _local1:* = ServerOperationMode;
return (_local1);
}//package com.google.analytics.components
Section 6
//Icon (com.google.analytics.components.Icon)
package com.google.analytics.components {
import flash.display.*;
public dynamic class Icon extends MovieClip {
}
}//package com.google.analytics.components
Section 7
//BrowserInfo (com.google.analytics.core.BrowserInfo)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.utils.*;
public class BrowserInfo {
private var _config:Configuration;
private var _info:Environment;
public function BrowserInfo(_arg1:Configuration, _arg2:Environment){
_config = _arg1;
_info = _arg2;
}
public function get utmul():String{
return (_info.language.toLowerCase());
}
public function get utmje():String{
return ("0");
}
public function toURLString():String{
var _local1:Variables;
_local1 = toVariables();
return (_local1.toString());
}
public function get utmsr():String{
return (((_info.screenWidth + "x") + _info.screenHeight));
}
public function get utmcs():String{
return (_info.languageEncoding);
}
public function get utmfl():String{
var _local1:Version;
if (_config.detectFlash){
_local1 = _info.flashVersion;
return (((((_local1.major + ".") + _local1.minor) + " r") + _local1.build));
};
return ("-");
}
public function toVariables():Variables{
var _local1:Variables;
_local1 = new Variables();
_local1.URIencode = true;
_local1.utmcs = utmcs;
_local1.utmsr = utmsr;
_local1.utmsc = utmsc;
_local1.utmul = utmul;
_local1.utmje = utmje;
_local1.utmfl = utmfl;
return (_local1);
}
public function get utmsc():String{
return ((_info.screenColorDepth + "-bit"));
}
}
}//package com.google.analytics.core
Section 8
//Buffer (com.google.analytics.core.Buffer)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.net.*;
import flash.events.*;
import com.google.analytics.data.*;
public dynamic class Buffer {
private var _SO:SharedObject;
private var _OBJ:Object;
private var _utma:UTMA;
private var _utmb:UTMB;
private var _utmc:UTMC;
private var _debug:DebugConfiguration;
private var _utmk:UTMK;
private var _config:Configuration;
private var _utmv:UTMV;
private var _utmz:UTMZ;
private var _volatile:Boolean;
public function Buffer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Boolean=false, _arg4:Object=null){
var _local5:Boolean;
var _local6:String;
super();
_config = _arg1;
_debug = _arg2;
UTMB.defaultTimespan = _config.sessionTimeout;
UTMZ.defaultTimespan = _config.conversionTimeout;
if (!_arg3){
_SO = SharedObject.getLocal(_config.cookieName, _config.cookiePath);
_local5 = false;
if (_SO.data.utma){
if (!hasUTMA()){
_createUMTA();
};
_utma.fromSharedObject(_SO.data.utma);
if (_debug.verbose){
_debug.info(("found: " + _utma.toString(true)), VisualDebugMode.geek);
};
if (_utma.isExpired()){
if (_debug.verbose){
_debug.warning("UTMA has expired", VisualDebugMode.advanced);
};
_clearUTMA();
_local5 = true;
};
};
if (_SO.data.utmb){
if (!hasUTMB()){
_createUMTB();
};
_utmb.fromSharedObject(_SO.data.utmb);
if (_debug.verbose){
_debug.info(("found: " + _utmb.toString(true)), VisualDebugMode.geek);
};
if (_utmb.isExpired()){
if (_debug.verbose){
_debug.warning("UTMB has expired", VisualDebugMode.advanced);
};
_clearUTMB();
_local5 = true;
};
};
if (_SO.data.utmc){
delete _SO.data.utmc;
_local5 = true;
};
if (_SO.data.utmk){
if (!hasUTMK()){
_createUMTK();
};
_utmk.fromSharedObject(_SO.data.utmk);
if (_debug.verbose){
_debug.info(("found: " + _utmk.toString()), VisualDebugMode.geek);
};
};
if (_SO.data.utmv){
if (!hasUTMV()){
_createUMTV();
};
_utmv.fromSharedObject(_SO.data.utmv);
if (_debug.verbose){
_debug.info(("found: " + _utmv.toString(true)), VisualDebugMode.geek);
};
if (_utmv.isExpired()){
if (_debug.verbose){
_debug.warning("UTMV has expired", VisualDebugMode.advanced);
};
_clearUTMV();
_local5 = true;
};
};
if (_SO.data.utmz){
if (!hasUTMZ()){
_createUMTZ();
};
_utmz.fromSharedObject(_SO.data.utmz);
if (_debug.verbose){
_debug.info(("found: " + _utmz.toString(true)), VisualDebugMode.geek);
};
if (_utmz.isExpired()){
if (_debug.verbose){
_debug.warning("UTMZ has expired", VisualDebugMode.advanced);
};
_clearUTMZ();
_local5 = true;
};
};
if (_local5){
save();
};
} else {
_OBJ = new Object();
if (_arg4){
for (_local6 in _arg4) {
_OBJ[_local6] = _arg4[_local6];
};
};
};
_volatile = _arg3;
}
public function clearCookies():void{
utma.reset();
utmb.reset();
utmc.reset();
utmz.reset();
utmv.reset();
utmk.reset();
}
public function save():void{
var flushStatus:String;
if (!isVolatile()){
flushStatus = null;
try {
flushStatus = _SO.flush();
} catch(e:Error) {
_debug.warning("Error...Could not write SharedObject to disk");
};
switch (flushStatus){
case SharedObjectFlushStatus.PENDING:
_debug.info("Requesting permission to save object...");
_SO.addEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus);
break;
case SharedObjectFlushStatus.FLUSHED:
_debug.info("Value flushed to disk.");
break;
};
};
}
public function get utmv():UTMV{
if (!hasUTMV()){
_createUMTV();
};
return (_utmv);
}
public function get utmz():UTMZ{
if (!hasUTMZ()){
_createUMTZ();
};
return (_utmz);
}
public function hasUTMA():Boolean{
if (_utma){
return (true);
};
return (false);
}
public function hasUTMB():Boolean{
if (_utmb){
return (true);
};
return (false);
}
public function hasUTMC():Boolean{
if (_utmc){
return (true);
};
return (false);
}
public function isGenuine():Boolean{
if (!hasUTMK()){
return (true);
};
return ((utmk.hash == generateCookiesHash()));
}
public function resetCurrentSession():void{
_clearUTMB();
_clearUTMC();
save();
}
public function hasUTMK():Boolean{
if (_utmk){
return (true);
};
return (false);
}
public function generateCookiesHash():Number{
var _local1 = "";
_local1 = (_local1 + utma.valueOf());
_local1 = (_local1 + utmb.valueOf());
_local1 = (_local1 + utmc.valueOf());
_local1 = (_local1 + utmz.valueOf());
_local1 = (_local1 + utmv.valueOf());
return (Utils.generateHash(_local1));
}
private function _createUMTB():void{
_utmb = new UTMB();
_utmb.proxy = this;
}
private function _createUMTC():void{
_utmc = new UTMC();
}
private function _createUMTA():void{
_utma = new UTMA();
_utma.proxy = this;
}
public function hasUTMV():Boolean{
if (_utmv){
return (true);
};
return (false);
}
private function _createUMTK():void{
_utmk = new UTMK();
_utmk.proxy = this;
}
public function hasUTMZ():Boolean{
if (_utmz){
return (true);
};
return (false);
}
private function _createUMTV():void{
_utmv = new UTMV();
_utmv.proxy = this;
}
private function _onFlushStatus(_arg1:NetStatusEvent):void{
_debug.info("User closed permission dialog...");
switch (_arg1.info.code){
case "SharedObject.Flush.Success":
_debug.info("User granted permission -- value saved.");
break;
case "SharedObject.Flush.Failed":
_debug.info("User denied permission -- value not saved.");
break;
};
_SO.removeEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus);
}
private function _createUMTZ():void{
_utmz = new UTMZ();
_utmz.proxy = this;
}
public function updateUTMA(_arg1:Number):void{
if (_debug.verbose){
_debug.info((("updateUTMA( " + _arg1) + " )"), VisualDebugMode.advanced);
};
if (!utma.isEmpty()){
if (isNaN(utma.sessionCount)){
utma.sessionCount = 1;
} else {
utma.sessionCount = (utma.sessionCount + 1);
};
utma.lastTime = utma.currentTime;
utma.currentTime = _arg1;
};
}
private function _clearUTMA():void{
_utma = null;
if (!isVolatile()){
_SO.data.utma = null;
delete _SO.data.utma;
};
}
private function _clearUTMC():void{
_utmc = null;
}
private function _clearUTMB():void{
_utmb = null;
if (!isVolatile()){
_SO.data.utmb = null;
delete _SO.data.utmb;
};
}
public function update(_arg1:String, _arg2):void{
if (isVolatile()){
_OBJ[_arg1] = _arg2;
} else {
_SO.data[_arg1] = _arg2;
};
}
private function _clearUTMZ():void{
_utmz = null;
if (!isVolatile()){
_SO.data.utmz = null;
delete _SO.data.utmz;
};
}
private function _clearUTMV():void{
_utmv = null;
if (!isVolatile()){
_SO.data.utmv = null;
delete _SO.data.utmv;
};
}
public function isVolatile():Boolean{
return (_volatile);
}
public function get utma():UTMA{
if (!hasUTMA()){
_createUMTA();
};
return (_utma);
}
public function get utmb():UTMB{
if (!hasUTMB()){
_createUMTB();
};
return (_utmb);
}
public function get utmc():UTMC{
if (!hasUTMC()){
_createUMTC();
};
return (_utmc);
}
public function get utmk():UTMK{
if (!hasUTMK()){
_createUMTK();
};
return (_utmk);
}
}
}//package com.google.analytics.core
Section 9
//DocumentInfo (com.google.analytics.core.DocumentInfo)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.utils.*;
import com.google.analytics.external.*;
public class DocumentInfo {
private var _config:Configuration;
private var _utmr:String;
private var _adSense:AdSenseGlobals;
private var _info:Environment;
private var _pageURL:String;
public function DocumentInfo(_arg1:Configuration, _arg2:Environment, _arg3:String, _arg4:String=null, _arg5:AdSenseGlobals=null){
_config = _arg1;
_info = _arg2;
_utmr = _arg3;
_pageURL = _arg4;
_adSense = _arg5;
}
public function get utmr():String{
if (!_utmr){
return ("-");
};
return (_utmr);
}
public function toURLString():String{
var _local1:Variables;
_local1 = toVariables();
return (_local1.toString());
}
private function _renderPageURL(_arg1:String=""):String{
var _local2:String;
var _local3:String;
_local2 = _info.locationPath;
_local3 = _info.locationSearch;
if (((!(_arg1)) || ((_arg1 == "")))){
_arg1 = (_local2 + unescape(_local3));
};
return (_arg1);
}
public function get utmp():String{
return (_renderPageURL(_pageURL));
}
private function _generateHitId():Number{
var _local1:Number;
if (((_adSense.hid) && (!((_adSense.hid == ""))))){
_local1 = Number(_adSense.hid);
} else {
_local1 = Math.round((Math.random() * 2147483647));
_adSense.hid = String(_local1);
};
return (_local1);
}
public function get utmhid():String{
return (String(_generateHitId()));
}
public function toVariables():Variables{
var _local1:Variables;
_local1 = new Variables();
_local1.URIencode = true;
if (((_config.detectTitle) && (!((utmdt == ""))))){
_local1.utmdt = utmdt;
};
_local1.utmhid = utmhid;
_local1.utmr = utmr;
_local1.utmp = utmp;
return (_local1);
}
public function get utmdt():String{
return (_info.documentTitle);
}
}
}//package com.google.analytics.core
Section 10
//Domain (com.google.analytics.core.Domain)
package com.google.analytics.core {
import com.google.analytics.debug.*;
public class Domain {
private var _mode:DomainNameMode;
private var _debug:DebugConfiguration;
private var _name:String;
public function Domain(_arg1:DomainNameMode=null, _arg2:String="", _arg3:DebugConfiguration=null){
_debug = _arg3;
if (_arg1 == null){
_arg1 = DomainNameMode.auto;
};
_mode = _arg1;
if (_arg1 == DomainNameMode.custom){
this.name = _arg2;
} else {
_name = _arg2;
};
}
public function get mode():DomainNameMode{
return (_mode);
}
public function set mode(_arg1:DomainNameMode):void{
_mode = _arg1;
if (_mode == DomainNameMode.none){
_name = "";
};
}
public function get name():String{
return (_name);
}
public function set name(_arg1:String):void{
if (((!((_arg1.charAt(0) == "."))) && (_debug))){
_debug.warning(("missing leading period \".\", cookie will only be accessible on " + _arg1), VisualDebugMode.geek);
};
_name = _arg1;
}
}
}//package com.google.analytics.core
Section 11
//DomainNameMode (com.google.analytics.core.DomainNameMode)
package com.google.analytics.core {
public class DomainNameMode {
private var _value:int;
private var _name:String;
public static const custom:DomainNameMode = new DomainNameMode(2, "custom");
;
public static const none:DomainNameMode = new DomainNameMode(0, "none");
;
public static const auto:DomainNameMode = new DomainNameMode(1, "auto");
;
public function DomainNameMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.core
Section 12
//EventInfo (com.google.analytics.core.EventInfo)
package com.google.analytics.core {
import com.google.analytics.data.*;
import com.google.analytics.utils.*;
public class EventInfo {
private var _isEventHit:Boolean;
private var _ext10:X10;
private var _x10:X10;
public function EventInfo(_arg1:Boolean, _arg2:X10, _arg3:X10=null){
_isEventHit = _arg1;
_x10 = _arg2;
_ext10 = _arg3;
}
public function toURLString():String{
var _local1:Variables;
_local1 = toVariables();
return (_local1.toString());
}
public function get utmt():String{
return ("event");
}
public function get utme():String{
return (_x10.renderMergedUrlString(_ext10));
}
public function toVariables():Variables{
var _local1:Variables;
_local1 = new Variables();
_local1.URIencode = true;
if (_isEventHit){
_local1.utmt = utmt;
};
_local1.utme = utme;
return (_local1);
}
}
}//package com.google.analytics.core
Section 13
//EventTracker (com.google.analytics.core.EventTracker)
package com.google.analytics.core {
import com.google.analytics.v4.*;
public class EventTracker {
private var _parent:GoogleAnalyticsAPI;
public var name:String;
public function EventTracker(_arg1:String, _arg2:GoogleAnalyticsAPI){
this.name = _arg1;
_parent = _arg2;
}
public function trackEvent(_arg1:String, _arg2:String=null, _arg3:Number=NaN):Boolean{
return (_parent.trackEvent(name, _arg1, _arg2, _arg3));
}
}
}//package com.google.analytics.core
Section 14
//ga_internal (com.google.analytics.core.ga_internal)
package com.google.analytics.core {
public namespace ga_internal;
}//package com.google.analytics.core
Section 15
//GIFRequest (com.google.analytics.core.GIFRequest)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.net.*;
import flash.events.*;
import flash.display.*;
import com.google.analytics.utils.*;
import flash.system.*;
public class GIFRequest {
private var _info:Environment;
private var _count:int;
private var _utmac:String;
private var _alertcount:int;
private var _debug:DebugConfiguration;
private var _lastRequest:URLRequest;
private var _buffer:Buffer;
private var _config:Configuration;
private var _requests:Array;
public function GIFRequest(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Environment){
_config = _arg1;
_debug = _arg2;
_buffer = _arg3;
_info = _arg4;
_count = 0;
_alertcount = 0;
_requests = [];
}
public function get utmn():String{
return ((Utils.generate32bitRandom() as String));
}
public function onIOError(_arg1:IOErrorEvent):void{
var _local2:String = _lastRequest.url;
var _local3:String = String((_requests.length - 1));
var _local4 = (("Gif Request #" + _local3) + " failed");
if (_debug.GIFRequests){
if (!_debug.verbose){
if (_local2.indexOf("?") > -1){
_local2 = _local2.split("?")[0];
};
_local2 = _shortenURL(_local2);
};
if (int(_debug.mode) > int(VisualDebugMode.basic)){
_local4 = (_local4 + ((" \"" + _local2) + "\" does not exists or is unreachable"));
};
_debug.failure(_local4);
} else {
_debug.warning(_local4);
};
_removeListeners(_arg1.target);
}
public function send(_arg1:String, _arg2:Variables=null, _arg3:Boolean=false, _arg4:Boolean=false):void{
var _local5:String;
var _local6:URLRequest;
var _local7:URLRequest;
_utmac = _arg1;
if (!_arg2){
_arg2 = new Variables();
};
_arg2.URIencode = false;
_arg2.pre = ["utmwv", "utmn", "utmhn", "utmt", "utme", "utmcs", "utmsr", "utmsc", "utmul", "utmje", "utmfl", "utmdt", "utmhid", "utmr", "utmp"];
_arg2.post = ["utmcc"];
if (_debug.verbose){
_debug.info(((("tracking: " + _buffer.utmb.trackCount) + "/") + _config.trackingLimitPerSession), VisualDebugMode.geek);
};
if ((((_buffer.utmb.trackCount < _config.trackingLimitPerSession)) || (_arg3))){
if (_arg4){
updateToken();
};
if (((((_arg3) || (!(_arg4)))) || ((_buffer.utmb.token >= 1)))){
if (((!(_arg3)) && (_arg4))){
_buffer.utmb.token = (_buffer.utmb.token - 1);
};
_buffer.utmb.trackCount = (_buffer.utmb.trackCount + 1);
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
};
_arg2.utmwv = utmwv;
_arg2.utmn = Utils.generate32bitRandom();
if (_info.domainName != ""){
_arg2.utmhn = _info.domainName;
};
if (_config.sampleRate < 1){
_arg2.utmsp = (_config.sampleRate * 100);
};
if ((((_config.serverMode == ServerOperationMode.local)) || ((_config.serverMode == ServerOperationMode.both)))){
_local5 = _info.locationSWFPath;
if (_local5.lastIndexOf("/") > 0){
_local5 = _local5.substring(0, _local5.lastIndexOf("/"));
};
_local6 = new URLRequest();
if (_config.localGIFpath.indexOf("http") == 0){
_local6.url = _config.localGIFpath;
} else {
_local6.url = (_local5 + _config.localGIFpath);
};
_local6.url = (_local6.url + ("?" + _arg2.toString()));
if (((_debug.active) && (_debug.GIFRequests))){
_debugSend(_local6);
} else {
sendRequest(_local6);
};
};
if ((((_config.serverMode == ServerOperationMode.remote)) || ((_config.serverMode == ServerOperationMode.both)))){
_local7 = new URLRequest();
if (_info.protocol == Protocols.HTTPS){
_local7.url = _config.secureRemoteGIFpath;
} else {
if (_info.protocol == Protocols.HTTP){
_local7.url = _config.remoteGIFpath;
} else {
_local7.url = _config.remoteGIFpath;
};
};
_arg2.utmac = utmac;
_arg2.utmcc = encodeURIComponent(utmcc);
_local7.url = (_local7.url + ("?" + _arg2.toString()));
if (((_debug.active) && (_debug.GIFRequests))){
_debugSend(_local7);
} else {
sendRequest(_local7);
};
};
};
};
}
public function onSecurityError(_arg1:SecurityErrorEvent):void{
if (_debug.GIFRequests){
_debug.failure(_arg1.text);
};
}
public function get utmsp():String{
return (((_config.sampleRate * 100) as String));
}
public function get utmcc():String{
var _local1:Array = [];
if (_buffer.hasUTMA()){
_local1.push((_buffer.utma.toURLString() + ";"));
};
if (_buffer.hasUTMZ()){
_local1.push((_buffer.utmz.toURLString() + ";"));
};
if (_buffer.hasUTMV()){
_local1.push((_buffer.utmv.toURLString() + ";"));
};
return (_local1.join("+"));
}
public function get utmac():String{
return (_utmac);
}
public function get utmwv():String{
return (_config.version);
}
public function sendRequest(_arg1:URLRequest):void{
var request = _arg1;
var loader:Loader = new Loader();
loader.name = String(_count++);
var context:LoaderContext = new LoaderContext(false);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
_lastRequest = request;
_requests[loader.name] = new RequestObject(request);
try {
loader.load(request, context);
} catch(e:Error) {
_debug.failure("\"Loader.load()\" could not instanciate Gif Request");
};
}
private function _removeListeners(_arg1:Object):void{
_arg1.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
_arg1.removeEventListener(Event.COMPLETE, onComplete);
}
public function updateToken():void{
var _local2:Number;
var _local1:Number = new Date().getTime();
_local2 = ((_local1 - _buffer.utmb.lastTime) * (_config.tokenRate / 1000));
if (_debug.verbose){
_debug.info(("tokenDelta: " + _local2), VisualDebugMode.geek);
};
if (_local2 >= 1){
_buffer.utmb.token = Math.min(Math.floor((_buffer.utmb.token + _local2)), _config.bucketCapacity);
_buffer.utmb.lastTime = _local1;
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
};
};
}
public function get utmhn():String{
return (_info.domainName);
}
private function _shortenURL(_arg1:String):String{
var _local2:Array;
if (_arg1.length > 60){
_local2 = _arg1.split("/");
while (_arg1.length > 60) {
_local2.shift();
_arg1 = ("../" + _local2.join("/"));
};
};
return (_arg1);
}
private function _debugSend(_arg1:URLRequest):void{
var _local3:String;
var _local2 = "";
switch (_debug.mode){
case VisualDebugMode.geek:
_local2 = ((("Gif Request #" + _alertcount) + ":\n") + _arg1.url);
break;
case VisualDebugMode.advanced:
_local3 = _arg1.url;
if (_local3.indexOf("?") > -1){
_local3 = _local3.split("?")[0];
};
_local3 = _shortenURL(_local3);
_local2 = (((("Send Gif Request #" + _alertcount) + ":\n") + _local3) + " ?");
break;
case VisualDebugMode.basic:
default:
_local2 = (((("Send " + _config.serverMode.toString()) + " Gif Request #") + _alertcount) + " ?");
};
_debug.alertGifRequest(_local2, _arg1, this);
_alertcount++;
}
public function onComplete(_arg1:Event):void{
var _local2:String = _arg1.target.loader.name;
_requests[_local2].complete();
var _local3 = (("Gif Request #" + _local2) + " sent");
var _local4:String = _requests[_local2].request.url;
if (_debug.GIFRequests){
if (!_debug.verbose){
if (_local4.indexOf("?") > -1){
_local4 = _local4.split("?")[0];
};
_local4 = _shortenURL(_local4);
};
if (int(_debug.mode) > int(VisualDebugMode.basic)){
_local3 = (_local3 + ((" to \"" + _local4) + "\""));
};
_debug.success(_local3);
} else {
_debug.info(_local3);
};
_removeListeners(_arg1.target);
}
}
}//package com.google.analytics.core
Section 16
//IdleTimer (com.google.analytics.core.IdleTimer)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class IdleTimer {
private var _loop:Timer;
private var _stage:Stage;
private var _lastMove:int;
private var _debug:DebugConfiguration;
private var _session:Timer;
private var _inactivity:Number;
private var _buffer:Buffer;
public function IdleTimer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:DisplayObject, _arg4:Buffer){
var _local5:Number;
var _local6:Number;
var _local7:Number;
super();
_local5 = _arg1.idleLoop;
_local6 = _arg1.idleTimeout;
_local7 = _arg1.sessionTimeout;
_loop = new Timer((_local5 * 1000));
_session = new Timer((_local7 * 1000), 1);
_debug = _arg2;
_stage = _arg3.stage;
_buffer = _arg4;
_lastMove = getTimer();
_inactivity = (_local6 * 1000);
_loop.addEventListener(TimerEvent.TIMER, checkForIdle);
_session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession);
_stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
_debug.info(((((("delay: " + _local5) + "sec , inactivity: ") + _local6) + "sec, sessionTimeout: ") + _local7), VisualDebugMode.geek);
_loop.start();
}
private function onMouseMove(_arg1:MouseEvent):void{
_lastMove = getTimer();
if (_session.running){
_debug.info("session timer reset", VisualDebugMode.geek);
_session.reset();
};
}
public function endSession(_arg1:TimerEvent):void{
_session.removeEventListener(TimerEvent.TIMER_COMPLETE, endSession);
_debug.info("session timer end session", VisualDebugMode.geek);
_session.reset();
_buffer.resetCurrentSession();
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
_debug.info(_buffer.utmc.toString(), VisualDebugMode.geek);
_session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession);
}
public function checkForIdle(_arg1:TimerEvent):void{
var _local2:int;
_local2 = getTimer();
if ((_local2 - _lastMove) >= _inactivity){
if (!_session.running){
_debug.info("session timer start", VisualDebugMode.geek);
_session.start();
};
};
}
}
}//package com.google.analytics.core
Section 17
//Organic (com.google.analytics.core.Organic)
package com.google.analytics.core {
import com.google.analytics.utils.*;
public class Organic {
private var _sourcesCache:Array;
private var _sourcesEngine:Array;
private var _ignoredKeywords:Array;
private var _ignoredReferralsCache:Object;
private var _ignoredReferrals:Array;
private var _ignoredKeywordsCache:Object;
private var _sources:Array;
public static var throwErrors:Boolean = false;
public function Organic(){
_sources = [];
_sourcesCache = [];
_sourcesEngine = [];
_ignoredReferrals = [];
_ignoredReferralsCache = {};
_ignoredKeywords = [];
_ignoredKeywordsCache = {};
}
public function getKeywordValue(_arg1:OrganicReferrer, _arg2:String):String{
var _local3:String;
_local3 = _arg1.keyword;
return (getKeywordValueFromPath(_local3, _arg2));
}
public function isIgnoredKeyword(_arg1:String):Boolean{
if (_ignoredKeywordsCache.hasOwnProperty(_arg1)){
return (true);
};
return (false);
}
public function isIgnoredReferral(_arg1:String):Boolean{
if (_ignoredReferralsCache.hasOwnProperty(_arg1)){
return (true);
};
return (false);
}
public function clear():void{
clearEngines();
clearIgnoredReferrals();
clearIgnoredKeywords();
}
public function get ignoredKeywordsCount():int{
return (_ignoredKeywords.length);
}
public function match(_arg1:String):Boolean{
if (_arg1 == ""){
return (false);
};
_arg1 = _arg1.toLowerCase();
if (_sourcesEngine[_arg1] != undefined){
return (true);
};
return (false);
}
public function get count():int{
return (_sources.length);
}
public function addSource(_arg1:String, _arg2:String):void{
var _local3:OrganicReferrer;
_local3 = new OrganicReferrer(_arg1, _arg2);
if (_sourcesCache[_local3.toString()] == undefined){
_sources.push(_local3);
_sourcesCache[_local3.toString()] = (_sources.length - 1);
if (_sourcesEngine[_local3.engine] == undefined){
_sourcesEngine[_local3.engine] = [(_sources.length - 1)];
} else {
_sourcesEngine[_local3.engine].push((_sources.length - 1));
};
} else {
if (throwErrors){
throw (new Error((_local3.toString() + " already exists, we don't add it.")));
};
};
}
public function clearIgnoredKeywords():void{
_ignoredKeywords = [];
_ignoredKeywordsCache = {};
}
public function clearEngines():void{
_sources = [];
_sourcesCache = [];
_sourcesEngine = [];
}
public function get ignoredReferralsCount():int{
return (_ignoredReferrals.length);
}
public function addIgnoredReferral(_arg1:String):void{
if (_ignoredReferralsCache[_arg1] == undefined){
_ignoredReferrals.push(_arg1);
_ignoredReferralsCache[_arg1] = (_ignoredReferrals.length - 1);
} else {
if (throwErrors){
throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it.")));
};
};
}
public function clearIgnoredReferrals():void{
_ignoredReferrals = [];
_ignoredReferralsCache = {};
}
public function getReferrerByName(_arg1:String):OrganicReferrer{
var _local2:int;
if (match(_arg1)){
_local2 = _sourcesEngine[_arg1][0];
return (_sources[_local2]);
};
return (null);
}
public function addIgnoredKeyword(_arg1:String):void{
if (_ignoredKeywordsCache[_arg1] == undefined){
_ignoredKeywords.push(_arg1);
_ignoredKeywordsCache[_arg1] = (_ignoredKeywords.length - 1);
} else {
if (throwErrors){
throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it.")));
};
};
}
public function get sources():Array{
return (_sources);
}
public static function getKeywordValueFromPath(_arg1:String, _arg2:String):String{
var _local3:String;
var _local4:Variables;
if (_arg2.indexOf((_arg1 + "=")) > -1){
if (_arg2.charAt(0) == "?"){
_arg2 = _arg2.substr(1);
};
_arg2 = _arg2.split("+").join("%20");
_local4 = new Variables(_arg2);
_local3 = _local4[_arg1];
};
return (_local3);
}
}
}//package com.google.analytics.core
Section 18
//OrganicReferrer (com.google.analytics.core.OrganicReferrer)
package com.google.analytics.core {
public class OrganicReferrer {
private var _engine:String;
private var _keyword:String;
public function OrganicReferrer(_arg1:String, _arg2:String){
this.engine = _arg1;
this.keyword = _arg2;
}
public function set engine(_arg1:String):void{
_engine = _arg1.toLowerCase();
}
public function get keyword():String{
return (_keyword);
}
public function toString():String{
return (((engine + "?") + keyword));
}
public function get engine():String{
return (_engine);
}
public function set keyword(_arg1:String):void{
_keyword = _arg1.toLowerCase();
}
}
}//package com.google.analytics.core
Section 19
//RequestObject (com.google.analytics.core.RequestObject)
package com.google.analytics.core {
import flash.net.*;
import flash.utils.*;
public class RequestObject {
public var start:int;
public var request:URLRequest;
public var end:int;
public function RequestObject(_arg1:URLRequest){
start = getTimer();
this.request = _arg1;
}
public function toString():String{
var _local1:Array;
_local1 = [];
_local1.push((("duration: " + duration) + "ms"));
_local1.push(("url: " + request.url));
return ((("{ " + _local1.join(", ")) + " }"));
}
public function get duration():int{
if (!hasCompleted()){
return (0);
};
return ((end - start));
}
public function hasCompleted():Boolean{
return ((end > 0));
}
public function complete():void{
end = getTimer();
}
}
}//package com.google.analytics.core
Section 20
//ServerOperationMode (com.google.analytics.core.ServerOperationMode)
package com.google.analytics.core {
public class ServerOperationMode {
private var _value:int;
private var _name:String;
public static const both:ServerOperationMode = new ServerOperationMode(2, "both");
;
public static const remote:ServerOperationMode = new ServerOperationMode(1, "remote");
;
public static const local:ServerOperationMode = new ServerOperationMode(0, "local");
;
public function ServerOperationMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.core
Section 21
//TrackerCache (com.google.analytics.core.TrackerCache)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import flash.errors.*;
public class TrackerCache implements GoogleAnalyticsAPI {
public var tracker:GoogleAnalyticsAPI;
private var _ar:Array;
public static var CACHE_THROW_ERROR:Boolean;
public function TrackerCache(_arg1:GoogleAnalyticsAPI=null){
this.tracker = _arg1;
_ar = [];
}
public function size():uint{
return (_ar.length);
}
public function flush():void{
var _local1:Object;
var _local2:String;
var _local3:Array;
var _local4:int;
var _local5:int;
if (tracker == null){
return;
};
if (size() > 0){
_local4 = _ar.length;
while (_local5 < _local4) {
_local1 = _ar.shift();
_local2 = (_local1.name as String);
_local3 = (_local1.args as Array);
if (((!((_local2 == null))) && ((_local2 in tracker)))){
(tracker[_local2] as Function).apply(tracker, _local3);
};
_local5++;
};
};
}
public function enqueue(_arg1:String, ... _args):Boolean{
if (_arg1 == null){
return (false);
};
_ar.push({name:_arg1, args:_args});
return (true);
}
public function link(_arg1:String, _arg2:Boolean=false):void{
enqueue("link", _arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
enqueue("addOrganic", _arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
enqueue("setAllowLinker", _arg1);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
enqueue("trackEvent", _arg1, _arg2, _arg3, _arg4);
return (true);
}
public function getClientInfo():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getClientInfo' method for the moment."));
};
return (false);
}
public function trackTrans():void{
enqueue("trackTrans");
}
public function trackPageview(_arg1:String=""):void{
enqueue("trackPageview", _arg1);
}
public function setClientInfo(_arg1:Boolean):void{
enqueue("setClientInfo", _arg1);
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
enqueue("linkByPost", _arg1, _arg2);
}
public function setCookieTimeout(_arg1:int):void{
enqueue("setCookieTimeout", _arg1);
}
public function isEmpty():Boolean{
return ((_ar.length == 0));
}
public function getDetectTitle():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectTitle' method for the moment."));
};
return (false);
}
public function resetSession():void{
enqueue("resetSession");
}
public function setDetectFlash(_arg1:Boolean):void{
enqueue("setDetectFlash", _arg1);
}
public function clear():void{
_ar = [];
}
public function setCampNameKey(_arg1:String):void{
enqueue("setCampNameKey", _arg1);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
enqueue("addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
public function createEventTracker(_arg1:String):EventTracker{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'createEventTracker' method for the moment."));
};
return (null);
}
public function setVar(_arg1:String):void{
enqueue("setVar", _arg1);
}
public function clearIgnoredOrganic():void{
enqueue("clearIgnoredOrganic");
}
public function setDomainName(_arg1:String):void{
enqueue("setDomainName", _arg1);
}
public function setCampSourceKey(_arg1:String):void{
enqueue("setCampSourceKey", _arg1);
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'addTrans' method for the moment."));
};
return (null);
}
public function setCampContentKey(_arg1:String):void{
enqueue("setCampContentKey", _arg1);
}
public function setLocalServerMode():void{
enqueue("setLocalServerMode");
}
public function getLocalGifPath():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getLocalGifPath' method for the moment."));
};
return ("");
}
public function setAllowAnchor(_arg1:Boolean):void{
enqueue("setAllowAnchor", _arg1);
}
public function clearIgnoredRef():void{
enqueue("clearIgnoredRef");
}
public function setLocalGifPath(_arg1:String):void{
enqueue("setLocalGifPath", _arg1);
}
public function getVersion():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getVersion' method for the moment."));
};
return ("");
}
public function setCookiePath(_arg1:String):void{
enqueue("setCookiePath", _arg1);
}
public function setSampleRate(_arg1:Number):void{
enqueue("setSampleRate", _arg1);
}
public function setDetectTitle(_arg1:Boolean):void{
enqueue("setDetectTitle", _arg1);
}
public function setAllowHash(_arg1:Boolean):void{
enqueue("setAllowHash", _arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
enqueue("addIgnoredOrganic", _arg1);
}
public function setCampNOKey(_arg1:String):void{
enqueue("setCampNOKey", _arg1);
}
public function getServiceMode():ServerOperationMode{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getServiceMode' method for the moment."));
};
return (null);
}
public function setLocalRemoteServerMode():void{
enqueue("setLocalRemoteServerMode");
}
public function cookiePathCopy(_arg1:String):void{
enqueue("cookiePathCopy", _arg1);
}
public function getDetectFlash():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectFlash' method for the moment."));
};
return (false);
}
public function setCampaignTrack(_arg1:Boolean):void{
enqueue("setCampaignTrack", _arg1);
}
public function clearOrganic():void{
enqueue("clearOrganic");
}
public function setCampTermKey(_arg1:String):void{
enqueue("setCampTermKey", _arg1);
}
public function addIgnoredRef(_arg1:String):void{
enqueue("addIgnoredRef", _arg1);
}
public function setCampMediumKey(_arg1:String):void{
enqueue("setCampMediumKey", _arg1);
}
public function setSessionTimeout(_arg1:int):void{
enqueue("setSessionTimeout", _arg1);
}
public function setRemoteServerMode():void{
enqueue("setRemoteServerMode");
}
public function element(){
return (_ar[0]);
}
public function getAccount():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getAccount' method for the moment."));
};
return ("");
}
}
}//package com.google.analytics.core
Section 22
//TrackerMode (com.google.analytics.core.TrackerMode)
package com.google.analytics.core {
public class TrackerMode {
public static const BRIDGE:String = "Bridge";
public static const AS3:String = "AS3";
}
}//package com.google.analytics.core
Section 23
//Utils (com.google.analytics.core.Utils)
package com.google.analytics.core {
public class Utils {
public static function trim(_arg1:String, _arg2:Boolean=false):String{
var _local3:Array;
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:int;
if (_arg1 == ""){
return ("");
};
_local3 = [" ", "\n", "\r", "\t"];
_local4 = _arg1;
if (_arg2){
_local5 = 0;
while ((((_local5 < _local3.length)) && ((_local4.indexOf(_local3[_local5]) > -1)))) {
_local4 = _local4.split(_local3[_local5]).join("");
_local5++;
};
} else {
_local6 = 0;
while ((((_local6 < _local4.length)) && ((_local3.indexOf(_local4.charAt(_local6)) > -1)))) {
_local6++;
};
_local4 = _local4.substr(_local6);
_local7 = (_local4.length - 1);
while ((((_local7 >= 0)) && ((_local3.indexOf(_local4.charAt(_local7)) > -1)))) {
_local7--;
};
_local4 = _local4.substring(0, (_local7 + 1));
};
return (_local4);
}
public static function generateHash(_arg1:String):int{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
_local2 = 1;
_local3 = 0;
if (((!((_arg1 == null))) && (!((_arg1 == ""))))){
_local2 = 0;
_local4 = (_arg1.length - 1);
while (_local4 >= 0) {
_local5 = _arg1.charCodeAt(_local4);
_local2 = ((((_local2 << 6) & 268435455) + _local5) + (_local5 << 14));
_local3 = (_local2 & 266338304);
if (_local3 != 0){
_local2 = (_local2 ^ (_local3 >> 21));
};
_local4--;
};
};
return (_local2);
}
public static function generate32bitRandom():int{
return (Math.round((Math.random() * 2147483647)));
}
public static function validateAccount(_arg1:String):Boolean{
var _local2:RegExp;
_local2 = /^UA-[0-9]*-[0-9]*$/;
return (_local2.test(_arg1));
}
}
}//package com.google.analytics.core
Section 24
//Cookie (com.google.analytics.data.Cookie)
package com.google.analytics.data {
public interface Cookie {
function fromSharedObject(_arg1:Object):void;
function toURLString():String;
function get creation():Date;
function toSharedObject():Object;
function isExpired():Boolean;
function set creation(_arg1:Date):void;
function set expiration(_arg1:Date):void;
function get expiration():Date;
}
}//package com.google.analytics.data
Section 25
//UTMA (com.google.analytics.data.UTMA)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMA extends UTMCookie {
private var _sessionId:Number;
private var _domainHash:Number;
private var _firstTime:Number;
private var _currentTime:Number;
private var _lastTime:Number;
private var _sessionCount:Number;
public function UTMA(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:Number=NaN){
super("utma", "__utma", ["domainHash", "sessionId", "firstTime", "lastTime", "currentTime", "sessionCount"], (Timespan.twoyears * 1000));
this.domainHash = _arg1;
this.sessionId = _arg2;
this.firstTime = _arg3;
this.lastTime = _arg4;
this.currentTime = _arg5;
this.sessionCount = _arg6;
}
public function get lastTime():Number{
return (_lastTime);
}
public function set lastTime(_arg1:Number):void{
_lastTime = _arg1;
update();
}
public function set currentTime(_arg1:Number):void{
_currentTime = _arg1;
update();
}
public function get sessionId():Number{
return (_sessionId);
}
public function get sessionCount():Number{
return (_sessionCount);
}
public function get firstTime():Number{
return (_firstTime);
}
public function get currentTime():Number{
return (_currentTime);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set sessionId(_arg1:Number):void{
_sessionId = _arg1;
update();
}
public function set sessionCount(_arg1:Number):void{
_sessionCount = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
public function set firstTime(_arg1:Number):void{
_firstTime = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 26
//UTMB (com.google.analytics.data.UTMB)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMB extends UTMCookie {
private var _trackCount:Number;
private var _lastTime:Number;
private var _domainHash:Number;
private var _token:Number;
public static var defaultTimespan:Number = Timespan.thirtyminutes;
public function UTMB(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN){
super("utmb", "__utmb", ["domainHash", "trackCount", "token", "lastTime"], (defaultTimespan * 1000));
this.domainHash = _arg1;
this.trackCount = _arg2;
this.token = _arg3;
this.lastTime = _arg4;
}
public function set token(_arg1:Number):void{
_token = _arg1;
update();
}
public function set trackCount(_arg1:Number):void{
_trackCount = _arg1;
update();
}
public function get lastTime():Number{
return (_lastTime);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set lastTime(_arg1:Number):void{
_lastTime = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
public function get token():Number{
return (_token);
}
public function get trackCount():Number{
return (_trackCount);
}
}
}//package com.google.analytics.data
Section 27
//UTMC (com.google.analytics.data.UTMC)
package com.google.analytics.data {
public class UTMC extends UTMCookie {
private var _domainHash:Number;
public function UTMC(_arg1:Number=NaN){
super("utmc", "__utmc", ["domainHash"]);
this.domainHash = _arg1;
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
}
}//package com.google.analytics.data
Section 28
//UTMCookie (com.google.analytics.data.UTMCookie)
package com.google.analytics.data {
import com.google.analytics.core.*;
public class UTMCookie implements Cookie {
protected var inURL:String;
protected var name:String;
private var _creation:Date;
private var _expiration:Date;
public var proxy:Buffer;
private var _timespan:Number;
protected var fields:Array;
public function UTMCookie(_arg1:String, _arg2:String, _arg3:Array, _arg4:Number=0){
this.name = _arg1;
this.inURL = _arg2;
this.fields = _arg3;
_timestamp(_arg4);
}
public function isEmpty():Boolean{
var _local1:int;
var _local2:String;
var _local3:int;
_local1 = 0;
_local3 = 0;
while (_local3 < fields.length) {
_local2 = fields[_local3];
if ((((this[_local2] is Number)) && (isNaN(this[_local2])))){
_local1++;
} else {
if ((((this[_local2] is String)) && ((this[_local2] == "")))){
_local1++;
};
};
_local3++;
};
if (_local1 == fields.length){
return (true);
};
return (false);
}
protected function update():void{
resetTimestamp();
if (proxy){
proxy.update(name, toSharedObject());
};
}
public function fromSharedObject(_arg1:Object):void{
var _local2:String;
var _local3:int;
var _local4:int;
_local3 = fields.length;
_local4 = 0;
while (_local4 < _local3) {
_local2 = fields[_local4];
if (_arg1[_local2]){
this[_local2] = _arg1[_local2];
};
_local4++;
};
if (_arg1.creation){
this.creation = _arg1.creation;
};
if (_arg1.expiration){
this.expiration = _arg1.expiration;
};
}
private function _timestamp(_arg1:Number):void{
creation = new Date();
_timespan = _arg1;
if (_arg1 > 0){
expiration = new Date((creation.valueOf() + _arg1));
};
}
public function isExpired():Boolean{
var _local1:Date;
var _local2:Number;
_local1 = new Date();
_local2 = (expiration.valueOf() - _local1.valueOf());
if (_local2 <= 0){
return (true);
};
return (false);
}
public function set expiration(_arg1:Date):void{
_expiration = _arg1;
}
public function get creation():Date{
return (_creation);
}
public function reset():void{
var _local1:String;
var _local2:int;
_local2 = 0;
while (_local2 < fields.length) {
_local1 = fields[_local2];
if ((this[_local1] is Number)){
this[_local1] = NaN;
} else {
if ((this[_local1] is String)){
this[_local1] = "";
};
};
_local2++;
};
resetTimestamp();
update();
}
public function valueOf():String{
var _local1:Array;
var _local2:String;
var _local3:*;
var _local4:int;
_local1 = [];
_local4 = 0;
while (_local4 < fields.length) {
_local2 = fields[_local4];
_local3 = this[_local2];
if ((_local3 is String)){
if (_local3 == ""){
_local3 = "-";
_local1.push(_local3);
} else {
_local1.push(_local3);
};
} else {
if ((_local3 is Number)){
if (_local3 == 0){
_local1.push(_local3);
} else {
if (isNaN(_local3)){
_local3 = "-";
_local1.push(_local3);
} else {
_local1.push(_local3);
};
};
};
};
_local4++;
};
return (("" + _local1.join(".")));
}
public function resetTimestamp(_arg1:Number=NaN):void{
if (!isNaN(_arg1)){
_timespan = _arg1;
};
_creation = null;
_expiration = null;
_timestamp(_timespan);
}
public function get expiration():Date{
if (_expiration){
return (_expiration);
};
return (new Date((new Date().valueOf() + 1000)));
}
public function toURLString():String{
return (((inURL + "=") + valueOf()));
}
public function toSharedObject():Object{
var _local1:Object;
var _local2:String;
var _local3:*;
var _local4:int;
_local1 = {};
_local4 = 0;
for (;_local4 < fields.length;_local4++) {
_local2 = fields[_local4];
_local3 = this[_local2];
if ((_local3 is String)){
_local1[_local2] = _local3;
} else {
if (_local3 == 0){
_local1[_local2] = _local3;
} else {
if (isNaN(_local3)){
continue;
} else {
_local1[_local2] = _local3;
};
};
};
};
_local1.creation = creation;
_local1.expiration = expiration;
return (_local1);
}
public function toString(_arg1:Boolean=false):String{
var _local2:Array;
var _local3:String;
var _local4:*;
var _local5:int;
var _local6:int;
var _local7:String;
_local2 = [];
_local5 = fields.length;
_local6 = 0;
for (;_local6 < _local5;_local6++) {
_local3 = fields[_local6];
_local4 = this[_local3];
if ((_local4 is String)){
_local2.push((((_local3 + ": \"") + _local4) + "\""));
} else {
if (_local4 == 0){
_local2.push(((_local3 + ": ") + _local4));
} else {
if (isNaN(_local4)){
continue;
} else {
_local2.push(((_local3 + ": ") + _local4));
};
};
};
};
_local7 = (((name.toUpperCase() + " {") + _local2.join(", ")) + "}");
if (_arg1){
_local7 = (_local7 + (((" creation:" + creation) + ", expiration:") + expiration));
};
return (_local7);
}
public function set creation(_arg1:Date):void{
_creation = _arg1;
}
}
}//package com.google.analytics.data
Section 29
//UTMK (com.google.analytics.data.UTMK)
package com.google.analytics.data {
public class UTMK extends UTMCookie {
private var _hash:Number;
public function UTMK(_arg1:Number=NaN){
super("utmk", "__utmk", ["hash"]);
this.hash = _arg1;
}
public function set hash(_arg1:Number):void{
_hash = _arg1;
update();
}
public function get hash():Number{
return (_hash);
}
}
}//package com.google.analytics.data
Section 30
//UTMV (com.google.analytics.data.UTMV)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMV extends UTMCookie {
private var _domainHash:Number;
private var _value:String;
public function UTMV(_arg1:Number=NaN, _arg2:String=""){
super("utmv", "__utmv", ["domainHash", "value"], (Timespan.twoyears * 1000));
this.domainHash = _arg1;
this.value = _arg2;
}
override public function toURLString():String{
return (((inURL + "=") + encodeURI(valueOf())));
}
public function get value():String{
return (_value);
}
public function get domainHash():Number{
return (_domainHash);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set value(_arg1:String):void{
_value = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 31
//UTMZ (com.google.analytics.data.UTMZ)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMZ extends UTMCookie {
private var _campaignTracking:String;
private var _campaignCreation:Number;
private var _responseCount:Number;
private var _domainHash:Number;
private var _campaignSessions:Number;
public static var defaultTimespan:Number = Timespan.sixmonths;
public function UTMZ(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:String=""){
super("utmz", "__utmz", ["domainHash", "campaignCreation", "campaignSessions", "responseCount", "campaignTracking"], (defaultTimespan * 1000));
this.domainHash = _arg1;
this.campaignCreation = _arg2;
this.campaignSessions = _arg3;
this.responseCount = _arg4;
this.campaignTracking = _arg5;
}
public function set responseCount(_arg1:Number):void{
_responseCount = _arg1;
update();
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set campaignCreation(_arg1:Number):void{
_campaignCreation = _arg1;
update();
}
public function get campaignTracking():String{
return (_campaignTracking);
}
public function get campaignSessions():Number{
return (_campaignSessions);
}
public function get domainHash():Number{
return (_domainHash);
}
public function get responseCount():Number{
return (_responseCount);
}
public function get campaignCreation():Number{
return (_campaignCreation);
}
public function set campaignSessions(_arg1:Number):void{
_campaignSessions = _arg1;
update();
}
public function set campaignTracking(_arg1:String):void{
_campaignTracking = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 32
//X10 (com.google.analytics.data.X10)
package com.google.analytics.data {
public class X10 {
private var _delimEnd:String;// = ")"
private var _delimSet:String;// = "*"
private var _escapeChar:String;// = "'"
private var _delimBegin:String;// = "("
private var _delimNumValue:String;// = "!"
private var _key:String;// = "k"
private var _set:Array;
private var _projectData:Object;
private var _hasData:int;
private var _escapeCharMap:Object;
private var _minimum:int;
private var _value:String;// = "v"
public function X10(){
_key = "k";
_value = "v";
_set = [_key, _value];
_delimBegin = "(";
_delimEnd = ")";
_delimSet = "*";
_delimNumValue = "!";
_escapeChar = "'";
super();
_projectData = {};
_escapeCharMap = {};
_escapeCharMap[_escapeChar] = "'0";
_escapeCharMap[_delimEnd] = "'1";
_escapeCharMap[_delimSet] = "'2";
_escapeCharMap[_delimNumValue] = "'3";
_minimum = 1;
}
private function _clearInternal(_arg1:Number, _arg2:String):void{
var _local3:Boolean;
var _local4:int;
var _local5:int;
if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){
_projectData[_arg1][_arg2] = undefined;
_local3 = true;
_local5 = _set.length;
_local4 = 0;
while (_local4 < _local5) {
if (_projectData[_arg1][_set[_local4]] != undefined){
_local3 = false;
break;
};
_local4++;
};
if (_local3){
_projectData[_arg1] = undefined;
_hasData = (_hasData - 1);
};
};
}
public function hasData():Boolean{
return ((_hasData > 0));
}
private function _setInternal(_arg1:Number, _arg2:String, _arg3:Number, _arg4:String):void{
if (!hasProject(_arg1)){
_projectData[_arg1] = {};
};
if (_projectData[_arg1][_arg2] == undefined){
_projectData[_arg1][_arg2] = [];
};
_projectData[_arg1][_arg2][_arg3] = _arg4;
_hasData = (_hasData + 1);
}
public function hasProject(_arg1:Number):Boolean{
return (_projectData[_arg1]);
}
public function clearKey(_arg1:Number):void{
_clearInternal(_arg1, _key);
}
private function _renderDataType(_arg1:Array):String{
var _local2:Array;
var _local3:String;
var _local4:int;
_local2 = [];
_local4 = 0;
while (_local4 < _arg1.length) {
if (_arg1[_local4] != undefined){
_local3 = "";
if (((!((_local4 == _minimum))) && ((_arg1[(_local4 - 1)] == undefined)))){
_local3 = (_local3 + _local4.toString());
_local3 = (_local3 + _delimNumValue);
};
_local3 = (_local3 + _escapeExtensibleValue(_arg1[_local4]));
_local2.push(_local3);
};
_local4++;
};
return (((_delimBegin + _local2.join(_delimSet)) + _delimEnd));
}
public function getKey(_arg1:Number, _arg2:Number):String{
return ((_getInternal(_arg1, _key, _arg2) as String));
}
public function clearValue(_arg1:Number):void{
_clearInternal(_arg1, _value);
}
public function renderMergedUrlString(_arg1:X10=null):String{
var _local2:Array;
var _local3:String;
if (!_arg1){
return (renderUrlString());
};
_local2 = [_arg1.renderUrlString()];
for (_local3 in _projectData) {
if (((hasProject(Number(_local3))) && (!(_arg1.hasProject(Number(_local3)))))){
_local2.push((_local3 + _renderProject(_projectData[_local3])));
};
};
return (_local2.join(""));
}
public function setValue(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
if (((((!((Math.round(_arg3) == _arg3))) || (isNaN(_arg3)))) || ((_arg3 == Infinity)))){
return (false);
};
_setInternal(_arg1, _value, _arg2, _arg3.toString());
return (true);
}
public function renderUrlString():String{
var _local1:Array;
var _local2:String;
_local1 = [];
for (_local2 in _projectData) {
if (hasProject(Number(_local2))){
_local1.push((_local2 + _renderProject(_projectData[_local2])));
};
};
return (_local1.join(""));
}
private function _getInternal(_arg1:Number, _arg2:String, _arg3:Number):Object{
if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){
return (_projectData[_arg1][_arg2][_arg3]);
};
return (undefined);
}
public function setKey(_arg1:Number, _arg2:Number, _arg3:String):Boolean{
_setInternal(_arg1, _key, _arg2, _arg3);
return (true);
}
public function getValue(_arg1:Number, _arg2:Number){
var _local3:*;
_local3 = _getInternal(_arg1, _value, _arg2);
if (_local3 == null){
return (null);
};
return (Number(_local3));
}
private function _renderProject(_arg1:Object):String{
var _local2:String;
var _local3:Boolean;
var _local4:int;
var _local5:Array;
var _local6:int;
_local2 = "";
_local3 = false;
_local6 = _set.length;
_local4 = 0;
while (_local4 < _local6) {
_local5 = _arg1[_set[_local4]];
if (_local5){
if (_local3){
_local2 = (_local2 + _set[_local4]);
};
_local2 = (_local2 + _renderDataType(_local5));
_local3 = false;
} else {
_local3 = true;
};
_local4++;
};
return (_local2);
}
private function _escapeExtensibleValue(_arg1:String):String{
var _local2:String;
var _local3:int;
var _local4:String;
var _local5:String;
_local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
_local4 = _arg1.charAt(_local3);
_local5 = _escapeCharMap[_local4];
if (_local5){
_local2 = (_local2 + _local5);
} else {
_local2 = (_local2 + _local4);
};
_local3++;
};
return (_local2);
}
}
}//package com.google.analytics.data
Section 33
//_Style (com.google.analytics.debug._Style)
package com.google.analytics.debug {
import flash.net.*;
import flash.text.*;
public class _Style {
public var borderColor:uint;
public var backgroundColor:uint;
private var _sheet:StyleSheet;
public var roundedCorner:uint;
public var alertColor:uint;
public var infoColor:uint;
public var successColor:uint;
private var _loader:URLLoader;
public var failureColor:uint;
private var _defaultSheet:String;
public var warningColor:uint;
public function _Style(){
_sheet = new StyleSheet();
_loader = new URLLoader();
_init();
}
private function _parseSheet(_arg1:String):void{
_sheet.parseCSS(_arg1);
}
public function get sheet():StyleSheet{
return (_sheet);
}
private function _init():void{
_defaultSheet = "";
_defaultSheet = (_defaultSheet + "a{text-decoration: underline;}\n");
_defaultSheet = (_defaultSheet + ".uiLabel{color: #000000;font-family: Arial;font-size: 12;margin-left: 2;margin-right: 2;}\n");
_defaultSheet = (_defaultSheet + ".uiWarning{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlert{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiInfo{color: #000000;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiSuccess{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiFailure{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlertAction{color: #ffffff;text-align: center;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlertTitle{color: #ffffff;font-family: Arial;font-size: 16;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + "\n");
roundedCorner = 6;
backgroundColor = 0xCCCCCC;
borderColor = 0x555555;
infoColor = 16777113;
alertColor = 0xFFCC00;
warningColor = 0xCC0000;
successColor = 0xFF00;
failureColor = 0xFF0000;
_parseSheet(_defaultSheet);
}
}
}//package com.google.analytics.debug
Section 34
//Alert (com.google.analytics.debug.Alert)
package com.google.analytics.debug {
import flash.events.*;
public class Alert extends Label {
public var actionOnNextLine:Boolean;// = true
public var autoClose:Boolean;// = true
private var _actions:Array;
public function Alert(_arg1:String, _arg2:Array, _arg3:String="uiAlert", _arg4:uint=0, _arg5:Align=null, _arg6:Boolean=false, _arg7:Boolean=true){
var _local8:int;
autoClose = true;
actionOnNextLine = true;
if (_arg4 == 0){
_arg4 = Style.alertColor;
};
if (_arg5 == null){
_arg5 = Align.center;
};
super(_arg1, _arg3, _arg4, _arg5, _arg6);
this.selectable = true;
super.mouseChildren = true;
this.buttonMode = true;
this.mouseEnabled = true;
this.useHandCursor = true;
this.actionOnNextLine = _arg7;
_actions = [];
_local8 = 0;
while (_local8 < _arg2.length) {
_arg2[_local8].container = this;
_actions.push(_arg2[_local8]);
_local8++;
};
}
protected function getAction(_arg1:String):AlertAction{
var _local2:int;
_local2 = 0;
while (_local2 < _actions.length) {
if (_arg1 == _actions[_local2].activator){
return (_actions[_local2]);
};
_local2++;
};
return (null);
}
override protected function layout():void{
super.layout();
_defineActions();
}
protected function spaces(_arg1:int):String{
var _local2:String;
var _local3:String;
var _local4:int;
_local2 = "";
_local3 = " ";
_local4 = 0;
while (_local4 < (_arg1 + 1)) {
_local2 = (_local2 + _local3);
_local4++;
};
return (_local2);
}
override public function onLink(_arg1:TextEvent):void{
var _local2:AlertAction;
if (isValidAction(_arg1.text)){
_local2 = getAction(_arg1.text);
if (_local2){
_local2.execute();
};
};
if (autoClose){
close();
};
}
protected function isValidAction(_arg1:String):Boolean{
var _local2:int;
_local2 = 0;
while (_local2 < _actions.length) {
if (_arg1 == _actions[_local2].activator){
return (true);
};
_local2++;
};
return (false);
}
private function _defineActions():void{
var _local1:String;
var _local2:Array;
var _local3:AlertAction;
var _local4:int;
_local1 = "";
if (actionOnNextLine){
_local1 = (_local1 + "\n");
} else {
_local1 = (_local1 + " |");
};
_local1 = (_local1 + " ");
_local2 = [];
_local4 = 0;
while (_local4 < _actions.length) {
_local3 = _actions[_local4];
_local2.push((((("<a href=\"event:" + _local3.activator) + "\">") + _local3.name) + "</a>"));
_local4++;
};
_local1 = (_local1 + _local2.join(" | "));
appendText(_local1, "uiAlertAction");
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 35
//AlertAction (com.google.analytics.debug.AlertAction)
package com.google.analytics.debug {
public class AlertAction {
public var container:Alert;
private var _callback;
public var name:String;
public var activator:String;
public function AlertAction(_arg1:String, _arg2:String, _arg3){
this.name = _arg1;
this.activator = _arg2;
_callback = _arg3;
}
public function execute():void{
if (_callback){
if ((_callback is Function)){
(_callback as Function)();
} else {
if ((_callback is String)){
var _local1 = container;
_local1[_callback]();
};
};
};
}
}
}//package com.google.analytics.debug
Section 36
//Align (com.google.analytics.debug.Align)
package com.google.analytics.debug {
public class Align {
private var _value:int;
private var _name:String;
public static const bottomRight:Align = new Align(18, "bottomRight");
;
public static const right:Align = new Align(16, "right");
;
public static const left:Align = new Align(32, "left");
;
public static const topRight:Align = new Align(17, "topRight");
;
public static const bottom:Align = new Align(2, "bottom");
;
public static const bottomLeft:Align = new Align(34, "bottomLeft");
;
public static const topLeft:Align = new Align(33, "topLeft");
;
public static const center:Align = new Align(0x0100, "center");
;
public static const none:Align = new Align(0, "none");
;
public static const top:Align = new Align(1, "top");
;
public function Align(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.debug
Section 37
//Background (com.google.analytics.debug.Background)
package com.google.analytics.debug {
import flash.display.*;
public class Background {
public static function drawRounded(_arg1, _arg2:Graphics, _arg3:uint=0, _arg4:uint=0):void{
var _local5:uint;
var _local6:uint;
var _local7:uint;
_local7 = Style.roundedCorner;
if ((((_arg3 > 0)) && ((_arg4 > 0)))){
_local5 = _arg3;
_local6 = _arg4;
} else {
_local5 = _arg1.width;
_local6 = _arg1.height;
};
if (((_arg1.stickToEdge) && (!((_arg1.alignement == Align.none))))){
switch (_arg1.alignement){
case Align.top:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, _local7);
break;
case Align.topLeft:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, 0, _local7);
break;
case Align.topRight:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, 0);
break;
case Align.bottom:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, _local7, 0, 0);
break;
case Align.bottomLeft:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, 0);
break;
case Align.bottomRight:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, 0, 0);
break;
case Align.left:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, _local7);
break;
case Align.right:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, _local7, 0);
break;
case Align.center:
_arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7);
break;
};
} else {
_arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7);
};
}
}
}//package com.google.analytics.debug
Section 38
//Debug (com.google.analytics.debug.Debug)
package com.google.analytics.debug {
import flash.events.*;
import flash.ui.*;
public class Debug extends Label {
private var _lines:Array;
private var _preferredForcedWidth:uint;// = 540
private var _linediff:int;// = 0
public var maxLines:uint;// = 16
public static var count:uint = 0;
public function Debug(_arg1:uint=0, _arg2:Align=null, _arg3:Boolean=false){
if (_arg2 == null){
_arg2 = Align.bottom;
};
super("", "uiLabel", _arg1, _arg2, _arg3);
this.name = ("Debug" + count++);
_lines = [];
selectable = true;
addEventListener(KeyboardEvent.KEY_DOWN, onKey);
}
public function writeBold(_arg1:String):void{
write(_arg1, true);
}
private function _getLinesToDisplay(_arg1:int=0):Array{
var _local2:Array;
var _local3:uint;
var _local4:uint;
if ((_lines.length - 1) > maxLines){
if ((_linediff <= 0)){
_linediff = (_linediff + _arg1);
} else {
if ((((_linediff > 0)) && ((_arg1 < 0)))){
_linediff = (_linediff + _arg1);
};
};
_local3 = ((_lines.length - maxLines) + _linediff);
_local4 = (_local3 + maxLines);
_local2 = _lines.slice(_local3, _local4);
} else {
_local2 = _lines;
};
return (_local2);
}
private function onKey(_arg1:KeyboardEvent=null):void{
var _local2:Array;
switch (_arg1.keyCode){
case Keyboard.DOWN:
_local2 = _getLinesToDisplay(1);
break;
case Keyboard.UP:
_local2 = _getLinesToDisplay(-1);
break;
default:
_local2 = null;
};
if (_local2 == null){
return;
};
text = _local2.join("\n");
}
override public function get forcedWidth():uint{
if (this.parent){
if (UISprite(this.parent).forcedWidth > _preferredForcedWidth){
return (_preferredForcedWidth);
};
return (UISprite(this.parent).forcedWidth);
//unresolved jump
};
return (super.forcedWidth);
}
public function write(_arg1:String, _arg2:Boolean=false):void{
var _local3:Array;
if (_arg1.indexOf("") > -1){
_local3 = _arg1.split("\n");
} else {
_local3 = [_arg1];
};
var _local4 = "";
var _local5 = "";
if (_arg2){
_local4 = "<b>";
_local5 = "</b>";
};
var _local6:int;
while (_local6 < _local3.length) {
_lines.push(((_local4 + _local3[_local6]) + _local5));
_local6++;
};
var _local7:Array = _getLinesToDisplay();
text = _local7.join("\n");
}
public function close():void{
dispose();
}
override protected function dispose():void{
removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
super.dispose();
}
}
}//package com.google.analytics.debug
Section 39
//DebugConfiguration (com.google.analytics.debug.DebugConfiguration)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
public class DebugConfiguration {
public var showHideKey:Number;
private var _mode:VisualDebugMode;
private var _verbose:Boolean;// = false
public var destroyKey:Number;
public var GIFRequests:Boolean;// = false
public var showInfos:Boolean;// = true
public var infoTimeout:Number;// = 1000
public var minimizedOnStart:Boolean;// = false
private var _active:Boolean;// = false
public var traceOutput:Boolean;// = false
public var layout:ILayout;
public var warningTimeout:Number;// = 1500
public var javascript:Boolean;// = false
public var showWarnings:Boolean;// = true
private var _visualInitialized:Boolean;// = false
public function DebugConfiguration(){
_mode = VisualDebugMode.basic;
showHideKey = Keyboard.SPACE;
destroyKey = Keyboard.BACKSPACE;
super();
}
public function get verbose():Boolean{
return (_verbose);
}
public function set verbose(_arg1:Boolean):void{
_verbose = _arg1;
}
public function set mode(_arg1):void{
if ((_arg1 is String)){
switch (_arg1){
case "geek":
_arg1 = VisualDebugMode.geek;
break;
case "advanced":
_arg1 = VisualDebugMode.advanced;
break;
case "basic":
default:
_arg1 = VisualDebugMode.basic;
};
};
_mode = _arg1;
}
public function success(_arg1:String):void{
if (layout){
layout.createSuccessAlert(_arg1);
};
if (traceOutput){
trace((("[+] " + _arg1) + " !!"));
};
}
public function get active():Boolean{
return (_active);
}
private function _initializeVisual():void{
if (layout){
layout.init();
_visualInitialized = true;
};
}
private function _destroyVisual():void{
if (((layout) && (_visualInitialized))){
layout.destroy();
};
}
public function warning(_arg1:String, _arg2:VisualDebugMode=null):void{
if (_filter(_arg2)){
return;
};
if (((layout) && (showWarnings))){
layout.createWarning(_arg1);
};
if (traceOutput){
trace((("## " + _arg1) + " ##"));
};
}
private function _filter(_arg1:VisualDebugMode=null):Boolean{
return (((_arg1) && ((int(_arg1) >= int(this.mode)))));
}
public function failure(_arg1:String):void{
if (layout){
layout.createFailureAlert(_arg1);
};
if (traceOutput){
trace((("[-] " + _arg1) + " !!"));
};
}
public function get mode(){
return (_mode);
}
public function set active(_arg1:Boolean):void{
_active = _arg1;
if (_active){
_initializeVisual();
} else {
_destroyVisual();
};
}
protected function trace(_arg1:String):void{
var _local7:Array;
var _local8:int;
var _local2:Array = [];
var _local3 = "";
var _local4 = "";
if (this.mode == VisualDebugMode.geek){
_local3 = (getTimer() + " - ");
_local4 = (new Array(_local3.length).join(" ") + " ");
};
if (_arg1.indexOf("\n") > -1){
_local7 = _arg1.split("\n");
_local8 = 0;
while (_local8 < _local7.length) {
if (_local7[_local8] == ""){
} else {
if (_local8 == 0){
_local2.push((_local3 + _local7[_local8]));
} else {
_local2.push((_local4 + _local7[_local8]));
};
};
_local8++;
};
} else {
_local2.push((_local3 + _arg1));
};
var _local5:int = _local2.length;
var _local6:int;
while (_local6 < _local5) {
trace(_local2[_local6]);
_local6++;
};
}
public function alert(_arg1:String):void{
if (layout){
layout.createAlert(_arg1);
};
if (traceOutput){
trace((("!! " + _arg1) + " !!"));
};
}
public function info(_arg1:String, _arg2:VisualDebugMode=null):void{
if (_filter(_arg2)){
return;
};
if (((layout) && (showInfos))){
layout.createInfo(_arg1);
};
if (traceOutput){
trace(_arg1);
};
}
public function alertGifRequest(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{
if (layout){
layout.createGIFRequestAlert(_arg1, _arg2, _arg3);
};
if (traceOutput){
trace(((">> " + _arg1) + " <<"));
};
}
}
}//package com.google.analytics.debug
Section 40
//FailureAlert (com.google.analytics.debug.FailureAlert)
package com.google.analytics.debug {
public class FailureAlert extends Alert {
public function FailureAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){
var _local4:Align;
var _local5:Boolean;
var _local6:Boolean;
_local4 = Align.bottomLeft;
_local5 = true;
_local6 = false;
if (_arg1.verbose){
_arg2 = ((("<u><span class=\"uiAlertTitle\">Failure</span>" + spaces(18)) + "</u>\n\n") + _arg2);
_local4 = Align.center;
_local5 = false;
_local6 = true;
};
super(_arg2, _arg3, "uiFailure", Style.failureColor, _local4, _local5, _local6);
}
}
}//package com.google.analytics.debug
Section 41
//GIFRequestAlert (com.google.analytics.debug.GIFRequestAlert)
package com.google.analytics.debug {
public class GIFRequestAlert extends Alert {
public function GIFRequestAlert(_arg1:String, _arg2:Array){
super(_arg1, _arg2);
}
}
}//package com.google.analytics.debug
Section 42
//ILayout (com.google.analytics.debug.ILayout)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.net.*;
import flash.display.*;
public interface ILayout {
function createWarning(_arg1:String):void;
function addToStage(_arg1:DisplayObject):void;
function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void;
function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void;
function createInfo(_arg1:String):void;
function createFailureAlert(_arg1:String):void;
function addToPanel(_arg1:String, _arg2:DisplayObject):void;
function init():void;
function createSuccessAlert(_arg1:String):void;
function createVisualDebug():void;
function createAlert(_arg1:String):void;
function destroy():void;
function bringToFront(_arg1:DisplayObject):void;
function isAvailable():Boolean;
}
}//package com.google.analytics.debug
Section 43
//Info (com.google.analytics.debug.Info)
package com.google.analytics.debug {
import flash.events.*;
import flash.utils.*;
public class Info extends Label {
private var _timer:Timer;
public function Info(_arg1:String="", _arg2:uint=3000){
super(_arg1, "uiInfo", Style.infoColor, Align.top, true);
if (_arg2 > 0){
_timer = new Timer(_arg2, 1);
_timer.start();
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true);
};
}
public function onComplete(_arg1:TimerEvent):void{
close();
}
override public function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "hide":
close();
break;
};
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 44
//Label (com.google.analytics.debug.Label)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class Label extends UISprite {
private var _color:uint;
private var _background:Shape;
private var _textField:TextField;
public var stickToEdge:Boolean;
private var _text:String;
protected var selectable:Boolean;
private var _tag:String;
public static var count:uint = 0;
public function Label(_arg1:String="", _arg2:String="uiLabel", _arg3:uint=0, _arg4:Align=null, _arg5:Boolean=false){
this.name = ("Label" + count++);
selectable = false;
_background = new Shape();
_textField = new TextField();
_text = _arg1;
_tag = _arg2;
if (_arg4 == null){
_arg4 = Align.none;
};
this.alignement = _arg4;
this.stickToEdge = _arg5;
if (_arg3 == 0){
_arg3 = Style.backgroundColor;
};
_color = _arg3;
_textField.addEventListener(TextEvent.LINK, onLink);
}
public function get tag():String{
return (_tag);
}
private function _draw():void{
var _local1:Graphics = _background.graphics;
_local1.clear();
_local1.beginFill(_color);
var _local2:uint = _textField.width;
var _local3:uint = _textField.height;
if (forcedWidth > 0){
_local2 = forcedWidth;
};
Background.drawRounded(this, _local1, _local2, _local3);
_local1.endFill();
}
public function get text():String{
return (_textField.text);
}
public function appendText(_arg1:String, _arg2:String=""):void{
if (_arg1 == ""){
return;
};
if (_arg2 == ""){
_arg2 = tag;
};
_textField.htmlText = (_textField.htmlText + (((("<span class=\"" + _arg2) + "\">") + _arg1) + "</span>"));
_text = (_text + _arg1);
_draw();
resize();
}
public function set text(_arg1:String):void{
if (_arg1 == ""){
_arg1 = _text;
};
_textField.htmlText = (((("<span class=\"" + tag) + "\">") + _arg1) + "</span>");
_text = _arg1;
_draw();
resize();
}
override protected function layout():void{
_textField.type = TextFieldType.DYNAMIC;
_textField.autoSize = TextFieldAutoSize.LEFT;
_textField.background = false;
_textField.selectable = selectable;
_textField.multiline = true;
_textField.styleSheet = Style.sheet;
this.text = _text;
addChild(_background);
addChild(_textField);
}
public function set tag(_arg1:String):void{
_tag = _arg1;
text = "";
}
public function onLink(_arg1:TextEvent):void{
}
override protected function dispose():void{
_textField.removeEventListener(TextEvent.LINK, onLink);
super.dispose();
}
}
}//package com.google.analytics.debug
Section 45
//Layout (com.google.analytics.debug.Layout)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.net.*;
import flash.events.*;
import flash.display.*;
import com.google.analytics.*;
public class Layout implements ILayout {
private var _display:DisplayObject;
private var _infoQueue:Array;
private var _maxCharPerLine:int;// = 85
private var _hasInfo:Boolean;
private var _warningQueue:Array;
private var _hasDebug:Boolean;
private var _hasWarning:Boolean;
private var _mainPanel:Panel;
private var _GRAlertQueue:Array;
private var _debug:DebugConfiguration;
public var visualDebug:Debug;
private var _hasGRAlert:Boolean;
public function Layout(_arg1:DebugConfiguration, _arg2:DisplayObject){
_display = _arg2;
_debug = _arg1;
_hasWarning = false;
_hasInfo = false;
_hasDebug = false;
_hasGRAlert = false;
_warningQueue = [];
_infoQueue = [];
_GRAlertQueue = [];
}
private function onKey(_arg1:KeyboardEvent=null):void{
switch (_arg1.keyCode){
case _debug.showHideKey:
_mainPanel.visible = !(_mainPanel.visible);
break;
case _debug.destroyKey:
destroy();
break;
};
}
public function createWarning(_arg1:String):void{
if (((_hasWarning) || (!(isAvailable())))){
_warningQueue.push(_arg1);
return;
};
_arg1 = _filterMaxChars(_arg1);
_hasWarning = true;
var _local2:Warning = new Warning(_arg1, _debug.warningTimeout);
addToPanel("analytics", _local2);
_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearWarning, false, 0, true);
if (_hasDebug){
visualDebug.writeBold(_arg1);
};
}
public function bringToFront(_arg1:DisplayObject):void{
_display.stage.setChildIndex(_arg1, (_display.stage.numChildren - 1));
}
public function createFailureAlert(_arg1:String):void{
var _local2:AlertAction;
if (_debug.verbose){
_arg1 = _filterMaxChars(_arg1);
_local2 = new AlertAction("Close", "close", "close");
} else {
_local2 = new AlertAction("X", "close", "close");
};
var _local3:Alert = new FailureAlert(_debug, _arg1, [_local2]);
addToPanel("analytics", _local3);
if (_hasDebug){
if (_debug.verbose){
_arg1 = _arg1.split("\n").join("");
_arg1 = _filterMaxChars(_arg1, 66);
};
visualDebug.writeBold(_arg1);
};
}
public function init():void{
var _local1 = 10;
var _local2:uint = (_display.stage.stageWidth - (_local1 * 2));
var _local3:uint = (_display.stage.stageHeight - (_local1 * 2));
var _local4:Panel = new Panel("analytics", _local2, _local3);
_local4.alignement = Align.top;
_local4.stickToEdge = false;
_local4.title = ("Google Analytics v" + GATracker.version);
_mainPanel = _local4;
addToStage(_local4);
bringToFront(_local4);
if (_debug.minimizedOnStart){
_mainPanel.onToggle();
};
createVisualDebug();
_display.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey, false, 0, true);
}
public function addToPanel(_arg1:String, _arg2:DisplayObject):void{
var _local4:Panel;
var _local3:DisplayObject = _display.stage.getChildByName(_arg1);
if (_local3){
_local4 = (_local3 as Panel);
_local4.addData(_arg2);
} else {
trace((("panel \"" + _arg1) + "\" not found"));
};
}
private function _clearInfo(_arg1:Event):void{
_hasInfo = false;
if (_infoQueue.length > 0){
createInfo(_infoQueue.shift());
};
}
private function _filterMaxChars(_arg1:String, _arg2:int=0):String{
var _local6:String;
var _local3 = "\n";
var _local4:Array = [];
var _local5:Array = _arg1.split(_local3);
if (_arg2 == 0){
_arg2 = _maxCharPerLine;
};
var _local7:int;
while (_local7 < _local5.length) {
_local6 = _local5[_local7];
while (_local6.length > _arg2) {
_local4.push(_local6.substr(0, _arg2));
_local6 = _local6.substring(_arg2);
};
_local4.push(_local6);
_local7++;
};
return (_local4.join(_local3));
}
private function _clearGRAlert(_arg1:Event):void{
_hasGRAlert = false;
if (_GRAlertQueue.length > 0){
createGIFRequestAlert.apply(this, _GRAlertQueue.shift());
};
}
public function createSuccessAlert(_arg1:String):void{
var _local2:AlertAction;
if (_debug.verbose){
_arg1 = _filterMaxChars(_arg1);
_local2 = new AlertAction("Close", "close", "close");
} else {
_local2 = new AlertAction("X", "close", "close");
};
var _local3:Alert = new SuccessAlert(_debug, _arg1, [_local2]);
addToPanel("analytics", _local3);
if (_hasDebug){
if (_debug.verbose){
_arg1 = _arg1.split("\n").join("");
_arg1 = _filterMaxChars(_arg1, 66);
};
visualDebug.writeBold(_arg1);
};
}
public function isAvailable():Boolean{
return (!((_display.stage == null)));
}
public function createAlert(_arg1:String):void{
_arg1 = _filterMaxChars(_arg1);
var _local2:Alert = new Alert(_arg1, [new AlertAction("Close", "close", "close")]);
addToPanel("analytics", _local2);
if (_hasDebug){
visualDebug.writeBold(_arg1);
};
}
public function createInfo(_arg1:String):void{
if (((_hasInfo) || (!(isAvailable())))){
_infoQueue.push(_arg1);
return;
};
_arg1 = _filterMaxChars(_arg1);
_hasInfo = true;
var _local2:Info = new Info(_arg1, _debug.infoTimeout);
addToPanel("analytics", _local2);
_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearInfo, false, 0, true);
if (_hasDebug){
visualDebug.write(_arg1);
};
}
public function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{
var message = _arg1;
var request = _arg2;
var ref = _arg3;
if (_hasGRAlert){
_GRAlertQueue.push([message, request, ref]);
return;
};
_hasGRAlert = true;
var f:Function = function ():void{
ref.sendRequest(request);
};
message = _filterMaxChars(message);
var gra:GIFRequestAlert = new GIFRequestAlert(message, [new AlertAction("OK", "ok", f), new AlertAction("Cancel", "cancel", "close")]);
addToPanel("analytics", gra);
gra.addEventListener(Event.REMOVED_FROM_STAGE, _clearGRAlert, false, 0, true);
if (_hasDebug){
if (_debug.verbose){
message = message.split("\n").join("");
message = _filterMaxChars(message, 66);
};
visualDebug.write(message);
};
}
public function createVisualDebug():void{
if (!visualDebug){
visualDebug = new Debug();
visualDebug.alignement = Align.bottom;
visualDebug.stickToEdge = true;
addToPanel("analytics", visualDebug);
_hasDebug = true;
};
}
public function addToStage(_arg1:DisplayObject):void{
_display.stage.addChild(_arg1);
}
private function _clearWarning(_arg1:Event):void{
_hasWarning = false;
if (_warningQueue.length > 0){
createWarning(_warningQueue.shift());
};
}
public function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void{
var _local4:Panel = new Panel(_arg1, _arg2, _arg3);
_local4.alignement = Align.center;
_local4.stickToEdge = false;
addToStage(_local4);
bringToFront(_local4);
}
public function destroy():void{
_mainPanel.close();
_debug.layout = null;
}
}
}//package com.google.analytics.debug
Section 46
//Margin (com.google.analytics.debug.Margin)
package com.google.analytics.debug {
public class Margin {
public var bottom:int;
public var top:int;
public var right:int;
public var left:int;
public function Margin(_arg1:int=0, _arg2:int=0, _arg3:int=0, _arg4:int=0){
this.top = _arg1;
this.bottom = _arg2;
this.left = _arg3;
this.right = _arg4;
}
}
}//package com.google.analytics.debug
Section 47
//Panel (com.google.analytics.debug.Panel)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
public class Panel extends UISprite {
private var _savedH:uint;
private var _data:UISprite;
private var _mask:Sprite;
private var _background:Shape;
private var _savedW:uint;
private var _stickToEdge:Boolean;
private var _border:Shape;
private var _borderColor:uint;
protected var baseAlpha:Number;
private var _backgroundColor:uint;
private var _title:Label;
private var _colapsed:Boolean;
private var _name:String;
public function Panel(_arg1:String, _arg2:uint, _arg3:uint, _arg4:uint=0, _arg5:uint=0, _arg6:Number=0.3, _arg7:Align=null, _arg8:Boolean=false){
_name = _arg1;
this.name = _arg1;
this.mouseEnabled = false;
_colapsed = false;
forcedWidth = _arg2;
forcedHeight = _arg3;
this.baseAlpha = _arg6;
_background = new Shape();
_data = new UISprite();
_data.forcedWidth = _arg2;
_data.forcedHeight = _arg3;
_data.mouseEnabled = false;
_title = new Label(_arg1, "uiLabel", 0xFFFFFF, Align.topLeft, _arg8);
_title.buttonMode = true;
_title.margin.top = 0.6;
_title.margin.left = 0.6;
_title.addEventListener(MouseEvent.CLICK, onToggle);
_title.mouseChildren = false;
_border = new Shape();
_mask = new Sprite();
_mask.useHandCursor = false;
_mask.mouseEnabled = false;
_mask.mouseChildren = false;
if (_arg7 == null){
_arg7 = Align.none;
};
this.alignement = _arg7;
this.stickToEdge = _arg8;
if (_arg4 == 0){
_arg4 = Style.backgroundColor;
};
_backgroundColor = _arg4;
if (_arg5 == 0){
_arg5 = Style.borderColor;
};
_borderColor = _arg5;
}
public function get stickToEdge():Boolean{
return (_stickToEdge);
}
public function onToggle(_arg1:MouseEvent=null):void{
if (_colapsed){
_data.visible = true;
} else {
_data.visible = false;
};
_colapsed = !(_colapsed);
_update();
resize();
}
public function set stickToEdge(_arg1:Boolean):void{
_stickToEdge = _arg1;
_title.stickToEdge = _arg1;
}
override protected function dispose():void{
_title.removeEventListener(MouseEvent.CLICK, onToggle);
super.dispose();
}
private function _draw():void{
var _local1:uint;
var _local2:uint;
if (((_savedW) && (_savedH))){
forcedWidth = _savedW;
forcedHeight = _savedH;
};
if (!_colapsed){
_local1 = forcedWidth;
_local2 = forcedHeight;
} else {
_local1 = _title.width;
_local2 = _title.height;
_savedW = forcedWidth;
_savedH = forcedHeight;
forcedWidth = _local1;
forcedHeight = _local2;
};
var _local3:Graphics = _background.graphics;
_local3.clear();
_local3.beginFill(_backgroundColor);
Background.drawRounded(this, _local3, _local1, _local2);
_local3.endFill();
var _local4:Graphics = _data.graphics;
_local4.clear();
_local4.beginFill(_backgroundColor, 0);
Background.drawRounded(this, _local4, _local1, _local2);
_local4.endFill();
var _local5:Graphics = _border.graphics;
_local5.clear();
_local5.lineStyle(0.1, _borderColor);
Background.drawRounded(this, _local5, _local1, _local2);
_local5.endFill();
var _local6:Graphics = _mask.graphics;
_local6.clear();
_local6.beginFill(_backgroundColor);
Background.drawRounded(this, _local6, (_local1 + 1), (_local2 + 1));
_local6.endFill();
}
public function get title():String{
return (_title.text);
}
private function _update():void{
_draw();
if (baseAlpha < 1){
_background.alpha = baseAlpha;
_border.alpha = baseAlpha;
};
}
public function addData(_arg1:DisplayObject):void{
_data.addChild(_arg1);
}
override protected function layout():void{
_update();
addChild(_background);
addChild(_data);
addChild(_title);
addChild(_border);
addChild(_mask);
mask = _mask;
}
public function set title(_arg1:String):void{
_title.text = _arg1;
}
public function close():void{
dispose();
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 48
//Style (com.google.analytics.debug.Style)
package com.google.analytics.debug {
public const Style:_Style = new _Style();
}//package com.google.analytics.debug
Section 49
//SuccessAlert (com.google.analytics.debug.SuccessAlert)
package com.google.analytics.debug {
public class SuccessAlert extends Alert {
public function SuccessAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){
var _local4:Align;
var _local5:Boolean;
var _local6:Boolean;
_local4 = Align.bottomLeft;
_local5 = true;
_local6 = false;
if (_arg1.verbose){
_arg2 = ((("<u><span class=\"uiAlertTitle\">Success</span>" + spaces(18)) + "</u>\n\n") + _arg2);
_local4 = Align.center;
_local5 = false;
_local6 = true;
};
super(_arg2, _arg3, "uiSuccess", Style.successColor, _local4, _local5, _local6);
}
}
}//package com.google.analytics.debug
Section 50
//UISprite (com.google.analytics.debug.UISprite)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
public class UISprite extends Sprite {
private var _forcedHeight:uint;
protected var listenResize:Boolean;
public var alignement:Align;
private var _forcedWidth:uint;
public var margin:Margin;
protected var alignTarget:DisplayObject;
public function UISprite(_arg1:DisplayObject=null){
listenResize = false;
alignement = Align.none;
this.alignTarget = _arg1;
margin = new Margin();
addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
addEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage);
}
protected function dispose():void{
var _local1:DisplayObject;
var _local2:int;
_local2 = 0;
while (_local2 < numChildren) {
_local1 = getChildAt(_local2);
if (_local1){
removeChild(_local1);
};
_local2++;
};
}
protected function layout():void{
}
public function get forcedHeight():uint{
if (_forcedHeight){
return (_forcedHeight);
};
return (height);
}
public function alignTo(_arg1:Align, _arg2:DisplayObject=null):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:UISprite;
if (_arg2 == null){
if ((parent is Stage)){
_arg2 = this.stage;
} else {
_arg2 = parent;
};
};
if (_arg2 == this.stage){
if (this.stage == null){
return;
};
_local3 = this.stage.stageHeight;
_local4 = this.stage.stageWidth;
_local5 = 0;
_local6 = 0;
} else {
_local7 = (_arg2 as UISprite);
if (_local7.forcedHeight){
_local3 = _local7.forcedHeight;
} else {
_local3 = _local7.height;
};
if (_local7.forcedWidth){
_local4 = _local7.forcedWidth;
} else {
_local4 = _local7.width;
};
_local5 = 0;
_local6 = 0;
};
switch (_arg1){
case Align.top:
x = ((_local4 / 2) - (forcedWidth / 2));
y = (_local6 + margin.top);
break;
case Align.bottom:
x = ((_local4 / 2) - (forcedWidth / 2));
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
case Align.left:
x = (_local5 + margin.left);
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.right:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.center:
x = ((_local4 / 2) - (forcedWidth / 2));
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.topLeft:
x = (_local5 + margin.left);
y = (_local6 + margin.top);
break;
case Align.topRight:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = (_local6 + margin.top);
break;
case Align.bottomLeft:
x = (_local5 + margin.left);
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
case Align.bottomRight:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
};
if (((!(listenResize)) && (!((_arg1 == Align.none))))){
_arg2.addEventListener(Event.RESIZE, onResize, false, 0, true);
listenResize = true;
};
this.alignement = _arg1;
this.alignTarget = _arg2;
}
public function get forcedWidth():uint{
if (_forcedWidth){
return (_forcedWidth);
};
return (width);
}
protected function onResize(_arg1:Event):void{
resize();
}
private function _onRemovedFromStage(_arg1:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
removeEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage);
dispose();
}
public function resize():void{
if (alignement != Align.none){
alignTo(alignement, alignTarget);
};
}
private function _onAddedToStage(_arg1:Event):void{
layout();
resize();
}
public function set forcedHeight(_arg1:uint):void{
_forcedHeight = _arg1;
}
public function set forcedWidth(_arg1:uint):void{
_forcedWidth = _arg1;
}
}
}//package com.google.analytics.debug
Section 51
//Warning (com.google.analytics.debug.Warning)
package com.google.analytics.debug {
import flash.events.*;
import flash.utils.*;
public class Warning extends Label {
private var _timer:Timer;
public function Warning(_arg1:String="", _arg2:uint=3000){
super(_arg1, "uiWarning", Style.warningColor, Align.top, false);
margin.top = 32;
if (_arg2 > 0){
_timer = new Timer(_arg2, 1);
_timer.start();
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true);
};
}
public function onComplete(_arg1:TimerEvent):void{
close();
}
override public function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "hide":
close();
break;
};
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 52
//VisualDebugMode (com.google.analytics.debug.VisualDebugMode)
package com.google.analytics.debug {
public class VisualDebugMode {
private var _value:int;
private var _name:String;
public static const advanced:VisualDebugMode = new VisualDebugMode(1, "advanced");
;
public static const geek:VisualDebugMode = new VisualDebugMode(2, "geek");
;
public static const basic:VisualDebugMode = new VisualDebugMode(0, "basic");
;
public function VisualDebugMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.debug
Section 53
//AnalyticsEvent (com.google.analytics.events.AnalyticsEvent)
package com.google.analytics.events {
import flash.events.*;
import com.google.analytics.*;
public class AnalyticsEvent extends Event {
public var tracker:AnalyticsTracker;
public static const READY:String = "ready";
public function AnalyticsEvent(_arg1:String, _arg2:AnalyticsTracker, _arg3:Boolean=false, _arg4:Boolean=false){
super(_arg1, _arg3, _arg4);
this.tracker = _arg2;
}
override public function clone():Event{
return (new AnalyticsEvent(type, tracker, bubbles, cancelable));
}
}
}//package com.google.analytics.events
Section 54
//AdSenseGlobals (com.google.analytics.external.AdSenseGlobals)
package com.google.analytics.external {
import com.google.analytics.debug.*;
public class AdSenseGlobals extends JavascriptProxy {
private var _gaGlobalVerified:Boolean;// = false
public static var gaGlobal_js:XML = <script>
<![CDATA[
function()
{
try
{
gaGlobal
}
catch(e)
{
gaGlobal = {} ;
}
}
]]>
</script>
;
public function AdSenseGlobals(_arg1:DebugConfiguration){
_gaGlobalVerified = false;
super(_arg1);
}
public function set vid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.vid", _arg1);
}
public function get hid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.hid"));
}
public function get dh():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.dh"));
}
public function get gaGlobal():Object{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal"));
}
public function set hid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.hid", _arg1);
}
public function get sid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.sid"));
}
private function _verify():void{
if (!_gaGlobalVerified){
executeBlock(gaGlobal_js);
_gaGlobalVerified = true;
};
}
public function get vid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.vid"));
}
public function set sid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.sid", _arg1);
}
}
}//package com.google.analytics.external
Section 55
//HTMLDOM (com.google.analytics.external.HTMLDOM)
package com.google.analytics.external {
import com.google.analytics.debug.*;
public class HTMLDOM extends JavascriptProxy {
private var _referrer:String;
private var _protocol:String;
private var _host:String;
private var _location:String;
private var _pathname:String;
private var _title:String;
private var _characterSet:String;
private var _search:String;
private var _language:String;
private var _colorDepth:String;
public static var cache_properties_js:XML = <script>
<![CDATA[
function()
{
var obj = {};
obj.host = document.location.host;
obj.language = navigator.language ? navigator.language : navigator.browserLanguage;
obj.characterSet = document.characterSet ? document.characterSet : document.charset;
obj.colorDepth = window.screen.colorDepth;
obj.location = document.location.toString();
obj.pathname = document.location.pathname;
obj.protocol = document.location.protocol;
obj.search = document.location.search;
obj.referrer = document.referrer;
obj.title = document.title;
return obj;
}
]]>
</script>
;
public function HTMLDOM(_arg1:DebugConfiguration){
super(_arg1);
}
public function get search():String{
if (_search){
return (_search);
};
if (!isAvailable()){
return (null);
};
_search = getProperty("document.location.search");
return (_search);
}
public function get location():String{
if (_location){
return (_location);
};
if (!isAvailable()){
return (null);
};
_location = getPropertyString("document.location");
return (_location);
}
public function get pathname():String{
if (_pathname){
return (_pathname);
};
if (!isAvailable()){
return (null);
};
_pathname = getProperty("document.location.pathname");
return (_pathname);
}
public function get referrer():String{
if (_referrer){
return (_referrer);
};
if (!isAvailable()){
return (null);
};
_referrer = getProperty("document.referrer");
return (_referrer);
}
public function get protocol():String{
if (_protocol){
return (_protocol);
};
if (!isAvailable()){
return (null);
};
_protocol = getProperty("document.location.protocol");
return (_protocol);
}
public function cacheProperties():void{
var _local1:Object;
if (!isAvailable()){
return;
};
_local1 = call(cache_properties_js);
if (_local1){
_host = _local1.host;
_language = _local1.language;
_characterSet = _local1.characterSet;
_colorDepth = _local1.colorDepth;
_location = _local1.location;
_pathname = _local1.pathname;
_protocol = _local1.protocol;
_search = _local1.search;
_referrer = _local1.referrer;
_title = _local1.title;
};
}
public function get colorDepth():String{
if (_colorDepth){
return (_colorDepth);
};
if (!isAvailable()){
return (null);
};
_colorDepth = getProperty("window.screen.colorDepth");
return (_colorDepth);
}
public function get title():String{
if (_title){
return (_title);
};
if (!isAvailable()){
return (null);
};
_title = getProperty("document.title");
return (_title);
}
public function get host():String{
if (_host){
return (_host);
};
if (!isAvailable()){
return (null);
};
_host = getProperty("document.location.host");
return (_host);
}
public function get characterSet():String{
var _local1:String;
if (_characterSet){
return (_characterSet);
};
if (!isAvailable()){
return (null);
};
_local1 = getProperty("document.characterSet");
if (_local1 == null){
_local1 = getProperty("document.charset");
};
_characterSet = _local1;
return (_characterSet);
}
public function get language():String{
var _local1:String;
if (_language){
return (_language);
};
if (!isAvailable()){
return (null);
};
_local1 = getProperty("navigator.language");
if (_local1 == null){
_local1 = getProperty("navigator.browserLanguage");
};
_language = _local1;
return (_language);
}
}
}//package com.google.analytics.external
Section 56
//JavascriptProxy (com.google.analytics.external.JavascriptProxy)
package com.google.analytics.external {
import com.google.analytics.debug.*;
import flash.external.*;
import flash.system.*;
public class JavascriptProxy {
private var _notAvailableWarning:Boolean;// = true
private var _debug:DebugConfiguration;
public static var setProperty_js:XML = <script>
<![CDATA[
function( path , value )
{
var paths;
var prop;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
prop = paths.pop() ;
}
else
{
paths = [];
prop = path;
}
var target = window ;
var len = paths.length ;
for( var i = 0 ; i < len ; i++ )
{
target = target[ paths[i] ] ;
}
target[ prop ] = value ;
}
]]>
</script>
;
public static var hasProperty_js:XML = <script>
<![CDATA[
function( path )
{
var paths;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
}
else
{
paths = [path];
}
var target = window ;
var len = paths.length ;
for( var i = 0 ; i < len ; i++ )
{
target = target[ paths[i] ] ;
}
if( target )
{
return true;
}
else
{
return false;
}
}
]]>
</script>
;
public static var setPropertyRef_js:XML = <script>
<![CDATA[
function( path , target )
{
var paths;
var prop;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
prop = paths.pop() ;
}
else
{
paths = [];
prop = path;
}
alert( "paths:"+paths.length+", prop:"+prop );
var targets;
var name;
if( target.indexOf(".") > 0 )
{
targets = target.split(".");
name = targets.pop();
}
else
{
targets = [];
name = target;
}
alert( "targets:"+targets.length+", name:"+name );
var root = window;
var len = paths.length;
for( var i = 0 ; i < len ; i++ )
{
root = root[ paths[i] ] ;
}
var ref = window;
var depth = targets.length;
for( var j = 0 ; j < depth ; j++ )
{
ref = ref[ targets[j] ] ;
}
root[ prop ] = ref[name] ;
}
]]>
</script>
;
public function JavascriptProxy(_arg1:DebugConfiguration){
_notAvailableWarning = true;
super();
_debug = _arg1;
}
public function getProperty(_arg1:String){
return (call((_arg1 + ".valueOf")));
}
public function hasProperty(_arg1:String):Boolean{
return (call(hasProperty_js, _arg1));
}
public function setProperty(_arg1:String, _arg2):void{
call(setProperty_js, _arg1, _arg2);
}
public function executeBlock(_arg1:String):void{
var data = _arg1;
if (isAvailable()){
try {
ExternalInterface.call(data);
} catch(e:SecurityError) {
if (_debug.javascript){
_debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
};
} catch(e:Error) {
if (_debug.javascript){
_debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message));
};
};
};
}
public function getPropertyString(_arg1:String):String{
return (call((_arg1 + ".toString")));
}
public function setPropertyByReference(_arg1:String, _arg2:String):void{
call(setPropertyRef_js, _arg1, _arg2);
}
public function call(_arg1:String, ... _args){
var output:String;
var functionName = _arg1;
var args = _args;
if (isAvailable()){
try {
if (((_debug.javascript) && (_debug.verbose))){
output = "";
output = ("Flash->JS: " + functionName);
output = (output + "( ");
if (args.length > 0){
output = (output + args.join(","));
};
output = (output + " )");
_debug.info(output);
};
args.unshift(functionName);
return (ExternalInterface.call.apply(ExternalInterface, args));
} catch(e:SecurityError) {
if (_debug.javascript){
_debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
};
} catch(e:Error) {
if (_debug.javascript){
_debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message));
};
};
};
return (null);
}
public function isAvailable():Boolean{
var _local1:Boolean;
_local1 = ExternalInterface.available;
if (((_local1) && ((Capabilities.playerType == "External")))){
_local1 = false;
};
if (((((!(_local1)) && (_debug.javascript))) && (_notAvailableWarning))){
_debug.warning("ExternalInterface is not available.");
_notAvailableWarning = false;
};
return (_local1);
}
}
}//package com.google.analytics.external
Section 57
//Environment (com.google.analytics.utils.Environment)
package com.google.analytics.utils {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.external.*;
import flash.system.*;
public class Environment {
private var _dom:HTMLDOM;
private var _appName:String;
private var _debug:DebugConfiguration;
private var _appVersion:Version;
private var _url:String;
private var _protocol:Protocols;
private var _userAgent:UserAgent;
public function Environment(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:DebugConfiguration=null, _arg5:HTMLDOM=null){
var _local6:Version;
super();
if (_arg2 == ""){
if (isAIR()){
_arg2 = "AIR";
} else {
_arg2 = "Flash";
};
};
if (_arg3 == ""){
_local6 = flashVersion;
} else {
_local6 = Version.fromString(_arg3);
};
_url = _arg1;
_appName = _arg2;
_appVersion = _local6;
_debug = _arg4;
_dom = _arg5;
}
public function isAIR():Boolean{
return ((((playerType == "Desktop")) && ((Security.sandboxType.toString() == "application"))));
}
public function get playerType():String{
return (Capabilities.playerType);
}
public function get locationSearch():String{
var _local1:String;
_local1 = _dom.search;
if (_local1){
return (_local1);
};
return ("");
}
public function get protocol():Protocols{
if (!_protocol){
_findProtocol();
};
return (_protocol);
}
public function get flashVersion():Version{
var _local1:Version;
_local1 = Version.fromString(Capabilities.version.split(" ")[1], ",");
return (_local1);
}
public function get screenWidth():Number{
return (Capabilities.screenResolutionX);
}
public function get languageEncoding():String{
var _local1:String;
if (System.useCodePage){
_local1 = _dom.characterSet;
if (_local1){
return (_local1);
};
return ("-");
};
return ("UTF-8");
}
public function get appName():String{
return (_appName);
}
public function get screenColorDepth():String{
var _local1:String;
var _local2:String;
switch (Capabilities.screenColor){
case "bw":
_local1 = "1";
break;
case "gray":
_local1 = "2";
break;
case "color":
default:
_local1 = "24";
};
_local2 = _dom.colorDepth;
if (_local2){
_local1 = _local2;
};
return (_local1);
}
private function _findProtocol():void{
var _local1:Protocols;
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:String;
_local1 = Protocols.none;
if (_url != ""){
_local4 = _url.toLowerCase();
_local5 = _local4.substr(0, 5);
switch (_local5){
case "file:":
_local1 = Protocols.file;
break;
case "http:":
_local1 = Protocols.HTTP;
break;
case "https":
if (_local4.charAt(5) == ":"){
_local1 = Protocols.HTTPS;
};
break;
default:
_protocol = Protocols.none;
};
};
_local2 = _dom.protocol;
_local3 = (_local1.toString() + ":").toLowerCase();
if (((((_local2) && (!((_local2 == _local3))))) && (_debug))){
_debug.warning(((("Protocol mismatch: SWF=" + _local3) + ", DOM=") + _local2));
};
_protocol = _local1;
}
public function get locationSWFPath():String{
return (_url);
}
public function get platform():String{
var _local1:String;
_local1 = Capabilities.manufacturer;
return (_local1.split("Adobe ")[1]);
}
public function get operatingSystem():String{
return (Capabilities.os);
}
public function set appName(_arg1:String):void{
_appName = _arg1;
userAgent.applicationProduct = _arg1;
}
public function get userAgent():UserAgent{
if (!_userAgent){
_userAgent = new UserAgent(this, appName, appVersion.toString(4));
};
return (_userAgent);
}
ga_internal function set url(_arg1:String):void{
_url = _arg1;
}
public function get referrer():String{
var _local1:String;
_local1 = _dom.referrer;
if (_local1){
return (_local1);
};
if (protocol == Protocols.file){
return ("localhost");
};
return ("");
}
public function isInHTML():Boolean{
return ((Capabilities.playerType == "PlugIn"));
}
public function get language():String{
var _local1:String;
var _local2:String;
_local1 = _dom.language;
_local2 = Capabilities.language;
if (_local1){
if ((((_local1.length > _local2.length)) && ((_local1.substr(0, _local2.length) == _local2)))){
_local2 = _local1;
};
};
return (_local2);
}
public function get domainName():String{
var _local1:String;
var _local2:String;
var _local3:int;
if ((((protocol == Protocols.HTTP)) || ((protocol == Protocols.HTTPS)))){
_local1 = _url.toLowerCase();
if (protocol == Protocols.HTTP){
_local2 = _local1.split("http://").join("");
} else {
if (protocol == Protocols.HTTPS){
_local2 = _local1.split("https://").join("");
};
};
_local3 = _local2.indexOf("/");
if (_local3 > -1){
_local2 = _local2.substring(0, _local3);
};
return (_local2);
};
if (protocol == Protocols.file){
return ("localhost");
};
return ("");
}
public function set userAgent(_arg1:UserAgent):void{
_userAgent = _arg1;
}
public function set appVersion(_arg1:Version):void{
_appVersion = _arg1;
userAgent.applicationVersion = _arg1.toString(4);
}
public function get screenHeight():Number{
return (Capabilities.screenResolutionY);
}
public function get locationPath():String{
var _local1:String;
_local1 = _dom.pathname;
if (_local1){
return (_local1);
};
return ("");
}
public function get documentTitle():String{
var _local1:String;
_local1 = _dom.title;
if (_local1){
return (_local1);
};
return ("");
}
public function get appVersion():Version{
return (_appVersion);
}
}
}//package com.google.analytics.utils
Section 58
//Protocols (com.google.analytics.utils.Protocols)
package com.google.analytics.utils {
public class Protocols {
private var _value:int;
private var _name:String;
public static const none:Protocols = new Protocols(0, "none");
;
public static const HTTPS:Protocols = new Protocols(3, "HTTPS");
;
public static const file:Protocols = new Protocols(1, "file");
;
public static const HTTP:Protocols = new Protocols(2, "HTTP");
;
public function Protocols(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.utils
Section 59
//Timespan (com.google.analytics.utils.Timespan)
package com.google.analytics.utils {
public class Timespan {
public static var sixmonths:Number = 15768000;
public static var twoyears:Number = 63072000;
public static var thirtyminutes:Number = 1800;
}
}//package com.google.analytics.utils
Section 60
//URL (com.google.analytics.utils.URL)
package com.google.analytics.utils {
public class URL {
private var _url:String;
public function URL(_arg1:String=""){
_url = _arg1.toLowerCase();
}
public function get domain():String{
var _local1:Array;
if (((!((hostName == ""))) && ((hostName.indexOf(".") > -1)))){
_local1 = hostName.split(".");
switch (_local1.length){
case 2:
return (hostName);
case 3:
if (_local1[1] == "co"){
return (hostName);
};
_local1.shift();
return (_local1.join("."));
case 4:
_local1.shift();
return (_local1.join("."));
};
};
return ("");
}
public function get path():String{
var _local1:String = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf(hostName) == 0){
_local1 = _local1.substr(hostName.length);
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[0];
};
if (_local1.charAt(0) != "/"){
_local1 = ("/" + _local1);
};
return (_local1);
}
public function get protocol():Protocols{
var _local1:String = _url.split("://")[0];
switch (_local1){
case "file":
return (Protocols.file);
case "http":
return (Protocols.HTTP);
case "https":
return (Protocols.HTTPS);
default:
return (Protocols.none);
};
}
public function get hostName():String{
var _local1:String = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf("/") > -1){
_local1 = _local1.split("/")[0];
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[0];
};
if ((((protocol == Protocols.file)) || ((protocol == Protocols.none)))){
return ("");
};
return (_local1);
}
public function get subDomain():String{
if (((!((domain == ""))) && (!((domain == hostName))))){
return (hostName.split(("." + domain)).join(""));
};
return ("");
}
public function get search():String{
var _local1:String = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf(hostName) == 0){
_local1 = _local1.substr(hostName.length);
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[1];
} else {
_local1 = "";
};
return (_local1);
}
}
}//package com.google.analytics.utils
Section 61
//UserAgent (com.google.analytics.utils.UserAgent)
package com.google.analytics.utils {
import com.google.analytics.core.*;
import flash.system.*;
public class UserAgent {
private var _version:Version;
private var _localInfo:Environment;
private var _applicationProduct:String;
public static var minimal:Boolean = false;
public function UserAgent(_arg1:Environment, _arg2:String="", _arg3:String=""){
_localInfo = _arg1;
applicationProduct = _arg2;
_version = Version.fromString(_arg3);
}
public function get tamarinProductToken():String{
if (UserAgent.minimal){
return ("");
};
if (System.vmVersion){
return (("Tamarin/" + Utils.trim(System.vmVersion, true)));
};
return ("");
}
public function set applicationProduct(_arg1:String):void{
_applicationProduct = _arg1;
}
public function get applicationVersion():String{
return (_version.toString(2));
}
public function get applicationProductToken():String{
var _local1:String;
_local1 = applicationProduct;
if (applicationVersion != ""){
_local1 = (_local1 + ("/" + applicationVersion));
};
return (_local1);
}
public function get vendorProductToken():String{
var _local1:String;
_local1 = "";
if (_localInfo.isAIR()){
_local1 = (_local1 + "AIR");
} else {
_local1 = (_local1 + "FlashPlayer");
};
_local1 = (_local1 + "/");
_local1 = (_local1 + _version.toString(3));
return (_local1);
}
public function toString():String{
var _local1:String;
_local1 = "";
_local1 = (_local1 + applicationProductToken);
if (applicationComment != ""){
_local1 = (_local1 + (" " + applicationComment));
};
if (tamarinProductToken != ""){
_local1 = (_local1 + (" " + tamarinProductToken));
};
if (vendorProductToken != ""){
_local1 = (_local1 + (" " + vendorProductToken));
};
return (_local1);
}
public function get applicationComment():String{
var _local1:Array;
_local1 = [];
_local1.push(_localInfo.platform);
_local1.push(_localInfo.playerType);
if (!UserAgent.minimal){
_local1.push(_localInfo.operatingSystem);
_local1.push(_localInfo.language);
};
if (Capabilities.isDebugger){
_local1.push("DEBUG");
};
if (_local1.length > 0){
return ((("(" + _local1.join("; ")) + ")"));
};
return ("");
}
public function set applicationVersion(_arg1:String):void{
_version = Version.fromString(_arg1);
}
public function get applicationProduct():String{
return (_applicationProduct);
}
}
}//package com.google.analytics.utils
Section 62
//Variables (com.google.analytics.utils.Variables)
package com.google.analytics.utils {
import flash.net.*;
public dynamic class Variables {
public var post:Array;
public var URIencode:Boolean;
public var pre:Array;
public var sort:Boolean;// = true
public function Variables(_arg1:String=null, _arg2:Array=null, _arg3:Array=null){
pre = [];
post = [];
super();
if (_arg1){
decode(_arg1);
};
if (_arg2){
this.pre = _arg2;
};
if (_arg3){
this.post = _arg3;
};
}
private function _join(_arg1:Variables):void{
var _local2:String;
if (!_arg1){
return;
};
for (_local2 in _arg1) {
this[_local2] = _arg1[_local2];
};
}
public function join(... _args):void{
var _local2:int = _args.length;
var _local3:int;
while (_local3 < _local2) {
if (!(_args[_local3] is Variables)){
} else {
_join(_args[_local3]);
};
_local3++;
};
}
public function toString():String{
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:String;
var _local8:String;
var _local1:Array = [];
for (_local3 in this) {
_local2 = this[_local3];
if (URIencode){
_local2 = encodeURI(_local2);
};
_local1.push(((_local3 + "=") + _local2));
};
if (sort){
_local1.sort();
};
if (pre.length > 0){
pre.reverse();
_local5 = 0;
while (_local5 < pre.length) {
_local7 = pre[_local5];
_local6 = 0;
while (_local6 < _local1.length) {
_local4 = _local1[_local6];
if (_local4.indexOf(_local7) == 0){
_local1.unshift(_local1.splice(_local6, 1)[0]);
};
_local6++;
};
_local5++;
};
pre.reverse();
};
if (post.length > 0){
_local5 = 0;
while (_local5 < post.length) {
_local8 = post[_local5];
_local6 = 0;
while (_local6 < _local1.length) {
_local4 = _local1[_local6];
if (_local4.indexOf(_local8) == 0){
_local1.push(_local1.splice(_local6, 1)[0]);
};
_local6++;
};
_local5++;
};
};
return (_local1.join("&"));
}
public function decode(_arg1:String):void{
var _local2:Array;
var _local3:String;
var _local4:String;
var _local5:String;
var _local6:Array;
if (_arg1 == ""){
return;
};
if (_arg1.indexOf("&") > -1){
_local2 = _arg1.split("&");
} else {
_local2 = [_arg1];
};
var _local7:int;
while (_local7 < _local2.length) {
_local3 = _local2[_local7];
if (_local3.indexOf("=") > -1){
_local6 = _local3.split("=");
_local4 = _local6[0];
_local5 = decodeURI(_local6[1]);
this[_local4] = _local5;
};
_local7++;
};
}
public function toURLVariables():URLVariables{
var _local2:String;
var _local1:URLVariables = new URLVariables();
for (_local2 in this) {
_local1[_local2] = this[_local2];
};
return (_local1);
}
}
}//package com.google.analytics.utils
Section 63
//Version (com.google.analytics.utils.Version)
package com.google.analytics.utils {
public class Version {
private var _maxBuild:uint;// = 0xFF
private var _maxMinor:uint;// = 15
private var _maxMajor:uint;// = 15
private var _revision:uint;
private var _separator:String;// = "."
private var _maxRevision:uint;// = 0xFFFF
private var _build:uint;
private var _minor:uint;
private var _major:uint;
public function Version(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0){
var _local5:Version;
_maxMajor = 15;
_maxMinor = 15;
_maxBuild = 0xFF;
_maxRevision = 0xFFFF;
_separator = ".";
super();
if ((((((((_arg1 > _maxMajor)) && ((_arg2 == 0)))) && ((_arg3 == 0)))) && ((_arg4 == 0)))){
_local5 = Version.fromNumber(_arg1);
_arg1 = _local5.major;
_arg2 = _local5.minor;
_arg3 = _local5.build;
_arg4 = _local5.revision;
};
this.major = _arg1;
this.minor = _arg2;
this.build = _arg3;
this.revision = _arg4;
}
public function toString(_arg1:int=0):String{
var _local2:Array;
if ((((_arg1 <= 0)) || ((_arg1 > 4)))){
_arg1 = getFields();
};
switch (_arg1){
case 1:
_local2 = [major];
break;
case 2:
_local2 = [major, minor];
break;
case 3:
_local2 = [major, minor, build];
break;
case 4:
default:
_local2 = [major, minor, build, revision];
};
return (_local2.join(_separator));
}
public function get revision():uint{
return (_revision);
}
public function set build(_arg1:uint):void{
_build = Math.min(_arg1, _maxBuild);
}
public function set minor(_arg1:uint):void{
_minor = Math.min(_arg1, _maxMinor);
}
public function get build():uint{
return (_build);
}
public function set major(_arg1:uint):void{
_major = Math.min(_arg1, _maxMajor);
}
public function get minor():uint{
return (_minor);
}
public function valueOf():uint{
return (((((major << 28) | (minor << 24)) | (build << 16)) | revision));
}
public function get major():uint{
return (_major);
}
public function set revision(_arg1:uint):void{
_revision = Math.min(_arg1, _maxRevision);
}
private function getFields():int{
var _local1:int;
_local1 = 4;
if (revision == 0){
_local1--;
};
if ((((_local1 == 3)) && ((build == 0)))){
_local1--;
};
if ((((_local1 == 2)) && ((minor == 0)))){
_local1--;
};
return (_local1);
}
public function equals(_arg1):Boolean{
if (!(_arg1 is Version)){
return (false);
};
if ((((((((_arg1.major == major)) && ((_arg1.minor == minor)))) && ((_arg1.build == build)))) && ((_arg1.revision == revision)))){
return (true);
};
return (false);
}
public static function fromString(_arg1:String="", _arg2:String="."):Version{
var _local3:Version;
var _local4:Array;
_local3 = new (Version);
if ((((_arg1 == "")) || ((_arg1 == null)))){
return (_local3);
};
if (_arg1.indexOf(_arg2) > -1){
_local4 = _arg1.split(_arg2);
_local3.major = parseInt(_local4[0]);
_local3.minor = parseInt(_local4[1]);
_local3.build = parseInt(_local4[2]);
_local3.revision = parseInt(_local4[3]);
} else {
_local3.major = parseInt(_arg1);
};
return (_local3);
}
public static function fromNumber(_arg1:Number=0):Version{
var _local2:Version;
_local2 = new (Version);
if (((((((((((isNaN(_arg1)) || ((_arg1 == 0)))) || ((_arg1 < 0)))) || ((_arg1 == Number.MAX_VALUE)))) || ((_arg1 == Number.POSITIVE_INFINITY)))) || ((_arg1 == Number.NEGATIVE_INFINITY)))){
return (_local2);
};
_local2.major = (_arg1 >>> 28);
_local2.minor = ((_arg1 & 251658240) >>> 24);
_local2.build = ((_arg1 & 0xFF0000) >>> 16);
_local2.revision = (_arg1 & 0xFFFF);
return (_local2);
}
}
}//package com.google.analytics.utils
Section 64
//Bridge (com.google.analytics.v4.Bridge)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.external.*;
public class Bridge implements GoogleAnalyticsAPI {
private var _debug:DebugConfiguration;
private var _proxy:JavascriptProxy;
private var _jsContainer:String;// = "_GATracker"
private var _hasGATracker:Boolean;// = false
private var _account:String;
private static var _linkTrackingObject_js:XML = <script>
<![CDATA[
function( container , target )
{
var targets ;
var name ;
if( target.indexOf(".") > 0 )
{
targets = target.split(".");
name = targets.pop();
}
else
{
targets = [];
name = target;
}
var ref = window;
var depth = targets.length;
for( var j = 0 ; j < depth ; j++ )
{
ref = ref[ targets[j] ] ;
}
window[container][target] = ref[name] ;
}
]]>
</script>
;
private static var _createTrackingObject_js:XML = <script>
<![CDATA[
function( acct )
{
_GATracker[acct] = _gat._getTracker(acct);
}
]]>
</script>
;
private static var _injectTrackingObject_js:XML = <script>
<![CDATA[
function()
{
try
{
_GATracker
}
catch(e)
{
_GATracker = {};
}
}
]]>
</script>
;
private static var _checkGAJS_js:XML = <script>
<![CDATA[
function()
{
if( _gat && _gat._getTracker )
{
return true;
}
return false;
}
]]>
</script>
;
private static var _checkValidTrackingObject_js:XML = <script>
<![CDATA[
function(acct)
{
if( _GATracker[acct] && (_GATracker[acct]._getAccount) )
{
return true ;
}
else
{
return false;
}
}
]]>
</script>
;
public function Bridge(_arg1:String, _arg2:DebugConfiguration, _arg3:JavascriptProxy){
var _local4:String;
var _local5:String;
var _local6:String;
super();
_account = _arg1;
_debug = _arg2;
_proxy = _arg3;
if (!_checkGAJS()){
_local4 = "";
_local4 = (_local4 + "ga.js not found, be sure to check if\n");
_local4 = (_local4 + "<script src=\"http://www.google-analytics.com/ga.js\"></script>\n");
_local4 = (_local4 + "is included in the HTML.");
_debug.warning(_local4);
throw (new Error(_local4));
};
if (!_hasGATracker){
if (((_debug.javascript) && (_debug.verbose))){
_local5 = "";
_local5 = (_local5 + "The Google Analytics tracking code was not found on the container page\n");
_local5 = (_local5 + "we create it");
_debug.info(_local5, VisualDebugMode.advanced);
};
_injectTrackingObject();
};
if (Utils.validateAccount(_arg1)){
_createTrackingObject(_arg1);
} else {
if (_checkTrackingObject(_arg1)){
_linkTrackingObject(_arg1);
} else {
_local6 = "";
_local6 = (_local6 + (("JS Object \"" + _arg1) + "\" doesn't exist in DOM\n"));
_local6 = (_local6 + "Bridge object not created.");
_debug.warning(_local6);
throw (new Error(_local6));
};
};
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_debug.info((((("link( " + _arg1) + ", ") + _arg2) + " )"));
_call("_link", _arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )"));
_call("_addOrganic", _arg1);
}
public function setAllowLinker(_arg1:Boolean):void{
_debug.info((("setAllowLinker( " + _arg1) + " )"));
_call("_setAllowLinker", _arg1);
}
private function _linkTrackingObject(_arg1:String):void{
_proxy.call(_linkTrackingObject_js, _jsContainer, _arg1);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
var _local5 = 2;
if (((_arg3) && (!((_arg3 == ""))))){
_local5 = 3;
};
if ((((_local5 == 3)) && (!(isNaN(_arg4))))){
_local5 = 4;
};
switch (_local5){
case 4:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2, _arg3, _arg4));
case 3:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2, _arg3));
case 2:
default:
_debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2));
};
}
public function setClientInfo(_arg1:Boolean):void{
_debug.info((("setClientInfo( " + _arg1) + " )"));
_call("_setClientInfo", _arg1);
}
public function trackTrans():void{
_debug.info("trackTrans()");
_call("_trackTrans");
}
public function setCookieTimeout(_arg1:int):void{
_debug.info((("setCookieTimeout( " + _arg1) + " )"));
_call("_setCookieTimeout", _arg1);
}
public function trackPageview(_arg1:String=""):void{
_debug.info((("trackPageview( " + _arg1) + " )"));
_call("_trackPageview", _arg1);
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_call("_getClientInfo"));
}
private function _checkValidTrackingObject(_arg1:String):Boolean{
return (_proxy.call(_checkValidTrackingObject_js, _arg1));
}
private function _checkGAJS():Boolean{
return (_proxy.call(_checkGAJS_js));
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_debug.warning((((("linkByPost( " + _arg1) + ", ") + _arg2) + " ) not implemented"));
}
private function _call(_arg1:String, ... _args){
_args.unshift(((((("window." + _jsContainer) + "[\"") + _account) + "\"].") + _arg1));
return (_proxy.call.apply(_proxy, _args));
}
public function hasGAJS():Boolean{
return (_checkGAJS());
}
private function _checkTrackingObject(_arg1:String):Boolean{
var _local2:Boolean = _proxy.hasProperty(_arg1);
var _local3:Boolean = _proxy.hasProperty((_arg1 + "._getAccount"));
return (((_local2) && (_local3)));
}
public function resetSession():void{
_debug.warning("resetSession() not implemented");
}
public function getDetectTitle():Boolean{
_debug.info("getDetectTitle()");
return (_call("_getDetectTitle"));
}
public function setCampNameKey(_arg1:String):void{
_debug.info((("setCampNameKey( " + _arg1) + " )"));
_call("_setCampNameKey", _arg1);
}
public function setDetectFlash(_arg1:Boolean):void{
_debug.info((("setDetectFlash( " + _arg1) + " )"));
_call("_setDetectFlash", _arg1);
}
public function createEventTracker(_arg1:String):EventTracker{
_debug.info((("createEventTracker( " + _arg1) + " )"));
return (new EventTracker(_arg1, this));
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_debug.info((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " )"));
_call("_addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
public function clearIgnoredOrganic():void{
_debug.info("clearIgnoredOrganic()");
_call("_clearIgnoreOrganic");
}
public function setVar(_arg1:String):void{
_debug.info((("setVar( " + _arg1) + " )"));
_call("_setVar", _arg1);
}
public function setDomainName(_arg1:String):void{
_debug.info((("setDomainName( " + _arg1) + " )"));
_call("_setDomainName", _arg1);
}
public function hasTrackingAccount(_arg1:String):Boolean{
if (Utils.validateAccount(_arg1)){
return (_checkValidTrackingObject(_arg1));
};
return (_checkTrackingObject(_arg1));
}
public function setCampSourceKey(_arg1:String):void{
_debug.info((("setCampSourceKey( " + _arg1) + " )"));
_call("_setCampSourceKey", _arg1);
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
_debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " )"));
_call("_addTrans", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
return (null);
}
public function setCampContentKey(_arg1:String):void{
_debug.info((("setCampContentKey( " + _arg1) + " )"));
_call("_setCampContentKey", _arg1);
}
public function setLocalServerMode():void{
_debug.info("setLocalServerMode()");
_call("_setLocalServerMode");
}
public function getLocalGifPath():String{
_debug.info("getLocalGifPath()");
return (_call("_getLocalGifPath"));
}
public function clearIgnoredRef():void{
_debug.info("clearIgnoredRef()");
_call("_clearIgnoreRef");
}
public function setAllowAnchor(_arg1:Boolean):void{
_debug.info((("setAllowAnchor( " + _arg1) + " )"));
_call("_setAllowAnchor", _arg1);
}
public function setLocalGifPath(_arg1:String):void{
_debug.info((("setLocalGifPath( " + _arg1) + " )"));
_call("_setLocalGifPath", _arg1);
}
public function getVersion():String{
_debug.info("getVersion()");
return (_call("_getVersion"));
}
private function _injectTrackingObject():void{
_proxy.executeBlock(_injectTrackingObject_js);
_hasGATracker = true;
}
public function setCookiePath(_arg1:String):void{
_debug.info((("setCookiePath( " + _arg1) + " )"));
_call("_setCookiePath", _arg1);
}
public function setSampleRate(_arg1:Number):void{
_debug.info((("setSampleRate( " + _arg1) + " )"));
_call("_setSampleRate", _arg1);
}
public function setAllowHash(_arg1:Boolean):void{
_debug.info((("setAllowHash( " + _arg1) + " )"));
_call("_setAllowHash", _arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
_debug.info((("addIgnoredOrganic( " + _arg1) + " )"));
_call("_addIgnoredOrganic", _arg1);
}
public function setCampNOKey(_arg1:String):void{
_debug.info((("setCampNOKey( " + _arg1) + " )"));
_call("_setCampNOKey", _arg1);
}
public function cookiePathCopy(_arg1:String):void{
_debug.info((("cookiePathCopy( " + _arg1) + " )"));
_call("_cookiePathCopy", _arg1);
}
public function setLocalRemoteServerMode():void{
_debug.info("setLocalRemoteServerMode()");
_call("_setLocalRemoteServerMode");
}
public function getServiceMode():ServerOperationMode{
_debug.info("getServiceMode()");
return (_call("_getServiceMode"));
}
public function setDetectTitle(_arg1:Boolean):void{
_debug.info((("setDetectTitle( " + _arg1) + " )"));
_call("_setDetectTitle", _arg1);
}
private function _createTrackingObject(_arg1:String):void{
_proxy.call(_createTrackingObject_js, _arg1);
}
public function setCampaignTrack(_arg1:Boolean):void{
_debug.info((("setCampaignTrack( " + _arg1) + " )"));
_call("_setCampaignTrack", _arg1);
}
public function clearOrganic():void{
_debug.info("clearOrganic()");
_call("_clearOrganic");
}
public function setCampTermKey(_arg1:String):void{
_debug.info((("setCampTermKey( " + _arg1) + " )"));
_call("_setCampTermKey", _arg1);
}
public function getDetectFlash():Boolean{
_debug.info("getDetectFlash()");
return (_call("_getDetectFlash"));
}
public function setCampMediumKey(_arg1:String):void{
_debug.info((("setCampMediumKey( " + _arg1) + " )"));
_call("_setCampMediumKey", _arg1);
}
public function addIgnoredRef(_arg1:String):void{
_debug.info((("addIgnoredRef( " + _arg1) + " )"));
_call("_addIgnoredRef", _arg1);
}
public function setSessionTimeout(_arg1:int):void{
_debug.info((("setSessionTimeout( " + _arg1) + " )"));
_call("_setSessionTimeout", _arg1);
}
public function setRemoteServerMode():void{
_debug.info("setRemoteServerMode()");
_call("_setRemoteServerMode");
}
public function getAccount():String{
_debug.info("getAccount()");
return (_call("_getAccount"));
}
}
}//package com.google.analytics.v4
Section 65
//Configuration (com.google.analytics.v4.Configuration)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
import com.google.analytics.campaign.*;
public class Configuration {
public var serverMode:ServerOperationMode;
public var detectFlash:Boolean;// = true
public var allowLocalTracking:Boolean;// = true
public var secureRemoteGIFpath:String;// = "https://ssl.google-analytics.com/__utm.gif"
public var hasSiteOverlay:Boolean;// = false
private var _version:String;// = "4.3as"
public var allowDomainHash:Boolean;// = true
public var detectClientInfo:Boolean;// = true
public var idleLoop:Number;// = 30
public var isTrackOutboundSubdomains:Boolean;// = false
public var cookiePath:String;// = "/"
public var transactionFieldDelim:String;// = "|"
private var _organic:Organic;
private var _cookieName:String;// = "analytics"
public var campaignKey:CampaignKey;
public var google:String;// = "google"
public var googleCsePath:String;// = "cse"
public var bucketCapacity:Number;// = 10
private var _sampleRate:Number;// = 1
public var remoteGIFpath:String;// = "http://www.google-analytics.com/__utm.gif"
public var googleSearchParam:String;// = "q"
public var allowLinker:Boolean;// = false
public var maxOutboundLinkExamined:Number;// = 1000
private var _debug:DebugConfiguration;
private var _trackingLimitPerSession:int;// = 500
private var _domain:Domain;
public var allowAnchor:Boolean;// = false
public var tokenCliff:int;// = 10
public var sessionTimeout:Number;
public var idleTimeout:Number;// = 60
public var campaignTracking:Boolean;// = true
public var domainName:String;// = ""
public var detectTitle:Boolean;// = true
public var tokenRate:Number;// = 0.2
public var conversionTimeout:Number;
public var localGIFpath:String;// = "/__utm.gif"
public function Configuration(_arg1:DebugConfiguration=null){
_version = "4.3as";
_sampleRate = 1;
_trackingLimitPerSession = 500;
_organic = new Organic();
googleCsePath = "cse";
googleSearchParam = "q";
google = "google";
_cookieName = "analytics";
allowDomainHash = true;
allowAnchor = false;
allowLinker = false;
hasSiteOverlay = false;
tokenRate = 0.2;
conversionTimeout = Timespan.sixmonths;
sessionTimeout = Timespan.thirtyminutes;
idleLoop = 30;
idleTimeout = 60;
maxOutboundLinkExamined = 1000;
tokenCliff = 10;
bucketCapacity = 10;
detectClientInfo = true;
detectFlash = true;
detectTitle = true;
campaignKey = new CampaignKey();
campaignTracking = true;
isTrackOutboundSubdomains = false;
serverMode = ServerOperationMode.remote;
localGIFpath = "/__utm.gif";
remoteGIFpath = "http://www.google-analytics.com/__utm.gif";
secureRemoteGIFpath = "https://ssl.google-analytics.com/__utm.gif";
cookiePath = "/";
transactionFieldDelim = "|";
domainName = "";
allowLocalTracking = true;
super();
_debug = _arg1;
_domain = new Domain(DomainNameMode.auto, "", _debug);
serverMode = ServerOperationMode.remote;
_initOrganicSources();
}
public function get organic():Organic{
return (_organic);
}
public function get trackingLimitPerSession():int{
return (_trackingLimitPerSession);
}
private function _initOrganicSources():void{
addOrganicSource(google, googleSearchParam);
addOrganicSource("yahoo", "p");
addOrganicSource("msn", "q");
addOrganicSource("aol", "query");
addOrganicSource("aol", "encquery");
addOrganicSource("lycos", "query");
addOrganicSource("ask", "q");
addOrganicSource("altavista", "q");
addOrganicSource("netscape", "query");
addOrganicSource("cnn", "query");
addOrganicSource("looksmart", "qt");
addOrganicSource("about", "terms");
addOrganicSource("mamma", "query");
addOrganicSource("alltheweb", "q");
addOrganicSource("gigablast", "q");
addOrganicSource("voila", "rdata");
addOrganicSource("virgilio", "qs");
addOrganicSource("live", "q");
addOrganicSource("baidu", "wd");
addOrganicSource("alice", "qs");
addOrganicSource("yandex", "text");
addOrganicSource("najdi", "q");
addOrganicSource("aol", "q");
addOrganicSource("club-internet", "q");
addOrganicSource("mama", "query");
addOrganicSource("seznam", "q");
addOrganicSource("search", "q");
addOrganicSource("wp", "szukaj");
addOrganicSource("onet", "qt");
addOrganicSource("netsprint", "q");
addOrganicSource("google.interia", "q");
addOrganicSource("szukacz", "q");
addOrganicSource("yam", "k");
addOrganicSource("pchome", "q");
addOrganicSource("kvasir", "searchExpr");
addOrganicSource("sesam", "q");
addOrganicSource("ozu", "q");
addOrganicSource("terra", "query");
addOrganicSource("nostrum", "query");
addOrganicSource("mynet", "q");
addOrganicSource("ekolay", "q");
addOrganicSource("search.ilse", "search_for");
}
public function get sampleRate():Number{
return (_sampleRate);
}
public function get cookieName():String{
return (_cookieName);
}
public function addOrganicSource(_arg1:String, _arg2:String):void{
var engine = _arg1;
var keyword = _arg2;
try {
_organic.addSource(engine, keyword);
} catch(e:Error) {
if (((_debug) && (_debug.active))){
_debug.warning(e.message);
};
};
}
public function get domain():Domain{
return (_domain);
}
public function set sampleRate(_arg1:Number):void{
if (_arg1 <= 0){
_arg1 = 0.1;
};
if (_arg1 > 1){
_arg1 = 1;
};
_arg1 = Number(_arg1.toFixed(2));
_sampleRate = _arg1;
}
public function get version():String{
return (_version);
}
}
}//package com.google.analytics.v4
Section 66
//GoogleAnalyticsAPI (com.google.analytics.v4.GoogleAnalyticsAPI)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
public interface GoogleAnalyticsAPI {
function setCampSourceKey(_arg1:String):void;
function getServiceMode():ServerOperationMode;
function resetSession():void;
function setLocalServerMode():void;
function setCampContentKey(_arg1:String):void;
function addOrganic(_arg1:String, _arg2:String):void;
function setDetectFlash(_arg1:Boolean):void;
function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object;
function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean;
function setCampTermKey(_arg1:String):void;
function setCampNameKey(_arg1:String):void;
function addIgnoredOrganic(_arg1:String):void;
function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void;
function setAllowLinker(_arg1:Boolean):void;
function getClientInfo():Boolean;
function getDetectFlash():Boolean;
function setCampaignTrack(_arg1:Boolean):void;
function createEventTracker(_arg1:String):EventTracker;
function setCookieTimeout(_arg1:int):void;
function setAllowAnchor(_arg1:Boolean):void;
function trackTrans():void;
function clearOrganic():void;
function trackPageview(_arg1:String=""):void;
function setLocalGifPath(_arg1:String):void;
function getVersion():String;
function getLocalGifPath():String;
function setVar(_arg1:String):void;
function clearIgnoredOrganic():void;
function setCampMediumKey(_arg1:String):void;
function addIgnoredRef(_arg1:String):void;
function setClientInfo(_arg1:Boolean):void;
function setCookiePath(_arg1:String):void;
function setSampleRate(_arg1:Number):void;
function setSessionTimeout(_arg1:int):void;
function setRemoteServerMode():void;
function clearIgnoredRef():void;
function setDomainName(_arg1:String):void;
function setDetectTitle(_arg1:Boolean):void;
function setAllowHash(_arg1:Boolean):void;
function getAccount():String;
function linkByPost(_arg1:Object, _arg2:Boolean=false):void;
function link(_arg1:String, _arg2:Boolean=false):void;
function setCampNOKey(_arg1:String):void;
function setLocalRemoteServerMode():void;
function cookiePathCopy(_arg1:String):void;
function getDetectTitle():Boolean;
}
}//package com.google.analytics.v4
Section 67
//Tracker (com.google.analytics.v4.Tracker)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.data.*;
import com.google.analytics.utils.*;
import com.google.analytics.external.*;
import com.google.analytics.campaign.*;
public class Tracker implements GoogleAnalyticsAPI {
private const EVENT_TRACKER_LABEL_KEY_NUM:int = 3;
private const EVENT_TRACKER_VALUE_VALUE_NUM:int = 1;
private const EVENT_TRACKER_PROJECT_ID:int = 5;
private const EVENT_TRACKER_OBJECT_NAME_KEY_NUM:int = 1;
private const EVENT_TRACKER_TYPE_KEY_NUM:int = 2;
private var _adSense:AdSenseGlobals;
private var _eventTracker:X10;
private var _noSessionInformation:Boolean;// = false
private var _browserInfo:BrowserInfo;
private var _debug:DebugConfiguration;
private var _isNewVisitor:Boolean;// = false
private var _buffer:Buffer;
private var _config:Configuration;
private var _x10Module:X10;
private var _campaign:CampaignManager;
private var _formatedReferrer:String;
private var _timeStamp:Number;
private var _info:Environment;
private var _domainHash:Number;
private var _campaignInfo:CampaignInfo;
private var _gifRequest:GIFRequest;
private var _hasInitData:Boolean;// = false
private var _account:String;
public function Tracker(_arg1:String, _arg2:Configuration, _arg3:DebugConfiguration, _arg4:Environment, _arg5:Buffer, _arg6:GIFRequest, _arg7:AdSenseGlobals){
var _local8:String;
super();
_account = _arg1;
_config = _arg2;
_debug = _arg3;
_info = _arg4;
_buffer = _arg5;
_gifRequest = _arg6;
_adSense = _arg7;
if (!Utils.validateAccount(_arg1)){
_local8 = (("Account \"" + _arg1) + "\" is not valid.");
_debug.warning(_local8);
throw (new Error(_local8));
};
_initData();
}
private function _doTracking():Boolean{
if (((((!((_info.protocol == Protocols.file))) && (!((_info.protocol == Protocols.none))))) && (_isNotGoogleSearch()))){
return (true);
};
if (_config.allowLocalTracking){
return (true);
};
return (false);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )"));
_config.organic.addSource(_arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
_config.allowLinker = _arg1;
_debug.info((("setAllowLinker( " + _config.allowLinker) + " )"));
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
var _local5:Boolean;
var _local6 = 2;
if (((!((_arg1 == ""))) && (!((_arg2 == ""))))){
_eventTracker.clearKey(EVENT_TRACKER_PROJECT_ID);
_eventTracker.clearValue(EVENT_TRACKER_PROJECT_ID);
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_OBJECT_NAME_KEY_NUM, _arg1);
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_TYPE_KEY_NUM, _arg2);
if (((_arg3) && (!((_arg3 == ""))))){
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_LABEL_KEY_NUM, _arg3);
_local6 = 3;
if (!isNaN(_arg4)){
_local5 = _eventTracker.setValue(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_VALUE_VALUE_NUM, _arg4);
_local6 = 4;
};
};
if (_local5){
_debug.info(((("valid event tracking call\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek);
_sendXEvent(_eventTracker);
};
} else {
_debug.warning(((("event tracking call is not valid, failed!\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek);
_local5 = false;
};
switch (_local6){
case 4:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )"));
break;
case 3:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )"));
break;
case 2:
default:
_debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )"));
};
return (_local5);
}
public function trackPageview(_arg1:String=""):void{
_debug.info((("trackPageview( " + _arg1) + " )"));
if (_doTracking()){
_initData();
_trackMetrics(_arg1);
_noSessionInformation = false;
} else {
_debug.warning((("trackPageview( " + _arg1) + " ) failed"));
};
}
public function setCookieTimeout(_arg1:int):void{
_config.conversionTimeout = _arg1;
_debug.info((("setCookieTimeout( " + _config.conversionTimeout) + " )"));
}
public function trackTrans():void{
_debug.warning("trackTrans() not implemented");
}
public function setClientInfo(_arg1:Boolean):void{
_config.detectClientInfo = _arg1;
_debug.info((("setClientInfo( " + _config.detectClientInfo) + " )"));
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_debug.warning((("linkByPost( " + [_arg1, _arg2].join(", ")) + " ) not implemented"));
}
private function _initData():void{
var _local1:String;
var _local2:String;
if (!_hasInitData){
_updateDomainName();
_domainHash = _getDomainHash();
_timeStamp = Math.round((new Date().getTime() / 1000));
if (_debug.verbose){
_local1 = "";
_local1 = (_local1 + "_initData 0");
_local1 = (_local1 + ("\ndomain name: " + _config.domainName));
_local1 = (_local1 + ("\ndomain hash: " + _domainHash));
_local1 = (_local1 + (((("\ntimestamp: " + _timeStamp) + " (") + new Date((_timeStamp * 1000))) + ")"));
_debug.info(_local1, VisualDebugMode.geek);
};
};
if (_doTracking()){
_handleCookie();
};
if (!_hasInitData){
if (_doTracking()){
_formatedReferrer = _formatReferrer();
_browserInfo = new BrowserInfo(_config, _info);
_debug.info(("browserInfo: " + _browserInfo.toURLString()), VisualDebugMode.advanced);
if (_config.campaignTracking){
_campaign = new CampaignManager(_config, _debug, _buffer, _domainHash, _formatedReferrer, _timeStamp);
_campaignInfo = _campaign.getCampaignInformation(_info.locationSearch, _noSessionInformation);
_debug.info(("campaignInfo: " + _campaignInfo.toURLString()), VisualDebugMode.advanced);
};
};
_x10Module = new X10();
_eventTracker = new X10();
_hasInitData = true;
};
if (_config.hasSiteOverlay){
_debug.warning("Site Overlay is not supported");
};
if (_debug.verbose){
_local2 = "";
_local2 = (_local2 + "_initData (misc)");
_local2 = (_local2 + ("\nflash version: " + _info.flashVersion.toString(4)));
_local2 = (_local2 + ("\nprotocol: " + _info.protocol));
_local2 = (_local2 + (("\ndefault domain name (auto): \"" + _info.domainName) + "\""));
_local2 = (_local2 + ("\nlanguage: " + _info.language));
_local2 = (_local2 + ("\ndomain hash: " + _getDomainHash()));
_local2 = (_local2 + ("\nuser-agent: " + _info.userAgent));
_debug.info(_local2, VisualDebugMode.geek);
};
}
public function getDetectTitle():Boolean{
_debug.info("getDetectTitle()");
return (_config.detectTitle);
}
public function resetSession():void{
_debug.info("resetSession()");
_buffer.resetCurrentSession();
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_config.detectClientInfo);
}
private function _sendXEvent(_arg1:X10=null):void{
var _local2:Variables;
var _local3:EventInfo;
var _local4:Variables;
var _local5:Variables;
_initData();
if (_takeSample()){
_local2 = new Variables();
_local2.URIencode = true;
_local3 = new EventInfo(true, _x10Module, _arg1);
_local4 = _local3.toVariables();
_local5 = _renderMetricsSearchVariables();
_local2.join(_local4, _local5);
_gifRequest.send(_account, _local2, false, true);
};
}
public function setDetectFlash(_arg1:Boolean):void{
_config.detectFlash = _arg1;
_debug.info((("setDetectFlash( " + _config.detectFlash) + " )"));
}
public function setCampNameKey(_arg1:String):void{
_config.campaignKey.UCCN = _arg1;
var _local2 = (("setCampNameKey( " + _config.campaignKey.UCCN) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCCN]"));
} else {
_debug.info(_local2);
};
}
private function _formatReferrer():String{
var _local2:String;
var _local3:URL;
var _local4:URL;
var _local1:String = _info.referrer;
if ((((_local1 == "")) || ((_local1 == "localhost")))){
_local1 = "-";
} else {
_local2 = _info.domainName;
_local3 = new URL(_local1);
_local4 = new URL(("http://" + _local2));
if (_local3.hostName == _local2){
return ("-");
};
if (_local4.domain == _local3.domain){
if (_local4.subDomain != _local3.subDomain){
_local1 = "0";
};
};
if ((((_local1.charAt(0) == "[")) && (_local1.charAt((_local1.length - 1))))){
_local1 = "-";
};
};
_debug.info(("formated referrer: " + _local1), VisualDebugMode.advanced);
return (_local1);
}
private function _visitCode():Number{
if (_debug.verbose){
_debug.info(("visitCode: " + _buffer.utma.sessionId), VisualDebugMode.geek);
};
return (_buffer.utma.sessionId);
}
public function createEventTracker(_arg1:String):EventTracker{
_debug.info((("createEventTracker( " + _arg1) + " )"));
return (new EventTracker(_arg1, this));
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_debug.warning((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " ) not implemented"));
}
public function clearIgnoredOrganic():void{
_debug.info("clearIgnoredOrganic()");
_config.organic.clearIgnoredKeywords();
}
public function setVar(_arg1:String):void{
var _local2:Variables;
if (((!((_arg1 == ""))) && (_isNotGoogleSearch()))){
_initData();
_buffer.utmv.domainHash = _domainHash;
_buffer.utmv.value = _arg1;
if (_debug.verbose){
_debug.info(_buffer.utmv.toString(), VisualDebugMode.geek);
};
_debug.info((("setVar( " + _arg1) + " )"));
if (_takeSample()){
_local2 = new Variables();
_local2.utmt = "var";
_gifRequest.send(_account, _local2);
};
} else {
_debug.warning((("setVar \"" + _arg1) + "\" is ignored"));
};
}
public function setDomainName(_arg1:String):void{
if (_arg1 == "auto"){
_config.domain.mode = DomainNameMode.auto;
} else {
if (_arg1 == "none"){
_config.domain.mode = DomainNameMode.none;
} else {
_config.domain.mode = DomainNameMode.custom;
_config.domain.name = _arg1;
};
};
_updateDomainName();
_debug.info((("setDomainName( " + _config.domainName) + " )"));
}
private function _updateDomainName():void{
var _local1:String;
if (_config.domain.mode == DomainNameMode.auto){
_local1 = _info.domainName;
if (_local1.substring(0, 4) == "www."){
_local1 = _local1.substring(4);
};
_config.domain.name = _local1;
};
_config.domainName = _config.domain.name.toLowerCase();
_debug.info(("domain name: " + _config.domainName), VisualDebugMode.advanced);
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
_debug.warning((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " ) not implemented"));
return (null);
}
private function _renderMetricsSearchVariables(_arg1:String=""):Variables{
var _local4:Variables;
var _local2:Variables = new Variables();
_local2.URIencode = true;
var _local3:DocumentInfo = new DocumentInfo(_config, _info, _formatedReferrer, _arg1, _adSense);
_debug.info(("docInfo: " + _local3.toURLString()), VisualDebugMode.geek);
if (_config.campaignTracking){
_local4 = _campaignInfo.toVariables();
};
var _local5:Variables = _browserInfo.toVariables();
_local2.join(_local3.toVariables(), _local5, _local4);
return (_local2);
}
public function setCampContentKey(_arg1:String):void{
_config.campaignKey.UCCT = _arg1;
var _local2 = (("setCampContentKey( " + _config.campaignKey.UCCT) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCCT]"));
} else {
_debug.info(_local2);
};
}
private function _handleCookie():void{
var _local1:String;
var _local2:String;
var _local3:Array;
var _local4:String;
if (_config.allowLinker){
};
if (((_buffer.hasUTMA()) && (!(_buffer.utma.isEmpty())))){
if (((!(_buffer.hasUTMB())) || (!(_buffer.hasUTMC())))){
_buffer.updateUTMA(_timeStamp);
_noSessionInformation = true;
};
if (_debug.verbose){
_debug.info(("from cookie " + _buffer.utma.toString()), VisualDebugMode.geek);
};
} else {
_debug.info("create a new utma", VisualDebugMode.advanced);
_buffer.utma.domainHash = _domainHash;
_buffer.utma.sessionId = _getUniqueSessionId();
_buffer.utma.firstTime = _timeStamp;
_buffer.utma.lastTime = _timeStamp;
_buffer.utma.currentTime = _timeStamp;
_buffer.utma.sessionCount = 1;
if (_debug.verbose){
_debug.info(_buffer.utma.toString(), VisualDebugMode.geek);
};
_noSessionInformation = true;
_isNewVisitor = true;
};
if (((_adSense.gaGlobal) && ((_adSense.dh == String(_domainHash))))){
if (_adSense.sid){
_buffer.utma.currentTime = Number(_adSense.sid);
if (_debug.verbose){
_local1 = "";
_local1 = (_local1 + "AdSense sid found\n");
_local1 = (_local1 + (((("Override currentTime(" + _buffer.utma.currentTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")"));
_debug.info(_local1, VisualDebugMode.geek);
};
};
if (_isNewVisitor){
if (_adSense.sid){
_buffer.utma.lastTime = Number(_adSense.sid);
if (_debug.verbose){
_local2 = "";
_local2 = (_local2 + "AdSense sid found (new visitor)\n");
_local2 = (_local2 + (((("Override lastTime(" + _buffer.utma.lastTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")"));
_debug.info(_local2, VisualDebugMode.geek);
};
};
if (_adSense.vid){
_local3 = _adSense.vid.split(".");
_buffer.utma.sessionId = Number(_local3[0]);
_buffer.utma.firstTime = Number(_local3[1]);
if (_debug.verbose){
_local4 = "";
_local4 = (_local4 + "AdSense vid found (new visitor)\n");
_local4 = (_local4 + (((("Override sessionId(" + _buffer.utma.sessionId) + ") from AdSense vid(") + Number(_local3[0])) + ")\n"));
_local4 = (_local4 + (((("Override firstTime(" + _buffer.utma.firstTime) + ") from AdSense vid(") + Number(_local3[1])) + ")"));
_debug.info(_local4, VisualDebugMode.geek);
};
};
if (_debug.verbose){
_debug.info(("AdSense modified : " + _buffer.utma.toString()), VisualDebugMode.geek);
};
};
};
_buffer.utmb.domainHash = _domainHash;
if (isNaN(_buffer.utmb.trackCount)){
_buffer.utmb.trackCount = 0;
};
if (isNaN(_buffer.utmb.token)){
_buffer.utmb.token = _config.tokenCliff;
};
if (isNaN(_buffer.utmb.lastTime)){
_buffer.utmb.lastTime = _buffer.utma.currentTime;
};
_buffer.utmc.domainHash = _domainHash;
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.advanced);
_debug.info(_buffer.utmc.toString(), VisualDebugMode.advanced);
};
}
public function setLocalServerMode():void{
_config.serverMode = ServerOperationMode.local;
_debug.info("setLocalServerMode()");
}
public function clearIgnoredRef():void{
_debug.info("clearIgnoredRef()");
_config.organic.clearIgnoredReferrals();
}
public function setCampSourceKey(_arg1:String):void{
_config.campaignKey.UCSR = _arg1;
var _local2 = (("setCampSourceKey( " + _config.campaignKey.UCSR) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCSR]"));
} else {
_debug.info(_local2);
};
}
public function getLocalGifPath():String{
_debug.info("getLocalGifPath()");
return (_config.localGIFpath);
}
public function setLocalGifPath(_arg1:String):void{
_config.localGIFpath = _arg1;
_debug.info((("setLocalGifPath( " + _config.localGIFpath) + " )"));
}
public function getVersion():String{
_debug.info("getVersion()");
return (_config.version);
}
public function setAllowAnchor(_arg1:Boolean):void{
_config.allowAnchor = _arg1;
_debug.info((("setAllowAnchor( " + _config.allowAnchor) + " )"));
}
private function _isNotGoogleSearch():Boolean{
var _local1:String = _config.domainName;
var _local2 = (_local1.indexOf("www.google.") < 0);
var _local3 = (_local1.indexOf(".google.") < 0);
var _local4 = (_local1.indexOf("google.") < 0);
var _local5 = (_local1.indexOf("google.org") > -1);
return (((((((((_local2) || (_local3))) || (_local4))) || (!((_config.cookiePath == "/"))))) || (_local5)));
}
public function setSampleRate(_arg1:Number):void{
if (_arg1 < 0){
_debug.warning("sample rate can not be negative, ignoring value.");
} else {
_config.sampleRate = _arg1;
};
_debug.info((("setSampleRate( " + _config.sampleRate) + " )"));
}
private function _takeSample():Boolean{
if (_debug.verbose){
_debug.info((((("takeSample: (" + (_visitCode() % 10000)) + ") < (") + (_config.sampleRate * 10000)) + ")"), VisualDebugMode.geek);
};
return (((_visitCode() % 10000) < (_config.sampleRate * 10000)));
}
public function setCookiePath(_arg1:String):void{
_config.cookiePath = _arg1;
_debug.info((("setCookiePath( " + _config.cookiePath) + " )"));
}
public function setAllowHash(_arg1:Boolean):void{
_config.allowDomainHash = _arg1;
_debug.info((("setAllowHash( " + _config.allowDomainHash) + " )"));
}
private function _generateUserDataHash():Number{
var _local1 = "";
_local1 = (_local1 + _info.appName);
_local1 = (_local1 + _info.appVersion);
_local1 = (_local1 + _info.language);
_local1 = (_local1 + _info.platform);
_local1 = (_local1 + _info.userAgent.toString());
_local1 = (_local1 + (((_info.screenWidth + "x") + _info.screenHeight) + _info.screenColorDepth));
_local1 = (_local1 + _info.referrer);
return (Utils.generateHash(_local1));
}
public function setCampNOKey(_arg1:String):void{
_config.campaignKey.UCNO = _arg1;
var _local2 = (("setCampNOKey( " + _config.campaignKey.UCNO) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCNO]"));
} else {
_debug.info(_local2);
};
}
public function addIgnoredOrganic(_arg1:String):void{
_debug.info((("addIgnoredOrganic( " + _arg1) + " )"));
_config.organic.addIgnoredKeyword(_arg1);
}
public function setLocalRemoteServerMode():void{
_config.serverMode = ServerOperationMode.both;
_debug.info("setLocalRemoteServerMode()");
}
public function cookiePathCopy(_arg1:String):void{
_debug.warning((("cookiePathCopy( " + _arg1) + " ) not implemented"));
}
public function setDetectTitle(_arg1:Boolean):void{
_config.detectTitle = _arg1;
_debug.info((("setDetectTitle( " + _config.detectTitle) + " )"));
}
public function setCampTermKey(_arg1:String):void{
_config.campaignKey.UCTR = _arg1;
var _local2 = (("setCampTermKey( " + _config.campaignKey.UCTR) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCTR]"));
} else {
_debug.info(_local2);
};
}
public function getServiceMode():ServerOperationMode{
_debug.info("getServiceMode()");
return (_config.serverMode);
}
private function _trackMetrics(_arg1:String=""):void{
var _local2:Variables;
var _local3:Variables;
var _local4:Variables;
var _local5:EventInfo;
if (_takeSample()){
_local2 = new Variables();
_local2.URIencode = true;
if (((_x10Module) && (_x10Module.hasData()))){
_local5 = new EventInfo(false, _x10Module);
_local3 = _local5.toVariables();
};
_local4 = _renderMetricsSearchVariables(_arg1);
_local2.join(_local3, _local4);
_gifRequest.send(_account, _local2);
};
}
public function setCampaignTrack(_arg1:Boolean):void{
_config.campaignTracking = _arg1;
_debug.info((("setCampaignTrack( " + _config.campaignTracking) + " )"));
}
public function addIgnoredRef(_arg1:String):void{
_debug.info((("addIgnoredRef( " + _arg1) + " )"));
_config.organic.addIgnoredReferral(_arg1);
}
public function clearOrganic():void{
_debug.info("clearOrganic()");
_config.organic.clearEngines();
}
public function getDetectFlash():Boolean{
_debug.info("getDetectFlash()");
return (_config.detectFlash);
}
public function setCampMediumKey(_arg1:String):void{
_config.campaignKey.UCMD = _arg1;
var _local2 = (("setCampMediumKey( " + _config.campaignKey.UCMD) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCMD]"));
} else {
_debug.info(_local2);
};
}
private function _getUniqueSessionId():Number{
var _local1:Number = ((Utils.generate32bitRandom() ^ _generateUserDataHash()) * 2147483647);
_debug.info(("Session ID: " + _local1), VisualDebugMode.geek);
return (_local1);
}
private function _getDomainHash():Number{
if (((((!(_config.domainName)) || ((_config.domainName == "")))) || ((_config.domain.mode == DomainNameMode.none)))){
_config.domainName = "";
return (1);
};
_updateDomainName();
if (_config.allowDomainHash){
return (Utils.generateHash(_config.domainName));
};
return (1);
}
public function setSessionTimeout(_arg1:int):void{
_config.sessionTimeout = _arg1;
_debug.info((("setSessionTimeout( " + _config.sessionTimeout) + " )"));
}
public function getAccount():String{
_debug.info("getAccount()");
return (_account);
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_debug.warning((("link( " + [_arg1, _arg2].join(", ")) + " ) not implemented"));
}
public function setRemoteServerMode():void{
_config.serverMode = ServerOperationMode.remote;
_debug.info("setRemoteServerMode()");
}
}
}//package com.google.analytics.v4
Section 68
//AnalyticsTracker (com.google.analytics.AnalyticsTracker)
package com.google.analytics {
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.events.*;
public interface AnalyticsTracker extends GoogleAnalyticsAPI, IEventDispatcher {
function set config(_arg1:Configuration):void;
function isReady():Boolean;
function get mode():String;
function set debug(_arg1:DebugConfiguration):void;
function get account():String;
function set mode(_arg1:String):void;
function get config():Configuration;
function get debug():DebugConfiguration;
function set account(_arg1:String):void;
function get visualDebug():Boolean;
function set visualDebug(_arg1:Boolean):void;
}
}//package com.google.analytics
Section 69
//API (com.google.analytics.API)
package com.google.analytics {
import com.google.analytics.utils.*;
public class API {
public static var version:Version = new Version();
version.major = 1;
version.minor = 0;
version.build = 1;
version.revision = "$Rev: 319 $ ".split(" ")[1];
}
}//package com.google.analytics
Section 70
//GATracker (com.google.analytics.GATracker)
package com.google.analytics {
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.events.*;
import flash.display.*;
import com.google.analytics.utils.*;
import com.google.analytics.external.*;
import com.google.analytics.events.*;
public class GATracker implements AnalyticsTracker {
private var _adSense:AdSenseGlobals;
private var _env:Environment;
private var _visualDebug:Boolean;
private var _idleTimer:IdleTimer;
private var _debug:DebugConfiguration;
private var _buffer:Buffer;
private var _config:Configuration;
private var _mode:String;
private var _display:DisplayObject;
private var _jsproxy:JavascriptProxy;
private var _dom:HTMLDOM;
private var _eventDispatcher:EventDispatcher;
private var _ready:Boolean;// = false
private var _gifRequest:GIFRequest;
private var _account:String;
private var _tracker:GoogleAnalyticsAPI;
public static var version:Version = API.version;
public static var autobuild:Boolean = true;
public function GATracker(_arg1:DisplayObject, _arg2:String, _arg3:String="AS3", _arg4:Boolean=false, _arg5:Configuration=null, _arg6:DebugConfiguration=null){
_ready = false;
super();
_display = _arg1;
_eventDispatcher = new EventDispatcher(this);
_tracker = new TrackerCache();
this.account = _arg2;
this.mode = _arg3;
this.visualDebug = _arg4;
if (!_arg6){
this.debug = new DebugConfiguration();
};
if (!_arg5){
this.config = new Configuration(_arg6);
};
if (autobuild){
_factory();
};
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_tracker.link(_arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_tracker.addOrganic(_arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
_tracker.setAllowLinker(_arg1);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4));
}
public function setCookieTimeout(_arg1:int):void{
_tracker.setCookieTimeout(_arg1);
}
public function trackTrans():void{
_tracker.trackTrans();
}
public function trackPageview(_arg1:String=""):void{
_tracker.trackPageview(_arg1);
}
public function getClientInfo():Boolean{
return (_tracker.getClientInfo());
}
public function setClientInfo(_arg1:Boolean):void{
_tracker.setClientInfo(_arg1);
}
public function get account():String{
return (_account);
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_tracker.linkByPost(_arg1, _arg2);
}
public function getDetectTitle():Boolean{
return (_tracker.getDetectTitle());
}
public function dispatchEvent(_arg1:Event):Boolean{
return (_eventDispatcher.dispatchEvent(_arg1));
}
public function get config():Configuration{
return (_config);
}
public function set mode(_arg1:String):void{
_mode = _arg1;
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
public function setDetectFlash(_arg1:Boolean):void{
_tracker.setDetectFlash(_arg1);
}
public function resetSession():void{
_tracker.resetSession();
}
public function setCampNameKey(_arg1:String):void{
_tracker.setCampNameKey(_arg1);
}
public function get debug():DebugConfiguration{
return (_debug);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
private function _bridgeFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account));
return (new Bridge(account, _debug, _jsproxy));
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function clearIgnoredOrganic():void{
_tracker.clearIgnoredOrganic();
}
public function set account(_arg1:String):void{
_account = _arg1;
}
public function setVar(_arg1:String):void{
_tracker.setVar(_arg1);
}
public function build():void{
if (!isReady()){
_factory();
};
}
public function setDomainName(_arg1:String):void{
_tracker.setDomainName(_arg1);
}
public function createEventTracker(_arg1:String):EventTracker{
return (_tracker.createEventTracker(_arg1));
}
public function set config(_arg1:Configuration):void{
_config = _arg1;
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8));
}
public function setCampSourceKey(_arg1:String):void{
_tracker.setCampSourceKey(_arg1);
}
public function setCampContentKey(_arg1:String):void{
_tracker.setCampContentKey(_arg1);
}
public function willTrigger(_arg1:String):Boolean{
return (_eventDispatcher.willTrigger(_arg1));
}
public function setLocalServerMode():void{
_tracker.setLocalServerMode();
}
public function isReady():Boolean{
return (_ready);
}
public function getLocalGifPath():String{
return (_tracker.getLocalGifPath());
}
public function setAllowAnchor(_arg1:Boolean):void{
_tracker.setAllowAnchor(_arg1);
}
public function clearIgnoredRef():void{
_tracker.clearIgnoredRef();
}
public function get mode():String{
return (_mode);
}
public function set debug(_arg1:DebugConfiguration):void{
_debug = _arg1;
}
public function setLocalGifPath(_arg1:String):void{
_tracker.setLocalGifPath(_arg1);
}
public function getVersion():String{
return (_tracker.getVersion());
}
public function setSampleRate(_arg1:Number):void{
_tracker.setSampleRate(_arg1);
}
public function setCookiePath(_arg1:String):void{
_tracker.setCookiePath(_arg1);
}
public function setAllowHash(_arg1:Boolean):void{
_tracker.setAllowHash(_arg1);
}
public function setCampNOKey(_arg1:String):void{
_tracker.setCampNOKey(_arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
_tracker.addIgnoredOrganic(_arg1);
}
public function setLocalRemoteServerMode():void{
_tracker.setLocalRemoteServerMode();
}
public function cookiePathCopy(_arg1:String):void{
_tracker.cookiePathCopy(_arg1);
}
private function _factory():void{
var _local1:GoogleAnalyticsAPI;
var _local2:TrackerCache;
_jsproxy = new JavascriptProxy(debug);
if (visualDebug){
debug.layout = new Layout(debug, _display);
debug.active = visualDebug;
};
_local2 = (_tracker as TrackerCache);
switch (mode){
case TrackerMode.BRIDGE:
_local1 = _bridgeFactory();
break;
case TrackerMode.AS3:
default:
_local1 = _trackerFactory();
};
if (!_local2.isEmpty()){
_local2.tracker = _local1;
_local2.flush();
};
_tracker = _local1;
_ready = true;
dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this));
}
public function setCampTermKey(_arg1:String):void{
_tracker.setCampTermKey(_arg1);
}
private function _trackerFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account));
_adSense = new AdSenseGlobals(debug);
_dom = new HTMLDOM(debug);
_dom.cacheProperties();
_env = new Environment("", "", "", debug, _dom);
_buffer = new Buffer(config, debug, false);
_gifRequest = new GIFRequest(config, debug, _buffer, _env);
_idleTimer = new IdleTimer(config, debug, _display, _buffer);
_env.url = _display.stage.loaderInfo.url;
return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense));
}
public function setDetectTitle(_arg1:Boolean):void{
_tracker.setDetectTitle(_arg1);
}
public function getServiceMode():ServerOperationMode{
return (_tracker.getServiceMode());
}
public function clearOrganic():void{
_tracker.clearOrganic();
}
public function setCampaignTrack(_arg1:Boolean):void{
_tracker.setCampaignTrack(_arg1);
}
public function addIgnoredRef(_arg1:String):void{
_tracker.addIgnoredRef(_arg1);
}
public function set visualDebug(_arg1:Boolean):void{
_visualDebug = _arg1;
}
public function setCampMediumKey(_arg1:String):void{
_tracker.setCampMediumKey(_arg1);
}
public function setSessionTimeout(_arg1:int):void{
_tracker.setSessionTimeout(_arg1);
}
public function getDetectFlash():Boolean{
return (_tracker.getDetectFlash());
}
public function get visualDebug():Boolean{
return (_visualDebug);
}
public function getAccount():String{
return (_tracker.getAccount());
}
public function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public function setRemoteServerMode():void{
_tracker.setRemoteServerMode();
}
}
var _local1:* = ServerOperationMode;
return (_local1);
}//package com.google.analytics
Section 71
//Main (com.Lethe.application.Main)
package com.Lethe.application {
import flash.events.*;
import flash.display.*;
import com.Lethe.controller.*;
import com.Lethe.ui.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
import zlong.localization.country.*;
import com.google.analytics.*;
import zlong.localization.display.*;
import zlong.localization.*;
import flash.system.*;
public class Main extends MovieClip {
private var allUIcontainer:UIContainer;
private var keyListener:KeyListener;
private var broadCaster:BroadCaster;
public static var _tracker;
public static var component;
public function Main():void{
super();
this.stop();
if (Capabilities.playerType == "ActiveX"){
try {
if (Capabilities.version.split(" ")[1].split(",")[0] == "9"){
stage.frameRate = 39;
};
} catch(e:Error) {
};
};
new GameSetting(this, "tween", "king_of_drift", "king-of-drift.html", 550, 450);
Model.getInstance().getSettingData();
keyListener = new KeyListener(this);
_tracker = new GATracker(this, "UA-6695967-1", "AS3", false);
stage.stageFocusRect = false;
new GameLoading(this);
initHighScore();
}
private function onResumeGame(_arg1:Event):void{
allUIcontainer.onResumeGame();
}
private function init():void{
if (allUIcontainer == null){
allUIcontainer = new UIContainer(this);
};
showPage("MainMenu", true, true);
LetheMap.gc();
}
private function onShowEffect(_arg1:LetheEvent):void{
allUIcontainer.onShowEffect(_arg1.data);
}
private function onPlayerFinished(_arg1:Event):void{
allUIcontainer.onGameOver();
}
private function langChangeHandler(_arg1:Event):void{
component.O1100000l(CountryInfo.instance.country);
}
private function showPage(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false):void{
allUIcontainer.showPage(_arg1, _arg2, _arg3);
}
private function clickLogo(_arg1:Event):void{
var e = _arg1;
try {
component.parent.removeChild(component);
} catch(e:Error) {
};
allUIcontainer.onclickContinue();
}
private function addListener():void{
SoundManager.getInstance().loadSounds();
broadCaster = BroadCaster.getInstance();
broadCaster.addEventListener("onClosePage", onClosePage, false, 0, true);
broadCaster.addEventListener("onMapLoadDone", onMapLoadDone, false, 0, true);
broadCaster.addEventListener("onUpdateToolBar", onUpdateToolBar, false, 0, true);
broadCaster.addEventListener("onFinishLap", onFinishLap, false, 0, true);
broadCaster.addEventListener("onFinishCircle", onFinishCircle, false, 0, true);
broadCaster.addEventListener("onPlayerFinished", onPlayerFinished, false, 0, true);
broadCaster.addEventListener("onShowEffect", onShowEffect);
broadCaster.addEventListener("onResumeGame", onResumeGame);
this.addEventListener(Event.ENTER_FRAME, update, false, 0, true);
init();
}
private function backGame(_arg1:Event):void{
}
private function onClosePage(_arg1:LetheEvent):void{
switch (_arg1.data["page"]){
case "TrainMap":
showPage("GameStage", true, true);
break;
case "GameStage":
switch (_arg1.data["info"]){
case -1:
showPage("GameOver", true, true);
break;
default:
break;
};
break;
case "GameOver":
switch (_arg1.data["info"]){
case -1:
showPage(("LevelSelect" + (Model.getInstance().gameMode + 1)), true, false);
break;
case 1:
showPage("HighScores", true, false);
break;
};
break;
case "MainMenu":
switch (_arg1.data["info"]){
case 0:
Model.getInstance().setGameMode(Number(_arg1.data["info"]));
showPage(("LevelSelect" + (Model.getInstance().gameMode + 1)), true);
break;
case 1:
Model.getInstance().setGameMode(Number(_arg1.data["info"]));
showPage(("LevelSelect" + (Model.getInstance().gameMode + 1)), true);
break;
case 2:
if (component.O11111100()){
showPage("HighScores", true, false);
} else {
component.x = 40;
component.y = 60;
addChild(component);
KeyManager.getInstance().setPageFocus(null, -1, -1, [32, 13, 27, 8, 81], [contunueGame, contunueGame, contunueGame, contunueGame, contunueGame]);
};
break;
case 3:
showPage("HowToPlay", true, false);
break;
};
break;
case "DifficultSelect":
if (_arg1.data["info"] != -1){
Model.getInstance().setGameDiff(_arg1.data["info"]);
showPage("GameStage", true, true);
} else {
showPage("CarSelect");
};
break;
case "LevelSelect":
if (_arg1.data["info"] != 0){
Model.getInstance().selectMap(_arg1.data["info"]);
showPage("CarSelect");
} else {
showPage("MainMenu", true, true);
};
break;
case "CarSelect":
if (_arg1.data["info"] != 0){
Model.getInstance().selectCar(_arg1.data["info"]);
showPage("DifficultSelect");
} else {
showPage(("LevelSelect" + (Model.getInstance().gameMode + 1)));
};
break;
case "HighScores":
showPage("MainMenu", true, true);
break;
case "HowToPlay":
showPage("MainMenu", true, true);
break;
default:
break;
};
}
private function onMapLoadDone(_arg1:Event):void{
allUIcontainer.onMapLoaded();
}
private function contunueGame(_arg1:Event=null):void{
var e = _arg1;
try {
component.parent.removeChild(component);
} catch(e:Error) {
};
allUIcontainer.onclickContinue();
}
private function onUpdateToolBar(_arg1:Event):void{
allUIcontainer.onUpdateToolBar();
}
private function onFinishCircle(_arg1:LetheEvent):void{
allUIcontainer.onFinishCircle(_arg1.data.time, _arg1.data.isPlayer);
}
private function update(_arg1:Event):void{
allUIcontainer.update();
}
public function onGameLoaded():void{
this.gotoAndStop(2);
this.gotoAndStop(1);
addListener();
}
private function initHighScore():void{
component = new O11111OO11();
component.O111111O(this, "king_of_drift", "king-of-drift", 0, "normal", 1, 0xEFEFEF, 0xEFEFEF, 0x515151, 0xEFEFEF);
Dispatcher.dispatcher.addEventListener(Dispatcher.LANGUAGE_CHANGED, langChangeHandler);
component.O1100000l(CountryInfo.instance.country);
component.addEventListener("000111000100", contunueGame);
component.addEventListener("00111111000", clickLogo);
component.addEventListener("00000100110", backGame);
}
private function onFinishLap(_arg1:LetheEvent):void{
allUIcontainer.onFinishLap();
}
}
}//package com.Lethe.application
Section 72
//BroadCaster (com.Lethe.controller.BroadCaster)
package com.Lethe.controller {
import flash.events.*;
public class BroadCaster extends EventDispatcher {
public static var _instance:BroadCaster;
public function BroadCaster():void{
}
public function run(_arg1:String, _arg2:Object=null):void{
this.dispatchEvent(new LetheEvent(_arg1, false, false, _arg2));
}
public static function getInstance():BroadCaster{
if (_instance == null){
_instance = new (BroadCaster);
};
return (_instance);
}
}
}//package com.Lethe.controller
Section 73
//Cookie (com.Lethe.controller.Cookie)
package com.Lethe.controller {
import flash.net.*;
import flash.events.*;
public class Cookie {
private var cookie:SharedObject;
private static var _instance:Cookie;
public function Cookie(){
cookie = SharedObject.getLocal("king_of_drift_lisong_v121f", "/");
cookie.addEventListener(NetStatusEvent.NET_STATUS, handle, false, 0, true);
cookie.addEventListener(AsyncErrorEvent.ASYNC_ERROR, handle, false, 0, true);
}
private function handle(_arg1:Event):void{
}
public function writeCookie(_arg1:String, _arg2):void{
cookie.data[_arg1] = _arg2;
cookie.flush();
}
public function readCookie(_arg1:String){
return (cookie.data[_arg1]);
}
public static function getInstance():Cookie{
if (_instance == null){
_instance = new (Cookie);
};
return (_instance);
}
}
}//package com.Lethe.controller
Section 74
//ElementManager (com.Lethe.controller.ElementManager)
package com.Lethe.controller {
public class ElementManager {
private var elements:Object;
private static var _instance:ElementManager;
public function ElementManager(){
elements = new Object();
}
public function clearRecycled():void{
}
public function recycleInstance(_arg1):void{
var _local2:Elements;
for each (_local2 in elements) {
if (_local2.recycle(_arg1)){
return;
};
};
}
public function register(_arg1:String, _arg2):void{
if (elements[_arg1] != null){
return;
};
elements[_arg1] = new Elements(_arg2);
}
public function getInstanceByName(_arg1){
return (elements[_arg1].getElement());
}
public static function getInstance():ElementManager{
if (_instance == null){
_instance = new (ElementManager);
};
return (_instance);
}
}
}//package com.Lethe.controller
class Elements {
private var instanceDef;
private var instancePrepared:Array;
private function Elements(_arg1):void{
instanceDef = _arg1;
instancePrepared = new Array();
}
public function getElement(){
if (instancePrepared.length > 0){
return (instancePrepared.pop());
};
return (new instanceDef());
}
public function recycle(_arg1):Boolean{
if ((_arg1 is instanceDef)){
instancePrepared.push(_arg1);
return (true);
};
return (false);
}
}
Section 75
//KeyListener (com.Lethe.controller.KeyListener)
package com.Lethe.controller {
import flash.events.*;
import flash.display.*;
public class KeyListener {
private var keyManager:KeyManager;
private var listenedSpr:Sprite;
public static var KeyIsDown:Object = new Object();
public function KeyListener(_arg1:DisplayObjectContainer):void{
if (_arg1 != null){
listenedSpr = new Sprite();
_arg1.addChild(listenedSpr);
listenedSpr.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
listenedSpr.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
keyManager = KeyManager.getInstance();
};
}
private function onKeyDown(_arg1:KeyboardEvent):void{
if ((((KeyIsDown[_arg1.keyCode] == null)) || ((KeyIsDown[_arg1.keyCode] == 0)))){
KeyIsDown[_arg1.keyCode] = 1;
keyManager.checkKey(_arg1.keyCode);
} else {
var _local2 = KeyIsDown;
var _local3 = _arg1.keyCode;
var _local4 = (_local2[_local3] + 1);
_local2[_local3] = _local4;
};
}
private function onKeyUp(_arg1:KeyboardEvent):void{
KeyIsDown[_arg1.keyCode] = 0;
}
}
}//package com.Lethe.controller
Section 76
//KeyManager (com.Lethe.controller.KeyManager)
package com.Lethe.controller {
import com.Lethe.ui.*;
public class KeyManager {
private var buttons:Array;
private var currentButton:LetheButton;
private var index:Object;
private var doNow:Boolean;
private var currentMouseOver:LetheButton;
private var keyMode:Boolean;// = false
private var callBacks:Object;
public var checkKey:Function;
public static const KEY_DOWN:int = 40;
public static const KEY_SPACE:int = 32;
public static const KEY_BACK:int = 8;
public static const KEY_ESC:int = 27;
public static const KEY_ENTER:int = 13;
public static const KEY_UP:int = 38;
public static const KEY_RIGHT:int = 39;
public static const KEY_LEFT:int = 37;
private static var _instance:KeyManager;
public function KeyManager():void{
keyMode = false;
super();
callBacks = new Object();
index = {a:0, b:0};
checkKey = emptyFunction;
}
private function emptyFunction(_arg1:int):void{
}
public function setPageFocus(_arg1:Array, _arg2:int, _arg3:int, _arg4:Array, _arg5:Array, _arg6:Boolean=false):void{
var _local7:int;
clearPageFocus();
if (_arg4 != null){
_local7 = 0;
while (_local7 < _arg4.length) {
callBacks[_arg4[_local7]] = _arg5[_local7];
_local7++;
};
};
buttons = _arg1;
if (_arg2 >= 0){
index["a"] = _arg2;
index["b"] = _arg3;
doNow = _arg6;
currentButton = buttons[_arg2][_arg3];
focusAtButton(buttons[_arg2][_arg3], _arg2, _arg3);
};
checkKey = checkAction;
}
public function onMouseDown(_arg1:LetheButton):void{
var _local2:int;
var _local3:int;
if (((doNow) || ((currentButton == null)))){
return;
};
_local2 = 0;
while (_local2 < buttons.length) {
_local3 = 0;
while (_local3 < buttons[_local2].length) {
if (buttons[_local2][_local3] == _arg1){
currentButton = _arg1;
index["a"] = _local2;
index["b"] = _local3;
return;
};
_local3++;
};
_local2++;
};
}
public function checkAction(_arg1:int):void{
var _local2:Array;
var _local3:int;
if (callBacks[_arg1] != null){
var _local4 = callBacks;
_local4[_arg1]();
return;
};
if (currentButton == null){
return;
};
if (!keyMode){
if (doNow){
enterKeyMode();
return;
};
keyMode = true;
if (currentMouseOver != null){
currentMouseOver.clearOverToogle();
};
};
_local3 = 1;
switch (_arg1){
case KEY_UP:
while ((index["a"] - _local3) >= 0) {
_local2 = buttons[(index["a"] - _local3)];
if (_local2[index["b"]] != null){
focusAtButton(_local2[index["b"]], (index["a"] - _local3), index["b"]);
break;
} else {
_local3++;
};
};
break;
case KEY_DOWN:
while ((index["a"] + _local3) < buttons.length) {
_local2 = buttons[(index["a"] + _local3)];
if (_local2[index["b"]] != null){
focusAtButton(_local2[index["b"]], (index["a"] + _local3), index["b"]);
break;
} else {
_local3++;
};
};
break;
case KEY_LEFT:
while ((index["b"] - _local3) >= 0) {
if (buttons[index["a"]][(index["b"] - _local3)] != null){
focusAtButton(buttons[index["a"]][(index["b"] - _local3)], index["a"], (index["b"] - _local3));
break;
} else {
_local3++;
};
};
break;
case KEY_RIGHT:
while ((index["b"] + _local3) < buttons[0].length) {
if (buttons[index["a"]][(index["b"] + _local3)] != null){
focusAtButton(buttons[index["a"]][(index["b"] + _local3)], index["a"], (index["b"] + _local3));
break;
} else {
_local3++;
};
};
break;
case KEY_SPACE:
currentButton.simuateMouseDown();
break;
case KEY_ENTER:
currentButton.simuateMouseDown();
break;
default:
break;
};
}
public function enterKeyMode():void{
keyMode = true;
if (((!((currentMouseOver == null))) && (!((currentMouseOver == currentButton))))){
currentMouseOver.clearOverToogle();
};
focusAtButton(currentButton, index["a"], index["b"]);
}
public function onMouseOver(_arg1:LetheButton):void{
if (currentButton == null){
return;
};
currentMouseOver = _arg1;
keyMode = false;
if (currentButton != _arg1){
currentButton.clearOverToogle();
};
}
public function clearPageFocus():void{
if (currentButton != null){
currentButton.releaseToogle();
currentButton = null;
};
currentMouseOver = null;
index = new Object();
buttons = null;
callBacks = new Object();
checkKey = emptyFunction;
keyMode = false;
}
public function focusAtButton(_arg1:LetheButton, _arg2:int, _arg3:int):void{
if (!doNow){
currentButton.releaseToogle();
_arg1.simuateMouseDown();
_arg1.setToogle();
};
if (!keyMode){
return;
};
currentButton.clearOverToogle();
_arg1.overToogle();
index["a"] = _arg2;
index["b"] = _arg3;
currentButton = _arg1;
}
public static function getInstance():KeyManager{
if (_instance == null){
_instance = new (KeyManager);
};
return (_instance);
}
}
}//package com.Lethe.controller
Section 77
//LetheEvent (com.Lethe.controller.LetheEvent)
package com.Lethe.controller {
import flash.events.*;
public class LetheEvent extends Event {
public var data:Object;
public function LetheEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Object=null):void{
data = _arg4;
super(_arg1, _arg2, _arg3);
}
}
}//package com.Lethe.controller
Section 78
//LetheMap (com.Lethe.controller.LetheMap)
package com.Lethe.controller {
import flash.net.*;
import flash.display.*;
public class LetheMap {
public function LetheMap():void{
}
public static function gc():void{
try {
new LocalConnection().connect("fuyark");
new LocalConnection().connect("fuyark");
} catch(e:Error) {
};
}
public static function removeTarget(_arg1):void{
var _target = _arg1;
if ((_target is MovieClip)){
while (_target.numChildren != 0) {
removeTarget(_target.getChildAt(0));
};
try {
_target.parent.removeChild(_target);
} catch(e:Error) {
};
} else {
try {
_target.parent.removeChild(_target);
} catch(e:Error) {
};
};
}
public static function dispose(_arg1:Bitmap):void{
_arg1.bitmapData.dispose();
}
}
}//package com.Lethe.controller
Section 79
//Car (com.Lethe.core.Car)
package com.Lethe.core {
import flash.display.*;
import com.Lethe.controller.*;
import com.Lethe.vo.*;
import com.Lethe.enginee.*;
import com.Lethe.sound.*;
import flash.geom.*;
public class Car extends MovieClip {
private var sndManager:SoundManager;
private var xoff:Number;
private var wheelPrint:WheelPrint;
private var mapScale:Number;
public var f:MovieClip;
public var b:MovieClip;
private var printManager:ElementManager;
private var currentPoint3:Point;
private var track1:MovieClip;
private var shadow:MovieClip;
private var currentPoint4:Point;
private var currentPoint2:Point;
private var icon:MovieClip;
private var _trackContainer:MovieClip;
private var world:LetheWorld;
public var w1:MovieClip;
public var w4:MovieClip;
private var nFrame:int;
private var currentPoint1:Point;
public var data:LetheCar;
public var w2:MovieClip;
private var prevPoint2:Point;
private var prevPoint1:Point;
private var prevPoint3:Point;
public var w3:MovieClip;
private var prevPoint4:Point;
private var yoff:Number;
public function Car():void{
sndManager = SoundManager.getInstance();
}
public function updateView(_arg1:Boolean, _arg2:Array):void{
data.update(_arg1, _arg2);
this.setPosition(_arg1);
}
public function setData(_arg1:DisplayObjectContainer, _arg2:LetheCar, _arg3:LetheWorld):void{
world = _arg3;
printManager = ElementManager.getInstance();
_arg1.addChild(this);
this.x = _arg2.x;
this.y = _arg2.y;
data = _arg2;
}
public function setTrackContainer(_arg1:MovieClip, _arg2:MovieClip, _arg3:MovieClip, _arg4:Number, _arg5:Number, _arg6:Number):void{
xoff = _arg5;
yoff = _arg6;
mapScale = _arg4;
icon = _arg3;
_trackContainer = _arg1;
shadow = _arg2;
}
public function onlyUpdate(_arg1:Boolean, _arg2:Array):void{
this.setPosition(_arg1);
if (_arg1){
data.playFuckSound();
};
}
private function setPosition(_arg1:Boolean):void{
this.x = data.x;
this.y = data.y;
icon.x = (xoff + (data.x * mapScale));
icon.y = (yoff + (data.y * mapScale));
this.rotation = (shadow.rotation = ((data.rotation * 180) / Math.PI));
shadow.x = (data.x + 3);
shadow.y = (data.y + 3);
nFrame = Math.round((9 - ((data.towardSpeed / data.maxSpeed) * 10)));
if (nFrame <= 0){
nFrame = 1;
} else {
if (nFrame > 17){
nFrame = 17;
};
};
this.gotoAndStop(nFrame);
if (!_arg1){
return;
};
if (data.blink == 0){
this.alpha = 1;
} else {
if (data.blink > 0){
this.alpha = (((((data.blink / 5) >> 0) % 2) * 0.3) + 0.4);
};
};
currentPoint1 = _trackContainer.globalToLocal(localToGlobal(new Point(w1.x, w1.y)));
currentPoint2 = _trackContainer.globalToLocal(localToGlobal(new Point(w2.x, w2.y)));
currentPoint3 = _trackContainer.globalToLocal(localToGlobal(new Point(w3.x, w3.y)));
currentPoint4 = _trackContainer.globalToLocal(localToGlobal(new Point(w4.x, w4.y)));
if (((!((data.towardSpeed == 0))) && (!((prevPoint1 == null))))){
wheelPrint = printManager.getInstanceByName("wheelPrint");
wheelPrint.setStyle(prevPoint1, currentPoint1, data.towardSpeed);
_trackContainer.addChild(wheelPrint);
wheelPrint = printManager.getInstanceByName("wheelPrint");
wheelPrint.setStyle(prevPoint2, currentPoint2, data.towardSpeed);
_trackContainer.addChild(wheelPrint);
wheelPrint = printManager.getInstanceByName("wheelPrint");
wheelPrint.setStyle(prevPoint3, currentPoint3, data.towardSpeed);
_trackContainer.addChild(wheelPrint);
wheelPrint = printManager.getInstanceByName("wheelPrint");
wheelPrint.setStyle(prevPoint4, currentPoint4, data.towardSpeed);
_trackContainer.addChild(wheelPrint);
sndManager.changeSkateSound(Math.abs((data.towardSpeed / 12)));
};
prevPoint1 = currentPoint1;
prevPoint2 = currentPoint2;
prevPoint3 = currentPoint3;
prevPoint4 = currentPoint4;
}
public function stopEffectSound():void{
data.stopEffectSound();
}
}
}//package com.Lethe.core
Section 80
//GameStage (com.Lethe.core.GameStage)
package com.Lethe.core {
import flash.events.*;
import flash.display.*;
import com.Lethe.controller.*;
import com.Lethe.ui.*;
import com.Lethe.vo.*;
import com.Lethe.enginee.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
import flash.utils.*;
import com.Lethe.Effect.*;
public class GameStage extends UI {
private var tempShadow:MovieClip;
private var currentItem:WorldItem;
private var totalStep:int;// = 0
private var activeObses:Array;
private var bgBitData:BitmapData;
private var decounter:DeCounter;
private var worldData:WorldItem;
private var effect_raceOver:CircleNotice;
public var lockedCar:LetheCar;
private var allCars:Array;
private var tempMc:MovieClip;
public var carDatas:Array;
private var m_nearBgContainer:MovieClip;
private var centerY:Number;// = 0
private var centerX:Number;// = 0
private var tmpUpdate:Function;
public var update:Function;
private var currentUpdateCar:Car;
private var m_wheelTrackContainer:MovieClip;
private var m_bgContainer:MovieClip;
private var bgBmp:Bitmap;
private var model:Model;
private var paused:Boolean;// = false
private var playerCar:Car;
private var bgBlock:MovieClip;
private var m_mapLoading:MapLoading;
private var toolBar:ToolBar;
private var m_shadowContainer:MovieClip;
private var bgBmps:Array;
private var cCollideCar:LetheCar;
private var bgDef;
private var world:LetheWorld;
private var currentCar:int;// = 0
private var m_carContainer:MovieClip;
private var stepCount:Number;// = 0
private var pausePage:PausePage;
private var cCollidedCar:LetheCar;
private var carCount:int;
private var nx:Number;
private var ny:Number;
private var car:Car;
private var miniSetting:WorldItem;
var drawMc:MovieClip;
public function GameStage(_arg1:DisplayObjectContainer):void{
centerX = 0;
centerY = 0;
paused = false;
stepCount = 0;
totalStep = 0;
currentCar = 0;
super(_arg1);
model = Model.getInstance();
this.createContainers();
update = initMap;
}
private function changeCar():void{
currentCar = ((currentCar + 1) % carCount);
lockedCar = carDatas[currentCar];
}
private function resetCar():void{
lockedCar.resetCar();
}
private function fuckGame():void{
}
private function onRaceOverEffectDone(_arg1:Event):void{
getResults();
effect_raceOver.removeEventListener("start", onRaceOverEffectDone);
effect_raceOver = null;
quitGame();
}
private function createContainers():void{
ElementManager.getInstance().register("wheelPrint", WheelPrint);
bgBmps = new Array();
m_bgContainer = new MovieClip();
m_carContainer = new MovieClip();
m_nearBgContainer = new MovieClip();
m_wheelTrackContainer = new MovieClip();
m_shadowContainer = new MovieClip();
m_mapLoading = new MapLoading();
addChild(m_bgContainer);
addChild(m_wheelTrackContainer);
addChild(m_shadowContainer);
addChild(m_carContainer);
addChild(m_nearBgContainer);
addChild(m_mapLoading);
worldData = model.getWorldMap();
totalStep = ((worldData.bgs.length * 2) + 1);
world = new LetheWorld(worldData);
drawMc = new MovieClip();
}
private function initMap():void{
var _local1:*;
if ((totalStep - 1) == stepCount){
tempMc.removeChild(bgBlock);
tempMc = null;
LetheMap.removeTarget(bgBlock);
bgBlock = null;
currentItem = null;
LetheMap.gc();
createCars();
update = new Function();
m_bgContainer.addChild(drawMc);
} else {
if ((stepCount % 2) == 0){
currentItem = (worldData.bgs[(stepCount / 2)] as WorldItem);
if (bgBlock == null){
tempMc = new MovieClip();
bgDef = getDefinitionByName(currentItem.ref);
bgBlock = (new bgDef() as MovieClip);
bgDef = null;
tempMc.addChild(bgBlock);
return;
};
_local1 = getDefinitionByName(currentItem.ref);
if (!(bgBlock is _local1)){
tempMc.removeChild(bgBlock);
LetheMap.removeTarget(bgBlock);
bgBlock = null;
tempMc = null;
LetheMap.gc();
return;
};
bgBlock.x = (-(Number(currentItem.extra[2])) - currentItem.sx);
bgBlock.y = (-(Number(currentItem.extra[0])) - currentItem.sy);
bgBitData = new BitmapData(((currentItem.ex + Math.abs(Number(currentItem.extra[2]))) + Math.abs(Number(currentItem.extra[3]))), ((currentItem.ey + Math.abs(Number(currentItem.extra[0]))) + Math.abs(Number(currentItem.extra[1]))), true, 0);
bgBitData.draw(tempMc, null, null, null, null, true);
bgBmp = new Bitmap(bgBitData, "auto", true);
bgBmp.x = (currentItem.sx + Number(currentItem.extra[2]));
bgBmp.y = (currentItem.sy + Number(currentItem.extra[0]));
bgBmps.push(bgBmp);
m_bgContainer.addChild(bgBmp);
} else {
world.stepInit(((stepCount / 2) >> 0), drawMc);
};
};
stepCount = (stepCount + 1);
}
private function createCars():void{
var _local1:int;
var _local2:MovieClip;
var _local3:*;
var _local4:Array;
var _local5:Array;
var _local6:int;
var _local7:LetheCar;
miniSetting = model.getMiniMapSetting();
toolBar.initMiniMap(miniSetting.ey);
allCars = new Array();
carDatas = new Array();
activeObses = new Array();
world.registCars(carDatas);
playerCar = createCar(model.currentCar, true);
lockedCar = playerCar.data;
lockedCar.setStartPoint(worldData.cars[0].sx, worldData.cars[0].sy, worldData.cars[0].ex, world, true);
allCars.push(playerCar);
carDatas.push(model.currentCar);
model.currentCar.updateWorld(false);
carCount = 4;
_local1 = 1;
while (_local1 < carCount) {
_local7 = model.getComputerCar();
while ((((_local7 == lockedCar)) || ((carDatas.indexOf(_local7) >= 0)))) {
_local7 = model.getComputerCar();
};
carDatas.push(_local7);
_local7.setStartPoint(worldData.cars[_local1].sx, worldData.cars[_local1].sy, worldData.cars[_local1].ex, world, false, (_local1 == 2));
if (model.gameMode == 0){
allCars.push(createCar(_local7));
_local7.updateWorld(false);
};
_local1++;
};
_local3 = getDefinitionByName("ActiveBlock");
for each (currentItem in worldData.obses) {
_local5 = new Array();
_local4 = new Array();
_local5.push(new LetheVector(Number(currentItem.extra[0]), Number(currentItem.extra[1])));
_local5.push(new LetheVector(Number(currentItem.extra[2]), Number(currentItem.extra[3])));
_local2 = (new (_local3) as MovieClip);
_local2.rotation = currentItem.cx;
_local2.x = currentItem.sx;
_local2.y = currentItem.sy;
m_nearBgContainer.addChild(_local2);
_local4.push(_local2);
_local2 = (new (_local3) as MovieClip);
_local2.rotation = currentItem.cy;
_local2.x = currentItem.ex;
_local2.y = currentItem.ey;
m_nearBgContainer.addChild(_local2);
_local4.push(_local2);
activeObses.push(new ActiveObstacle(_local4, _local5, currentItem.lines));
};
currentItem = null;
_local6 = 0;
while (_local6 < activeObses.length) {
activeObses[_local6].associateWithMc(activeObses[(_local6 + 1)]);
activeObses[(_local6 + 1)].associateWithMc(activeObses[_local6]);
_local6 = (_local6 + 2);
};
}
private function getNum(_arg1:Number):Number{
return ((Math.round((_arg1 * 10)) / 10));
}
private function onDecountDone(_arg1:Event):void{
var _local2:LetheCar;
decounter.removeEventListener("start", onDecountDone);
decounter = null;
SoundManager.getInstance().stopRevverSound();
if (model.gameMode == 2){
SoundManager.getInstance().playBgSound("level6");
} else {
SoundManager.getInstance().playBgSound(("level" + (model.mapId + 1)));
};
for each (_local2 in carDatas) {
_local2.getReady();
};
keyManager.setPageFocus([[]], -1, -1, [82, 80, 32], [resetCar, onPauseGame, fuckGame]);
playerCar.stopEffectSound();
if (model.gameMode == 0){
update = updateMap;
} else {
update = updateWithAi;
};
}
public function setToolBar(_arg1:ToolBar):void{
toolBar = _arg1;
}
public function onLoadProgress():void{
stepCount++;
}
private function quitGame():void{
SoundManager.getInstance().clearSounds();
onClosePage({page:"GameStage", info:-1});
}
private function updateBackGround():void{
toolBar.updateIcon();
nx = (275 - (205 * Math.cos(lockedCar.rotation)));
ny = (200 - (135 * Math.sin(lockedCar.rotation)));
centerX = (centerX + getNum(((nx - centerX) / 40)));
centerY = (centerY + getNum(((ny - centerY) / 40)));
this.x = (centerX - lockedCar.x);
this.y = (centerY - lockedCar.y);
for each (currentUpdateCar in allCars) {
currentUpdateCar.onlyUpdate((currentUpdateCar == playerCar), activeObses);
};
}
public function onResumeGame():void{
var _local1:LetheCar;
if (!paused){
return;
};
paused = false;
pausePage.remove();
pausePage = null;
update = tmpUpdate;
for each (_local1 in carDatas) {
_local1.resume();
};
}
override public function removePage():void{
var _local1:LetheCar;
var _local2:Bitmap;
super.removePage();
for each (_local1 in carDatas) {
_local1.clear();
};
for each (_local2 in bgBmps) {
LetheMap.dispose(_local2);
};
keyManager.clearPageFocus();
ElementManager.getInstance().clearRecycled();
LetheMap.removeTarget(this);
LetheMap.gc();
}
private function createCar(_arg1:LetheCar, _arg2:Boolean=false):Car{
var _local3:*;
var _local4:MovieClip;
tempShadow = new Shadow1();
tempShadow.gotoAndStop(_arg1.carSign);
m_shadowContainer.addChild(tempShadow);
_local3 = getDefinitionByName(_arg1.carSign);
car = (new (_local3) as Car);
_local4 = (new GreedCarIcon() as MovieClip);
if (_arg2){
_local4.gotoAndStop(1);
new CarNotice(this, car);
} else {
_local4.gotoAndStop(2);
};
toolBar.addIcon(_local4, _arg2);
car.setTrackContainer(m_wheelTrackContainer, tempShadow, _local4, miniSetting.ex, miniSetting.sx, miniSetting.sy);
car.setData(this, _arg1, world);
m_carContainer.addChild(car);
return (car);
}
public function onMapLoaded():void{
m_mapLoading = null;
update = updateBackGround;
nx = (275 - (205 * Math.cos(lockedCar.rotation)));
ny = (200 - (135 * Math.sin(lockedCar.rotation)));
centerX = (centerX + getNum((nx - centerX)));
centerY = (centerY + getNum((ny - centerY)));
this.x = (centerX - lockedCar.x);
this.y = (centerY - lockedCar.y);
SoundManager.getInstance().playCarSound();
SoundManager.getInstance().playItemSound("gamestart");
SoundManager.getInstance().playRevverSound();
decounter = new DeCounter(toolBar);
decounter.addEventListener("start", onDecountDone, false, 0, true);
}
public function readResults():void{
var _local1:LetheCar;
keyManager.clearPageFocus();
model.clearRaceResult();
for each (_local1 in carDatas) {
_local1.getTimeUsed();
};
effect_raceOver = new CircleNotice(4, toolBar);
effect_raceOver.addEventListener("start", onRaceOverEffectDone, false, 0, true);
}
public function updateWithAi():void{
toolBar.updateIcon();
nx = (275 - (205 * Math.cos(lockedCar.rotation)));
ny = (200 - (135 * Math.sin(lockedCar.rotation)));
centerX = (centerX + getNum(((nx - centerX) / 40)));
centerY = (centerY + getNum(((ny - centerY) / 40)));
this.x = (centerX - lockedCar.x);
this.y = (centerY - lockedCar.y);
playerCar.updateView(true, activeObses);
for each (cCollideCar in carDatas) {
if (cCollideCar != lockedCar){
cCollideCar.createScore(lockedCar.cAiposition);
};
};
}
private function getResults():void{
var _local1:LetheCar;
for each (_local1 in carDatas) {
model.addGameResult(_local1.carSign, _local1.getTimeUsed(), _local1.getTotalScore(), (_local1 == lockedCar));
};
model.checkResult();
}
public function updateMap():void{
toolBar.updateIcon();
nx = (275 - (205 * Math.cos(lockedCar.rotation)));
ny = (200 - (135 * Math.sin(lockedCar.rotation)));
centerX = (centerX + getNum(((nx - centerX) / 40)));
centerY = (centerY + getNum(((ny - centerY) / 40)));
this.x = (centerX - lockedCar.x);
this.y = (centerY - lockedCar.y);
for each (currentUpdateCar in allCars) {
currentUpdateCar.updateView((currentUpdateCar == playerCar), activeObses);
};
for each (cCollideCar in carDatas) {
for each (cCollidedCar in carDatas) {
cCollideCar.collideCar(cCollidedCar);
};
};
}
public function onPauseGame():void{
var _local1:LetheCar;
if (paused){
onResumeGame();
return;
};
paused = true;
pausePage = new PausePage(toolBar);
tmpUpdate = update;
for each (_local1 in carDatas) {
_local1.pause();
};
update = new Function();
}
}
}//package com.Lethe.core
Section 81
//ArriveNotice (com.Lethe.Effect.ArriveNotice)
package com.Lethe.Effect {
import flash.display.*;
import com.Lethe.ui.*;
public class ArriveNotice extends MovieClip {
public function ArriveNotice(_arg1:DisplayObjectContainer){
_arg1.addChild(this);
this.addFrameScript(99, removeSelft);
}
private function removeSelft():void{
if (parent){
(parent as ToolBar).removeArriveNotice();
};
}
public function remove():void{
stop();
try {
parent.removeChild(this);
} catch(e:Error) {
};
}
}
}//package com.Lethe.Effect
Section 82
//CarNotice (com.Lethe.Effect.CarNotice)
package com.Lethe.Effect {
import flash.events.*;
import flash.display.*;
import com.Lethe.core.*;
public class CarNotice extends MovieClip {
private var playCount:int;// = 0
private var car:Car;
public function CarNotice(_arg1:DisplayObjectContainer, _arg2:Car){
playCount = 0;
super();
car = _arg2;
_arg1.addChild(this);
addFrameScript((totalFrames - 1), repeat);
play();
this.addEventListener(Event.ENTER_FRAME, updatePosition, false, 0, true);
}
private function updatePosition(_arg1:Event):void{
this.x = car.x;
this.y = car.y;
}
private function repeat():void{
playCount++;
if (playCount >= 7){
stop();
this.removeEventListener(Event.ENTER_FRAME, updatePosition);
parent.removeChild(this);
} else {
gotoAndPlay(1);
};
}
}
}//package com.Lethe.Effect
Section 83
//CircleNotice (com.Lethe.Effect.CircleNotice)
package com.Lethe.Effect {
import flash.events.*;
import flash.display.*;
public class CircleNotice extends MovieClip {
public var mc1:MovieClip;
public var mc2:MovieClip;
public function CircleNotice(_arg1:int, _arg2:DisplayObjectContainer){
_arg2.addChild(this);
addFrameScript(86, onEffectOver);
switch (_arg1){
case 1:
removeMe();
break;
case 2:
mc1.gotoAndStop(1);
mc2.gotoAndStop(1);
break;
case 3:
mc1.gotoAndStop(2);
mc2.gotoAndStop(2);
break;
case 4:
mc1.gotoAndStop(3);
mc2.gotoAndStop(3);
break;
};
}
private function removeMe():void{
this.stop();
try {
this.parent.removeChild(this);
} catch(e:Error) {
};
}
private function onEffectOver():void{
this.dispatchEvent(new Event("start"));
removeMe();
}
}
}//package com.Lethe.Effect
Section 84
//DeCounter (com.Lethe.Effect.DeCounter)
package com.Lethe.Effect {
import flash.events.*;
import flash.display.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
public class DeCounter extends MovieClip {
public var m_text:MovieClip;
public function DeCounter(_arg1:DisplayObjectContainer){
m_text.m_mode.gotoAndStop((Model.getInstance().gameMode + 1));
m_text.m_level.gotoAndStop((Model.getInstance().mapId + 1));
addFrameScript(96, onLight1);
addFrameScript(136, onLight2);
addFrameScript(175, startGame);
addFrameScript(235, removeMe);
_arg1.addChild(this);
}
private function removeMe():void{
this.stop();
try {
this.parent.removeChild(this);
} catch(e:Error) {
};
}
private function startGame():void{
SoundManager.getInstance().playItemSound("light3");
this.dispatchEvent(new Event("start"));
}
private function onLight1():void{
SoundManager.getInstance().playItemSound("light2");
}
private function onLight2():void{
SoundManager.getInstance().playItemSound("light1");
}
}
}//package com.Lethe.Effect
Section 85
//LoseScore (com.Lethe.Effect.LoseScore)
package com.Lethe.Effect {
import flash.display.*;
public class LoseScore extends MovieClip {
public var m_score:MovieClip;
public function LoseScore(_arg1:DisplayObjectContainer, _arg2:int){
_arg1.addChild(this);
m_score["txt"].text = ("-" + String(_arg2));
addFrameScript(30, remove);
}
private function remove():void{
stop();
try {
parent.removeChild(this);
} catch(e:Error) {
};
}
}
}//package com.Lethe.Effect
Section 86
//ReverseNotice (com.Lethe.Effect.ReverseNotice)
package com.Lethe.Effect {
import flash.display.*;
public class ReverseNotice extends MovieClip {
public function ReverseNotice(_arg1:DisplayObjectContainer){
_arg1.addChild(this);
addFrameScript(88, backTo1);
addFrameScript(104, remove);
}
public function removeMe():void{
gotoAndPlay(90);
}
private function remove():void{
stop();
try {
parent.removeChild(this);
} catch(e:Error) {
};
}
private function backTo1():void{
gotoAndPlay(1);
}
}
}//package com.Lethe.Effect
Section 87
//LetheBeisaier (com.Lethe.enginee.LetheBeisaier)
package com.Lethe.enginee {
import com.Lethe.vo.*;
public class LetheBeisaier extends Shape {
private var angles:Object;
private var angleCount:int;// = 1
private var p2y:Number;
private var distance:Number;
private var wallHeight:Number;// = 40
private var angle:Number;
private var tNum:Number;
private var p3x:Number;
private var p3y:Number;
private var p1x:Number;
private var p1y:Number;
private var p2x:Number;
private var p0x:Number;
private var p0y:Number;
public function LetheBeisaier(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:int=0):void{
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:LetheVector;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
wallHeight = 40;
angleCount = 1;
super();
if (_arg7 == 0){
angleCount = 1;
} else {
angleCount = -1;
};
p1x = _arg1;
p1y = _arg2;
p2x = _arg3;
p2y = _arg4;
p3x = _arg5;
p3y = _arg6;
p0x = ((p2x + p3x) - p1x);
p0y = ((p2y + p3y) - p1y);
angles = new Object();
_local8 = 0;
_local13 = 7200;
_local15 = 0;
while (_local15 <= 4000) {
_local8 = (_local15 / 4000);
_local11 = (((((1 - _local8) * (1 - _local8)) * p2x) + (((2 * _local8) * (1 - _local8)) * p1x)) + ((_local8 * _local8) * p3x));
_local12 = (((((1 - _local8) * (1 - _local8)) * p2y) + (((2 * _local8) * (1 - _local8)) * p1y)) + ((_local8 * _local8) * p3y));
_local16 = getAngle(Math.atan2((_local12 - p0y), (_local11 - p0x)));
if (_local15 > 0){
if (_local13 != 7200){
_local17 = _local16;
if (_local13 > _local16){
_local17 = (_local16 + 3600);
};
_local14 = new LetheVector(_local11, _local12, Math.atan2((angleCount * (_local12 - _local10)), (angleCount * (_local11 - _local9))), Numbers.getDistance(p0x, p0y, _local11, _local12));
_local18 = 0.5;
while (_local18 < (_local17 - _local13)) {
angles[getTrue((_local13 + _local18))] = new LetheVector((angles[_local13].x + (((_local14.x - angles[_local13].x) * _local18) / (_local17 - _local13))), (angles[_local13].y + (((_local14.y - angles[_local13].y) * _local18) / (_local17 - _local13))), _local14.targetRotation, _local14.targetDistance);
_local18 = (_local18 + 0.5);
};
};
angles[_local16] = _local14;
};
_local13 = _local16;
_local9 = _local11;
_local10 = _local12;
_local15++;
};
}
private function getTrue(_arg1:Number):Number{
tNum = _arg1;
if (tNum >= 3600){
tNum = (tNum - 3600);
};
return (tNum);
}
private function getAngle(_arg1:Number):Number{
tNum = (((((_arg1 * 1800) / Math.PI) * 2) >> 0) / 2);
while (tNum < 0) {
tNum = (tNum + 3600);
};
while (tNum >= 3600) {
tNum = (tNum - 3600);
};
return (tNum);
}
private function checkPosition(_arg1:Number, _arg2:Number):LetheVector{
angle = getAngle(Math.atan2((_arg2 - p0y), (_arg1 - p0x)));
if (angles[angle] != null){
distance = Numbers.getDistance(_arg1, _arg2, p0x, p0y);
if (angleCount > 0){
if ((((distance > angles[angle].targetDistance)) && ((distance < (angles[angle].targetDistance + wallHeight))))){
return (angles[angle]);
};
} else {
if ((((distance < angles[angle].targetDistance)) && ((distance > (angles[angle].targetDistance - wallHeight))))){
return (angles[angle]);
};
};
};
return (null);
}
override public function checkPoint(_arg1:Number, _arg2:Number):LetheVector{
return (checkPosition(_arg1, _arg2));
}
}
}//package com.Lethe.enginee
Section 88
//LetheBlock (com.Lethe.enginee.LetheBlock)
package com.Lethe.enginee {
import flash.display.*;
import com.Lethe.vo.*;
public class LetheBlock {
private const lineHeight:Number = 50;
public var items:Array;
private var drawMc:MovieClip;
private var angle:Number;
public function LetheBlock(_arg1:WorldItem, _arg2:MovieClip){
drawMc = _arg2;
items = new Array();
addLine(_arg1.lines);
addCircle(_arg1.circles);
addArc(_arg1.arcs);
}
public function addCircle(_arg1:Array):void{
var _local2:WorldItem;
for each (_local2 in _arg1) {
items.push(new LetheBeisaier(_local2.cx, _local2.cy, _local2.sx, _local2.sy, _local2.ex, _local2.ey, 1));
};
}
public function addLine(_arg1:Array):void{
var _local2:WorldItem;
for each (_local2 in _arg1) {
angle = Math.atan2((_local2.ey - _local2.sy), (_local2.ex - _local2.sx));
items.push(new LetheRect(_local2.sx, _local2.sy, _local2.ex, _local2.ey, (_local2.ex - (lineHeight * Math.sin(angle))), (_local2.ey + (lineHeight * Math.cos(angle))), (_local2.sx - (lineHeight * Math.sin(angle))), (_local2.sy + (lineHeight * Math.cos(angle)))));
};
}
public function addArc(_arg1:Array):void{
var _local2:WorldItem;
for each (_local2 in _arg1) {
items.push(new LetheBeisaier(_local2.cx, _local2.cy, _local2.sx, _local2.sy, _local2.ex, _local2.ey));
};
}
}
}//package com.Lethe.enginee
Section 89
//LetheCar (com.Lethe.enginee.LetheCar)
package com.Lethe.enginee {
import com.Lethe.controller.*;
import com.Lethe.vo.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
import flash.utils.*;
public class LetheCar {
private const KEY_LEFT:int = 37;
public const circleTarget:int = 3;
private const KEY_UP:int = 38;
private const KEY_DOWN:int = 40;
private const KEY_SPACE:int = 90;
private const maxDriftCoefficient:Number = 2.5;
private const KEY_RIGHT:int = 39;
private var sndManager:SoundManager;
public var yBorder:Number;
private var speedLength:Number;
private var speedDAngle:Number;
private var carDir:Number;
public var cAiposition:int;// = 1
private var carHitResult:LetheVector;
private var aaspeed:Number;
public var timeUsed:int;
private var sinWheelDir:Number;
private var frictionCount:Number;
private var startY:Number;
private var frontAngle:Number;
private var playSound:Function;
private var failed:Boolean;// = false
public var cAiPassed:int;// = 0
public var driftRotation:Number;// = 0
private var dritEndCount:int;
public var bPoint:LetheVector;
private var startTime:int;
private var sx:Number;
private var aSpeed:Number;
private var sinA:Number;
private var sy:Number;
private var wheelDistance:Number;
public var finished:Boolean;// = false
private var initMaxSpeed:Number;
public var driftingState:Boolean;// = false
public var y:Number;// = 0
public var dritBounds;
private var resultsLength:Number;
public var x:Number;// = 0
private var wheelBackSpeed:Number;
private var slowDownCount:Number;
private var wheelOffSpeed:Number;
private var carHitted:Boolean;// = false
private var sinDir:Number;
private var rollFriction:Number;
private var frictionX:Number;
private var frictionY:Number;
private var rollFrictionX:Number;
private var rollFrictionY:Number;
public var speedOnShow:Number;
private var AiRandomCount:int;
private var cCheckActiveObses:ActiveObstacle;
private var wheelRollSpeed:Number;
public var isPlayer:Boolean;
public var thisDistance:Number;
public var thisdeDistance:Number;
private var maxWheelAngle:Number;
public var xBorder:Number;
private var _offDistance:Number;
public var fPoint:LetheVector;
private var dAngle:Number;
private var speedAngle:Number;
public var getScore:Boolean;// = false
private var tmpLength:Number;
public var speedX:Number;
public var speedY:Number;
private var xl:Number;
private var driftEndSpeed:Number;
public var _drifting:Boolean;// = false
private var pauseStartTime:int;
private var friction:Number;
private var tCount:int;
private var initAaspeed:Number;
private var hitAngle:Number;
private var checkCarReset:Function;
private var hitting:Boolean;// = false
public var towardSpeed:Number;
public var circleDrived:int;// = 0
private var yl:Number;
private var pausedTime:int;
private var sDAngle:Number;
private var height:Number;
private var hPoint1:LetheVector;
private var hPoint2:LetheVector;
private var hPoint3:LetheVector;
private var hPoint4:LetheVector;
private var aiScoreFuckScore:Number;
private var wheelDir:Number;
private var finalResult:LetheVector;
public var cDriftScore;
private var targetSpeedAngle:Number;
public var maxSpeed:Number;
private var prevDistance:Number;// = 0
public var handles:Array;
private var pAiCount:int;// = 0
public var blink:int;
public var circleFinished:int;// = 0
private var pervTime:int;
public var wrongCount:int;// = 0
private var hitCount:int;// = 0
public var rotation:Number;// = 0
private var thisFrontAngle:Number;
private var AiRandomDecount:int;// = 0
private var cosDir:Number;
private var driftStartSpeed:Number;
public var cSpeedAngle:Number;
private var hitResult:LetheVector;
private var aiRandomOffDis:Number;
private var world:LetheWorld;
private var initASpeed:Number;
private var hitWheel:LetheVector;
private var cosA:Number;
private var speedOffSet:Number;// = 0
public var dirOff:Number;// = 0
private var aiAngle:Number;
private var cosHitAngle:Number;
private var cmode2Fail:Number;
public var deTImeUsed:int;
private var cos_distance:Number;
public var totalScore;
public var carSign:String;
private var result1:LetheVector;
private var result2:LetheVector;
private var result3:LetheVector;
private var result4:LetheVector;
private var cmode2Ai:int;
private var reversed:Boolean;// = false
private var timeScore;
private var width:Number;
private var thisaiPoints:Array;
private var driftCoefficient:Number;// = 0
private var timeScoreDecent:int;// = 100
private var aiRandOff:Number;
private var hitPosition:Number;
public var directSpeed:Number;
private var distanceAngle:Number;
private var dASpeed:Number;
private var cAiCount:int;// = 1
private var tASpeed:Number;
public var tDriftScore;
private var sinHitAngle:Number;
public function LetheCar():void{
x = 0;
y = 0;
rotation = 0;
dirOff = 0;
driftingState = false;
timeScoreDecent = 100;
_drifting = false;
driftCoefficient = 0;
getScore = false;
circleDrived = 0;
speedOffSet = 0;
driftRotation = 0;
finished = false;
failed = false;
circleFinished = 0;
cAiposition = 1;
cAiPassed = 0;
prevDistance = 0;
wrongCount = 0;
reversed = false;
AiRandomDecount = 0;
pAiCount = 0;
cAiCount = 1;
carHitted = false;
hitCount = 0;
hitting = false;
super();
handles = new Array();
sndManager = SoundManager.getInstance();
setHitPoint();
}
public function setcarInfo(_arg1:XML):void{
hitPosition = Number(_arg1["circle"]);
xBorder = Number(_arg1["xBorder"]);
yBorder = Number(_arg1["yBorder"]);
carSign = _arg1["carSign"];
wheelDistance = Number(_arg1["wheelDistance"]);
width = Number(_arg1["width"]);
height = Number(_arg1["length"]);
}
public function resetCar():void{
if (blink > 0){
return;
};
BroadCaster.getInstance().run("onShowEffect", {name:"ReverseNotice", param:0});
blink = 40;
reset(getPlayerResetPoint());
}
public function moveDown():void{
if (aSpeed < 0){
aSpeed = aaspeed;
} else {
aSpeed = (aSpeed + aaspeed);
if (aSpeed > dASpeed){
aSpeed = dASpeed;
};
};
speedX = (speedX - (aSpeed * cosDir));
speedY = (speedY - (aSpeed * sinDir));
}
public function addHandle(_arg1:XML):void{
var _local2:Object;
_local2 = new Object();
_local2.aSpeed = Number(_arg1["aSpeed"]);
_local2.aaspeed = Number(_arg1["aaspeed"]);
_local2.dAspeed = Number(_arg1["dAspeed"]);
_local2.friction = Number(_arg1["friction"]);
_local2.maxSpeed = Number(_arg1["maxSpeed"]);
_local2.rollFriction = Number(_arg1["rollFriction"]);
_local2.maxWheelAngle = LetheVector.getRadius(Number(_arg1["maxWheelAngle"]));
_local2.angleWheel = Number(_arg1["wheelAngleSpeed"]);
_local2.wheelAngleSpeed = LetheVector.getRadius(Number(_arg1["wheelAngleSpeed"]));
handles.push(_local2);
}
public function resume():void{
pausedTime = (getTimer() - pauseStartTime);
startTime = (startTime + pausedTime);
}
public function setHitPoint():void{
hPoint1 = new LetheVector();
hPoint2 = new LetheVector();
hPoint3 = new LetheVector();
hPoint4 = new LetheVector();
fPoint = new LetheVector();
bPoint = new LetheVector();
}
public function slowDown():void{
if (towardSpeed > 0){
if (towardSpeed < friction){
frictionCount = ((towardSpeed / friction) * 0.9);
} else {
frictionCount = 1;
};
frictionX = ((-(frictionCount) * friction) * Math.cos((carDir + (Math.PI / 2))));
frictionY = ((-(frictionCount) * friction) * Math.sin((carDir + (Math.PI / 2))));
} else {
if (towardSpeed < 0){
if (-(towardSpeed) < friction){
frictionCount = ((-(towardSpeed) / friction) * 0.9);
} else {
frictionCount = 1;
};
frictionX = ((frictionCount * friction) * Math.cos((carDir + (Math.PI / 2))));
frictionY = ((frictionCount * friction) * Math.sin((carDir + (Math.PI / 2))));
} else {
frictionX = 0;
frictionY = 0;
};
};
cosDir = Math.cos(carDir);
sinDir = Math.sin(carDir);
sinWheelDir = Math.sin(wheelDir);
if (directSpeed > 0){
if (directSpeed < rollFriction){
frictionCount = ((directSpeed / rollFriction) * 0.9);
} else {
frictionCount = 1;
};
rollFrictionX = ((-(frictionCount) * rollFriction) * cosDir);
rollFrictionY = ((-(frictionCount) * rollFriction) * sinDir);
} else {
if (directSpeed < 0){
if (-(directSpeed) < rollFriction){
frictionCount = ((-(directSpeed) / rollFriction) * 0.9);
} else {
frictionCount = 1;
};
rollFrictionX = ((frictionCount * rollFriction) * cosDir);
rollFrictionY = ((frictionCount * rollFriction) * sinDir);
} else {
rollFrictionX = 0;
rollFrictionY = 0;
};
};
if (!drifting){
if (directSpeed > 0){
carDir = (carDir + Math.atan2((Math.abs(directSpeed) * sinWheelDir), wheelDistance));
} else {
carDir = (carDir - Math.atan2((Math.abs(directSpeed) * sinWheelDir), wheelDistance));
};
} else {
if (directSpeed > 0){
carDir = (carDir + Math.atan2(((driftCoefficient * Math.abs(directSpeed)) * sinWheelDir), wheelDistance));
} else {
carDir = (carDir - Math.atan2(((driftCoefficient * Math.abs(directSpeed)) * sinWheelDir), wheelDistance));
};
};
speedX = (speedX + (frictionX + rollFrictionX));
speedY = (speedY + (frictionY + rollFrictionY));
speedLength = Math.sqrt(((speedX * speedX) + (speedY * speedY)));
tASpeed = (maxSpeed - speedLength);
if (tASpeed < 0){
speedOffSet = ((0.5 - Math.random()) * 0.2);
aSpeed = 0;
} else {
if (tASpeed < aSpeed){
speedOffSet = ((0.5 - Math.random()) * 0.2);
aSpeed = tASpeed;
} else {
speedOffSet = 0;
};
};
directSpeed = ((speedX * cosDir) + (speedY * sinDir));
speedOnShow = (directSpeed + speedOffSet);
towardSpeed = ((-(speedX) * sinDir) + (speedY * cosDir));
if (hitting){
if (dritBounds != 0){
getScore = false;
dritBounds = 0;
dritEndCount = 0;
driftingState = false;
cDriftScore = 0;
tDriftScore = 0;
};
} else {
if (driftingState){
if (Math.abs(towardSpeed) < driftEndSpeed){
if (dritBounds > 1){
tDriftScore = (tDriftScore + (cDriftScore + ((200 + (80 * (dritBounds - 1))) * aiScoreFuckScore)));
} else {
tDriftScore = (tDriftScore + cDriftScore);
};
cDriftScore = 0;
driftingState = false;
dritEndCount = 30;
} else {
cDriftScore = (cDriftScore + ((Math.pow(1.5, Math.abs(towardSpeed)) * aiScoreFuckScore) >> 0));
};
} else {
if (Math.abs(towardSpeed) > driftStartSpeed){
driftingState = true;
dritBounds++;
} else {
if (dritEndCount <= 0){
if (tDriftScore != 0){
getScore = true;
totalScore = (totalScore + tDriftScore);
dritBounds = 0;
tDriftScore = 0;
};
} else {
dritEndCount--;
};
};
};
};
}
private function getNearestPoint():LetheVector{
var _local1:LetheVector;
_local1 = getShadow(thisaiPoints[pAiCount].sx, thisaiPoints[pAiCount].sy, thisaiPoints[pAiCount].ex, thisaiPoints[pAiCount].ey, x, y);
if (checkIn(_local1, pAiCount)){
return (_local1);
};
_local1 = getShadow(thisaiPoints[tCount].sx, thisaiPoints[tCount].sy, thisaiPoints[tCount].ex, thisaiPoints[tCount].ey, x, y);
if (checkIn(_local1, tCount)){
return (_local1);
};
return (new LetheVector(thisaiPoints[tCount].sx, thisaiPoints[tCount].sy, Math.atan2((thisaiPoints[tCount].ey - thisaiPoints[tCount].sy), (thisaiPoints[tCount].ex - thisaiPoints[tCount].sx))));
}
public function updateWorld(_arg1:Boolean, _arg2:Array=null):void{
slowDown();
this.x = (this.x + speedX);
this.y = (this.y + speedY);
this.rotation = carDir;
cSpeedAngle = Math.atan2(speedY, speedX);
this.initPosition(x, y);
if (_arg1){
hitCount--;
blink--;
for each (cCheckActiveObses in _arg2) {
cCheckActiveObses.checkActive(x, y);
};
};
hitTest(_arg1, _arg2);
if (finalResult != null){
maxSpeed = (initMaxSpeed * 0.75);
aaspeed = (initAaspeed * 0.2);
dAngle = (carDir - finalResult.targetRotation);
speedDAngle = (cSpeedAngle - finalResult.targetDistance);
if (Math.cos(speedDAngle) > 0){
targetSpeedAngle = finalResult.targetRotation;
} else {
targetSpeedAngle = (finalResult.targetRotation - Math.PI);
};
if (Math.cos(dAngle) > 0){
speedAngle = finalResult.targetRotation;
} else {
speedAngle = (finalResult.targetRotation - Math.PI);
};
distanceAngle = getShortestDAngle(cSpeedAngle, targetSpeedAngle);
if (!hitting){
if (_arg1){
if (hitCount <= 0){
sndManager.playItemSound("hit");
hitCount = 10;
} else {
hitCount = 10;
};
};
hitting = true;
cos_distance = Math.cos(distanceAngle);
speedX = ((speedLength * cos_distance) * Math.cos(targetSpeedAngle));
speedY = ((speedLength * cos_distance) * Math.sin(targetSpeedAngle));
if ((((hitWheel == hPoint1)) || ((hitWheel == hPoint4)))){
slowDownCount = Math.pow(cos_distance, 4);
aSpeed = (aSpeed * (slowDownCount * 0.5));
speedX = (speedX * slowDownCount);
speedY = (speedY * slowDownCount);
};
};
if ((((hitWheel == hPoint2)) || ((hitWheel == hPoint3)))){
this.carDir = (this.carDir + (((getShortestDAngle(rotation, speedAngle) / 8) * speedLength) / maxSpeed));
};
finalResult = null;
} else {
maxSpeed = initMaxSpeed;
aaspeed = initAaspeed;
hitting = false;
};
}
public function moveUp():void{
if (aSpeed < 0){
aSpeed = aaspeed;
} else {
aSpeed = (aSpeed + aaspeed);
if (aSpeed > initASpeed){
aSpeed = initASpeed;
};
};
speedX = (speedX + (aSpeed * cosDir));
speedY = (speedY + (aSpeed * sinDir));
}
public function setStartPoint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:LetheWorld, _arg5:Boolean, _arg6:Boolean=false):void{
world = _arg4;
if (((_arg5) && ((_arg4.checkPoints.length > 0)))){
thisaiPoints = _arg4.checkPoints;
} else {
thisaiPoints = _arg4.aiPoints;
};
isPlayer = _arg5;
if (_arg5){
playSound = playCarSound;
} else {
playSound = empty;
};
getHandle(_arg5, _arg6);
hitting = false;
speedOnShow = 0;
speedX = 0;
speedY = 0;
cSpeedAngle = (rotation = (carDir = ((_arg3 * Math.PI) / 180)));
wheelDir = 0;
aSpeed = 0;
directSpeed = 0;
towardSpeed = 0;
maxSpeed = initMaxSpeed;
aiRandOff = 0;
AiRandomDecount = 0;
getScore = false;
dritBounds = 0;
dritEndCount = 0;
driftingState = false;
cDriftScore = 0;
tDriftScore = 0;
totalScore = 0;
timeUsed = int.MAX_VALUE;
deTImeUsed = -(timeUsed);
reversed = false;
pervTime = 0;
finished = false;
failed = false;
cAiCount = 1;
pAiCount = 0;
tCount = (thisaiPoints.length - 1);
circleDrived = 0;
wrongCount = 0;
cAiposition = 1;
circleFinished = 0;
if (_arg5){
thisdeDistance = 1;
cAiPassed = 1;
} else {
thisdeDistance = 0;
cAiPassed = 0;
};
startY = _arg2;
initPosition(_arg1, _arg2);
}
public function initPosition(_arg1:Number, _arg2:Number):void{
cosA = Math.cos(rotation);
sinA = Math.sin(rotation);
this.x = _arg1;
this.y = _arg2;
sx = ((xBorder * cosA) + x);
sy = ((xBorder * sinA) + y);
fPoint.setPosition(((hitPosition * cosA) + x), ((hitPosition * sinA) + y));
bPoint.setPosition(((-(hitPosition) * cosA) + x), ((-(hitPosition) * sinA) + y));
hPoint1.setPosition(((-(yBorder) * sinA) + sx), ((yBorder * cosA) + sy));
hPoint4.setPosition(((-((width + yBorder)) * sinA) + sx), (((width + yBorder) * cosA) + sy));
sx = (((height + xBorder) * cosA) + x);
sy = (((height + xBorder) * sinA) + y);
hPoint2.setPosition(((-(yBorder) * sinA) + sx), ((yBorder * cosA) + sy));
hPoint3.setPosition(((-((width + yBorder)) * sinA) + sx), (((width + yBorder) * cosA) + sy));
}
public function clear():void{
world = null;
cCheckActiveObses = null;
carHitResult = null;
hitResult = null;
hitWheel = null;
finalResult = null;
}
private function checkIn(_arg1:LetheVector, _arg2:int):Boolean{
var _local3:Array;
_local3 = [_arg1.x, thisaiPoints[_arg2].sx, thisaiPoints[_arg2].ex];
_local3.sort(Array.NUMERIC);
if (_local3[1] != _arg1.x){
return (false);
};
_local3 = [_arg1.y, thisaiPoints[_arg2].sy, thisaiPoints[_arg2].ey];
_local3.sort(Array.NUMERIC);
if (_local3[1] != _arg1.y){
return (false);
};
return (true);
}
public function loseScore(_arg1:int):void{
totalScore = (totalScore - _arg1);
if (totalScore < 0){
totalScore = 0;
};
}
private function resetAiCar():void{
reset();
}
public function stopEffectSound():void{
speedOnShow = 0;
SoundManager.getInstance().stopEffectSound();
}
public function collideCar(_arg1:LetheCar):void{
if (_arg1 == this){
return;
};
if ((((Math.abs((_arg1.x - x)) > 200)) || ((Math.abs((_arg1.y - y)) > 200)))){
return;
};
carHitted = false;
checkPoint(_arg1.fPoint, fPoint);
checkPoint(_arg1.fPoint, bPoint);
checkPoint(_arg1.bPoint, fPoint);
checkPoint(_arg1.bPoint, bPoint);
if (carHitted){
initPositionByCircle();
_arg1.initPositionByCircle();
};
}
private function getPlayerResetPoint():LetheVector{
var _local1:LetheVector;
_local1 = getShadow(thisaiPoints[pAiCount].sx, thisaiPoints[pAiCount].sy, thisaiPoints[pAiCount].ex, thisaiPoints[pAiCount].ey, x, y);
if (checkIn(_local1, pAiCount)){
if ((((((Model.getInstance().gameMode == 0)) && ((Model.getInstance().mapId == 2)))) && ((tCount == 41)))){
return (new LetheVector(thisaiPoints[pAiCount].sx, thisaiPoints[pAiCount].sy, Math.atan2((thisaiPoints[pAiCount].ey - thisaiPoints[pAiCount].sy), (thisaiPoints[pAiCount].ex - thisaiPoints[pAiCount].sx))));
};
return (_local1);
};
_local1 = getShadow(thisaiPoints[tCount].sx, thisaiPoints[tCount].sy, thisaiPoints[tCount].ex, thisaiPoints[tCount].ey, x, y);
if (checkIn(_local1, tCount)){
return (_local1);
};
return (new LetheVector(thisaiPoints[tCount].sx, thisaiPoints[tCount].sy, Math.atan2((thisaiPoints[tCount].ey - thisaiPoints[tCount].sy), (thisaiPoints[tCount].ex - thisaiPoints[tCount].sx))));
}
public function update(_arg1:Boolean, _arg2:Array=null):void{
playSound();
driftRotation = Math.atan2(towardSpeed, directSpeed);
if (((finished) || (failed))){
} else {
if (_arg1){
if ((((Math.abs((thisaiPoints[cAiCount].sx - x)) < 250)) && ((Math.abs((thisaiPoints[cAiCount].sy - y)) < 250)))){
tCount = pAiCount;
pAiCount = cAiCount;
cAiCount = ((cAiCount + 1) % thisaiPoints.length);
cAiposition++;
cAiPassed = 0;
if (cAiCount == 0){
circleDrived++;
};
};
thisDistance = Math.ceil((Math.pow((x - thisaiPoints[cAiCount].sx), 2) + Math.pow((y - thisaiPoints[cAiCount].sy), 2)));
thisdeDistance = -(thisDistance);
cAiPassed++;
checkCarReset();
if (KeyListener.KeyIsDown[KEY_UP]){
moveUp();
};
if (KeyListener.KeyIsDown[KEY_DOWN]){
moveDown();
};
if (KeyListener.KeyIsDown[KEY_RIGHT]){
moveRight();
};
if (KeyListener.KeyIsDown[KEY_LEFT]){
moveLeft();
};
if (((!(KeyListener.KeyIsDown[KEY_LEFT])) && (!(KeyListener.KeyIsDown[KEY_RIGHT])))){
moveStraight();
};
if (KeyListener.KeyIsDown[KEY_SPACE]){
drifting = true;
} else {
drifting = false;
};
if ((((circleDrived > circleFinished)) && ((y < startY)))){
circleFinished++;
if (circleFinished >= circleTarget){
finished = true;
timeUsed = (getTimer() - startTime);
deTImeUsed = -(timeUsed);
sndManager.stopEffectSound();
BroadCaster.getInstance().run("onPlayerFinished");
} else {
BroadCaster.getInstance().run("onFinishCircle", {time:(getTimer() - pervTime), isPlayer:true});
pervTime = getTimer();
};
};
} else {
if ((((Math.abs((thisaiPoints[cAiCount].sx - x)) < (250 + aiRandOff))) && ((Math.abs((thisaiPoints[cAiCount].sy - y)) < (250 + aiRandOff))))){
if (AiRandomDecount == 0){
AiRandomDecount = ((Math.random() * AiRandomCount) >> 0);
aiRandOff = (((Math.random() - 0.5) * aiRandomOffDis) >> 0);
tCount = pAiCount;
pAiCount = cAiCount;
cAiCount = ((cAiCount + 1) % thisaiPoints.length);
cAiposition++;
cAiPassed = 0;
if (cAiCount == 0){
circleDrived++;
};
} else {
AiRandomDecount--;
};
};
thisDistance = Math.ceil((Math.pow((x - thisaiPoints[cAiCount].sx), 2) + Math.pow((y - thisaiPoints[cAiCount].sy), 2)));
thisdeDistance = -(thisDistance);
cAiPassed++;
if (thisDistance < prevDistance){
wrongCount = 0;
} else {
if (directSpeed >= 1){
wrongCount++;
};
if (wrongCount == 30){
resetAiCar();
};
};
if ((((circleDrived > circleFinished)) && ((y < startY)))){
circleFinished++;
if (circleFinished >= circleTarget){
finished = true;
timeUsed = (getTimer() - startTime);
deTImeUsed = -(timeUsed);
BroadCaster.getInstance().run("onFinishLap");
} else {
BroadCaster.getInstance().run("onFinishCircle", {time:(getTimer() - pervTime), isPlayer:false});
pervTime = getTimer();
};
};
aiAngle = getShortestDAngle(cSpeedAngle, Math.atan2((thisaiPoints[pAiCount].ey - y), (thisaiPoints[pAiCount].ex - x)));
moveUp();
if ((((aiAngle > 0)) && ((aiAngle > (-(driftRotation) * 1.6))))){
moveRight();
} else {
if ((((aiAngle < 0)) && ((aiAngle < (-(driftRotation) * 1.6))))){
moveLeft();
} else {
moveStraight();
};
};
};
};
prevDistance = thisDistance;
updateWorld(_arg1, _arg2);
}
public function moveRight():void{
if (wheelDir < 0){
wheelDir = (wheelDir + wheelBackSpeed);
} else {
if (wheelDir < maxWheelAngle){
wheelDir = (wheelDir + wheelRollSpeed);
};
};
if (wheelDir > maxWheelAngle){
wheelDir = maxWheelAngle;
};
}
public function hitTest(_arg1:Boolean, _arg2:Array):void{
resultsLength = 0;
hitResult = null;
result1 = world.hitTest(hPoint1, _arg2, _arg1);
result2 = world.hitTest(hPoint2, _arg2, _arg1);
result3 = world.hitTest(hPoint3, _arg2, _arg1);
result4 = world.hitTest(hPoint4, _arg2, _arg1);
getHitResult(result1, hPoint1);
getHitResult(result2, hPoint2);
getHitResult(result3, hPoint3);
getHitResult(result4, hPoint4);
if (hitResult != null){
finalResult = hitResult;
x = (x + ((hitResult.x - hitWheel.x) * 1.05));
y = (y + ((hitResult.y - hitWheel.y) * 1.05));
initPosition(x, y);
};
}
private function getHitResult(_arg1:LetheVector, _arg2:LetheVector):void{
tmpLength = getLength(_arg1, _arg2);
if (tmpLength > resultsLength){
resultsLength = tmpLength;
hitResult = _arg1;
hitWheel = _arg2;
};
}
public function autoReset():void{
if (cAiPassed > 300){
BroadCaster.getInstance().run("onShowEffect", {name:"ReverseNotice", param:0});
wrongCount = 0;
cAiPassed = 0;
resetCar();
return;
};
if ((((Math.abs((thisaiPoints[cAiCount].sx - x)) < 300)) && ((Math.abs((thisaiPoints[cAiCount].sy - y)) < 300)))){
if (wrongCount > 0){
BroadCaster.getInstance().run("onShowEffect", {name:"ReverseNotice", param:0});
};
wrongCount = 0;
} else {
if ((((Math.abs((thisaiPoints[cAiCount].sx - x)) > 360)) && ((Math.abs((thisaiPoints[cAiCount].sy - y)) > 360)))){
wrongCount++;
if (wrongCount == 1){
BroadCaster.getInstance().run("onShowEffect", {name:"ReverseNotice", param:1});
} else {
if (wrongCount >= 60){
resetCar();
};
};
};
};
}
public function playCarSound():void{
if (KeyListener.KeyIsDown[KEY_UP]){
if (hitting){
sndManager.playMotoSound2c();
} else {
sndManager.playMotoSound(directSpeed);
};
} else {
sndManager.playMotoSlowSound(directSpeed);
};
}
public function createScore(_arg1:int):void{
if (finished){
return;
};
if (_arg1 != cAiposition){
cAiposition = _arg1;
cDriftScore = (((((Math.random() * cmode2Ai) >> 0) + cmode2Ai) * aiScoreFuckScore) >> 0);
tDriftScore = (tDriftScore + cDriftScore);
};
if (Math.random() > 0.7){
if (Math.random() > cmode2Fail){
totalScore = (totalScore + tDriftScore);
} else {
tDriftScore = 0;
};
};
}
public function playFuckSound():void{
if (KeyListener.KeyIsDown[KEY_UP]){
speedOnShow = (speedOnShow + initASpeed);
};
if (KeyListener.KeyIsDown[KEY_DOWN]){
speedOnShow = (speedOnShow - initASpeed);
};
if (speedOnShow > 0){
speedOnShow = (speedOnShow - rollFriction);
if (speedOnShow <= 0){
speedOnShow = 0;
};
} else {
if (speedOnShow < 0){
speedOnShow = (speedOnShow + rollFriction);
if (speedOnShow >= 0){
speedOnShow = 0;
};
};
};
if (speedOnShow > initMaxSpeed){
speedOnShow = (initMaxSpeed + ((0.5 - Math.random()) * 0.2));
} else {
if (speedOnShow < -(initMaxSpeed)){
speedOnShow = (-(initMaxSpeed) + ((0.5 - Math.random()) * 0.2));
};
};
}
private function getHandle(_arg1:Boolean, _arg2:Boolean):void{
var _local3:Object;
_local3 = (_arg1) ? handles[Model.getInstance().gameMode] : handles[2];
initASpeed = _local3.aSpeed;
aaspeed = _local3.aaspeed;
initAaspeed = aaspeed;
dASpeed = _local3.dAspeed;
friction = _local3.friction;
rollFriction = _local3.rollFriction;
maxWheelAngle = _local3.maxWheelAngle;
wheelRollSpeed = _local3.wheelAngleSpeed;
wheelOffSpeed = (wheelRollSpeed * 1.5);
wheelBackSpeed = (wheelRollSpeed * 2);
initMaxSpeed = _local3.maxSpeed;
if (!_arg1){
aiScoreFuckScore = world.aiSettings[Model.getInstance().gameDiff].ey;
initMaxSpeed = (initMaxSpeed + world.aiSettings[Model.getInstance().gameDiff].ex);
} else {
aiScoreFuckScore = ((Model.getInstance().gameDiff * 0.5) + 1);
};
maxSpeed = initMaxSpeed;
driftEndSpeed = (initMaxSpeed * 0.2);
driftStartSpeed = (initMaxSpeed * 0.3);
AiRandomCount = world.aiSettings[Model.getInstance().gameDiff].sx;
aiRandomOffDis = world.aiSettings[Model.getInstance().gameDiff].sy;
cmode2Ai = world.aiSettings[Model.getInstance().gameDiff].sy;
cmode2Fail = world.aiSettings[Model.getInstance().gameDiff].sx;
if (_arg2){
AiRandomCount = (AiRandomCount + 9);
aiRandomOffDis = (aiRandomOffDis + 8);
cmode2Fail = (cmode2Fail + 0.1);
if (cmode2Fail >= 1){
cmode2Fail = 0.9;
};
};
if (Model.getInstance().gameMode == 0){
checkCarReset = resetByHand;
} else {
checkCarReset = autoReset;
};
}
public function set drifting(_arg1:Boolean):void{
_drifting = _arg1;
if (_arg1){
driftCoefficient = (driftCoefficient + ((maxDriftCoefficient - driftCoefficient) / 20));
} else {
driftCoefficient = 0;
};
}
private function empty():void{
}
private function reset(_arg1:LetheVector=null):void{
if (_arg1 == null){
_arg1 = getNearestPoint();
};
wheelDir = 0;
aSpeed = 0;
getScore = false;
dritBounds = 0;
dritEndCount = 0;
driftingState = false;
cDriftScore = 0;
tDriftScore = 0;
wrongCount = 0;
this.x = _arg1.x;
this.y = _arg1.y;
cSpeedAngle = (rotation = (carDir = _arg1.targetRotation));
speedX = 0;
speedY = 0;
towardSpeed = 0;
directSpeed = 0;
}
public function moveLeft():void{
if (wheelDir > 0){
wheelDir = (wheelDir - wheelBackSpeed);
} else {
if (wheelDir > -(maxWheelAngle)){
wheelDir = (wheelDir - wheelRollSpeed);
};
};
if (wheelDir < -(maxWheelAngle)){
wheelDir = -(maxWheelAngle);
};
}
public function initPositionByCircle():void{
rotation = Math.atan2((fPoint.y - bPoint.y), (fPoint.x - bPoint.x));
cosA = Math.cos(rotation);
sinA = Math.sin(rotation);
this.y = ((fPoint.y + bPoint.y) / 2);
this.x = ((fPoint.x + bPoint.x) / 2);
sx = ((xBorder * cosA) + x);
sy = ((xBorder * sinA) + y);
hPoint1.setPosition(((-(yBorder) * sinA) + sx), ((yBorder * cosA) + sy));
hPoint4.setPosition(((-((width + yBorder)) * sinA) + sx), (((width + yBorder) * cosA) + sy));
sx = (((height + xBorder) * cosA) + x);
sy = (((height + xBorder) * sinA) + y);
hPoint2.setPosition(((-(yBorder) * sinA) + sx), ((yBorder * cosA) + sy));
hPoint3.setPosition(((-((width + yBorder)) * sinA) + sx), (((width + yBorder) * cosA) + sy));
}
public function resetByHand():void{
if (thisDistance < prevDistance){
if (wrongCount >= 70){
BroadCaster.getInstance().run("onShowEffect", {name:"ReverseNotice", param:0});
};
wrongCount = 0;
} else {
if (directSpeed > 1){
wrongCount++;
};
if (wrongCount == 70){
BroadCaster.getInstance().run("onShowEffect", {name:"ReverseNotice", param:1});
};
};
}
public function getTimeUsed():int{
var _local1:int;
if (((finished) || (failed))){
return (timeUsed);
};
failed = true;
timeUsed = (getTimer() - startTime);
deTImeUsed = -(timeUsed);
_local1 = ((timeUsed + (((((thisaiPoints.length * 3) - cAiposition) / (thisaiPoints.length * 3)) * timeUsed) >> 0)) + 500);
timeScore = (((_local1 - timeUsed) / 20) >> 0);
timeUsed = _local1;
return (_local1);
}
public function getTotalScore():Number{
var _local1:*;
if (finished){
return (totalScore);
};
_local1 = (totalScore - timeScore);
if (totalScore < 0){
return (0);
};
return (_local1);
}
public function get drifting():Boolean{
return (_drifting);
}
public function fuck():void{
getScore = true;
totalScore = (totalScore + 50000);
dritBounds = 0;
tDriftScore = 0;
circleFinished++;
if (circleFinished >= circleTarget){
finished = true;
timeUsed = (getTimer() - startTime);
deTImeUsed = -(timeUsed);
sndManager.stopEffectSound();
BroadCaster.getInstance().run("onPlayerFinished");
} else {
BroadCaster.getInstance().run("onFinishCircle", {time:(getTimer() - pervTime), isPlayer:true});
pervTime = getTimer();
};
}
private function checkPoint(_arg1:LetheVector, _arg2:LetheVector):void{
if (Math.abs((_arg1.x - _arg2.x)) > 36){
return;
};
if (Math.abs((_arg1.y - _arg2.y)) > 36){
return;
};
_offDistance = (Math.pow((_arg1.x - _arg2.x), 2) + Math.pow((_arg1.y - _arg2.y), 2));
if (_offDistance < (36 * 36)){
carHitted = true;
_offDistance = ((36 - Math.sqrt(_offDistance)) * 1.1);
hitAngle = Math.atan2((_arg1.y - _arg2.y), (_arg1.x - _arg2.x));
cosHitAngle = (_offDistance * Math.cos(hitAngle));
sinHitAngle = (_offDistance * Math.sin(hitAngle));
_arg2.setPosition((_arg2.x - cosHitAngle), (_arg2.y - sinHitAngle));
_arg1.setPosition((_arg1.x + cosHitAngle), (_arg1.y + sinHitAngle));
};
}
private function getLength(_arg1:LetheVector, _arg2:LetheVector):Number{
if (_arg1 != null){
xl = (_arg1.x - _arg2.x);
yl = (_arg1.y - _arg2.y);
return (((xl * xl) + (yl * yl)));
};
return (0);
}
public function moveStraight():void{
if (wheelDir > 0){
wheelDir = (wheelDir - wheelOffSpeed);
if (wheelDir < 0){
wheelDir = 0;
};
} else {
if (wheelDir < 0){
wheelDir = (wheelDir + wheelOffSpeed);
if (wheelDir > 0){
wheelDir = 0;
};
};
};
}
public function getReady():void{
startTime = getTimer();
pervTime = startTime;
}
private function getShortestDAngle(_arg1:Number, _arg2:Number):Number{
sDAngle = (_arg2 - _arg1);
while (sDAngle > Math.PI) {
sDAngle = (sDAngle - Numbers.DPI);
};
while (sDAngle < -(Math.PI)) {
sDAngle = (sDAngle + Numbers.DPI);
};
return (sDAngle);
}
public function pause():void{
pauseStartTime = getTimer();
}
public static function getShadow(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):LetheVector{
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
_local7 = Math.atan2((_arg6 - _arg2), (_arg5 - _arg1));
_local8 = Math.atan2((_arg4 - _arg2), (_arg3 - _arg1));
_local9 = (_local7 - _local8);
_local10 = ((Math.sqrt((Math.pow((_arg6 - _arg2), 2) + Math.pow((_arg5 - _arg1), 2))) * Math.cos(_local9)) - 100);
return (new LetheVector((_arg1 + (_local10 * Math.cos(_local8))), (_arg2 + (_local10 * Math.sin(_local8))), _local8));
}
}
}//package com.Lethe.enginee
Section 90
//LetheRect (com.Lethe.enginee.LetheRect)
package com.Lethe.enginee {
public class LetheRect extends Shape {
private var maxY:Number;
private var minX:Number;
private var minY:Number;
private var angle1:Number;
public var point1:LetheVector;
public var point2:LetheVector;
public var point3:LetheVector;
public var point4:LetheVector;
public var bounds:Object;
private var maxX:Number;
private var angle2:Number;
public function LetheRect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:int=0):void{
maxX = (Math.max(_arg1, _arg3, _arg5, _arg7) + 50);
minX = (Math.min(_arg1, _arg3, _arg5, _arg7) - 50);
maxY = (Math.max(_arg2, _arg4, _arg6, _arg8) + 50);
minY = (Math.min(_arg2, _arg4, _arg6, _arg8) - 50);
point1 = new LetheVector(_arg1, _arg2);
point2 = new LetheVector(_arg3, _arg4);
point3 = new LetheVector(_arg5, _arg6);
point4 = new LetheVector(_arg7, _arg8);
type = _arg9;
rotation = Math.atan2((point2.y - point1.y), (point2.x - point1.x));
}
public function checkUnder(_arg1:LetheVector, _arg2:LetheVector, _arg3:Number, _arg4:Number):Boolean{
angle1 = Math.atan2((_arg2.y - _arg1.y), (_arg2.x - _arg1.x));
angle2 = Math.atan2((_arg2.y - _arg4), (_arg2.x - _arg3));
return ((Math.sin((angle1 - angle2)) > 0));
}
override public function checkInside(_arg1:Number, _arg2:Number):Boolean{
if ((((((((_arg1 > maxX)) || ((_arg1 < minX)))) || ((_arg2 > maxY)))) || ((_arg2 < minY)))){
return (false);
};
if (((((((checkUnder(point1, point2, _arg1, _arg2)) && (checkUnder(point2, point3, _arg1, _arg2)))) && (checkUnder(point3, point4, _arg1, _arg2)))) && (checkUnder(point4, point1, _arg1, _arg2)))){
return (true);
};
return (false);
}
override public function checkPoint(_arg1:Number, _arg2:Number):LetheVector{
if ((((((((_arg1 > maxX)) || ((_arg1 < minX)))) || ((_arg2 > maxY)))) || ((_arg2 < minY)))){
return (null);
};
if (((((((checkUnder(point1, point2, _arg1, _arg2)) && (checkUnder(point2, point3, _arg1, _arg2)))) && (checkUnder(point3, point4, _arg1, _arg2)))) && (checkUnder(point4, point1, _arg1, _arg2)))){
returnedResult = LetheVector.getShadow(point1, point2, _arg1, _arg2);
returnedResult.targetRotation = this.rotation;
return (returnedResult);
};
return (null);
}
}
}//package com.Lethe.enginee
Section 91
//LetheVector (com.Lethe.enginee.LetheVector)
package com.Lethe.enginee {
public class LetheVector {
public var targetDistance:Number;
public var targetRotation:Number;
public var target;
public var x:Number;
public var y:Number;
private static var length:Number;
private static var langle:Number;
private static var thisAngle:Number;
private static var tAngle:Number;
public function LetheVector(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
x = getNum(_arg1);
y = getNum(_arg2);
targetRotation = _arg3;
targetDistance = _arg4;
}
public function setPosition(_arg1:Number, _arg2:Number):void{
x = _arg1;
y = _arg2;
}
public static function getNearest(_arg1:LetheVector, _arg2:LetheVector, _arg3:Number, _arg4:Number):Number{
thisAngle = Math.atan2((_arg4 - _arg1.y), (_arg3 - _arg1.x));
langle = Math.atan2((_arg2.y - _arg1.y), (_arg2.x - _arg1.x));
tAngle = (thisAngle - langle);
return (Math.abs((Math.sqrt((Math.pow((_arg4 - _arg1.y), 2) + Math.pow((_arg3 - _arg1.x), 2))) * Math.sin(tAngle))));
}
public static function getRadius(_arg1:Number):Number{
return (((_arg1 * Math.PI) / 180));
}
public static function getNum(_arg1:Number):Number{
return (_arg1);
}
public static function getShadow(_arg1:LetheVector, _arg2:LetheVector, _arg3:Number, _arg4:Number):LetheVector{
thisAngle = Math.atan2((_arg4 - _arg1.y), (_arg3 - _arg1.x));
langle = Math.atan2((_arg2.y - _arg1.y), (_arg2.x - _arg1.x));
tAngle = (thisAngle - langle);
length = (Math.sqrt((Math.pow((_arg4 - _arg1.y), 2) + Math.pow((_arg3 - _arg1.x), 2))) * Math.cos(tAngle));
return (new LetheVector((_arg1.x + (length * Math.cos(langle))), (_arg1.y + (length * Math.sin(langle)))));
}
}
}//package com.Lethe.enginee
Section 92
//LetheWorld (com.Lethe.enginee.LetheWorld)
package com.Lethe.enginee {
import flash.display.*;
import com.Lethe.vo.*;
public class LetheWorld {
private var checkResult:LetheVector;
public var blocks:Array;
public var minY:Number;
public var checkPoints:Array;
public var minX:Number;
private var bl:LetheBlock;
private var cCheckActiveObs:ActiveObstacle;
private var worldData:WorldItem;
private var allCars:Array;
private var carHitResults:Array;
public var aiPoints:Array;
private var cCheckCar:LetheCar;
public var aiSettings:Array;
public var maxX:Number;
public var maxY:Number;
private var tmpLines:Array;
private var tShape:Shape;
public function LetheWorld(_arg1:WorldItem):void{
minX = _arg1.sx;
minY = _arg1.sy;
maxX = _arg1.ex;
maxY = _arg1.ey;
worldData = _arg1;
aiPoints = worldData.aiPoints;
aiSettings = worldData.aiSettings;
checkPoints = worldData.checkPoints;
blocks = new Array();
}
public function registCars(_arg1:Array):void{
allCars = _arg1;
}
public function hitTest(_arg1:LetheVector, _arg2:Array, _arg3:Boolean):LetheVector{
if (_arg3){
for each (cCheckActiveObs in _arg2) {
tmpLines = cCheckActiveObs.getExtraLine();
for each (tShape in tmpLines) {
checkResult = tShape.checkPoint(_arg1.x, _arg1.y);
if (checkResult != null){
return (checkResult);
};
};
};
};
for each (bl in blocks) {
for each (tShape in bl.items) {
checkResult = tShape.checkPoint(_arg1.x, _arg1.y);
if (checkResult != null){
return (checkResult);
};
};
};
return (null);
}
public function stepInit(_arg1:int, _arg2:MovieClip):void{
blocks.push(new LetheBlock(worldData.blocks[_arg1], _arg2));
}
}
}//package com.Lethe.enginee
Section 93
//Shape (com.Lethe.enginee.Shape)
package com.Lethe.enginee {
public class Shape {
public var tx:Number;// = 0
public var ty:Number;// = 0
protected var returnedResult:LetheVector;
public var by:Number;// = 0
public var x:Number;// = 0
public var type:int;
public var rotation:Number;
public function Shape(){
x = 0;
tx = 0;
by = 0;
ty = 0;
super();
}
public function checkPoint(_arg1:Number, _arg2:Number):LetheVector{
return (null);
}
public function checkInside(_arg1:Number, _arg2:Number):Boolean{
return (false);
}
}
}//package com.Lethe.enginee
Section 94
//Model (com.Lethe.model.Model)
package com.Lethe.model {
import com.Lethe.controller.*;
import com.Lethe.vo.*;
import com.Lethe.enginee.*;
import com.Lethe.application.*;
public class Model {
public var newOpen:int;
public var playerName:String;
public var newCar:Boolean;// = false
private var carId:int;
public var gameDiff:int;
private var miniSettings:Array;
public var currentCar:LetheCar;
public var mapId:int;
public var cars:Array;
private var openedAmount:int;
public var trained:Boolean;// = false
public var gameMode:int;
public var money;// = 0
public var mapOpen:Array;
private var carMoney:Array;
public var records:Array;
public var worldData:Array;
public var playerResult:GameResult;
public var xmlData:XML;
public var raceResults:Array;
public var habits:Array;
private static var _instance:Model;
public static var mapReady:Boolean = false;
public function Model(){
money = 0;
trained = false;
carMoney = [0, 2500, 8000, 15000, 30000, 60000, "LiSong"];
newCar = false;
super();
mapOpen = new Array();
money = 0;
cars = new Array();
worldData = new Array();
miniSettings = new Array();
readMapOpen();
readMoney();
readName();
readRecord();
readHabits();
}
public function getComputerCar():LetheCar{
var _local1:LetheCar;
_local1 = this.cars[((cars.length * Math.random()) >> 0)];
while ((((_local1 == currentCar)) || ((_local1.carSign == "Car4")))) {
_local1 = this.cars[((cars.length * Math.random()) >> 0)];
};
return (_local1);
}
public function getMiniMapSetting():WorldItem{
if (gameMode == 0){
return (miniSettings[mapId]);
};
return (miniSettings[(mapId + 6)]);
}
private function readRecord():void{
records = Cookie.getInstance().readCookie("records");
if (records == null){
records = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1]];
};
}
public function writeRecord():void{
var _local1:int;
var _local2:int;
var _local3:Boolean;
if (mapId >= 12){
return;
};
_local1 = playerResult.time;
_local2 = playerResult.stylePoint;
_local3 = false;
if ((((records[(mapId + (gameMode * 6))][0] > _local1)) || ((records[(mapId + (gameMode * 6))][0] < 0)))){
records[(mapId + (gameMode * 6))][0] = _local1;
_local3 = true;
};
if (records[(mapId + (gameMode * 6))][1] < _local2){
records[(mapId + (gameMode * 6))][1] = _local2;
_local3 = true;
};
if (_local3){
Cookie.getInstance().writeCookie("records", records);
};
}
public function getMoney():Array{
return (carMoney);
}
public function setGameDiff(_arg1:int):void{
gameDiff = _arg1;
}
public function writMapOpen():Array{
var _local1:Array;
_local1 = new Array();
if (mapId < 12){
if (mapOpen[(mapId + (gameMode * 6))][(gameDiff + 1)] != 1){
mapOpen[(mapId + (gameMode * 6))][(gameDiff + 1)] = 1;
if (gameDiff < 2){
_local1.push(mapId);
} else {
_local1.push(-1);
};
} else {
_local1.push(-1);
};
} else {
_local1.push(-1);
};
if (mapId <= 4){
if (mapOpen[((mapId + (gameMode * 6)) + 1)][0] != 1){
openedAmount++;
if (openedAmount == 7){
Main._tracker.trackEvent("king of drift", "50% completed", "per session", 0);
};
mapOpen[((mapId + (gameMode * 6)) + 1)][0] = 1;
newOpen = ((mapId + (gameMode * 6)) + 1);
_local1.push((mapId + 1));
if ((((mapOpen[5][0] == 1)) && ((mapOpen[11][0] == 1)))){
Main._tracker.trackEvent("king of drift", "cleaver car unlocked", "per session", 0);
};
} else {
newOpen = -1;
_local1.push(-1);
};
} else {
newOpen = -1;
_local1.push(-1);
};
Cookie.getInstance().writeCookie("mapInfo", [mapOpen, newOpen]);
return (_local1);
}
public function addMoney(_arg1:int):int{
var _local2:int;
var _local3:int;
if (_arg1 != 0){
_local2 = getOrder(carMoney, money);
money = (money + _arg1);
_local3 = getOrder(carMoney, money);
if (_local2 != _local3){
newCar = true;
Cookie.getInstance().writeCookie("money", [money, newCar]);
return (_local2);
};
newCar = false;
Cookie.getInstance().writeCookie("money", [money, newCar]);
};
return (-1);
}
public function setGameMode(_arg1:int):void{
gameMode = _arg1;
}
private function getOrder(_arg1:Array, _arg2:Number):int{
var _local3:int;
_local3 = 0;
while ((((_arg1[_local3] <= _arg2)) && (!((_arg1[_local3] == null))))) {
_local3++;
};
return (_local3);
}
public function readHabits():void{
habits = Cookie.getInstance().readCookie("useage");
if (habits == null){
habits = [0, 0, 0, 0];
};
}
public function selectCar(_arg1:int):void{
carId = (_arg1 - 1);
currentCar = this.cars[(_arg1 - 1)];
}
private function readName():void{
var _local1:*;
_local1 = Cookie.getInstance().readCookie("pname");
if (_local1 == null){
playerName = "Player";
} else {
playerName = _local1;
};
}
public function checkResult():void{
if (gameMode == 0){
raceResults.sortOn("time", Array.NUMERIC);
} else {
raceResults.sortOn("dePoint", Array.NUMERIC);
};
}
public function selectMap(_arg1:int):void{
mapId = (_arg1 - 1);
}
public function writeTrained():void{
if (trained){
return;
};
trained = true;
Cookie.getInstance().writeCookie("trained", true);
}
private function readMoney():void{
var _local1:*;
_local1 = Cookie.getInstance().readCookie("money");
if (_local1 == null){
money = 0;
newCar = false;
} else {
money = _local1[0];
newCar = _local1[1];
};
}
private function readMapOpen():void{
var _local1:*;
var _local2:int;
_local1 = Cookie.getInstance().readCookie("mapInfo");
trained = Cookie.getInstance().readCookie("trained");
if (_local1 == null){
newOpen = -1;
mapOpen = [[1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]];
} else {
mapOpen = _local1[0];
newOpen = _local1[1];
};
_local2 = 0;
while (_local2 < mapOpen.length) {
if (mapOpen[_local2][0] == 1){
openedAmount++;
};
_local2++;
};
}
public function addGameResult(_arg1:String, _arg2:int, _arg3:int, _arg4:Boolean=false):void{
if (_arg4){
playerResult = new GameResult(_arg1, _arg2, _arg3, _arg4);
raceResults.push(playerResult);
} else {
raceResults.push(new GameResult(_arg1, _arg2, _arg3, _arg4));
};
}
public function writeUseage():void{
if (mapId < 12){
habits[gameMode] = mapId;
};
habits[2] = carId;
habits[3] = gameDiff;
newCar = false;
newOpen = -1;
Cookie.getInstance().writeCookie("useage", habits);
}
public function changeName(_arg1:String):void{
playerName = _arg1;
Cookie.getInstance().writeCookie("pname", playerName);
}
public function getWorldMap():WorldItem{
if (gameMode == 0){
return (worldData[mapId]);
};
return (worldData[(mapId + 6)]);
}
public function getSettingData():void{
var _local1:int;
var _local2:XML;
var _local3:LetheCar;
var _local4:WorldItem;
var _local5:XML;
var _local6:XML;
xmlData = <data>
<carSettings>
<car1>
<info>
<xBorder>-29</xBorder>
<yBorder>-10</yBorder>
<width>20</width>
<length>58</length>
<wheelDistance>50</wheelDistance>
<carSign>Car7</carSign>
<circle>16</circle>
</info>
<!--handle 1 for race mode handle 2 for trick attack and handle 3 for computer-->
<handle1>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>12.5</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle1>
<handle2>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.3</friction>
<maxSpeed>12.5</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle2>
<handle3>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle3>
</car1>
<car2>
<info>
<xBorder>-29</xBorder>
<yBorder>-10</yBorder>
<width>20</width>
<length>58</length>
<wheelDistance>50</wheelDistance>
<carSign>Car6</carSign>
<circle>16</circle>
</info>
<!--handle 1 for race mode handle 2 for trick attack and handle 3 for computer-->
<handle1>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.3</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle1>
<handle2>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.3</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle2>
<handle3>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle3>
</car2>
<car3>
<info>
<xBorder>-29</xBorder>
<yBorder>-10</yBorder>
<width>20</width>
<length>58</length>
<wheelDistance>50</wheelDistance>
<carSign>Car5</carSign>
<circle>16</circle>
</info>
<!--handle 1 for race mode handle 2 for trick attack and handle 3 for computer-->
<handle1>
<aSpeed>0.45</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.45</friction>
<maxSpeed>13.5</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1.15</wheelAngleSpeed>
</handle1>
<handle2>
<aSpeed>0.45</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.35</friction>
<maxSpeed>13.5</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1.15</wheelAngleSpeed>
</handle2>
<handle3>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle3>
</car3>
<car4>
<info>
<xBorder>-29</xBorder>
<yBorder>-10</yBorder>
<width>20</width>
<length>58</length>
<wheelDistance>50</wheelDistance>
<carSign>Car3</carSign>
<circle>16</circle>
</info>
<!--handle 1 for race mode handle 2 for trick attack and handle 3 for computer-->
<handle1>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>14</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1.2</wheelAngleSpeed>
</handle1>
<handle2>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.3</friction>
<maxSpeed>14</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1.2</wheelAngleSpeed>
</handle2>
<handle3>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle3>
</car4>
<car5>
<info>
<xBorder>-29</xBorder>
<yBorder>-10</yBorder>
<width>20</width>
<length>58</length>
<wheelDistance>50</wheelDistance>
<carSign>Car2</carSign>
<circle>16</circle>
</info>
<!--handle 1 for race mode handle 2 for trick attack and handle 3 for computer-->
<handle1>
<aSpeed>0.45</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.25</dAspeed>
<friction>0.33</friction>
<maxSpeed>14</maxSpeed>
<rollFriction>0.09</rollFriction>
<maxWheelAngle>50</maxWheelAngle>
<wheelAngleSpeed>1.1</wheelAngleSpeed>
</handle1>
<handle2>
<aSpeed>0.45</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.25</dAspeed>
<friction>0.28</friction>
<maxSpeed>14</maxSpeed>
<rollFriction>0.09</rollFriction>
<maxWheelAngle>50</maxWheelAngle>
<wheelAngleSpeed>1.1</wheelAngleSpeed>
</handle2>
<handle3>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle3>
</car5>
<car6>
<info>
<xBorder>-29</xBorder>
<yBorder>-10</yBorder>
<width>20</width>
<length>58</length>
<wheelDistance>50</wheelDistance>
<carSign>Car1</carSign>
<circle>16</circle>
</info>
<!--handle 1 for race mode handle 2 for trick attack and handle 3 for computer-->
<handle1>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.35</dAspeed>
<friction>0.38</friction>
<maxSpeed>14.5</maxSpeed>
<rollFriction>0.09</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1.1</wheelAngleSpeed>
</handle1>
<handle2>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.35</dAspeed>
<friction>0.3</friction>
<maxSpeed>14.5</maxSpeed>
<rollFriction>0.09</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1.1</wheelAngleSpeed>
</handle2>
<handle3>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle3>
</car6>
<car7>
<info>
<xBorder>-29</xBorder>
<yBorder>-10</yBorder>
<width>20</width>
<length>58</length>
<wheelDistance>50</wheelDistance>
<carSign>Car4</carSign>
<circle>16</circle>
</info>
<!--handle 1 for race mode handle 2 for trick attack and handle 3 for computer-->
<handle1>
<aSpeed>0.55</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.35</dAspeed>
<friction>0.42</friction>
<maxSpeed>15</maxSpeed>
<rollFriction>0.09</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1.3</wheelAngleSpeed>
</handle1>
<handle2>
<aSpeed>0.55</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.35</dAspeed>
<friction>0.32</friction>
<maxSpeed>15</maxSpeed>
<rollFriction>0.09</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1.3</wheelAngleSpeed>
</handle2>
<handle3>
<aSpeed>0.4</aSpeed>
<aaspeed>0.1</aaspeed>
<dAspeed>0.2</dAspeed>
<friction>0.4</friction>
<maxSpeed>13</maxSpeed>
<rollFriction>0.1</rollFriction>
<maxWheelAngle>45</maxWheelAngle>
<wheelAngleSpeed>1</wheelAngleSpeed>
</handle3>
</car7>
</carSettings>
<worldSettings>
<world0>
<car sx="103" sy="1375" ex="-90"/>
<car sx="154" sy="1375" ex="-90"/>
<car sx="206" sy="1375" ex="-90"/>
<car sx="257" sy="1375" ex="-90"/>
<aisettings>
<!--偏斜1,偏斜2,速度偏斜-->
<AI sx="25" sy="20" ex="-3" ey="1"/>
<AI sx="18" sy="10" ex="-2" ey="1.8"/>
<AI sx="5" sy="0" ex="-1" ey="2.6"/>
<AILine0 sx="149" sy="792" ex="130" ey="512"/>
<AILine0 sx="130" sy="512" ex="305" ey="307"/>
<AILine0 sx="305" sy="307" ex="481" ey="282"/>
<AILine0 sx="481" sy="282" ex="675" ey="431"/>
<AILine0 sx="675" sy="431" ex="723" ey="822"/>
<AILine0 sx="723" sy="822" ex="880" ey="948"/>
<AILine0 sx="880" sy="948" ex="1173" ey="951"/>
<AILine0 sx="1173" sy="951" ex="1366" ey="534"/>
<AILine0 sx="1366" sy="534" ex="1548" ey="254"/>
<AILine0 sx="1548" sy="254" ex="1892" ey="251"/>
<AILine0 sx="1892" sy="251" ex="2008" ey="330"/>
<AILine0 sx="2008" sy="330" ex="2261" ey="571"/>
<AILine0 sx="2261" sy="571" ex="2485" ey="553"/>
<AILine0 sx="2485" sy="553" ex="2820" ey="413"/>
<AILine0 sx="2820" sy="413" ex="3024" ey="568"/>
<AILine0 sx="3024" sy="568" ex="3014" ey="1135"/>
<AILine0 sx="3014" sy="1135" ex="2805" ey="1353"/>
<AILine0 sx="2805" sy="1353" ex="2256" ey="1387"/>
<AILine0 sx="2256" sy="1387" ex="1629" ey="1571"/>
<AILine0 sx="1629" sy="1571" ex="866" ey="1800"/>
<AILine0 sx="866" sy="1800" ex="479" ey="1753"/>
<AILine0 sx="479" sy="1753" ex="226" ey="1544"/>
<AILine0 sx="226" sy="1544" ex="166" ey="1111"/>
<AILine0 sx="166" sy="1111" ex="149" ey="792"/>
</aisettings>
<block sx="0" sy="0" ex="2400" ey="2400">
<line sx="301.5" sy="1351" ex="280.5" ey="916.5"/>
<line sx="280.5" sy="916.5" ex="222.5" ey="546.5"/>
<line sx="619.5" sy="549.5" ex="609.5" ey="713"/>
<line sx="1361" sy="920" ex="1518.5" ey="492.5"/>
<line sx="1965" sy="1322.5" ex="1724" ey="1433.5"/>
<line sx="1724" sy="1433.5" ex="1357" ey="1563.5"/>
<line sx="1357" sy="1563.5" ex="990.5" ey="1663"/>
<line sx="1268.5" sy="447.5" ex="1202.5" ey="701"/>
<line sx="808" sy="704.5" ex="826.5" ey="542"/>
<line sx="27.5" sy="538.5" ex="61.5" ey="1337.5"/>
<line sx="750.5" sy="1939.5" ex="860.5" ey="1926.5"/>
<line sx="860.5" sy="1926.5" ex="966" ey="1905.5"/>
<line sx="966" sy="1905.5" ex="1177" ey="1848.5"/>
<line sx="1177" sy="1848.5" ex="1750.5" ey="1639.5"/>
<line sx="1750.5" sy="1639.5" ex="1976.5" ey="1569.5"/>
<line sx="1976.5" sy="1569.5" ex="2126.5" ey="1533.5"/>
<line sx="2126.5" sy="1533.5" ex="2263.5" ey="1512"/>
<line sx="2263.5" sy="1512" ex="2400" ey="1502"/>
<line sx="2400" sy="1255" ex="2174.5" ey="1274"/>
<line sx="2174.5" sy="1274" ex="1965" ey="1322.5"/>
<arc sx="26.5" sy="538.5" ex="423.5" ey="126.5" cx="60.5" cy="142.5"/>
<arc sx="424.5" sy="126.5" ex="826.5" ey="543.5" cx="824.5" cy="152.5"/>
<arc sx="1007.5" sy="1123" ex="609.5" ey="714.5" cx="638.5" cy="1117.5"/>
<arc sx="1361" sy="920" ex="1007.5" ey="1123" cx="1284" cy="1123"/>
<arc sx="1268.5" sy="447.5" ex="2248.5" ey="399.5" cx="1584.5" cy="-350.5"/>
<arc sx="750.5" sy="1939.5" ex="61.5" ey="1337.5" cx="44.5" cy="1895.5"/>
<arc sx="2400" sy="719.5" ex="2059.5" ey="543" cx="2224.5" cy="780.5"/>
<circle sx="222.5" sy="547.5" ex="423.5" ey="329.5" cx="221.5" cy="343.5"/>
<circle sx="423.5" sy="329.5" ex="621" ey="549.5" cx="593" cy="332.5"/>
<circle sx="1000.5" sy="920" ex="808" ey="705" cx="790.5" cy="934"/>
<circle sx="1202.5" sy="701" ex="1000.5" ey="920" cx="1150.5" cy="918"/>
<circle sx="990.5" sy="1663" ex="301.5" ey="1351" cx="346" cy="1788.5"/>
<circle sx="2400" sy="487.5" ex="2248.5" ey="399.5" cx="2336" cy="497.5"/>
<circle sx="1518.5" sy="492.5" ex="2059.5" ey="543.5" cx="1773" cy="43.5"/>
</block>
<block sx="2400" sy="0" ex="2400" ey="2400">
<line sx="0" sy="1501.5" ex="436" ey="1505.5"/>
<line sx="319" sy="1264.5" ex="108.5" ey="1256"/>
<line sx="108.5" sy="1256" ex="0" ey="1255"/>
<line sx="0" sy="718.5" ex="59" ey="699"/>
<line sx="59" sy="699" ex="160" ey="646"/>
<line sx="160" sy="646" ex="307.5" ey="538"/>
<line sx="293" sy="301" ex="210.5" ey="374.5"/>
<line sx="210.5" sy="374.5" ex="124" ey="437.5"/>
<line sx="124" sy="437.5" ex="45" ey="479"/>
<line sx="45" sy="479" ex="0" ey="487.5"/>
<arc sx="293" sy="301" ex="790" ey="837.5" cx="731.5" cy="-5"/>
<arc sx="790" sy="837.5" ex="435" ey="1505.5" cx="791.5" cy="1464"/>
<circle sx="307.5" sy="538" ex="553" ey="825.5" cx="528" cy="383.5"/>
<circle sx="553" sy="826.5" ex="319" ey="1264.5" cx="524" cy="1288.5"/>
</block>
<!--sx为地图起始坐标,ex为地图大小,extra为截图偏移量-->
<bg ref="bg_0_0_0" sx="0" sy="0" ex="2400" ey="2400" extra="-350_25_-395_0"/>
<bg ref="bg_0_0_0" sx="2400" sy="0" ex="2400" ey="2400" extra="-300_50_0_-300"/>
<mini sx="10" sy="351" ex="0.034" ey="1"/>
</world0>
<world4>
<!--car sx="200" sy="800"/>
<car sx="100" sy="200"/>
<car sx="100" sy="300"/>
<car sx="100" sy="400"/-->
<car sx="272" sy="1206" ex="-90"/>
<car sx="324" sy="1206" ex="-90"/>
<car sx="376" sy="1206" ex="-90"/>
<car sx="428" sy="1206" ex="-90"/>
<aisettings>
<AI sx="13" sy="5" ex="1.2" ey="3.5"/>
<AI sx="5" sy="0" ex="2.8" ey="7.5"/>
<AI sx="0" sy="0" ex="3.2" ey="10"/>
<AILine0 sx="342" sy="787" ex="344" ey="418"/>
<AILine0 sx="344" sy="418" ex="400" ey="269"/>
<AILine0 sx="400" sy="269" ex="531" ey="193"/>
<AILine0 sx="531" sy="193" ex="1495" ey="153"/>
<AILine0 sx="1495" sy="153" ex="1692" ey="272"/>
<AILine0 sx="1692" sy="272" ex="1704" ey="409"/>
<AILine0 sx="1704" sy="409" ex="1565" ey="684"/>
<AILine0 sx="1565" sy="684" ex="1381" ey="769"/>
<AILine0 sx="1381" sy="769" ex="1098" ey="865"/>
<AILine0 sx="1098" sy="865" ex="916" ey="976"/>
<AILine0 sx="916" sy="976" ex="838" ey="1139"/>
<AILine0 sx="838" sy="1139" ex="857" ey="1340"/>
<AILine0 sx="857" sy="1340" ex="1148" ey="1481"/>
<AILine0 sx="1148" sy="1481" ex="1320" ey="1362"/>
<AILine0 sx="1320" sy="1362" ex="1663" ey="1052"/>
<AILine0 sx="1663" sy="1052" ex="1859" ey="924"/>
<AILine0 sx="1859" sy="924" ex="1972" ey="916"/>
<AILine0 sx="1972" sy="916" ex="2218" ey="1001"/>
<AILine0 sx="2218" sy="1001" ex="2340" ey="1004"/>
<AILine0 sx="2340" sy="1004" ex="2430" ey="942"/>
<AILine0 sx="2430" sy="942" ex="2435" ey="771"/>
<AILine0 sx="2435" sy="771" ex="2552" ey="349"/>
<AILine0 sx="2552" sy="349" ex="2825" ey="334"/>
<AILine0 sx="2825" sy="334" ex="2973" ey="583"/>
<AILine0 sx="2973" sy="583" ex="3245" ey="691"/>
<AILine0 sx="3245" sy="691" ex="3377" ey="617"/>
<AILine0 sx="3377" sy="617" ex="3482" ey="525"/>
<AILine0 sx="3482" sy="525" ex="3611" ey="488"/>
<AILine0 sx="3611" sy="488" ex="3818" ey="487"/>
<AILine0 sx="3818" sy="487" ex="3973" ey="552"/>
<AILine0 sx="3973" sy="552" ex="4141" ey="747"/>
<AILine0 sx="4141" sy="747" ex="4187" ey="1021"/>
<AILine0 sx="4187" sy="1021" ex="4061" ey="1178"/>
<AILine0 sx="4061" sy="1178" ex="3838" ey="1261"/>
<AILine0 sx="3838" sy="1261" ex="3006" ey="1445"/>
<AILine0 sx="3006" sy="1445" ex="2602" ey="1534"/>
<AILine0 sx="2602" sy="1534" ex="2401" ey="1746"/>
<AILine0 sx="2401" sy="1746" ex="2478" ey="1954"/>
<AILine0 sx="2478" sy="1954" ex="2661" ey="2433"/>
<AILine0 sx="2661" sy="2433" ex="2957" ey="2494"/>
<AILine0 sx="2957" sy="2494" ex="3088" ey="2487"/>
<AILine0 sx="3088" sy="2487" ex="3521" ey="2398"/>
<AILine0 sx="3521" sy="2398" ex="3758" ey="2444"/>
<AILine0 sx="3758" sy="2444" ex="3828" ey="2648"/>
<AILine0 sx="3828" sy="2648" ex="3644" ey="2819"/>
<AILine0 sx="3644" sy="2819" ex="3502" ey="2971"/>
<AILine0 sx="3502" sy="2971" ex="3389" ey="3348"/>
<AILine0 sx="3389" sy="3348" ex="3534" ey="3583"/>
<AILine0 sx="3534" sy="3583" ex="3862" ey="3548"/>
<AILine0 sx="3862" sy="3548" ex="4042" ey="3647"/>
<AILine0 sx="4042" sy="3647" ex="3962" ey="3960"/>
<AILine0 sx="3962" sy="3960" ex="3677" ey="3965"/>
<AILine0 sx="3677" sy="3965" ex="3482" ey="3923"/>
<AILine0 sx="3482" sy="3923" ex="3276" ey="3862"/>
<AILine0 sx="3276" sy="3862" ex="3090" ey="3737"/>
<AILine0 sx="3090" sy="3737" ex="2978" ey="3546"/>
<AILine0 sx="2978" sy="3546" ex="2778" ey="3499"/>
<AILine0 sx="2778" sy="3499" ex="1734" ey="3488"/>
<AILine0 sx="1734" sy="3488" ex="1487" ey="3644"/>
<AILine0 sx="1487" sy="3644" ex="1308" ey="3831"/>
<AILine0 sx="1308" sy="3831" ex="726" ey="3820"/>
<AILine0 sx="726" sy="3820" ex="493" ey="3690"/>
<AILine0 sx="493" sy="3690" ex="614" ey="3465"/>
<AILine0 sx="614" sy="3465" ex="922" ey="3394"/>
<AILine0 sx="922" sy="3394" ex="1189" ey="3265"/>
<AILine0 sx="1189" sy="3265" ex="1200" ey="3125"/>
<AILine0 sx="1200" sy="3125" ex="998" ey="2967"/>
<AILine0 sx="998" sy="2967" ex="789" ey="3020"/>
<AILine0 sx="789" sy="3020" ex="545" ey="3015"/>
<AILine0 sx="545" sy="3015" ex="455" ey="2931"/>
<AILine0 sx="455" sy="2931" ex="557" ey="2728"/>
<AILine0 sx="557" sy="2728" ex="1007" ey="2464"/>
<AILine0 sx="1007" sy="2464" ex="1079" ey="2272"/>
<AILine0 sx="1079" sy="2272" ex="857" ey="2097"/>
<AILine0 sx="857" sy="2097" ex="614" ey="2044"/>
<AILine0 sx="614" sy="2044" ex="637" ey="1816"/>
<AILine0 sx="637" sy="1816" ex="541" ey="1567"/>
<AILine0 sx="541" sy="1567" ex="405" ey="1367"/>
<AILine0 sx="405" sy="1367" ex="357" ey="1107"/>
<AILine0 sx="357" sy="1107" ex="342" ey="787"/>
</aisettings>
<block sx="0" sy="0" ex="4800" ey="4800">
<line sx="549" sy="288" ex="1470" ey="264"/>
<circle sx="1470" sy="264" ex="1633" ey="396" cx="1611" cy="264"/>
<circle sx="1633" sy="396" ex="1533" ey="591" cx="1652" cy="551"/>
<line sx="1533" sy="591" ex="964" ey="801"/>
<arc sx="697" sy="1210" ex="964" ey="801" cx="658" cy="922"/>
<arc sx="995" sy="1610" ex="697" ey="1210" cx="764" cy="1528"/>
<arc sx="1426" sy="1482" ex="995" ey="1610" cx="1236" cy="1690"/>
<line sx="1426" sy="1482" ex="1768" ey="1130"/>
<circle sx="1768" sy="1130" ex="2055" ey="1051" cx="1894" cy="980"/>
<line sx="2055" sy="1051" ex="2206" ey="1126"/>
<arc sx="2567" sy="866" ex="2206" ey="1126" cx="2552" cy="1286"/>
<line sx="2567" sy="866" ex="2568" ey="611"/>
<circle sx="2568" sy="611" ex="2676" ey="378" cx="2554" cy="409"/>
<circle sx="2676" sy="378" ex="2892" ey="600" cx="2808" cy="343"/>
<arc sx="3418" sy="756" ex="2892" ey="600" cx="3051" cy="1124"/>
<circle sx="3418" sy="756" ex="3905" ey="620" cx="3660" cy="477"/>
<circle sx="3905" sy="620" ex="4088" ey="950" cx="4089" cy="742"/>
<circle sx="4088" sy="950" ex="3932" ey="1166" cx="4097" cy="1120"/>
<line sx="3932" sy="1166" ex="2446" ey="1477"/>
<arc sx="2294" sy="1847" ex="2446" ey="1477" cx="2128" cy="1535"/>
<line sx="2294" sy="1847" ex="2582" ey="2524"/>
<arc sx="2916" sy="2677" ex="2582" ey="2524" cx="2675" cy="2778"/>
<line sx="2916" sy="2677" ex="3514" ey="2479"/>
<circle sx="3514" sy="2479" ex="3721" ey="2551" cx="3648" cy="2430"/>
<circle sx="3721" sy="2551" ex="3643" ey="2719" cx="3793" cy="2683"/>
<arc sx="3421" sy="2960" ex="3643" ey="2718" cx="3463" cy="2775"/>
<line sx="3421" sy="2960" ex="3292" ey="3329"/>
<arc sx="3341" sy="3636" ex="3292" ey="3329" cx="3223" cy="3507"/>
<arc sx="3704" sy="3677" ex="3341" ey="3636" cx="3462" cy="3756"/>
<circle sx="3704" sy="3677" ex="3955" ey="3782" cx="3957" cy="3607"/>
<circle sx="3955" sy="3782" ex="3751" ey="3885" cx="3960" cy="3931"/>
<line sx="3751" sy="3885" ex="3336" ey="3754"/>
<circle sx="3336" sy="3754" ex="3134" ey="3586" cx="3184" cy="3717"/>
<arc sx="2819" sy="3413" ex="3134" ey="3586" cx="3039" cy="3407"/>
<line sx="2819" sy="3413" ex="1648" ey="3391"/>
<arc sx="1431" sy="3467" ex="1648" ey="3391" cx="1493" cy="3376"/>
<line sx="1431" sy="3467" ex="1305" ey="3660"/>
<circle sx="1305" sy="3660" ex="1162" ey="3748" cx="1251" cy="3754"/>
<line sx="1162" sy="3748" ex="689" ey="3732"/>
<circle sx="689" sy="3732" ex="567" ey="3609" cx="568" cy="3728"/>
<circle sx="567" sy="3609" ex="677" ey="3504" cx="560" cy="3518"/>
<line sx="677" sy="3504" ex="1208" ey="3434"/>
<arc sx="1331" sy="3294" ex="1208" ey="3434" cx="1342" cy="3411"/>
<line sx="1331" sy="3294" ex="1296" ey="2986"/>
<arc sx="1096" sy="2822" ex="1296" ey="2986" cx="1283" cy="2775"/>
<line sx="1096" sy="2822" ex="616" ey="2944"/>
<circle sx="616" sy="2944" ex="522" ey="2920" cx="546" cy="2963"/>
<circle sx="522" sy="2920" ex="542" ey="2822" cx="484" cy="2859"/>
<line sx="542" sy="2822" ex="1087" ey="2530"/>
<arc sx="1208" sy="2278" ex="1087" ey="2530" cx="1260" cy="2451"/>
<line sx="1208" sy="2278" ex="1149" ey="2111"/>
<arc sx="924" sy="1980" ex="1149" ey="2111" cx="1092" cy="1960"/>
<line sx="924" sy="1980" ex="721" ey="1979"/>
<circle sx="721" sy="1979" ex="669" ey="1904" cx="644" cy="1982"/>
<line sx="669" sy="1904" ex="707" ey="1760"/>
<arc sx="577" sy="1424" ex="707" ey="1760" cx="752" cy="1554"/>
<circle sx="577" sy="1424" ex="467" ey="1164" cx="466" cy="1354"/>
<line sx="467" sy="1164" ex="454" ey="413"/>
<circle sx="454" sy="413" ex="549" ey="288" cx="443" cy="292"/>
<line sx="1490" sy="63" ex="460" ey="100"/>
<arc sx="1490" sy="63" ex="1854" ey="385" cx="1826" cy="66"/>
<arc sx="1854" sy="385" ex="1676" ey="749" cx="1889" cy="647"/>
<line sx="1034" sy="1002" ex="1676" ey="749"/>
<circle sx="953" sy="1260" ex="1034" ey="1002" cx="880" cy="1065"/>
<circle sx="1234" sy="1334" ex="953" ey="1260" cx="1071" cy="1480"/>
<line sx="1710" sy="889" ex="1234" ey="1334"/>
<arc sx="1710" sy="889" ex="2149" ey="863" cx="1897" cy="698"/>
<circle sx="2343" sy="669" ex="2149" ey="863" cx="2383" cy="1038"/>
<arc sx="2343" sy="669" ex="2573" ey="150" cx="2303" cy="238"/>
<arc sx="2573" sy="150" ex="3085" ey="520" cx="2902" cy="65"/>
<circle sx="3294" sy="545" ex="3085" ey="520" cx="3160" cy="732"/>
<arc sx="3294" sy="545" ex="3902" ey="400" cx="3542" cy="288"/>
<arc sx="3902" sy="400" ex="4294" ey="943" cx="4259" cy="543"/>
<arc sx="4294" sy="943" ex="4000" ey="1331" cx="4317" cy="1260"/>
<line sx="2599" sy="1632" ex="4000" ey="1331"/>
<circle sx="2515" sy="1784" ex="2599" ey="1632" cx="2458" cy="1658"/>
<line sx="2774" sy="2409" ex="2515" ey="1784"/>
<circle sx="2891" sy="2453" ex="2774" ey="2409" cx="2801" cy="2483"/>
<line sx="3524" sy="2256" ex="2891" ey="2453"/>
<arc sx="3524" sy="2256" ex="3785" ey="2302" cx="3699" cy="2190"/>
<line sx="3949" sy="2545" ex="3785" ey="2302"/>
<arc sx="3949" sy="2545" ex="3816" ey="2835" cx="4087" cy="2741"/>
<circle sx="3610" sy="3050" ex="3816" ey="2835" cx="3657" cy="2889"/>
<line sx="3504" sy="3348" ex="3609" ey="3049"/>
<circle sx="3515" sy="3493" ex="3504" ey="3348" cx="3464" cy="3446"/>
<circle sx="3658" sy="3480" ex="3515" ey="3493" cx="3549" cy="3540"/>
<arc sx="3658" sy="3480" ex="4079" ey="3481" cx="3905" cy="3342"/>
<arc sx="4079" sy="3481" ex="4166" ey="3922" cx="4257" cy="3657"/>
<arc sx="4166" sy="3922" ex="3770" ey="4120" cx="4059" cy="4180"/>
<line sx="3251" sy="3970" ex="3770" ey="4120"/>
<arc sx="3251" sy="3970" ex="2977" ey="3765" cx="3029" cy="3917"/>
<circle sx="2739" sy="3613" ex="2977" ey="3765" cx="2914" cy="3608"/>
<line sx="1709" sy="3595" ex="2739" ey="3613"/>
<circle sx="1551" sy="3690" ex="1709" ey="3595" cx="1603" cy="3595"/>
<line sx="1423" sy="3874" ex="1551" ey="3690"/>
<arc sx="1423" sy="3874" ex="1243" ey="3942" cx="1371" cy="3951"/>
<line sx="717" sy="3927" ex="1243" ey="3942"/>
<arc sx="717" sy="3927" ex="344" ey="3611" cx="373" cy="3931"/>
<arc sx="344" sy="3611" ex="574" ey="3324" cx="320" cy="3354"/>
<line sx="1040" sy="3269" ex="574" ey="3324"/>
<circle sx="1109" sy="3185" ex="1040" ey="3269" cx="1120" cy="3263"/>
<line sx="1102" sy="3111" ex="1109" ey="3185"/>
<circle sx="1013" sy="3054" ex="1102" ey="3111" cx="1100" cy="3026"/>
<line sx="616" sy="3155" ex="1013" ey="3054"/>
<arc sx="616" sy="3155" ex="285" ey="2998" cx="376" cy="3211"/>
<arc sx="285" sy="2998" ex="373" ey="2669" cx="205" cy="2773"/>
<line sx="512" sy="2588" ex="373" ey="2669"/>
<line sx="911" sy="2394" ex="512" ey="2588"/>
<circle sx="983" sy="2256" ex="911" ey="2394" cx="1001" cy="2350"/>
<circle sx="854" sy="2167" ex="983" ey="2256" cx="954" cy="2154"/>
<line sx="632" sy="2174" ex="854" ey="2167"/>
<arc sx="632" sy="2174" ex="435" ey="2001" cx="395" cy="2180"/>
<line sx="477" sy="1782" ex="435" ey="2001"/>
<circle sx="363" sy="1497" ex="477" ey="1782" cx="520" cy="1592"/>
<arc sx="363" sy="1497" ex="239" ey="1171" cx="234" cy="1437"/>
<line sx="228" sy="309" ex="239" ey="1171"/>
<arc sx="228" sy="309" ex="460" ey="100" cx="222" cy="85"/>
</block>
<block>
</block>
<block>
</block>
<block>
</block>
<!--bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/-->
<mini sx="6" sy="330" ex="0.026" ey="5"/>
<bg ref="bg5_p1" sx="0" sy="0" ex="2013" ey="2210" extra="-300_0_-200_0"/>
<bg ref="bg5_p2" sx="2013" sy="0" ex="2700" ey="2210" extra="-200_0_0_0"/>
<bg ref="bg5_p3" sx="0" sy="2210" ex="2013" ey="2400" extra="0_0_-150_0"/>
<bg ref="bg5_p4" sx="2013" sy="2210" ex="2650" ey="2400" extra="0_0_0_0"/>
</world4>
<world5>
<car sx="166" sy="1322" ex="-90"/>
<car sx="218" sy="1322" ex="-90"/>
<car sx="272" sy="1322" ex="-90"/>
<car sx="324" sy="1322" ex="-90"/>
<aisettings>
<AI sx="0" sy="0" ex="1.5" ey="3.1"/>
<AI sx="0" sy="0" ex="2.0" ey="6.3"/>
<AI sx="0" sy="0" ex="2.5" ey="10.0"/>
<AILine0 sx="283" sy="1457" ex="254" ey="438"/>
<AILine0 sx="254" sy="438" ex="273" ey="307"/>
<AILine0 sx="273" sy="307" ex="456" ey="206"/>
<AILine0 sx="456" sy="206" ex="1220" ey="168"/>
<AILine0 sx="1220" sy="168" ex="1370" ey="269"/>
<AILine0 sx="1370" sy="269" ex="1422" ey="454"/>
<AILine0 sx="1422" sy="454" ex="1330" ey="630"/>
<AILine0 sx="1330" sy="630" ex="1120" ey="710"/>
<AILine0 sx="1120" sy="710" ex="872" ey="922"/>
<AILine0 sx="872" sy="922" ex="1122" ey="1223"/>
<AILine0 sx="1122" sy="1223" ex="1443" ey="1209"/>
<AILine0 sx="1443" sy="1209" ex="2332" ey="1296"/>
<AILine0 sx="2332" sy="1296" ex="2644" ey="1096"/>
<AILine0 sx="2644" sy="1096" ex="3120" ey="460"/>
<AILine0 sx="3120" sy="460" ex="3372" ey="416"/>
<AILine0 sx="3372" sy="416" ex="3417" ey="669"/>
<AILine0 sx="3417" sy="669" ex="3264" ey="938"/>
<AILine0 sx="3264" sy="938" ex="3252" ey="1252"/>
<AILine0 sx="3252" sy="1252" ex="3550" ey="1285"/>
<AILine0 sx="3550" sy="1285" ex="3817" ey="1206"/>
<AILine0 sx="3817" sy="1206" ex="4132" ey="1155"/>
<AILine0 sx="4132" sy="1155" ex="4283" ey="1381"/>
<AILine0 sx="4283" sy="1381" ex="4168" ey="1541"/>
<AILine0 sx="4168" sy="1541" ex="4088" ey="1781"/>
<AILine0 sx="4088" sy="1781" ex="4019" ey="2110"/>
<AILine0 sx="4019" sy="2110" ex="4010" ey="2566"/>
<AILine0 sx="4010" sy="2566" ex="4022" ey="4302"/>
<AILine0 sx="4022" sy="4302" ex="3732" ey="4578"/>
<AILine0 sx="3732" sy="4578" ex="3083" ey="4562"/>
<AILine0 sx="3083" sy="4562" ex="2914" ey="4387"/>
<AILine0 sx="2914" sy="4387" ex="2962" ey="4095"/>
<AILine0 sx="2962" sy="4095" ex="2640" ey="3840"/>
<AILine0 sx="2640" sy="3840" ex="2458" ey="3616"/>
<AILine0 sx="2458" sy="3616" ex="2562" ey="3444"/>
<AILine0 sx="2562" sy="3444" ex="2831" ey="3442"/>
<AILine0 sx="2831" sy="3442" ex="3046" ey="3426"/>
<AILine0 sx="3046" sy="3426" ex="3252" ey="3366"/>
<AILine0 sx="3252" sy="3366" ex="3354" ey="3154"/>
<AILine0 sx="3354" sy="3154" ex="3194" ey="2982"/>
<AILine0 sx="3194" sy="2982" ex="3002" ey="2982"/>
<AILine0 sx="3002" sy="2982" ex="2852" ey="2990"/>
<AILine0 sx="2852" sy="2990" ex="2664" ey="2881"/>
<AILine0 sx="2664" sy="2881" ex="2350" ey="2626"/>
<AILine0 sx="2350" sy="2626" ex="2104" ey="2628"/>
<AILine0 sx="2104" sy="2628" ex="1874" ey="2535"/>
<AILine0 sx="1874" sy="2535" ex="1597" ey="2414"/>
<AILine0 sx="1597" sy="2414" ex="1424" ey="2457"/>
<AILine0 sx="1424" sy="2457" ex="1240" ey="2638"/>
<AILine0 sx="1240" sy="2638" ex="1614" ey="3864"/>
<AILine0 sx="1614" sy="3864" ex="1527" ey="4173"/>
<AILine0 sx="1527" sy="4173" ex="1244" ey="4298"/>
<AILine0 sx="1244" sy="4298" ex="919" ey="4266"/>
<AILine0 sx="919" sy="4266" ex="481" ey="3420"/>
<AILine0 sx="481" sy="3420" ex="499" ey="3169"/>
<AILine0 sx="499" sy="3169" ex="674" ey="3070"/>
<AILine0 sx="674" sy="3070" ex="775" ey="2848"/>
<AILine0 sx="775" sy="2848" ex="820" ey="2640"/>
<AILine0 sx="820" sy="2640" ex="840" ey="1920"/>
<AILine0 sx="840" sy="1920" ex="693" ey="1691"/>
<AILine0 sx="693" sy="1691" ex="493" ey="1659"/>
<AILine0 sx="493" sy="1659" ex="283" ey="1457"/>
</aisettings>
<block sx="0" sy="0" ex="4800" ey="4800">
<line sx="1110" sy="1368" ex="2309" ey="1403"/>
<arc sx="2755" sy="1185" ex="2309" ey="1403" cx="2605" cy="1410"/>
<line sx="2755" sy="1185" ex="3161" ey="564"/>
<circle sx="3161" sy="564" ex="3308" ey="524" cx="3214" cy="469"/>
<circle sx="3308" sy="524" ex="3341" ey="671" cx="3405" cy="576"/>
<line sx="3341" sy="671" ex="3157" ey="949"/>
<arc sx="3164" sy="1343" ex="3157" ey="949" cx="3002" cy="1148"/>
<arc sx="3708" sy="1388" ex="3164" ey="1343" cx="3387" cy="1608"/>
<line sx="3708" sy="1388" ex="3883" ey="1267"/>
<circle sx="3883" sy="1267" ex="4153" ey="1269" cx="4048" cy="1160"/>
<circle sx="4153" sy="1269" ex="4108" ey="1516" cx="4294" cy="1425"/>
<arc sx="3888" sy="1831" ex="4108" ey="1516" cx="3881" cy="1622"/>
<line sx="3888" sy="1831" ex="3889" ey="4339"/>
<circle sx="3889" sy="4339" ex="3765" ey="4462" cx="3898" cy="4460"/>
<line sx="3765" sy="4462" ex="3043" ey="4460"/>
<circle sx="3043" sy="4460" ex="2972" ey="4368" cx="2941" cy="4465"/>
<line sx="2972" sy="4368" ex="3026" ey="4127"/>
<arc sx="2857" sy="3786" ex="3026" ey="4127" cx="3091" cy="3843"/>
<line sx="2857" sy="3786" ex="2681" ey="3740"/>
<circle sx="2681" sy="3740" ex="2579" ey="3584" cx="2563" cy="3716"/>
<circle sx="2579" sy="3584" ex="2717" ey="3482" cx="2590" cy="3465"/>
<line sx="2717" sy="3482" ex="3083" ey="3531"/>
<arc sx="3413" sy="3382" ex="3083" ey="3531" cx="3291" cy="3563"/>
<arc sx="3446" sy="2980" ex="3413" ey="3382" cx="3528" cy="3180"/>
<arc sx="3020" sy="2841" ex="3446" ey="2980" cx="3337" cy="2745"/>
</block>
<block>
<line sx="3020" sy="2841" ex="2818" ey="2902"/>
<circle sx="2818" sy="2902" ex="2717" ey="2858" cx="2738" cy="2929"/>
<line sx="2717" sy="2858" ex="2659" ey="2681"/>
<arc sx="2284" sy="2490" ex="2659" ey="2681" cx="2594" cy="2474"/>
<line sx="2284" sy="2490" ex="2071" ey="2500"/>
<circle sx="2071" sy="2500" ex="1940" ey="2453" cx="1978" cy="2510"/>
<line sx="1940" sy="2453" ex="1891" ey="2388"/>
<arc sx="1543" sy="2285" ex="1891" ey="2388" cx="1764" cy="2227"/>
<line sx="1543" sy="2285" ex="1308" ey="2351"/>
<arc sx="1137" sy="2828" ex="1308" ey="2351" cx="1004" cy="2443"/>
<line sx="1137" sy="2828" ex="1529" ey="3993"/>
<circle sx="1529" sy="3993" ex="1474" ey="4118" cx="1563" cy="4084"/>
<line sx="1474" sy="4118" ex="1121" ey="4240"/>
<circle sx="1121" sy="4240" ex="964" ey="4171" cx="1015" cy="4285"/>
<line sx="964" sy="4171" ex="540" ey="3328"/>
<circle sx="540" sy="3328" ex="577" ey="3174" cx="483" cy="3220"/>
<line sx="577" sy="3174" ex="763" ey="3081"/>
<arc sx="946" sy="2843" ex="763" ey="3081" cx="951" cy="2997"/>
<line sx="946" sy="2843" ex="957" ey="1834"/>
<arc sx="718" sy="1520" ex="957" ey="1834" cx="963" cy="1531"/>
<line sx="718" sy="1520" ex="460" ey="1517"/>
<circle sx="460" sy="1517" ex="363" ey="1423" cx="359" cy="1522"/>
<line sx="363" sy="1423" ex="360" ey="386"/>
</block>
<block>
<circle sx="360" sy="386" ex="452" ey="276" cx="351" cy="277"/>
<line sx="452" sy="276" ex="1222" ey="273"/>
<circle sx="1222" sy="273" ex="1308" ey="364" cx="1312" cy="270"/>
<line sx="1308" sy="364" ex="1307" ey="505"/>
<circle sx="1307" sy="505" ex="1211" ey="589" cx="1310" cy="591"/>
<line sx="1211" sy="589" ex="1044" ey="587"/>
<arc sx="760" sy="891" ex="1044" ey="587" cx="757" cy="593"/>
<line sx="760" sy="891" ex="758" ey="1085"/>
<arc sx="1110" sy="1368" ex="758" ey="1085" cx="768" cy="1360"/>
<arc sx="125" sy="361" ex="405" ey="50" cx="111" cy="50"/>
<line sx="1218" sy="45" ex="405" ey="50"/>
<arc sx="1218" sy="45" ex="1546" ey="305" cx="1541" cy="35"/>
<line sx="1548" sy="551" ex="1546" ey="305"/>
<arc sx="1548" sy="551" ex="1213" ey="800" cx="1545" cy="837"/>
<circle sx="1013" sy="973" ex="1213" ey="800" cx="1012" cy="787"/>
<circle sx="1171" sy="1154" ex="1013" ey="973" cx="1004" cy="1151"/>
<line sx="2323" sy="1188" ex="1171" ey="1154"/>
<circle sx="2564" sy="1057" ex="2323" ey="1188" cx="2478" cy="1188"/>
<line sx="3013" sy="387" ex="2564" ey="1057"/>
<arc sx="3013" sy="387" ex="3443" ey="328" cx="3174" cy="163"/>
<arc sx="3443" sy="328" ex="3541" ey="768" cx="3729" cy="497"/>
<line sx="3358" sy="1049" ex="3541" ey="768"/>
<circle sx="3363" sy="1200" ex="3358" ey="1049" cx="3297" cy="1133"/>
<circle sx="3525" sy="1220" ex="3363" ey="1200" cx="3440" cy="1275"/>
<line sx="3774" sy="1053" ex="3525" ey="1220"/>
<arc sx="3774" sy="1053" ex="4266" ey="1027" cx="4024" cy="893"/>
<arc sx="4266" sy="1027" ex="4481" ey="1378" cx="4465" cy="1145"/>
<arc sx="4481" sy="1378" ex="4298" ey="1668" cx="4482" cy="1603"/>
<circle sx="4125" sy="1904" ex="4298" ey="1668" cx="4128" cy="1734"/>
<line sx="4132" sy="4358" ex="4125" ey="1904"/>
<arc sx="4132" sy="4358" ex="3815" ey="4695" cx="4143" cy="4700"/>
<line sx="2943" sy="4691" ex="3815" ey="4695"/>
<arc sx="2943" sy="4691" ex="2728" ey="4359" cx="2650" cy="4699"/>
<line sx="2778" sy="4116" ex="2728" ey="4359"/>
<circle sx="2692" sy="3977" ex="2778" ey="4116" cx="2808" cy="3993"/>
<line sx="2572" sy="3954" ex="2692" ey="3977"/>
<arc sx="2572" sy="3954" ex="2320" ey="3635" cx="2298" cy="3908"/>
<line sx="2331" sy="3470" ex="2320" ey="3635"/>
</block>
<block>
<arc sx="2331" sy="3470" ex="2611" ey="3248" cx="2343" cy="3214"/>
<line sx="3018" sy="3295" ex="2611" ey="3248"/>
<circle sx="3239" sy="3156" ex="3018" ey="3295" cx="3244" cy="3317"/>
<circle sx="3057" sy="3051" ex="3239" ey="3156" cx="3240" cy="2992"/>
<line sx="2849" sy="3115" ex="3057" ey="3051"/>
<arc sx="2849" sy="3115" ex="2537" ey="3010" cx="2602" cy="3197"/>
<line sx="2458" sy="2805" ex="2537" ey="3010"/>
<circle sx="2297" sy="2704" ex="2458" ey="2805" cx="2414" cy="2691"/>
<line sx="1984" sy="2710" ex="2297" ey="2704"/>
<arc sx="1984" sy="2710" ex="1736" ey="2583" cx="1794" cy="2705"/>
<circle sx="1549" sy="2512" ex="1736" ey="2583" cx="1674" cy="2469"/>
<line sx="1408" sy="2558" ex="1549" ey="2512"/>
<circle sx="1349" sy="2752" ex="1408" ey="2558" cx="1288" cy="2603"/>
<line sx="1763" sy="3968" ex="1349" ey="2752"/>
<arc sx="1763" sy="3968" ex="1576" ey="4352" cx="1870" cy="4254"/>
<line sx="1151" sy="4499" ex="1576" ey="4352"/>
<arc sx="1151" sy="4499" ex="758" ey="4288" cx="902" cy="4581"/>
<line sx="294" sy="3342" ex="758" ey="4288"/>
<arc sx="294" sy="3342" ex="354" ey="3022" cx="164" cy="3095"/>
<line sx="616" sy="2912" ex="354" ey="3022"/>
<circle sx="718" sy="2768" ex="616" ey="2912" cx="723" cy="2872"/>
<line sx="730" sy="1860" ex="718" ey="2768"/>
<circle sx="640" sy="1760" ex="730" ey="1860" cx="732" cy="1757"/>
<line sx="387" sy="1760" ex="640" ey="1760"/>
<arc sx="387" sy="1760" ex="130" ey="1517" cx="134" cy="1774"/>
<line sx="125" sy="361" ex="130" ey="1517"/>
</block>
<mini sx="12" sy="330" ex="0.023" ey="6"/>
<bg ref="bg6_p1" sx="0" sy="0" ex="2230" ey="2145" extra="-300_0_-200_0"/>
<bg ref="bg6_p2" sx="2230" sy="0" ex="2700" ey="2145" extra="-200_0_0_0"/>
<bg ref="bg6_p3" sx="0" sy="2145" ex="2230" ey="2700" extra="0_0_-100_0"/>
<bg ref="bg6_p4" sx="2230" sy="2145" ex="2400" ey="2800" extra="0_0_0_0"/>
<!--bg ref="bg6_0_0" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg6_0_0" sx="2400" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg6_0_0" sx="0" sy="2400" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg6_0_0" sx="2400" sy="2400" ex="2400" ey="2400" extra="0_0_0_0"/-->
</world5>
<world3>
<!--car sx="450" sy="1000"/>
<car sx="100" sy="200"/>
<car sx="100" sy="300"/>
<car sx="100" sy="400"/-->
<car sx="385" sy="1370" ex="-90"/>
<car sx="434" sy="1370" ex="-90"/>
<car sx="487.5" sy="1370" ex="-90"/>
<car sx="541" sy="1370" ex="-90"/>
<aisettings>
<AI sx="13" sy="8" ex="0.8" ey="2.2"/>
<AI sx="5" sy="0" ex="1.6" ey="3.3"/>
<AI sx="0" sy="0" ex="2" ey="4.5"/>
<AILine0 sx="461" sy="1187" ex="459" ey="708"/>
<AILine0 sx="459" sy="708" ex="524" ey="556"/>
<AILine0 sx="524" sy="556" ex="658" ey="383"/>
<AILine0 sx="658" sy="383" ex="873" ey="312"/>
<AILine0 sx="873" sy="312" ex="1243" ey="276"/>
<AILine0 sx="1243" sy="276" ex="1474" ey="246"/>
<AILine0 sx="1474" sy="246" ex="1586" ey="335"/>
<AILine0 sx="1586" sy="335" ex="1726" ey="534"/>
<AILine0 sx="1726" sy="534" ex="1841" ey="688"/>
<AILine0 sx="1841" sy="688" ex="2062" ey="695"/>
<AILine0 sx="2062" sy="695" ex="2658" ey="681"/>
<AILine0 sx="2658" sy="681" ex="2832" ey="578"/>
<AILine0 sx="2832" sy="578" ex="2933" ey="324"/>
<AILine0 sx="2933" sy="324" ex="3062" ey="242"/>
<AILine0 sx="3062" sy="242" ex="3782" ey="224"/>
<AILine0 sx="3782" sy="224" ex="3912" ey="272"/>
<AILine0 sx="3912" sy="272" ex="3970" ey="371"/>
<AILine0 sx="3970" sy="371" ex="3960" ey="495"/>
<AILine0 sx="3960" sy="495" ex="3725" ey="826"/>
<AILine0 sx="3725" sy="826" ex="3672" ey="955"/>
<AILine0 sx="3672" sy="955" ex="3730" ey="1079"/>
<AILine0 sx="3730" sy="1079" ex="3779" ey="1303"/>
<AILine0 sx="3779" sy="1303" ex="3748" ey="1440"/>
<AILine0 sx="3748" sy="1440" ex="3604" ey="1515"/>
<AILine0 sx="3604" sy="1515" ex="3180" ey="1761"/>
<AILine0 sx="3180" sy="1761" ex="3030" ey="1785"/>
<AILine0 sx="3030" sy="1785" ex="2875" ey="1670"/>
<AILine0 sx="2875" sy="1670" ex="2743" ey="1468"/>
<AILine0 sx="2743" sy="1468" ex="2618" ey="1178"/>
<AILine0 sx="2618" sy="1178" ex="2416" ey="1086"/>
<AILine0 sx="2416" sy="1086" ex="1754" ey="1024"/>
<AILine0 sx="1754" sy="1024" ex="1612" ey="1086"/>
<AILine0 sx="1612" sy="1086" ex="1560" ey="1165"/>
<AILine0 sx="1560" sy="1165" ex="1529" ey="1291"/>
<AILine0 sx="1529" sy="1291" ex="1550" ey="1951"/>
<AILine0 sx="1550" sy="1951" ex="1606" ey="2082"/>
<AILine0 sx="1606" sy="2082" ex="1763" ey="2178"/>
<AILine0 sx="1763" sy="2178" ex="2777" ey="2177"/>
<AILine0 sx="2777" sy="2177" ex="2920" ey="2247"/>
<AILine0 sx="2920" sy="2247" ex="3000" ey="2372"/>
<AILine0 sx="3000" sy="2372" ex="3066" ey="2848"/>
<AILine0 sx="3066" sy="2848" ex="3145" ey="2970"/>
<AILine0 sx="3145" sy="2970" ex="3307" ey="3037"/>
<AILine0 sx="3307" sy="3037" ex="4104" ey="2904"/>
<AILine0 sx="4104" sy="2904" ex="4240" ey="2960"/>
<AILine0 sx="4240" sy="2960" ex="4336" ey="3107"/>
<AILine0 sx="4336" sy="3107" ex="4294" ey="3283"/>
<AILine0 sx="4294" sy="3283" ex="4181" ey="3372"/>
<AILine0 sx="4181" sy="3372" ex="3874" ey="3458"/>
<AILine0 sx="3874" sy="3458" ex="2974" ey="3632"/>
<AILine0 sx="2974" sy="3632" ex="2798" ey="3615"/>
<AILine0 sx="2798" sy="3615" ex="2658" ey="3544"/>
<AILine0 sx="2658" sy="3544" ex="2460" ey="3225"/>
<AILine0 sx="2460" sy="3225" ex="2337" ey="3153"/>
<AILine0 sx="2337" sy="3153" ex="2190" ey="3194"/>
<AILine0 sx="2190" sy="3194" ex="2039" ey="3295"/>
<AILine0 sx="2039" sy="3295" ex="1322" ey="4076"/>
<AILine0 sx="1322" sy="4076" ex="1155" ey="4184"/>
<AILine0 sx="1155" sy="4184" ex="1007" ey="4205"/>
<AILine0 sx="1007" sy="4205" ex="829" ey="4122"/>
<AILine0 sx="829" sy="4122" ex="719" ey="3965"/>
<AILine0 sx="719" sy="3965" ex="611" ey="3667"/>
<AILine0 sx="611" sy="3667" ex="617" ey="3501"/>
<AILine0 sx="617" sy="3501" ex="703" ey="3438"/>
<AILine0 sx="703" sy="3438" ex="916" ey="3339"/>
<AILine0 sx="916" sy="3339" ex="997" ey="3257"/>
<AILine0 sx="997" sy="3257" ex="974" ey="3096"/>
<AILine0 sx="974" sy="3096" ex="897" ey="2964"/>
<AILine0 sx="897" sy="2964" ex="799" ey="2922"/>
<AILine0 sx="799" sy="2922" ex="570" ey="2882"/>
<AILine0 sx="570" sy="2882" ex="406" ey="2875"/>
<AILine0 sx="406" sy="2875" ex="304" ey="2782"/>
<AILine0 sx="304" sy="2782" ex="248" ey="2481"/>
<AILine0 sx="248" sy="2481" ex="292" ey="2355"/>
<AILine0 sx="292" sy="2355" ex="397" ey="2306"/>
<AILine0 sx="397" sy="2306" ex="715" ey="2224"/>
<AILine0 sx="715" sy="2224" ex="838" ey="2143"/>
<AILine0 sx="838" sy="2143" ex="886" ey="2041"/>
<AILine0 sx="886" sy="2041" ex="933" ey="1840"/>
<AILine0 sx="933" sy="1840" ex="791" ey="1678"/>
<AILine0 sx="791" sy="1678" ex="695" ey="1636"/>
<AILine0 sx="695" sy="1636" ex="542" ey="1511"/>
<AILine0 sx="542" sy="1511" ex="503" ey="1370"/>
<AILine0 sx="503" sy="1370" ex="461" ey="1187"/>
</aisettings>
<block sx="0" sy="0" ex="4800" ey="4800">
<circle sx="560" sy="928" ex="954" ey="399" cx="535" cy="477"/>
<line sx="954" sy="399" ex="1134" ey="371"/>
<line sx="1134" sy="371" ex="1284" ey="348"/>
<circle sx="1284" sy="348" ex="1582" ey="576" cx="1513" cy="302"/>
<arc sx="2000" sy="802" ex="1582" ey="576" cx="1651" cy="822"/>
<line sx="2000" sy="802" ex="2200" ey="794"/>
<line sx="2200" sy="794" ex="2593" ey="778"/>
<arc sx="2983" sy="557" ex="2593" ey="778" cx="2927" cy="775"/>
<circle sx="2983" sy="557" ex="3333" ey="344" cx="3026" cy="337"/>
<line sx="3333" sy="344" ex="3674" ey="342"/>
<circle sx="3674" sy="342" ex="3754" ey="611" cx="4102" cy="323"/>
<arc sx="3616" sy="1140" ex="3754" ey="611" cx="3438" cy="896"/>
<circle sx="3616" sy="1140" ex="3512" ey="1494" cx="3769" cy="1375"/>
<line sx="3512" sy="1494" ex="3174" ey="1644"/>
<circle sx="3174" sy="1644" ex="2900" ey="1540" cx="2968" cy="1724"/>
<line sx="2900" sy="1540" ex="2777" ey="1238"/>
<arc sx="2324" sy="944" ex="2777" ey="1238" cx="2672" cy="963"/>
<line sx="2324" sy="944" ex="1707" ey="933"/>
</block>
<block sx="0" sy="0" ex="4800" ey="4800">
<arc sx="1409" sy="1205" ex="1707" ey="933" cx="1386" cy="907"/>
<line sx="1409" sy="1205" ex="1428" ey="1907"/>
<arc sx="1874" sy="2294" ex="1428" ey="1907" cx="1425" cy="2322"/>
<line sx="1874" sy="2294" ex="2638" ey="2287"/>
<circle sx="2638" sy="2287" ex="2922" ey="2556" cx="2935" cy="2264"/>
<line sx="2922" sy="2556" ex="2941" ey="2871"/>
<arc sx="3431" sy="3148" ex="2941" ey="2871" cx="2962" cy="3242"/>
<line sx="3431" sy="3148" ex="4046" ey="3030"/>
<circle sx="4046" sy="3030" ex="4250" ey="3137" cx="4214" cy="2991"/>
<circle sx="4250" sy="3137" ex="4142" ey="3320" cx="4289" cy="3297"/>
<line sx="4142" sy="3320" ex="3506" ey="3432"/>
<line sx="3506" sy="3432" ex="2913" ey="3528"/>
<circle sx="2913" sy="3528" ex="2711" ey="3439" cx="2747" cy="3555"/>
<line sx="2711" sy="3439" ex="2567" ey="3113"/>
<arc sx="2079" sy="3089" ex="2567" ey="3113" cx="2391" cy="2757"/>
<line sx="2079" sy="3089" ex="1190" ey="4022"/>
<circle sx="1190" sy="4022" ex="759" ey="3856" cx="978" cy="4243"/>
<circle sx="759" sy="3856" ex="836" ey="3470" cx="572" cy="3494"/>
<arc sx="1151" sy="3063" ex="836" ey="3470" cx="1212" cy="3439"/>
<arc sx="692" sy="2768" ex="1151" ey="3063" cx="1071" cy="2610"/>
<circle sx="692" sy="2768" ex="322" ey="2647" cx="395" cy="2931"/>
<circle sx="322" sy="2647" ex="620" ey="2351" cx="204" cy="2301"/>
</block>
<block sx="0" sy="0" ex="4800" ey="4800">
<arc sx="1039" sy="2091" ex="620" ey="2351" cx="1029" cy="2414"/>
<line sx="1039" sy="2091" ex="1045" ey="1865"/>
<arc sx="775" sy="1515" ex="1045" ey="1865" cx="1058" cy="1577"/>
<circle sx="775" sy="1515" ex="573" ey="1317" cx="578" cy="1502"/>
<line sx="573" sy="1317" ex="560" ey="928"/>
<line sx="954" sy="191" ex="774" ey="229"/>
<line sx="1131" sy="163" ex="954" ey="191"/>
<line sx="1292" sy="139" ex="1131" ey="163"/>
<arc sx="1292" sy="139" ex="1765" ey="416" cx="1693" cy="80"/>
<circle sx="2054" sy="585" ex="1765" ey="416" cx="1809" cy="603"/>
<line sx="2456" sy="574" ex="2054" ey="585"/>
<circle sx="2777" sy="404" ex="2456" ey="574" cx="2741" cy="583"/>
<arc sx="2777" sy="404" ex="3120" ey="111" cx="2811" cy="122"/>
<line sx="3386" sy="115" ex="3120" ey="111"/>
<line sx="3908" sy="123" ex="3386" ey="115"/>
<arc sx="3908" sy="123" ex="4108" ey="543" cx="4439" cy="115"/>
<line sx="3926" sy="750" ex="4108" ey="543"/>
<circle sx="3856" sy="1132" ex="3926" ey="750" cx="3722" cy="954"/>
<arc sx="3856" sy="1132" ex="3722" ey="1634" cx="4067" cy="1474"/>
<line sx="3160" sy="1872" ex="3722" ey="1634"/>
<arc sx="3160" sy="1872" ex="2675" ey="1582" cx="2774" cy="2014"/>
<circle sx="2316" sy="1162" ex="2675" ey="1582" cx="2593" cy="1162"/>
<line sx="1780" sy="1141" ex="2316" ey="1162"/>
<circle sx="1626" sy="1306" ex="1780" ey="1141" cx="1610" cy="1128"/>
<line sx="1640" sy="1889" ex="1626" ey="1306"/>
</block>
<block sx="0" sy="0" ex="4800" ey="4800">
<circle sx="1865" sy="2078" ex="1640" ey="1889" cx="1643" cy="2083"/>
<line sx="2745" sy="2075" ex="1865" ey="2078"/>
<arc sx="2745" sy="2075" ex="3150" ey="2388" cx="3137" cy="2043"/>
<line sx="3169" sy="2757" ex="3150" ey="2388"/>
<circle sx="3383" sy="2918" ex="3169" ey="2757" cx="3184" cy="2954"/>
<line sx="4076" sy="2808" ex="3383" ey="2918"/>
<arc sx="4076" sy="2808" ex="4464" ey="3037" cx="4404" cy="2761"/>
<arc sx="4464" sy="3037" ex="4217" ey="3518" cx="4570" cy="3440"/>
<line sx="3490" sy="3644" ex="4217" ey="3518"/>
<line sx="3248" sy="3688" ex="3490" ey="3644"/>
<line sx="3021" sy="3730" ex="3248" ey="3688"/>
<arc sx="3021" sy="3730" ex="2484" ey="3452" cx="2593" cy="3811"/>
<circle sx="2136" sy="3336" ex="2484" ey="3452" cx="2369" cy="3094"/>
<line sx="1376" sy="4152" ex="2136" ey="3336"/>
<arc sx="1376" sy="4152" ex="583" ey="3975" cx="954" cy="4640"/>
<arc sx="583" sy="3975" ex="743" ey="3315" cx="267" cy="3333"/>
<circle sx="932" sy="3075" ex="743" ey="3315" cx="978" cy="3317"/>
<circle sx="615" sy="3013" ex="932" ey="3075" cx="882" cy="2859"/>
<arc sx="615" sy="3013" ex="124" ey="2619" cx="242" cy="3226"/>
<arc sx="124" sy="2619" ex="373" ey="2158" cx="15" cy="2133"/>
<line sx="591" sy="2171" ex="373" ey="2158"/>
<circle sx="854" sy="2004" ex="591" ey="2171" cx="853" cy="2191"/>
<circle sx="659" sy="1695" ex="854" ey="2004" cx="866" cy="1720"/>
<arc sx="659" sy="1695" ex="353" ey="1426" cx="347" cy="1664"/>
<line sx="336" sy="784" ex="353" ey="1426"/>
<arc sx="336" sy="784" ex="774" ey="229" cx="316" cy="317"/>
</block>
<!--bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/-->
<mini sx="11" sy="330" ex="0.024" ey="4"/>
<bg ref="bg4_p1" sx="0" sy="0" ex="2288" ey="2496" extra="-300_0_-300_0"/>
<bg ref="bg4_p2" sx="2288" sy="0" ex="2400" ey="2496" extra="-300_0_0_300"/>
<bg ref="bg4_p3" sx="0" sy="2496" ex="2288" ey="2400" extra="0_100_-300_0"/>
<bg ref="bg4_p4" sx="2288" sy="2496" ex="2400" ey="2400" extra="0_100_0_300"/>
</world3>
<world1>
<!--bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/-->
<!--bg ref="bg2_0_0" sx="0" sy="0" ex="1800" ey="1800" extra="-400_0_-400_0" />
<bg ref="bg2_0_0" sx="1800" sy="0" ex="1800" ey="1800" extra="-400_0_0_0" />
<bg ref="bg2_0_0" sx="0" sy="1800" ex="1800" ey="1800" extra="0_0_-400_0" />
<bg ref="bg2_0_0" sx="1800" sy="1800" ex="1800" ey="1800" extra="0_0_0_0" /-->
<bg ref="bg2_p1" sx="0" sy="0" ex="1220" ey="2050" extra="-400_0_-400_0"/>
<bg ref="bg2_p2" sx="1220" sy="0" ex="2600" ey="2050" extra="-400_0_0_0"/>
<bg ref="bg2_p3" sx="0" sy="2050" ex="1220" ey="1500" extra="0_0_-400_0"/>
<bg ref="bg2_p4" sx="1220" sy="2050" ex="2100" ey="1700" extra="0_0_0_0"/>
<mini sx="16" sy="330" ex="0.033" ey="2"/>
<car sx="300" sy="950" ex="-90"/>
<car sx="350" sy="950" ex="-90"/>
<car sx="400" sy="950" ex="-90"/>
<car sx="450" sy="950" ex="-90"/>
<aisettings>
<AI sx="22" sy="20" ex="-2" ey="1"/>
<AI sx="18" sy="13" ex="-1" ey="1.9"/>
<AI sx="5" sy="0" ex="0" ey="2.8"/>
<AILine0 sx="395" sy="1031" ex="395" ey="563"/>
<AILine0 sx="395" sy="563" ex="429" ey="234"/>
<AILine0 sx="429" sy="234" ex="707" ey="185"/>
<AILine0 sx="707" sy="185" ex="1172" ey="185"/>
<AILine0 sx="1172" sy="185" ex="1448" ey="250"/>
<AILine0 sx="1448" sy="250" ex="1635" ey="779"/>
<AILine0 sx="1635" sy="779" ex="1885" ey="1012"/>
<AILine0 sx="1885" sy="1012" ex="2395" ey="915"/>
<AILine0 sx="2395" sy="915" ex="2601" ey="985"/>
<AILine0 sx="2601" sy="985" ex="2775" ey="1213"/>
<AILine0 sx="2775" sy="1213" ex="2734" ey="1555"/>
<AILine0 sx="2734" sy="1555" ex="2442" ey="1706"/>
<AILine0 sx="2442" sy="1706" ex="1762" ey="1646"/>
<AILine0 sx="1762" sy="1646" ex="1571" ey="1806"/>
<AILine0 sx="1571" sy="1806" ex="1566" ey="2111"/>
<AILine0 sx="1566" sy="2111" ex="1686" ey="3027"/>
<AILine0 sx="1686" sy="3027" ex="1890" ey="3171"/>
<AILine0 sx="1890" sy="3171" ex="2168" ey="3132"/>
<AILine0 sx="2168" sy="3132" ex="2365" ey="3001"/>
<AILine0 sx="2365" sy="3001" ex="2415" ey="2781"/>
<AILine0 sx="2415" sy="2781" ex="2306" ey="2509"/>
<AILine0 sx="2306" sy="2509" ex="1991" ey="2320"/>
<AILine0 sx="1991" sy="2320" ex="770" ey="2683"/>
<AILine0 sx="770" sy="2683" ex="509" ey="2755"/>
<AILine0 sx="509" sy="2755" ex="353" ey="2629"/>
<AILine0 sx="353" sy="2629" ex="449" ey="2394"/>
<AILine0 sx="449" sy="2394" ex="929" ey="2263"/>
<AILine0 sx="929" sy="2263" ex="1035" ey="2107"/>
<AILine0 sx="1035" sy="2107" ex="895" ey="1856"/>
<AILine0 sx="895" sy="1856" ex="605" ey="1893"/>
<AILine0 sx="605" sy="1893" ex="474" ey="1886"/>
<AILine0 sx="474" sy="1886" ex="274" ey="1771"/>
<AILine0 sx="274" sy="1771" ex="199" ey="1524"/>
<AILine0 sx="199" sy="1524" ex="221" ey="1380"/>
<AILine0 sx="221" sy="1380" ex="335" ey="1254"/>
<AILine0 sx="335" sy="1254" ex="395" ey="1031"/>
</aisettings>
<items>
<!--路障,sx为第一个的位置,ex为第一个路障的位置,cxcy为第一个和第二个的旋转角度,extra为感知点的位置-->
<!--左右路障-->
<obs sx="1447" sy="2420" ex="1705" ey="2345" cx="-10" cy="-10" extra="1100_2500_2200_2380">
<line sx="1463" sy="2310" ex="1506" ey="2610" cx="-25" cy="-48"/>
<line sx="1736" sy="2527" ex="1695" ey="2245" cx="-25" cy="-48"/>
</obs>
<obs sx="1565" sy="2240" ex="1600" ey="2510" cx="75" cy="75" extra="1500_1850_1650_2850">
<line sx="1714" sy="2269" ex="1448" ey="2343" cx="-25" cy="-48"/>
<line sx="1485" sy="2578" ex="1753" ey="2502" cx="-25" cy="-48"/>
</obs>
</items>
<block sx="-25" sy="-48" ex="4800" ey="4800">
<!--上下两线-->
<line sx="669" sy="292" ex="1196" ey="286"/>
<circle sx="1196" sy="286" ex="1477" ey="616" cx="1423" cy="295"/>
<arc sx="2220" sy="1085" ex="1477" ey="616" cx="1613" cy="1246"/>
<circle sx="2220" sy="1085" ex="2662" ey="1275" cx="2580" cy="979"/>
<circle sx="2662" sy="1275" ex="2336" ey="1611" cx="2705" cy="1603"/>
<line sx="2336" sy="1611" ex="1767" ey="1536"/>
<arc sx="1430" sy="1838" ex="1767" ey="1536" cx="1374" cy="1478"/>
<line sx="1430" sy="1838" ex="1463" ey="2310"/>
<!--circle sx="1463" sy="2310" ex="1448" ey="2343" cx="2480" cy="5968" /-->
<line sx="1448" sy="2343" ex="1218" ey="2418"/>
<line sx="1218" sy="2418" ex="568" ey="2622"/>
<circle sx="568" sy="2622" ex="452" ey="2572" cx="477" cy="2650"/>
<circle sx="452" sy="2572" ex="530" ey="2482" cx="431" cy="2497"/>
<line sx="530" sy="2482" ex="913" ey="2378"/>
<arc sx="1182" sy="1967" ex="913" ey="2378" cx="1277" cy="2302"/>
<arc sx="825" sy="1727" ex="1182" ey="1967" cx="1101" cy="1690"/>
<line sx="825" sy="1727" ex="468" ey="1793"/>
<circle sx="468" sy="1793" ex="358" ey="1728" cx="379" cy="1808"/>
<line sx="358" sy="1728" ex="314" ey="1568"/>
<circle sx="314" sy="1568" ex="390" ey="1344" cx="272" cy="1419"/>
<arc sx="512" sy="964" ex="390" ey="1344" cx="542" cy="1252"/>
<line sx="512" sy="964" ex="502" ey="453"/>
<circle sx="502" sy="453" ex="669" ey="292" cx="496" cy="298"/>
<!--arc sx="1753" sy="2502" ex="1736" ey="2527" cx="2240" cy="6000" /-->
<circle sx="1753" sy="2502" ex="2175" ey="2529" cx="2069" cy="2422"/>
<circle sx="2175" sy="2529" ex="2287" ey="2809" cx="2311" cy="2666"/>
<circle sx="2287" sy="2809" ex="2062" ey="3039" cx="2249" cy="2999"/>
<circle sx="2062" sy="3039" ex="1813" ey="2950" cx="1832" cy="3081"/>
<line sx="1813" sy="2950" ex="1736" ey="2527"/>
<arc sx="2859" sy="1560" ex="2305" ey="1829" cx="2681" cy="1865"/>
<line sx="1801" sy="1760" ex="2305" ey="1829"/>
<circle sx="1647" sy="1866" ex="1801" ey="1760" cx="1638" cy="1743"/>
<line sx="1695" sy="2245" ex="1647" ey="1866"/>
<!--circle sx="1714" sy="2269" ex="1695" ey="2245" cx="2328" cy="5976" /-->
<arc sx="1714" sy="2269" ex="2377" ey="2389" cx="2146" cy="2162"/>
<arc sx="2377" sy="2389" ex="2531" ey="2938" cx="2608" cy="2645"/>
<arc sx="2531" sy="2938" ex="2101" ey="3249" cx="2461" cy="3180"/>
<arc sx="2101" sy="3249" ex="1591" ey="3038" cx="1683" cy="3307"/>
<line sx="1506" sy="2610" ex="1591" ey="3038"/>
<!--arc sx="1506" sy="2610" ex="1485" ey="2578" cx="2408" cy="5976" /-->
<line sx="1069" sy="2709" ex="1485" ey="2578"/>
<line sx="853" sy="2776" ex="1069" ey="2709"/>
<line sx="561" sy="2867" ex="853" ey="2776"/>
<arc sx="561" sy="2867" ex="205" ey="2654" cx="285" cy="2935"/>
<arc sx="205" sy="2654" ex="468" ey="2257" cx="122" cy="2341"/>
<line sx="870" sy="2165" ex="468" ey="2257"/>
<circle sx="945" sy="2041" ex="870" ey="2165" cx="968" cy="2133"/>
<circle sx="786" sy="1963" ex="945" ey="2041" cx="915" cy="1929"/>
<line sx="435" sy="2037" ex="786" ey="1963"/>
<arc sx="435" sy="2037" ex="197" ey="1920" cx="245" cy="2080"/>
<line sx="77" sy="1548" ex="197" ey="1920"/>
<arc sx="77" sy="1548" ex="202" ey="1192" cx="29" cy="1357"/>
<circle sx="280" sy="943" ex="202" ey="1192" cx="293" cy="1111"/>
<line sx="270" sy="480" ex="280" ey="943"/>
<arc sx="270" sy="480" ex="629" ey="102" cx="256" cy="94"/>
<line sx="1235" sy="100" ex="629" ey="102"/>
<arc sx="1235" sy="100" ex="1674" ey="481" cx="1639" cy="97"/>
<circle sx="1866" sy="857" ex="1674" ey="481" cx="1675" cy="709"/>
<circle sx="2225" sy="856" ex="1866" ey="857" cx="1983" cy="940"/>
<arc sx="2225" sy="856" ex="2801" ey="995" cx="2566" cy="730"/>
<arc sx="2801" sy="995" ex="2859" ey="1560" cx="3011" cy="1244"/>
</block>
<block></block>
<block></block>
<block></block>
</world1>
<world2>
<!--bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg_2_0_1" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0"/>
<bg ref="bg3_0_0" sx="0" sy="0" ex="2400" ey="2400" extra="0_0_0_0" />
<bg ref="bg3_0_0" sx="0" sy="2400" ex="2400" ey="2400" extra="0_0_0_0" />
<bg ref="bg3_0_0" sx="2400" sy="0" ex="2400" ey="2400" extra="0_0_0_0" />
<bg ref="bg3_0_0" sx="2400" sy="2400" ex="2400" ey="2400" extra="0_0_0_0" /-->
<mini sx="12" sy="324" ex="0.024" ey="3"/>
<bg ref="bg3_p1" sx="0" sy="0" ex="2275" ey="2492" extra="-100_0_-100_0"/>
<bg ref="bg3_p2" sx="2275" sy="0" ex="2400" ey="2492" extra="0_0_0_100"/>
<bg ref="bg3_p3" sx="0" sy="2492" ex="2275" ey="2400" extra="0_200_-250_0"/>
<bg ref="bg3_p4" sx="2275" sy="2492" ex="2400" ey="2400" extra="0_0_0_100"/>
<car sx="1118" sy="2848" ex="-110"/>
<car sx="1167" sy="2831" ex="-110"/>
<car sx="1217" sy="2813" ex="-110"/>
<car sx="1267" sy="2796" ex="-110"/>
<aisettings>
<AI sx="17" sy="15" ex="-0.5" ey="1"/>
<AI sx="5" sy="0" ex="0.5" ey="2.5"/>
<AI sx="1" sy="0" ex="1.5" ey="4"/>
<AILine0 sx="645" sy="1164" ex="596" ey="973"/>
<AILine0 sx="596" sy="973" ex="496" ey="679"/>
<AILine0 sx="496" sy="679" ex="840" ey="346"/>
<AILine0 sx="840" sy="346" ex="1655" ey="562"/>
<AILine0 sx="1655" sy="562" ex="3088" ey="977"/>
<AILine0 sx="3088" sy="977" ex="3389" ey="862"/>
<AILine0 sx="3389" sy="862" ex="3567" ey="616"/>
<AILine0 sx="3567" sy="616" ex="3912" ey="609"/>
<AILine0 sx="3912" sy="609" ex="4138" ey="877"/>
<AILine0 sx="4138" sy="877" ex="4083" ey="1240"/>
<AILine0 sx="4083" sy="1240" ex="3904" ey="1550"/>
<AILine0 sx="3904" sy="1550" ex="3948" ey="1775"/>
<AILine0 sx="3948" sy="1775" ex="3883" ey="2019"/>
<AILine0 sx="3883" sy="2019" ex="3692" ey="2187"/>
<AILine0 sx="3692" sy="2187" ex="3530" ey="2354"/>
<AILine0 sx="3530" sy="2354" ex="3583" ey="2567"/>
<AILine0 sx="3583" sy="2567" ex="3954" ey="2728"/>
<AILine0 sx="3954" sy="2728" ex="4145" ey="2957"/>
<AILine0 sx="4145" sy="2957" ex="4157" ey="3288"/>
<AILine0 sx="4157" sy="3288" ex="3694" ey="4174"/>
<AILine0 sx="3694" sy="4174" ex="3498" ey="4265"/>
<AILine0 sx="3498" sy="4265" ex="3056" ey="4282"/>
<AILine0 sx="3056" sy="4282" ex="2851" ey="4181"/>
<AILine0 sx="2851" sy="4181" ex="2409" ey="3720"/>
<AILine0 sx="2409" sy="3720" ex="2270" ey="3661"/>
<AILine0 sx="2270" sy="3661" ex="1145" ey="3661"/>
<AILine0 sx="1145" sy="3661" ex="962" ey="3791"/>
<AILine0 sx="962" sy="3791" ex="979" ey="4010"/>
<AILine0 sx="979" sy="4010" ex="1198" ey="4159"/>
<AILine0 sx="1198" sy="4159" ex="1606" ey="4169"/>
<AILine0 sx="1606" sy="4169" ex="1757" ey="4286"/>
<AILine0 sx="1757" sy="4286" ex="1696" ey="4518"/>
<AILine0 sx="1696" sy="4518" ex="1497" ey="4606"/>
<AILine0 sx="1497" sy="4606" ex="784" ey="4618"/>
<AILine0 sx="784" sy="4618" ex="550" ey="4520"/>
<AILine0 sx="550" sy="4520" ex="248" ey="3748"/>
<AILine0 sx="248" sy="3748" ex="314" ey="3499"/>
<AILine0 sx="314" sy="3499" ex="567" ey="3330"/>
<AILine0 sx="567" sy="3330" ex="1071" ey="3180"/>
<AILine0 sx="1071" sy="3180" ex="1178" ey="3068"/>
<AILine0 sx="1178" sy="3068" ex="1223" ey="2925"/>
<AILine0 sx="1223" sy="2925" ex="645" ey="1164"/>
<AILine1 sx="1064" sy="2376" ex="2184" ey="712"/>
<AILine1 sx="2184" sy="712" ex="2440" ey="792"/>
<AILine1 sx="2440" sy="792" ex="2632" ey="840"/>
<AILine1 sx="2632" sy="840" ex="2880" ey="936"/>
<AILine1 sx="2880" sy="936" ex="3088" ey="977"/>
<AILine1 sx="3088" sy="977" ex="3389" ey="862"/>
<AILine1 sx="3389" sy="862" ex="3567" ey="616"/>
<AILine1 sx="3567" sy="616" ex="3912" ey="609"/>
<AILine1 sx="3912" sy="609" ex="4138" ey="877"/>
<AILine1 sx="4138" sy="877" ex="4083" ey="1240"/>
<AILine1 sx="4083" sy="1240" ex="3904" ey="1550"/>
<AILine1 sx="3904" sy="1550" ex="3948" ey="1775"/>
<AILine1 sx="3948" sy="1775" ex="3883" ey="2019"/>
<AILine1 sx="3883" sy="2019" ex="3692" ey="2187"/>
<AILine1 sx="3692" sy="2187" ex="3530" ey="2354"/>
<AILine1 sx="3530" sy="2354" ex="3583" ey="2567"/>
<AILine1 sx="3583" sy="2567" ex="3954" ey="2728"/>
<AILine1 sx="3954" sy="2728" ex="4145" ey="2957"/>
<AILine1 sx="4145" sy="2957" ex="4157" ey="3288"/>
<AILine1 sx="4157" sy="3288" ex="3694" ey="4174"/>
<AILine1 sx="3694" sy="4174" ex="3498" ey="4265"/>
<AILine1 sx="3498" sy="4265" ex="3056" ey="4282"/>
<AILine1 sx="3056" sy="4282" ex="2851" ey="4181"/>
<AILine1 sx="2851" sy="4181" ex="2409" ey="3720"/>
<AILine1 sx="2409" sy="3720" ex="2270" ey="3661"/>
<AILine1 sx="2270" sy="3661" ex="1145" ey="3661"/>
<AILine1 sx="1145" sy="3661" ex="962" ey="3791"/>
<AILine1 sx="962" sy="3791" ex="979" ey="4010"/>
<AILine1 sx="979" sy="4010" ex="1198" ey="4159"/>
<AILine1 sx="1198" sy="4159" ex="1606" ey="4169"/>
<AILine1 sx="1606" sy="4169" ex="1757" ey="4286"/>
<AILine1 sx="1757" sy="4286" ex="1696" ey="4518"/>
<AILine1 sx="1696" sy="4518" ex="1497" ey="4606"/>
<AILine1 sx="1497" sy="4606" ex="784" ey="4618"/>
<AILine1 sx="784" sy="4618" ex="550" ey="4520"/>
<AILine1 sx="550" sy="4520" ex="248" ey="3748"/>
<AILine1 sx="248" sy="3748" ex="314" ey="3499"/>
<AILine1 sx="314" sy="3499" ex="567" ey="3330"/>
<AILine1 sx="567" sy="3330" ex="1071" ey="3180"/>
<AILine1 sx="1071" sy="3180" ex="1178" ey="3068"/>
<AILine1 sx="1178" sy="3068" ex="1223" ey="2925"/>
<AILine1 sx="1223" sy="2925" ex="1064" ey="2376"/>
</aisettings>
<block sx="0" sy="0" ex="4800" ey="4800">
<line sx="2200" sy="1778" ex="2036" ey="1299"/>
<circle sx="2036" sy="1299" ex="2062" ey="859" cx="1928" cy="1000"/>
<circle sx="2062" sy="859" ex="2194" ey="826" cx="2120" cy="805"/>
<line sx="2194" sy="826" ex="3047" ey="1063"/>
<arc sx="3540" sy="893" ex="3047" ey="1063" cx="3422" cy="1160"/>
<circle sx="3540" sy="893" ex="3777" ey="711" cx="3603" cy="711"/>
<circle sx="3777" sy="711" ex="3974" ey="834" cx="3899" cy="711"/>
<circle sx="3974" sy="834" ex="3966" ey="1105" cx="4068" cy="1024"/>
<arc sx="3795" sy="1673" ex="3966" ey="1105" cx="3668" cy="1360"/>
<circle sx="3795" sy="1673" ex="3728" ey="1963" cx="3874" cy="1858"/>
<line sx="3728" sy="1963" ex="3460" ey="2174"/>
<arc sx="3339" sy="2530" ex="3460" ey="2174" cx="3291" cy="2293"/>
<arc sx="3668" sy="2785" ex="3339" ey="2530" cx="3389" cy="2802"/>
<circle sx="3668" sy="2785" ex="4005" ey="2928" cx="3908" cy="2768"/>
<circle sx="4005" sy="2928" ex="4013" ey="3260" cx="4094" cy="3071"/>
<line sx="4013" sy="3260" ex="3565" ey="4108"/>
<circle sx="3565" sy="4108" ex="3424" ey="4180" cx="3523" cy="4179"/>
<line sx="3424" sy="4180" ex="3074" ey="4177"/>
<circle sx="3074" sy="4177" ex="2958" ey="4126" cx="3003" cy="4184"/>
<line sx="2958" sy="4126" ex="2580" ey="3721"/>
<arc sx="2209" sy="3558" ex="2580" ey="3721" cx="2420" cy="3541"/>
<line sx="2209" sy="3558" ex="1109" ey="3553"/>
<arc sx="799" sy="3907" ex="1109" ey="3553" cx="774" cy="3554"/>
<arc sx="1100" sy="4252" ex="799" ey="3907" cx="797" cy="4257"/>
<line sx="1100" sy="4252" ex="1518" ey="4257"/>
<circle sx="1518" sy="4257" ex="1634" ey="4375" cx="1639" cy="4254"/>
<circle sx="1634" sy="4375" ex="1525" ey="4498" cx="1640" cy="4505"/>
<line sx="1525" sy="4498" ex="832" ey="4500"/>
<circle sx="832" sy="4500" ex="577" ey="4351" cx="637" cy="4519"/>
<line sx="577" sy="4351" ex="374" ey="3790"/>
<circle sx="374" sy="3790" ex="494" ey="3489" cx="307" cy="3560"/>
<line sx="494" sy="3489" ex="1166" ey="3272"/>
<arc sx="1360" sy="2904" ex="1166" ey="3272" cx="1471" cy="3160"/>
<line sx="1360" sy="2904" ex="1210" ey="2557"/>
<circle sx="1210" sy="2557" ex="1245" ey="2372" cx="1178" cy="2460"/>
<circle sx="1245" sy="2372" ex="2020" ey="2110" cx="1407" cy="2094"/>
<arc sx="2200" sy="1778" ex="2020" ey="2110" cx="2322" cy="2126"/>
<circle sx="728" sy="601" ex="1006" ey="517" cx="848" cy="483"/>
<line sx="1006" sy="517" ex="1478" ey="630"/>
<line sx="1478" sy="630" ex="1791" ey="709"/>
<circle sx="1791" sy="709" ex="1813" ey="820" cx="1859" cy="736"/>
<arc sx="1801" sy="1332" ex="1813" ey="820" cx="1660" cy="956"/>
<line sx="1801" sy="1332" ex="1956" ey="1776"/>
<circle sx="1956" sy="1776" ex="1891" ey="1886" cx="1991" cy="1883"/>
<arc sx="1176" sy="2088" ex="1891" ey="1886" cx="1376" cy="1850"/>
<circle sx="1176" sy="2088" ex="1057" ey="2079" cx="1100" cy="2168"/>
<line sx="1057" sy="2079" ex="751" ey="1135"/>
<line sx="751" sy="1135" ex="678" ey="907"/>
<circle sx="678" sy="907" ex="728" ey="601" cx="627" cy="702"/>
<line sx="1348" sy="346" ex="1074" ey="277"/>
<line sx="1576" sy="407" ex="1348" ey="346"/>
<line sx="1993" sy="524" ex="1576" ey="407"/>
<line sx="2495" sy="669" ex="1993" ey="524"/>
<line sx="3062" sy="825" ex="2495" ey="669"/>
<circle sx="3354" sy="725" ex="3062" ey="825" cx="3288" cy="887"/>
<arc sx="3354" sy="725" ex="3703" ey="456" cx="3432" cy="476"/>
<arc sx="3703" sy="456" ex="4223" ey="760" cx="4088" cy="456"/>
<arc sx="4223" sy="760" ex="4174" ey="1250" cx="4355" cy="1087"/>
<circle sx="4078" sy="1659" ex="4174" ey="1250" cx="3954" cy="1419"/>
<arc sx="4078" sy="1659" ex="3949" ey="2114" cx="4195" cy="1927"/>
<line sx="3662" sy="2339" ex="3949" ey="2114"/>
<circle sx="3608" sy="2480" ex="3662" ey="2339" cx="3579" cy="2400"/>
<circle sx="3761" sy="2564" ex="3608" ey="2480" cx="3642" cy="2577"/>
<arc sx="3761" sy="2564" ex="4233" ey="2854" cx="4071" cy="2563"/>
<arc sx="4233" sy="2854" ex="4256" ey="3290" cx="4358" cy="3071"/>
<line sx="3791" sy="4191" ex="4256" ey="3290"/>
<arc sx="3791" sy="4191" ex="3459" ey="4400" cx="3688" cy="4409"/>
<line sx="3054" sy="4407" ex="3459" ey="4400"/>
<arc sx="3054" sy="4407" ex="2805" ey="4310" cx="2891" cy="4423"/>
<line sx="2447" sy="3903" ex="2805" ey="4310"/>
<circle sx="2192" sy="3780" ex="2447" ey="3903" cx="2328" cy="3770"/>
<line sx="1189" sy="3768" ex="2192" ey="3780"/>
<circle sx="1053" sy="3887" ex="1189" ey="3768" cx="1051" cy="3764"/>
<circle sx="1189" sy="4011" ex="1053" ey="3887" cx="1057" cy="4015"/>
<line sx="1591" sy="4019" ex="1189" ey="4011"/>
<arc sx="1591" sy="4019" ex="1914" ey="4397" cx="1934" cy="4025"/>
<arc sx="1914" sy="4397" ex="1542" ey="4742" cx="1911" cy="4755"/>
<line sx="884" sy="4736" ex="1542" ey="4742"/>
<arc sx="884" sy="4736" ex="365" ey="4441" cx="459" cy="4760"/>
<line sx="173" sy="3922" ex="365" ey="4441"/>
<arc sx="173" sy="3922" ex="382" ey="3259" cx="-13" cy="3373"/>
<line sx="1000" sy="3074" ex="382" ey="3259"/>
<circle sx="1085" sy="2880" ex="1000" ey="3074" cx="1155" cy="3041"/>
<line sx="1003" sy="2665" ex="1085" ey="2880"/>
<line sx="894" sy="2351" ex="1003" ey="2665"/>
<line sx="475" sy="1075" ex="894" ey="2351"/>
<arc sx="475" sy="1075" ex="477" ey="482" cx="328" cy="694"/>
<arc sx="477" sy="482" ex="1074" ey="277" cx="700" cy="197"/>
</block>
<block>
</block>
<block>
</block>
<block>
</block>
</world2>
<world6>
<bg ref="bg01_1" sx="0" sy="0" ex="1800" ey="1800" extra="-200_0_-200_0"/>
<bg ref="bg01_1" sx="1800" sy="0" ex="1800" ey="1800" extra="-200_0_0_0"/>
<bg ref="bg01_1" sx="0" sy="1800" ex="1800" ey="1800" extra="0_0_-200_0"/>
<bg ref="bg01_1" sx="1800" sy="1800" ex="1800" ey="1800" extra="0_0_0_0"/>
<mini sx="6" sy="321" ex="0.054" ey="7"/>
<car sx="625" sy="1885" ex="-90"/>
<car sx="100" sy="200" ex="-90"/>
<car sx="100" sy="300" ex="-90"/>
<car sx="100" sy="400" ex="-90"/>
<aisettings>
<AI sx="0.8" sy="40" ex="-2" ey="1"/>
<AI sx="0.8" sy="80" ex="-1" ey="2"/>
<AI sx="0.8" sy="120" ex="0" ey="3"/>
<AILine0 sx="652" sy="1630" ex="652" ey="1322"/>
<AILine0 sx="652" sy="1322" ex="546" ey="1100"/>
<AILine0 sx="546" sy="1100" ex="322" ey="1014"/>
<AILine0 sx="322" sy="1014" ex="286" ey="756"/>
<AILine0 sx="286" sy="756" ex="266" ey="440"/>
<AILine0 sx="266" sy="440" ex="450" ey="242"/>
<AILine0 sx="450" sy="242" ex="736" ey="226"/>
<AILine0 sx="736" sy="226" ex="1006" ey="292"/>
<AILine0 sx="1006" sy="292" ex="1096" ey="544"/>
<AILine0 sx="1096" sy="544" ex="1112" ey="828"/>
<AILine0 sx="1112" sy="828" ex="1180" ey="1066"/>
<AILine0 sx="1180" sy="1066" ex="1428" ey="1152"/>
<AILine0 sx="1428" sy="1152" ex="1696" ey="1128"/>
<AILine0 sx="1696" sy="1128" ex="1904" ey="1244"/>
<AILine0 sx="1904" sy="1244" ex="1940" ey="1482"/>
<AILine0 sx="1940" sy="1482" ex="1780" ey="1692"/>
<AILine0 sx="1780" sy="1692" ex="1472" ey="1712"/>
<AILine0 sx="1472" sy="1712" ex="1340" ey="1824"/>
<AILine0 sx="1340" sy="1824" ex="1272" ey="2008"/>
<AILine0 sx="1272" sy="2008" ex="1124" ey="2084"/>
<AILine0 sx="1124" sy="2084" ex="928" ey="2076"/>
<AILine0 sx="928" sy="2076" ex="740" ey="2064"/>
<AILine0 sx="740" sy="2064" ex="654" ey="1884"/>
<AILine0 sx="654" sy="1884" ex="652" ey="1630"/>
</aisettings>
<block sx="0" sy="0" ex="2400" ey="2400">
<circle sx="418" sy="549" ex="606" ey="351" cx="404" cy="351"/>
<line sx="606" sy="351" ex="755" ey="350"/>
<circle sx="755" sy="350" ex="948" ey="559" cx="945" cy="360"/>
<line sx="948" sy="559" ex="957" ey="1028"/>
<arc sx="1253" sy="1282" ex="957" ey="1028" cx="954" cy="1303"/>
<line sx="1253" sy="1282" ex="1660" ey="1271"/>
<circle sx="1660" sy="1271" ex="1778" ey="1371" cx="1788" cy="1261"/>
</block>
<block>
<line sx="1778" sy="1371" ex="1782" ey="1456"/>
<circle sx="1782" sy="1456" ex="1668" ey="1550" cx="1787" cy="1560"/>
<line sx="1668" sy="1550" ex="1405" ey="1553"/>
<arc sx="1174" sy="1766" ex="1405" ey="1553" cx="1199" cy="1548"/>
<line sx="1174" sy="1766" ex="1153" ey="1865"/>
<circle sx="1153" sy="1865" ex="1009" ey="1968" cx="1131" cy="1967"/>
<line sx="1009" sy="1968" ex="915" ey="1969"/>
<circle sx="915" sy="1969" ex="790" ey="1848" cx="788" cy="1977"/>
</block>
<block>
<line sx="790" sy="1848" ex="786" ey="1209"/>
<arc sx="599" sy="954" ex="786" ey="1209" cx="801" cy="954"/>
<circle sx="599" sy="954" ex="417" ey="795" cx="414" cy="973"/>
<line sx="417" sy="795" ex="418" ey="549"/>
<arc sx="145" sy="374" ex="426" ey="102" cx="138" cy="97"/>
<line sx="986" sy="100" ex="426" ey="102"/>
<arc sx="986" sy="100" ex="1241" ey="408" cx="1257" cy="103"/>
<line sx="1247" sy="782" ex="1241" ey="408"/>
<circle sx="1495" sy="1000" ex="1247" ey="782" cx="1250" cy="1030"/>
<line sx="1777" sy="995" ex="1495" ey="1000"/>
</block>
<block>
<arc sx="1777" sy="995" ex="2080" ey="1265" cx="2080" cy="974"/>
<line sx="2083" sy="1573" ex="2080" ey="1265"/>
<arc sx="2083" sy="1573" ex="1840" ey="1807" cx="2099" cy="1814"/>
<line sx="1611" sy="1803" ex="1840" ey="1807"/>
<circle sx="1436" sy="1972" ex="1611" ey="1803" cx="1445" cy="1802"/>
<arc sx="1436" sy="1972" ex="1169" ey="2243" cx="1406" cy="2248"/>
<line sx="805" sy="2237" ex="1169" ey="2243"/>
<arc sx="805" sy="2237" ex="515" ey="1976" cx="517" cy="2250"/>
<line sx="517" sy="1401" ex="515" ey="1976"/>
<circle sx="331" sy="1199" ex="517" ey="1401" cx="520" cy="1191"/>
<arc sx="331" sy="1199" ex="146" ey="959" cx="146" cy="1220"/>
<line sx="148" sy="648" ex="146" ey="959"/>
<line sx="145" sy="374" ex="148" ey="648"/>
</block>
</world6>
<world7>
<bg ref="bg02_1" sx="0" sy="0" ex="1800" ey="1800" extra="-200_0_-200_0"/>
<bg ref="bg02_1" sx="1800" sy="0" ex="1800" ey="1800" extra="-200_0_0_0"/>
<bg ref="bg02_1" sx="0" sy="1800" ex="1800" ey="1800" extra="0_0_-200_0"/>
<bg ref="bg02_1" sx="1800" sy="1800" ex="1800" ey="1800" extra="0_0_0_0"/>
<mini sx="-1" sy="330" ex="0.045" ey="8"/>
<car sx="1874" sy="1169" ex="-90"/>
<car sx="100" sy="200" ex="-90"/>
<car sx="100" sy="300" ex="-90"/>
<car sx="100" sy="400" ex="-90"/>
<aisettings>
<AI sx="0.8" sy="70" ex="-2" ey="1"/>
<AI sx="0.8" sy="120" ex="-2" ey="2"/>
<AI sx="0.8" sy="170" ex="-2" ey="3"/>
<AILine0 sx="1901" sy="1213" ex="1897" ey="963"/>
<AILine0 sx="1897" sy="963" ex="1908" ey="764"/>
<AILine0 sx="1908" sy="764" ex="1930" ey="518"/>
<AILine0 sx="1930" sy="518" ex="2026" ey="305"/>
<AILine0 sx="2026" sy="305" ex="2290" ey="286"/>
<AILine0 sx="2290" sy="286" ex="2533" ey="397"/>
<AILine0 sx="2533" sy="397" ex="2548" ey="676"/>
<AILine0 sx="2548" sy="676" ex="2563" ey="900"/>
<AILine0 sx="2563" sy="900" ex="2548" ey="1132"/>
<AILine0 sx="2548" sy="1132" ex="2515" ey="1315"/>
<AILine0 sx="2515" sy="1315" ex="2305" ey="1400"/>
<AILine0 sx="2305" sy="1400" ex="2190" ey="1615"/>
<AILine0 sx="2190" sy="1615" ex="2305" ey="1810"/>
<AILine0 sx="2305" sy="1810" ex="2530" ey="1880"/>
<AILine0 sx="2530" sy="1880" ex="2555" ey="2135"/>
<AILine0 sx="2555" sy="2135" ex="2325" ey="2220"/>
<AILine0 sx="2325" sy="2220" ex="2074" ey="2195"/>
<AILine0 sx="2074" sy="2195" ex="1923" ey="2077"/>
<AILine0 sx="1923" sy="2077" ex="1750" ey="1897"/>
<AILine0 sx="1750" sy="1897" ex="1500" ey="1893"/>
<AILine0 sx="1500" sy="1893" ex="1246" ey="1890"/>
<AILine0 sx="1246" sy="1890" ex="1048" ey="2011"/>
<AILine0 sx="1048" sy="2011" ex="945" ey="2176"/>
<AILine0 sx="945" sy="2176" ex="768" ey="2217"/>
<AILine0 sx="768" sy="2217" ex="510" ey="2220"/>
<AILine0 sx="510" sy="2220" ex="355" ey="2035"/>
<AILine0 sx="355" sy="2035" ex="460" ey="1870"/>
<AILine0 sx="460" sy="1870" ex="655" ey="1815"/>
<AILine0 sx="655" sy="1815" ex="746" ey="1618"/>
<AILine0 sx="746" sy="1618" ex="660" ey="1425"/>
<AILine0 sx="660" sy="1425" ex="430" ey="1295"/>
<AILine0 sx="430" sy="1295" ex="356" ey="1106"/>
<AILine0 sx="356" sy="1106" ex="349" ey="878"/>
<AILine0 sx="349" sy="878" ex="360" ey="632"/>
<AILine0 sx="360" sy="632" ex="382" ey="437"/>
<AILine0 sx="382" sy="437" ex="514" ey="290"/>
<AILine0 sx="514" sy="290" ex="735" ey="290"/>
<AILine0 sx="735" sy="290" ex="981" ey="382"/>
<AILine0 sx="981" sy="382" ex="1014" ey="595"/>
<AILine0 sx="1014" sy="595" ex="1026" ey="812"/>
<AILine0 sx="1026" sy="812" ex="1026" ey="1014"/>
<AILine0 sx="1026" sy="1014" ex="1040" ey="1209"/>
<AILine0 sx="1040" sy="1209" ex="1173" ey="1367"/>
<AILine0 sx="1173" sy="1367" ex="1404" ey="1364"/>
<AILine0 sx="1404" sy="1364" ex="1676" ey="1364"/>
<AILine0 sx="1676" sy="1364" ex="1901" ey="1213"/>
</aisettings>
<block sx="0" sy="0" ex="4800" ey="4800">
<circle sx="491" sy="521" ex="573" ey="420" cx="480" cy="413"/>
<line sx="573" sy="420" ex="770" ey="421"/>
<circle sx="770" sy="421" ex="877" ey="539" cx="888" cy="414"/>
<line sx="877" sy="539" ex="877" ey="1201"/>
<arc sx="1157" sy="1484" ex="877" ey="1201" cx="885" cy="1468"/>
<line sx="1157" sy="1484" ex="1723" ey="1485"/>
<arc sx="2045" sy="1169" ex="1723" ey="1485" cx="2052" cy="1478"/>
<line sx="2045" sy="1169" ex="2046" ey="534"/>
<circle sx="2046" sy="534" ex="2161" ey="421" cx="2035" cy="409"/>
<line sx="2161" sy="421" ex="2321" ey="419"/>
<circle sx="2321" sy="419" ex="2431" ey="537" cx="2433" cy="416"/>
<line sx="2431" sy="537" ex="2429" ey="1138"/>
<circle sx="2429" sy="1138" ex="2350" ey="1236" cx="2433" cy="1227"/>
<arc sx="2044" sy="1510" ex="2350" ey="1236" cx="2118" cy="1270"/>
<arc sx="2126" sy="1873" ex="2044" ey="1510" cx="1990" cy="1701"/>
<arc sx="2316" sy="1973" ex="2126" ey="1873" cx="2222" cy="1981"/>
</block>
<block>
<circle sx="2316" sy="1973" ex="2377" ey="2021" cx="2377" cy="1968"/>
<circle sx="2377" sy="2021" ex="2323" ey="2072" cx="2380" cy="2077"/>
<line sx="2323" sy="2072" ex="2136" ey="2074"/>
<circle sx="2136" sy="2074" ex="2040" ey="1997" cx="2049" cy="2079"/>
<arc sx="1703" sy="1741" ex="2040" ey="1997" cx="1977" cy="1731"/>
<line sx="1703" sy="1741" ex="1191" ey="1742"/>
<arc sx="877" sy="1991" ex="1191" ey="1742" cx="938" cy="1747"/>
<circle sx="877" sy="1991" ex="779" ey="2074" cx="861" cy="2079"/>
<line sx="779" sy="2074" ex="573" ey="2079"/>
<circle sx="573" sy="2079" ex="494" ey="2037" cx="497" cy="2085"/>
<circle sx="494" sy="2037" ex="556" ey="1987" cx="487" cy="1982"/>
<arc sx="828" sy="1817" ex="556" ey="1987" cx="723" cy="1981"/>
<arc sx="837" sy="1397" ex="828" ey="1817" cx="941" cy="1643"/>
<arc sx="590" sy="1214" ex="837" ey="1397" cx="754" cy="1237"/>
<circle sx="590" sy="1214" ex="489" ey="1100" cx="486" cy="1205"/>
<line sx="489" sy="1100" ex="491" ey="808"/>
<line sx="491" sy="808" ex="491" ey="521"/>
</block>
<block>
<arc sx="210" sy="504" ex="476" ey="142" cx="208" cy="153"/>
<line sx="877" sy="140" ex="476" ey="142"/>
<arc sx="877" sy="140" ex="1158" ey="425" cx="1149" cy="147"/>
<line sx="1159" sy="1123" ex="1158" ey="425"/>
<circle sx="1259" sy="1220" ex="1159" ey="1123" cx="1155" cy="1226"/>
<line sx="1663" sy="1221" ex="1259" ey="1220"/>
<circle sx="1760" sy="1121" ex="1663" ey="1221" cx="1763" cy="1216"/>
<line sx="1765" sy="442" ex="1760" ey="1121"/>
<arc sx="1765" sy="442" ex="2032" ey="144" cx="1760" cy="147"/>
<line sx="2460" sy="145" ex="2032" ey="144"/>
<arc sx="2460" sy="145" ex="2711" ey="414" cx="2706" cy="159"/>
<line sx="2709" sy="1194" ex="2711" ey="414"/>
<arc sx="2709" sy="1194" ex="2489" ey="1469" cx="2709" cy="1447"/>
<circle sx="2346" sy="1581" ex="2489" ey="1469" cx="2344" cy="1480"/>
<circle sx="2489" sy="1720" ex="2346" ey="1581" cx="2341" cy="1720"/>
<arc sx="2489" sy="1720" ex="2709" ey="1924" cx="2707" cy="1715"/>
</block>
<block>
<line sx="2713" sy="2138" ex="2709" ey="1924"/>
<arc sx="2713" sy="2138" ex="2432" ey="2361" cx="2717" cy="2368"/>
<line sx="2047" sy="2360" ex="2432" ey="2361"/>
<arc sx="2047" sy="2360" ex="1765" ey="2134" cx="1796" cy="2372"/>
<circle sx="1648" sy="2029" ex="1765" ey="2134" cx="1752" cy="2023"/>
<line sx="1286" sy="2032" ex="1648" ey="2029"/>
<circle sx="1159" sy="2152" ex="1286" ey="2032" cx="1169" cy="2032"/>
<arc sx="1159" sy="2152" ex="887" ey="2364" cx="1123" cy="2361"/>
<line sx="518" sy="2362" ex="887" ey="2364"/>
<arc sx="518" sy="2362" ex="213" ey="2151" cx="236" cy="2362"/>
<line sx="206" sy="1944" ex="213" ey="2151"/>
<arc sx="206" sy="1944" ex="441" ey="1726" cx="212" cy="1734"/>
<circle sx="602" sy="1600" ex="441" ey="1726" cx="613" cy="1715"/>
<circle sx="453" sy="1475" ex="602" ey="1600" cx="587" cy="1475"/>
<arc sx="453" sy="1475" ex="218" ey="1232" cx="226" cy="1463"/>
<line sx="213" sy="960" ex="218" ey="1232"/>
<line sx="210" sy="504" ex="213" ey="960"/>
</block>
</world7>
<world8>
<bg ref="bg03_1" sx="0" sy="0" ex="1800" ey="1800" extra="-200_0_-300_0"/>
<bg ref="bg03_1" sx="1800" sy="0" ex="1800" ey="1800" extra="-200_0_0_0"/>
<bg ref="bg03_1" sx="0" sy="1800" ex="1800" ey="1800" extra="0_0_-200_0"/>
<bg ref="bg03_1" sx="1800" sy="1800" ex="1800" ey="1800" extra="0_0_0_0"/>
<mini sx="5" sy="325" ex="0.045" ey="9"/>
<car sx="325" sy="2270" ex="-90"/>
<car sx="100" sy="200" ex="-90"/>
<car sx="100" sy="300" ex="-90"/>
<car sx="100" sy="400" ex="-90"/>
<aisettings>
<AI sx="0.7" sy="90" ex="-2" ey="1"/>
<AI sx="0.7" sy="130" ex="-1" ey="2"/>
<AI sx="0.7" sy="170" ex="0" ey="3"/>
<AILine0 sx="372" sy="2361" ex="365" ey="2159"/>
<AILine0 sx="365" sy="2159" ex="384" ey="1960"/>
<AILine0 sx="384" sy="1960" ex="525" ey="1805"/>
<AILine0 sx="525" sy="1805" ex="735" ey="1795"/>
<AILine0 sx="735" sy="1795" ex="940" ey="1790"/>
<AILine0 sx="940" sy="1790" ex="1080" ey="1655"/>
<AILine0 sx="1080" sy="1655" ex="1080" ey="1420"/>
<AILine0 sx="1080" sy="1420" ex="1075" ey="1205"/>
<AILine0 sx="1075" sy="1205" ex="960" ey="1000"/>
<AILine0 sx="960" sy="1000" ex="710" ey="985"/>
<AILine0 sx="710" sy="985" ex="475" ey="970"/>
<AILine0 sx="475" sy="970" ex="260" ey="930"/>
<AILine0 sx="260" sy="930" ex="220" ey="745"/>
<AILine0 sx="220" sy="745" ex="255" ey="560"/>
<AILine0 sx="255" sy="560" ex="465" ey="535"/>
<AILine0 sx="465" sy="535" ex="695" ey="525"/>
<AILine0 sx="695" sy="525" ex="880" ey="395"/>
<AILine0 sx="880" sy="395" ex="1005" ey="225"/>
<AILine0 sx="1005" sy="225" ex="1225" ey="215"/>
<AILine0 sx="1225" sy="215" ex="1470" ey="220"/>
<AILine0 sx="1470" sy="220" ex="1670" ey="255"/>
<AILine0 sx="1670" sy="255" ex="1790" ey="430"/>
<AILine0 sx="1790" sy="430" ex="1995" ey="520"/>
<AILine0 sx="1995" sy="520" ex="2250" ey="525"/>
<AILine0 sx="2250" sy="525" ex="2415" ey="605"/>
<AILine0 sx="2415" sy="605" ex="2425" ey="760"/>
<AILine0 sx="2425" sy="760" ex="2285" ey="900"/>
<AILine0 sx="2285" sy="900" ex="2210" ey="1055"/>
<AILine0 sx="2210" sy="1055" ex="2235" ey="1215"/>
<AILine0 sx="2235" sy="1215" ex="2420" ey="1325"/>
<AILine0 sx="2420" sy="1325" ex="2425" ey="1560"/>
<AILine0 sx="2425" sy="1560" ex="2420" ey="1765"/>
<AILine0 sx="2420" sy="1765" ex="2425" ey="1965"/>
<AILine0 sx="2425" sy="1965" ex="2420" ey="2170"/>
<AILine0 sx="2420" sy="2170" ex="2410" ey="2390"/>
<AILine0 sx="2410" sy="2390" ex="2170" ey="2455"/>
<AILine0 sx="2170" sy="2455" ex="1920" ey="2450"/>
<AILine0 sx="1920" sy="2450" ex="1795" ey="2295"/>
<AILine0 sx="1795" sy="2295" ex="1650" ey="2160"/>
<AILine0 sx="1650" sy="2160" ex="1395" ey="2135"/>
<AILine0 sx="1395" sy="2135" ex="1215" ey="2200"/>
<AILine0 sx="1215" sy="2200" ex="1095" ey="2320"/>
<AILine0 sx="1095" sy="2320" ex="940" ey="2430"/>
<AILine0 sx="940" sy="2430" ex="725" ey="2460"/>
<AILine0 sx="725" sy="2460" ex="540" ey="2440"/>
<AILine0 sx="540" sy="2440" ex="372" ey="2361"/>
</aisettings>
<block sx="0" sy="0" ex="4800" ey="4800">
<circle sx="360" sy="700" ex="422" ey="653" cx="357" cy="650"/>
<line sx="422" sy="653" ex="740" ey="653"/>
<arc sx="989" sy="491" ex="740" ey="653" cx="924" cy="657"/>
<circle sx="989" sy="491" ex="1216" ey="354" cx="1013" cy="348"/>
<line sx="1216" sy="354" ex="1474" ey="357"/>
<circle sx="1474" sy="357" ex="1644" ey="469" cx="1620" cy="348"/>
<arc sx="1896" sy="656" ex="1644" ey="469" cx="1688" cy="663"/>
<line sx="1896" sy="656" ex="2179" ey="653"/>
<circle sx="2179" sy="653" ex="2272" ey="717" cx="2275" cy="640"/>
<circle sx="2272" sy="717" ex="2191" ey="789" cx="2278" cy="780"/>
<arc sx="2016" sy="1031" ex="2191" ey="789" cx="2014" cy="831"/>
<line sx="2016" sy="1031" ex="2016" ey="1176"/>
<arc sx="2201" sy="1382" ex="2016" ey="1176" cx="2019" cy="1331"/>
<circle sx="2201" sy="1382" ex="2290" ey="1514" cx="2288" cy="1413"/>
<line sx="2290" sy="1514" ex="2288" ey="2186"/>
</block>
<block>
<circle sx="2288" sy="2186" ex="2192" ey="2306" cx="2296" cy="2299"/>
<line sx="2192" sy="2306" ex="2075" ey="2305"/>
<circle sx="2075" sy="2305" ex="1925" ey="2219" cx="1967" cy="2320"/>
<arc sx="1592" sy="1979" ex="1925" ey="2219" cx="1844" cy="1985"/>
<line sx="1592" sy="1979" ex="1325" ey="1980"/>
<arc sx="1019" sy="2192" ex="1325" ey="1980" cx="1084" cy="1988"/>
<circle sx="1019" sy="2192" ex="788" ey="2308" cx="945" cy="2317"/>
<line sx="788" sy="2308" ex="607" ey="2306"/>
<circle sx="607" sy="2306" ex="502" ey="2225" cx="508" cy="2309"/>
<line sx="502" sy="2225" ex="502" ey="2045"/>
<circle sx="502" sy="2045" ex="600" ey="1951" cx="494" cy="1945"/>
<line sx="600" sy="1951" ex="957" ey="1949"/>
<arc sx="1229" sy="1693" ex="957" ey="1949" cx="1238" cy="1952"/>
<line sx="1229" sy="1693" ex="1220" ey="1134"/>
<arc sx="933" sy="838" ex="1220" ey="1134" cx="1208" cy="842"/>
<line sx="933" sy="838" ex="440" ey="829"/>
<circle sx="440" sy="829" ex="360" ey="779" cx="361" cy="835"/>
<line sx="360" sy="779" ex="360" ey="700"/>
</block>
<block>
<arc sx="72" sy="565" ex="303" ey="374" cx="74" cy="377"/>
<line sx="651" sy="374" ex="303" ey="374"/>
<circle sx="765" sy="257" ex="651" ey="374" cx="742" cy="373"/>
<arc sx="765" sy="257" ex="1029" ey="69" cx="782" cy="69"/>
<line sx="1632" sy="80" ex="1029" ey="69"/>
<arc sx="1632" sy="80" ex="1880" ey="256" cx="1848" cy="78"/>
<circle sx="2023" sy="376" ex="1880" ey="256" cx="1900" cy="377"/>
<line sx="2294" sy="370" ex="2023" ey="376"/>
<arc sx="2294" sy="370" ex="2571" ey="645" cx="2560" cy="364"/>
<line sx="2579" sy="859" ex="2571" ey="645"/>
<arc sx="2579" sy="859" ex="2459" ey="1001" cx="2588" cy="1002"/>
<circle sx="2325" sy="1091" ex="2459" ey="1001" cx="2320" cy="992"/>
<circle sx="2432" sy="1176" ex="2325" ey="1091" cx="2327" cy="1179"/>
<arc sx="2432" sy="1176" ex="2571" ey="1380" cx="2567" cy="1183"/>
<line sx="2571" sy="2323" ex="2571" ey="1380"/>
</block>
<block>
<arc sx="2571" sy="2323" ex="2346" ey="2604" cx="2582" cy="2589"/>
<line sx="1986" sy="2602" ex="2346" ey="2604"/>
<arc sx="1986" sy="2602" ex="1691" ey="2441" cx="1755" cy="2607"/>
<circle sx="1441" sy="2266" ex="1691" ey="2441" cx="1613" cy="2250"/>
<circle sx="1213" sy="2423" ex="1441" ey="2266" cx="1280" cy="2265"/>
<arc sx="1213" sy="2423" ex="952" ey="2585" cx="1152" cy="2573"/>
<line sx="450" sy="2583" ex="952" ey="2585"/>
<arc sx="450" sy="2583" ex="204" ey="2331" cx="207" cy="2588"/>
<line sx="204" sy="1908" ex="204" ey="2331"/>
<arc sx="204" sy="1908" ex="462" ey="1653" cx="200" cy="1654"/>
<line sx="808" sy="1653" ex="462" ey="1653"/>
<circle sx="936" sy="1520" ex="808" ey="1653" cx="951" cy="1656"/>
<line sx="930" sy="1234" ex="936" ey="1520"/>
<circle sx="819" sy="1120" ex="930" ey="1234" cx="931" cy="1115"/>
<line sx="315" sy="1115" ex="819" ey="1120"/>
<arc sx="315" sy="1115" ex="71" ey="905" cx="80" cy="1118"/>
<line sx="71" sy="780" ex="71" ey="905"/>
<line sx="72" sy="565" ex="71" ey="780"/>
</block>
</world8>
<world9>
<bg ref="bg04_1" sx="0" sy="0" ex="1800" ey="1800" extra="-200_0_-200_0"/>
<bg ref="bg04_1" sx="1800" sy="0" ex="1800" ey="1800" extra="-200_0_0_0"/>
<bg ref="bg04_1" sx="0" sy="1800" ex="1800" ey="1800" extra="0_0_-200_0"/>
<bg ref="bg04_1" sx="1800" sy="1800" ex="1800" ey="1800" extra="0_0_0_0"/>
<mini sx="11" sy="326.5" ex="0.042" ey="10"/>
<car sx="245" sy="2370" ex="-90"/>
<car sx="100" sy="200" ex="-90"/>
<car sx="100" sy="300" ex="-90"/>
<car sx="100" sy="400" ex="-90"/>
<block sx="0" sy="0" ex="4800" ey="4800">
<line sx="699" sy="629" ex="701" ey="406"/>
<circle sx="701" sy="406" ex="788" ey="321" cx="694" cy="317"/>
<line sx="788" sy="321" ex="2040" ey="319"/>
<circle sx="2040" sy="319" ex="2178" ey="383" cx="2137" cy="314"/>
<circle sx="2178" sy="383" ex="2128" ey="445" cx="2225" cy="445"/>
<line sx="2128" sy="445" ex="1949" ey="448"/>
<arc sx="1727" sy="652" ex="1949" ey="448" cx="1728" cy="449"/>
<line sx="1727" sy="652" ex="1723" ey="993"/>
<line sx="1723" sy="993" ex="1720" ey="1487"/>
<circle sx="1720" sy="1487" ex="1551" ey="1629" cx="1728" cy="1623"/>
<arc sx="1350" sy="1823" ex="1551" ey="1629" cx="1346" cy="1631"/>
<line sx="1350" sy="1823" ex="1346" ey="2110"/>
<line sx="1346" sy="2110" ex="1343" ey="2282"/>
</block>
<block>
<circle sx="1343" sy="2282" ex="1208" ey="2402" cx="1344" cy="2409"/>
<line sx="1208" sy="2402" ex="470" ey="2403"/>
<circle sx="470" sy="2403" ex="370" ey="2310" cx="369" cy="2409"/>
<line sx="370" sy="2310" ex="370" ey="2111"/>
<circle sx="370" sy="2111" ex="466" ey="2022" cx="367" cy="2017"/>
<line sx="466" sy="2022" ex="600" ey="2024"/>
<arc sx="891" sy="1861" ex="600" ey="2024" cx="821" cy="2023"/>
<line sx="891" sy="1861" ex="964" ey="1688"/>
<circle sx="964" sy="1688" ex="1120" ey="1584" cx="1000" cy="1585"/>
<line sx="1120" sy="1584" ex="1259" ey="1581"/>
<arc sx="1540" sy="1255" ex="1259" ey="1581" cx="1533" cy="1544"/>
<line sx="1540" sy="1255" ex="1537" ey="1037"/>
<arc sx="1211" sy="718" ex="1537" ey="1037" cx="1529" cy="755"/>
<line sx="1211" sy="718" ex="803" ey="718"/>
<circle sx="803" sy="718" ex="699" ey="629" cx="702" cy="723"/>
</block>
<block>
<line sx="422" sy="306" ex="419" ey="741"/>
<arc sx="422" sy="306" ex="731" ey="40" cx="434" cy="42"/>
<line sx="2002" sy="37" ex="731" ey="40"/>
<arc sx="2002" sy="37" ex="2487" ey="277" cx="2321" cy="37"/>
<arc sx="2487" sy="277" ex="2531" ey="576" cx="2600" cy="438"/>
<arc sx="2531" sy="576" ex="2287" ey="708" cx="2463" cy="709"/>
<line sx="2089" sy="708" ex="2287" ey="708"/>
<circle sx="1985" sy="812" ex="2089" ey="708" cx="1977" cy="708"/>
<line sx="1986" sy="1694" ex="1985" ey="812"/>
<arc sx="1986" sy="1694" ex="1795" ey="1894" cx="1991" cy="1897"/>
<circle sx="1617" sy="2057" ex="1795" ey="1894" cx="1608" cy="1891"/>
</block>
<block>
<line sx="1617" sy="2488" ex="1617" ey="2057"/>
<arc sx="1617" sy="2488" ex="1392" ey="2696" cx="1613" cy="2694"/>
<line sx="331" sy="2684" ex="1392" ey="2696"/>
<arc sx="331" sy="2684" ex="71" ey="2435" cx="69" cy="2689"/>
<line sx="82" sy="1961" ex="71" ey="2435"/>
<arc sx="82" sy="1961" ex="349" ey="1742" cx="82" cy="1731"/>
<line sx="486" sy="1742" ex="349" ey="1742"/>
<circle sx="696" sy="1547" ex="486" ey="1742" cx="645" cy="1740"/>
<arc sx="696" sy="1547" ex="1000" ey="1308" cx="740" cy="1325"/>
<line sx="1155" sy="1303" ex="1000" ey="1308"/>
<circle sx="1256" sy="1208" ex="1155" ey="1303" cx="1256" cy="1309"/>
<line sx="1256" sy="1102" ex="1256" ey="1208"/>
<circle sx="1134" sy="1005" ex="1256" ey="1102" cx="1248" cy="988"/>
<line sx="669" sy="1007" ex="1134" ey="1005"/>
<arc sx="669" sy="1007" ex="419" ey="741" cx="419" cy="999"/>
</block>
<aisettings>
<AI sx="0.78" sy="190" ex="-2" ey="1"/>
<AI sx="0.78" sy="260" ex="-1" ey="2"/>
<AI sx="0.78" sy="340" ex="0" ey="3"/>
<AILine0 sx="255" sy="2490" ex="250" ey="2280"/>
<AILine0 sx="250" sy="2280" ex="255" ey="2075"/>
<AILine0 sx="255" sy="2075" ex="295" ey="1900"/>
<AILine0 sx="295" sy="1900" ex="510" ey="1875"/>
<AILine0 sx="510" sy="1875" ex="735" ey="1835"/>
<AILine0 sx="735" sy="1835" ex="840" ey="1630"/>
<AILine0 sx="840" sy="1630" ex="945" ey="1475"/>
<AILine0 sx="945" sy="1475" ex="1185" ey="1440"/>
<AILine0 sx="1185" sy="1440" ex="1355" ey="1380"/>
<AILine0 sx="1355" sy="1380" ex="1380" ey="1140"/>
<AILine0 sx="1380" sy="1140" ex="1350" ey="920"/>
<AILine0 sx="1350" sy="920" ex="1135" ey="845"/>
<AILine0 sx="1135" sy="845" ex="850" ey="855"/>
<AILine0 sx="850" sy="855" ex="640" ey="820"/>
<AILine0 sx="640" sy="820" ex="560" ey="590"/>
<AILine0 sx="560" sy="590" ex="575" ey="365"/>
<AILine0 sx="575" sy="365" ex="630" ey="210"/>
<AILine0 sx="630" sy="210" ex="855" ey="190"/>
<AILine0 sx="855" sy="190" ex="1150" ey="185"/>
<AILine0 sx="1150" sy="185" ex="1415" ey="180"/>
<AILine0 sx="1415" sy="180" ex="1690" ey="170"/>
<AILine0 sx="1690" sy="170" ex="1960" ey="175"/>
<AILine0 sx="1960" sy="175" ex="2175" ey="225"/>
<AILine0 sx="2175" sy="225" ex="2350" ey="350"/>
<AILine0 sx="2350" sy="350" ex="2380" ey="525"/>
<AILine0 sx="2380" sy="525" ex="2160" ey="565"/>
<AILine0 sx="2160" sy="565" ex="1945" ey="595"/>
<AILine0 sx="1945" sy="595" ex="1855" ey="755"/>
<AILine0 sx="1855" sy="755" ex="1855" ey="945"/>
<AILine0 sx="1855" sy="945" ex="1850" ey="1150"/>
<AILine0 sx="1850" sy="1150" ex="1845" ey="1365"/>
<AILine0 sx="1845" sy="1365" ex="1845" ey="1530"/>
<AILine0 sx="1845" sy="1530" ex="1810" ey="1730"/>
<AILine0 sx="1810" sy="1730" ex="1665" ey="1770"/>
<AILine0 sx="1665" sy="1770" ex="1520" ey="1810"/>
<AILine0 sx="1520" sy="1810" ex="1500" ey="2015"/>
<AILine0 sx="1500" sy="2015" ex="1495" ey="2220"/>
<AILine0 sx="1495" sy="2220" ex="1485" ey="2355"/>
<AILine0 sx="1485" sy="2355" ex="1440" ey="2515"/>
<AILine0 sx="1440" sy="2515" ex="1255" ey="2560"/>
<AILine0 sx="1255" sy="2560" ex="1030" ey="2565"/>
<AILine0 sx="1030" sy="2565" ex="815" ey="2575"/>
<AILine0 sx="815" sy="2575" ex="600" ey="2570"/>
<AILine0 sx="600" sy="2570" ex="425" ey="2550"/>
<AILine0 sx="425" sy="2550" ex="255" ey="2490"/>
</aisettings>
</world9>
<world10>
<bg ref="bg05_1" sx="0" sy="0" ex="1800" ey="1800" extra="-200_0_-200_0"/>
<bg ref="bg05_1" sx="1800" sy="0" ex="1800" ey="1800" extra="-200_0_0_0"/>
<bg ref="bg05_1" sx="0" sy="1800" ex="1800" ey="1800" extra="0_0_-200_0"/>
<bg ref="bg05_1" sx="1800" sy="1800" ex="1800" ey="1800" extra="0_0_0_0"/>
<mini sx="9" sy="327" ex="0.04" ey="11"/>
<car sx="1520" sy="1364" ex="-90"/>
<car sx="100" sy="200" ex="-90"/>
<car sx="100" sy="300" ex="-90"/>
<car sx="100" sy="400" ex="-90"/>
<aisettings>
<AI sx="0.75" sy="250" ex="-2" ey="1"/>
<AI sx="0.70" sy="300" ex="-1" ey="2"/>
<AI sx="0.66" sy="350" ex="0" ey="3"/>
<AILine0 sx="1565" sy="1500" ex="1554" ey="1279"/>
<AILine0 sx="1554" sy="1279" ex="1554" ey="1066"/>
<AILine0 sx="1554" sy="1066" ex="1528" ey="864"/>
<AILine0 sx="1528" sy="864" ex="1426" ey="687"/>
<AILine0 sx="1426" sy="687" ex="1201" ey="636"/>
<AILine0 sx="1201" sy="636" ex="1017" ey="761"/>
<AILine0 sx="1017" sy="761" ex="837" ey="801"/>
<AILine0 sx="837" sy="801" ex="661" ey="687"/>
<AILine0 sx="661" sy="687" ex="567" ey="529"/>
<AILine0 sx="567" sy="529" ex="598" ey="349"/>
<AILine0 sx="598" sy="349" ex="734" ey="228"/>
<AILine0 sx="734" sy="228" ex="958" ey="180"/>
<AILine0 sx="958" sy="180" ex="1168" ey="176"/>
<AILine0 sx="1168" sy="176" ex="1403" ey="176"/>
<AILine0 sx="1403" sy="176" ex="1595" ey="272"/>
<AILine0 sx="1595" sy="272" ex="1731" ey="444"/>
<AILine0 sx="1731" sy="444" ex="1845" ey="584"/>
<AILine0 sx="1845" sy="584" ex="1959" ey="728"/>
<AILine0 sx="1959" sy="728" ex="2087" ey="882"/>
<AILine0 sx="2087" sy="882" ex="2195" ey="1025"/>
<AILine0 sx="2195" sy="1025" ex="2410" ey="1050"/>
<AILine0 sx="2410" sy="1050" ex="2565" ey="1070"/>
<AILine0 sx="2565" sy="1070" ex="2595" ey="1305"/>
<AILine0 sx="2595" sy="1305" ex="2600" ey="1515"/>
<AILine0 sx="2600" sy="1515" ex="2595" ey="1705"/>
<AILine0 sx="2595" sy="1705" ex="2420" ey="1870"/>
<AILine0 sx="2420" sy="1870" ex="2360" ey="2090"/>
<AILine0 sx="2360" sy="2090" ex="2360" ey="2290"/>
<AILine0 sx="2360" sy="2290" ex="2350" ey="2490"/>
<AILine0 sx="2350" sy="2490" ex="2265" ey="2660"/>
<AILine0 sx="2265" sy="2660" ex="2090" ey="2700"/>
<AILine0 sx="2090" sy="2700" ex="1970" ey="2570"/>
<AILine0 sx="1970" sy="2570" ex="1850" ey="2470"/>
<AILine0 sx="1850" sy="2470" ex="1650" ey="2445"/>
<AILine0 sx="1650" sy="2445" ex="1515" ey="2560"/>
<AILine0 sx="1515" sy="2560" ex="1430" ey="2665"/>
<AILine0 sx="1430" sy="2665" ex="1265" ey="2695"/>
<AILine0 sx="1265" sy="2695" ex="1120" ey="2600"/>
<AILine0 sx="1120" sy="2600" ex="1020" ey="2470"/>
<AILine0 sx="1020" sy="2470" ex="860" ey="2435"/>
<AILine0 sx="860" sy="2435" ex="720" ey="2515"/>
<AILine0 sx="720" sy="2515" ex="620" ey="2635"/>
<AILine0 sx="620" sy="2635" ex="465" ey="2675"/>
<AILine0 sx="465" sy="2675" ex="335" ey="2575"/>
<AILine0 sx="335" sy="2575" ex="345" ey="2355"/>
<AILine0 sx="345" sy="2355" ex="340" ey="2145"/>
<AILine0 sx="340" sy="2145" ex="240" ey="2050"/>
<AILine0 sx="240" sy="2050" ex="195" ey="1910"/>
<AILine0 sx="195" sy="1910" ex="255" ey="1755"/>
<AILine0 sx="255" sy="1755" ex="465" ey="1750"/>
<AILine0 sx="465" sy="1750" ex="685" ey="1730"/>
<AILine0 sx="685" sy="1730" ex="750" ey="1565"/>
<AILine0 sx="750" sy="1565" ex="745" ey="1350"/>
<AILine0 sx="745" sy="1350" ex="780" ey="1170"/>
<AILine0 sx="780" sy="1170" ex="960" ey="1150"/>
<AILine0 sx="960" sy="1150" ex="1110" ey="1195"/>
<AILine0 sx="1110" sy="1195" ex="1145" ey="1380"/>
<AILine0 sx="1145" sy="1380" ex="1155" ey="1555"/>
<AILine0 sx="1155" sy="1555" ex="1145" ey="1760"/>
<AILine0 sx="1145" sy="1760" ex="1160" ey="1920"/>
<AILine0 sx="1160" sy="1920" ex="1250" ey="2040"/>
<AILine0 sx="1250" sy="2040" ex="1405" ey="2080"/>
<AILine0 sx="1405" sy="2080" ex="1590" ey="2090"/>
<AILine0 sx="1590" sy="2090" ex="1760" ey="2080"/>
<AILine0 sx="1760" sy="2080" ex="1925" ey="2040"/>
<AILine0 sx="1925" sy="2040" ex="1970" ey="1875"/>
<AILine0 sx="1970" sy="1875" ex="1995" ey="1725"/>
<AILine0 sx="1995" sy="1725" ex="1865" ey="1605"/>
<AILine0 sx="1865" sy="1605" ex="1665" ey="1610"/>
<AILine0 sx="1665" sy="1610" ex="1565" ey="1500"/>
</aisettings>
<block sx="0" sy="0" ex="4800" ey="4800">
<circle sx="748" sy="610" ex="729" ey="400" cx="659" cy="517"/>
<circle sx="729" sy="400" ex="894" ey="329" cx="765" cy="334"/>
<line sx="894" sy="329" ex="1388" ey="325"/>
<circle sx="1388" sy="325" ex="1492" ey="377" cx="1458" cy="321"/>
<line sx="1492" sy="377" ex="2077" ey="1085"/>
<arc sx="2313" sy="1180" ex="2077" ey="1085" cx="2152" cy="1188"/>
<line sx="2313" sy="1180" ex="2411" ey="1177"/>
<circle sx="2411" sy="1177" ex="2480" ey="1265" cx="2478" cy="1185"/>
<line sx="2480" sy="1265" ex="2479" ey="1470"/>
<line sx="2479" sy="1470" ex="2482" ey="1604"/>
<circle sx="2482" sy="1604" ex="2370" ey="1743" cx="2489" cy="1695"/>
<arc sx="2226" sy="2019" ex="2370" ey="1743" cx="2244" cy="1797"/>
<line sx="2226" sy="2019" ex="2209" ey="2485"/>
<circle sx="2209" sy="2485" ex="2144" ey="2541" cx="2209" cy="2535"/>
<circle sx="2144" sy="2541" ex="2055" ey="2481" cx="2077" cy="2559"/>
<arc sx="1722" sy="2292" ex="2055" ey="2481" cx="1957" cy="2299"/>
<arc sx="1385" sy="2477" ex="1722" ey="2292" cx="1485" cy="2294"/>
<circle sx="1385" sy="2477" ex="1296" ey="2537" cx="1368" cy="2531"/>
<circle sx="1296" sy="2537" ex="1203" ey="2477" cx="1229" cy="2538"/>
<arc sx="905" sy="2286" ex="1203" ey="2477" cx="1117" cy="2314"/>
</block>
<block>
<arc sx="591" sy="2443" ex="905" ey="2286" cx="666" cy="2286"/>
<circle sx="591" sy="2443" ex="509" ey="2509" cx="571" cy="2518"/>
<circle sx="509" sy="2509" ex="464" ey="2437" cx="451" cy="2504"/>
<line sx="464" sy="2437" ex="492" ey="2177"/>
<arc sx="431" sy="2028" ex="492" ey="2177" cx="514" cy="2059"/>
<circle sx="431" sy="2028" ex="332" ey="1931" cx="334" cy="1997"/>
<circle sx="332" sy="1931" ex="405" ey="1867" cx="331" cy="1865"/>
<line sx="405" sy="1867" ex="633" ey="1870"/>
<arc sx="880" sy="1607" ex="633" ey="1870" cx="877" cy="1871"/>
<line sx="880" sy="1607" ex="885" ey="1388"/>
<circle sx="885" sy="1388" ex="945" ey="1298" cx="877" cy="1298"/>
<circle sx="945" sy="1298" ex="1011" ey="1390" cx="1019" cy="1289"/>
<line sx="1011" sy="1390" ex="1009" ey="1877"/>
<arc sx="1340" sy="2233" ex="1009" ey="1877" cx="1008" cy="2218"/>
<line sx="1340" sy="2233" ex="1825" ey="2233"/>
<arc sx="2118" sy="1981" ex="1825" ey="2233" cx="2105" cy="2228"/>
<line sx="2118" sy="1981" ex="2122" ey="1755"/>
<arc sx="1878" sy="1473" ex="2122" ey="1755" cx="2119" cy="1481"/>
<line sx="1878" sy="1473" ex="1780" ey="1476"/>
<circle sx="1780" sy="1476" ex="1687" ey="1374" cx="1680" cy="1477"/>
<line sx="1687" sy="1374" ex="1679" ey="864"/>
<arc sx="1446" sy="571" ex="1679" ey="864" cx="1668" cy="637"/>
<line sx="1446" sy="571" ex="1198" ey="503"/>
<arc sx="951" sy="594" ex="1198" ey="503" cx="1028" cy="465"/>
<circle sx="951" sy="594" ex="748" ey="610" cx="869" cy="700"/>
</block>
<block>
<arc sx="423" sy="646" ex="454" ey="284" cx="339" cy="462"/>
<arc sx="454" sy="284" ex="844" ey="55" cx="588" cy="73"/>
<line sx="1437" sy="48" ex="844" ey="55"/>
<arc sx="1437" sy="48" ex="1666" ey="151" cx="1594" cy="52"/>
<line sx="2229" sy="844" ex="1666" ey="151"/>
<circle sx="2457" sy="905" ex="2229" ey="844" cx="2281" cy="917"/>
<arc sx="2457" sy="905" ex="2744" ey="1166" cx="2736" cy="897"/>
<line sx="2744" sy="1629" ex="2744" ey="1166"/>
<arc sx="2744" sy="1629" ex="2658" ey="1823" cx="2743" cy="1766"/>
<line sx="2560" sy="1916" ex="2658" ey="1823"/>
<circle sx="2504" sy="2048" ex="2560" ey="1916" cx="2499" cy="1968"/>
<line sx="2488" sy="2526" ex="2504" ey="2048"/>
<arc sx="2488" sy="2526" ex="2163" ey="2825" cx="2485" cy="2780"/>
<arc sx="2163" sy="2825" ex="1837" ey="2663" cx="1902" cy="2843"/>
<circle sx="1725" sy="2577" ex="1837" ey="2663" cx="1807" cy="2577"/>
<circle sx="1600" sy="2663" ex="1725" ey="2577" cx="1629" cy="2573"/>
<arc sx="1600" sy="2663" ex="1304" ey="2823" cx="1560" cy="2811"/>
<arc sx="1304" sy="2823" ex="1007" ey="2688" cx="1075" cy="2835"/>
<circle sx="891" sy="2574" ex="1007" ey="2688" cx="976" cy="2574"/>
</block>
<block>
<circle sx="776" sy="2683" ex="891" ey="2574" cx="803" cy="2580"/>
<arc sx="776" sy="2683" ex="423" ey="2811" cx="716" cy="2817"/>
<arc sx="423" sy="2811" ex="163" ey="2551" cx="143" cy="2783"/>
<line sx="183" sy="2280" ex="163" ey="2551"/>
<circle sx="128" sy="2152" ex="183" ey="2280" cx="192" cy="2195"/>
<arc sx="128" sy="2152" ex="38" ey="1840" cx="19" cy="2083"/>
<arc sx="38" sy="1840" ex="307" ey="1588" cx="66" cy="1613"/>
<line sx="525" sy="1588" ex="307" ey="1588"/>
<circle sx="607" sy="1500" ex="525" ey="1588" cx="611" cy="1596"/>
<line sx="607" sy="1259" ex="607" ey="1500"/>
<arc sx="607" sy="1259" ex="780" ey="1019" cx="600" cy="1020"/>
<line sx="1064" sy="1011" ex="780" ey="1019"/>
<arc sx="1064" sy="1011" ex="1280" ey="1223" cx="1275" cy="1007"/>
<line sx="1294" sy="1843" ex="1280" ey="1223"/>
<circle sx="1433" sy="1951" ex="1294" ey="1843" cx="1298" cy="1951"/>
<line sx="1759" sy="1951" ex="1433" ey="1951"/>
<circle sx="1851" sy="1851" ex="1759" ey="1951" cx="1856" cy="1946"/>
<circle sx="1748" sy="1755" ex="1851" ey="1851" cx="1845" cy="1745"/>
<line sx="1610" sy="1756" ex="1748" ey="1755"/>
<arc sx="1610" sy="1756" ex="1407" ey="1545" cx="1407" cy="1762"/>
<line sx="1399" sy="1074" ex="1407" ey="1545"/>
<line sx="1398" sy="943" ex="1399" ey="1074"/>
<circle sx="1271" sy="768" ex="1398" ey="943" cx="1401" cy="793"/>
<circle sx="1145" sy="818" ex="1271" ey="768" cx="1185" cy="751"/>
<arc sx="1145" sy="818" ex="912" ey="924" cx="1087" cy="911"/>
<arc sx="912" sy="924" ex="423" ey="646" cx="555" cy="928"/>
</block>
</world10>
<world11>
<bg ref="bg06_1" sx="0" sy="0" ex="1800" ey="1800" extra="-200_0_-200_0"/>
<bg ref="bg06_1" sx="1800" sy="0" ex="1800" ey="1800" extra="-200_0_0_0"/>
<bg ref="bg06_1" sx="0" sy="1800" ex="1800" ey="1800" extra="0_0_-300_0"/>
<bg ref="bg06_1" sx="1800" sy="1800" ex="1800" ey="1800" extra="0_0_0_0"/>
<mini sx="8" sy="326" ex="0.041" ey="12"/>
<car sx="1720" sy="1991" ex="-90"/>
<car sx="100" sy="200" ex="-90"/>
<car sx="100" sy="300" ex="-90"/>
<car sx="100" sy="400" ex="-90"/>
<aisettings>
<AI sx="0.74" sy="340" ex="-2" ey="1"/>
<AI sx="0.69" sy="410" ex="-1" ey="2"/>
<AI sx="0.65" sy="500" ex="0" ey="3"/>
<AILine0 sx="1750" sy="2382" ex="1713" ey="2216"/>
<AILine0 sx="1713" sy="2216" ex="1706" ey="2036"/>
<AILine0 sx="1706" sy="2036" ex="1702" ey="1852"/>
<AILine0 sx="1702" sy="1852" ex="1698" ey="1668"/>
<AILine0 sx="1698" sy="1668" ex="1691" ey="1528"/>
<AILine0 sx="1691" sy="1528" ex="1673" ey="1359"/>
<AILine0 sx="1673" sy="1359" ex="1651" ey="1231"/>
<AILine0 sx="1651" sy="1231" ex="1470" ey="1209"/>
<AILine0 sx="1470" sy="1209" ex="1290" ey="1249"/>
<AILine0 sx="1290" sy="1249" ex="1261" ey="1433"/>
<AILine0 sx="1261" sy="1433" ex="1257" ey="1609"/>
<AILine0 sx="1257" sy="1609" ex="1253" ey="1790"/>
<AILine0 sx="1253" sy="1790" ex="1250" ey="1963"/>
<AILine0 sx="1250" sy="1963" ex="1265" ey="2114"/>
<AILine0 sx="1265" sy="2114" ex="1265" ey="2261"/>
<AILine0 sx="1265" sy="2261" ex="1217" ey="2368"/>
<AILine0 sx="1217" sy="2368" ex="1040" ey="2397"/>
<AILine0 sx="1040" sy="2397" ex="937" ey="2493"/>
<AILine0 sx="937" sy="2493" ex="849" ey="2621"/>
<AILine0 sx="849" sy="2621" ex="684" ey="2662"/>
<AILine0 sx="684" sy="2662" ex="562" ey="2599"/>
<AILine0 sx="562" sy="2599" ex="507" ey="2489"/>
<AILine0 sx="507" sy="2489" ex="360" ey="2412"/>
<AILine0 sx="360" sy="2412" ex="239" ey="2324"/>
<AILine0 sx="239" sy="2324" ex="202" ey="2176"/>
<AILine0 sx="202" sy="2176" ex="275" ey="2033"/>
<AILine0 sx="275" sy="2033" ex="459" ey="2015"/>
<AILine0 sx="459" sy="2015" ex="628" ey="2015"/>
<AILine0 sx="628" sy="2015" ex="775" ey="1993"/>
<AILine0 sx="775" sy="1993" ex="801" ey="1835"/>
<AILine0 sx="801" sy="1835" ex="801" ey="1665"/>
<AILine0 sx="801" sy="1665" ex="786" ey="1496"/>
<AILine0 sx="786" sy="1496" ex="636" ey="1456"/>
<AILine0 sx="636" sy="1456" ex="551" ey="1331"/>
<AILine0 sx="551" sy="1331" ex="547" ey="1187"/>
<AILine0 sx="547" sy="1187" ex="525" ey="1048"/>
<AILine0 sx="525" sy="1048" ex="367" ey="1000"/>
<AILine0 sx="367" sy="1000" ex="250" ey="952"/>
<AILine0 sx="250" sy="952" ex="246" ey="816"/>
<AILine0 sx="246" sy="816" ex="316" ey="661"/>
<AILine0 sx="316" sy="661" ex="463" ey="628"/>
<AILine0 sx="463" sy="628" ex="617" ey="621"/>
<AILine0 sx="617" sy="621" ex="790" ey="614"/>
<AILine0 sx="790" sy="614" ex="967" ey="617"/>
<AILine0 sx="967" sy="617" ex="1147" ey="584"/>
<AILine0 sx="1147" sy="584" ex="1253" ey="463"/>
<AILine0 sx="1253" sy="463" ex="1316" ey="345"/>
<AILine0 sx="1316" sy="345" ex="1397" ey="224"/>
<AILine0 sx="1397" sy="224" ex="1551" ey="198"/>
<AILine0 sx="1551" sy="198" ex="1717" ey="187"/>
<AILine0 sx="1717" sy="187" ex="1879" ey="183"/>
<AILine0 sx="1879" sy="183" ex="2055" ey="194"/>
<AILine0 sx="2055" sy="194" ex="2180" ey="235"/>
<AILine0 sx="2180" sy="235" ex="2210" ey="404"/>
<AILine0 sx="2210" sy="404" ex="2202" ey="562"/>
<AILine0 sx="2202" sy="562" ex="2210" ey="713"/>
<AILine0 sx="2210" sy="713" ex="2279" ey="856"/>
<AILine0 sx="2279" sy="856" ex="2460" ey="853"/>
<AILine0 sx="2460" sy="853" ex="2632" ey="937"/>
<AILine0 sx="2632" sy="937" ex="2651" ey="1088"/>
<AILine0 sx="2651" sy="1088" ex="2651" ey="1239"/>
<AILine0 sx="2651" sy="1239" ex="2614" ey="1364"/>
<AILine0 sx="2614" sy="1364" ex="2460" ey="1371"/>
<AILine0 sx="2460" sy="1371" ex="2298" ey="1382"/>
<AILine0 sx="2298" sy="1382" ex="2165" ey="1404"/>
<AILine0 sx="2165" sy="1404" ex="2110" ey="1533"/>
<AILine0 sx="2110" sy="1533" ex="2103" ey="1676"/>
<AILine0 sx="2103" sy="1676" ex="2129" ey="1779"/>
<AILine0 sx="2129" sy="1779" ex="2210" ey="1871"/>
<AILine0 sx="2210" sy="1871" ex="2342" ey="1897"/>
<AILine0 sx="2342" sy="1897" ex="2445" ey="1974"/>
<AILine0 sx="2445" sy="1974" ex="2489" ey="2121"/>
<AILine0 sx="2489" sy="2121" ex="2456" ey="2261"/>
<AILine0 sx="2456" sy="2261" ex="2404" ey="2379"/>
<AILine0 sx="2404" sy="2379" ex="2272" ey="2397"/>
<AILine0 sx="2272" sy="2397" ex="2140" ey="2397"/>
<AILine0 sx="2140" sy="2397" ex="2018" ey="2404"/>
<AILine0 sx="2018" sy="2404" ex="1904" ey="2416"/>
<AILine0 sx="1904" sy="2416" ex="1750" ey="2382"/>
</aisettings>
<block sx="0" sy="0" ex="4800" ey="4800">
<circle sx="1447" sy="414" ex="1573" ey="322" cx="1478" cy="327"/>
<line sx="1573" sy="322" ex="1951" ey="318"/>
<circle sx="1951" sy="318" ex="2069" ey="429" cx="2068" cy="314"/>
<line sx="2069" sy="429" ex="2070" ey="751"/>
<arc sx="2385" sy="1003" ex="2070" ey="751" cx="2075" cy="1029"/>
<circle sx="2385" sy="1003" ex="2529" ey="1111" cx="2534" cy="991"/>
<circle sx="2529" sy="1111" ex="2396" ey="1225" cx="2521" cy="1223"/>
<line sx="2396" sy="1225" ex="2211" ey="1225"/>
<arc sx="1948" sy="1525" ex="2211" ey="1225" cx="1946" cy="1229"/>
<line sx="1948" sy="1525" ex="1951" ey="1796"/>
<arc sx="2229" sy="2048" ex="1951" ey="1796" cx="1962" cy="2037"/>
<circle sx="2229" sy="2048" ex="2344" ey="2170" cx="2345" cy="2047"/>
<circle sx="2344" sy="2170" ex="2214" ey="2277" cx="2339" cy="2275"/>
<line sx="2214" sy="2277" ex="1937" ey="2277"/>
<circle sx="1937" sy="2277" ex="1837" ey="2170" cx="1831" cy="2274"/>
<line sx="1837" sy="2170" ex="1831" ey="1353"/>
</block>
<block>
<arc sx="1603" sy="1072" ex="1831" ey="1353" cx="1837" cy="1074"/>
<line sx="1603" sy="1072" ex="1344" ey="1074"/>
<arc sx="1103" sy="1348" ex="1344" ey="1074" cx="1115" cy="1081"/>
<line sx="1103" sy="1348" ex="1122" ey="2148"/>
<circle sx="1122" sy="2148" ex="1011" ey="2274" cx="1133" cy="2271"/>
<arc sx="792" sy="2425" ex="1011" ey="2274" cx="828" cy="2279"/>
<circle sx="792" sy="2425" ex="703" ey="2503" cx="781" cy="2502"/>
<circle sx="703" sy="2503" ex="620" ey="2414" cx="644" cy="2500"/>
<arc sx="414" sy="2274" ex="620" ey="2414" cx="571" cy="2271"/>
<circle sx="414" sy="2274" ex="318" ey="2200" cx="330" cy="2284"/>
<circle sx="318" sy="2200" ex="414" ey="2125" cx="321" cy="2115"/>
<line sx="414" sy="2125" ex="666" ey="2129"/>
<arc sx="970" sy="1822" ex="666" ey="2129" cx="974" cy="2140"/>
<line sx="970" sy="1822" ex="962" ey="1510"/>
<arc sx="796" sy="1307" ex="962" ey="1510" cx="960" cy="1287"/>
<circle sx="796" sy="1307" ex="685" ey="1240" cx="684" cy="1323"/>
<line sx="685" sy="1240" ex="692" ey="1077"/>
<arc sx="481" sy="896" ex="692" ey="1077" cx="685" cy="888"/>
<circle sx="481" sy="896" ex="407" ey="818" cx="404" cy="897"/>
<circle sx="407" sy="818" ex="485" ey="737" cx="404" cy="736"/>
<line sx="485" sy="737" ex="1068" ey="737"/>
<arc sx="1383" sy="540" ex="1068" ey="737" cx="1271" cy="730"/>
<line sx="1383" sy="540" ex="1447" ey="414"/>
</block>
<block>
<circle sx="1121" sy="290" ex="936" ey="457" cx="1082" cy="451"/>
<arc sx="1121" sy="290" ex="1437" ey="42" cx="1183" cy="48"/>
<line sx="1623" sy="41" ex="1437" ey="42"/>
<line sx="2087" sy="38" ex="1623" ey="41"/>
<arc sx="2087" sy="38" ex="2351" ey="322" cx="2351" cy="38"/>
<line sx="2349" sy="614" ex="2351" ey="322"/>
<circle sx="2485" sy="722" ex="2349" ey="614" cx="2354" cy="731"/>
<arc sx="2485" sy="722" ex="2811" ey="1033" cx="2798" cy="728"/>
<line sx="2811" sy="1214" ex="2811" ey="1033"/>
<arc sx="2811" sy="1214" ex="2522" ey="1507" cx="2816" cy="1505"/>
<line sx="2343" sy="1508" ex="2522" ey="1507"/>
<circle sx="2229" sy="1629" ex="2343" ey="1508" cx="2220" cy="1506"/>
<circle sx="2351" sy="1774" ex="2229" ey="1629" cx="2232" cy="1771"/>
<arc sx="2351" sy="1774" ex="2629" ey="2051" cx="2614" cy="1791"/>
<line sx="2632" sy="2257" ex="2629" ey="2051"/>
<arc sx="2632" sy="2257" ex="2351" ey="2555" cx="2637" cy="2547"/>
<line sx="1863" sy="2558" ex="2351" ey="2555"/>
</block>
<block>
<arc sx="1863" sy="2558" ex="1558" ey="2241" cx="1564" cy="2555"/>
<line sx="1559" sy="1451" ex="1558" ey="2241"/>
<circle sx="1485" sy="1348" ex="1559" ey="1451" cx="1570" cy="1344"/>
<circle sx="1400" sy="1451" ex="1485" ey="1348" cx="1388" cy="1344"/>
<line sx="1403" sy="2266" ex="1400" ey="1451"/>
<arc sx="1403" sy="2266" ex="1111" ey="2559" cx="1411" cy="2521"/>
<circle sx="1007" sy="2629" ex="1111" ey="2559" cx="1031" cy="2565"/>
<arc sx="1007" sy="2629" ex="692" ey="2792" cx="951" cy="2792"/>
<arc sx="692" sy="2792" ex="411" ey="2663" cx="464" cy="2788"/>
<circle sx="288" sy="2551" ex="411" ey="2663" cx="380" cy="2560"/>
<arc sx="288" sy="2551" ex="44" ey="2192" cx="51" cy="2511"/>
<arc sx="44" sy="2192" ex="344" ey="1840" cx="29" cy="1848"/>
<line sx="544" sy="1844" ex="344" ey="1840"/>
<circle sx="670" sy="1725" ex="544" ey="1844" cx="684" cy="1844"/>
<circle sx="559" sy="1600" ex="670" ey="1725" cx="663" cy="1599"/>
<arc sx="559" sy="1600" ex="403" ey="1418" cx="414" cy="1603"/>
<line sx="398" sy="1242" ex="403" ey="1418"/>
<circle sx="277" sy="1129" ex="398" ey="1242" cx="401" cy="1131"/>
<arc sx="277" sy="1129" ex="66" ey="933" cx="76" cy="1119"/>
<line sx="62" sy="696" ex="66" ey="933"/>
<arc sx="62" sy="696" ex="307" ey="462" cx="75" cy="473"/>
<line sx="936" sy="457" ex="307" ey="462"/>
</block>
</world11>
<world12>
<bg ref="bg07_1" sx="0" sy="0" ex="1800" ey="1800" extra="-200_0_-200_0"/>
<bg ref="bg07_1" sx="1800" sy="0" ex="1800" ey="1800" extra="-200_0_0_0"/>
<bg ref="bg07_1" sx="0" sy="1800" ex="1800" ey="1800" extra="0_0_-200_0"/>
<bg ref="bg07_1" sx="1800" sy="1800" ex="1800" ey="1800" extra="0_0_0_0"/>
<mini sx="31" sy="319" ex="0.054" ey="13"/>
<car sx="216" sy="1823" ex="-90"/>
<car sx="267" sy="1823" ex="-90"/>
<car sx="320" sy="1823" ex="-90"/>
<car sx="373" sy="1823" ex="-90"/>
<aisettings>
<AI sx="25" sy="20" ex="-3.5" ey="0.7"/>
<AI sx="18" sy="10" ex="-2" ey="1.8"/>
<AI sx="5" sy="0" ex="-1" ey="2.6"/>
<AILine0 sx="292" sy="1860" ex="300" ey="504"/>
<AILine0 sx="300" sy="504" ex="380" ey="360"/>
<AILine0 sx="380" sy="360" ex="572" ey="292"/>
<AILine0 sx="572" sy="292" ex="836" ey="304"/>
<AILine0 sx="836" sy="304" ex="1004" ey="456"/>
<AILine0 sx="1004" sy="456" ex="1016" ey="1868"/>
<AILine0 sx="1016" sy="1868" ex="960" ey="2036"/>
<AILine0 sx="960" sy="2036" ex="824" ey="2116"/>
<AILine0 sx="824" sy="2116" ex="464" ey="2132"/>
<AILine0 sx="464" sy="2132" ex="348" ey="2048"/>
<AILine0 sx="348" sy="2048" ex="292" ey="1860"/>
</aisettings>
<block sx="0" sy="0" ex="2400" ey="2400">
<circle sx="406" sy="593" ex="534" ey="413" cx="393" cy="420"/>
<line sx="534" sy="413" ex="731" ey="408"/>
<circle sx="731" sy="408" ex="894" ey="570" cx="893" cy="413"/>
<line sx="894" sy="570" ex="891" ey="1832"/>
<circle sx="891" sy="1832" ex="756" ey="1988" cx="894" cy="1979"/>
<line sx="756" sy="1988" ex="543" ey="1990"/>
<circle sx="543" sy="1990" ex="413" ey="1848" cx="411" cy="1985"/>
<line sx="413" sy="1848" ex="406" ey="593"/>
<line sx="170" sy="517" ex="181" ey="2053"/>
<arc sx="170" sy="517" ex="459" ey="151" cx="166" cy="166"/>
<line sx="817" sy="151" ex="459" ey="151"/>
<arc sx="817" sy="151" ex="1140" ey="528" cx="1147" cy="158"/>
<line sx="1132" sy="2001" ex="1140" ey="528"/>
<arc sx="1132" sy="2001" ex="888" ey="2259" cx="1133" cy="2254"/>
<line sx="429" sy="2262" ex="888" ey="2259"/>
<arc sx="429" sy="2262" ex="181" ey="2053" cx="190" cy="2255"/>
</block>
<block></block>
<block></block>
<block></block>
</world12>
</worldSettings>
</data>
;
_local1 = 1;
while (xmlData["carSettings"].hasOwnProperty(("car" + _local1))) {
_local2 = xmlData["carSettings"][("car" + _local1)][0];
_local3 = new LetheCar();
_local3.setcarInfo(_local2["info"][0]);
_local3.addHandle(_local2["handle1"][0]);
_local3.addHandle(_local2["handle2"][0]);
_local3.addHandle(_local2["handle3"][0]);
cars.push(_local3);
_local1++;
};
_local1 = 0;
while (xmlData["worldSettings"].hasOwnProperty(("world" + _local1))) {
_local4 = new WorldItem(xmlData["worldSettings"][("world" + _local1)][0]);
worldData.push(_local4);
for each (_local5 in xmlData["worldSettings"][("world" + _local1)]["mini"]) {
miniSettings.push(new WorldItem(_local5));
};
for each (_local5 in xmlData["worldSettings"][("world" + _local1)]["bg"]) {
_local4.setBg(_local5);
};
for each (_local5 in xmlData["worldSettings"][("world" + _local1)]["car"]) {
_local4.setCar(_local5);
};
for each (_local5 in xmlData["worldSettings"][("world" + _local1)]["aisettings"]["AILine0"]) {
_local4.addAi(_local5);
};
for each (_local5 in xmlData["worldSettings"][("world" + _local1)]["aisettings"]["AI"]) {
_local4.addAiSetting(_local5);
};
for each (_local5 in xmlData["worldSettings"][("world" + _local1)]["aisettings"]["AILine1"]) {
_local4.addCheckPoint(_local5);
};
for each (_local5 in xmlData["worldSettings"][("world" + _local1)]["items"]["obs"]) {
_local4.addObs(_local5);
for each (_local6 in _local5["line"]) {
_local4.addObsLine(_local6);
};
};
for each (_local6 in xmlData["worldSettings"][("world" + _local1)]["block"]) {
_local4.createBlock(_local6);
for each (_local5 in _local6["line"]) {
_local4.addLine(_local5);
};
for each (_local5 in _local6["circle"]) {
_local4.addCircle(_local5);
};
for each (_local5 in _local6["arc"]) {
_local4.addArc(_local5);
};
};
_local1++;
};
}
public function selectTrain():void{
selectCar(1);
setGameMode(0);
setGameDiff(0);
selectMap(13);
}
public function clearRaceResult():void{
raceResults = new Array();
}
public static function getInstance():Model{
if (_instance == null){
_instance = new (Model);
};
return (_instance);
}
}
}//package com.Lethe.model
Section 95
//SoundItem (com.Lethe.sound.SoundItem)
package com.Lethe.sound {
import flash.events.*;
import flash.utils.*;
import flash.media.*;
public class SoundItem {
private var maxSound:Number;
private var loops:int;
private var cSound:Number;
private var sound:Sound;
private var tm:Timer;
private var type:String;
public var soundChannel:SoundChannel;
public var sign:String;
public function SoundItem(_arg1, _arg2:String, _arg3:String, _arg4:Number=1):void{
maxSound = _arg4;
type = _arg3;
sound = new (_arg1);
sign = _arg2;
}
public function stop(_arg1:Boolean=false):void{
var fadeOut = _arg1;
if (soundChannel == null){
return;
};
try {
tm.stop();
tm.removeEventListener(TimerEvent.TIMER, soundIn);
tm = null;
} catch(e:Error) {
};
if (!fadeOut){
soundChannel.stop();
soundChannel.removeEventListener(Event.SOUND_COMPLETE, onSoundDone);
soundChannel = null;
} else {
if (tm == null){
tm = new Timer(100, 0);
tm.addEventListener(TimerEvent.TIMER, soundOut);
tm.start();
};
};
}
private function onSoundDone(_arg1:Event):void{
soundChannel.removeEventListener(Event.SOUND_COMPLETE, onSoundDone);
soundChannel.stop();
sound = null;
soundChannel = null;
}
private function soundIn(_arg1:TimerEvent):void{
cSound = (cSound + 0.05);
if (cSound <= maxSound){
soundChannel.soundTransform = new SoundTransform(cSound);
} else {
cSound = maxSound;
soundChannel.soundTransform = new SoundTransform(cSound);
tm.removeEventListener(TimerEvent.TIMER, soundIn);
tm.stop();
tm = null;
};
}
public function resume():void{
play(loops, true, cSound);
}
public function setVoice(_arg1:Number):void{
soundChannel.soundTransform = new SoundTransform(_arg1);
cSound = _arg1;
}
public function play(_arg1:int, _arg2:Boolean=false, _arg3:int=0):void{
if (soundChannel != null){
return;
};
loops = _arg1;
if (_arg2){
cSound = _arg3;
tm = new Timer(100, 0);
tm.addEventListener(TimerEvent.TIMER, soundIn);
tm.start();
} else {
cSound = maxSound;
};
soundChannel = sound.play(0, loops, new SoundTransform(cSound));
soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundDone, false, 0, true);
}
public function pause():void{
stop();
}
private function soundOut(_arg1:TimerEvent):void{
var e = _arg1;
try {
cSound = (cSound - 0.1);
if (cSound >= 0){
soundChannel.soundTransform = new SoundTransform(cSound);
} else {
cSound = 0;
tm.removeEventListener(TimerEvent.TIMER, soundOut);
tm.stop();
tm = null;
stop(false);
};
} catch(e:Error) {
};
}
}
}//package com.Lethe.sound
Section 96
//SoundManager (com.Lethe.sound.SoundManager)
package com.Lethe.sound {
import com.Lethe.controller.*;
import flash.utils.*;
public class SoundManager {
private const TYPE_LITEM:String = "item2";
private const TYPE_BG:String = "bg";
private const TYPE_ITEM:String = "item";
private var quality:int;// = 0
private var tmpSpeed:Number;
private var carSound:SoundItem;
private var seSoundOn:Boolean;
private var motoSoundItem:SoundItem;
private var backCarSound:SoundItem;
private var preparedManSound:Array;
private var bgSound:SoundItem;
private var skateSounding:Boolean;// = false
private var soundOn:Boolean;
private var reverSound:SoundItem;
private var preparedBg:String;
private var playTable:Object;
private var soundTable:Object;
private static var _instance:SoundManager;
public function SoundManager():void{
quality = 0;
skateSounding = false;
super();
initData();
}
public function get bgOn():Boolean{
return (soundOn);
}
public function turnBgSound():void{
soundOn = !(soundOn);
Cookie.getInstance().writeCookie("bgSoundOn", soundOn);
if (!soundOn){
stopBgSound();
} else {
playBgSound(preparedBg);
};
}
private function addNewSound(_arg1:String, _arg2:String):void{
var _local3:*;
_local3 = getDefinitionByName(_arg2);
soundTable[_arg1] = _local3;
}
public function playCarSound():void{
if (seSoundOn){
carSound = new SoundItem(soundTable["skate"], "skate", "car", 0);
backCarSound = new SoundItem(soundTable["moto"], "moto", "car", 1);
backCarSound.play(int.MAX_VALUE, true, 0);
motoSoundItem = new SoundItem(soundTable["spd3"], "init", "car", 1);
};
}
public function playMotoSound2c():void{
if (seSoundOn){
if (motoSoundItem.sign == "spd2c"){
return;
};
motoSoundItem.stop();
motoSoundItem = new SoundItem(soundTable["spd2c"], "spd2c", "car", 1);
motoSoundItem.play(int.MAX_VALUE, true);
};
}
public function playMotoSlowSound(_arg1:Number):void{
if (seSoundOn){
if (motoSoundItem.sign == "sd_release"){
return;
};
motoSoundItem.stop(true);
tmpSpeed = Math.abs(_arg1);
motoSoundItem = new SoundItem(soundTable["sd_release"], "sd_release", "car", 1);
motoSoundItem.play(1);
if (tmpSpeed < 10){
motoSoundItem.setVoice((tmpSpeed / 10));
};
};
}
public function playMotoSound(_arg1:Number):void{
if (seSoundOn){
if (motoSoundItem.sign == "sd_release"){
tmpSpeed = Math.abs(_arg1);
motoSoundItem.stop();
if (tmpSpeed > 10){
motoSoundItem = new SoundItem(soundTable["spd3"], "spd3", "car", 1);
motoSoundItem.play(int.MAX_VALUE);
} else {
if (tmpSpeed < 5){
motoSoundItem = new SoundItem(soundTable["spd1"], "spd1", "car", 1);
motoSoundItem.play(1);
} else {
motoSoundItem = new SoundItem(soundTable["spd2"], "spd2", "car", 1);
motoSoundItem.play(1);
};
};
} else {
if (motoSoundItem.soundChannel != null){
return;
};
switch (motoSoundItem.sign){
case "init":
motoSoundItem = new SoundItem(soundTable["spd1"], "spd1", "car", 1);
motoSoundItem.play(1);
break;
case "spd1":
motoSoundItem = new SoundItem(soundTable["spd2"], "spd2", "car", 1);
motoSoundItem.play(1);
break;
case "spd2":
motoSoundItem = new SoundItem(soundTable["spd3"], "spd3", "car", 1);
motoSoundItem.play(int.MAX_VALUE);
break;
case "spd2c":
motoSoundItem = new SoundItem(soundTable["spd3"], "spd3", "car", 1);
motoSoundItem.play(int.MAX_VALUE);
break;
case "spd3":
break;
default:
break;
};
};
};
}
public function turnSeSound():void{
var _local1:SoundItem;
var _local2:String;
seSoundOn = !(seSoundOn);
Cookie.getInstance().writeCookie("seSoundOn", seSoundOn);
if (seSoundOn){
for each (_local2 in preparedManSound) {
playManSound(_local2);
};
preparedManSound = new Array();
return;
};
for each (_local1 in playTable) {
if (_local1 != null){
_local1.stop(false);
};
};
playTable = new Object();
}
public function resumeManSound():void{
var _local1:SoundItem;
for each (_local1 in playTable) {
if (_local1 != null){
_local1.resume();
};
};
}
public function playManSound(_arg1:String):void{
var _local2:SoundItem;
if (((!((playTable[_arg1] == null))) || ((soundTable[_arg1] == null)))){
return;
};
if (!seSoundOn){
if (preparedManSound.indexOf(_arg1) < 0){
preparedManSound.push(_arg1);
};
return;
};
_local2 = new SoundItem(soundTable[_arg1], _arg1, TYPE_LITEM);
_local2.play(int.MAX_VALUE, true, 0.95);
playTable[_arg1] = _local2;
}
public function stopEffectSound():void{
if (seSoundOn){
if (motoSoundItem != null){
motoSoundItem.stop(true);
motoSoundItem = new SoundItem(soundTable["spd3"], "init", "car", 1);
};
};
}
public function get qualityN():int{
return (quality);
}
public function setQuality(_arg1:int):void{
quality = _arg1;
Cookie.getInstance().writeCookie("quality", _arg1);
}
public function changeSkateSound(_arg1):void{
if (seSoundOn){
if (_arg1 > 0.2){
if (!skateSounding){
skateSounding = true;
carSound.play(int.MAX_VALUE);
};
carSound.setVoice(_arg1);
} else {
if (skateSounding){
skateSounding = false;
carSound.stop();
};
};
};
}
public function get seOn():Boolean{
return (seSoundOn);
}
public function loadSounds():void{
addNewSound("level1", "music16");
addNewSound("level2", "music25");
addNewSound("level3", "music3");
addNewSound("level4", "music4");
addNewSound("level5", "music25");
addNewSound("level6", "music16");
addNewSound("level13", "music3");
addNewSound("menu", "music0");
addNewSound("win", "musicw");
addNewSound("lose", "musicf");
addNewSound("carin", "car_down");
addNewSound("carbtn", "car_over");
addNewSound("light1", "sd_ready");
addNewSound("light2", "sd_ready");
addNewSound("light3", "light");
addNewSound("start", "sd_startgame");
addNewSound("close", "sd_close");
addNewSound("open", "sd_open");
addNewSound("btnover", "sd_over");
addNewSound("btndown", "sd_down");
addNewSound("mapover", "map_over");
addNewSound("mapdown", "map_down");
addNewSound("maplock", "map_lock");
addNewSound("skate", "sd_skate");
addNewSound("moto", "sd_moto");
addNewSound("spd1", "spd1");
addNewSound("spd2", "spd2");
addNewSound("spd2c", "spd2c");
addNewSound("spd3", "spd3");
addNewSound("sd_release", "sd_release");
addNewSound("gamestart", "gamestart");
addNewSound("hit", "sd_hit");
addNewSound("move", "sd_move");
addNewSound("roll", "sd_roll");
addNewSound("revver", "revver");
}
public function initData():void{
var _local1:*;
var _local2:*;
var _local3:*;
_local1 = Cookie.getInstance().readCookie("bgSoundOn");
_local2 = Cookie.getInstance().readCookie("seSoundOn");
_local3 = Cookie.getInstance().readCookie("quality");
quality = ((_local3 == null)) ? 2 : _local3;
soundOn = ((_local1 == null)) ? true : _local1;
seSoundOn = ((_local2 == null)) ? true : _local2;
preparedManSound = new Array();
playTable = new Object();
soundTable = new Object();
}
private function stopItemSound(_arg1:String):void{
if (playTable[_arg1] != null){
playTable[_arg1].stop();
playTable[_arg1] = null;
};
}
public function stopBgSound():void{
if (bgSound != null){
bgSound.stop(true);
bgSound = null;
};
}
public function pauseManSound():void{
var _local1:SoundItem;
for each (_local1 in playTable) {
if (_local1 != null){
_local1.pause();
};
};
}
public function stopRevverSound():void{
reverSound.stop(true);
reverSound = null;
}
public function playItemSound(_arg1:String, _arg2:Number=1, _arg3:Boolean=false):void{
var _local4:SoundItem;
if (((seSoundOn) && (!((soundTable[_arg1] == null))))){
_local4 = new SoundItem(soundTable[_arg1], _arg1, TYPE_ITEM, _arg2);
if (_arg3){
if (playTable[_arg1] != null){
playTable[_arg1].stop();
};
playTable[_arg1] = _local4;
};
_local4.play(1);
};
}
public function clearSounds():void{
try {
carSound.stop();
carSound = null;
motoSoundItem.stop();
motoSoundItem = null;
backCarSound.stop();
backCarSound = null;
} catch(e:Error) {
};
}
public function playBgSound(_arg1:String=""):void{
if (_arg1 != ""){
if ((((bgSound == null)) || (!((bgSound.sign == _arg1))))){
preparedBg = _arg1;
if (((soundOn) && (!((soundTable[_arg1] == null))))){
stopBgSound();
bgSound = new SoundItem(soundTable[_arg1], _arg1, TYPE_BG, 0.6);
bgSound.play(int.MAX_VALUE, true);
};
};
} else {
playBgSound(preparedBg);
};
}
public function stopManSound(_arg1:String):void{
var _sign = _arg1;
try {
preparedManSound.splice(preparedManSound.indexOf(_sign), 1);
} catch(e:Error) {
};
if (playTable[_sign] != null){
playTable[_sign].stop(false);
playTable[_sign] = null;
};
}
public function playRevverSound():void{
reverSound = new SoundItem(soundTable["revver"], "revver", "oye", 0.2);
reverSound.play(int.MAX_VALUE, true, 0);
}
public static function getInstance():SoundManager{
if (_instance == null){
_instance = new (SoundManager);
};
return (_instance);
}
}
}//package com.Lethe.sound
Section 97
//AlertPage (com.Lethe.ui.AlertPage)
package com.Lethe.ui {
import flash.display.*;
import com.Lethe.model.*;
public class AlertPage extends UI {
public var b_continue:LetheButton;
private var father:LevelSelect1;
public var b_back:LetheButton;
public function AlertPage(_arg1:DisplayObjectContainer, _arg2:LevelSelect1){
super(_arg1);
b_continue.setOverSound("btnover");
b_back.setOverSound("btnover");
b_continue.setDownSound("btndown");
b_back.setDownSound("btndown");
father = _arg2;
keyManager.setPageFocus([[]], -1, -1, [32, 13, 27, 8, 81], [onOk, onOk, onCancel, onCancel, onCancel]);
this.register(b_back, onCancel);
this.register(b_continue, onOk);
}
private function onOk(_arg1:LetheButton=null, _arg2=null):void{
Model.getInstance().selectTrain();
onClosePage({page:"TrainMap", info:0});
parent.removeChild(this);
}
private function onCancel(_arg1:LetheButton=null, _arg2=null):void{
father.resetFocus();
parent.removeChild(this);
}
}
}//package com.Lethe.ui
Section 98
//CarAnimation (com.Lethe.ui.CarAnimation)
package com.Lethe.ui {
import flash.display.*;
public class CarAnimation extends MovieClip {
public var m_container:MovieClip;
public var m_wenhao:MovieClip;
private var isSelect:Boolean;// = false
public function CarAnimation(_arg1:uint=1):void{
isSelect = false;
super();
addFrameScript(25, doNext);
addFrameScript(38, remove);
m_wenhao.visible = false;
m_container.carMc.gotoAndStop(_arg1);
m_container.stop();
}
public function setSelect():void{
isSelect = true;
}
private function doNext():void{
stop();
if (isSelect){
} else {
if (this.currentFrame < 16){
remove();
};
play();
};
}
public function setColor():void{
m_wenhao.visible = true;
m_container.gotoAndStop(2);
}
private function remove():void{
stop();
try {
this.parent.removeChild(this);
} catch(e:Error) {
};
}
public function clearSelect():void{
isSelect = false;
doNext();
}
public function justThisCar():void{
setSelect();
this.gotoAndStop(26);
}
}
}//package com.Lethe.ui
Section 99
//CarSelect (com.Lethe.ui.CarSelect)
package com.Lethe.ui {
import flash.events.*;
import flash.display.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
import flash.text.*;
public class CarSelect extends UI {
public var m_speed:MovieClip;
private var currentPreview:CarAnimation;
private var model:Model;
public var t_money:TextField;
private var selectedCar:int;// = 1
public var m_car3:LetheButton;
public var m_car7:LetheButton;
public var m_car1:LetheButton;
public var m_car2:LetheButton;
public var m_car6:LetheButton;
public var m_car5:LetheButton;
public var m_aspeed:MovieClip;
public var m_next:LetheButton;
public var m_car4:LetheButton;
private var txt:String;// = ""
public var m_handle:MovieClip;
private var openMoney:Array;
public var m_prev:LetheButton;
private var money:int;
private var currentSelect:LetheButton;
private static var sb:Boolean = false;
public function CarSelect(_arg1:DisplayObjectContainer):void{
txt = "";
selectedCar = 1;
super(_arg1);
}
override public function init():void{
var _local1:int;
super.init();
model = Model.getInstance();
openMoney = model.getMoney();
if (model.newCar){
_local1 = 5;
while (_local1 >= 0) {
if (model.money >= openMoney[_local1]){
currentPreview = new CarAnimation((_local1 + 1));
currentPreview.justThisCar();
selectedCar = (_local1 + 1);
currentSelect = this[("m_car" + (_local1 + 1))];
setParam((_local1 + 1));
break;
};
_local1--;
};
} else {
currentPreview = new CarAnimation((model.habits[2] + 1));
currentPreview.justThisCar();
if (model.habits[2] == 6){
if (!sb){
if (((!((model.mapOpen[5][0] == 1))) || (!((model.mapOpen[11][0] == 1))))){
currentPreview.setColor();
};
};
} else {
if (model.money < openMoney[model.habits[2]]){
currentPreview.setColor();
};
};
selectedCar = (model.habits[2] + 1);
currentSelect = this[("m_car" + (model.habits[2] + 1))];
setParam((model.habits[2] + 1));
};
addChildAt(currentPreview, 0);
this.register(m_car1, onSelectCar, 1, onClickNext);
this.register(m_car2, onSelectCar, 2, onClickNext);
this.register(m_car3, onSelectCar, 3, onClickNext);
this.register(m_car4, onSelectCar, 4, onClickNext);
this.register(m_car5, onSelectCar, 5, onClickNext);
this.register(m_car6, onSelectCar, 6, onClickNext);
this.register(m_car7, onSelectCar, 7, onClickNext);
buttons = [[m_car1], [m_car2], [m_car3], [m_car4], [m_car5], [m_car6], [m_car7]];
t_money.text = String(model.money);
this.register(m_prev, getPrevCar);
this.register(m_next, getNextCar);
disableButton();
m_prev.setOverSound("btnover");
m_prev.setDownSound("btndown");
m_next.setOverSound("btnover");
m_next.setDownSound("btndown");
money = model.money;
_local1 = 0;
while (_local1 < 6) {
this[("m_car" + (_local1 + 1))]["txt"].text = String(openMoney[_local1]);
this[("m_car" + (_local1 + 1))].setOverSound("carbtn");
if (money >= openMoney[_local1]){
this[("m_car" + (_local1 + 1))]["m_lock"].visible = false;
};
_local1++;
};
this["m_car7"]["txt"].text = "*********";
}
private function onSelectCar(_arg1:LetheButton, _arg2:int):void{
if (currentSelect != _arg1){
setParam(_arg2);
selectedCar = _arg2;
if (currentSelect != null){
currentSelect.releaseToogle();
};
currentSelect = _arg1;
currentSelect.setToogle();
currentPreview.clearSelect();
currentPreview = new CarAnimation(_arg2);
SoundManager.getInstance().playItemSound("carin");
if (_arg2 == 7){
if (!sb){
if (((!((model.mapOpen[5][0] == 1))) || (!((model.mapOpen[11][0] == 1))))){
currentPreview.setColor();
};
};
} else {
if (money < openMoney[(_arg2 - 1)]){
currentPreview.setColor();
};
};
currentPreview.setSelect();
addChildAt(currentPreview, 0);
};
}
private function setParam(_arg1:int):void{
var _local2:Object;
_local2 = model.cars[(_arg1 - 1)].handles[model.gameMode];
m_speed.gotoAndStop(Math.round(((_local2.maxSpeed / 16) * 50)));
m_aspeed.gotoAndStop(Math.round((((_local2.aSpeed - _local2.rollFriction) / 0.5) * 50)));
m_handle.gotoAndStop(Math.round(((_local2.friction * _local2.angleWheel) * 80)));
}
private function getPrevCar(_arg1:LetheButton=null, _arg2=null):void{
if (selectedCar > 1){
this[("m_car" + (selectedCar - 1))].simuateMouseDown();
};
}
override public function onClickBack(_arg1:LetheButton=null, _arg2=null):void{
stage.removeEventListener(KeyboardEvent.KEY_UP, updateSb);
super.onClickBack(_arg1);
disableButton();
onClosePage({page:"CarSelect", info:0});
}
override public function onClickNext(_arg1:LetheButton=null, _arg2=null):void{
if (((!((selectedCar == 7))) && ((money < openMoney[(selectedCar - 1)])))){
return;
};
if (!sb){
if ((((selectedCar == 7)) && (((!((model.mapOpen[5][0] == 1))) || (!((model.mapOpen[11][0] == 1))))))){
return;
};
};
stage.removeEventListener(KeyboardEvent.KEY_UP, updateSb);
super.onClickNext(_arg1);
disableButton();
onClosePage({page:"CarSelect", info:selectedCar});
}
public function enableButton():void{
var _local1:int;
stage.addEventListener(KeyboardEvent.KEY_UP, updateSb);
m_car1.enable();
m_car2.enable();
m_car3.enable();
m_car4.enable();
m_car5.enable();
m_car6.enable();
m_car7.enable();
m_prev.enable();
m_next.enable();
if (model.newCar){
_local1 = 5;
while (_local1 >= 0) {
if (model.money >= openMoney[_local1]){
currentSelect = this[("m_car" + (_local1 + 1))];
this[("m_car" + (_local1 + 1))].setToogle();
break;
};
_local1--;
};
} else {
selectedCar = (model.habits[2] + 1);
currentSelect = this[("m_car" + (model.habits[2] + 1))];
currentSelect.setToogle();
_local1 = model.habits[2];
};
keyManager.setPageFocus(buttons, _local1, 0, [32, 13, 27, 8, 37, 39, 81], [onClickNext, onClickNext, onClickBack, onClickBack, getPrevCar, getNextCar, onClickBack]);
}
private function getNextCar(_arg1:LetheButton=null, _arg2=null):void{
if (selectedCar < 7){
this[("m_car" + (selectedCar + 1))].simuateMouseDown();
};
}
private function disableButton():void{
m_car1.disable();
m_car2.disable();
m_car3.disable();
m_car4.disable();
m_car5.disable();
m_car6.disable();
m_car7.disable();
m_prev.disable();
m_next.disable();
}
private function updateSb(_arg1:KeyboardEvent):void{
txt = (txt + String.fromCharCode(_arg1.keyCode));
if (txt.substr((txt.length - 15), 15) == "WANSUIFUTIANSHA"){
sb = true;
if (currentSelect != null){
currentSelect.releaseToogle();
};
currentSelect = null;
m_car7.simuateMouseDown();
};
}
}
}//package com.Lethe.ui
Section 100
//CreditPage (com.Lethe.ui.CreditPage)
package com.Lethe.ui {
import flash.events.*;
import flash.display.*;
public class CreditPage extends UI {
public function CreditPage(_arg1:DisplayObjectContainer){
super(_arg1);
}
override public function init():void{
super.init();
this.addEventListener(MouseEvent.CLICK, removeSelft);
stage.addEventListener(KeyboardEvent.KEY_UP, removeSelft);
}
private function removeSelft(_arg1=null):void{
this.removeEventListener(MouseEvent.CLICK, removeSelft);
stage.removeEventListener(KeyboardEvent.KEY_UP, removeSelft);
(parent as MainMenu).setPageFocus();
parent.removeChild(this);
}
}
}//package com.Lethe.ui
Section 101
//DifficultSelect (com.Lethe.ui.DifficultSelect)
package com.Lethe.ui {
import flash.display.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
public class DifficultSelect extends UI {
private var model:Model;
public var m_btn_normal:LetheButton;
private var selectedDiff:int;// = 1
public var m_btn_hard:LetheButton;
public var m_btn_easy:LetheButton;
private var currentSelect:LetheButton;
public function DifficultSelect(_arg1:DisplayObjectContainer):void{
selectedDiff = 1;
super(_arg1);
}
private function shutButton(_arg1:LetheButton, _arg2:int):void{
if (model.mapOpen[(model.mapId + (model.gameMode * 6))][_arg2] == 1){
_arg1.setOverSound("btnover");
_arg1.setDownSound("btndown");
_arg1["m_lock"].visible = false;
_arg1["m_shadow"].visible = false;
_arg1["m_lock"].stop();
} else {
_arg1.setOverSound("btnover");
_arg1.setDownSound("map_lock");
_arg1.param = true;
_arg1["m_shadow"].gotoAndStop(_arg2);
};
}
override public function init():void{
super.init();
model = Model.getInstance();
shutButton(m_btn_easy, 0);
shutButton(m_btn_normal, 1);
shutButton(m_btn_hard, 2);
buttons = [[m_btn_easy], [m_btn_normal], [m_btn_hard]];
register(m_btn_easy, onSelectDiff, 0, onClickNext);
register(m_btn_normal, onSelectDiff, 1, onClickNext);
register(m_btn_hard, onSelectDiff, 2, onClickNext);
m_btn_easy.disable();
m_btn_normal.disable();
m_btn_hard.disable();
}
override public function onClickBack(_arg1:LetheButton=null, _arg2=null):void{
super.onClickBack(_arg1);
onClosePage({page:"DifficultSelect", info:-1});
}
override public function onClickNext(_arg1:LetheButton=null, _arg2=null):void{
if (currentSelect.param == true){
return;
};
super.onClickNext(_arg1);
SoundManager.getInstance().playItemSound("start");
m_btn_easy.disable();
m_btn_normal.disable();
m_btn_hard.disable();
onClosePage({page:"DifficultSelect", info:selectedDiff});
}
public function enableButton():void{
var _local1:int;
m_btn_easy.enable();
m_btn_normal.enable();
m_btn_hard.enable();
_local1 = 0;
if (model.mapOpen[((model.gameMode * 6) + model.mapId)][model.habits[3]] == 1){
_local1 = model.habits[3];
currentSelect = buttons[(2 - _local1)][0];
currentSelect.setToogle();
} else {
if (model.mapOpen[((model.gameMode * 6) + model.mapId)][2] == 1){
_local1 = 2;
currentSelect = m_btn_hard;
m_btn_hard.setToogle();
} else {
if (model.mapOpen[((model.gameMode * 6) + model.mapId)][1] == 1){
_local1 = 1;
currentSelect = m_btn_normal;
m_btn_normal.setToogle();
} else {
_local1 = 0;
currentSelect = m_btn_easy;
m_btn_easy.setToogle();
};
};
};
selectedDiff = _local1;
keyManager.setPageFocus(buttons, _local1, 0, [32, 13, 27, 8, 81], [onClickNext, onClickNext, onClickBack, onClickBack, onClickBack]);
}
private function onSelectDiff(_arg1:LetheButton, _arg2:int):void{
if (currentSelect != null){
currentSelect.releaseToogle();
};
_arg1.setToogle();
currentSelect = _arg1;
selectedDiff = _arg2;
}
}
}//package com.Lethe.ui
Section 102
//GameLoading (com.Lethe.ui.GameLoading)
package com.Lethe.ui {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import com.Lethe.application.*;
public class GameLoading extends MovieClip {
private var targetFrame:int;// = 0
public var __id0_:mylogo;
public var t_percent:TextField;
public function GameLoading(_arg1:DisplayObjectContainer){
targetFrame = 0;
super();
_arg1.addChild(this);
this.addEventListener(Event.ENTER_FRAME, checkLoading, false, 0, true);
__setProp___id0___1();
}
private function checkLoading(_arg1:Event):void{
targetFrame = (((loaderInfo.bytesLoaded / loaderInfo.bytesTotal) * 100) >> 0);
if (currentFrame < targetFrame){
this.nextFrame();
};
t_percent.text = (String(currentFrame) + "%");
if (loaderInfo.bytesLoaded >= loaderInfo.bytesTotal){
deleteLoading();
};
}
private function deleteLoading():void{
this.removeEventListener(Event.ENTER_FRAME, checkLoading);
(parent as Main).onGameLoaded();
parent.removeChild(this);
}
function __setProp___id0___1(){
try {
__id0_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id0_.position = "button_preloader";
__id0_.align = "Center";
__id0_.logotype = "logo";
__id0_.maxWidth = 0;
__id0_.maxHeight = 30;
try {
__id0_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package com.Lethe.ui
Section 103
//GameOver (com.Lethe.ui.GameOver)
package com.Lethe.ui {
import flash.events.*;
import flash.display.*;
import com.Lethe.vo.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
import flash.text.*;
import com.Lethe.application.*;
public class GameOver extends UI {
public var b_continue:LetheButton;
public var t_score:TextField;
private var model:Model;
public var m_rank3:ScoreLine;
public var m_rank4:ScoreLine;
public var m_rank2:ScoreLine;
public var m_mode:MovieClip;
private var t2:GameResult;
private var t3:GameResult;
private var t1:GameResult;
private var openMapId:int;// = -1
public var t_name:TextField;
public var m_rank1:ScoreLine;
private var delay:int;// = 30
private var needMove:Boolean;// = true
public var b_submit:LetheButton;
private var needShow:Boolean;// = false
private var levelMoney:Array;
private var update:Function;
public var __id3_:mylogo;
public var t_time:TextField;
private var played:Boolean;// = false
private var openCarId:int;// = -1
private var openDiffId:int;// = -1
private var rankData:Array;
private static var viewed:Boolean = false;
public function GameOver(_arg1:DisplayObjectContainer){
needMove = true;
delay = 30;
played = false;
openMapId = -1;
openDiffId = -1;
openCarId = -1;
needShow = false;
levelMoney = [1500, 2000, 2500, 3000, 3500, 4000, 1500, 2000, 2500, 3000, 3500, 3500, 0];
super(_arg1);
model = Model.getInstance();
b_submit.visible = false;
b_continue.visible = false;
m_mode.gotoAndStop((Model.getInstance().gameMode + 1));
this.register(b_continue, onClickBack);
this.register(b_submit, onClickSubmit);
b_continue.setOverSound("btnover");
b_continue.setDownSound("btndown");
b_submit.setOverSound("btnover");
b_submit.setDownSound("btndown");
t_name.text = Model.getInstance().playerName;
setRanks();
SoundManager.getInstance().stopBgSound();
if (!viewed){
viewed = true;
Main._tracker.trackEvent("king of drift", "game completed", "per session", 0);
};
__setProp___id3___1();
}
public function resetPageFocus():void{
setPageFocus();
}
private function checkUpdateScore():void{
var _local1:Boolean;
var _local2:int;
_local1 = true;
_local2 = 0;
while (_local2 < 4) {
if (!this[("m_rank" + (_local2 + 1))].scoreOk){
_local1 = false;
break;
};
_local2++;
};
if (_local1){
update = checkDelay;
};
}
private function updateScore(_arg1:Event):void{
update();
}
private function setFocusOnHigh():void{
stage.focus = Main.component;
keyManager.setPageFocus(null, -1, -1, [32, 13, 27, 8, 81], [onClickBackOnHigh, onClickBackOnHigh, onClickBackOnHigh, onClickBackOnHigh, onClickBackOnHigh]);
}
private function checkDelay():void{
if (delay > 0){
delay--;
} else {
if (delay == 0){
if (needMove){
SoundManager.getInstance().playItemSound("move");
};
delay--;
};
update = checkMove;
rankData[0].mc.setPosition(170);
rankData[1].mc.setPosition(148);
rankData[2].mc.setPosition(125.5);
rankData[3].mc.setPosition(103.5);
};
}
override public function setPageFocus():void{
stage.focus = t_name;
keyManager.setPageFocus(buttons, -1, -1, [13, 27], [onClickSubmit, onClickBack]);
t_name.setSelection(0, t_name.text.length);
}
override public function onClickBack(_arg1:LetheButton=null, _arg2=null):void{
super.onClickBack(_arg1);
onClosePage({page:"GameOver", info:-1});
}
private function setRanks():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
rankData = Model.getInstance().raceResults;
this.addEventListener(Event.ENTER_FRAME, updateScore, false, 0, true);
t_score.text = String(Model.getInstance().playerResult.stylePoint);
_local1 = Model.getInstance().playerResult.time;
_local2 = (_local1 % 1000);
_local3 = (((_local1 / 1000) >> 0) % 60);
_local4 = ((_local1 / 60000) >> 0);
t_time.text = ((((((_local4 < 9)) ? String(("0" + _local4)) : String(_local4) + "'") + ((_local3 < 9)) ? String(("0" + _local3)) : String(_local3)) + "''") + ((_local2 < 9)) ? ("00" + String(_local2)) : ((_local2 < 99)) ? ("0" + String(_local2)) : String(_local2));
rankData[0].setMc(m_rank1);
rankData[1].setMc(m_rank2);
rankData[2].setMc(m_rank3);
rankData[3].setMc(m_rank4);
m_rank1.setScore(rankData[0].stylePoint, 1, rankData[0].playername, 103.5, rankData[0].isPlayer);
m_rank2.setScore(rankData[1].stylePoint, 2, rankData[1].playername, 125.5, rankData[1].isPlayer);
m_rank3.setScore(rankData[2].stylePoint, 3, rankData[2].playername, 148, rankData[2].isPlayer);
m_rank4.setScore(rankData[3].stylePoint, 4, rankData[3].playername, 170, rankData[3].isPlayer);
update = checkUpdateScore;
SoundManager.getInstance().playItemSound("roll");
t1 = rankData[0];
t2 = rankData[1];
t3 = rankData[2];
rankData.sortOn("stylePoint", Array.NUMERIC);
if ((((((rankData[0] == t1)) && ((rankData[1] == t2)))) && ((t3 == rankData[2])))){
needMove = false;
};
}
function __setProp___id3___1(){
try {
__id3_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id3_.position = "logo_gameover";
__id3_.align = "Center";
__id3_.logotype = "logo";
__id3_.maxWidth = 185;
__id3_.maxHeight = 0;
try {
__id3_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
private function onClickBackOnHigh():void{
try {
removeChild(Main.component);
} catch(e:Error) {
};
setPageFocus();
}
public function onClickSubmit(_arg1:LetheButton=null, _arg2=null):void{
if (model.playerName != t_name.text){
model.changeName(t_name.text);
};
if (Main.component.O11111100()){
Main.component.O11111O10(Model.getInstance().playerResult.stylePoint, t_name.text);
onClosePage({page:"GameOver", info:1});
} else {
Main.component.x = 40;
Main.component.y = 60;
addChild(Main.component);
setFocusOnHigh();
};
}
private function checkMove():void{
var _local1:Boolean;
var _local2:int;
var _local3:int;
var _local4:Array;
var _local5:UnlockPage;
_local1 = true;
_local2 = 0;
while (_local2 < 4) {
if (!this[("m_rank" + (_local2 + 1))].moved){
_local1 = false;
break;
};
_local2++;
};
if (_local1){
b_submit.visible = true;
b_continue.visible = true;
setPageFocus();
_local2 = 3;
while (_local2 >= 0) {
if (_local2 > 0){
rankData[_local2].mc.setMoney(((levelMoney[(model.mapId + (model.gameMode * 6))] / Math.pow(2, (3 - _local2))) >> 0), (4 - _local2));
if (rankData[_local2].isPlayer){
Model.getInstance().writeRecord();
if (_local2 == 3){
_local4 = model.writMapOpen();
SoundManager.getInstance().playItemSound("win", 0.6);
played = true;
if (_local4[0] >= 0){
openDiffId = ((_local4[0] + 1) + (Model.getInstance().gameMode * 6));
needShow = true;
};
if (_local4[1] >= 0){
openMapId = ((_local4[1] + 1) + (Model.getInstance().gameMode * 6));
needShow = true;
};
};
_local3 = model.addMoney((((levelMoney[(model.mapId + (model.gameMode * 6))] + (model.gameDiff * 500)) / Math.pow(2, (3 - _local2))) >> 0));
if (_local3 > 0){
openCarId = (_local3 + 1);
needShow = true;
};
if (needShow){
_local5 = new UnlockPage(this, openCarId, openMapId, openDiffId);
} else {
resetPageFocus();
};
};
} else {
rankData[_local2].mc.setMoney(0, 4);
};
_local2--;
};
if (!played){
SoundManager.getInstance().playItemSound("lose", 0.6);
};
this.removeEventListener(Event.ENTER_FRAME, updateScore);
};
}
}
}//package com.Lethe.ui
Section 104
//HighScores (com.Lethe.ui.HighScores)
package com.Lethe.ui {
import flash.display.*;
import com.Lethe.application.*;
public class HighScores extends UI {
public function HighScores(_arg1:DisplayObjectContainer):void{
super(_arg1);
keyManager.setPageFocus(buttons, -1, -1, [32, 13, 27, 8, 81], [onClickNext, onClickNext, onClickBack, onClickBack, onClickBack]);
Main.component.x = 40;
Main.component.y = 60;
addChild(Main.component);
}
override public function onClickBack(_arg1:LetheButton=null, _arg2=null):void{
super.onClickBack(_arg1);
onClosePage({page:"HighScores", info:0});
}
override public function onClickNext(_arg1:LetheButton=null, _arg2=null):void{
super.onClickNext(_arg1, _arg2);
onClosePage({page:"HighScores", info:0});
}
}
}//package com.Lethe.ui
Section 105
//HowToPlay (com.Lethe.ui.HowToPlay)
package com.Lethe.ui {
import flash.display.*;
public class HowToPlay extends UI {
public function HowToPlay(_arg1:DisplayObjectContainer):void{
super(_arg1);
keyManager.setPageFocus(buttons, -1, -1, [32, 13, 27, 8, 81], [onClickNext, onClickNext, onClickBack, onClickBack, onClickBack]);
}
override public function onClickBack(_arg1:LetheButton=null, _arg2=null):void{
super.onClickBack(_arg1);
onClosePage({page:"HowToPlay", info:0});
}
override public function onClickNext(_arg1:LetheButton=null, _arg2=null):void{
super.onClickNext(_arg1, _arg2);
onClosePage({page:"HowToPlay", info:0});
}
}
}//package com.Lethe.ui
Section 106
//LetheButton (com.Lethe.ui.LetheButton)
package com.Lethe.ui {
import flash.events.*;
import flash.display.*;
import com.Lethe.controller.*;
import com.Lethe.sound.*;
public class LetheButton extends MovieClip {
private var keyManager:KeyManager;
private var _toogle:Boolean;// = false
private var _mouseDisabled:Boolean;// = false
public var param;
public var overSound:String;
public var downSound:String;
public function LetheButton(){
_mouseDisabled = false;
_toogle = false;
super();
this.stop();
this.mouseChildren = false;
this.buttonMode = true;
keyManager = KeyManager.getInstance();
overSound = "";
downSound = "";
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_OVER, mouseOver, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_OUT, mouseOut, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, mouseUp, false, 0, true);
}
public function simuateMouseDown():void{
this.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
keyManager.onMouseDown(this);
if (downSound != ""){
SoundManager.getInstance().playItemSound(downSound);
};
}
private function mouseOver(_arg1:MouseEvent):void{
if (overSound != ""){
SoundManager.getInstance().playItemSound(overSound);
};
if (_toogle){
return;
};
keyManager.onMouseOver(this);
if (_mouseDisabled){
this.gotoAndStop(5);
} else {
this.gotoAndStop(2);
};
}
private function mouseUp(_arg1:MouseEvent):void{
if (_toogle){
return;
};
if (_mouseDisabled){
this.gotoAndStop(4);
} else {
this.gotoAndStop(1);
};
}
public function get mouseDisabled():Boolean{
return (_mouseDisabled);
}
public function get toogle():Boolean{
return (_toogle);
}
public function setDownSound(_arg1:String):void{
downSound = _arg1;
}
public function setToogle():void{
_toogle = true;
if (_mouseDisabled){
this.gotoAndStop(6);
} else {
this.gotoAndStop(3);
};
}
private function mouseOut(_arg1:MouseEvent):void{
mouseUp(null);
}
public function overToogle():void{
if (_toogle){
return;
};
if (overSound != ""){
SoundManager.getInstance().playItemSound(overSound);
};
if (_mouseDisabled){
this.gotoAndStop(5);
} else {
this.gotoAndStop(2);
};
}
public function setOverSound(_arg1:String):void{
overSound = _arg1;
}
public function clearOverToogle():void{
mouseUp(null);
}
public function enable():void{
if (_mouseDisabled){
_mouseDisabled = false;
this.gotoAndStop(1);
};
}
public function releaseToogle():void{
_toogle = false;
if (_mouseDisabled){
this.gotoAndStop(4);
} else {
this.gotoAndStop(1);
};
}
public function disable():void{
if (!_mouseDisabled){
_mouseDisabled = true;
this.gotoAndStop(4);
};
}
private function mouseDown(_arg1:MouseEvent):void{
if (downSound != ""){
SoundManager.getInstance().playItemSound(downSound);
};
if (_toogle){
return;
};
keyManager.onMouseDown(this);
if (_mouseDisabled){
this.gotoAndStop(6);
} else {
this.gotoAndStop(3);
};
}
}
}//package com.Lethe.ui
Section 107
//LevelSelect (com.Lethe.ui.LevelSelect)
package com.Lethe.ui {
import flash.display.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
import flash.text.*;
public class LevelSelect extends UI {
public var m_map6:LetheButton;
public var m_map5:LetheButton;
private var mapExtra:int;// = 0
private var model:Model;
private var currentSelected:LetheButton;
public var t_mode:TextField;
private var selectedLevel:int;// = 1
public var m_map2:LetheButton;
public var m_map3:LetheButton;
public var m_map1:LetheButton;
public var m_map4:LetheButton;
public function LevelSelect(_arg1:DisplayObjectContainer):void{
mapExtra = 0;
selectedLevel = 1;
super(_arg1);
}
override public function init():void{
SoundManager.getInstance().playBgSound("menu");
super.init();
model = Model.getInstance();
this.register(m_map1, onSelectMap, 1, onClickNext);
this.register(m_map2, onSelectMap, 2, onClickNext);
this.register(m_map3, onSelectMap, 3, onClickNext);
this.register(m_map4, onSelectMap, 4, onClickNext);
this.register(m_map5, onSelectMap, 5, onClickNext);
this.register(m_map6, onSelectMap, 6, onClickNext);
buttons = [[m_map1, m_map2, m_map3], [m_map4, m_map5, m_map6]];
if (model.gameMode == 1){
mapExtra = 6;
};
openButton(m_map1, (1 + mapExtra));
openButton(m_map2, (2 + mapExtra));
openButton(m_map3, (3 + mapExtra));
openButton(m_map4, (4 + mapExtra));
openButton(m_map5, (5 + mapExtra));
openButton(m_map6, (6 + mapExtra));
}
private function openButton(_arg1:LetheButton, _arg2:int):void{
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
_arg1.disable();
_arg1["miniMap"].gotoAndStop(_arg2);
_arg1["m_finish"].gotoAndStop((_arg2 - mapExtra));
if (model.mapOpen[(_arg2 - 1)][0]){
_arg1["m_forbid"].visible = false;
_arg1["m_finish"].visible = false;
_arg1.setOverSound("mapover");
_arg1.setDownSound("mapdown");
_local3 = model.records[(_arg2 - 1)][0];
if (_local3 > 0){
_local4 = (_local3 % 1000);
_local5 = (((_local3 / 1000) >> 0) % 60);
_local6 = ((_local3 / 60000) >> 0);
_arg1["t_time"].text = ((((((_local6 < 9)) ? String(("0" + _local6)) : String(_local6) + "'") + ((_local5 < 9)) ? String(("0" + _local5)) : String(_local5)) + "''") + ((_local4 < 9)) ? ("00" + String(_local4)) : ((_local4 < 99)) ? ("0" + String(_local4)) : String(_local4));
_arg1["t_score"].text = model.records[(_arg2 - 1)][1];
};
} else {
_arg1["m_forbid"].visible = true;
_arg1["m_finish"].visible = true;
_arg1.setOverSound("mapover");
_arg1.setDownSound("maplock");
};
}
override public function onClickBack(_arg1:LetheButton=null, _arg2=null):void{
super.onClickBack(_arg1);
m_map1.disable();
m_map2.disable();
m_map3.disable();
m_map4.disable();
m_map5.disable();
m_map6.disable();
onClosePage({page:"LevelSelect", info:0});
}
override public function onClickNext(_arg1:LetheButton=null, _arg2=null):void{
if (model.mapOpen[((selectedLevel + mapExtra) - 1)][0] == 1){
super.onClickNext(_arg1);
m_map1.disable();
m_map2.disable();
m_map3.disable();
m_map4.disable();
m_map5.disable();
m_map6.disable();
onClosePage({page:"LevelSelect", info:selectedLevel});
};
}
private function onSelectMap(_arg1:LetheButton, _arg2:int):void{
if (currentSelected != null){
currentSelected.releaseToogle();
};
currentSelected = _arg1;
currentSelected.setToogle();
selectedLevel = _arg2;
}
public function enableButton():void{
m_map1.enable();
m_map2.enable();
m_map3.enable();
m_map4.enable();
m_map5.enable();
m_map6.enable();
}
public function resetFocus():void{
var _local1:int;
if (((((model.newOpen - mapExtra) >= 0)) && (((model.newOpen - mapExtra) < 6)))){
currentSelected = this[("m_map" + ((model.newOpen - mapExtra) + 1))];
currentSelected.setToogle();
selectedLevel = ((model.newOpen - mapExtra) + 1);
_local1 = (model.newOpen - mapExtra);
} else {
currentSelected = this[("m_map" + (model.habits[model.gameMode] + 1))];
this[("m_map" + (model.habits[model.gameMode] + 1))].setToogle();
selectedLevel = (model.habits[model.gameMode] + 1);
_local1 = model.habits[model.gameMode];
};
keyManager.setPageFocus(buttons, ((_local1 / 3) >> 0), (_local1 % 3), [32, 13, 27, 8, 81], [onClickNext, onClickNext, onClickBack, onClickBack, onClickBack]);
stage.focus = this;
}
}
}//package com.Lethe.ui
Section 108
//LevelSelect1 (com.Lethe.ui.LevelSelect1)
package com.Lethe.ui {
import flash.display.*;
import com.Lethe.model.*;
public class LevelSelect1 extends LevelSelect {
private var alertPage:AlertPage;
private var isFirst:Boolean;// = false
public var b_parctice:LetheButton;
public function LevelSelect1(_arg1:DisplayObjectContainer){
isFirst = false;
super(_arg1);
if (Model.getInstance().trained != true){
isFirst = true;
new AlertPage(this.parent.parent, this);
Model.getInstance().writeTrained();
};
}
override public function init():void{
super.init();
this.register(b_parctice, showAlertPage);
}
private function showAlertPage(_arg1:LetheButton, _arg2):void{
new AlertPage(this.parent.parent, this);
}
override public function enableButton():void{
super.enableButton();
if (!isFirst){
resetFocus();
};
}
}
}//package com.Lethe.ui
Section 109
//LevelSelect2 (com.Lethe.ui.LevelSelect2)
package com.Lethe.ui {
import flash.display.*;
public class LevelSelect2 extends LevelSelect {
public function LevelSelect2(_arg1:DisplayObjectContainer){
super(_arg1);
}
override public function enableButton():void{
super.enableButton();
resetFocus();
}
}
}//package com.Lethe.ui
Section 110
//MainMenu (com.Lethe.ui.MainMenu)
package com.Lethe.ui {
import flash.display.*;
import com.Lethe.sound.*;
import zlong.navigate.*;
import com.Lethe.application.*;
public class MainMenu extends UI {
public var b_light:LetheButton;
public var b_music:LetheButton;
public var b_quality:LetheButton;
public var m_high:LetheButton;
public var m_race:LetheButton;
public var m_spil:LetheButton;
public var m_help:LetheButton;
private var qualities:Array;
public var m_more:LetheButton;
public var b_sound:LetheButton;
public var m_skill:LetheButton;
private static var viewed:Boolean = false;
public function MainMenu(_arg1:DisplayObjectContainer):void{
super(_arg1);
buttons = [[m_race], [m_skill], [m_help], [m_high], [m_more]];
register(m_race, onRaceClick);
register(m_skill, onSkillClick);
register(m_help, onHelpClick);
register(m_high, onHighClick);
register(m_more, onMoreClick);
register(m_spil, onSpilClick);
register(b_light, onCreditClick);
m_race.setOverSound("btnover");
m_race.setDownSound("btndown");
m_skill.setOverSound("btnover");
m_skill.setDownSound("btndown");
m_help.setOverSound("btnover");
m_help.setDownSound("btndown");
m_high.setOverSound("btnover");
m_high.setDownSound("btndown");
m_more.setOverSound("btnover");
m_more.setDownSound("btndown");
register(b_quality, changeQuality);
register(b_sound, turnSound);
register(b_music, trunMusic);
setPageFocus();
qualities = ["low", "medium", "high"];
setStateQuality();
setSound();
setMusic();
SoundManager.getInstance().playBgSound("menu");
if (!viewed){
viewed = true;
Main._tracker.trackEvent("king of drift", "mainscreen viewed", "per session", 0);
};
}
private function onMoreClick(_arg1:LetheButton, _arg2):void{
}
private function setMusic():void{
b_music["m_text"].gotoAndStop(((SoundManager.getInstance().bgOn == true)) ? 1 : 2);
}
private function onHighClick(_arg1:LetheButton, _arg2):void{
onClosePage({page:"MainMenu", info:2});
}
private function onSpilClick(_arg1:LetheButton, _arg2):void{
Handler.click_copyright();
}
private function changeQuality(_arg1:LetheButton, _arg2):void{
var _local3:int;
_local3 = ((SoundManager.getInstance().qualityN + 1) % 3);
SoundManager.getInstance().setQuality(_local3);
setStateQuality();
}
private function onRaceClick(_arg1:LetheButton, _arg2):void{
onClosePage({page:"MainMenu", info:0});
}
override public function setPageFocus():void{
stage.focus = this;
keyManager.setPageFocus(buttons, 0, 0, null, null, true);
}
private function turnSound(_arg1:LetheButton, _arg2):void{
SoundManager.getInstance().turnSeSound();
setSound();
}
private function onHelpClick(_arg1:LetheButton, _arg2):void{
onClosePage({page:"MainMenu", info:3});
}
private function onCreditClick(_arg1:LetheButton, _arg2=null):void{
new CreditPage(this);
}
private function setStateQuality():void{
b_quality["m_text"].gotoAndStop((SoundManager.getInstance().qualityN + 1));
stage.quality = qualities[SoundManager.getInstance().qualityN];
}
private function setSound():void{
b_sound["m_text"].gotoAndStop(((SoundManager.getInstance().seOn == true)) ? 1 : 2);
}
private function trunMusic(_arg1:LetheButton, _arg2):void{
SoundManager.getInstance().turnBgSound();
setMusic();
}
private function onSkillClick(_arg1:LetheButton, _arg2):void{
onClosePage({page:"MainMenu", info:1});
}
}
}//package com.Lethe.ui
Section 111
//MapLoading (com.Lethe.ui.MapLoading)
package com.Lethe.ui {
import flash.events.*;
import flash.display.*;
import com.Lethe.controller.*;
import com.Lethe.sound.*;
import com.Lethe.model.*;
import flash.text.*;
public class MapLoading extends MovieClip {
public var __id1_:mylogo;
public var miniMap:MovieClip;
public var t_percent:TextField;
public function MapLoading(){
addFrameScript(20, startGame);
miniMap.gotoAndStop((((Model.getInstance().gameMode * 6) + Model.getInstance().mapId) + 1));
this.addEventListener(Event.ENTER_FRAME, updateText, false, 0, true);
Model.getInstance().writeUseage();
__setProp___id1___1();
}
function __setProp___id1___1(){
try {
__id1_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id1_.position = "logo_mapPerloader";
__id1_.align = "Center";
__id1_.logotype = "logo";
__id1_.maxWidth = 0;
__id1_.maxHeight = 30;
try {
__id1_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
private function startGame():void{
stop();
SoundManager.getInstance().stopBgSound();
BroadCaster.getInstance().run("onMapLoadDone");
this.parent.removeChild(this);
}
private function updateText(_arg1:Event):void{
t_percent.text = (String((((currentFrame / totalFrames) * 100) >> 0)) + "%");
}
}
}//package com.Lethe.ui
Section 112
//PausePage (com.Lethe.ui.PausePage)
package com.Lethe.ui {
import flash.events.*;
import flash.display.*;
import com.Lethe.controller.*;
public class PausePage extends MovieClip {
public function PausePage(_arg1:DisplayObjectContainer){
_arg1.addChild(this);
this.addEventListener(MouseEvent.CLICK, continueGame, false, 0, true);
}
private function continueGame(_arg1:MouseEvent):void{
BroadCaster.getInstance().run("onResumeGame");
}
public function remove():void{
try {
this.parent.removeChild(this);
} catch(err:Error) {
};
}
}
}//package com.Lethe.ui
Section 113
//ToolBar (com.Lethe.ui.ToolBar)
package com.Lethe.ui {
import flash.display.*;
import com.Lethe.vo.*;
import com.Lethe.model.*;
import flash.text.*;
import com.Lethe.core.*;
import com.Lethe.Effect.*;
public class ToolBar extends UI {
public var t_bestTime:TextField;
private var basicScoreLose:int;// = 0
private var worldData:WorldItem;
private var driftRotation:Number;
public var m_cDriftScore:MovieClip;
private var m_speedmask:MovieClip;
private var arriveNotice:ArriveNotice;
private var boundsOnShow:Number;
public var t_speed:TextField;
private var colorStep:int;// = 0
public var update:Function;
private var bestTime:int;// = 0
public var t_bounds:TextField;
private var rankMc:Array;
private var m_driftMask:MovieClip;
private var speedRotation:Number;
public var t_degree:TextField;
private var scoresOnShow:Array;
private var loseCount:int;// = 1
private var currentStage:GameStage;
private var t_totalDriftScore:TextField;
public var m_totalDriftScore:MovieClip;
private var m_speedArrow:MovieClip;
public var t_rank:TextField;
private var effects:Object;
public var t_laps:TextField;
private var stepScore:int;// = 0
private var cUpdateCar:int;
public var m_drift:MovieClip;
private var finishedAmount:int;// = 0
public var miniMap:MovieClip;
private var sortScore:Function;
private var totalDrifScoreOnShow:Number;
private var circleFinishedOnShow:int;// = -1
private var trueShowScore:int;// = 0
private var loseStarted:Boolean;// = false
private var m_arrow:MovieClip;
private var scoreMc:Array;
private var cDriftScoreOnShow:Number;
public var t_cDriftScore:TextField;
private var currentLocked:int;// = -1
public var m_score2:MovieClip;
public var m_score3:MovieClip;
public var m_score4:MovieClip;
public var m_speed:MovieClip;
private var updateNow_i:int;
public var m_score1:MovieClip;
public var t_lastTime:TextField;
public function ToolBar(_arg1:DisplayObjectContainer){
finishedAmount = 0;
currentLocked = -1;
bestTime = 0;
circleFinishedOnShow = -1;
loseStarted = false;
loseCount = 1;
basicScoreLose = 0;
stepScore = 0;
trueShowScore = 0;
colorStep = 0;
super(_arg1);
effects = new Object();
m_totalDriftScore.stop();
t_totalDriftScore = (m_totalDriftScore["txtMc"]["txt"] as TextField);
t_cDriftScore = (m_cDriftScore["txt"] as TextField);
m_speedArrow = (m_speed["m_speedArrow"] as MovieClip);
m_speedmask = (m_speed["m_speedmask"] as MovieClip);
m_arrow = (m_drift["m_arrow"] as MovieClip);
m_driftMask = (m_drift["m_driftMask"] as MovieClip);
scoreMc = [m_score1["t_score"], m_score2["t_score"], m_score3["t_score"], m_score4["t_score"]];
rankMc = [m_score1["t_rank"], m_score2["t_rank"], m_score3["t_rank"], m_score4["t_rank"]];
if (Model.getInstance().gameMode == 0){
sortScore = sortByRace;
} else {
sortScore = sortByScore;
};
}
public function onShowEffect(_arg1:Object):void{
switch (_arg1["name"]){
case "ReverseNotice":
if (_arg1["param"] == 1){
if (effects["ReverseNotice"] == null){
effects["ReverseNotice"] = new ReverseNotice(this);
};
} else {
if (effects["ReverseNotice"] != null){
effects["ReverseNotice"].removeMe();
effects["ReverseNotice"] = null;
};
};
break;
};
}
public function initMiniMap(_arg1:int):void{
miniMap.gotoAndStop(_arg1);
}
private function clearScoreArea():void{
t_totalDriftScore.text = "";
}
public function addIcon(_arg1:MovieClip, _arg2:Boolean=false):void{
if (_arg2){
miniMap.addChild(_arg1);
} else {
miniMap.addChildAt(_arg1, (miniMap.numChildren - 1));
};
}
public function onFinishCircle(_arg1:int, _arg2:Boolean):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
if ((((bestTime == 0)) || ((bestTime > _arg1)))){
bestTime = _arg1;
_local3 = (_arg1 % 1000);
_local4 = ((_arg1 / 1000) >> 0);
_local5 = (_local4 % 60);
_local6 = ((_local4 / 60) >> 0);
t_bestTime.text = ((((((_local6 > 9)) ? String(_local6) : ("0" + _local6) + "'") + ((_local5 > 9)) ? String(_local5) : ("0" + _local5)) + "''") + ((_local3 > 99)) ? String(_local3) : ((_local3 > 9)) ? ("0" + _local3) : ("00" + _local3));
};
if (_arg2){
_local3 = (_arg1 % 1000);
_local4 = ((_arg1 / 1000) >> 0);
_local5 = (_local4 % 60);
_local6 = ((_local4 / 60) >> 0);
t_lastTime.text = ((((((_local6 > 9)) ? String(_local6) : ("0" + _local6) + "'") + ((_local5 > 9)) ? String(_local5) : ("0" + _local5)) + "''") + ((_local3 > 99)) ? String(_local3) : ((_local3 > 9)) ? ("0" + _local3) : ("00" + _local3));
};
}
public function onFinishLap():void{
finishedAmount++;
}
private function sortByScore():void{
currentStage.carDatas.sortOn(["totalScore", "isPlayer"], [Array.NUMERIC, Array.DESCENDING]);
}
private function sortByRace():void{
currentStage.carDatas.sortOn(["deTImeUsed", "cAiposition", "thisdeDistance", "totalScore"], [Array.NUMERIC, Array.NUMERIC, Array.NUMERIC, Array.NUMERIC]);
}
public function updateIcon():void{
updateAllScore();
if (boundsOnShow != currentStage.lockedCar.dritBounds){
boundsOnShow = currentStage.lockedCar.dritBounds;
if (boundsOnShow != 0){
t_bounds.text = ("X" + boundsOnShow);
} else {
t_bounds.text = "";
};
};
if (cDriftScoreOnShow != currentStage.lockedCar.cDriftScore){
cDriftScoreOnShow = currentStage.lockedCar.cDriftScore;
if (cDriftScoreOnShow != 0){
t_cDriftScore.text = String(cDriftScoreOnShow);
} else {
t_cDriftScore.text = "";
};
};
if (colorStep > 0){
colorStep--;
} else {
if (colorStep == 0){
clearScoreArea();
colorStep = -1;
};
};
if (totalDrifScoreOnShow != currentStage.lockedCar.tDriftScore){
totalDrifScoreOnShow = currentStage.lockedCar.tDriftScore;
colorStep = -1;
if (totalDrifScoreOnShow != 0){
t_totalDriftScore.textColor = 0xCC6600;
m_totalDriftScore.gotoAndStop(1);
stepScore = Math.ceil(((totalDrifScoreOnShow - trueShowScore) / 8));
} else {
colorStep = 15;
};
} else {
if (trueShowScore != totalDrifScoreOnShow){
if (totalDrifScoreOnShow == 0){
if (currentStage.lockedCar.getScore){
t_totalDriftScore.textColor = 0xFF00;
m_totalDriftScore.gotoAndStop(2);
} else {
t_totalDriftScore.textColor = 0xFF0000;
m_totalDriftScore.gotoAndStop(3);
};
trueShowScore = 0;
stepScore = 0;
} else {
trueShowScore = (trueShowScore + stepScore);
if (trueShowScore >= totalDrifScoreOnShow){
trueShowScore = totalDrifScoreOnShow;
};
t_totalDriftScore.text = String(trueShowScore);
};
};
};
driftRotation = Math.abs((((currentStage.lockedCar.driftRotation * 360) / Math.PI) / 2));
while (driftRotation > 180) {
driftRotation = (driftRotation - 180);
};
speedRotation = Math.abs((currentStage.lockedCar.speedOnShow * 18));
m_speedArrow.rotation = speedRotation;
if (Math.abs(currentStage.lockedCar.directSpeed) > 0.1){
m_driftMask.rotation = driftRotation;
m_arrow.rotation = 0;
t_degree.text = (String((driftRotation >> 0)) + "°");
} else {
m_driftMask.rotation = 0;
m_arrow.rotation = 0;
t_degree.text = "0°";
};
t_speed.text = String((speedRotation >> 0));
m_speedmask.gotoAndStop(((speedRotation / 6) >> 0));
}
public function removeArriveNotice():void{
if (arriveNotice == null){
return;
};
arriveNotice.remove();
arriveNotice = null;
}
public function updateNow():void{
updateAllScore();
boundsOnShow = currentStage.lockedCar.dritBounds;
if (boundsOnShow != 0){
t_bounds.text = ("x" + boundsOnShow);
} else {
t_bounds.text = "";
};
driftRotation = Math.abs((((currentStage.lockedCar.driftRotation * 360) / Math.PI) / 2));
while (driftRotation > 180) {
driftRotation = (driftRotation - 180);
};
m_driftMask.rotation = driftRotation;
m_arrow.rotation = driftRotation;
speedRotation = Math.abs((currentStage.lockedCar.speedOnShow * 18));
m_speedArrow.rotation = speedRotation;
t_speed.text = String((speedRotation >> 0));
m_speedmask.gotoAndStop(((speedRotation / 6) >> 0));
t_degree.text = (String((driftRotation >> 0)) + "°");
}
public function reset():void{
m_score1.gotoAndStop(1);
m_score2.gotoAndStop(1);
m_score3.gotoAndStop(1);
m_score4.gotoAndStop(1);
finishedAmount = 0;
m_score1.m_star.visible = false;
m_score2.m_star.visible = false;
m_score3.m_star.visible = false;
m_score4.m_star.visible = false;
rankMc[0].text = "4:";
rankMc[1].text = "3:";
rankMc[2].text = "2:";
rankMc[3].text = "1:";
worldData = Model.getInstance().getWorldMap();
scoresOnShow = [-1, -1, -1, -1];
}
private function updateAllScore():void{
if (circleFinishedOnShow != currentStage.lockedCar.circleFinished){
if (currentStage.lockedCar.circleFinished < currentStage.lockedCar.circleTarget){
new CircleNotice((currentStage.lockedCar.circleFinished + 1), this);
if (currentStage.lockedCar.circleFinished >= 3){
removeArriveNotice();
};
circleFinishedOnShow = currentStage.lockedCar.circleFinished;
t_laps.text = (((String((currentStage.lockedCar.circleFinished + 1)) + "/") + currentStage.lockedCar.circleTarget) + " 2");
};
};
sortScore();
if (loseStarted){
loseCount++;
};
if ((loseCount % 150) == 0){
basicScoreLose = (basicScoreLose + ((Model.getInstance().gameDiff + 1) * 100));
};
cUpdateCar = 0;
while (cUpdateCar < 4) {
if (currentStage.carDatas[cUpdateCar].finished){
if (((!(loseStarted)) && (!((currentStage.carDatas[cUpdateCar] == currentStage.lockedCar))))){
loseStarted = true;
arriveNotice = new ArriveNotice(this);
};
this[("m_score" + (cUpdateCar + 1))].m_star.visible = true;
};
if ((loseCount % 150) == 0){
if (!currentStage.carDatas[cUpdateCar].finished){
currentStage.carDatas[cUpdateCar].loseScore(basicScoreLose);
new LoseScore(this[("m_score" + (cUpdateCar + 1))], basicScoreLose);
};
};
if (currentStage.carDatas[cUpdateCar] == currentStage.lockedCar){
if (currentLocked != cUpdateCar){
t_rank.text = (String((4 - cUpdateCar)) + "/4");
currentLocked = cUpdateCar;
m_score1.gotoAndStop(1);
m_score2.gotoAndStop(1);
m_score3.gotoAndStop(1);
m_score4.gotoAndStop(1);
scoreMc[0].textColor = 0xFFFFFF;
scoreMc[1].textColor = 0xFFFFFF;
scoreMc[2].textColor = 0xFFFFFF;
scoreMc[3].textColor = 0xFFFFFF;
rankMc[0].textColor = 0xFFFFFF;
rankMc[1].textColor = 0xFFFFFF;
rankMc[2].textColor = 0xFFFFFF;
rankMc[3].textColor = 0xFFFFFF;
rankMc[cUpdateCar].textColor = 0;
scoreMc[cUpdateCar].textColor = 0;
this[("m_score" + (cUpdateCar + 1))].gotoAndStop(2);
};
};
if (scoresOnShow[cUpdateCar] != currentStage.carDatas[cUpdateCar].totalScore){
scoresOnShow[cUpdateCar] = currentStage.carDatas[cUpdateCar].totalScore;
scoreMc[cUpdateCar].text = String(scoresOnShow[cUpdateCar]);
};
cUpdateCar++;
};
}
public function setStage(_arg1:GameStage):void{
currentStage = _arg1;
}
}
}//package com.Lethe.ui
Section 114
//UI (com.Lethe.ui.UI)
package com.Lethe.ui {
import flash.events.*;
import flash.display.*;
import com.Lethe.controller.*;
public class UI extends MovieClip {
private var registedButtons:Array;
private var tempButton:LetheButton;
protected var keyManager:KeyManager;
protected var buttons:Array;
public function UI(_arg1:DisplayObjectContainer):void{
keyManager = KeyManager.getInstance();
registedButtons = new Array();
buttons = [[]];
keyManager.clearPageFocus();
if (_arg1){
_arg1.addChild(this);
init();
};
}
public function init():void{
stage.focus = this;
}
private function doCallBack(_arg1:MouseEvent):void{
var _local2:callBackBox;
tempButton = (_arg1.currentTarget as LetheButton);
if (!tempButton.mouseDisabled){
for each (_local2 in registedButtons) {
if (_local2.checkBtn(tempButton)){
return;
};
};
};
}
public function setPageFocus():void{
}
public function onClickBack(_arg1:LetheButton=null, _arg2=null):void{
keyManager.clearPageFocus();
}
public function onClickNext(_arg1:LetheButton=null, _arg2=null):void{
keyManager.clearPageFocus();
}
public function removePage():void{
try {
this.parent.removeChild(this);
} catch(e:Error) {
};
}
public function onClosePage(_arg1):void{
BroadCaster.getInstance().run("onClosePage", _arg1);
}
public function register(_arg1:LetheButton, _arg2:Function, _arg3=null, _arg4:Function=null, _arg5=null):void{
_arg1.addEventListener(MouseEvent.CLICK, doCallBack, false, 0, true);
registedButtons.push(new callBackBox(_arg1, _arg2, _arg3, _arg4, _arg5));
}
}
}//package com.Lethe.ui
import flash.display.*;
class callBackBox {
public var m_s_callBack:Function;
public var m_button:LetheButton;
public var m_s_params;
public var m_parms;
public var m_callBack:Function;
private function callBackBox(_arg1:LetheButton, _arg2:Function, _arg3, _arg4:Function=null, _arg5=null):void{
m_button = _arg1;
m_callBack = _arg2;
m_parms = _arg3;
m_s_callBack = _arg4;
m_s_params = _arg5;
}
public function checkBtn(_arg1:MovieClip):Boolean{
if (m_button == _arg1){
if (m_button.toogle){
if (m_s_callBack != null){
m_s_callBack(m_button, m_s_params);
} else {
m_callBack(m_button, m_parms);
};
return (true);
} else {
m_callBack(m_button, m_parms);
return (true);
};
};
return (false);
}
}
Section 115
//UIContainer (com.Lethe.ui.UIContainer)
package com.Lethe.ui {
import flash.display.*;
import com.Lethe.sound.*;
import com.Lethe.core.*;
public class UIContainer extends UI {
public var m_sharedBar:MovieClip;
private var m_backBtn:LetheButton;
private var nextPage:String;
private var pageDefs:Object;
private var bigOpen:Boolean;// = false
private var cPage;
private var m_nextBtn:LetheButton;
private var showNow:Boolean;// = false
public var m_toolbar:ToolBar;
public var update:Function;
private var cFrame:int;
public var M_UI_box:MovieClip;
public function UIContainer(_arg1:DisplayObjectContainer):void{
bigOpen = false;
showNow = false;
super(_arg1);
this.gotoAndStop(30);
update = new Function();
addFrameScript(19, onOpen);
addFrameScript(29, onBigOpen);
addFrameScript(128, onClosed);
m_backBtn = (m_sharedBar["m_backBtn"] as LetheButton);
m_nextBtn = (m_sharedBar["m_nextBtn"] as LetheButton);
m_backBtn.setOverSound("btnover");
m_backBtn.setDownSound("btndown");
m_nextBtn.setOverSound("btnover");
m_nextBtn.setDownSound("btndown");
register(m_backBtn, onClickBack);
register(m_nextBtn, onClickNext);
initPages();
}
public function onResumeGame():void{
cPage.onResumeGame();
}
private function onClosed():void{
showPage(nextPage, showNow, bigOpen);
this.gotoAndPlay(2);
SoundManager.getInstance().playItemSound("open");
}
public function showPage(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false):void{
bigOpen = _arg3;
nextPage = _arg1;
showNow = _arg2;
if (_arg2){
removePage();
createPage();
if (bigOpen){
m_nextBtn.disable();
m_backBtn.disable();
this.gotoAndStop(30);
} else {
this.gotoAndStop(20);
};
} else {
cFrame = currentFrame;
if (cPage != null){
switch (cFrame){
case 30:
m_nextBtn.enable();
m_backBtn.enable();
this.gotoAndStop(20);
removePage();
createPage();
cPage.enableButton();
break;
case 20:
this.gotoAndPlay(97);
SoundManager.getInstance().playItemSound("close");
m_nextBtn.disable();
m_backBtn.disable();
break;
case 2:
removePage();
createPage();
this.play();
break;
case 129:
removePage();
createPage();
this.gotoAndPlay(2);
SoundManager.getInstance().playItemSound("open");
break;
};
} else {
this.gotoAndPlay(2);
SoundManager.getInstance().playItemSound("open");
};
};
}
public function onShowEffect(_arg1:Object):void{
m_toolbar.onShowEffect(_arg1);
}
override public function removePage():void{
if (cPage == null){
return;
};
if ((cPage is GameStage)){
update = new Function();
m_toolbar.removePage();
m_toolbar = null;
};
var _local1 = cPage;
_local1["removePage"]();
cPage = null;
}
public function updateFunc():void{
var _local1 = cPage;
_local1["update"]();
}
public function onMapLoaded():void{
m_toolbar.visible = true;
var _local1 = cPage;
_local1["onMapLoaded"]();
}
override public function onClickBack(_arg1:LetheButton=null, _arg2=null):void{
var _local3 = cPage;
_local3["onClickBack"](_arg1);
}
override public function onClickNext(_arg1:LetheButton=null, _arg2=null):void{
var _local3 = cPage;
_local3["onClickNext"](_arg1);
}
private function initPages():void{
pageDefs = new Object();
pageDefs["CarSelect"] = CarSelect;
pageDefs["DifficultSelect"] = DifficultSelect;
pageDefs["GameStage"] = GameStage;
pageDefs["MainMenu"] = MainMenu;
pageDefs["LevelSelect1"] = LevelSelect1;
pageDefs["LevelSelect2"] = LevelSelect2;
pageDefs["HighScores"] = HighScores;
pageDefs["HowToPlay"] = HowToPlay;
pageDefs["GameOver"] = GameOver;
}
private function onBigOpen():void{
stop();
}
public function onUpdateToolBar():void{
m_toolbar.updateNow();
}
private function createPage():void{
cPage = new pageDefs[nextPage](M_UI_box);
if ((cPage is GameStage)){
m_toolbar = new ToolBar(M_UI_box);
cPage.setToolBar(m_toolbar);
m_toolbar.setStage(cPage);
m_toolbar.reset();
m_toolbar.visible = false;
update = updateFunc;
};
}
public function onFinishCircle(_arg1:int, _arg2:Boolean){
m_toolbar.onFinishCircle(_arg1, _arg2);
}
public function onclickContinue():void{
if ((((cPage is MainMenu)) || ((cPage is GameOver)))){
cPage.setPageFocus();
};
}
private function onOpen():void{
if (!bigOpen){
if ((((nextPage == "HighScores")) || ((nextPage == "HowToPlay")))){
m_nextBtn.enable();
} else {
m_nextBtn.enable();
cPage.enableButton();
};
m_backBtn.enable();
stop();
};
}
public function onGameOver():void{
cPage.readResults();
}
public function onFinishLap():void{
m_toolbar.onFinishLap();
}
}
}//package com.Lethe.ui
Section 116
//UnlockPage (com.Lethe.ui.UnlockPage)
package com.Lethe.ui {
import flash.display.*;
public class UnlockPage extends UI {
private var positions:Array;
public var m_line1:MovieClip;
public var m_line3:MovieClip;
public var m_line2:MovieClip;
public var b_ok:LetheButton;
public function UnlockPage(_arg1:DisplayObjectContainer, _arg2:int, _arg3:int, _arg4:int):void{
positions = [235, 191.3, 144.6];
super(_arg1);
check(_arg2, 1);
check(_arg3, 2);
check(_arg4, 3);
b_ok.setOverSound("btnover");
b_ok.setDownSound("btndown");
}
private function check(_arg1:int, _arg2:int):void{
if (_arg1 < 0){
this[("m_line" + _arg2)].visible = false;
} else {
this[("m_line" + _arg2)]["mc"].gotoAndStop(_arg1);
this[("m_line" + _arg2)].y = positions.pop();
};
}
override public function init():void{
super.init();
register(b_ok, onClickOk);
keyManager.setPageFocus([[]], -1, -1, [27, 32, 13, 8, 81], [onClickOk, onClickOk, onClickOk, onClickOk, onClickOk]);
}
private function onClickOk(_arg1:LetheButton=null, _arg2=null):void{
(parent as GameOver).resetPageFocus();
parent.removeChild(this);
}
}
}//package com.Lethe.ui
Section 117
//ActiveObstacle (com.Lethe.vo.ActiveObstacle)
package com.Lethe.vo {
import flash.display.*;
import com.Lethe.enginee.*;
public class ActiveObstacle {
private var movies:Array;
public var physicalLines:Array;
private var checkPoints:Array;
private var tmpMc:MovieClip;
private var cCheckPoint:LetheVector;
private var isActive:Boolean;// = true
private var associatedMc:ActiveObstacle;
public function ActiveObstacle(_arg1:Array, _arg2:Array, _arg3:Array):void{
isActive = true;
super();
movies = _arg1;
checkPoints = _arg2;
isActive = true;
addLine(_arg3);
}
public function activeItems(_arg1:Boolean):void{
if (isActive){
return;
};
isActive = true;
if (_arg1){
for each (tmpMc in movies) {
tmpMc.visible = true;
};
};
}
public function getExtraLine():Array{
if (isActive){
return (physicalLines);
};
return (null);
}
public function addLine(_arg1:Array):void{
var _local2:WorldItem;
var _local3:Number;
var _local4:Number;
physicalLines = new Array();
for each (_local2 in _arg1) {
_local3 = Math.atan2((_local2.ey - _local2.sy), (_local2.ex - _local2.sx));
_local4 = 50;
physicalLines.push(new LetheRect(_local2.sx, _local2.sy, _local2.ex, _local2.ey, (_local2.ex - (_local4 * Math.sin(_local3))), (_local2.ey + (_local4 * Math.cos(_local3))), (_local2.sx - (_local4 * Math.sin(_local3))), (_local2.sy + (_local4 * Math.cos(_local3)))));
};
}
public function associateWithMc(_arg1:ActiveObstacle):void{
associatedMc = _arg1;
}
public function checkActive(_arg1:Number, _arg2:Number):void{
for each (cCheckPoint in checkPoints) {
if ((((Math.abs((cCheckPoint.x - _arg1)) < 110)) && ((Math.abs((cCheckPoint.y - _arg2)) < 110)))){
disableItems(true);
return;
};
};
}
public function disableItems(_arg1:Boolean):void{
if (isActive){
isActive = false;
if (associatedMc != null){
associatedMc.activeItems(_arg1);
};
if (_arg1 == true){
for each (tmpMc in movies) {
tmpMc.visible = false;
};
};
};
}
}
}//package com.Lethe.vo
Section 118
//GameResult (com.Lethe.vo.GameResult)
package com.Lethe.vo {
import com.Lethe.model.*;
public class GameResult {
private var names:Object;
public var isPlayer:Boolean;
public var playername:String;
public var time;
public var mc:ScoreLine;
public var dePoint:int;
public var stylePoint;
public function GameResult(_arg1:String, _arg2:int, _arg3:int, _arg4:Boolean=false){
names = ["cpu1", "cpu2", "cpu3", "cpu4", "cpu5", "cpu6", "cpu7"];
if (_arg4){
playername = Model.getInstance().playerName;
} else {
playername = names[(Number(_arg1.split("Car")[1]) - 1)];
};
time = _arg2;
dePoint = -(_arg3);
stylePoint = _arg3;
isPlayer = _arg4;
}
public function setMc(_arg1:ScoreLine):void{
mc = _arg1;
}
}
}//package com.Lethe.vo
Section 119
//Numbers (com.Lethe.vo.Numbers)
package com.Lethe.vo {
public class Numbers {
private static const RTOA:Number = 57.2957795130823;
private static const ATOR:Number = 0.0174532925199433;
public static const DPI:Number = 6.28318530717959;
public static function angleToRadius(_arg1:Number):Number{
return ((_arg1 * ATOR));
}
public static function radiusToAngle(_arg1:Number):Number{
return ((_arg1 * RTOA));
}
public static function getAbsAngle(_arg1:Number):Number{
return (((_arg1 >= 0)) ? _arg1 : (_arg1 + DPI));
}
public static function getDistance(_arg1:Number, _arg2:Number, _arg3:Number=0, _arg4:Number=0):Number{
return (Math.sqrt((Math.pow((_arg1 - _arg3), 2) + Math.pow((_arg2 - _arg4), 2))));
}
public static function getDAngle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (Math.atan2((_arg4 - _arg2), (_arg3 - _arg1)));
}
}
}//package com.Lethe.vo
Section 120
//ScoreLine (com.Lethe.vo.ScoreLine)
package com.Lethe.vo {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class ScoreLine extends MovieClip {
public var t_score:TextField;
public var t_rank:TextField;
private var stepScore:int;
public var t_money:TextField;
private var currenty:Number;
public var scoreOk:Boolean;// = false
private var ySpeed:Number;
public var t_name:TextField;
private var targetScore:int;
public var moved:Boolean;// = false
private var targetY:Number;
private var cScore:int;// = 0
public function ScoreLine(){
cScore = 0;
scoreOk = false;
moved = false;
super();
}
private function updatePosition(_arg1:Event):void{
currenty = (currenty + ySpeed);
if ((((ySpeed > 0)) && ((currenty >= targetY)))){
moved = true;
currenty = targetY;
this.y = currenty;
this.removeEventListener(Event.ENTER_FRAME, updatePosition);
} else {
if ((((ySpeed < 0)) && ((currenty <= targetY)))){
moved = true;
currenty = targetY;
this.y = currenty;
this.removeEventListener(Event.ENTER_FRAME, updatePosition);
} else {
this.y = currenty;
};
};
}
public function setScore(_arg1:int, _arg2:int, _arg3:String, _arg4:Number, _arg5:Boolean):void{
if (_arg5){
gotoAndStop(2);
} else {
gotoAndStop(1);
};
currenty = _arg4;
this.addEventListener(Event.ENTER_FRAME, updateScore, false, 0, true);
t_money.text = "--";
t_rank.text = String(_arg2);
t_name.text = _arg3;
targetScore = _arg1;
if (targetScore < 0){
targetScore = 0;
};
stepScore = (((targetScore / 65) >> 0) + 1);
}
private function updateScore(_arg1:Event):void{
cScore = (cScore + stepScore);
if (cScore > targetScore){
cScore = targetScore;
t_score.text = String(cScore);
scoreOk = true;
this.removeEventListener(Event.ENTER_FRAME, updateScore);
} else {
t_score.text = String(cScore);
};
}
public function setMoney(_arg1:int, _arg2:int):void{
t_money.text = String(_arg1);
t_rank.text = String(_arg2);
}
public function setPosition(_arg1:Number):void{
targetY = _arg1;
if (currenty > targetY){
ySpeed = -3;
this.addEventListener(Event.ENTER_FRAME, updatePosition, false, 0, true);
} else {
if (currenty == targetY){
moved = true;
} else {
ySpeed = 3;
this.addEventListener(Event.ENTER_FRAME, updatePosition, false, 0, true);
};
};
}
}
}//package com.Lethe.vo
Section 121
//WheelPrint (com.Lethe.vo.WheelPrint)
package com.Lethe.vo {
import flash.events.*;
import flash.display.*;
import com.Lethe.controller.*;
import flash.geom.*;
public class WheelPrint extends MovieClip {
private var rotate:Number;
private var printManager:ElementManager;
public function WheelPrint(){
addFrameScript(76, frame77);
this.stop();
addFrameScript(82, remove);
printManager = ElementManager.getInstance();
}
function frame77(){
remove();
}
private function onRemove(_arg1:Event):void{
printManager.recycleInstance(this);
}
public function setStyle(_arg1:Point, _arg2:Point, _arg3:Number):void{
this.x = _arg1.x;
this.y = _arg1.y;
rotate = Numbers.getDAngle(_arg1.x, _arg1.y, _arg2.x, _arg2.y);
this.rotation = Numbers.radiusToAngle(rotate);
this.scaleX = (Numbers.getDistance(_arg1.x, _arg1.y, _arg2.x, _arg2.y) / 5);
this.scaleY = Math.abs((_arg3 / 10));
this.alpha = (0.5 * Math.abs((_arg3 / 10)));
this.gotoAndPlay(1);
}
private function remove():void{
try {
this.parent.removeChild(this);
} catch(e:Error) {
};
this.stop();
printManager.recycleInstance(this);
}
}
}//package com.Lethe.vo
Section 122
//WorldItem (com.Lethe.vo.WorldItem)
package com.Lethe.vo {
public class WorldItem {
public var blocks:Array;
public var checkPoints:Array;
public var extra:Array;
public var ref:String;
private var cObs:WorldItem;
public var circles:Array;
public var cars:Array;
public var aiPoints:Array;
public var obses:Array;
public var ex:Number;
public var ey:Number;
public var bgs:Array;
public var arcs:Array;
public var sx:Number;
public var sy:Number;
private var cBlock:WorldItem;
public var aiSettings:Array;
public var cx:Number;
public var cy:Number;
public var lines:Array;
public function WorldItem(_arg1:XML, _arg2:Number=0, _arg3:Number=0):void{
sx = (Number(_arg1.attribute("sx")) + _arg2);
sy = (Number(_arg1.attribute("sy")) + _arg3);
ex = (Number(_arg1.attribute("ex")) + _arg2);
ey = (Number(_arg1.attribute("ey")) + _arg3);
cx = (Number(_arg1.attribute("cx")) + _arg2);
cy = (Number(_arg1.attribute("cy")) + _arg3);
extra = String(_arg1.attribute("extra")).split("_");
ref = _arg1.attribute("ref");
lines = new Array();
circles = new Array();
bgs = new Array();
cars = new Array();
arcs = new Array();
blocks = new Array();
aiPoints = new Array();
obses = new Array();
checkPoints = new Array();
aiSettings = new Array();
}
public function setCar(_arg1:XML):void{
cars.push(new WorldItem(_arg1));
}
public function addObs(_arg1:XML):void{
cObs = new WorldItem(_arg1);
obses.push(cObs);
}
public function addAi(_arg1:XML):void{
aiPoints.push(new WorldItem(_arg1));
}
public function addLine(_arg1:XML):void{
if (cBlock == null){
lines.push(new WorldItem(_arg1, sx, sy));
} else {
cBlock.addLine(_arg1);
};
}
public function setBg(_arg1:XML):void{
bgs.push(new WorldItem(_arg1));
}
public function addObsLine(_arg1:XML):void{
cObs.lines.push(new WorldItem(_arg1, Number(_arg1.attribute("cx")), Number(_arg1.attribute("cy"))));
}
public function addCircle(_arg1:XML):void{
if (cBlock == null){
circles.push(new WorldItem(_arg1, sx, sy));
} else {
cBlock.addCircle(_arg1);
};
}
public function addAiSetting(_arg1:XML):void{
aiSettings.push(new WorldItem(_arg1));
}
public function addCheckPoint(_arg1:XML):void{
checkPoints.push(new WorldItem(_arg1));
}
public function addArc(_arg1:XML):void{
if (cBlock == null){
arcs.push(new WorldItem(_arg1, sx, sy));
} else {
cBlock.addArc(_arg1);
};
}
public function createBlock(_arg1:XML):void{
cBlock = new WorldItem(_arg1);
blocks.push(cBlock);
}
}
}//package com.Lethe.vo
Section 123
//car1Preview_220 (Drift_local_fla.car1Preview_220)
package Drift_local_fla {
import flash.display.*;
public dynamic class car1Preview_220 extends MovieClip {
public var carMc:MovieClip;
}
}//package Drift_local_fla
Section 124
//label_203 (Drift_local_fla.label_203)
package Drift_local_fla {
import flash.display.*;
public dynamic class label_203 extends MovieClip {
public var flag:MovieClip;
}
}//package Drift_local_fla
Section 125
//LanguageSelectPopup_202 (Drift_local_fla.LanguageSelectPopup_202)
package Drift_local_fla {
import flash.display.*;
public dynamic class LanguageSelectPopup_202 extends MovieClip {
public var l_se:MovieClip;
public var l_br:MovieClip;
public var l_in:MovieClip;
public var l_cn:MovieClip;
public var l_tr:MovieClip;
public var l_de:MovieClip;
public var l_my:MovieClip;
public var _blank:MovieClip;
public var l_es:MovieClip;
public var l_en_uk:MovieClip;
public var l_fr:MovieClip;
public var l_en_us:MovieClip;
public var l_pl:MovieClip;
public var l_pt:MovieClip;
public var l_ph:MovieClip;
public var l_nl:MovieClip;
public var l_id:MovieClip;
public var l_it:MovieClip;
public var l_jp:MovieClip;
public var l_ru:MovieClip;
}
}//package Drift_local_fla
Section 126
//line1_60 (Drift_local_fla.line1_60)
package Drift_local_fla {
import flash.display.*;
public dynamic class line1_60 extends MovieClip {
public var mc:MovieClip;
}
}//package Drift_local_fla
Section 127
//line2_55 (Drift_local_fla.line2_55)
package Drift_local_fla {
import flash.display.*;
public dynamic class line2_55 extends MovieClip {
public var mc:MovieClip;
}
}//package Drift_local_fla
Section 128
//line3_58 (Drift_local_fla.line3_58)
package Drift_local_fla {
import flash.display.*;
public dynamic class line3_58 extends MovieClip {
public var mc:MovieClip;
}
}//package Drift_local_fla
Section 129
//logobar_66 (Drift_local_fla.logobar_66)
package Drift_local_fla {
import flash.display.*;
public dynamic class logobar_66 extends MovieClip {
public var m_backBtn:BACK;
public var m_nextBtn:NEXT;
public var __id2_:mylogo;
public function logobar_66(){
__setProp___id2__logobar_Layer2_1();
}
function __setProp___id2__logobar_Layer2_1(){
try {
__id2_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id2_.position = "logo_sharedToolBar";
__id2_.align = "Center";
__id2_.logotype = "logo";
__id2_.maxWidth = 200;
__id2_.maxHeight = 25;
try {
__id2_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package Drift_local_fla
Section 130
//scoreline1_171 (Drift_local_fla.scoreline1_171)
package Drift_local_fla {
import flash.display.*;
import flash.text.*;
public dynamic class scoreline1_171 extends MovieClip {
public var m_star:MovieClip;
public var t_score:TextField;
public var t_rank:TextField;
}
}//package Drift_local_fla
Section 131
//scoreline2_173 (Drift_local_fla.scoreline2_173)
package Drift_local_fla {
import flash.display.*;
import flash.text.*;
public dynamic class scoreline2_173 extends MovieClip {
public var m_star:MovieClip;
public var t_score:TextField;
public var t_rank:TextField;
}
}//package Drift_local_fla
Section 132
//t_totalDriftScore_175 (Drift_local_fla.t_totalDriftScore_175)
package Drift_local_fla {
import flash.display.*;
public dynamic class t_totalDriftScore_175 extends MovieClip {
public var txtMc:MovieClip;
}
}//package Drift_local_fla
Section 133
//Timeline_163 (Drift_local_fla.Timeline_163)
package Drift_local_fla {
import flash.display.*;
public dynamic class Timeline_163 extends MovieClip {
public var m_speedArrow:MovieClip;
public var m_speedmask:MovieClip;
}
}//package Drift_local_fla
Section 134
//Timeline_167 (Drift_local_fla.Timeline_167)
package Drift_local_fla {
import flash.display.*;
public dynamic class Timeline_167 extends MovieClip {
public var m_driftMask:MovieClip;
public var m_arrow:MovieClip;
}
}//package Drift_local_fla
Section 135
//Timeline_174 (Drift_local_fla.Timeline_174)
package Drift_local_fla {
import flash.display.*;
import flash.text.*;
public dynamic class Timeline_174 extends MovieClip {
public var txt:TextField;
}
}//package Drift_local_fla
Section 136
//Timeline_176 (Drift_local_fla.Timeline_176)
package Drift_local_fla {
import flash.display.*;
import flash.text.*;
public dynamic class Timeline_176 extends MovieClip {
public var txt:TextField;
}
}//package Drift_local_fla
Section 137
//Timeline_667 (Drift_local_fla.Timeline_667)
package Drift_local_fla {
import flash.display.*;
public dynamic class Timeline_667 extends MovieClip {
public var m_level:MovieClip;
public var m_mode:MovieClip;
}
}//package Drift_local_fla
Section 138
//Timeline_680 (Drift_local_fla.Timeline_680)
package Drift_local_fla {
import flash.display.*;
import flash.text.*;
public dynamic class Timeline_680 extends MovieClip {
public var txt:TextField;
}
}//package Drift_local_fla
Section 139
//O1111111l (O11111110.O1111111l)
package O11111110 {
import flash.net.*;
public class O1111111l {
private var O1111100O1:int;
private var O11111l1l:String;
private var oldlanguageOrder:Array;
private var cFame:String;// = "en_us"
private var languageOrder:Array;
private var O11111l1O:Array;
public var O11111OOO:int;// = 1
private var O111111O0:String;
private var O111111Ol:String;
private static var O11111l11:O1111111l;
public function O1111111l():void{
languageOrder = ["en_us", "cn", "nl", "fr", "de", "pl", "se", "it", "es", "br", "id", "ru", "en_uk", "in", "pt", "ph", "jp"];
oldlanguageOrder = ["en_us", "cn", "nl", "fr", "de", "pl", "se", "it", "es", "br", "id", "ru", "en_uk", "in", "removed", "removed", "pt", "ph", "jp", "removed"];
cFame = "en_us";
O11111OOO = 1;
super();
O11111l1O = new Array();
}
private function O11111l10():void{
O11111l1O.push(new O11111O00(1, 1, "www.agame.com", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(17, 1, "www.gamesgames.com", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(29, 1, "www.girlsgogames.com", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(45, 2, "www.a10.com", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(2, 19, "www.game.com.cn", "/downloads"));
O11111l1O.push(new O11111O00(2, 19, "www.game.com.cn", "/downloads"));
O11111l1O.push(new O11111O00(2, 19, "www.game.com.cn", "/downloads"));
O11111l1O.push(new O11111O00(2, 19, "www.game.com.cn", "/downloads"));
O11111l1O.push(new O11111O00(4, 5, "www.spel.nl", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(18, 5, "www.spelletjes.nl", (((((("/spel/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(30, 5, "www.girlsgogames.nl", (((((("/spel/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(3, 5, "www.spel.nl", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(5, 6, "www.jeu.fr", (((((("/jeu/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(19, 6, "www.jeux.fr", (((((("/jeu/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(31, 6, "www.girlsgogames.fr", (((((("/jeu/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(4, 6, "www.jeu.fr", (((((("/jeu/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(6, 7, "www.spielen.com", (((((("/spiel/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(20, 7, "www.jetztspielen.de", (((((("/spiel/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(32, 7, "www.girlsgogames.de", (((((("/spiel/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(5, 7, "www.spielen.com", (((((("/spiel/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(14, 13, "www.minigry.pl", (((((("/gra/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(21, 13, "www.gry.pl", (((((("/gra/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(33, 13, "www.girlsgogames.pl", (((((("/gra/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(6, 13, "www.minigry.pl", (((((("/gra/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(9, 12, "www.spel.se", (((((("/spel_/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(22, 12, "www.spela.se", (((((("/spel_/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(34, 12, "www.girlsgogames.se", (((((("/spel_/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(7, 12, "www.spel.eu", (((((("/spel_/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(8, 11, "www.giocaregratis.it", (((((("/gioco/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(23, 11, "www.gioco.it", (((((("/gioco/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(35, 11, "www.girlsgogames.it", (((((("/gioco/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(8, 11, "www.giocaregratis.it", (((((("/gioco/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(5, 8, "www.zapjuegos.com", (((((("/juego/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(24, 8, "www.juegos.com", (((((("/juego/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(36, 8, "www.juegosdechicas.com", (((((("/juego/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(9, 8, "www.zapjuegos.com", (((((("/juego/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(7, 9, "www.clickjogos.com", (((((("/jogo/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(25, 9, "www.ojogos.com.br", (((((("/jogo/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(38, 9, "www.girlsgogames.com.br", (((((("/jogo/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(10, 9, "www.clickjogos.com", (((((("/jogo/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(13, 16, "www.games.co.id", (((((("/permainanme/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(13, 16, "www.games.co.id", (((((("/permainanme/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(13, 16, "www.games.co.id", (((((("/permainanme/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(13, 16, "www.games.co.id", (((((("/permainanme/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(11, 14, "www.flashgames.ru", (((((("/igra/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(26, 14, "www.ourgames.ru", (((((("/igra/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(39, 14, "www.girlsgogames.ru", (((((("/igra/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(12, 14, "www.flashgames.ru", (((((("/igra/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(10, 2, "www.mygames.co.uk", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(27, 2, "www.games.co.uk", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(37, 2, "www.girlsgogames.co.uk", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(13, 2, "www.mygames.co.uk", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(12, 3, "www.game.co.in", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(12, 3, "www.game.co.in", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(40, 3, "www.girlsgogames.in", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(14, 3, "www.game.co.in", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(42, 10, "www.ojogos.pt", (((((("/jogo/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(42, 10, "www.ojogos.pt", (((((("/jogo/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(42, 10, "www.ojogos.pt", (((((("/jogo/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(42, 10, "www.ojogos.pt", (((((("/jogo/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(43, 4, "www.laro.com.ph", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(43, 4, "www.laro.com.ph", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(43, 4, "www.laro.com.ph", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(43, 4, "www.laro.com.ph", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(44, 18, "www.egames.jp", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(44, 18, "www.egames.jp", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(44, 18, "www.egames.jp", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
O11111l1O.push(new O11111O00(44, 18, "www.egames.jp", (((((("/game/" + O111111O0) + ".html?utm_medium=brandedgames_external&utm_campaign=") + O111111Ol) + "&utm_source=") + O11111l1l) + "&utm_content=play_with_highscore")));
}
public function O11111Oll(_arg1:String, _arg2:String, _arg3:String, _arg4:int):void{
O1111100O1 = _arg4;
O11111l1l = _arg1;
O111111Ol = _arg2;
O111111O0 = _arg3;
O11111l10();
}
public function O11111O01():String{
return (O11111l1O[((((O11111OOO - 1) * 4) + O1111100O1) - 1)].O11111OOl);
}
public function O11111Ol0(_arg1:String="en_us"):void{
cFame = _arg1;
O11111OOO = (languageOrder.indexOf(_arg1) + 1);
if (O11111OOO == 0){
O11111OOO = 1;
cFame = "en_us";
};
}
public function O11111O0O():int{
return (O11111l1O[((((O11111OOO - 1) * 4) + O1111100O1) - 1)].O11111OO0);
}
public function O11111O0l():void{
navigateToURL(new URLRequest((("http://" + O11111l1O[((((O11111OOO - 1) * 4) + O1111100O1) - 1)].O11111OOl) + O11111l1O[((((O11111OOO - 1) * 4) + O1111100O1) - 1)].part2)), "_blank");
}
public function getOldOrder():int{
if (oldlanguageOrder.indexOf(cFame) < 0){
return (0);
};
return (oldlanguageOrder.indexOf(cFame));
}
public static function O11111OlO():O1111111l{
if (O11111l11 == null){
O11111l11 = new (O1111111l);
};
return (O11111l11);
}
}
}//package O11111110
class O11111O00 {
public var part2:String;
public var O11111OOl:String;
public var O11111OO0:int;
private function O11111O00(_arg1:int, _arg2:int, _arg3:String, _arg4):void{
O11111OOl = _arg3;
part2 = _arg4;
O11111OO0 = _arg2;
}
}
Section 140
//O1111111O (O11111110.O1111111O)
package O11111110 {
import flash.net.*;
import flash.external.*;
public class O1111111O {
private static const O11111OOO:Array = ["www.zlonggamestest.com", "gamedev.dev.spilgames.com", "gamedev.dev.spillgroup.com", "www.agame.com", "www.girlsgogames.com", "www.games.co.uk", "www.mygames.co.uk", "www.girlsgogames.co.uk", "www.spel.nl", "www.spelletjes.nl", "www.girlsgogames.nl", "www.jetztspielen.de", "www.spielen.com", "www.girlsgogames.de", "www.jeux.fr", "www.jeu.fr", "www.girlsgogames.fr", "www.juegos.com", "www.zapjuegos.com", "www.juegosdechicas.com", "www.gioco.it", "www.giocaregratis.it", "www.girlsgogames.it", "www.gry.pl", "www.minigry.pl", "www.girlsgogames.pl", "www.spela.se", "www.spel.eu", "www.girlsgogames.se", "www.ojogos.pt", "www.ourgames.ru", "www.flashgames.ru", "www.girlsgogames.ru", "www.oyunlar123.com", "www.asoyun.com", "www.girlsgogamestr.com", "www.gamesgames.com", "www.agame.com", "www.girlsgogames.com", "www.juegos.com", "www.zapjuegos.com", "www.juegosdechicas.com", "www.ojogos.com.br", "www.clickjogos.com", "www.girlsgogames.com.br", "www.game.com.cn", "www.xiaoyouxi.com", "www.egames.jp", "www.game.co.in", "www.game.co.in", "www.girlsgogames.in", "www.games.co.id", "www.laro.com.ph", "www.game.com.my", "www.onrpg.com", "www.zlonggames.com", "www.a10.com"];
private static var O11111OOl:URLRequest;
private static var O11111OO0;
public function O1111111O():void{
super();
try {
O11111OO0 = ExternalInterface.call("window.location.href.toString");
} catch(e) {
O11111OO0 = "error";
};
if ((((O11111OO0 == null)) || ((O11111OO0 == "")))){
O11111OO0 = "error";
};
if (String(O11111OO0).indexOf(".swf") != -1){
O11111OO0 = "error";
};
}
public function O11111OO1():Boolean{
if (((!((O11111Ol0(O11111O01(O11111OO0)) == -1))) && (!((O11111OO0 == "error"))))){
return (true);
};
return (false);
}
private static function O11111O01(_arg1:String):String{
var _local2:String;
var _local3:uint;
_local2 = new String();
_local3 = 7;
while (_local3 < _arg1.length) {
if (_arg1.charAt(_local3) == "/"){
break;
};
_local2 = (_local2 + _arg1.charAt(_local3));
_local3++;
};
return (_local2);
}
private static function O11111Ol0(_arg1:String):Number{
var _local2:uint;
if (((O11111OOO) && (_arg1))){
_local2 = 0;
while (_local2 < O11111OOO.length) {
if (_arg1 == O11111OOO[_local2]){
return (_local2);
};
_local2++;
};
return (-1);
} else {
trace("cannot find site name");
};
return (-1);
}
}
}//package O11111110
Section 141
//DomainData (zlong.domain.DomainData)
package zlong.domain {
final class DomainData {
static const allowedDomain:Array = ["www8.agame.com", "www.zlonggamestest.com", "gamedev.dev.spilgames.com", "localhost"];
}
}//package zlong.domain
Section 142
//DomainInfo (zlong.domain.DomainInfo)
package zlong.domain {
import flash.net.*;
public final class DomainInfo {
private var _domain:String;
private var _domainAb:String;
private var _allowed:Boolean;
private static var _instance:DomainInfo;
public function DomainInfo(){
_domain = new LocalConnection().domain;
initAllowed();
initAb();
}
public function get domainAb():String{
return (_domainAb);
}
public function get allowed():Boolean{
return (_allowed);
}
public function get domain():String{
return (_domain);
}
private function initAb():void{
var _local1:Array;
var _local2:int;
var _local3:int;
if (_domain != "localhost"){
_local1 = _domain.split(".");
_local2 = (_local1.length - 1);
_local3 = (_local1.length - 2);
_domainAb = ((_local1[_local3] + ".") + _local1[_local2]);
} else {
_domainAb = "offline_play";
};
}
private function initAllowed():void{
var _local1:int;
_local1 = 0;
while (_local1 < DomainData.allowedDomain.length) {
if (_domain == DomainData.allowedDomain[_local1]){
_allowed = true;
break;
};
_local1++;
};
}
public static function get instance():DomainInfo{
if (_instance == null){
_instance = new (DomainInfo);
};
return (_instance);
}
}
}//package zlong.domain
Section 143
//Countries (zlong.localization.country.Countries)
package zlong.localization.country {
import zlong.localization.country.*;
class Countries {
private var _countryGroup:Array;
private var _portal:String;
private var _portalGroup:Array;
private var _countries:Object;
private var _country:String;
function Countries(){
initPortalGroup();
}
private function initPortalGroup():void{
var _local1:int;
_portalGroup = new Array();
_local1 = 0;
while (_local1 < CountriesData.DATA.children().length()) {
_portalGroup.push(CountriesData.DATA.children()[_local1].name());
_local1++;
};
}
private function initCountries():void{
var _local1:CountryItem;
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:int;
_countries = new Object();
_countryGroup = new Array();
_local6 = 0;
while (_local6 < CountriesData.DATA[_portal]["country"].length()) {
_local2 = CountriesData.DATA[_portal]["country"][_local6].@name;
_local3 = CountriesData.DATA[_portal]["country"][_local6].@domain;
_local4 = CountriesData.DATA[_portal]["country"][_local6].@game;
_local5 = int(CountriesData.DATA[_portal]["country"][_local6].@language);
_local1 = new CountryItem();
_local1.name = _local2;
_local1.domain = _local3;
_local1.game = _local4;
_local1.language = _local5;
_countries[_local1.name] = _local1;
_countryGroup.push(_local2);
_local6++;
};
}
function get countryGroup():Array{
if (_countryGroup == null){
throw (new ArgumentError("Please set portal"));
};
return (_countryGroup);
}
function set country(_arg1:String):void{
if (((!((_countryGroup == null))) && (!(inArray(_arg1, _countryGroup))))){
_country = _countryGroup[0];
} else {
_country = _arg1;
};
}
function set portal(_arg1:String):void{
if (!inArray(_arg1, _portalGroup)){
throw (new ArgumentError(("Please set portal with value : " + _portalGroup.toString())));
};
_portal = _arg1;
initCountries();
if (((!((_country == null))) && (!(inArray(_country, _countryGroup))))){
throw (new ArgumentError(("Please reset country with value : " + _countryGroup.toString())));
};
}
function get current():CountryItem{
if (_portal == null){
throw (new ArgumentError("Please set portal"));
};
if (_country == null){
throw (new ArgumentError("Please set country"));
};
return (_countries[_country]);
}
private function inArray(_arg1:String, _arg2:Array):Boolean{
var _local3:int;
_local3 = 0;
while (_local3 < _arg2.length) {
if (_arg1 == _arg2[_local3]){
return (true);
};
_local3++;
};
return (false);
}
}
}//package zlong.localization.country
Section 144
//CountriesData (zlong.localization.country.CountriesData)
package zlong.localization.country {
class CountriesData {
static const DATA:XML = <data>
<family>
<country name="br" domain="www.ojogos.com.br" game="jogo" language="7"/><!-- Brazillian -->
<country name="cn" domain="www.game.com.cn" game="moregames" language="15"/><!-- Chinese -->
<country name="de" domain="www.jetztspielen.de" game="spiel" language="5"/><!-- German -->
<country name="es" domain="www.juegos.com" game="juego" language="6"/><!-- Spanish -->
<country name="fr" domain="www.jeux.fr" game="jeu" language="4"/><!-- French -->
<country name="id" domain="www.games.co.id" game="permainanme" language="13"/><!-- Indonesian -->
<country name="in" domain="www.game.co.in" game="game" language="2"/><!-- English UK -->
<country name="it" domain="www.gioco.it" game="gioco" language="9"/><!-- Italian -->
<country name="jp" domain="www.egames.jp" game="game" language="14"/><!-- Japanese -->
<country name="nl" domain="www.spelletjes.nl" game="spel" language="3"/><!-- Dutch -->
<country name="pl" domain="www.gry.pl" game="gra" language="11"/><!-- Polish -->
<country name="pt" domain="www.ojogos.pt" game="jogo" language="8"/><!-- Portuguese -->
<country name="ru" domain="www.ourgames.ru" game="igra" language="12"/><!-- Russian -->
<country name="se" domain="www.spela.se" game="spel_" language="10"/><!-- Swedish -->
<country name="en_uk" domain="www.games.co.uk" game="game" language="2"/><!-- English UK -->
<country name="en_us" domain="www.gamesgames.com" game="game" language="1"/><!-- English US -->
<!-- removed -->
<!-- country name="ph" domain="www.laro.com.ph" game="game" language="2"/ --><!-- English UK -->
<!-- country name="tr" domain="www.asoyun.com" game="oyun" language="13"/ --><!-- Turkish -->
<!-- country name="my" domain="www.game.com.my" game="permainan_" language="15"/ --><!-- Malaysian -->
</family>
<tween>
<country name="br" domain="www.clickjogos.com" game="jogo" language="7"/><!-- Brazillian -->
<country name="cn" domain="www.game.com.cn" game="moregames" language="16"/><!-- Chinese -->
<country name="de" domain="www.spielen.com" game="spiel" language="5"/><!-- German -->
<country name="es" domain="www.zapjuegos.com" game="juego" language="6"/><!-- Spanish -->
<country name="fr" domain="www.jeu.fr" game="jeu" language="4"/><!-- French -->
<country name="id" domain="www.games.co.id" game="permainanme" language="13"/><!-- Indonesian -->
<country name="in" domain="www.game.co.in" game="game" language="2"/><!-- English UK -->
<country name="it" domain="www.giocaregratis.it" game="gioco" language="9"/><!-- Italian -->
<country name="jp" domain="www.egames.jp" game="game" language="14"/><!-- Japanese -->
<country name="nl" domain="www.spel.nl" game="spel" language="3"/><!-- Dutch -->
<country name="pl" domain="www.minigry.pl" game="gra" language="11"/><!-- Polish -->
<country name="pt" domain="www.ojogos.pt" game="jogo" language="8"/><!-- Portuguese -->
<country name="ru" domain="www.flashgames.ru" game="igra" language="12"/><!-- Russian -->
<country name="se" domain="www.spel.se" game="spel_" language="10"/><!-- Swedish -->
<country name="en_uk" domain="www.mygames.co.uk" game="game" language="2"/><!-- English UK -->
<country name="en_us" domain="www.agame.com" game="game" language="1"/><!-- English US -->
<!-- removed -->
<!-- country name="ph" domain="www.laro.com.ph" game="game" language="2"/ --><!-- English UK -->
<!-- country name="tr" domain="www.asoyun.com" game="oyun" language="13"/ --><!-- Turkish -->
<!-- country name="my" domain="www.game.com.my" game="permainan_" language="15"/ --><!-- Malaysian -->
</tween>
<girl>
<country name="br" domain="www.girlsgogames.com.br" game="jogo" language="7"/><!-- Brazillian -->
<country name="cn" domain="www.game.com.cn" game="moregames" language="15"/><!-- Chinese -->
<country name="de" domain="www.girlsgogames.de" game="spiel" language="5"/><!-- German -->
<country name="es" domain="www.girlsgogames.es" game="juego" language="6"/><!-- Spanish -->
<country name="fr" domain="www.girlsgogames.fr" game="jeu" language="4"/><!-- French -->
<country name="id" domain="www.games.co.id" game="permainanme" language="13"/><!-- Indonesian -->
<country name="it" domain="www.girlsgogames.it" game="gioco" language="9"/><!-- Italian -->
<country name="jp" domain="www.egames.jp" game="game" language="14"/><!-- Japanese -->
<country name="nl" domain="www.girlsgogames.nl" game="spel" language="3"/><!-- Dutch -->
<country name="pl" domain="www.girlsgogames.pl" game="gra" language="11"/><!-- Polish -->
<country name="pt" domain="www.ojogos.pt" game="jogo" language="8"/><!-- Portuguese -->
<country name="ru" domain="www.girlsgogames.ru" game="igra" language="12"/><!-- Russian -->
<country name="se" domain="www.girlsgogames.se" game="spel_" language="10"/><!-- Swedish -->
<country name="en_uk" domain="www.girlsgogames.co.uk" game="game" language="2"/><!-- English UK -->
<country name="en_us" domain="www.girlsgogames.com" game="game" language="1"/><!-- English US -->
<!-- removed -->
<!-- country name="ph" domain="www.laro.com.ph" game="game" language="2"/ --><!-- English UK -->
<!-- country name="in" domain="www.girlsgogames.in" game="game" language="2"/ --><!-- English UK -->
<!-- country name="tr" domain="www.girlsgogamestr.com" game="oyun" language="13"/ --><!-- Turkish -->
<!-- country name="my" domain="www.game.com.my" game="permainan_" language="15"/ --><!-- Malaysian -->
</girl>
<teen>
<country name="br" domain="www.a10.com" game="jogo" language="7"/><!-- Brazillian -->
<country name="cn" domain="www.game.com.cn" game="moregames" language="15"/><!-- Chinese -->
<country name="de" domain="www.a10.com" game="spiel" language="5"/><!-- German -->
<country name="es" domain="www.a10.com" game="juego" language="6"/><!-- Spanish -->
<country name="fr" domain="www.a10.com" game="jeu" language="4"/><!-- French -->
<country name="id" domain="www.a10.com" game="permainanme" language="13"/><!-- Indonesian -->
<country name="in" domain="www.a10.com" game="game" language="2"/><!-- English UK -->
<country name="it" domain="www.a10.com" game="gioco" language="9"/><!-- Italian -->
<country name="jp" domain="www.a10.com" game="game" language="14"/><!-- Japanese -->
<country name="nl" domain="www.a10.com" game="spel" language="3"/><!-- Dutch -->
<country name="pl" domain="www.a10.com" game="gra" language="11"/><!-- Polish -->
<country name="pt" domain="www.a10.com" game="jogo" language="8"/><!-- Portuguese -->
<country name="ru" domain="www.a10.com" game="igra" language="12"/><!-- Russian -->
<country name="se" domain="www.a10.com" game="spel_" language="10"/><!-- Swedish -->
<country name="en_uk" domain="www.a10.com" game="game" language="2"/><!-- English UK -->
<country name="en_us" domain="www.a10.com" game="game" language="1"/><!-- English US -->
<!-- removed -->
<!-- country name="ph" domain="www.a10.com" game="game" language="2"/ --><!-- English UK -->
<!-- country name="tr" domain="www.a10.com" game="oyun" language="13"/ --><!-- Turkish -->
<!-- country name="my" domain="www.a10.com" game="permainan_" language="15"/ --><!-- Malaysian -->
</teen>
</data>
;
}
}//package zlong.localization.country
Section 145
//CountryInfo (zlong.localization.country.CountryInfo)
package zlong.localization.country {
import zlong.domain.*;
import zlong.localization.data.*;
public class CountryInfo {
private var countries:Countries;
private static var _instance:CountryInfo;
public function CountryInfo(){
countries = new Countries();
}
public function get domain():String{
return (countries.current.domain);
}
public function get countryGroup():Array{
return (countries.countryGroup);
}
public function get thisGameLink():String{
var _local1:String;
_local1 = ("http://" + domain);
_local1 = (_local1 + ((("/" + countries.current.game) + "/") + GameInfo.html));
if (countries.current.name != "cn"){
_local1 = (_local1 + ("?utm_medium=brandedgames_" + (DomainInfo.instance.allowed) ? "internal" : "external"));
_local1 = (_local1 + ("&utm_campaign=" + GameInfo.name));
_local1 = (_local1 + ("&utm_source=" + DomainInfo.instance.domainAb));
};
return (_local1);
}
public function set country(_arg1:String):void{
countries.country = _arg1;
}
public function get moreGameLink():String{
var _local1:String;
_local1 = ("http://" + domain);
if (countries.current.name != "cn"){
_local1 = (_local1 + "/");
_local1 = (_local1 + ("?utm_medium=brandedgames_" + (DomainInfo.instance.allowed) ? "internal" : "external"));
_local1 = (_local1 + ("&utm_campaign=" + GameInfo.name));
_local1 = (_local1 + ("&utm_source=" + DomainInfo.instance.domainAb));
} else {
_local1 = (_local1 + "/");
_local1 = (_local1 + "moregames");
_local1 = (_local1 + "/");
};
return (_local1);
}
public function get country():String{
return (countries.current.name);
}
public function set portal(_arg1:String):void{
countries.portal = _arg1;
}
public function get language():int{
return (countries.current.language);
}
public static function get instance():CountryInfo{
if (_instance == null){
_instance = new (CountryInfo);
};
return (_instance);
}
}
}//package zlong.localization.country
Section 146
//CountryItem (zlong.localization.country.CountryItem)
package zlong.localization.country {
final class CountryItem {
var domain:String;
var game:String;
var language:int;
var name:String;
}
}//package zlong.localization.country
Section 147
//CountryCookie (zlong.localization.data.CountryCookie)
package zlong.localization.data {
import flash.net.*;
public class CountryCookie {
private static const countryName:String = "savedLang";
private static const name:String = "spilgames_language_v100";
private static var so:SharedObject;
public function CountryCookie():void{
so = SharedObject.getLocal(name, "/");
}
public static function set country(_arg1:String):void{
so.data[countryName] = _arg1;
}
public static function get country():String{
return (so.data[countryName]);
}
}
}//package zlong.localization.data
Section 148
//GameInfo (zlong.localization.data.GameInfo)
package zlong.localization.data {
public class GameInfo {
public static var width:int = 550;
public static var height:int = 400;
public static var html:String = "Game-Name.html";
public static var name:String = "Game_Name";
public static var portal:String = "family";
}
}//package zlong.localization.data
Section 149
//CountriesBox (zlong.localization.display.CountriesBox)
package zlong.localization.display {
import flash.events.*;
import flash.display.*;
import zlong.localization.country.*;
import flash.geom.*;
import zlong.localization.data.*;
public class CountriesBox extends Sprite {
private var flagMc:MovieClip;
private var selectBox:MovieClip;
private var i:uint;
private var pop:Sprite;
private var baseX:Number;// = 0
private var baseY:Number;// = 0
private var country_name:TranText;
private var nameGroup:Array;
private var mul:int;// = 1
private var obj:Object;
public function CountriesBox(){
mul = 1;
baseX = 0;
baseY = 0;
nameGroup = [];
super();
obj = new Object();
addEventListener(Event.ADDED_TO_STAGE, addToStageHandler);
addEventListener(Event.REMOVED_FROM_STAGE, removeFromStageHandler);
}
private function init():void{
initPos();
setFlag();
setPop();
initEvent();
initPoPEvent();
}
private function initPoPEvent():void{
pop.addEventListener(MouseEvent.MOUSE_OVER, overPoPHandler);
pop.addEventListener(MouseEvent.MOUSE_OUT, outPoPHandler);
}
private function delPoPEvent():void{
pop.removeEventListener(MouseEvent.MOUSE_OVER, overPoPHandler);
pop.removeEventListener(MouseEvent.MOUSE_OUT, outPoPHandler);
}
private function outHandler(_arg1:MouseEvent):void{
pop.visible = false;
}
private function initPos():void{
var _local1:Point;
_local1 = new Point();
_local1 = this.localToGlobal(new Point(x, y));
if (_local1.y > (GameInfo.height / 2)){
mul = 1;
} else {
mul = -1;
};
}
private function initEvent():void{
addEventListener(MouseEvent.ROLL_OVER, overHandler, false, 0, true);
addEventListener(MouseEvent.ROLL_OUT, outHandler, false, 0, true);
addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
}
private function setPop():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:MovieClip;
var _local6:String;
var _local7:int;
_local3 = 0;
_local4 = 0;
pop = (getChildByName("popList") as Sprite);
selectBox = (getChildByName("selectbox") as MovieClip);
_local1 = pop["_blank"].width;
_local2 = (pop["_blank"].height - 1);
baseX = selectBox.x;
nameGroup = CountryInfo.instance.countryGroup;
_local7 = nameGroup.length;
if (mul == 1){
baseY = ((selectBox.y - (Math.round((_local7 / 2)) * _local2)) + _local2);
} else {
baseY = ((selectBox.y + selectBox.height) + _local2);
};
pop.y = baseY;
pop.visible = false;
pop["_blank"].visible = false;
i = 0;
while (i < _local7) {
_local6 = nameGroup[i];
if (pop.getChildByName(("l_" + _local6)) != null){
_local5 = (pop.getChildByName(("l_" + _local6)) as MovieClip);
_local5.mouseChildren = false;
_local5.buttonMode = true;
_local5.stop();
_local5["flag"].mouseEnable = false;
_local5["flag"].mouseChildren = false;
_local5["flag"].gotoAndStop(_local6);
obj[("l_" + _local6)] = true;
_local3 = (((i % 2) == 0)) ? 0 : 1;
_local5.x = ((_local1 * (i % 2)) - _local3);
_local5.y = ((_local2 * Math.floor((i / 2))) - _local2);
};
i++;
};
i = 0;
while (i < pop.numChildren) {
if (pop.getChildAt(i).name.indexOf("l_") != -1){
if (obj[pop.getChildAt(i).name] == undefined){
pop.getChildAt(i).visible = false;
};
};
i++;
};
if ((nameGroup.length % 2) == 0){
pop["_blank"].visible = false;
} else {
pop["_blank"].visible = true;
pop["_blank"].x = (_local1 - 1);
pop["_blank"].y = (((_local2 * Math.floor((nameGroup.length / 2))) - _local2) - _local4);
};
}
private function clickHandler(_arg1:MouseEvent):void{
var _local2:String;
var _local3:MovieClip;
_local2 = _arg1.target["name"];
if (_local2 == "_blank"){
return;
};
if (_local2.indexOf("l_") != -1){
_local3 = (_arg1.target["getChildByName"]("flag") as MovieClip);
flagMc.gotoAndStop(_local2.substr(2));
country_name.gotoAndStop(_local3.currentFrame);
setLanguage(_local2.substr(2));
pop.visible = false;
};
}
private function addToStageHandler(_arg1:Event):void{
init();
}
private function outPoPHandler(_arg1:MouseEvent):void{
var _local2 = _arg1.target;
_local2["gotoAndStop"](1);
}
private function overPoPHandler(_arg1:MouseEvent):void{
var _local2 = _arg1.target;
_local2["gotoAndStop"](2);
}
private function overHandler(_arg1:MouseEvent):void{
pop.visible = true;
}
private function setLanguage(_arg1:String):void{
CountryInfo.instance.country = _arg1;
CountryCookie.country = _arg1;
Dispatcher.langChanged();
}
private function removeFromStageHandler(_arg1:Event):void{
removeEventListener(MouseEvent.ROLL_OVER, overHandler);
removeEventListener(MouseEvent.ROLL_OUT, outHandler);
removeEventListener(MouseEvent.CLICK, clickHandler);
removeEventListener(Event.ADDED_TO_STAGE, addToStageHandler);
removeEventListener(Event.REMOVED_FROM_STAGE, removeFromStageHandler);
delPoPEvent();
}
private function setFlag():void{
country_name = (getChildByName("countryName") as TranText);
country_name.change = false;
flagMc = (getChildByName("flag") as MovieClip);
flagMc.gotoAndStop(CountryInfo.instance.country);
country_name.gotoAndStop(CountryInfo.instance.country);
}
}
}//package zlong.localization.display
Section 150
//Dispatcher (zlong.localization.display.Dispatcher)
package zlong.localization.display {
import flash.events.*;
public class Dispatcher {
public static const LANGUAGE_CHANGED:String = "languageChanged";
public static var dispatcher:EventDispatcher = new EventDispatcher();
static function langChanged():void{
dispatcher.dispatchEvent(new Event(LANGUAGE_CHANGED));
}
}
}//package zlong.localization.display
Section 151
//Logo (zlong.localization.display.Logo)
package zlong.localization.display {
import flash.events.*;
import flash.display.*;
import zlong.localization.country.*;
import zlong.navigate.*;
public class Logo extends MovieClip {
private var movieTimer:MovieClip;
private var tmpMc:Sprite;
private var tx_type:String;// = "logo"
private var tx_position:String;// = "logo_mainscreen"
private var tx_align:String;// = "Center"
public var maxHeight:Number;// = 0
public var maxWidth:Number;// = 0
private var m_hitArea:Sprite;
public function Logo(){
tx_position = "logo_mainscreen";
tx_align = "Center";
maxWidth = 0;
maxHeight = 0;
tx_type = "logo";
super();
init();
m_hitArea = new Sprite();
addChildAt(m_hitArea, 0);
m_hitArea.graphics.beginFill(3368601, 0);
m_hitArea.graphics.drawRect(0, 0, 10, 10);
m_hitArea.graphics.endFill();
movieTimer = (new MovieTimer() as MovieClip);
movieTimer.addFrameScript(1, updateView);
movieTimer.gotoAndStop(2);
}
private function updateView():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
tmpMc = (getChildAt(1) as Sprite);
_local1 = 1;
_local2 = 1;
_local3 = 1;
if (maxHeight > 0){
if (maxHeight < tmpMc.height){
_local1 = (maxHeight / tmpMc.height);
};
};
if (maxWidth > 0){
if (maxWidth < tmpMc.width){
_local2 = (maxWidth / tmpMc.width);
};
};
_local3 = ((_local1 > _local2)) ? _local2 : _local1;
tmpMc.width = (tmpMc.width * _local3);
tmpMc.height = (tmpMc.height * _local3);
switch (tx_align){
case "Left":
tmpMc.x = 0;
break;
case "Right":
tmpMc.x = -(tmpMc.width);
break;
case "Center":
tmpMc.x = (-(tmpMc.width) / 2);
break;
};
m_hitArea.width = tmpMc.width;
m_hitArea.height = tmpMc.height;
m_hitArea.x = tmpMc.x;
m_hitArea.y = tmpMc.y;
movieTimer.gotoAndStop(1);
}
private function init():void{
stop();
buttonMode = true;
gotoAndStop(CountryInfo.instance.domain);
addEvent();
}
public function set align(_arg1:String):void{
tx_align = _arg1;
}
private function langChangeHandler(_arg1:Event):void{
gotoAndStop(CountryInfo.instance.domain);
movieTimer.gotoAndStop(2);
}
private function removeHandler(_arg1:Event):void{
removeEventListener(Event.REMOVED_FROM_STAGE, removeHandler);
Dispatcher.dispatcher.removeEventListener(Dispatcher.LANGUAGE_CHANGED, langChangeHandler);
}
private function onClickLogo(_arg1:MouseEvent):void{
Handler.onLogoClick(tx_position);
}
public function set position(_arg1:String):void{
tx_position = _arg1;
}
private function initEvent(_arg1:Event):void{
addEventListener(Event.REMOVED_FROM_STAGE, removeHandler);
this.addEventListener(MouseEvent.CLICK, onClickLogo, false, 0, true);
Dispatcher.dispatcher.addEventListener(Dispatcher.LANGUAGE_CHANGED, langChangeHandler);
}
private function addEvent():void{
addEventListener(Event.ADDED_TO_STAGE, initEvent, false, 0, true);
}
public function set logotype(_arg1:String):void{
var _str = _arg1;
tx_type = _str;
if (_str != "logo"){
try {
this.removeEventListener(MouseEvent.CLICK, onClickLogo);
} catch(e:Error) {
};
try {
this.parent.addEventListener(MouseEvent.CLICK, onClickLogo, false, 0, true);
} catch(e:Error) {
this.addEventListener(MouseEvent.CLICK, onClickLogo, false, 0, true);
};
};
}
}
}//package zlong.localization.display
Section 152
//Menu (zlong.localization.display.Menu)
package zlong.localization.display {
import flash.events.*;
import flash.display.*;
import zlong.localization.country.*;
import zlong.navigate.*;
import flash.ui.*;
public class Menu {
private var item:ContextMenuItem;
private var document:Sprite;
private var menu:ContextMenu;
public function Menu(_arg1:Sprite){
document = _arg1;
init();
initEvent();
}
private function changeLang(_arg1:Event):void{
item.caption = ("More Games: " + CountryInfo.instance.domain);
}
private function initEvent():void{
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, Handler.click_menu_item);
Dispatcher.dispatcher.addEventListener(Dispatcher.LANGUAGE_CHANGED, changeLang);
}
private function init():void{
var _local1:ContextMenuBuiltInItems;
menu = new ContextMenu();
menu.hideBuiltInItems();
_local1 = menu.builtInItems;
_local1.print = true;
_local1.zoom = true;
_local1.quality = true;
item = new ContextMenuItem(("More Games: " + CountryInfo.instance.domain));
menu.customItems.push(item);
document.contextMenu = menu;
}
}
}//package zlong.localization.display
Section 153
//TranText (zlong.localization.display.TranText)
package zlong.localization.display {
import flash.events.*;
import flash.display.*;
import zlong.localization.country.*;
public class TranText extends MovieClip {
private var isChange:Boolean;// = true
public function TranText(){
isChange = true;
super();
init();
}
private function init():void{
changeLang();
addEvent();
}
private function langChangeHandler(_arg1:Event):void{
if (isChange){
changeLang();
};
}
private function removeHandler(_arg1:Event):void{
removeEventListener(Event.REMOVED_FROM_STAGE, removeHandler);
Dispatcher.dispatcher.removeEventListener(Dispatcher.LANGUAGE_CHANGED, langChangeHandler);
}
private function initEvent(_arg1:Event):void{
addEventListener(Event.REMOVED_FROM_STAGE, removeHandler);
Dispatcher.dispatcher.addEventListener(Dispatcher.LANGUAGE_CHANGED, langChangeHandler);
}
private function addEvent():void{
addEventListener(Event.ADDED_TO_STAGE, initEvent, false, 0, true);
}
public function set change(_arg1:Boolean):void{
isChange = _arg1;
}
private function changeLang():void{
gotoAndStop(CountryInfo.instance.language);
}
}
}//package zlong.localization.display
Section 154
//GameSetting (zlong.localization.GameSetting)
package zlong.localization {
import flash.display.*;
import zlong.localization.country.*;
import zlong.localization.display.*;
import zlong.localization.data.*;
public class GameSetting {
public function GameSetting(_arg1:Sprite, _arg2:String, _arg3:String, _arg4:String, _arg5:int, _arg6:int){
GameInfo.portal = _arg2;
GameInfo.name = _arg3;
GameInfo.html = _arg4;
GameInfo.width = _arg5;
GameInfo.height = _arg6;
init();
initMenu(_arg1);
}
private function init():void{
new CountryCookie();
CountryInfo.instance.portal = GameInfo.portal;
if (CountryCookie.country == null){
CountryInfo.instance.country = "en_us";
} else {
CountryInfo.instance.country = String(CountryCookie.country);
};
}
private function initMenu(_arg1:Sprite):void{
new Menu(_arg1);
}
}
}//package zlong.localization
Section 155
//Handler (zlong.navigate.Handler)
package zlong.navigate {
import flash.net.*;
import flash.events.*;
import zlong.localization.country.*;
import flash.external.*;
public class Handler {
public static function click_copyright(_arg1:Event=null):void{
var _local2:URLRequest;
if (CountryInfo.instance.country == "cn"){
_local2 = new URLRequest("http://www.game.com.cn/downloads/");
} else {
_local2 = new URLRequest("http://www.gameportal.net");
};
navigateToURL(_local2, "_blank");
}
public static function refurbish(_arg1:Event=null):void{
var e = _arg1;
try {
ExternalInterface.call("location.reload");
navigateToURL(new URLRequest(ExternalInterface.call("window.location.href.toString")), "_top");
} catch(myError:Error) {
};
}
public static function click_menu_item(_arg1:Event=null):void{
var _local2:URLRequest;
if (CountryInfo.instance.country == "cn"){
_local2 = new URLRequest(CountryInfo.instance.moreGameLink);
} else {
_local2 = new URLRequest((CountryInfo.instance.moreGameLink + "&utm_content=Contex_Menu"));
};
navigateToURL(_local2, "_blank");
}
public static function onLogoClick(_arg1:String):void{
var _local2:URLRequest;
if (CountryInfo.instance.country == "cn"){
_local2 = new URLRequest(CountryInfo.instance.moreGameLink);
} else {
_local2 = new URLRequest(((CountryInfo.instance.moreGameLink + "&utm_content=") + _arg1));
};
navigateToURL(_local2, "_blank");
}
}
}//package zlong.navigate
Section 156
//ACCELERATION (ACCELERATION)
package {
import zlong.localization.display.*;
public dynamic class ACCELERATION extends TranText {
}
}//package
Section 157
//ActiveBlock (ActiveBlock)
package {
import flash.display.*;
public dynamic class ActiveBlock extends MovieClip {
}
}//package
Section 158
//BACK (BACK)
package {
import com.Lethe.ui.*;
public dynamic class BACK extends LetheButton {
}
}//package
Section 159
//bBACK (bBACK)
package {
import zlong.localization.display.*;
public dynamic class bBACK extends TranText {
}
}//package
Section 160
//BEST_LAP (BEST_LAP)
package {
import zlong.localization.display.*;
public dynamic class BEST_LAP extends TranText {
}
}//package
Section 161
//bg_0_0_0 (bg_0_0_0)
package {
import flash.display.*;
public dynamic class bg_0_0_0 extends MovieClip {
}
}//package
Section 162
//bg01_1 (bg01_1)
package {
import flash.display.*;
public dynamic class bg01_1 extends MovieClip {
}
}//package
Section 163
//bg02_1 (bg02_1)
package {
import flash.display.*;
public dynamic class bg02_1 extends MovieClip {
}
}//package
Section 164
//bg03_1 (bg03_1)
package {
import flash.display.*;
public dynamic class bg03_1 extends MovieClip {
}
}//package
Section 165
//bg04_1 (bg04_1)
package {
import flash.display.*;
public dynamic class bg04_1 extends MovieClip {
}
}//package
Section 166
//bg05_1 (bg05_1)
package {
import flash.display.*;
public dynamic class bg05_1 extends MovieClip {
}
}//package
Section 167
//bg06_1 (bg06_1)
package {
import flash.display.*;
public dynamic class bg06_1 extends MovieClip {
}
}//package
Section 168
//bg07_1 (bg07_1)
package {
import flash.display.*;
public dynamic class bg07_1 extends MovieClip {
}
}//package
Section 169
//bg2_p1 (bg2_p1)
package {
import flash.display.*;
public dynamic class bg2_p1 extends MovieClip {
}
}//package
Section 170
//bg2_p2 (bg2_p2)
package {
import flash.display.*;
public dynamic class bg2_p2 extends MovieClip {
}
}//package
Section 171
//bg2_p3 (bg2_p3)
package {
import flash.display.*;
public dynamic class bg2_p3 extends MovieClip {
}
}//package
Section 172
//bg2_p4 (bg2_p4)
package {
import flash.display.*;
public dynamic class bg2_p4 extends MovieClip {
}
}//package
Section 173
//bg3_p1 (bg3_p1)
package {
import flash.display.*;
public dynamic class bg3_p1 extends MovieClip {
}
}//package
Section 174
//bg3_p2 (bg3_p2)
package {
import flash.display.*;
public dynamic class bg3_p2 extends MovieClip {
}
}//package
Section 175
//bg3_p3 (bg3_p3)
package {
import flash.display.*;
public dynamic class bg3_p3 extends MovieClip {
}
}//package
Section 176
//bg3_p4 (bg3_p4)
package {
import flash.display.*;
public dynamic class bg3_p4 extends MovieClip {
}
}//package
Section 177
//bg4_p1 (bg4_p1)
package {
import flash.display.*;
public dynamic class bg4_p1 extends MovieClip {
}
}//package
Section 178
//bg4_p2 (bg4_p2)
package {
import flash.display.*;
public dynamic class bg4_p2 extends MovieClip {
}
}//package
Section 179
//bg4_p3 (bg4_p3)
package {
import flash.display.*;
public dynamic class bg4_p3 extends MovieClip {
}
}//package
Section 180
//bg4_p4 (bg4_p4)
package {
import flash.display.*;
public dynamic class bg4_p4 extends MovieClip {
}
}//package
Section 181
//bg5_p1 (bg5_p1)
package {
import flash.display.*;
public dynamic class bg5_p1 extends MovieClip {
}
}//package
Section 182
//bg5_p2 (bg5_p2)
package {
import flash.display.*;
public dynamic class bg5_p2 extends MovieClip {
}
}//package
Section 183
//bg5_p3 (bg5_p3)
package {
import flash.display.*;
public dynamic class bg5_p3 extends MovieClip {
}
}//package
Section 184
//bg5_p4 (bg5_p4)
package {
import flash.display.*;
public dynamic class bg5_p4 extends MovieClip {
}
}//package
Section 185
//bg6_p1 (bg6_p1)
package {
import flash.display.*;
public dynamic class bg6_p1 extends MovieClip {
}
}//package
Section 186
//bg6_p2 (bg6_p2)
package {
import flash.display.*;
public dynamic class bg6_p2 extends MovieClip {
}
}//package
Section 187
//bg6_p3 (bg6_p3)
package {
import flash.display.*;
public dynamic class bg6_p3 extends MovieClip {
}
}//package
Section 188
//bg6_p4 (bg6_p4)
package {
import flash.display.*;
public dynamic class bg6_p4 extends MovieClip {
}
}//package
Section 189
//bNEXT (bNEXT)
package {
import zlong.localization.display.*;
public dynamic class bNEXT extends TranText {
}
}//package
Section 190
//btn_car1 (btn_car1)
package {
import com.Lethe.ui.*;
public dynamic class btn_car1 extends LetheButton {
}
}//package
Section 191
//btn_car2 (btn_car2)
package {
import com.Lethe.ui.*;
public dynamic class btn_car2 extends LetheButton {
}
}//package
Section 192
//btn_car3 (btn_car3)
package {
import com.Lethe.ui.*;
public dynamic class btn_car3 extends LetheButton {
}
}//package
Section 193
//btn_car4 (btn_car4)
package {
import com.Lethe.ui.*;
public dynamic class btn_car4 extends LetheButton {
}
}//package
Section 194
//btn_car5 (btn_car5)
package {
import com.Lethe.ui.*;
public dynamic class btn_car5 extends LetheButton {
}
}//package
Section 195
//btn_car6 (btn_car6)
package {
import com.Lethe.ui.*;
public dynamic class btn_car6 extends LetheButton {
}
}//package
Section 196
//btn_car7 (btn_car7)
package {
import com.Lethe.ui.*;
public dynamic class btn_car7 extends LetheButton {
}
}//package
Section 197
//btn_continue (btn_continue)
package {
import com.Lethe.ui.*;
public dynamic class btn_continue extends LetheButton {
}
}//package
Section 198
//btn_easy (btn_easy)
package {
import com.Lethe.ui.*;
public dynamic class btn_easy extends LetheButton {
}
}//package
Section 199
//btn_hard (btn_hard)
package {
import com.Lethe.ui.*;
public dynamic class btn_hard extends LetheButton {
}
}//package
Section 200
//btn_main_help (btn_main_help)
package {
import com.Lethe.ui.*;
public dynamic class btn_main_help extends LetheButton {
}
}//package
Section 201
//btn_main_high (btn_main_high)
package {
import com.Lethe.ui.*;
public dynamic class btn_main_high extends LetheButton {
}
}//package
Section 202
//btn_main_more (btn_main_more)
package {
import com.Lethe.ui.*;
public dynamic class btn_main_more extends LetheButton {
public var __id4_:mylogo;
public function btn_main_more(){
__setProp___id4__btn_main_more_Layer2_1();
}
function __setProp___id4__btn_main_more_Layer2_1(){
try {
__id4_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id4_.position = "button_mainscreen_moregames";
__id4_.align = "Center";
__id4_.logotype = "father_is_button";
__id4_.maxWidth = 160;
__id4_.maxHeight = 40;
try {
__id4_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package
Section 203
//btn_main_race (btn_main_race)
package {
import com.Lethe.ui.*;
public dynamic class btn_main_race extends LetheButton {
}
}//package
Section 204
//btn_main_trick (btn_main_trick)
package {
import com.Lethe.ui.*;
public dynamic class btn_main_trick extends LetheButton {
}
}//package
Section 205
//btn_map1 (btn_map1)
package {
import com.Lethe.ui.*;
public dynamic class btn_map1 extends LetheButton {
}
}//package
Section 206
//btn_nextCar (btn_nextCar)
package {
import com.Lethe.ui.*;
public dynamic class btn_nextCar extends LetheButton {
}
}//package
Section 207
//btn_normal (btn_normal)
package {
import com.Lethe.ui.*;
public dynamic class btn_normal extends LetheButton {
}
}//package
Section 208
//btn_ok (btn_ok)
package {
import com.Lethe.ui.*;
public dynamic class btn_ok extends LetheButton {
}
}//package
Section 209
//btn_submit (btn_submit)
package {
import com.Lethe.ui.*;
public dynamic class btn_submit extends LetheButton {
}
}//package
Section 210
//car_down (car_down)
package {
import flash.media.*;
public dynamic class car_down extends Sound {
}
}//package
Section 211
//car_over (car_over)
package {
import flash.media.*;
public dynamic class car_over extends Sound {
}
}//package
Section 212
//Car1 (Car1)
package {
import com.Lethe.core.*;
public dynamic class Car1 extends Car {
}
}//package
Section 213
//Car2 (Car2)
package {
import com.Lethe.core.*;
public dynamic class Car2 extends Car {
}
}//package
Section 214
//Car3 (Car3)
package {
import com.Lethe.core.*;
public dynamic class Car3 extends Car {
}
}//package
Section 215
//Car4 (Car4)
package {
import com.Lethe.core.*;
public dynamic class Car4 extends Car {
}
}//package
Section 216
//Car5 (Car5)
package {
import com.Lethe.core.*;
public dynamic class Car5 extends Car {
}
}//package
Section 217
//Car6 (Car6)
package {
import com.Lethe.core.*;
public dynamic class Car6 extends Car {
}
}//package
Section 218
//Car7 (Car7)
package {
import com.Lethe.core.*;
public dynamic class Car7 extends Car {
}
}//package
Section 219
//Click_to_continue (Click_to_continue)
package {
import zlong.localization.display.*;
public dynamic class Click_to_continue extends TranText {
}
}//package
Section 220
//COM_LoadingBar (COM_LoadingBar)
package {
import flash.display.*;
public dynamic class COM_LoadingBar extends MovieClip {
}
}//package
Section 221
//COM_LoadingProgress (COM_LoadingProgress)
package {
import flash.display.*;
public dynamic class COM_LoadingProgress extends MovieClip {
}
}//package
Section 222
//Congratulations (Congratulations)
package {
import zlong.localization.display.*;
public dynamic class Congratulations extends TranText {
}
}//package
Section 223
//CONTINUE (CONTINUE)
package {
import zlong.localization.display.*;
public dynamic class CONTINUE extends TranText {
}
}//package
Section 224
//CONTROLS (CONTROLS)
package {
import zlong.localization.display.*;
public dynamic class CONTROLS extends TranText {
}
}//package
Section 225
//CountriesBox (CountriesBox)
package {
import zlong.localization.display.*;
public dynamic class CountriesBox extends CountriesBox {
}
}//package
Section 226
//countryMc (countryMc)
package {
import zlong.localization.display.*;
public dynamic class countryMc extends TranText {
}
}//package
Section 227
//Direction_mistake (Direction_mistake)
package {
import zlong.localization.display.*;
public dynamic class Direction_mistake extends TranText {
}
}//package
Section 228
//Do_you_wanna_to_start_training? (Do_you_wanna_to_start_training?)
package {
import zlong.localization.display.*;
public dynamic class Do_you_wanna_to_start_training? extends TranText {
}
}//package
Section 229
//drift (drift)
package {
import zlong.localization.display.*;
public dynamic class drift extends TranText {
}
}//package
Section 230
//EASY (EASY)
package {
import zlong.localization.display.*;
public dynamic class EASY extends TranText {
}
}//package
Section 231
//Finish_Easy_Mode_TO_Open (Finish_Easy_Mode_TO_Open)
package {
import zlong.localization.display.*;
public dynamic class Finish_Easy_Mode_TO_Open extends TranText {
}
}//package
Section 232
//Finish_Normal_Mode_TO_Open (Finish_Normal_Mode_TO_Open)
package {
import zlong.localization.display.*;
public dynamic class Finish_Normal_Mode_TO_Open extends TranText {
}
}//package
Section 233
//gamestart (gamestart)
package {
import flash.media.*;
public dynamic class gamestart extends Sound {
}
}//package
Section 234
//GreedCarIcon (GreedCarIcon)
package {
import flash.display.*;
public dynamic class GreedCarIcon extends MovieClip {
}
}//package
Section 235
//GRIP (GRIP)
package {
import zlong.localization.display.*;
public dynamic class GRIP extends TranText {
}
}//package
Section 236
//HARD (HARD)
package {
import zlong.localization.display.*;
public dynamic class HARD extends TranText {
}
}//package
Section 237
//HIGH_SCORES (HIGH_SCORES)
package {
import zlong.localization.display.*;
public dynamic class HIGH_SCORES extends TranText {
}
}//package
Section 238
//HOW_TO_PLAY (HOW_TO_PLAY)
package {
import zlong.localization.display.*;
public dynamic class HOW_TO_PLAY extends TranText {
}
}//package
Section 239
//HURRY_UP (HURRY_UP)
package {
import zlong.localization.display.*;
public dynamic class HURRY_UP extends TranText {
}
}//package
Section 240
//initi (initi)
package {
import zlong.localization.display.*;
public dynamic class initi extends TranText {
}
}//package
Section 241
//INPUT_NAME (INPUT_NAME)
package {
import zlong.localization.display.*;
public dynamic class INPUT_NAME extends TranText {
}
}//package
Section 242
//lapss (lapss)
package {
import zlong.localization.display.*;
public dynamic class lapss extends TranText {
}
}//package
Section 243
//LAST_LAP (LAST_LAP)
package {
import zlong.localization.display.*;
public dynamic class LAST_LAP extends TranText {
}
}//package
Section 244
//Lethe_Alert_Page (Lethe_Alert_Page)
package {
import flash.display.*;
public dynamic class Lethe_Alert_Page extends MovieClip {
}
}//package
Section 245
//Lethe_All_Logo (Lethe_All_Logo)
package {
import flash.display.*;
public dynamic class Lethe_All_Logo extends MovieClip {
}
}//package
Section 246
//Lethe_BackGround (Lethe_BackGround)
package {
import flash.display.*;
public dynamic class Lethe_BackGround extends MovieClip {
}
}//package
Section 247
//Lethe_Button_Back (Lethe_Button_Back)
package {
import flash.display.*;
public dynamic class Lethe_Button_Back extends MovieClip {
}
}//package
Section 248
//Lethe_Button_Down (Lethe_Button_Down)
package {
import flash.display.*;
public dynamic class Lethe_Button_Down extends MovieClip {
public var _txt:MovieClip;
}
}//package
Section 249
//Lethe_Button_Down2 (Lethe_Button_Down2)
package {
import flash.display.*;
public dynamic class Lethe_Button_Down2 extends MovieClip {
public var _txt:MovieClip;
}
}//package
Section 250
//Lethe_Button_Down3 (Lethe_Button_Down3)
package {
import flash.display.*;
public dynamic class Lethe_Button_Down3 extends MovieClip {
public var _txt:MovieClip;
}
}//package
Section 251
//Lethe_Button_Up (Lethe_Button_Up)
package {
import flash.display.*;
public dynamic class Lethe_Button_Up extends MovieClip {
public var _txt:MovieClip;
}
}//package
Section 252
//Lethe_Button_Up2 (Lethe_Button_Up2)
package {
import flash.display.*;
public dynamic class Lethe_Button_Up2 extends MovieClip {
public var _txt:MovieClip;
}
}//package
Section 253
//Lethe_Button_Up3 (Lethe_Button_Up3)
package {
import flash.display.*;
public dynamic class Lethe_Button_Up3 extends MovieClip {
public var _txt:MovieClip;
}
}//package
Section 254
//Lethe_Continue_Button (Lethe_Continue_Button)
package {
import flash.display.*;
public dynamic class Lethe_Continue_Button extends MovieClip {
public function Lethe_Continue_Button(){
addFrameScript(0, frame1);
}
function frame1(){
}
}
}//package
Section 255
//Lethe_Drag_Block (Lethe_Drag_Block)
package {
import flash.display.*;
public dynamic class Lethe_Drag_Block extends MovieClip {
}
}//package
Section 256
//Lethe_DragArea (Lethe_DragArea)
package {
import flash.display.*;
public dynamic class Lethe_DragArea extends MovieClip {
}
}//package
Section 257
//Lethe_FocusLine (Lethe_FocusLine)
package {
import flash.display.*;
public dynamic class Lethe_FocusLine extends MovieClip {
}
}//package
Section 258
//Lethe_LineBack (Lethe_LineBack)
package {
import flash.display.*;
public dynamic class Lethe_LineBack extends MovieClip {
}
}//package
Section 259
//Lethe_LineBack2 (Lethe_LineBack2)
package {
import flash.display.*;
public dynamic class Lethe_LineBack2 extends MovieClip {
}
}//package
Section 260
//Lethe_Link_Button (Lethe_Link_Button)
package {
import flash.display.*;
public dynamic class Lethe_Link_Button extends MovieClip {
public function Lethe_Link_Button(){
addFrameScript(0, frame1);
}
function frame1(){
}
}
}//package
Section 261
//Lethe_Loading_Text (Lethe_Loading_Text)
package {
import flash.display.*;
public dynamic class Lethe_Loading_Text extends MovieClip {
}
}//package
Section 262
//Lethe_PreviewMc (Lethe_PreviewMc)
package {
import flash.display.*;
public dynamic class Lethe_PreviewMc extends MovieClip {
}
}//package
Section 263
//Lethe_Scroll_Bar (Lethe_Scroll_Bar)
package {
import flash.display.*;
public dynamic class Lethe_Scroll_Bar extends MovieClip {
}
}//package
Section 264
//Lethe_Scroll_Down (Lethe_Scroll_Down)
package {
import flash.display.*;
public dynamic class Lethe_Scroll_Down extends MovieClip {
}
}//package
Section 265
//Lethe_Scroll_Up (Lethe_Scroll_Up)
package {
import flash.display.*;
public dynamic class Lethe_Scroll_Up extends MovieClip {
}
}//package
Section 266
//Lethe_Text1 (Lethe_Text1)
package {
import flash.display.*;
public dynamic class Lethe_Text1 extends MovieClip {
}
}//package
Section 267
//Lethe_Text2 (Lethe_Text2)
package {
import flash.display.*;
public dynamic class Lethe_Text2 extends MovieClip {
}
}//package
Section 268
//Lethe_Text3 (Lethe_Text3)
package {
import flash.display.*;
public dynamic class Lethe_Text3 extends MovieClip {
}
}//package
Section 269
//LEVEL (LEVEL)
package {
import zlong.localization.display.*;
public dynamic class LEVEL extends TranText {
}
}//package
Section 270
//light (light)
package {
import flash.media.*;
public dynamic class light extends Sound {
}
}//package
Section 271
//lighteffect (lighteffect)
package {
import com.Lethe.ui.*;
public dynamic class lighteffect extends LetheButton {
}
}//package
Section 272
//Loading文字 (Loadingæ–‡å—)
package {
import zlong.localization.display.*;
public dynamic class Loading文字 extends TranText {
}
}//package
Section 273
//map_down (map_down)
package {
import flash.media.*;
public dynamic class map_down extends Sound {
}
}//package
Section 274
//map_lock (map_lock)
package {
import flash.media.*;
public dynamic class map_lock extends Sound {
}
}//package
Section 275
//map_over (map_over)
package {
import flash.media.*;
public dynamic class map_over extends Sound {
}
}//package
Section 276
//mc_music (mc_music)
package {
import com.Lethe.ui.*;
public dynamic class mc_music extends LetheButton {
}
}//package
Section 277
//mc_quality (mc_quality)
package {
import com.Lethe.ui.*;
public dynamic class mc_quality extends LetheButton {
}
}//package
Section 278
//mc_sound (mc_sound)
package {
import com.Lethe.ui.*;
public dynamic class mc_sound extends LetheButton {
}
}//package
Section 279
//MOER_FREE_ONLINE_GAMES_AT (MOER_FREE_ONLINE_GAMES_AT)
package {
import zlong.localization.display.*;
public dynamic class MOER_FREE_ONLINE_GAMES_AT extends TranText {
}
}//package
Section 280
//MORE_GAMES (MORE_GAMES)
package {
import zlong.localization.display.*;
public dynamic class MORE_GAMES extends TranText {
}
}//package
Section 281
//move (move)
package {
import zlong.localization.display.*;
public dynamic class move extends TranText {
}
}//package
Section 282
//MovieTimer (MovieTimer)
package {
import flash.display.*;
public dynamic class MovieTimer extends MovieClip {
}
}//package
Section 283
//MUSIC:OFF (MUSIC:OFF)
package {
import zlong.localization.display.*;
public dynamic class MUSIC:OFF extends TranText {
}
}//package
Section 284
//MUSIC:ON (MUSIC:ON)
package {
import zlong.localization.display.*;
public dynamic class MUSIC:ON extends TranText {
}
}//package
Section 285
//music0 (music0)
package {
import flash.media.*;
public dynamic class music0 extends Sound {
}
}//package
Section 286
//music16 (music16)
package {
import flash.media.*;
public dynamic class music16 extends Sound {
}
}//package
Section 287
//music25 (music25)
package {
import flash.media.*;
public dynamic class music25 extends Sound {
}
}//package
Section 288
//music3 (music3)
package {
import flash.media.*;
public dynamic class music3 extends Sound {
}
}//package
Section 289
//music4 (music4)
package {
import flash.media.*;
public dynamic class music4 extends Sound {
}
}//package
Section 290
//musicf (musicf)
package {
import flash.media.*;
public dynamic class musicf extends Sound {
}
}//package
Section 291
//musicw (musicw)
package {
import flash.media.*;
public dynamic class musicw extends Sound {
}
}//package
Section 292
//mylogo (mylogo)
package {
import zlong.localization.display.*;
public dynamic class mylogo extends Logo {
}
}//package
Section 293
//NAME (NAME)
package {
import zlong.localization.display.*;
public dynamic class NAME extends TranText {
}
}//package
Section 294
//NEXT (NEXT)
package {
import com.Lethe.ui.*;
public dynamic class NEXT extends LetheButton {
}
}//package
Section 295
//NORMAL (NORMAL)
package {
import zlong.localization.display.*;
public dynamic class NORMAL extends TranText {
}
}//package
Section 296
//Note:Get_most_score_to_win_the_level:) (Note:Get_most_score_to_win_the_level:))
package {
import zlong.localization.display.*;
public dynamic class Note:Get_most_score_to_win_the_level:) extends TranText {
}
}//package
Section 297
//O11111111 (O11111111)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import O11111110.*;
import flash.text.*;
import flash.utils.*;
import flash.system.*;
public class O11111111 extends MovieClip {
private const O11111OO1:Array;
private var O11111OO0:Number;
private var O11111OOO:MovieClip;
private var O11111OOl;
private var O11111O01:Boolean;// = false
private var O11111O00;
private var O11111O0O:Loader;
private var O11111O0l;
private var O111111l1:String;
private var O111111lO:int;
private var O111111ll:Number;
private var O11111l11;
private var oddLineColor:Number;
private var O111111O0:String;
private var O111111O1:String;
private var O11111l1O;
private var O11111Ol0:MovieClip;
private var O11111Ol1:Array;
private var O111111OO:String;
private var O111111Ol:String;
private var O11111OlO:String;
private var O1111100O1:int;
private var O11111Oll:Boolean;
private var evenLineColor:Number;
private var noticeLineColor:Number;
private var selfLineColor:Number;
public function O11111111():void{
var O11111l1l:int;
var O11111l10:*;
O11111O01 = false;
O11111OO1 = ["Failed to get highscores.", "Failed to get highscores.", "Failed to get highscores.", "Failed to get highscores.", "Ophalen van de highscores mislukt", "Classement échoué.", "Highscores konnten nicht geladen werden.", "Error al cargar las puntuaciones máximas.", "Os recordes não foram recebidos.", "Não conseguiu obter uma das melhores pontuações", "Impossibile recuperare dati sui record.", "Kunde ej hämta toppoäng.", "Pobieranie rankingu nie powiodło się.", "Ошибка! Получить данные о рекордах не удалось!", "Yüksek skorlar alınamadı.", "Gagal untuk mendapatkan skor tertinggi", "Gagal mendapatkan skor tertinggi.", "ハイスコア情報の取得に失敗しました", "获取排行榜失败"];
super();
Security.allowDomain("*");
O11111OOl = this.parent;
O11111OOl.stop();
O11111l1l = 0;
while (true) {
try {
O11111l10 = O11111OOl.getChildAt(O11111l1l);
if ((O11111l10 is MovieClip)){
O11111l10.visible = false;
} else {
O11111OOl.removeChild(O11111l10);
};
O11111l1l = (O11111l1l + 1);
} catch(O11111llO:Error) {
break;
};
};
try {
O11111OOl["O111111O"] = O111110lO;
} catch(O11111llO:Error) {
};
}
private function O1111100O(_arg1:MouseEvent):void{
_arg1.currentTarget.gotoAndStop(1);
}
private function O1111O1l1(_arg1):void{
removeEventListener(Event.ENTER_FRAME, O111110ll);
O11111l11.visible = true;
O11111O00.text = O11111OO1[(O1111111l.O11111OlO().O11111O0O() - 1)];
}
private function O1111100l(_arg1:MouseEvent):void{
_arg1.currentTarget.gotoAndStop(3);
}
private function O1111O1lO(_arg1:Event):void{
O11111OOl.dispatchEvent(_arg1);
}
public function O11111O11():void{
if (O11111l1O != null){
O11111l1O.O11111l0O();
};
}
public function get O11111O10():Boolean{
return (O11111O01);
}
private function O1111O1O0(_arg1:String){
return (getDefinitionByName(_arg1));
}
public function O11111O1O():void{
if (O11111l1O != null){
O11111l1O.O11111l1l();
};
}
public function O11111O1l(_arg1:int, _arg2:String):void{
if (O11111l1O != null){
O11111l1O.O11111l10(_arg1, _arg2);
};
}
private function O1111O1OO(_arg1:MouseEvent):void{
this.O1111O1lO(new Event("00000100110"));
}
private function O1111O1O1():void{
var O111110O1:*;
var O111110OO:*;
var O111110Ol:*;
var O111110O0:*;
var O11111l1l:int;
var O11111l01:int;
var O1111101l:*;
var O11111l10:*;
var O111110l1:*;
O111110O1 = getDefinitionByName("Lethe_Button_Back");
O111110OO = getDefinitionByName("Lethe_Loading_Text");
O111110Ol = getDefinitionByName("COM_LoadingProgress");
O111110O0 = getDefinitionByName("Lethe_Text3");
O11111l1l = 0;
O11111l01 = 0;
while (true) {
try {
O11111l10 = O11111OOO.getChildAt(O11111l1l);
if ((O11111l10 is O111110O1)){
O11111l11 = O11111l10;
O11111001(O11111l11);
O11111l01 = 0;
while (true) {
try {
O1111101l = O11111l11.getChildAt(O11111l01);
if ((O1111101l is O111110O0)){
O1111101l.gotoAndStop(O1111111l.O11111OlO().O11111O0O());
break;
};
O11111l01 = (O11111l01 + 1);
} catch(O11111llO:Error) {
break;
};
};
O11111l11.visible = false;
try {
O11111l10.removeEventListener(MouseEvent.CLICK, O1111O1OO);
} catch(e:Error) {
};
O11111l10.addEventListener(MouseEvent.CLICK, O1111O1OO, false, 0, true);
} else {
if ((O11111l10 is O111110OO)){
O11111l01 = 0;
while (true) {
try {
O111110l1 = O11111l10.getChildAt(O11111l01);
if ((O111110l1 is TextField)){
O11111O00 = O111110l1;
break;
};
O11111l01 = (O11111l01 + 1);
} catch(O11111llO:Error) {
break;
};
};
} else {
if ((O11111l10 is O111110Ol)){
O11111O0l = O11111l10;
O11111O0l.stop();
};
};
};
O11111l1l = (O11111l1l + 1);
} catch(O11111llO:Error) {
break;
};
};
}
private function O1111O1Ol(_arg1:Event):void{
this.dispatchEvent(new Event(Event.COMPLETE));
O11111l1O = _arg1.currentTarget.content;
O11111l1O.addEventListener("000111000100", O1111O1lO);
O11111l1O.addEventListener("00111111000", O1111O1lO);
O11111l1O.addEventListener("000000000000", O1111O1lO);
O11111l1O.addEventListener("010101010100", O1111O1lO);
O11111l1O.addEventListener("000001111111", O1111O1lO);
O11111l1O.O11111l1O(O11111OO0, O111111lO, O111111ll, O111111Ol, O11111O10, O1111111l.O11111OlO().O11111OOO, O111111O1, evenLineColor, oddLineColor, noticeLineColor, selfLineColor);
O11111l1O.O11111l11(O1111O1O0("Lethe_BackGround"), O1111O1O0("Lethe_Button_Down"), O1111O1O0("Lethe_Button_Down2"), O1111O1O0("Lethe_Button_Down3"), O1111O1O0("Lethe_Button_Up"), O1111O1O0("Lethe_Button_Up2"), O1111O1O0("Lethe_Button_Up3"), O1111O1O0("Lethe_FocusLine"), O1111O1O0("Lethe_LineBack"), O1111O1O0("Lethe_LineBack2"), O1111O1O0("Lethe_Scroll_Bar"), O1111O1O0("Lethe_Drag_Block"), O1111O1O0("Lethe_Scroll_Up"), O1111O1O0("Lethe_Scroll_Down"), O1111O1O0("Lethe_DragArea"));
O11111O1O();
}
public function set O11111O10(_arg1:Boolean):void{
var _local2:LocalConnection;
var _local3:String;
var _local4:Array;
var _local5:int;
var _local6:int;
var _local7:O1111111O;
O11111O01 = _arg1;
O11111Ol1 = ["www8.agame.com", "www.zlonggames.com", "gamedev.dev.spillgroup.com", "gamedev.dev.spilgames.com", "www.zlonggamestest.com"];
_local2 = new LocalConnection();
if (_local2.domain != "localhost"){
_local4 = _local2.domain.split(".");
_local5 = (_local4.length - 1);
_local6 = (_local4.length - 2);
O11111OlO = ((_local4[_local6] + ".") + _local4[_local5]);
} else {
O11111OlO = "localhost";
};
O1111111l.O11111OlO().O11111Oll(O11111OlO, O111111Ol, O111111O0, O1111100O1);
if (((isNaN(O11111OO0)) || (isNaN(O111111lO)))){
O111110l0();
return;
};
for each (_local3 in O11111Ol1) {
if (_local2.domain == _local3){
_local7 = new O1111111O();
if (_local7.O11111OO1()){
O11111Oll = true;
O1111O110();
return;
};
O111110l0();
return;
};
};
O111110l0();
}
private function O1111O110():void{
var _local1:*;
stop();
O11111O0O = new Loader();
O11111O0O.load(new URLRequest(O111111l1));
O11111OOl.addChildAt(O11111O0O, 0);
this.addEventListener(Event.ENTER_FRAME, O111110ll);
O11111O0O.contentLoaderInfo.addEventListener(Event.COMPLETE, O1111O1Ol);
O11111O0O.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, O1111O1l1);
O11111O0O.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, O1111O1l1);
_local1 = getDefinitionByName("COM_LoadingBar");
if (_local1 != null){
O11111OOO = new (_local1);
O11111OOl.addChild(O11111OOO);
O1111O1O1();
};
}
private function O1111O111():void{
var O11111l1l:int;
var O11111l01:int;
var O11111l0O:*;
var O11111l0l:*;
var O11111l00:*;
var O11111011:*;
var O1111101O:*;
var O1111101l:*;
var O11111l10:*;
O11111l1l = 0;
O11111l01 = 0;
O11111l0O = getDefinitionByName("Lethe_Continue_Button");
O11111l0l = getDefinitionByName("Lethe_Link_Button");
O11111l00 = getDefinitionByName("Lethe_Text1");
O11111011 = getDefinitionByName("Lethe_Text2");
O1111101O = getDefinitionByName("Lethe_All_Logo");
while (true) {
try {
O11111l10 = O11111Ol0.getChildAt(O11111l1l);
if ((O11111l10 is O11111l0O)){
O11111001(O11111l10);
try {
O11111l10.removeEventListener(MouseEvent.CLICK, O1111O11l);
} catch(e:Error) {
};
O11111l10.addEventListener(MouseEvent.CLICK, O1111O11l, false, 0, true);
O11111l01 = 0;
while (true) {
try {
O1111101l = O11111l10.getChildAt(O11111l01);
if ((((O1111101l is O11111l00)) || ((O1111101l is O11111011)))){
O1111101l.gotoAndStop(O1111111l.O11111OlO().O11111O0O());
};
O11111l01 = (O11111l01 + 1);
} catch(O11111llO:Error) {
break;
};
};
} else {
if ((O11111l10 is O11111l0l)){
try {
O11111l10.removeEventListener(MouseEvent.CLICK, O1111O11O);
} catch(e:Error) {
};
O11111l10.addEventListener(MouseEvent.CLICK, O1111O11O, false, 0, true);
O11111001(O11111l10);
O11111l01 = 0;
while (true) {
try {
O1111101l = O11111l10.getChildAt(O11111l01);
if ((((O1111101l is O11111l00)) || ((O1111101l is O11111011)))){
O1111101l.gotoAndStop(O1111111l.O11111OlO().O11111O0O());
} else {
if ((O1111101l is O1111101O)){
O1111101l.gotoAndStop(O1111111l.O11111OlO().O11111O01());
};
};
O11111l01 = (O11111l01 + 1);
} catch(O11111llO:Error) {
break;
};
};
};
};
O11111l1l = (O11111l1l + 1);
} catch(O11111llO:Error) {
break;
};
};
}
public function O111111l0():Boolean{
return (O11111Oll);
}
private function O1111O11l(_arg1:MouseEvent):void{
this.O1111O1lO(new Event("000111000100"));
}
private function O1111O11O(_arg1:MouseEvent):void{
O1111111l.O11111OlO().O11111O0l();
this.O1111O1lO(new Event("00111111000"));
}
private function O111110l0():void{
var O11111ll0:*;
if (O11111OOO != null){
O11111OOl.removeChild(O11111OOO);
O11111OOO = null;
};
if (O11111Ol0 == null){
try {
O11111ll0 = getDefinitionByName("Lethe_Alert_Page");
O11111Ol0 = new (O11111ll0);
O11111OOl.addChild(O11111Ol0);
O1111O111();
} catch(O11111llO:Error) {
};
};
}
private function O111110lO(_arg1=null, _arg2:String="default", _arg3="", _arg4:int=0, _arg5:String="normal", _arg6:int=1, _arg7:Number=0x515151, _arg8:Number=0x515151, _arg9:Number=0x515151, _arg10:Number=0x515151, _arg11:int=0):void{
O11111OOl["O11111O10"] = O11111O1l;
O11111OOl["O11111O11"] = O11111O1O;
O11111OOl["O11111100"] = O111111l0;
O11111OOl["O11111101"] = O11111101;
O11111OOl["O1100000l"] = O10000101;
O11111OOl["O1111110l"] = O1111110l;
O11111OOl["O111111001"] = O11111100;
O11111OOl["O111111010"] = O11111O11;
O1111111l.O11111OlO().O11111Ol0("en_us");
evenLineColor = _arg7;
oddLineColor = _arg8;
selfLineColor = _arg10;
noticeLineColor = _arg9;
O1111100O1 = _arg6;
O111111O1 = _arg5;
O111111Ol = _arg2;
if (_arg3 == ""){
O111111O0 = O111111Ol;
} else {
O111111O0 = _arg3;
};
O111111ll = _arg4;
if (((!((_arg1 == null))) && (!((_arg1.loaderInfo == null))))){
if (_arg11 == 0){
O11111OO0 = Number(_arg1.loaderInfo.parameters["id"]);
O111111lO = Number(_arg1.loaderInfo.parameters["s"]);
} else {
O11111OO0 = Number(_arg1.loaderInfo.parameters[("id" + _arg11)]);
O111111lO = Number(_arg1.loaderInfo.parameters[("s" + _arg11)]);
};
O111111l1 = "http://www8.agame.com/games/flash/highscore/Submiter.swf?v=115";
O11111O10 = true;
};
}
private function O111110ll(_arg1:Event):void{
var _local2:int;
_local2 = (((O11111O0O.contentLoaderInfo.bytesLoaded / O11111O0O.contentLoaderInfo.bytesTotal) * 100) >> 0);
if (_local2 == 0){
O11111O0l.gotoAndStop(1);
} else {
O11111O0l.gotoAndStop(_local2);
};
O11111O00.text = (String(_local2) + "%");
if (_local2 >= 100){
O11111l11 = null;
O11111O0l = null;
O11111O00 = null;
removeEventListener(Event.ENTER_FRAME, O111110ll);
O11111OOl.removeChild(O11111OOO);
O11111OOO = null;
};
}
public function O11111100():void{
if (O11111l1O != null){
O11111l1O.O11111l0l();
};
}
public function O11111101():Boolean{
return (!((O11111l1O == null)));
}
public function O1111110O(_arg1:Number, _arg2:Number):void{
if (O11111O0O){
O11111O0O.scaleX = (_arg1 / 460);
O11111O0O.scaleY = (_arg2 / 300);
};
}
public function O1111110l():void{
if (O11111l1O != null){
O11111l1O.O11111l00();
};
}
private function O11111000(_arg1:MouseEvent):void{
_arg1.currentTarget.gotoAndStop(2);
}
private function O11111001(_arg1):void{
var _btn = _arg1;
_btn.stop();
_btn.mouseChildren = false;
_btn.buttonMode = true;
try {
_btn.removeEventListener(MouseEvent.MOUSE_OVER, O11111000);
_btn.removeEventListener(MouseEvent.MOUSE_DOWN, O1111100l);
_btn.removeEventListener(MouseEvent.MOUSE_OUT, O1111100O);
_btn.removeEventListener(MouseEvent.MOUSE_UP, O1111100O);
} catch(e:Error) {
};
_btn.addEventListener(MouseEvent.MOUSE_OVER, O11111000, false, 0, true);
_btn.addEventListener(MouseEvent.MOUSE_DOWN, O1111100l, false, 0, true);
_btn.addEventListener(MouseEvent.MOUSE_OUT, O1111100O, false, 0, true);
_btn.addEventListener(MouseEvent.MOUSE_UP, O1111100O, false, 0, true);
}
public function O10000101(_arg1:String):void{
var _langType = _arg1;
O1111111l.O11111OlO().O11111Ol0(_langType);
try {
O1111O111();
} catch(e:Error) {
};
try {
O1111O1O1();
} catch(e:Error) {
};
try {
O11111O00.text = O11111OO1[(O1111111l.O11111OlO().O11111O0O() - 1)];
} catch(e:Error) {
};
try {
O11111l1O.O0100010((O1111111l.O11111OlO().getOldOrder() + 1));
} catch(e:Error) {
};
}
}
}//package
Section 298
//O11111OO11 (O11111OO11)
package {
import flash.display.*;
public dynamic class O11111OO11 extends MovieClip {
}
}//package
Section 299
//OK (OK)
package {
import zlong.localization.display.*;
public dynamic class OK extends TranText {
}
}//package
Section 300
//pause (pause)
package {
import zlong.localization.display.*;
public dynamic class pause extends TranText {
}
}//package
Section 301
//PAUSED (PAUSED)
package {
import zlong.localization.display.*;
public dynamic class PAUSED extends TranText {
}
}//package
Section 302
//POINT (POINT)
package {
import zlong.localization.display.*;
public dynamic class POINT extends TranText {
}
}//package
Section 303
//point_分数 (point_分数)
package {
import zlong.localization.display.*;
public dynamic class point_分数 extends TranText {
}
}//package
Section 304
//praccc (praccc)
package {
import com.Lethe.ui.*;
public dynamic class praccc extends LetheButton {
}
}//package
Section 305
//PRACTICE (PRACTICE)
package {
import zlong.localization.display.*;
public dynamic class PRACTICE extends TranText {
}
}//package
Section 306
//practice2 (practice2)
package {
import zlong.localization.display.*;
public dynamic class practice2 extends TranText {
}
}//package
Section 307
//PreLoad (PreLoad)
package {
import flash.display.*;
public class PreLoad extends MovieClip {
public function PreLoad(){
stop();
}
}
}//package
Section 308
//QUALITY:HIGH (QUALITY:HIGH)
package {
import zlong.localization.display.*;
public dynamic class QUALITY:HIGH extends TranText {
}
}//package
Section 309
//QUALITYLOW (QUALITYLOW)
package {
import zlong.localization.display.*;
public dynamic class QUALITYLOW extends TranText {
}
}//package
Section 310
//QUALITYMEDIUM (QUALITYMEDIUM)
package {
import zlong.localization.display.*;
public dynamic class QUALITYMEDIUM extends TranText {
}
}//package
Section 311
//RACE (RACE)
package {
import zlong.localization.display.*;
public dynamic class RACE extends TranText {
}
}//package
Section 312
//Race_Complete (Race_Complete)
package {
import zlong.localization.display.*;
public dynamic class Race_Complete extends TranText {
}
}//package
Section 313
//RACE_MODE (RACE_MODE)
package {
import zlong.localization.display.*;
public dynamic class RACE_MODE extends TranText {
}
}//package
Section 314
//RACE_SCORE (RACE_SCORE)
package {
import zlong.localization.display.*;
public dynamic class RACE_SCORE extends TranText {
}
}//package
Section 315
//RANK__ (RANK__)
package {
import zlong.localization.display.*;
public dynamic class RANK__ extends TranText {
}
}//package
Section 316
//reset (reset)
package {
import zlong.localization.display.*;
public dynamic class reset extends TranText {
}
}//package
Section 317
//revver (revver)
package {
import flash.media.*;
public dynamic class revver extends Sound {
}
}//package
Section 318
//SCORE (SCORE)
package {
import zlong.localization.display.*;
public dynamic class SCORE extends TranText {
}
}//package
Section 319
//sd_close (sd_close)
package {
import flash.media.*;
public dynamic class sd_close extends Sound {
}
}//package
Section 320
//sd_down (sd_down)
package {
import flash.media.*;
public dynamic class sd_down extends Sound {
}
}//package
Section 321
//sd_hit (sd_hit)
package {
import flash.media.*;
public dynamic class sd_hit extends Sound {
}
}//package
Section 322
//sd_moto (sd_moto)
package {
import flash.media.*;
public dynamic class sd_moto extends Sound {
}
}//package
Section 323
//sd_move (sd_move)
package {
import flash.media.*;
public dynamic class sd_move extends Sound {
}
}//package
Section 324
//sd_open (sd_open)
package {
import flash.media.*;
public dynamic class sd_open extends Sound {
}
}//package
Section 325
//sd_over (sd_over)
package {
import flash.media.*;
public dynamic class sd_over extends Sound {
}
}//package
Section 326
//sd_ready (sd_ready)
package {
import flash.media.*;
public dynamic class sd_ready extends Sound {
}
}//package
Section 327
//sd_release (sd_release)
package {
import flash.media.*;
public dynamic class sd_release extends Sound {
}
}//package
Section 328
//sd_roll (sd_roll)
package {
import flash.media.*;
public dynamic class sd_roll extends Sound {
}
}//package
Section 329
//sd_skate (sd_skate)
package {
import flash.media.*;
public dynamic class sd_skate extends Sound {
}
}//package
Section 330
//sd_startgame (sd_startgame)
package {
import flash.media.*;
public dynamic class sd_startgame extends Sound {
}
}//package
Section 331
//Shadow1 (Shadow1)
package {
import flash.display.*;
public dynamic class Shadow1 extends MovieClip {
}
}//package
Section 332
//SOUND:OFF (SOUND:OFF)
package {
import zlong.localization.display.*;
public dynamic class SOUND:OFF extends TranText {
}
}//package
Section 333
//SOUND:ON (SOUND:ON)
package {
import zlong.localization.display.*;
public dynamic class SOUND:ON extends TranText {
}
}//package
Section 334
//spd1 (spd1)
package {
import flash.media.*;
public dynamic class spd1 extends Sound {
}
}//package
Section 335
//spd2 (spd2)
package {
import flash.media.*;
public dynamic class spd2 extends Sound {
}
}//package
Section 336
//spd2c (spd2c)
package {
import flash.media.*;
public dynamic class spd2c extends Sound {
}
}//package
Section 337
//spd3 (spd3)
package {
import flash.media.*;
public dynamic class spd3 extends Sound {
}
}//package
Section 338
//spilText (spilText)
package {
import com.Lethe.ui.*;
public dynamic class spilText extends LetheButton {
}
}//package
Section 339
//SUBMIT_SCORE (SUBMIT_SCORE)
package {
import zlong.localization.display.*;
public dynamic class SUBMIT_SCORE extends TranText {
}
}//package
Section 340
//The_final_lap (The_final_lap)
package {
import zlong.localization.display.*;
public dynamic class The_final_lap extends TranText {
}
}//package
Section 341
//TIME_USED (TIME_USED)
package {
import zlong.localization.display.*;
public dynamic class TIME_USED extends TranText {
}
}//package
Section 342
//TOP_SPEED (TOP_SPEED)
package {
import zlong.localization.display.*;
public dynamic class TOP_SPEED extends TranText {
}
}//package
Section 343
//TRICK_ATTACK (TRICK_ATTACK)
package {
import zlong.localization.display.*;
public dynamic class TRICK_ATTACK extends TranText {
}
}//package
Section 344
//TRICK_ATTACK_copy (TRICK_ATTACK_copy)
package {
import zlong.localization.display.*;
public dynamic class TRICK_ATTACK_copy extends TranText {
}
}//package
Section 345
//trickmap1 (trickmap1)
package {
import com.Lethe.ui.*;
public dynamic class trickmap1 extends LetheButton {
}
}//package
Section 346
//Win_world_1_ (Win_world_1_)
package {
import zlong.localization.display.*;
public dynamic class Win_world_1_ extends TranText {
}
}//package
Section 347
//Win_world_2_ (Win_world_2_)
package {
import zlong.localization.display.*;
public dynamic class Win_world_2_ extends TranText {
}
}//package
Section 348
//Win_world_3 (Win_world_3)
package {
import zlong.localization.display.*;
public dynamic class Win_world_3 extends TranText {
}
}//package
Section 349
//Win_world_4_ (Win_world_4_)
package {
import zlong.localization.display.*;
public dynamic class Win_world_4_ extends TranText {
}
}//package
Section 350
//Win_world_5_ (Win_world_5_)
package {
import zlong.localization.display.*;
public dynamic class Win_world_5_ extends TranText {
}
}//package
Section 351
//提示_解图 (æ示_解图)
package {
import zlong.localization.display.*;
public dynamic class 提示_解图 extends TranText {
}
}//package
Section 352
//提示_解车 (æ示_解车)
package {
import zlong.localization.display.*;
public dynamic class 提示_解车 extends TranText {
}
}//package
Section 353
//提示_解难度 (æ示_解难度)
package {
import zlong.localization.display.*;
public dynamic class 提示_解难度 extends TranText {
}
}//package