package { import flash.display.*; import flash.events.*; import loader.popUp.*; import tibia.game.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import shared.utility.*; import __AS3__.vec.*; import tibia.network.*; import loader.asset.*; import tibia.sessiondump.*; import tibia.sessiondump.hints.*; import flash.system.*; import loader.popUp.dialogClasses.*; import shared.cryptography.*; import flash.external.*; public class Preloader extends TibiaApplicationBase { private static const MSG_LOADING:String = "Loading, please wait ..."; private static const MSG_MISSING_JAVASCRIPT:String = ("JavaScript support is disabled. " + "Please enable JavaScript in your browser and restart the client."); private static const MSG_DOWNLOAD_ERROR:String = ("Failed to download a required file. " + "Please try again later."); private static const MSG_CLOSE_WARNING:String = ((("If you shut down the browser or close the tab, your character might stay in the game.\n" + "Click on 'Logout' in the General Controls Widget to ensure that your character leaves the game properly.\n") + "Click on 'Ok' below if you want to exit the client without logging out your character.\n") + "Click on 'Cancel' below to stay in the game."); private static const MSG_SHAREDOBJECT_WARNING:String = ("You disabled the local caching of data. " + "This means you will have to re-download the content every time you start the client."); private const LOAD_QUEUE_DELAY_BACKGROUND:uint = 10; private const CONCURRENT_LOADERS:uint = 3; private const CONCURRENT_LOADERS_BACKGROUND:uint = 1; private const LOAD_QUEUE_DELAY:uint = 10; private const NO_AREA_SET:int = -1; protected var m_ClientContainer:MovieClip = null; protected var m_BottomArea:Sprite = null; protected var m_LoadTutorial:Boolean = false; protected var m_ConnectionDataList:Vector. = null; protected var m_CurrentArea:int = -1; protected var m_CloseClientURL:String = null; protected var m_TutorialContentCache:AssetCache = null; protected var m_ContentCache:AssetCache = null; protected var m_SelectedConnectionData:int = -1; protected var m_TutorialData:Object; protected var m_Client:IGameClient = null; public function Preloader(){ this.m_TutorialData = new Object(); super(); if (popUp != null){ return; }; this.addEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage); if (!ExternalInterface.available){ popUp = new Alert(TITLE_ERROR, MSG_MISSING_JAVASCRIPT, (DialogBase.BUTTON_COPY | DialogBase.BUTTON_CLOSE)); popUp.addEventListener(CloseEvent.CLOSE, onErrorButton); return; }; this.registerJavaScriptListeners(); var AllocateSpaceHandler:* = function (_arg1:Boolean):void{ if (_arg1){ loadAssets(); } else { popUp = new Alert(TITLE_WARNING, MSG_SHAREDOBJECT_WARNING, DialogBase.BUTTON_CONTINUE); popUp.addEventListener(CloseEvent.CLOSE, onWarningSharedObjectsClose); }; }; SharedObjectManager.s_AllocateSpace(SharedObjectManager.STORAGE_UNLIMITED, AllocateSpaceHandler); } protected function loadAssets():void{ this.unloadAssets(); var _local1 = (URLHelper.s_GetPath(loaderInfo.url) + "/"); this.m_ContentCache = new AssetCache(); this.m_ContentCache.currentArea = this.m_CurrentArea; if (this.m_LoadTutorial){ this.m_ContentCache.addCatalog(new Catalog(URLHelper.s_NoCache((_local1 + "catalog-tutorial-client.xml")), this.m_ContentCache)); } else { this.m_ContentCache.addCatalog(new Catalog(URLHelper.s_NoCache((_local1 + "catalog-client.xml")), this.m_ContentCache)); }; this.m_ContentCache.addCatalog(new Catalog(URLHelper.s_NoCache((_local1 + "catalog-content.xml")), this.m_ContentCache)); this.m_ContentCache.addEventListener(ErrorEvent.ERROR, this.onLoadAssetsError); this.m_ContentCache.addEventListener(AssetProviderEvent.MANDATORY_ASSETS_LOADED, this.onLoadMandatoryAssetsComplete); this.m_ContentCache.addEventListener(IOErrorEvent.IO_ERROR, this.onLoadAssetsError); this.m_ContentCache.addEventListener(ProgressEvent.PROGRESS, this.onLoadAssetsProgress); this.m_ContentCache.load(); var _local2:LoaderProgress = (popUp as LoaderProgress); if (_local2 == null){ _local2 = new LoaderProgress(); popUp = _local2; }; _local2.label = MSG_LOADING; _local2.maxValue = 0; _local2.minValue = 0; _local2.value = 0; } private function onClientClose(_arg1:GameEvent):void{ if (_arg1 != null){ this.close(true); }; } private function registerJavaScriptListeners():void{ if (ExternalInterface.available){ ExternalInterface.addCallback("onBeforeUnload", this.onJavaScriptBeforeUnload); ExternalInterface.addCallback("onUnload", this.onJavaScriptUnload); ExternalInterface.call("FlashClientHelper.attachClient", ExternalInterface.objectID); }; } private function onLoadAssetsProgress(_arg1:ProgressEvent):void{ var _local2:LoaderProgress; if (_arg1 != null){ _local2 = (popUp as LoaderProgress); if (_local2 != null){ _local2.maxValue = _arg1.bytesTotal; _local2.minValue = 0; _local2.value = _arg1.bytesLoaded; }; Random.s_PoolPutUnsignedInt(_arg1.bytesLoaded); Random.s_PoolPutUnsignedInt(getTimer()); Random.s_PoolPutUnsignedInt(((mouseX << 16) | mouseY)); }; } override protected function uncaughtErrorHandler(_arg1:ErrorEvent):void{ super.uncaughtErrorHandler(_arg1); this.unloadAssets(); this.unloadClient(); unloadSessionRefresher(); } private function onClientError(_arg1:GameEvent):void{ var _local2:String; if (_arg1 != null){ this.unloadClient(); _local2 = _arg1.message; if ((((_local2 == null)) || ((_local2.length < 1)))){ _local2 = MSG_INTERNAL_ERROR; }; popUp = new Alert(TITLE_ERROR, _local2, (DialogBase.BUTTON_COPY | DialogBase.BUTTON_CLOSE)); popUp.addEventListener(CloseEvent.CLOSE, onErrorButton); }; } private function onLoadAssetsError(_arg1:ErrorEvent):void{ if (_arg1 != null){ this.m_ContentCache.removeEventListener(ErrorEvent.ERROR, this.onLoadAssetsError); this.m_ContentCache.removeEventListener(AssetProviderEvent.MANDATORY_ASSETS_LOADED, this.onLoadMandatoryAssetsComplete); this.m_ContentCache.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoadAssetsError); this.m_ContentCache.removeEventListener(ProgressEvent.PROGRESS, this.onLoadAssetsProgress); popUp = new Alert(TITLE_ERROR, MSG_DOWNLOAD_ERROR, (DialogBase.BUTTON_COPY | DialogBase.BUTTON_CLOSE)); popUp.addEventListener(CloseEvent.CLOSE, onErrorButton); }; } private function onLoadClientStage1(_arg1:Event):void{ var _local2:LoaderInfo; if (_arg1 != null){ _local2 = (_arg1.currentTarget as LoaderInfo); _local2.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, this.uncaughtErrorHandler); _local2.removeEventListener(Event.COMPLETE, this.onLoadClientStage1); _local2.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoadClientError); this.m_ClientContainer = (_local2.content as MovieClip); this.m_ClientContainer.visible = false; this.m_ClientContainer.addEventListener("applicationComplete", this.onLoadClientStage2); addChild(this.m_ClientContainer); }; } private function onLoadClientStage2(_arg1:Event):void{ var _local2:SessiondumpHintsAsset; var _local3:uint; var _local4:SessiondumpAsset; var _local5:SessiondumpConnectionData; if (_arg1 != null){ if (((((!((this.m_ClientContainer == null))) && (!((this.m_ClientContainer.application == null))))) && ((this.m_ClientContainer.application is IGameClient)))){ this.m_ClientContainer.removeEventListener("applicationComplete", this.onLoadClientStage2); this.m_Client = IGameClient(this.m_ClientContainer.application); this.m_Client.isActive = isActive; this.m_Client.setSessionKey(m_SessionKey); if (this.m_BottomArea != null){ this.m_BottomArea.visible = false; addChild(this.m_BottomArea); }; this.onStageResize(null); this.m_Client.addEventListener(GameEvent.CLOSE, this.onClientClose); this.m_Client.addEventListener(GameEvent.ERROR, this.onClientError); this.m_Client.addEventListener(GameEvent.READY, this.onClientReady); this.m_Client.initializeGameClient(this.m_LoadTutorial, this.m_TutorialData); if (this.m_LoadTutorial){ _local2 = this.m_ContentCache.getSessiondumpHintsAsset(); _local3 = 0; if (("sessiondump-duration" in _local2.sessiondumpHintsObject)){ _local3 = (_local2.sessiondumpHintsObject["sessiondump-duration"] as uint); }; _local4 = this.m_ContentCache.getSessiondumpAsset(); _local5 = new SessiondumpConnectionData(1, _local4.url, _local3); this.m_ConnectionDataList.push(_local5); this.m_Client.setConnectionDataList(this.m_ConnectionDataList, (this.m_ConnectionDataList.length - 1)); } else { this.m_Client.setConnectionDataList(this.m_ConnectionDataList, this.m_SelectedConnectionData); }; this.m_Client.setAssetProvider(this.m_ContentCache); }; }; } private function onAddedToStage(_arg1:Event):void{ this.removeEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage); stage.addEventListener(Event.RESIZE, this.onStageResize); this.onStageResize(null); } protected function unloadClient():void{ var _local1:Loader; if (this.m_Client != null){ this.m_Client.removeEventListener(GameEvent.CLOSE, this.onClientClose); this.m_Client.removeEventListener(GameEvent.ERROR, this.onClientError); this.m_Client.removeEventListener(GameEvent.READY, this.onClientReady); this.m_Client.unload(); this.m_Client = null; }; if (this.m_ClientContainer != null){ removeChild(this.m_ClientContainer); _local1 = this.m_ClientContainer.loaderInfo.loader; if (_local1 != null){ _local1.unloadAndStop(); }; this.m_ClientContainer = null; }; } private function onClientReady(_arg1:GameEvent):void{ if (_arg1 != null){ popUp = null; if (this.m_ClientContainer != null){ this.m_ClientContainer.visible = true; }; if (this.m_BottomArea != null){ this.m_BottomArea.visible = true; }; }; } private function onJavaScriptBeforeUnload():String{ if (((!((this.m_Client == null))) && (this.m_Client.isRunning))){ this.m_Client.saveLocalData(); this.m_Client.saveOptions(); return (MSG_CLOSE_WARNING); }; return (null); } override protected function parsePreloaderParameters():void{ const AccountData:* = null; var WorldList:* = null; var ID:* = 0; var WorldName:* = null; var Address:* = null; var Port:* = 0; var PreviewState:* = 0; var CharacterName:* = null; var WorldID:* = 0; var World:* = null; var i:* = 0; var Node:* = null; var _List:* = null; if (this.m_ConnectionDataList == null){ this.m_ConnectionDataList = new Vector.(); }; this.m_SelectedConnectionData = -1; super.parsePreloaderParameters(); const AcountDataString:* = (loaderInfo.parameters["accountData"] as String); if (((!((AcountDataString == null))) && ((AcountDataString.length > 0)))){ try { AccountData = XML(AcountDataString); } catch(e:Error) { throw (new ArgumentError("Preloader.parsePreloaderParameters: Failed to parse account data structure.")); }; if (AccountData != null){ WorldList = []; for each (Node in AccountData..world) { var _local4 = Node.@id; _List = _local4; if ((((_local4 == null)) || (!((_List.length() == 1))))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: World is missing the \"id\" attribute.")); }; ID = parseInt(_List[0]); _local4 = Node.@name; _List = _local4; if ((((_local4 == null)) || (!((_List.length() == 1))))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: World is missing the \"name\" attribute.")); }; WorldName = String(_List[0]); if ((((((WorldName == null)) || ((WorldName.length < 1)))) || ((WorldName.length > 30)))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: Invalid world name.")); }; _local4 = Node.@address; _List = _local4; if ((((_local4 == null)) || (!((_List.length() == 1))))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: World is missing the \"address\" attribute.")); }; Address = String(_List[0]); _local4 = Node.@port; _List = _local4; if ((((_local4 == null)) || (!((_List.length() == 1))))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: World is missing the \"port\" attribute.")); }; Port = parseInt(_List[0]); _local4 = Node.@previewstate; _List = _local4; if ((((_local4 == null)) || (!((_List.length() == 1))))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: World is missing the \"previewstate\" attribute.")); }; PreviewState = parseInt(_List[0]); WorldList.push({ id:ID, name:WorldName, address:Address, port:Port, previewstate:PreviewState }); }; for each (Node in AccountData..character) { _local4 = Node.@name; _List = _local4; if ((((_local4 == null)) || (!((_List.length() == 1))))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: Character is missing the \"name\" attribute.")); }; CharacterName = String(_List[0]); if ((((((CharacterName == null)) || ((CharacterName.length < 1)))) || ((CharacterName.length > 30)))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: Invalid character name.")); }; _local4 = Node.@worldid; _List = _local4; if ((((_local4 == null)) || (!((_List.length() == 1))))){ throw (new ArgumentError("Preloader.parsePreloaderParameters: Character is missing the \"worldid\" attribute.")); }; WorldID = parseInt(_List[0]); World = null; i = (WorldList.length - 1); while (i >= 0) { if (WorldList[i].id == WorldID){ World = WorldList[i]; break; }; i = (i - 1); }; if (World == null){ throw (new ArgumentError("Preloader.parsePreloaderParameters: The \"worldid\" reference is invalid.")); }; _local4 = Node.@selected; _List = _local4; if (((!((_local4 == null))) && ((_List.length() == 1)))){ this.m_SelectedConnectionData = this.m_ConnectionDataList.length; }; this.m_ConnectionDataList.push(new AccountCharacter(m_SessionKey, CharacterName, World.name, World.address, World.port, World.previewstate)); }; }; }; this.m_CloseClientURL = (loaderInfo.parameters["closeClientURL"] as String); if (loaderInfo.parameters.hasOwnProperty("area")){ this.m_CurrentArea = parseInt(loaderInfo.parameters["area"]); } else { this.m_CurrentArea = this.NO_AREA_SET; }; if (loaderInfo.parameters.hasOwnProperty("tutorial")){ this.m_LoadTutorial = (loaderInfo.parameters["tutorial"] == "true"); } else { this.m_LoadTutorial = false; }; if (loaderInfo.parameters.hasOwnProperty("tutorialData")){ this.m_TutorialData = Object(JSON.parse(loaderInfo.parameters["tutorialData"])); this.m_CurrentArea = 0; } else { this.m_TutorialData = null; }; } protected function loadClient():void{ var _local1:GameBinaryAsset = this.m_ContentCache.getGameBinary(); if ((((_local1 == null)) || ((_local1.loaded == false)))){ throw (new Error("Preloader.loadClient: Invalid state.")); }; this.unloadClient(); var _local2:ByteArray = _local1.rawBytes; this.m_ContentCache.removeAsset(_local1); var _local3:ApplicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); var _local4:LoaderContext = new LoaderContext(false, _local3, null); var _local5:Loader = new Loader(); _local5.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onLoadClientStage1); _local5.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onLoadClientError); _local5.loadBytes(_local2, _local4); var _local6:LoaderProgress = (popUp as LoaderProgress); if (_local6 == null){ _local6 = new LoaderProgress(); popUp = _local6; }; _local6.label = MSG_LOADING; _local6.maxValue = 100; _local6.minValue = 0; _local6.value = 100; } private function onLoadClientError(_arg1:Event):void{ var _local2:LoaderInfo; if (_arg1 != null){ _local2 = (_arg1.currentTarget as LoaderInfo); if (_local2 != null){ _local2.removeEventListener(Event.COMPLETE, this.onLoadClientStage1); _local2.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoadClientError); }; popUp = new Alert(TITLE_ERROR, MSG_INTERNAL_ERROR, (DialogBase.BUTTON_COPY | DialogBase.BUTTON_CLOSE)); popUp.addEventListener(CloseEvent.CLOSE, onErrorButton); }; } override protected function onActivation(_arg1:Event):void{ super.onActivation(_arg1); if (this.m_Client != null){ this.m_Client.isActive = isActive; }; } override protected function checkPreloaderParameters():Boolean{ return (((((((((super.checkPreloaderParameters()) || (false))) && (!((this.m_ConnectionDataList == null))))) && ((this.m_ConnectionDataList.length > 0)))) && ((this.m_SelectedConnectionData > -1)))); } protected function unloadAssets():void{ if (this.m_ContentCache != null){ this.m_ContentCache.removeEventListener(ErrorEvent.ERROR, this.onLoadAssetsError); this.m_ContentCache.removeEventListener(AssetProviderEvent.MANDATORY_ASSETS_LOADED, this.onLoadMandatoryAssetsComplete); this.m_ContentCache.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoadAssetsError); this.m_ContentCache.removeEventListener(ProgressEvent.PROGRESS, this.onLoadAssetsProgress); this.m_ContentCache.unload(); this.m_ContentCache = null; }; } private function onWarningSharedObjectsClose(_arg1:CloseEvent):void{ if (_arg1 != null){ this.loadAssets(); }; } private function onJavaScriptUnload():void{ this.close(false); } private function onLoadMandatoryAssetsComplete(_arg1:Event):void{ if (_arg1 != null){ this.m_ContentCache.removeEventListener(ErrorEvent.ERROR, this.onLoadAssetsError); this.m_ContentCache.removeEventListener(AssetProviderEvent.MANDATORY_ASSETS_LOADED, this.onLoadMandatoryAssetsComplete); this.m_ContentCache.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoadAssetsError); this.m_ContentCache.removeEventListener(ProgressEvent.PROGRESS, this.onLoadAssetsProgress); this.m_ContentCache.concurrentLoaders = this.CONCURRENT_LOADERS_BACKGROUND; this.m_ContentCache.loadQueueDelay = this.LOAD_QUEUE_DELAY_BACKGROUND; this.loadClient(); }; } private function onStageResize(_arg1:Event):void{ var _local2:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); if (this.m_BottomArea != null){ this.m_BottomArea.x = 0; this.m_BottomArea.y = (stage.stageHeight - this.m_BottomArea.height); _local2.height = (_local2.height - this.m_BottomArea.height); }; if (this.m_Client != null){ this.m_Client.setClientSize(_local2.width, _local2.height); }; } override protected function close(_arg1:Boolean):void{ var _local2:URLRequest; if (((!((this.m_CloseClientURL == null))) && ((this.m_CloseClientURL.length > 0)))){ _local2 = new URLRequest(this.m_CloseClientURL); navigateToURL(_local2, "_self"); } else { super.close(_arg1); }; } } }//package package mx.resources { public interface IResourceBundle { function get content():Object; function get locale():String; function get bundleName():String; } }//package mx.resources package mx.resources { import flash.events.*; import flash.system.*; public interface IResourceManager extends IEventDispatcher { function loadResourceModule(_arg1:String, _arg2:Boolean=true, _arg3:ApplicationDomain=null, _arg4:SecurityDomain=null):IEventDispatcher; function getBoolean(_arg1:String, _arg2:String, _arg3:String=null):Boolean; function getClass(_arg1:String, _arg2:String, _arg3:String=null):Class; function getLocales():Array; function removeResourceBundlesForLocale(_arg1:String):void; function getResourceBundle(_arg1:String, _arg2:String):IResourceBundle; function get localeChain():Array; function getInt(_arg1:String, _arg2:String, _arg3:String=null):int; function update():void; function set localeChain(_arg1:Array):void; function getUint(_arg1:String, _arg2:String, _arg3:String=null):uint; function addResourceBundle(_arg1:IResourceBundle):void; function getStringArray(_arg1:String, _arg2:String, _arg3:String=null):Array; function getBundleNamesForLocale(_arg1:String):Array; function removeResourceBundle(_arg1:String, _arg2:String):void; function getObject(_arg1:String, _arg2:String, _arg3:String=null); function getString(_arg1:String, _arg2:String, _arg3:Array=null, _arg4:String=null):String; function installCompiledResourceBundles(_arg1:ApplicationDomain, _arg2:Array, _arg3:Array):void; function unloadResourceModule(_arg1:String, _arg2:Boolean=true):void; function getPreferredLocaleChain():Array; function findResourceBundleWithResource(_arg1:String, _arg2:String):IResourceBundle; function initializeLocaleChain(_arg1:Array):void; function getNumber(_arg1:String, _arg2:String, _arg3:String=null):Number; } }//package mx.resources package mx.resources { import mx.core.*; public class LocaleSorter { mx_internal static const VERSION:String = "3.6.0.21751"; private static function normalizeLocale(_arg1:String):String{ return (_arg1.toLowerCase().replace(/-/g, "_")); } public static function sortLocalesByPreference(_arg1:Array, _arg2:Array, _arg3:String=null, _arg4:Boolean=false):Array{ var result:* = null; var hasLocale:* = null; var i:* = 0; var j:* = 0; var k:* = 0; var l:* = 0; var locale:* = null; var plocale:* = null; var appLocales:* = _arg1; var systemPreferences:* = _arg2; var ultimateFallbackLocale = _arg3; var addAll:Boolean = _arg4; var promote:* = function (_arg1:String):void{ if (typeof(hasLocale[_arg1]) != "undefined"){ result.push(appLocales[hasLocale[_arg1]]); delete hasLocale[_arg1]; }; }; result = []; hasLocale = {}; var locales:* = trimAndNormalize(appLocales); var preferenceLocales:* = trimAndNormalize(systemPreferences); addUltimateFallbackLocale(preferenceLocales, ultimateFallbackLocale); j = 0; while (j < locales.length) { hasLocale[locales[j]] = j; j = (j + 1); }; i = 0; l = preferenceLocales.length; while (i < l) { plocale = LocaleID.fromString(preferenceLocales[i]); promote(preferenceLocales[i]); promote(plocale.toString()); while (plocale.transformToParent()) { promote(plocale.toString()); }; plocale = LocaleID.fromString(preferenceLocales[i]); j = 0; while (j < l) { locale = preferenceLocales[j]; if (plocale.isSiblingOf(LocaleID.fromString(locale))){ promote(locale); }; j = (j + 1); }; j = 0; k = locales.length; while (j < k) { locale = locales[j]; if (plocale.isSiblingOf(LocaleID.fromString(locale))){ promote(locale); }; j = (j + 1); }; i = (i + 1); }; if (addAll){ j = 0; k = locales.length; while (j < k) { promote(locales[j]); j = (j + 1); }; }; return (result); } private static function addUltimateFallbackLocale(_arg1:Array, _arg2:String):void{ var _local3:String; if (((!((_arg2 == null))) && (!((_arg2 == ""))))){ _local3 = normalizeLocale(_arg2); if (_arg1.indexOf(_local3) == -1){ _arg1.push(_local3); }; }; } private static function trimAndNormalize(_arg1:Array):Array{ var _local2:Array = []; var _local3:int; while (_local3 < _arg1.length) { _local2.push(normalizeLocale(_arg1[_local3])); _local3++; }; return (_local2); } } }//package mx.resources class LocaleID { public static const STATE_PRIMARY_LANGUAGE:int = 0; public static const STATE_REGION:int = 3; public static const STATE_EXTENDED_LANGUAGES:int = 1; public static const STATE_EXTENSIONS:int = 5; public static const STATE_SCRIPT:int = 2; public static const STATE_VARIANTS:int = 4; public static const STATE_PRIVATES:int = 6; private var privateLangs:Boolean = false; private var script:String = ""; private var variants:Array; private var privates:Array; private var extensions:Object; private var lang:String = ""; private var region:String = ""; private var extended_langs:Array; public function LocaleID(){ extended_langs = []; variants = []; extensions = {}; privates = []; super(); } private static function appendElements(_arg1:Array, _arg2:Array):void{ var _local3:uint; var _local4:uint = _arg2.length; while (_local3 < _local4) { _arg1.push(_arg2[_local3]); _local3++; }; } public static function fromString(_arg1:String):LocaleID{ var _local5:Array; var _local8:String; var _local9:int; var _local10:String; var _local2:LocaleID = new (LocaleID)(); var _local3:int = STATE_PRIMARY_LANGUAGE; var _local4:Array = _arg1.replace(/-/g, "_").split("_"); var _local6:int; var _local7:int = _local4.length; while (_local6 < _local7) { _local8 = _local4[_local6].toLowerCase(); if (_local3 == STATE_PRIMARY_LANGUAGE){ if (_local8 == "x"){ _local2.privateLangs = true; } else { if (_local8 == "i"){ _local2.lang = (_local2.lang + "i-"); } else { _local2.lang = (_local2.lang + _local8); _local3 = STATE_EXTENDED_LANGUAGES; }; }; } else { _local9 = _local8.length; if (_local9 == 0){ } else { _local10 = _local8.charAt(0).toLowerCase(); if ((((_local3 <= STATE_EXTENDED_LANGUAGES)) && ((_local9 == 3)))){ _local2.extended_langs.push(_local8); if (_local2.extended_langs.length == 3){ _local3 = STATE_SCRIPT; }; } else { if ((((_local3 <= STATE_SCRIPT)) && ((_local9 == 4)))){ _local2.script = _local8; _local3 = STATE_REGION; } else { if ((((_local3 <= STATE_REGION)) && ((((_local9 == 2)) || ((_local9 == 3)))))){ _local2.region = _local8; _local3 = STATE_VARIANTS; } else { if ((((_local3 <= STATE_VARIANTS)) && ((((((((_local10 >= "a")) && ((_local10 <= "z")))) && ((_local9 >= 5)))) || ((((((_local10 >= "0")) && ((_local10 <= "9")))) && ((_local9 >= 4)))))))){ _local2.variants.push(_local8); _local3 = STATE_VARIANTS; } else { if ((((_local3 < STATE_PRIVATES)) && ((_local9 == 1)))){ if (_local8 == "x"){ _local3 = STATE_PRIVATES; _local5 = _local2.privates; } else { _local3 = STATE_EXTENSIONS; _local5 = ((_local2.extensions[_local8]) || ([])); _local2.extensions[_local8] = _local5; }; } else { if (_local3 >= STATE_EXTENSIONS){ _local5.push(_local8); }; }; }; }; }; }; }; }; _local6++; }; _local2.canonicalize(); return (_local2); } public function equals(_arg1:LocaleID):Boolean{ return ((toString() == _arg1.toString())); } public function canonicalize():void{ var _local1:String; for (_local1 in extensions) { if (extensions.hasOwnProperty(_local1)){ if (extensions[_local1].length == 0){ delete extensions[_local1]; } else { extensions[_local1] = extensions[_local1].sort(); }; }; }; extended_langs = extended_langs.sort(); variants = variants.sort(); privates = privates.sort(); if (script == ""){ script = LocaleRegistry.getScriptByLang(lang); }; if ((((script == "")) && (!((region == ""))))){ script = LocaleRegistry.getScriptByLangAndRegion(lang, region); }; if ((((region == "")) && (!((script == ""))))){ region = LocaleRegistry.getDefaultRegionForLangAndScript(lang, script); }; } public function toString():String{ var _local2:String; var _local1:Array = [lang]; appendElements(_local1, extended_langs); if (script != ""){ _local1.push(script); }; if (region != ""){ _local1.push(region); }; appendElements(_local1, variants); for (_local2 in extensions) { if (extensions.hasOwnProperty(_local2)){ _local1.push(_local2); appendElements(_local1, extensions[_local2]); }; }; if (privates.length > 0){ _local1.push("x"); appendElements(_local1, privates); }; return (_local1.join("_")); } public function isSiblingOf(_arg1:LocaleID):Boolean{ return ((((lang == _arg1.lang)) && ((script == _arg1.script)))); } public function transformToParent():Boolean{ var _local2:String; var _local3:Array; var _local4:String; if (privates.length > 0){ privates.splice((privates.length - 1), 1); return (true); }; var _local1:String; for (_local2 in extensions) { if (extensions.hasOwnProperty(_local2)){ _local1 = _local2; }; }; if (_local1){ _local3 = extensions[_local1]; if (_local3.length == 1){ delete extensions[_local1]; return (true); }; _local3.splice((_local3.length - 1), 1); return (true); }; if (variants.length > 0){ variants.splice((variants.length - 1), 1); return (true); }; if (script != ""){ if (LocaleRegistry.getScriptByLang(lang) != ""){ script = ""; return (true); }; if (region == ""){ _local4 = LocaleRegistry.getDefaultRegionForLangAndScript(lang, script); if (_local4 != ""){ region = _local4; script = ""; return (true); }; }; }; if (region != ""){ if (!(((script == "")) && ((LocaleRegistry.getScriptByLang(lang) == "")))){ region = ""; return (true); }; }; if (extended_langs.length > 0){ extended_langs.splice((extended_langs.length - 1), 1); return (true); }; return (false); } } class LocaleRegistry { private static const SCRIPT_ID_BY_LANG:Object = { ab:5, af:1, am:2, ar:3, as:4, ay:1, be:5, bg:5, bn:4, bs:1, ca:1, ch:1, cs:1, cy:1, da:1, de:1, dv:6, dz:7, el:8, en:1, eo:1, es:1, et:1, eu:1, fa:3, fi:1, fj:1, fo:1, fr:1, frr:1, fy:1, ga:1, gl:1, gn:1, gu:9, gv:1, he:10, hi:11, hr:1, ht:1, hu:1, hy:12, id:1, in:1, is:1, it:1, iw:10, ja:13, ka:14, kk:5, kl:1, km:15, kn:16, ko:17, la:1, lb:1, ln:1, lo:18, lt:1, lv:1, mg:1, mh:1, mk:5, ml:19, mo:1, mr:11, ms:1, mt:1, my:20, na:1, nb:1, nd:1, ne:11, nl:1, nn:1, no:1, nr:1, ny:1, om:1, or:21, pa:22, pl:1, ps:3, pt:1, qu:1, rn:1, ro:1, ru:5, rw:1, sg:1, si:23, sk:1, sl:1, sm:1, so:1, sq:1, ss:1, st:1, sv:1, sw:1, ta:24, te:25, th:26, ti:2, tl:1, tn:1, to:1, tr:1, ts:1, uk:5, ur:3, ve:1, vi:1, wo:1, xh:1, yi:10, zu:1, cpe:1, dsb:1, frs:1, gsw:1, hsb:1, kok:11, mai:11, men:1, nds:1, niu:1, nqo:27, nso:1, son:1, tem:1, tkl:1, tmh:1, tpi:1, tvl:1, zbl:28 }; private static const SCRIPTS:Array = ["", "latn", "ethi", "arab", "beng", "cyrl", "thaa", "tibt", "grek", "gujr", "hebr", "deva", "armn", "jpan", "geor", "khmr", "knda", "kore", "laoo", "mlym", "mymr", "orya", "guru", "sinh", "taml", "telu", "thai", "nkoo", "blis", "hans", "hant", "mong", "syrc"]; private static const DEFAULT_REGION_BY_LANG_AND_SCRIPT:Object = { bg:{5:"bg"}, ca:{1:"es"}, zh:{ 30:"tw", 29:"cn" }, cs:{1:"cz"}, da:{1:"dk"}, de:{1:"de"}, el:{8:"gr"}, en:{1:"us"}, es:{1:"es"}, fi:{1:"fi"}, fr:{1:"fr"}, he:{10:"il"}, hu:{1:"hu"}, is:{1:"is"}, it:{1:"it"}, ja:{13:"jp"}, ko:{17:"kr"}, nl:{1:"nl"}, nb:{1:"no"}, pl:{1:"pl"}, pt:{1:"br"}, ro:{1:"ro"}, ru:{5:"ru"}, hr:{1:"hr"}, sk:{1:"sk"}, sq:{1:"al"}, sv:{1:"se"}, th:{26:"th"}, tr:{1:"tr"}, ur:{3:"pk"}, id:{1:"id"}, uk:{5:"ua"}, be:{5:"by"}, sl:{1:"si"}, et:{1:"ee"}, lv:{1:"lv"}, lt:{1:"lt"}, fa:{3:"ir"}, vi:{1:"vn"}, hy:{12:"am"}, az:{ 1:"az", 5:"az" }, eu:{1:"es"}, mk:{5:"mk"}, af:{1:"za"}, ka:{14:"ge"}, fo:{1:"fo"}, hi:{11:"in"}, ms:{1:"my"}, kk:{5:"kz"}, ky:{5:"kg"}, sw:{1:"ke"}, uz:{ 1:"uz", 5:"uz" }, tt:{5:"ru"}, pa:{22:"in"}, gu:{9:"in"}, ta:{24:"in"}, te:{25:"in"}, kn:{16:"in"}, mr:{11:"in"}, sa:{11:"in"}, mn:{5:"mn"}, gl:{1:"es"}, kok:{11:"in"}, syr:{32:"sy"}, dv:{6:"mv"}, nn:{1:"no"}, sr:{ 1:"cs", 5:"cs" }, cy:{1:"gb"}, mi:{1:"nz"}, mt:{1:"mt"}, quz:{1:"bo"}, tn:{1:"za"}, xh:{1:"za"}, zu:{1:"za"}, nso:{1:"za"}, se:{1:"no"}, smj:{1:"no"}, sma:{1:"no"}, sms:{1:"fi"}, smn:{1:"fi"}, bs:{1:"ba"} }; private static const SCRIPT_BY_ID:Object = { latn:1, ethi:2, arab:3, beng:4, cyrl:5, thaa:6, tibt:7, grek:8, gujr:9, hebr:10, deva:11, armn:12, jpan:13, geor:14, khmr:15, knda:16, kore:17, laoo:18, mlym:19, mymr:20, orya:21, guru:22, sinh:23, taml:24, telu:25, thai:26, nkoo:27, blis:28, hans:29, hant:30, mong:31, syrc:32 }; private static const SCRIPT_ID_BY_LANG_AND_REGION:Object = { zh:{ cn:29, sg:29, tw:30, hk:30, mo:30 }, mn:{ cn:31, sg:5 }, pa:{ pk:3, in:22 }, ha:{ gh:1, ne:1 } }; public function LocaleRegistry(){ } public static function getScriptByLangAndRegion(_arg1:String, _arg2:String):String{ var _local3:Object = SCRIPT_ID_BY_LANG_AND_REGION[_arg1]; if (_local3 == null){ return (""); }; var _local4:Object = _local3[_arg2]; if (_local4 == null){ return (""); }; return (SCRIPTS[int(_local4)].toLowerCase()); } public static function getScriptByLang(_arg1:String):String{ var _local2:Object = SCRIPT_ID_BY_LANG[_arg1]; if (_local2 == null){ return (""); }; return (SCRIPTS[int(_local2)].toLowerCase()); } public static function getDefaultRegionForLangAndScript(_arg1:String, _arg2:String):String{ var _local3:Object = DEFAULT_REGION_BY_LANG_AND_SCRIPT[_arg1]; var _local4:Object = SCRIPT_BY_ID[_arg2]; if ((((_local3 == null)) || ((_local4 == null)))){ return (""); }; return (((_local3[int(_local4)]) || (""))); } } package mx.resources { import mx.core.*; public class ResourceManager { mx_internal static const VERSION:String = "3.6.0.21751"; private static var implClassDependency:ResourceManagerImpl; private static var instance:IResourceManager; public static function getInstance():IResourceManager{ if (!instance){ try { instance = IResourceManager(Singleton.getInstance("mx.resources::IResourceManager")); } catch(e:Error) { instance = new ResourceManagerImpl(); }; }; return (instance); } } }//package mx.resources package mx.resources { public interface IResourceModule { function get resourceBundles():Array; } }//package mx.resources package mx.resources { import flash.events.*; import flash.utils.*; import flash.system.*; import mx.modules.*; import mx.events.*; import mx.core.*; import mx.utils.*; public class ResourceManagerImpl extends EventDispatcher implements IResourceManager { mx_internal static const VERSION:String = "3.6.0.21751"; private static var instance:IResourceManager; private var resourceModules:Object; private var initializedForNonFrameworkApp:Boolean = false; private var localeMap:Object; private var _localeChain:Array; public function ResourceManagerImpl(){ localeMap = {}; resourceModules = {}; super(); } public static function getInstance():IResourceManager{ if (!instance){ instance = new (ResourceManagerImpl)(); }; return (instance); } public function get localeChain():Array{ return (_localeChain); } public function set localeChain(_arg1:Array):void{ _localeChain = _arg1; update(); } public function getStringArray(_arg1:String, _arg2:String, _arg3:String=null):Array{ var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3); if (!_local4){ return (null); }; var _local5:* = _local4.content[_arg2]; var _local6:Array = String(_local5).split(","); var _local7:int = _local6.length; var _local8:int; while (_local8 < _local7) { _local6[_local8] = StringUtil.trim(_local6[_local8]); _local8++; }; return (_local6); } mx_internal function installCompiledResourceBundle(_arg1:ApplicationDomain, _arg2:String, _arg3:String):void{ var _local4:String; var _local5:String = _arg3; var _local6:int = _arg3.indexOf(":"); if (_local6 != -1){ _local4 = _arg3.substring(0, _local6); _local5 = _arg3.substring((_local6 + 1)); }; if (getResourceBundle(_arg2, _arg3)){ return; }; var _local7 = (((_arg2 + "$") + _local5) + "_properties"); if (_local4 != null){ _local7 = ((_local4 + ".") + _local7); }; var _local8:Class; if (_arg1.hasDefinition(_local7)){ _local8 = Class(_arg1.getDefinition(_local7)); }; if (!_local8){ _local7 = _arg3; if (_arg1.hasDefinition(_local7)){ _local8 = Class(_arg1.getDefinition(_local7)); }; }; if (!_local8){ _local7 = (_arg3 + "_properties"); if (_arg1.hasDefinition(_local7)){ _local8 = Class(_arg1.getDefinition(_local7)); }; }; if (!_local8){ throw (new Error((((("Could not find compiled resource bundle '" + _arg3) + "' for locale '") + _arg2) + "'."))); }; var _local9:ResourceBundle = ResourceBundle(new (_local8)()); _local9.mx_internal::_locale = _arg2; _local9.mx_internal::_bundleName = _arg3; addResourceBundle(_local9); } public function getString(_arg1:String, _arg2:String, _arg3:Array=null, _arg4:String=null):String{ var _local5:IResourceBundle = findBundle(_arg1, _arg2, _arg4); if (!_local5){ return (null); }; var _local6:String = String(_local5.content[_arg2]); if (_arg3){ _local6 = StringUtil.substitute(_local6, _arg3); }; return (_local6); } public function loadResourceModule(_arg1:String, _arg2:Boolean=true, _arg3:ApplicationDomain=null, _arg4:SecurityDomain=null):IEventDispatcher{ var moduleInfo:* = null; var resourceEventDispatcher:* = null; var timer:* = null; var timerHandler:* = null; var url:* = _arg1; var updateFlag:Boolean = _arg2; var applicationDomain = _arg3; var securityDomain = _arg4; moduleInfo = ModuleManager.getModule(url); resourceEventDispatcher = new ResourceEventDispatcher(moduleInfo); var readyHandler:* = function (_arg1:ModuleEvent):void{ var _local2:* = _arg1.module.factory.create(); resourceModules[_arg1.module.url].resourceModule = _local2; if (updateFlag){ update(); }; }; moduleInfo.addEventListener(ModuleEvent.READY, readyHandler, false, 0, true); var errorHandler:* = function (_arg1:ModuleEvent):void{ var _local3:ResourceEvent; var _local2:String = ("Unable to load resource module from " + url); if (resourceEventDispatcher.willTrigger(ResourceEvent.ERROR)){ _local3 = new ResourceEvent(ResourceEvent.ERROR, _arg1.bubbles, _arg1.cancelable); _local3.bytesLoaded = 0; _local3.bytesTotal = 0; _local3.errorText = _local2; resourceEventDispatcher.dispatchEvent(_local3); } else { throw (new Error(_local2)); }; }; moduleInfo.addEventListener(ModuleEvent.ERROR, errorHandler, false, 0, true); resourceModules[url] = new ResourceModuleInfo(moduleInfo, readyHandler, errorHandler); timer = new Timer(0); timerHandler = function (_arg1:TimerEvent):void{ timer.removeEventListener(TimerEvent.TIMER, timerHandler); timer.stop(); moduleInfo.load(applicationDomain, securityDomain); }; timer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, true); timer.start(); return (resourceEventDispatcher); } public function getLocales():Array{ var _local2:String; var _local1:Array = []; for (_local2 in localeMap) { _local1.push(_local2); }; return (_local1); } public function removeResourceBundlesForLocale(_arg1:String):void{ delete localeMap[_arg1]; } public function getResourceBundle(_arg1:String, _arg2:String):IResourceBundle{ var _local3:Object = localeMap[_arg1]; if (!_local3){ return (null); }; return (_local3[_arg2]); } private function dumpResourceModule(_arg1):void{ var _local2:ResourceBundle; var _local3:String; for each (_local2 in _arg1.resourceBundles) { trace(_local2.locale, _local2.bundleName); for (_local3 in _local2.content) { }; }; } public function addResourceBundle(_arg1:IResourceBundle):void{ var _local2:String = _arg1.locale; var _local3:String = _arg1.bundleName; if (!localeMap[_local2]){ localeMap[_local2] = {}; }; localeMap[_local2][_local3] = _arg1; } public function getObject(_arg1:String, _arg2:String, _arg3:String=null){ var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3); if (!_local4){ return (undefined); }; return (_local4.content[_arg2]); } public function getInt(_arg1:String, _arg2:String, _arg3:String=null):int{ var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3); if (!_local4){ return (0); }; var _local5:* = _local4.content[_arg2]; return (int(_local5)); } private function findBundle(_arg1:String, _arg2:String, _arg3:String):IResourceBundle{ supportNonFrameworkApps(); return (((_arg3)!=null) ? getResourceBundle(_arg3, _arg1) : findResourceBundleWithResource(_arg1, _arg2)); } private function supportNonFrameworkApps():void{ if (initializedForNonFrameworkApp){ return; }; initializedForNonFrameworkApp = true; if (getLocales().length > 0){ return; }; var _local1:ApplicationDomain = ApplicationDomain.currentDomain; if (!_local1.hasDefinition("_CompiledResourceBundleInfo")){ return; }; var _local2:Class = Class(_local1.getDefinition("_CompiledResourceBundleInfo")); var _local3:Array = _local2.compiledLocales; var _local4:Array = _local2.compiledResourceBundleNames; installCompiledResourceBundles(_local1, _local3, _local4); localeChain = _local3; } public function getBundleNamesForLocale(_arg1:String):Array{ var _local3:String; var _local2:Array = []; for (_local3 in localeMap[_arg1]) { _local2.push(_local3); }; return (_local2); } public function getPreferredLocaleChain():Array{ return (LocaleSorter.sortLocalesByPreference(getLocales(), getSystemPreferredLocales(), null, true)); } public function getNumber(_arg1:String, _arg2:String, _arg3:String=null):Number{ var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3); if (!_local4){ return (NaN); }; var _local5:* = _local4.content[_arg2]; return (Number(_local5)); } public function update():void{ dispatchEvent(new Event(Event.CHANGE)); } public function getClass(_arg1:String, _arg2:String, _arg3:String=null):Class{ var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3); if (!_local4){ return (null); }; var _local5:* = _local4.content[_arg2]; return ((_local5 as Class)); } public function removeResourceBundle(_arg1:String, _arg2:String):void{ delete localeMap[_arg1][_arg2]; if (getBundleNamesForLocale(_arg1).length == 0){ delete localeMap[_arg1]; }; } public function initializeLocaleChain(_arg1:Array):void{ localeChain = LocaleSorter.sortLocalesByPreference(_arg1, getSystemPreferredLocales(), null, true); } public function findResourceBundleWithResource(_arg1:String, _arg2:String):IResourceBundle{ var _local5:String; var _local6:Object; var _local7:ResourceBundle; if (!_localeChain){ return (null); }; var _local3:int = _localeChain.length; var _local4:int; while (_local4 < _local3) { _local5 = localeChain[_local4]; _local6 = localeMap[_local5]; if (!_local6){ } else { _local7 = _local6[_arg1]; if (!_local7){ } else { if ((_arg2 in _local7.content)){ return (_local7); }; }; }; _local4++; }; return (null); } public function getUint(_arg1:String, _arg2:String, _arg3:String=null):uint{ var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3); if (!_local4){ return (0); }; var _local5:* = _local4.content[_arg2]; return (uint(_local5)); } private function getSystemPreferredLocales():Array{ var _local1:Array; if (Capabilities["languages"]){ _local1 = Capabilities["languages"]; } else { _local1 = [Capabilities.language]; }; return (_local1); } public function installCompiledResourceBundles(_arg1:ApplicationDomain, _arg2:Array, _arg3:Array):void{ var _local7:String; var _local8:int; var _local9:String; var _local4:int = ((_arg2) ? _arg2.length : 0); var _local5:int = ((_arg3) ? _arg3.length : 0); var _local6:int; while (_local6 < _local4) { _local7 = _arg2[_local6]; _local8 = 0; while (_local8 < _local5) { _local9 = _arg3[_local8]; mx_internal::installCompiledResourceBundle(_arg1, _local7, _local9); _local8++; }; _local6++; }; } public function getBoolean(_arg1:String, _arg2:String, _arg3:String=null):Boolean{ var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3); if (!_local4){ return (false); }; var _local5:* = _local4.content[_arg2]; return ((String(_local5).toLowerCase() == "true")); } public function unloadResourceModule(_arg1:String, _arg2:Boolean=true):void{ var _local4:Array; var _local5:int; var _local6:int; var _local7:String; var _local8:String; var _local3:ResourceModuleInfo = resourceModules[_arg1]; if (!_local3){ return; }; if (_local3.resourceModule){ _local4 = _local3.resourceModule.resourceBundles; if (_local4){ _local5 = _local4.length; _local6 = 0; while (_local6 < _local5) { _local7 = _local4[_local6].locale; _local8 = _local4[_local6].bundleName; removeResourceBundle(_local7, _local8); _local6++; }; }; }; resourceModules[_arg1] = null; delete resourceModules[_arg1]; _local3.moduleInfo.unload(); if (_arg2){ this.update(); }; } } }//package mx.resources import flash.events.*; import mx.modules.*; import mx.events.*; class ResourceModuleInfo { public var resourceModule:IResourceModule; public var errorHandler:Function; public var readyHandler:Function; public var moduleInfo:IModuleInfo; public function ResourceModuleInfo(_arg1:IModuleInfo, _arg2:Function, _arg3:Function){ this.moduleInfo = _arg1; this.readyHandler = _arg2; this.errorHandler = _arg3; } } class ResourceEventDispatcher extends EventDispatcher { public function ResourceEventDispatcher(_arg1:IModuleInfo){ _arg1.addEventListener(ModuleEvent.ERROR, moduleInfo_errorHandler, false, 0, true); _arg1.addEventListener(ModuleEvent.PROGRESS, moduleInfo_progressHandler, false, 0, true); _arg1.addEventListener(ModuleEvent.READY, moduleInfo_readyHandler, false, 0, true); } private function moduleInfo_progressHandler(_arg1:ModuleEvent):void{ var _local2:ResourceEvent = new ResourceEvent(ResourceEvent.PROGRESS, _arg1.bubbles, _arg1.cancelable); _local2.bytesLoaded = _arg1.bytesLoaded; _local2.bytesTotal = _arg1.bytesTotal; dispatchEvent(_local2); } private function moduleInfo_readyHandler(_arg1:ModuleEvent):void{ var _local2:ResourceEvent = new ResourceEvent(ResourceEvent.COMPLETE); dispatchEvent(_local2); } private function moduleInfo_errorHandler(_arg1:ModuleEvent):void{ var _local2:ResourceEvent = new ResourceEvent(ResourceEvent.ERROR, _arg1.bubbles, _arg1.cancelable); _local2.bytesLoaded = _arg1.bytesLoaded; _local2.bytesTotal = _arg1.bytesTotal; _local2.errorText = _arg1.errorText; dispatchEvent(_local2); } } package mx.resources { import flash.system.*; import mx.core.*; import mx.utils.*; public class ResourceBundle implements IResourceBundle { mx_internal static const VERSION:String = "3.6.0.21751"; mx_internal static var backupApplicationDomain:ApplicationDomain; mx_internal static var locale:String; mx_internal var _locale:String; private var _content:Object; mx_internal var _bundleName:String; public function ResourceBundle(_arg1:String=null, _arg2:String=null){ _content = {}; super(); mx_internal::_locale = _arg1; mx_internal::_bundleName = _arg2; _content = getContent(); } private static function getClassByName(_arg1:String, _arg2:ApplicationDomain):Class{ var _local3:Class; if (_arg2.hasDefinition(_arg1)){ _local3 = (_arg2.getDefinition(_arg1) as Class); }; return (_local3); } public static function getResourceBundle(_arg1:String, _arg2:ApplicationDomain=null):ResourceBundle{ var _local3:String; var _local4:Class; var _local5:Object; var _local6:ResourceBundle; if (!_arg2){ _arg2 = ApplicationDomain.currentDomain; }; _local3 = (((mx_internal::locale + "$") + _arg1) + "_properties"); _local4 = getClassByName(_local3, _arg2); if (!_local4){ _local3 = (_arg1 + "_properties"); _local4 = getClassByName(_local3, _arg2); }; if (!_local4){ _local3 = _arg1; _local4 = getClassByName(_local3, _arg2); }; if (((!(_local4)) && (mx_internal::backupApplicationDomain))){ _local3 = (_arg1 + "_properties"); _local4 = getClassByName(_local3, mx_internal::backupApplicationDomain); if (!_local4){ _local3 = _arg1; _local4 = getClassByName(_local3, mx_internal::backupApplicationDomain); }; }; if (_local4){ _local5 = new (_local4)(); if ((_local5 is ResourceBundle)){ _local6 = ResourceBundle(_local5); return (_local6); }; }; throw (new Error(("Could not find resource bundle " + _arg1))); } protected function getContent():Object{ return ({}); } public function getString(_arg1:String):String{ return (String(_getObject(_arg1))); } public function get content():Object{ return (_content); } public function getBoolean(_arg1:String, _arg2:Boolean=true):Boolean{ var _local3:String = _getObject(_arg1).toLowerCase(); if (_local3 == "false"){ return (false); }; if (_local3 == "true"){ return (true); }; return (_arg2); } public function getStringArray(_arg1:String):Array{ var _local2:Array = _getObject(_arg1).split(","); var _local3:int = _local2.length; var _local4:int; while (_local4 < _local3) { _local2[_local4] = StringUtil.trim(_local2[_local4]); _local4++; }; return (_local2); } public function getObject(_arg1:String):Object{ return (_getObject(_arg1)); } private function _getObject(_arg1:String):Object{ var _local2:Object = content[_arg1]; if (!_local2){ throw (new Error(((("Key " + _arg1) + " was not found in resource bundle ") + bundleName))); }; return (_local2); } public function get locale():String{ return (mx_internal::_locale); } public function get bundleName():String{ return (mx_internal::_bundleName); } public function getNumber(_arg1:String):Number{ return (Number(_getObject(_arg1))); } } }//package mx.resources package mx.modules { import mx.core.*; public class ModuleManager { mx_internal static const VERSION:String = "3.6.0.21751"; public static function getModule(_arg1:String):IModuleInfo{ return (getSingleton().getModule(_arg1)); } private static function getSingleton():Object{ if (!ModuleManagerGlobals.managerSingleton){ ModuleManagerGlobals.managerSingleton = new ModuleManagerImpl(); }; return (ModuleManagerGlobals.managerSingleton); } public static function getAssociatedFactory(_arg1:Object):IFlexModuleFactory{ return (getSingleton().getAssociatedFactory(_arg1)); } } }//package mx.modules import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; import flash.system.*; import mx.events.*; import mx.core.*; class ModuleInfoProxy extends EventDispatcher implements IModuleInfo { private var _data:Object; private var info:ModuleInfo; private var referenced:Boolean = false; public function ModuleInfoProxy(_arg1:ModuleInfo){ this.info = _arg1; _arg1.addEventListener(ModuleEvent.SETUP, moduleEventHandler, false, 0, true); _arg1.addEventListener(ModuleEvent.PROGRESS, moduleEventHandler, false, 0, true); _arg1.addEventListener(ModuleEvent.READY, moduleEventHandler, false, 0, true); _arg1.addEventListener(ModuleEvent.ERROR, moduleEventHandler, false, 0, true); _arg1.addEventListener(ModuleEvent.UNLOAD, moduleEventHandler, false, 0, true); } public function get loaded():Boolean{ return (info.loaded); } public function release():void{ if (referenced){ info.removeReference(); referenced = false; }; } public function get error():Boolean{ return (info.error); } public function get factory():IFlexModuleFactory{ return (info.factory); } public function publish(_arg1:IFlexModuleFactory):void{ info.publish(_arg1); } public function set data(_arg1:Object):void{ _data = _arg1; } public function get ready():Boolean{ return (info.ready); } public function load(_arg1:ApplicationDomain=null, _arg2:SecurityDomain=null, _arg3:ByteArray=null):void{ var _local4:ModuleEvent; info.resurrect(); if (!referenced){ info.addReference(); referenced = true; }; if (info.error){ dispatchEvent(new ModuleEvent(ModuleEvent.ERROR)); } else { if (info.loaded){ if (info.setup){ dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); if (info.ready){ _local4 = new ModuleEvent(ModuleEvent.PROGRESS); _local4.bytesLoaded = info.size; _local4.bytesTotal = info.size; dispatchEvent(_local4); dispatchEvent(new ModuleEvent(ModuleEvent.READY)); }; }; } else { info.load(_arg1, _arg2, _arg3); }; }; } private function moduleEventHandler(_arg1:ModuleEvent):void{ dispatchEvent(_arg1); } public function get url():String{ return (info.url); } public function get data():Object{ return (_data); } public function get setup():Boolean{ return (info.setup); } public function unload():void{ info.unload(); info.removeEventListener(ModuleEvent.SETUP, moduleEventHandler); info.removeEventListener(ModuleEvent.PROGRESS, moduleEventHandler); info.removeEventListener(ModuleEvent.READY, moduleEventHandler); info.removeEventListener(ModuleEvent.ERROR, moduleEventHandler); info.removeEventListener(ModuleEvent.UNLOAD, moduleEventHandler); } } class ModuleManagerImpl extends EventDispatcher { private var moduleList:Object; public function ModuleManagerImpl(){ moduleList = {}; super(); } public function getModule(_arg1:String):IModuleInfo{ var _local2:ModuleInfo = (moduleList[_arg1] as ModuleInfo); if (!_local2){ _local2 = new ModuleInfo(_arg1); moduleList[_arg1] = _local2; }; return (new ModuleInfoProxy(_local2)); } public function getAssociatedFactory(_arg1:Object):IFlexModuleFactory{ var m:* = null; var info:* = null; var domain:* = null; var cls:* = null; var object:* = _arg1; var className:* = getQualifiedClassName(object); for each (m in moduleList) { info = (m as ModuleInfo); if (!info.ready){ } else { domain = info.applicationDomain; try { cls = Class(domain.getDefinition(className)); if ((object is cls)){ return (info.factory); }; } catch(error:Error) { }; }; }; return (null); } } class ModuleInfo extends EventDispatcher { private var _error:Boolean = false; private var loader:Loader; private var factoryInfo:FactoryInfo; private var limbo:Dictionary; private var _loaded:Boolean = false; private var _ready:Boolean = false; private var numReferences:int = 0; private var _url:String; private var _setup:Boolean = false; public function ModuleInfo(_arg1:String){ _url = _arg1; } private function clearLoader():void{ if (loader){ if (loader.contentLoaderInfo){ loader.contentLoaderInfo.removeEventListener(Event.INIT, initHandler); loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); }; try { if (loader.content){ loader.content.removeEventListener("ready", readyHandler); loader.content.removeEventListener("error", moduleErrorHandler); }; } catch(error:Error) { }; if (_loaded){ try { loader.close(); } catch(error:Error) { }; }; try { loader.unload(); } catch(error:Error) { }; loader = null; }; } public function get size():int{ return (((((!(limbo)) && (factoryInfo))) ? factoryInfo.bytesTotal : 0)); } public function get loaded():Boolean{ return (((limbo) ? false : _loaded)); } public function release():void{ if (((_ready) && (!(limbo)))){ limbo = new Dictionary(true); limbo[factoryInfo] = 1; factoryInfo = null; } else { unload(); }; } public function get error():Boolean{ return (((limbo) ? false : _error)); } public function get factory():IFlexModuleFactory{ return (((((!(limbo)) && (factoryInfo))) ? factoryInfo.factory : null)); } public function completeHandler(_arg1:Event):void{ var _local2:ModuleEvent = new ModuleEvent(ModuleEvent.PROGRESS, _arg1.bubbles, _arg1.cancelable); _local2.bytesLoaded = loader.contentLoaderInfo.bytesLoaded; _local2.bytesTotal = loader.contentLoaderInfo.bytesTotal; dispatchEvent(_local2); } public function publish(_arg1:IFlexModuleFactory):void{ if (factoryInfo){ return; }; if (_url.indexOf("published://") != 0){ return; }; factoryInfo = new FactoryInfo(); factoryInfo.factory = _arg1; _loaded = true; _setup = true; _ready = true; _error = false; dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); dispatchEvent(new ModuleEvent(ModuleEvent.PROGRESS)); dispatchEvent(new ModuleEvent(ModuleEvent.READY)); } public function initHandler(_arg1:Event):void{ var moduleEvent:* = null; var event:* = _arg1; factoryInfo = new FactoryInfo(); try { factoryInfo.factory = (loader.content as IFlexModuleFactory); } catch(error:Error) { }; if (!factoryInfo.factory){ moduleEvent = new ModuleEvent(ModuleEvent.ERROR, event.bubbles, event.cancelable); moduleEvent.bytesLoaded = 0; moduleEvent.bytesTotal = 0; moduleEvent.errorText = "SWF is not a loadable module"; dispatchEvent(moduleEvent); return; }; loader.content.addEventListener("ready", readyHandler); loader.content.addEventListener("error", moduleErrorHandler); try { factoryInfo.applicationDomain = loader.contentLoaderInfo.applicationDomain; } catch(error:Error) { }; _setup = true; dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); } public function resurrect():void{ var _local1:Object; if (((!(factoryInfo)) && (limbo))){ for (_local1 in limbo) { factoryInfo = (_local1 as FactoryInfo); break; }; limbo = null; }; if (!factoryInfo){ if (_loaded){ dispatchEvent(new ModuleEvent(ModuleEvent.UNLOAD)); }; loader = null; _loaded = false; _setup = false; _ready = false; _error = false; }; } public function errorHandler(_arg1:ErrorEvent):void{ _error = true; var _local2:ModuleEvent = new ModuleEvent(ModuleEvent.ERROR, _arg1.bubbles, _arg1.cancelable); _local2.bytesLoaded = 0; _local2.bytesTotal = 0; _local2.errorText = _arg1.text; dispatchEvent(_local2); } public function get ready():Boolean{ return (((limbo) ? false : _ready)); } private function loadBytes(_arg1:ApplicationDomain, _arg2:ByteArray):void{ var _local3:LoaderContext = new LoaderContext(); _local3.applicationDomain = ((_arg1) ? _arg1 : new ApplicationDomain(ApplicationDomain.currentDomain)); if (("allowLoadBytesCodeExecution" in _local3)){ _local3["allowLoadBytesCodeExecution"] = true; }; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); loader.loadBytes(_arg2, _local3); } public function removeReference():void{ numReferences--; if (numReferences == 0){ release(); }; } public function addReference():void{ numReferences++; } public function progressHandler(_arg1:ProgressEvent):void{ var _local2:ModuleEvent = new ModuleEvent(ModuleEvent.PROGRESS, _arg1.bubbles, _arg1.cancelable); _local2.bytesLoaded = _arg1.bytesLoaded; _local2.bytesTotal = _arg1.bytesTotal; dispatchEvent(_local2); } public function load(_arg1:ApplicationDomain=null, _arg2:SecurityDomain=null, _arg3:ByteArray=null):void{ if (_loaded){ return; }; _loaded = true; limbo = null; if (_arg3){ loadBytes(_arg1, _arg3); return; }; if (_url.indexOf("published://") == 0){ return; }; var _local4:URLRequest = new URLRequest(_url); var _local5:LoaderContext = new LoaderContext(); _local5.applicationDomain = ((_arg1) ? _arg1 : new ApplicationDomain(ApplicationDomain.currentDomain)); if (((!((_arg2 == null))) && ((Security.sandboxType == Security.REMOTE)))){ _local5.securityDomain = _arg2; }; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); loader.load(_local4, _local5); } public function get url():String{ return (_url); } public function get applicationDomain():ApplicationDomain{ return (((((!(limbo)) && (factoryInfo))) ? factoryInfo.applicationDomain : null)); } public function moduleErrorHandler(_arg1:Event):void{ var _local2:ModuleEvent; _ready = true; factoryInfo.bytesTotal = loader.contentLoaderInfo.bytesTotal; clearLoader(); if ((_arg1 is ModuleEvent)){ _local2 = ModuleEvent(_arg1); } else { _local2 = new ModuleEvent(ModuleEvent.ERROR); }; dispatchEvent(_local2); } public function readyHandler(_arg1:Event):void{ _ready = true; factoryInfo.bytesTotal = loader.contentLoaderInfo.bytesTotal; var _local2:ModuleEvent = new ModuleEvent(ModuleEvent.READY); _local2.bytesLoaded = loader.contentLoaderInfo.bytesLoaded; _local2.bytesTotal = loader.contentLoaderInfo.bytesTotal; clearLoader(); dispatchEvent(_local2); } public function get setup():Boolean{ return (((limbo) ? false : _setup)); } public function unload():void{ clearLoader(); if (_loaded){ dispatchEvent(new ModuleEvent(ModuleEvent.UNLOAD)); }; limbo = null; factoryInfo = null; _loaded = false; _setup = false; _ready = false; _error = false; } } class FactoryInfo { public var bytesTotal:int = 0; public var factory:IFlexModuleFactory; public var applicationDomain:ApplicationDomain; public function FactoryInfo(){ } } package mx.modules { public class ModuleManagerGlobals { public static var managerSingleton:Object = null; } }//package mx.modules package mx.modules { import flash.events.*; import flash.utils.*; import flash.system.*; import mx.core.*; public interface IModuleInfo extends IEventDispatcher { function get ready():Boolean; function get loaded():Boolean; function load(_arg1:ApplicationDomain=null, _arg2:SecurityDomain=null, _arg3:ByteArray=null):void; function release():void; function get error():Boolean; function get data():Object; function publish(_arg1:IFlexModuleFactory):void; function get factory():IFlexModuleFactory; function set data(_arg1:Object):void; function get url():String; function get setup():Boolean; function unload():void; } }//package mx.modules package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core package mx.core { import flash.display.*; import mx.utils.*; public class FlexBitmap extends Bitmap { mx_internal static const VERSION:String = "3.6.0.21751"; public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ var bitmapData = _arg1; var pixelSnapping:String = _arg2; var smoothing:Boolean = _arg3; super(bitmapData, pixelSnapping, smoothing); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core package mx.core { import flash.utils.*; public interface IFlexModuleFactory { function get preloadedRSLs():Dictionary; function allowInsecureDomain(... _args):void; function create(... _args):Object; function allowDomain(... _args):void; function info():Object; } }//package mx.core package mx.core { public interface IFlexAsset { } }//package mx.core package mx.core { public class Singleton { mx_internal static const VERSION:String = "3.6.0.21751"; private static var classMap:Object = {}; public static function registerClass(_arg1:String, _arg2:Class):void{ var _local3:Class = classMap[_arg1]; if (!_local3){ classMap[_arg1] = _arg2; }; } public static function getClass(_arg1:String):Class{ return (classMap[_arg1]); } public static function getInstance(_arg1:String):Object{ var _local2:Class = classMap[_arg1]; if (!_local2){ throw (new Error((("No class registered for interface '" + _arg1) + "'."))); }; return (_local2["getInstance"]()); } } }//package mx.core package mx.core { import flash.display.*; public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject { mx_internal static const VERSION:String = "3.6.0.21751"; public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } public function get measuredWidth():Number{ if (bitmapData){ return (bitmapData.width); }; return (0); } public function get measuredHeight():Number{ if (bitmapData){ return (bitmapData.height); }; return (0); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } } }//package mx.core package mx.core { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.accessibility.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get visible():Boolean; function get rotation():Number; function localToGlobal(_arg1:Point):Point; function get name():String; function set width(_arg1:Number):void; function get measuredHeight():Number; function get blendMode():String; function get scale9Grid():Rectangle; function set name(_arg1:String):void; function set scaleX(_arg1:Number):void; function set scaleY(_arg1:Number):void; function get measuredWidth():Number; function get accessibilityProperties():AccessibilityProperties; function set scrollRect(_arg1:Rectangle):void; function get cacheAsBitmap():Boolean; function globalToLocal(_arg1:Point):Point; function get height():Number; function set blendMode(_arg1:String):void; function get parent():DisplayObjectContainer; function getBounds(_arg1:DisplayObject):Rectangle; function get opaqueBackground():Object; function set scale9Grid(_arg1:Rectangle):void; function setActualSize(_arg1:Number, _arg2:Number):void; function set alpha(_arg1:Number):void; function set accessibilityProperties(_arg1:AccessibilityProperties):void; function get width():Number; function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean; function set cacheAsBitmap(_arg1:Boolean):void; function get scaleX():Number; function get scaleY():Number; function get scrollRect():Rectangle; function get mouseX():Number; function get mouseY():Number; function set height(_arg1:Number):void; function set mask(_arg1:DisplayObject):void; function getRect(_arg1:DisplayObject):Rectangle; function get alpha():Number; function set transform(_arg1:Transform):void; function move(_arg1:Number, _arg2:Number):void; function get loaderInfo():LoaderInfo; function get root():DisplayObject; function hitTestObject(_arg1:DisplayObject):Boolean; function set opaqueBackground(_arg1:Object):void; function set visible(_arg1:Boolean):void; function get mask():DisplayObject; function set x(_arg1:Number):void; function set y(_arg1:Number):void; function get transform():Transform; function set filters(_arg1:Array):void; function get x():Number; function get y():Number; function get filters():Array; function set rotation(_arg1:Number):void; function get stage():Stage; } }//package mx.core package mx.core { public interface IRepeaterClient { function get instanceIndices():Array; function set instanceIndices(_arg1:Array):void; function get isDocument():Boolean; function set repeaters(_arg1:Array):void; function initializeRepeaterArrays(_arg1:IRepeaterClient):void; function get repeaters():Array; function set repeaterIndices(_arg1:Array):void; function get repeaterIndices():Array; } }//package mx.core package mx.events { import flash.events.*; import mx.modules.*; import mx.core.*; public class ModuleEvent extends ProgressEvent { public static const READY:String = "ready"; public static const ERROR:String = "error"; public static const PROGRESS:String = "progress"; mx_internal static const VERSION:String = "3.6.0.21751"; public static const SETUP:String = "setup"; public static const UNLOAD:String = "unload"; public var errorText:String; private var _module:IModuleInfo; public function ModuleEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:uint=0, _arg5:uint=0, _arg6:String=null, _arg7:IModuleInfo=null){ super(_arg1, _arg2, _arg3, _arg4, _arg5); this.errorText = _arg6; this._module = _arg7; } public function get module():IModuleInfo{ if (_module){ return (_module); }; return ((target as IModuleInfo)); } override public function clone():Event{ return (new ModuleEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, errorText, module)); } } }//package mx.events package mx.events { import flash.events.*; import mx.core.*; public class ResourceEvent extends ProgressEvent { mx_internal static const VERSION:String = "3.6.0.21751"; public static const COMPLETE:String = "complete"; public static const PROGRESS:String = "progress"; public static const ERROR:String = "error"; public var errorText:String; public function ResourceEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:uint=0, _arg5:uint=0, _arg6:String=null){ super(_arg1, _arg2, _arg3, _arg4, _arg5); this.errorText = _arg6; } override public function clone():Event{ return (new ResourceEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, errorText)); } } }//package mx.events package mx.utils { import flash.display.*; import flash.utils.*; import mx.core.*; public class NameUtil { mx_internal static const VERSION:String = "3.6.0.21751"; private static var counter:int = 0; public static function displayObjectToString(_arg1:DisplayObject):String{ var result:* = null; var o:* = null; var s:* = null; var indices:* = null; var displayObject:* = _arg1; try { o = displayObject; while (o != null) { if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){ break; }; s = o.name; if ((o is IRepeaterClient)){ indices = IRepeaterClient(o).instanceIndices; if (indices){ s = (s + (("[" + indices.join("][")) + "]")); }; }; result = (((result == null)) ? s : ((s + ".") + result)); o = o.parent; }; } catch(e:SecurityError) { }; return (result); } public static function createUniqueName(_arg1:Object):String{ if (!_arg1){ return (null); }; var _local2:String = getQualifiedClassName(_arg1); var _local3:int = _local2.indexOf("::"); if (_local3 != -1){ _local2 = _local2.substr((_local3 + 2)); }; var _local4:int = _local2.charCodeAt((_local2.length - 1)); if ((((_local4 >= 48)) && ((_local4 <= 57)))){ _local2 = (_local2 + "_"); }; return ((_local2 + counter++)); } } }//package mx.utils package mx.utils { import mx.core.*; public class StringUtil { mx_internal static const VERSION:String = "3.6.0.21751"; public static function trim(_arg1:String):String{ if (_arg1 == null){ return (""); }; var _local2:int; while (isWhitespace(_arg1.charAt(_local2))) { _local2++; }; var _local3:int = (_arg1.length - 1); while (isWhitespace(_arg1.charAt(_local3))) { _local3--; }; if (_local3 >= _local2){ return (_arg1.slice(_local2, (_local3 + 1))); }; return (""); } public static function isWhitespace(_arg1:String):Boolean{ switch (_arg1){ case " ": case "\t": case "\r": case "\n": case "\f": return (true); default: return (false); }; } public static function substitute(_arg1:String, ... _args):String{ var _local4:Array; if (_arg1 == null){ return (""); }; var _local3:uint = _args.length; if ((((_local3 == 1)) && ((_args[0] is Array)))){ _local4 = (_args[0] as Array); _local3 = _local4.length; } else { _local4 = _args; }; var _local5:int; while (_local5 < _local3) { _arg1 = _arg1.replace(new RegExp((("\\{" + _local5) + "\\}"), "g"), _local4[_local5]); _local5++; }; return (_arg1); } public static function trimArrayElements(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:int; var _local5:int; if (((!((_arg1 == ""))) && (!((_arg1 == null))))){ _local3 = _arg1.split(_arg2); _local4 = _local3.length; _local5 = 0; while (_local5 < _local4) { _local3[_local5] = StringUtil.trim(_local3[_local5]); _local5++; }; if (_local4 > 0){ _arg1 = _local3.join(_arg2); }; }; return (_arg1); } } }//package mx.utils package mx.utils { import flash.utils.*; public class Base64Encoder { public static const MAX_BUFFER_SIZE:uint = 32767; private static const ALPHABET_CHAR_CODES:Array = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47]; public static const CHARSET_UTF_8:String = "UTF-8"; private static const ESCAPE_CHAR_CODE:Number = 61; public static var newLine:int = 10; private var _line:uint; private var _count:uint; private var _buffers:Array; public var insertNewLines:Boolean = true; private var _work:Array; public function Base64Encoder(){ _work = [0, 0, 0]; super(); reset(); } public function flush():String{ if (_count > 0){ encodeBlock(); }; var _local1:String = drain(); reset(); return (_local1); } public function toString():String{ return (flush()); } public function reset():void{ _buffers = []; _buffers.push([]); _count = 0; _line = 0; _work[0] = 0; _work[1] = 0; _work[2] = 0; } public function encodeBytes(_arg1:ByteArray, _arg2:uint=0, _arg3:uint=0):void{ if (_arg3 == 0){ _arg3 = _arg1.length; }; var _local4:uint = _arg1.position; _arg1.position = _arg2; var _local5:uint = _arg2; var _local6:uint = (_arg2 + _arg3); if (_local6 > _arg1.length){ _local6 = _arg1.length; }; while (_local5 < _local6) { _work[_count] = _arg1[_local5]; _count++; if ((((_count == _work.length)) || (((_local6 - _local5) == 1)))){ encodeBlock(); _count = 0; _work[0] = 0; _work[1] = 0; _work[2] = 0; }; _local5++; }; _arg1.position = _local4; } public function encode(_arg1:String, _arg2:uint=0, _arg3:uint=0):void{ if (_arg3 == 0){ _arg3 = _arg1.length; }; var _local4:uint = _arg2; var _local5:uint = (_arg2 + _arg3); if (_local5 > _arg1.length){ _local5 = _arg1.length; }; while (_local4 < _local5) { _work[_count] = _arg1.charCodeAt(_local4); _count++; if ((((_count == _work.length)) || (((_local5 - _local4) == 1)))){ encodeBlock(); _count = 0; _work[0] = 0; _work[1] = 0; _work[2] = 0; }; _local4++; }; } private function encodeBlock():void{ var _local1:Array = (_buffers[(_buffers.length - 1)] as Array); if (_local1.length >= MAX_BUFFER_SIZE){ _local1 = []; _buffers.push(_local1); }; _local1.push(ALPHABET_CHAR_CODES[((_work[0] & 0xFF) >> 2)]); _local1.push(ALPHABET_CHAR_CODES[(((_work[0] & 3) << 4) | ((_work[1] & 240) >> 4))]); if (_count > 1){ _local1.push(ALPHABET_CHAR_CODES[(((_work[1] & 15) << 2) | ((_work[2] & 192) >> 6))]); } else { _local1.push(ESCAPE_CHAR_CODE); }; if (_count > 2){ _local1.push(ALPHABET_CHAR_CODES[(_work[2] & 63)]); } else { _local1.push(ESCAPE_CHAR_CODE); }; if (insertNewLines){ if ((_line = (_line + 4)) == 76){ _local1.push(newLine); _line = 0; }; }; } public function encodeUTFBytes(_arg1:String):void{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); _local2.position = 0; encodeBytes(_local2); } public function drain():String{ var _local3:Array; var _local1 = ""; var _local2:uint; while (_local2 < _buffers.length) { _local3 = (_buffers[_local2] as Array); _local1 = (_local1 + String.fromCharCode.apply(null, _local3)); _local2++; }; _buffers = []; _buffers.push([]); return (_local1); } } }//package mx.utils package mx.utils { import flash.utils.*; import mx.resources.*; public class Base64Decoder { private static const ESCAPE_CHAR_CODE:Number = 61; private static const inverse:Array = [64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64]; private var filled:int = 0; private var data:ByteArray; private var count:int = 0; private var work:Array; private var resourceManager:IResourceManager; public function Base64Decoder(){ work = [0, 0, 0, 0]; resourceManager = ResourceManager.getInstance(); super(); data = new ByteArray(); } private static function copyByteArray(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint=0):void{ var _local4:int = _arg1.position; _arg1.position = 0; _arg2.position = 0; var _local5:uint; while ((((_arg1.bytesAvailable > 0)) && ((_local5 < _arg3)))) { _arg2.writeByte(_arg1.readByte()); _local5++; }; _arg1.position = _local4; _arg2.position = 0; } public function flush():ByteArray{ var _local1:String; if (count > 0){ _local1 = resourceManager.getString("utils", "partialBlockDropped", [count]); throw (new Error(_local1)); }; return (drain()); } public function reset():void{ data = new ByteArray(); count = 0; filled = 0; } public function decode(_arg1:String):void{ var _local3:Number; var _local2:uint; for (;_local2 < _arg1.length;_local2++) { _local3 = _arg1.charCodeAt(_local2); if (_local3 == ESCAPE_CHAR_CODE){ var _local4 = count++; work[_local4] = -1; } else { if (inverse[_local3] != 64){ _local4 = count++; work[_local4] = inverse[_local3]; } else { continue; }; }; if (count == 4){ count = 0; data.writeByte(((work[0] << 2) | ((work[1] & 0xFF) >> 4))); filled++; if (work[2] == -1){ break; }; data.writeByte(((work[1] << 4) | ((work[2] & 0xFF) >> 2))); filled++; if (work[3] == -1){ break; }; data.writeByte(((work[2] << 6) | work[3])); filled++; }; }; } public function toByteArray():ByteArray{ var _local1:ByteArray = flush(); reset(); return (_local1); } public function drain():ByteArray{ var _local1:ByteArray = new ByteArray(); copyByteArray(data, _local1, filled); filled = 0; return (_local1); } } }//package mx.utils package { public class _CompiledResourceBundleInfo { public static function get compiledLocales():Array{ return (["en_US"]); } public static function get compiledResourceBundleNames():Array{ return (["Communication", "utils"]); } } }//package package shared.cryptography { import flash.utils.*; import __AS3__.vec.*; import flash.crypto.*; public class Random { private static const POOL_SIZE:int = 0x0400; private static const STATE_SIZE:int = 0x0100; private static var s_PoolWritePosition:uint = 0; private static var s_PoolReadPosition:uint = 0; private static var s_PoolData:Vector. = new Vector.(POOL_SIZE, true); ; private var m_StateA:uint = 0; private var m_StateB:uint = 0; private var m_StateC:uint = 0; private var m_StateM:Vector.; private var m_Output:Vector.; private var m_OutputPosition:uint = 0x0100; public function Random(){ this.m_Output = new Vector.(STATE_SIZE, true); this.m_StateM = new Vector.(STATE_SIZE, true); super(); this.randomInit(); } private static function s_PoolGetUnsignedInt():uint{ return (s_PoolData[(s_PoolReadPosition++ % POOL_SIZE)]); } private static function s_Mix(_arg1:Vector.):void{ _arg1[0] = (_arg1[0] ^ (_arg1[1] << 11)); _arg1[3] = (_arg1[3] + _arg1[0]); _arg1[1] = (_arg1[1] + _arg1[2]); _arg1[1] = (_arg1[1] ^ (_arg1[2] >>> 2)); _arg1[4] = (_arg1[4] + _arg1[1]); _arg1[2] = (_arg1[2] + _arg1[3]); _arg1[2] = (_arg1[2] ^ (_arg1[3] << 8)); _arg1[5] = (_arg1[5] + _arg1[2]); _arg1[3] = (_arg1[3] + _arg1[4]); _arg1[3] = (_arg1[3] ^ (_arg1[4] >>> 16)); _arg1[6] = (_arg1[6] + _arg1[3]); _arg1[4] = (_arg1[4] + _arg1[5]); _arg1[4] = (_arg1[4] ^ (_arg1[5] << 10)); _arg1[7] = (_arg1[7] + _arg1[4]); _arg1[5] = (_arg1[5] + _arg1[6]); _arg1[5] = (_arg1[5] ^ (_arg1[6] >>> 4)); _arg1[0] = (_arg1[0] + _arg1[5]); _arg1[6] = (_arg1[6] + _arg1[7]); _arg1[6] = (_arg1[6] ^ (_arg1[7] << 8)); _arg1[1] = (_arg1[1] + _arg1[6]); _arg1[7] = (_arg1[7] + _arg1[0]); _arg1[7] = (_arg1[7] ^ (_arg1[0] >>> 9)); _arg1[2] = (_arg1[2] + _arg1[7]); _arg1[0] = (_arg1[0] + _arg1[1]); } public static function s_PoolPutUnsignedInt(_arg1:uint):void{ s_PoolData[(s_PoolWritePosition++ % POOL_SIZE)] = _arg1; } private static function s_PoolInitialize():void{ var i:* = 0; const Buffer:* = null; i = 0; i = (i + 1); var _local2 = i; s_PoolData[_local2] = new Date().time; i = (i + 1); var _local3 = i; s_PoolData[_local3] = getTimer(); try { while (i < POOL_SIZE) { Buffer = generateRandomBytes(0x0400); while ((((i < POOL_SIZE)) && ((Buffer.bytesAvailable >= 4)))) { i = (i + 1); var _local4 = i; s_PoolData[_local4] = Buffer.readUnsignedInt(); }; }; } catch(e) { while (i < POOL_SIZE) { i = (i + 1); var _local5 = i; s_PoolData[_local5] = uint(Math.random()); }; }; } private function randomInit():void{ var _local1:int; var _local2:int; var _local3:Vector. = new Vector.(8, true); _local1 = 0; while (_local1 < 8) { _local3[_local1] = 2654435769; _local1++; }; _local1 = 0; while (_local1 < 4) { s_Mix(_local3); _local1++; }; _local1 = 0; while (_local1 < STATE_SIZE) { _local2 = 0; while (_local2 < 8) { _local3[_local2] = (_local3[_local2] + s_PoolGetUnsignedInt()); _local2++; }; s_Mix(_local3); _local2 = 0; while (_local2 < 8) { this.m_StateM[(_local1 + _local2)] = _local3[_local2]; _local2++; }; _local1 = (_local1 + 8); }; _local1 = 0; while (_local1 < STATE_SIZE) { _local2 = 0; while (_local2 < 8) { _local3[_local2] = (_local3[_local2] + this.m_StateM[(_local1 + _local2)]); _local2++; }; s_Mix(_local3); _local2 = 0; while (_local2 < 8) { this.m_StateM[(_local1 + _local2)] = _local3[_local2]; _local2++; }; _local1 = (_local1 + 8); }; this.randomUpdate(); } private function randomUpdate():void{ var _local2:uint; var _local3:uint; this.m_StateC = (this.m_StateC + 1); this.m_StateB = (this.m_StateB + this.m_StateC); var _local1:int; while (_local1 < STATE_SIZE) { switch ((_local1 % 4)){ case 0: this.m_StateA = (this.m_StateA ^ (this.m_StateA << 13)); break; case 1: this.m_StateA = (this.m_StateA ^ (this.m_StateA >>> 6)); break; case 2: this.m_StateA = (this.m_StateA ^ (this.m_StateA << 2)); break; case 3: this.m_StateA = (this.m_StateA ^ (this.m_StateA >>> 16)); break; }; _local2 = this.m_StateM[_local1]; this.m_StateA = (this.m_StateM[((_local1 + 128) % STATE_SIZE)] + this.m_StateA); this.m_StateM[_local1] = ((this.m_StateM[((_local2 >>> 2) % STATE_SIZE)] + this.m_StateA) + this.m_StateB); _local3 = this.m_StateM[_local1]; this.m_Output[_local1] = (this.m_StateM[((_local3 >>> 10) % STATE_SIZE)] + _local2); this.m_StateB = this.m_Output[_local1]; _local1++; }; this.m_OutputPosition = 0; } public function getUnsignedInt():uint{ if (this.m_OutputPosition >= STATE_SIZE){ this.randomUpdate(); }; return (this.m_Output[this.m_OutputPosition++]); } public function getBytes(_arg1:ByteArray, _arg2:uint):void{ var _local6:uint; var _local3:uint = (_arg2 >>> 2); var _local4:uint = (_arg2 % 4); var _local5:uint = _local3; while (_local5 > 0) { if (this.m_OutputPosition >= STATE_SIZE){ this.randomUpdate(); }; _arg1.writeUnsignedInt(this.m_Output[this.m_OutputPosition++]); _local5--; }; if (_local4 > 0){ if (this.m_OutputPosition >= STATE_SIZE){ this.randomUpdate(); }; _local6 = this.m_Output[this.m_OutputPosition++]; switch (_local4){ case 3: _arg1.writeByte((_local6 & 0xFFFF)); _local6 = (_local6 >>> 8); case 2: _arg1.writeByte((_local6 & 0xFFFF)); _local6 = (_local6 >>> 8); case 1: _arg1.writeByte((_local6 & 0xFFFF)); }; }; } s_PoolInitialize(); } }//package shared.cryptography package shared.utility { public namespace ns_heap_internal; }//package shared.utility package shared.utility { import __AS3__.vec.*; public class Heap { private var m_Length:int = 0; private var m_Heap:Vector. = null; public function Heap(_arg1:int=0){ this.m_Heap = new Vector.(_arg1); } public function addItem(_arg1:HeapItem, _arg2:int):HeapItem{ var _local3:int; if (_arg1 != null){ _local3 = this.m_Length; _arg1.ns_heap_internal::m_HeapKey = _arg2; _arg1.ns_heap_internal::m_HeapParent = this; _arg1.ns_heap_internal::m_HeapPosition = _local3; this.m_Heap[_local3] = _arg1; this.m_Length++; this.minHeapify(_local3); }; return (_arg1); } public function updateKey(_arg1:HeapItem, _arg2:int):HeapItem{ if (((((((!((_arg1 == null))) && ((_arg1.ns_heap_internal::m_HeapParent == this)))) && ((_arg1.ns_heap_internal::m_HeapPosition < this.m_Length)))) && (!((_arg1.ns_heap_internal::m_HeapKey == _arg2))))){ _arg1.ns_heap_internal::m_HeapKey = _arg2; this.minHeapify(_arg1.ns_heap_internal::m_HeapPosition); }; return (_arg1); } public function get length():int{ return (this.m_Length); } private function minHeapify(_arg1:int, _arg2:Boolean=true):void{ var _local3:int = _arg1; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:HeapItem; while (((_arg2) && ((_local3 > 0)))) { _local4 = (((_local3 + 1) >>> 1) - 1); if (this.m_Heap[_local3].ns_heap_internal::m_HeapKey < this.m_Heap[_local4].ns_heap_internal::m_HeapKey){ _local8 = this.m_Heap[_local4]; this.m_Heap[_local4] = this.m_Heap[_local3]; this.m_Heap[_local4].ns_heap_internal::m_HeapPosition = _local4; this.m_Heap[_local3] = _local8; this.m_Heap[_local3].ns_heap_internal::m_HeapPosition = _local3; _local3 = _local4; } else { _local3 = 0; }; }; while (true) { _local5 = (((_local3 + 1) << 1) - 1); _local6 = (_local5 + 1); _local7 = _local3; if ((((_local5 < this.m_Length)) && ((this.m_Heap[_local5].ns_heap_internal::m_HeapKey < this.m_Heap[_local7].ns_heap_internal::m_HeapKey)))){ _local7 = _local5; }; if ((((_local6 < this.m_Length)) && ((this.m_Heap[_local6].ns_heap_internal::m_HeapKey < this.m_Heap[_local7].ns_heap_internal::m_HeapKey)))){ _local7 = _local6; }; if (_local7 > _local3){ _local8 = this.m_Heap[_local3]; this.m_Heap[_local3] = this.m_Heap[_local7]; this.m_Heap[_local3].ns_heap_internal::m_HeapPosition = _local3; this.m_Heap[_local7] = _local8; this.m_Heap[_local7].ns_heap_internal::m_HeapPosition = _local7; _local3 = _local7; } else { break; }; }; } public function peekMinItem():HeapItem{ return (((this.m_Length)>0) ? this.m_Heap[0] : null); } public function extractMinItem():HeapItem{ if (this.m_Length <= 0){ return (null); }; var _local1:HeapItem = this.m_Heap[0]; _local1.ns_heap_internal::m_HeapParent = null; _local1.ns_heap_internal::m_HeapPosition = -1; this.m_Length--; this.m_Heap[0] = this.m_Heap[this.m_Length]; this.m_Heap[this.m_Length] = null; this.minHeapify(0); return (_local1); } public function clear(_arg1:Boolean=true):void{ var _local2:HeapItem; var _local3:int; while (_local3 < this.m_Length) { if (_local2 != null){ _local2.ns_heap_internal::m_HeapPosition = -1; _local2.ns_heap_internal::m_HeapParent = null; }; _local3++; }; this.m_Length = 0; if (_arg1){ this.m_Heap.length = 0; }; } } }//package shared.utility package shared.utility { import flash.events.*; import flash.net.*; public class SharedObjectManager { protected static const LISTING_NAME:String = "listing"; public static const STORAGE_UNLIMITED:int = 0xA00001; protected static var s_Instance:SharedObjectManager = null; protected static var s_SharedObject:SharedObject = null; protected static var s_AllocatedSize:int = -2147483648; protected var m_Secure:Boolean = false; protected var m_SharedObject:SharedObject = null; protected var m_LocalPath:String = null; public function SharedObjectManager(_arg1:String="/", _arg2:Boolean=false){ var a_LocalPath:String = _arg1; var a_Secure:Boolean = _arg2; super(); this.m_LocalPath = a_LocalPath; this.m_Secure = a_Secure; this.m_SharedObject = null; try { this.m_SharedObject = SharedObject.getLocal(LISTING_NAME, this.m_LocalPath, this.m_Secure); } catch(_Error) { }; } public static function s_AllocateSpace(_arg1:int=0xA00001, _arg2:Function=null, _arg3:Boolean=false):void{ var a_RequestedSize:Number = _arg1; var a_Callback = _arg2; var a_Rerequest:Boolean = _arg3; var SafeCallback:* = ((a_Callback)!=null) ? a_Callback : function (_arg1:Boolean):void{ }; if (s_SharedObject != null){ SafeCallback(false); return; }; var SafeSize:* = Math.abs(a_RequestedSize); if (((((!((s_AllocatedSize == int.MIN_VALUE))) && (!(a_Rerequest)))) || ((SafeSize <= s_AllocatedSize)))){ SafeCallback((SafeSize <= s_AllocatedSize)); return; }; s_AllocateSpaceInternal(SafeSize, SafeCallback, true); } public static function s_SharedObjectsAvailable():Boolean{ return ((s_AllocatedSize > -1)); } protected static function s_AllocateSpaceInternal(_arg1:int, _arg2:Function, _arg3:Boolean=true):void{ var Name:* = null; var Listener:* = null; var a_RequestedSize:* = _arg1; var a_Callback:* = _arg2; var a_FirstPass:Boolean = _arg3; var FlushStatus:* = null; try { Name = new Date().time.toString(16); s_SharedObject = SharedObject.getLocal(Name, "/"); FlushStatus = s_SharedObject.flush(a_RequestedSize); } catch(e:Error) { FlushStatus = null; }; if (FlushStatus == SharedObjectFlushStatus.FLUSHED){ s_SharedObject.clear(); s_SharedObject = null; s_AllocatedSize = Math.max(s_AllocatedSize, a_RequestedSize); a_Callback(true); } else { if (FlushStatus == SharedObjectFlushStatus.PENDING){ Listener = function (_arg1:NetStatusEvent):void{ var _local2:Boolean; if (s_SharedObject != null){ s_SharedObject.removeEventListener(NetStatusEvent.NET_STATUS, Listener); s_SharedObject.clear(); s_SharedObject = null; }; if (((((a_FirstPass) && ((a_RequestedSize >= STORAGE_UNLIMITED)))) && (!(checkPlayerVersion(10, 1, 0, 0))))){ s_AllocateSpaceInternal(a_RequestedSize, a_Callback, false); } else { _local2 = (_arg1.info.code == "SharedObject.Flush.Success"); s_AllocatedSize = ((_local2) ? Math.max(s_AllocatedSize, a_RequestedSize) : -1); a_Callback(_local2); }; }; s_SharedObject.addEventListener(NetStatusEvent.NET_STATUS, Listener); } else { if (s_SharedObject != null){ s_SharedObject.clear(); s_SharedObject = null; }; s_AllocatedSize = -1; a_Callback(false); }; }; } public static function s_GetInstance():SharedObjectManager{ if (s_Instance == null){ s_Instance = new (SharedObjectManager)(); }; return (s_Instance); } public function exists(_arg1:String):Boolean{ return (((((((!((_arg1 == null))) && ((_arg1.length > 0)))) && (!((this.m_SharedObject == null))))) && (this.m_SharedObject.data.hasOwnProperty(_arg1)))); } public function clear(_arg1:String, _arg2:Boolean=false):void{ var o:* = null; var a_Name:* = _arg1; var a_IncludeProtected:Boolean = _arg2; if ((((a_Name == null)) || ((a_Name.length < 1)))){ throw (new ArgumentError(("SharedObjectManager.clear: Invalid name: " + a_Name))); }; if (this.m_SharedObject != null){ if (((!(this.exists(a_Name))) || (((!(a_IncludeProtected)) && (this.m_SharedObject.data[a_Name].isProtected))))){ return; }; }; try { o = SharedObject.getLocal(a_Name, this.m_LocalPath, this.m_Secure); if (o != null){ o.clear(); }; if (this.m_SharedObject != null){ delete this.m_SharedObject.data[a_Name]; }; } catch(e:Error) { }; } public function getListing(_arg1:Boolean=false):Array{ var _local3:String; var _local2:Array = []; if (this.m_SharedObject != null){ for (_local3 in this.m_SharedObject.data) { if (((!(this.m_SharedObject.data[_local3].isProtected)) || (_arg1))){ _local2.push(_local3); }; }; }; return (_local2); } public function get localPath():String{ return (this.m_LocalPath); } public function getLocal(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false):SharedObject{ if ((((_arg1 == null)) || ((_arg1.length < 1)))){ throw (new ArgumentError(("SharedObjectManager.getLocal: Invalid name: " + _arg1))); }; if (this.m_SharedObject != null){ if (((!(_arg2)) && (!(this.exists(_arg1))))){ return (null); }; this.m_SharedObject.data[_arg1] = { name:_arg1, lastAccess:new Date().time, isProtected:_arg3 }; }; return (SharedObject.getLocal(_arg1, this.m_LocalPath, this.m_Secure)); } public function get secure():Boolean{ return (this.m_Secure); } public function syncListing():void{ try { if (this.m_SharedObject != null){ this.m_SharedObject.flush(); }; } catch(e:Error) { }; } } }//package shared.utility package shared.utility { import flash.system.*; public function checkPlayerVersion(_arg1:int, _arg2:int, _arg3:int, _arg4:int):Boolean{ var _local5:RegExp; _local5 = /^\w* (\d*),(\d*),(\d*),(\d*)$/; var _local6:Object = _local5.exec(Capabilities.version); if (_local6 == null){ return (false); }; if (_local6[1] > _arg1){ return (true); }; if (_local6[1] == _arg1){ if (_local6[2] > _arg2){ return (true); }; if (_local6[2] == _arg2){ if (_local6[3] > _arg3){ return (true); }; if (_local6[3] == _arg3){ if (_local6[4] >= _arg4){ return (true); }; }; }; }; return (false); } }//package shared.utility package shared.utility { import flash.utils.*; import __AS3__.vec.*; public class HeapDictionaryWrapper { private var m_Dictionary:Dictionary = null; private var m_Keys:Vector. = null; private var m_Heap:Heap = null; public function HeapDictionaryWrapper(){ this.clear(); } public function remove(_arg1):Boolean{ var _local2:HeapDictionaryItem; var _local3:uint; if ((_arg1 in this.m_Dictionary)){ _local2 = (this.m_Dictionary[_arg1] as HeapDictionaryItem); _local2.data = undefined; delete this.m_Dictionary[_arg1]; _local3 = this.m_Keys.indexOf(_arg1, 0); this.m_Keys.splice(_local3, 1); this.m_Heap.updateKey(_local2, int.MIN_VALUE); this.m_Heap.extractMinItem(); return (true); }; return (false); } public function get length():uint{ return (this.m_Keys.length); } public function peekMinItem():Object{ return ((((this.m_Heap.peekMinItem() == null)) ? null : HeapDictionaryItem(this.m_Heap.peekMinItem()).data)); } public function extractMinItem():Object{ var _local1:Object; var _local2:HeapDictionaryItem; _local1 = this.peekMinItemKey(); _local2 = (this.m_Dictionary[_local1] as HeapDictionaryItem); var _local3:Object = _local2.data; this.remove(_local1); return (_local3); } public function put(_arg1, _arg2:Object, _arg3:int=-2147483648):void{ var _local4:HeapDictionaryItem; if ((_arg1 in this.m_Dictionary)){ _local4 = (this.m_Dictionary[_arg1] as HeapDictionaryItem); this.m_Heap.updateKey(_local4, _arg3); _local4.data = _arg2; } else { _local4 = new HeapDictionaryItem(_arg1, _arg2); this.m_Dictionary[_arg1] = _local4; this.m_Keys.push(_arg1); this.m_Heap.addItem(_local4, _arg3); }; } public function clear():void{ this.m_Dictionary = new Dictionary(); this.m_Keys = new Vector.(); this.m_Heap = new Heap(); } public function peekMinItemKey():Object{ return ((((this.m_Heap.peekMinItem() == null)) ? null : HeapDictionaryItem(this.m_Heap.peekMinItem()).key)); } public function get(_arg1, _arg2:int=-2147483648){ var _local3:HeapDictionaryItem; if ((_arg1 in this.m_Dictionary)){ _local3 = (this.m_Dictionary[_arg1] as HeapDictionaryItem); this.m_Heap.updateKey(_local3, _arg2); return (_local3.data); }; return (null); } public function updateHeapPriority(_arg1:Object, _arg2:int):void{ var _local3:HeapDictionaryItem = (this.m_Dictionary[_arg1] as HeapDictionaryItem); if (_local3 != null){ this.m_Heap.updateKey(_local3, _arg2); }; } public function get keys():Vector.{ return (this.m_Keys.concat()); } public function contains(_arg1):Boolean{ return ((_arg1 in this.m_Dictionary)); } } }//package shared.utility class HeapDictionaryItem extends HeapItem { private var m_Data; private var m_Key = null; public function HeapDictionaryItem(_arg1, _arg2){ this.m_Key = _arg1; this.m_Data = _arg2; } public function get data(){ return (this.m_Data); } public function set data(_arg1):void{ this.m_Data = _arg1; } public function get key(){ return (this.m_Key); } } package shared.utility { public class HeapItem { ns_heap_internal var m_HeapKey:int = 0; ns_heap_internal var m_HeapPosition:int = 0; ns_heap_internal var m_HeapParent:Heap = null; public function reset():void{ this.ns_heap_internal::m_HeapKey = 0; this.ns_heap_internal::m_HeapPosition = 0; this.ns_heap_internal::m_HeapParent = null; } } }//package shared.utility package shared.utility { import flash.external.*; public class URLHelper { public static function s_GetBrowserCurrentBaseUrl():String{ var _local1:String = String(ExternalInterface.call(" function(){ return window.location.protocol + \"//\" + window.location.hostname + window.location.pathname;}")); return (_local1); } public static function s_GetBrowserCurrentUrl():String{ var _local1:String = String(ExternalInterface.call(" function(){ return window.location.href.toString();}")); return (_local1); } public static function s_NoCache(_arg1:String):String{ var _local2 = "0123456789abcdef"; var _local3 = ""; var _local4:int; while (_local4 < 32) { _local3 = (_local3 + _local2.charAt(int((Math.random() * _local2.length)))); _local4++; }; if (_arg1.indexOf("?") > 0){ return (((_arg1 + "&nocache=") + _local3)); }; return (((_arg1 + "?nocache=") + _local3)); } public static function s_GetBasename(_arg1:String):String{ var _local2:String = _arg1; if (_local2.charAt((_local2.length - 1)) == "/"){ _local2 = _local2.substr(0, (_local2.length - 1)); }; var _local3:int = _local2.lastIndexOf("/"); if (_local3 < 0){ throw (new ArgumentError("URLHelpher.s_GetBaseName: No path delimiter found.")); }; return (_local2.substr((_local3 + 1))); } public static function s_GetBrowserCurrentQuerystring():String{ var _local1:String = String(ExternalInterface.call(" function(){ return window.location.search.toString();}")); if (_local1.charAt(0) == "?"){ _local1 = _local1.substr(1); }; return (_local1); } public static function s_GetPath(_arg1:String):String{ var _local2:int = _arg1.lastIndexOf("/"); if (_local2 < 0){ throw (new ArgumentError("URLHelpher.s_GetPath: No path delimiter found.")); }; return (_arg1.substr(0, _local2)); } } }//package shared.utility package loader.popUp { import mx.core.*; public class LoaderProgress_BAR_BACKGROUND_CLASS extends BitmapAsset { } }//package loader.popUp package loader.popUp.dialogClasses { import mx.core.*; public class Button_SKIN_UP_LEFT_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import flash.display.*; import flash.events.*; import loader.popUp.*; import flash.geom.*; import flash.text.*; public class DialogBase extends Sprite { public static const BUTTON_OKAY:uint = 8; private static const DIALOG_LAYOUT:Object = { x:0, y:0, backgroundAlpha:0.5, backgroundColour:658961, borderAlpha:1, borderColour:8089164, borderThickness:1, modalBackgroundAlpha:0.5, modalBackgroundColour:1580578, gapHorizontal:2, gapVertical:2 }; public static const BUTTON_CLOSE:uint = 2; private static const FOOTER_LAYOUT:Object = { x:(DIALOG_LAYOUT.borderThickness + DIALOG_LAYOUT.gapHorizontal), y:(DIALOG_LAYOUT.borderThickness + DIALOG_LAYOUT.gapVertical), height:26, gap:32, padding:2 }; protected static const CONTENT_LAYOUT:Object = { x:(DIALOG_LAYOUT.borderThickness + DIALOG_LAYOUT.gapHorizontal), y:NaN, height:NaN }; private static const TITLE_LAYOUT:Object = { x:(DIALOG_LAYOUT.borderThickness + 2), y:NaN, height:16, fontFamily:"Verdana", fontSize:12, fontColour:13221291, fontBold:true, fontItalic:false }; public static const MARGIN_HERIZONTAL:Number = 0; public static const BUTTON_CONTINUE:uint = 4; private static const BUTTON_DATA:Array = [{ data:BUTTON_OKAY, label:"Okay" }, { data:BUTTON_CONTINUE, label:"Continue" }, { data:BUTTON_COPY, label:"Copy" }, { data:BUTTON_CLOSE, label:"Close" }, { data:BUTTON_CANCEL, label:"Cancel" }]; private static const BUTTON_MASK:uint = (((BUTTON_CANCEL | BUTTON_CLOSE) | BUTTON_CONTINUE) | BUTTON_OKAY); private static const HEADER_LAYOUT:Object = { x:(DIALOG_LAYOUT.borderThickness + DIALOG_LAYOUT.gapHorizontal), y:(DIALOG_LAYOUT.borderThickness + DIALOG_LAYOUT.gapVertical), height:26 }; public static const BUTTON_NONE:uint = 0; public static const BUTTON_CANCEL:uint = 1; public static const BUTTON_COPY:uint = 16; public static const MARGIN_VERTICAL:Number = 8; private var m_UIFooter:Sprite = null; private var m_DialogWidth:uint = 300; private var m_UITitle:TextField = null; private var m_UIHeader:Sprite = null; private var m_UIModalBackground:Shape = null; private var m_UIDialogBackground:Shape = null; public function DialogBase(_arg1:String, _arg2:uint, _arg3:uint=300){ this.m_DialogWidth = _arg3; HEADER_LAYOUT.width = ((this.m_DialogWidth - (2 * DIALOG_LAYOUT.borderThickness)) - (2 * DIALOG_LAYOUT.gapHorizontal)); TITLE_LAYOUT.width = ((HEADER_LAYOUT.width - (2 * DIALOG_LAYOUT.borderThickness)) - 4); FOOTER_LAYOUT.width = HEADER_LAYOUT.width; CONTENT_LAYOUT.width = HEADER_LAYOUT.width; this.initialiseUI(_arg1, _arg2); addEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage); addEventListener(Event.ADDED_TO_STAGE, this.onLayoutChange); addEventListener(Event.REMOVED_FROM_STAGE, this.onRemovedFromStage); } private function onRemovedFromStage(_arg1:Event):void{ if (_arg1 != null){ removeEventListener(Event.REMOVED_FROM_STAGE, this.onRemovedFromStage); stage.removeEventListener(Event.RESIZE, this.onLayoutChange); }; } public function get title():String{ return (this.m_UITitle.text); } private function onAddedToStage(_arg1:Event):void{ if (_arg1 != null){ removeEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage); removeEventListener(Event.ADDED_TO_STAGE, this.onLayoutChange); stage.addEventListener(Event.RESIZE, this.onLayoutChange); }; } private function initialiseUI(_arg1:String, _arg2:uint):void{ var _local4:int; var _local5:int; var _local6:Number; var _local7:Number; var _local8:Button; var _local9:DisplayObject; var _local3:Graphics; this.m_UIModalBackground = new Shape(); addChild(this.m_UIModalBackground); this.m_UIDialogBackground = new Shape(); addChild(this.m_UIDialogBackground); this.m_UIHeader = new Sprite(); _local3 = this.m_UIHeader.graphics; _local3.clear(); _local3.beginFill(DIALOG_LAYOUT.backgroundColour, DIALOG_LAYOUT.backgroundAlpha); _local3.lineStyle(DIALOG_LAYOUT.borderThickness, DIALOG_LAYOUT.borderColour, DIALOG_LAYOUT.borderAlpha); _local3.drawRect(0, 0, (HEADER_LAYOUT.width - DIALOG_LAYOUT.borderThickness), (HEADER_LAYOUT.height - DIALOG_LAYOUT.borderThickness)); _local3.lineStyle(NaN, 0, NaN); _local3.endFill(); addChild(this.m_UIHeader); this.m_UITitle = new TextField(); this.m_UITitle.autoSize = TextFieldAutoSize.NONE; this.m_UITitle.defaultTextFormat = new TextFormat(TITLE_LAYOUT.fontFamily, TITLE_LAYOUT.fontSize, TITLE_LAYOUT.fontColour, TITLE_LAYOUT.fontBold, TITLE_LAYOUT.fontItalic); this.m_UITitle.selectable = false; this.m_UITitle.width = TITLE_LAYOUT.width; this.m_UITitle.x = TITLE_LAYOUT.x; this.m_UITitle.y = ((HEADER_LAYOUT.height - TITLE_LAYOUT.height) / 2); if (_arg1 != null){ this.m_UITitle.text = _arg1; }; this.m_UIHeader.addChild(this.m_UITitle); if (_arg2 != BUTTON_NONE){ this.m_UIFooter = new Sprite(); _local3 = this.m_UIFooter.graphics; _local3.clear(); _local3.beginFill(DIALOG_LAYOUT.backgroundColour, DIALOG_LAYOUT.backgroundAlpha); _local3.lineStyle(DIALOG_LAYOUT.borderThickness, DIALOG_LAYOUT.borderColour, DIALOG_LAYOUT.borderAlpha); _local3.drawRect(0, 0, (FOOTER_LAYOUT.width - DIALOG_LAYOUT.borderThickness), (FOOTER_LAYOUT.height - DIALOG_LAYOUT.borderThickness)); _local3.lineStyle(NaN, 0, NaN); _local3.endFill(); addChild(this.m_UIFooter); _local4 = 0; _local5 = 0; _local6 = 0; _local4 = 0; while (_local4 < BUTTON_DATA.length) { if ((_arg2 & BUTTON_DATA[_local4].data) != 0){ _local8 = new Button(BUTTON_DATA[_local4].label); _local8.data = BUTTON_DATA[_local4].data; _local8.addEventListener(MouseEvent.CLICK, this.onButtonClick); this.m_UIFooter.addChild(_local8); _local5++; _local6 = (_local6 + _local8.width); }; _local4++; }; if (_local5 > 1){ _local6 = (_local6 + ((_local5 - 1) * FOOTER_LAYOUT.gap)); }; _local7 = Math.floor((((FOOTER_LAYOUT.width - (2 * FOOTER_LAYOUT.padding)) - _local6) / 2)); _local4 = 0; while (_local4 < _local5) { _local9 = this.m_UIFooter.getChildAt(_local4); _local9.x = _local7; _local9.y = ((FOOTER_LAYOUT.height - _local9.height) / 2); _local7 = (_local7 + (_local9.width + FOOTER_LAYOUT.gap)); _local4++; }; }; } public function get buttonFlags():uint{ var _local2:int; var _local3:Button; var _local1:uint; if (this.m_UIFooter != null){ _local2 = (this.m_UIFooter.numChildren - 1); while (_local2 >= 0) { _local3 = (this.m_UIFooter.getChildAt(_local2) as Button); if (_local3 != null){ _local1 = (_local1 | _local3.data); }; _local2--; }; }; return (_local1); } protected function layoutContent(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ } protected function calculateContentSize(_arg1:Number, _arg2:Number):Rectangle{ return (new Rectangle(0, 0, _arg1, _arg2)); } private function onButtonClick(_arg1:MouseEvent):void{ var _local2:CloseEvent; if (((!((_arg1 == null))) && ((_arg1.currentTarget is Button)))){ _local2 = new CloseEvent(CloseEvent.CLOSE, true, false); _local2.detail = Button(_arg1.currentTarget).data; dispatchEvent(_local2); }; } private function onLayoutChange(_arg1:Event):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Rectangle; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Graphics; if (_arg1 != null){ _local2 = stage.stageHeight; _local3 = stage.stageWidth; _local4 = CONTENT_LAYOUT.x; _local5 = ((HEADER_LAYOUT.y + HEADER_LAYOUT.height) + DIALOG_LAYOUT.gapVertical); _local6 = ((this.m_UIFooter)!=null) ? ((FOOTER_LAYOUT.y + FOOTER_LAYOUT.height) + DIALOG_LAYOUT.gapVertical) : FOOTER_LAYOUT.y; _local7 = this.calculateContentSize(CONTENT_LAYOUT.width, (((_local2 - (2 * MARGIN_VERTICAL)) - _local5) - _local6)); _local8 = ((_local5 + _local7.height) + _local6); _local9 = this.m_DialogWidth; _local10 = Math.round(((_local3 - _local9) / 2)); _local11 = Math.round(((_local2 - _local8) / 2)); _local12 = null; this.m_UIModalBackground.x = 0; this.m_UIModalBackground.y = 0; _local12 = this.m_UIModalBackground.graphics; _local12.clear(); _local12.beginFill(DIALOG_LAYOUT.modalBackgroundColour, DIALOG_LAYOUT.modalBackgroundAlpha); _local12.drawRect(0, 0, _local3, _local2); _local12.endFill(); this.m_UIDialogBackground.x = _local10; this.m_UIDialogBackground.y = _local11; _local12 = this.m_UIDialogBackground.graphics; _local12.clear(); _local12.beginFill(DIALOG_LAYOUT.backgroundColour, DIALOG_LAYOUT.backgroundAlpha); _local12.lineStyle(DIALOG_LAYOUT.borderThickness, DIALOG_LAYOUT.borderColour, DIALOG_LAYOUT.borderAlpha); _local12.drawRect(0, 0, (_local9 - DIALOG_LAYOUT.borderThickness), (_local8 - DIALOG_LAYOUT.borderThickness)); _local12.lineStyle(NaN, 0, NaN); _local12.endFill(); this.m_UIHeader.x = (_local10 + HEADER_LAYOUT.x); this.m_UIHeader.y = (_local11 + HEADER_LAYOUT.y); this.layoutContent((_local10 + _local4), (_local11 + _local5), _local7.width, _local7.height); if (this.m_UIFooter != null){ this.m_UIFooter.x = (_local10 + FOOTER_LAYOUT.x); this.m_UIFooter.y = (((_local11 + _local8) - FOOTER_LAYOUT.y) - FOOTER_LAYOUT.height); setChildIndex(this.m_UIFooter, (numChildren - 1)); }; }; } } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class Button_SKIN_DOWN_LEFT_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class ScrollBar_SKIN_UP_DOWN_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class Button_SKIN_DISABLED_LEFT_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class Button_SKIN_DOWN_CENTER_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import flash.display.*; import flash.geom.*; import flash.text.*; public class Button extends SimpleButton { private static const SKIN_DISABLED_LEFT_CLASS:Class = Button_SKIN_DISABLED_LEFT_CLASS; private static const SKIN_DOWN_LEFT:BitmapData = Bitmap(new SKIN_DOWN_LEFT_CLASS()).bitmapData; private static const SKIN_UP_LEFT_CLASS:Class = Button_SKIN_UP_LEFT_CLASS; private static const SKIN_DISABLED_CENTER_CLASS:Class = Button_SKIN_DISABLED_CENTER_CLASS; private static const SKIN_DOWN_CENTER:BitmapData = Bitmap(new SKIN_DOWN_CENTER_CLASS()).bitmapData; private static const SKIN_OVER_LEFT:BitmapData = Bitmap(new SKIN_OVER_LEFT_CLASS()).bitmapData; private static const SKIN_DOWN_LEFT_CLASS:Class = Button_SKIN_DOWN_LEFT_CLASS; private static const SKIN_OVER_CENTER:BitmapData = Bitmap(new SKIN_OVER_CENTER_CLASS()).bitmapData; private static const SKIN_UP_CENTER_CLASS:Class = Button_SKIN_UP_CENTER_CLASS; private static const BUTTON_LAYOUT_DISABLED:Object = { paddingHorizontal:5, fontFamily:"Verdana", fontSize:10, fontColour:15904590, fontBold:true, fontItalic:false }; private static const BUTTON_LAYOUT:Object = { paddingHorizontal:5, fontFamily:"Verdana", fontSize:10, fontColour:15904590, fontBold:true, fontItalic:false }; private static const SKIN_DISABLED_LEFT:BitmapData = Bitmap(new SKIN_DISABLED_LEFT_CLASS()).bitmapData; private static const SKIN_DOWN_CENTER_CLASS:Class = Button_SKIN_DOWN_CENTER_CLASS; private static const SKIN_UP_LEFT:BitmapData = Bitmap(new SKIN_UP_LEFT_CLASS()).bitmapData; private static const SKIN_UP_CENTER:BitmapData = Bitmap(new SKIN_UP_CENTER_CLASS()).bitmapData; private static const SKIN_OVER_LEFT_CLASS:Class = Button_SKIN_OVER_LEFT_CLASS; private static const SKIN_DISABLED_CENTER:BitmapData = Bitmap(new SKIN_DISABLED_CENTER_CLASS()).bitmapData; private static const SKIN_OVER_CENTER_CLASS:Class = Button_SKIN_OVER_CENTER_CLASS; private var m_Label:String = null; private var m_Data:int = -1; public function Button(_arg1:String){ this.m_Label = _arg1; var _local2:Sprite = this.buildSkin(this.m_Label, SKIN_DOWN_LEFT, SKIN_DOWN_CENTER, null); var _local3:Sprite = this.buildSkin(this.m_Label, SKIN_OVER_LEFT, SKIN_OVER_CENTER, null); var _local4:Sprite = this.buildSkin(this.m_Label, SKIN_UP_LEFT, SKIN_UP_CENTER, null); super(_local4, _local3, _local2, _local3); } private function updateSkin():void{ var _local1:Sprite; var _local2:Sprite; var _local3:Sprite; if (this.enabled == true){ _local1 = this.buildSkin(this.m_Label, SKIN_DOWN_LEFT, SKIN_DOWN_CENTER, null); _local2 = this.buildSkin(this.m_Label, SKIN_OVER_LEFT, SKIN_OVER_CENTER, null); _local3 = this.buildSkin(this.m_Label, SKIN_UP_LEFT, SKIN_UP_CENTER, null); } else { _local1 = this.buildSkin(this.m_Label, SKIN_DISABLED_LEFT, SKIN_DISABLED_CENTER, null); _local2 = _local1; _local3 = _local1; }; this.upState = _local3; this.downState = _local1; this.overState = _local2; this.hitTestState = _local2; } public function set label(_arg1:String):void{ this.m_Label = _arg1; this.updateSkin(); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseEnabled = _arg1; this.updateSkin(); } public function get data():int{ return (this.m_Data); } private function buildSkin(_arg1:String, _arg2:BitmapData, _arg3:BitmapData, _arg4:BitmapData=null):Sprite{ var _local5:BitmapData = _arg4; if (_local5 == null){ _local5 = _arg2; }; var _local6:Sprite = new Sprite(); var _local7:TextField = new TextField(); _local7.autoSize = TextFieldAutoSize.LEFT; if (this.enabled == true){ _local7.defaultTextFormat = new TextFormat(BUTTON_LAYOUT.fontFamily, BUTTON_LAYOUT.fontSize, BUTTON_LAYOUT.fontColour, BUTTON_LAYOUT.fontBold, BUTTON_LAYOUT.fontItalic); } else { _local7.defaultTextFormat = new TextFormat(BUTTON_LAYOUT_DISABLED.fontFamily, BUTTON_LAYOUT_DISABLED.fontSize, BUTTON_LAYOUT_DISABLED.fontColour, BUTTON_LAYOUT_DISABLED.fontBold, BUTTON_LAYOUT_DISABLED.fontItalic); }; _local7.selectable = false; _local7.text = _arg1; var _local8:Number = Math.max(_local7.height, _arg2.height, _arg3.height, _local5.height); var _local9:Number = Math.max((_local7.width + (2 * BUTTON_LAYOUT.paddingHorizontal)), (_arg2.width + _local5.width)); _local7.x = ((_local9 - _local7.width) / 2); _local7.y = ((_local8 - _local7.height) / 2); _local6.addChild(_local7); var _local10:Graphics = _local6.graphics; var _local11:Matrix = new Matrix(); _local10.clear(); _local11.tx = 0; _local10.beginBitmapFill(_arg2, _local11, false, false); _local10.drawRect(0, 0, Math.ceil(_arg2.width), _local8); _local11.tx = _arg2.width; _local10.beginBitmapFill(_arg3, _local11, true, false); _local10.drawRect(_arg2.width, 0, Math.ceil(((_local9 - _arg2.width) - _local5.width)), _local8); if (_arg4 == null){ _local11.a = -1; }; _local11.tx = (_local9 - _local5.width); _local10.beginBitmapFill(_local5, _local11, true, false); _local10.drawRect((_local9 - _local5.width), 0, Math.ceil(_local5.width), _local8); _local10.endFill(); return (_local6); } public function get label():String{ return (this.m_Label); } public function set data(_arg1:int):void{ this.m_Data = _arg1; } } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class ScrollBar_SKIN_UP_OVER_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class ScrollBar_SKIN_UP_UP_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class ScrollBar_SKIN_TRACK_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class ScrollBar_SKIN_THUMB_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class ScrollBar_SKIN_DOWN_OVER_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class ScrollBar_SKIN_DOWN_DOWN_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class Button_SKIN_UP_CENTER_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class Button_SKIN_DISABLED_CENTER_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class Button_SKIN_OVER_CENTER_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class ScrollBar_SKIN_DOWN_UP_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class ScrollBar extends Sprite { private static const SKIN_TRACK_CLASS:Class = ScrollBar_SKIN_TRACK_CLASS; private static const SKIN_THUMB_CLASS:Class = ScrollBar_SKIN_THUMB_CLASS; private static const SKIN_UP_OVER_CLASS:Class = ScrollBar_SKIN_UP_OVER_CLASS; private static const SKIN_THUMB_LAYOUT:Object = { bottomHeight:3, middleHeight:5, topHeight:2, minHeight:((2 + 5) + 3) }; private static const SKIN_UP_DOWN_CLASS:Class = ScrollBar_SKIN_UP_DOWN_CLASS; private static const SKIN_UP_UP_CLASS:Class = ScrollBar_SKIN_UP_UP_CLASS; private static const SKIN_DOWN_OVER_CLASS:Class = ScrollBar_SKIN_DOWN_OVER_CLASS; private static const SKIN_TRACK:BitmapData = Bitmap(new SKIN_TRACK_CLASS()).bitmapData; private static const SKIN_DOWN_UP_CLASS:Class = ScrollBar_SKIN_DOWN_UP_CLASS; private static const SKIN_DOWN_DOWN_CLASS:Class = ScrollBar_SKIN_DOWN_DOWN_CLASS; private static var SKIN_THUMB_MIDDLE:BitmapData = null; private static var SKIN_THUMB_BOTTOM:BitmapData = null; private static var SKIN_THUMB_TOP:BitmapData = null; private var m_UIButtonUp:SimpleButton = null; private var m_ThumbScrollOffset:Number = NaN; private var m_UITrack:Sprite = null; private var m_AutoScrollAmount:Number = 0; private var m_ThumbPositionChanged:Boolean = false; private var m_ScrollPosition:Number = 0; private var m_CachedWidth:Number = NaN; private var m_AutoScrollTimer:Timer = null; private var m_CachedHeight:Number = NaN; private var m_CachedTrackHeight:Number = NaN; private var m_UIThumb:Sprite = null; public var scrollDelta:Number = 1; private var m_ThumbLayoutChanged:Boolean = false; private var m_ScrollVisible:Number = 0; private var m_UIButtonDown:SimpleButton = null; private var m_ScrollRange:Number = 0; public function ScrollBar(){ this.initialiseUI(); this.m_AutoScrollTimer = new Timer(0, 0); } private static function s_InitialiseThumbSkin():void{ var _local1:BitmapData = Bitmap(new SKIN_THUMB_CLASS()).bitmapData; var _local2:Rectangle = new Rectangle(0, 0, _local1.width, _local1.height); var _local3:Point = new Point(0, 0); _local2.height = SKIN_THUMB_LAYOUT.bottomHeight; _local2.y = (_local1.height - SKIN_THUMB_LAYOUT.bottomHeight); SKIN_THUMB_BOTTOM = new BitmapData(_local1.width, SKIN_THUMB_LAYOUT.bottomHeight); SKIN_THUMB_BOTTOM.copyPixels(_local1, _local2, _local3); _local2.height = SKIN_THUMB_LAYOUT.middleHeight; _local2.y = SKIN_THUMB_LAYOUT.topHeight; SKIN_THUMB_MIDDLE = new BitmapData(_local1.width, SKIN_THUMB_LAYOUT.middleHeight); SKIN_THUMB_MIDDLE.copyPixels(_local1, _local2, _local3); _local2.height = SKIN_THUMB_LAYOUT.topHeight; _local2.y = 0; SKIN_THUMB_TOP = new BitmapData(_local1.width, SKIN_THUMB_LAYOUT.topHeight); SKIN_THUMB_TOP.copyPixels(_local1, _local2, _local3); } private function layoutTrack():void{ var _local3:Graphics; var _local1 = (this.m_CachedTrackHeight > 0); var _local2:Number = ((this.m_UIButtonUp)!=null) ? (this.m_UIButtonUp.y + this.m_UIButtonUp.height) : 0; if (_local1){ _local3 = this.m_UITrack.graphics; _local3.clear(); _local3.beginBitmapFill(SKIN_TRACK, null, true, false); _local3.drawRect(0, 0, SKIN_TRACK.width, this.m_CachedTrackHeight); _local3.endFill(); this.m_UITrack.visible = true; this.m_UITrack.x = ((this.m_CachedWidth - this.m_UITrack.width) / 2); this.m_UITrack.y = _local2; }; this.m_UITrack.visible = _local1; } private function onAutoScrollTimer(_arg1:TimerEvent):void{ if (_arg1 != null){ this.scrollPosition = (this.scrollPosition + this.m_AutoScrollAmount); this.m_AutoScrollTimer.delay = 100; }; } public function set scrollVisible(_arg1:Number):void{ if (isNaN(_arg1)){ _arg1 = 0; } else { _arg1 = Math.max(0, Math.min(_arg1, this.m_ScrollRange)); }; if (this.m_ScrollVisible != _arg1){ this.m_ScrollVisible = _arg1; this.m_ThumbLayoutChanged = true; this.scrollPosition = Math.max(this.minScrollPosition, Math.min(this.scrollPosition, this.maxScrollPosition)); this.layoutThumb(); this.moveThumb(); }; } private function moveThumb():void{ var _local1:Number; var _local2:Number; if (this.m_ThumbPositionChanged){ this.m_ThumbPositionChanged = false; _local1 = (this.m_CachedTrackHeight - this.m_UIThumb.height); _local2 = ((this.m_UIButtonUp)!=null) ? (this.m_UIButtonUp.y + this.m_UIButtonUp.height) : 0; this.m_UIThumb.y = (_local2 + Math.round(((_local1 * this.scrollPosition) / this.maxScrollPosition))); }; } public function get maxScrollPosition():Number{ return ((this.m_ScrollRange - this.m_ScrollVisible)); } public function get scrollPosition():Number{ return (this.m_ScrollPosition); } private function initialiseUI():void{ this.m_UITrack = new Sprite(); this.m_UITrack.cacheAsBitmap = true; this.m_UITrack.addEventListener(MouseEvent.MOUSE_DOWN, this.onAutoScrollStart); this.m_UITrack.addEventListener(MouseEvent.MOUSE_OUT, this.onAutoScrollStop); this.m_UITrack.addEventListener(MouseEvent.MOUSE_UP, this.onAutoScrollStop); addChild(this.m_UITrack); this.m_UIThumb = new Sprite(); this.m_UIThumb.cacheAsBitmap = true; this.m_UIThumb.addEventListener(MouseEvent.MOUSE_DOWN, this.onThumbScroll); addChild(this.m_UIThumb); var _local1:Bitmap = Bitmap(new SKIN_DOWN_DOWN_CLASS()); var _local2:Bitmap = Bitmap(new SKIN_DOWN_OVER_CLASS()); var _local3:Bitmap = Bitmap(new SKIN_DOWN_UP_CLASS()); this.m_UIButtonDown = new SimpleButton(_local3, _local2, _local1, _local2); this.m_UIButtonDown.addEventListener(MouseEvent.MOUSE_DOWN, this.onAutoScrollStart); this.m_UIButtonDown.addEventListener(MouseEvent.MOUSE_OUT, this.onAutoScrollStop); this.m_UIButtonDown.addEventListener(MouseEvent.MOUSE_UP, this.onAutoScrollStop); addChild(this.m_UIButtonDown); _local1 = Bitmap(new SKIN_UP_DOWN_CLASS()); _local2 = Bitmap(new SKIN_UP_OVER_CLASS()); _local3 = Bitmap(new SKIN_UP_UP_CLASS()); this.m_UIButtonUp = new SimpleButton(_local3, _local2, _local1, _local2); this.m_UIButtonUp.addEventListener(MouseEvent.MOUSE_DOWN, this.onAutoScrollStart); this.m_UIButtonUp.addEventListener(MouseEvent.MOUSE_OUT, this.onAutoScrollStop); this.m_UIButtonUp.addEventListener(MouseEvent.MOUSE_UP, this.onAutoScrollStop); addChild(this.m_UIButtonUp); if (Math.max(this.m_UIButtonDown.width, this.m_UIButtonUp.width) < Math.max(SKIN_THUMB_BOTTOM.width, SKIN_THUMB_MIDDLE.width, SKIN_THUMB_BOTTOM.width, SKIN_TRACK.width)){ throw (new Error("ScrollBar.initialiseUI: Thumb/track width exceeds button width. Initial width will be incorrect.")); }; } public function get scrollVisible():Number{ return (this.m_ScrollVisible); } public function set scrollRange(_arg1:Number):void{ if (isNaN(_arg1)){ _arg1 = 0; } else { _arg1 = Math.max(0, _arg1); }; if (this.m_ScrollRange != _arg1){ this.m_ScrollRange = _arg1; this.m_ThumbLayoutChanged = true; this.scrollVisible = Math.min(this.scrollVisible, this.m_ScrollRange); this.scrollPosition = Math.max(this.minScrollPosition, Math.min(this.scrollPosition, this.maxScrollPosition)); this.layoutThumb(); this.moveThumb(); }; } private function onAutoScrollStart(_arg1:MouseEvent):void{ var _local2:Number; var _local3:Point; if (_arg1 != null){ _local2 = 0; switch (_arg1.currentTarget){ case this.m_UIButtonDown: _local2 = this.scrollDelta; break; case this.m_UIButtonUp: _local2 = -(this.scrollDelta); break; case this.m_UITrack: _local3 = this.m_UIThumb.localToGlobal(new Point(0, 0)); if (_arg1.stageY > (_local3.y + this.m_UIThumb.height)){ _local2 = this.scrollVisible; } else { if (_arg1.stageY < _local3.y){ _local2 = -(this.scrollVisible); }; }; break; }; if (_local2 != 0){ this.scrollPosition = (this.scrollPosition + _local2); this.m_AutoScrollAmount = _local2; this.m_AutoScrollTimer.delay = 500; this.m_AutoScrollTimer.addEventListener(TimerEvent.TIMER, this.onAutoScrollTimer); this.m_AutoScrollTimer.start(); }; }; } public function get minScrollPosition():Number{ return (0); } public function set scrollPosition(_arg1:Number):void{ var _local2:Event; if (isNaN(_arg1)){ _arg1 = this.minScrollPosition; } else { _arg1 = Math.max(this.minScrollPosition, Math.min(_arg1, this.maxScrollPosition)); }; if (this.m_ScrollPosition != _arg1){ this.m_ScrollPosition = _arg1; this.m_ThumbPositionChanged = true; _local2 = new Event(Event.CHANGE, true, false); dispatchEvent(_local2); this.moveThumb(); }; } public function get scrollRange():Number{ return (this.m_ScrollRange); } public function layout(_arg1:Number, _arg2:Number):void{ if (((((!(isNaN(_arg1))) && (!(isNaN(_arg2))))) && (((!((this.m_CachedWidth == _arg1))) || (!((this.m_CachedHeight == _arg2))))))){ this.m_CachedWidth = _arg1; this.m_CachedHeight = _arg2; this.m_CachedTrackHeight = _arg2; this.m_UIButtonUp.x = ((_arg1 - this.m_UIButtonUp.width) / 2); this.m_UIButtonUp.y = 0; this.m_CachedTrackHeight = (this.m_CachedTrackHeight - this.m_UIButtonUp.height); this.m_UIButtonDown.x = ((_arg1 - this.m_UIButtonDown.width) / 2); this.m_UIButtonDown.y = (_arg2 - this.m_UIButtonDown.height); this.m_CachedTrackHeight = (this.m_CachedTrackHeight - this.m_UIButtonDown.height); this.m_ThumbLayoutChanged = true; this.m_ThumbPositionChanged = true; this.layoutThumb(); this.moveThumb(); this.layoutTrack(); }; } private function onThumbScroll(_arg1:MouseEvent):void{ var _local2:Point; var _local3:Point; if (_arg1 != null){ switch (_arg1.type){ case MouseEvent.MOUSE_DOWN: stage.addEventListener(MouseEvent.MOUSE_MOVE, this.onThumbScroll); stage.addEventListener(MouseEvent.MOUSE_UP, this.onThumbScroll); _local2 = this.m_UIThumb.localToGlobal(new Point(0, 0)); _local3 = this.m_UITrack.localToGlobal(new Point(0, 0)); this.m_ThumbScrollOffset = ((_arg1.stageY - _local2.y) + _local3.y); break; case MouseEvent.MOUSE_MOVE: this.scrollPosition = ((this.scrollRange * (_arg1.stageY - this.m_ThumbScrollOffset)) / this.m_CachedTrackHeight); break; case MouseEvent.MOUSE_UP: stage.removeEventListener(MouseEvent.MOUSE_MOVE, this.onThumbScroll); stage.removeEventListener(MouseEvent.MOUSE_UP, this.onThumbScroll); this.m_ThumbScrollOffset = NaN; break; }; }; } private function layoutThumb():void{ var _local1:Number; var _local2:Boolean; var _local3:Matrix; var _local4:Graphics; if (this.m_ThumbLayoutChanged){ this.m_ThumbLayoutChanged = false; _local1 = Math.round(((this.m_CachedTrackHeight * this.m_ScrollVisible) / this.m_ScrollRange)); if (isNaN(_local1)){ _local1 = SKIN_THUMB_LAYOUT.minHeight; } else { _local1 = Math.max(SKIN_THUMB_LAYOUT.minHeight, _local1); }; _local2 = (((_local1 > 0)) && ((_local1 < this.m_CachedTrackHeight))); if (_local2){ _local3 = new Matrix(); _local4 = this.m_UIThumb.graphics; _local4.clear(); _local3.ty = (_local1 - SKIN_THUMB_BOTTOM.height); _local4.beginBitmapFill(SKIN_THUMB_BOTTOM, _local3, false, false); _local4.drawRect(0, _local3.ty, SKIN_THUMB_BOTTOM.width, SKIN_THUMB_BOTTOM.height); _local3.ty = SKIN_THUMB_TOP.height; _local4.beginBitmapFill(SKIN_THUMB_MIDDLE, _local3, true, false); _local4.drawRect(0, _local3.ty, SKIN_THUMB_MIDDLE.width, ((_local1 - SKIN_THUMB_TOP.height) - SKIN_THUMB_BOTTOM.height)); _local3.ty = 0; _local4.beginBitmapFill(SKIN_THUMB_TOP, _local3, false, false); _local4.drawRect(0, _local3.ty, SKIN_THUMB_TOP.width, SKIN_THUMB_TOP.height); _local4.endFill(); this.m_UIThumb.x = ((this.m_CachedWidth - this.m_UIThumb.width) / 2); this.m_UIThumb.y = 0; }; this.m_UIThumb.visible = _local2; }; } private function onAutoScrollStop(_arg1:MouseEvent):void{ if (_arg1 != null){ this.m_AutoScrollAmount = 0; this.m_AutoScrollTimer.removeEventListener(TimerEvent.TIMER, this.onAutoScrollTimer); this.m_AutoScrollTimer.stop(); }; } s_InitialiseThumbSkin(); } }//package loader.popUp.dialogClasses package loader.popUp.dialogClasses { import mx.core.*; public class Button_SKIN_OVER_LEFT_CLASS extends BitmapAsset { } }//package loader.popUp.dialogClasses package loader.popUp { import mx.core.*; public class LoaderProgress_LOGO_CLASS extends BitmapAsset { } }//package loader.popUp package loader.popUp { import flash.display.*; import flash.events.*; import flash.text.*; public class LoaderProgress extends Sprite { private static const DIALOG_LAYOUT:Object = { x:NaN, y:NaN, width:NaN, height:NaN, marginHorizontal:NaN, marginVertical:8 }; private static const LOGO_LAYOUT:Object = { x:155, y:0, width:196, height:112 }; private static const LOGO_CLASS:Class = LoaderProgress_LOGO_CLASS; private static const LABEL_LAYOUT:Object = { x:(BAR_PROGRESS_LAYOUT.x + (BAR_PROGRESS_LAYOUT.width / 2)), y:(BAR_PROGRESS_LAYOUT.y + ((BAR_PROGRESS_LAYOUT.height - 16) / 2)), width:BAR_PROGRESS_LAYOUT.width, height:16, fontFamily:"Verdana", fontSize:12, fontColour:13221291, fontBold:false, fontItalic:false }; private static const BAR_BACKGROUND_LAYOUT:Object = { x:0, y:96, width:507, height:54 }; private static const BAR_PROGRESS_LAYOUT:Object = { x:16, y:109, width:476, height:26 }; private static const BAR_PROGRESS_CLASS:Class = LoaderProgress_BAR_PROGRESS_CLASS; private static const BAR_BACKGROUND_CLASS:Class = LoaderProgress_BAR_BACKGROUND_CLASS; private static const BAR_PROGRESS_IMAGE:BitmapData = Bitmap(new BAR_PROGRESS_CLASS()).bitmapData; private var m_UILogo:Bitmap = null; private var m_Label:String = ""; private var m_UIBarBackground:Bitmap = null; private var m_MaxValue:Number = NaN; private var m_UIBarProgress:Shape = null; private var m_UILabel:TextField = null; private var m_MinValue:Number = NaN; private var m_Value:Number = NaN; public function LoaderProgress(){ this.initialiseUI(); addEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage); addEventListener(Event.ADDED_TO_STAGE, this.onLayoutChange); addEventListener(Event.REMOVED_FROM_STAGE, this.onRemovedFromStage); } public function get minValue():Number{ return (this.m_MinValue); } private function initialiseUI():void{ this.m_UIBarBackground = Bitmap(new BAR_BACKGROUND_CLASS()); this.m_UIBarBackground.x = BAR_BACKGROUND_LAYOUT.x; this.m_UIBarBackground.y = BAR_BACKGROUND_LAYOUT.y; addChild(this.m_UIBarBackground); this.m_UIBarProgress = new Shape(); this.m_UIBarProgress.x = BAR_PROGRESS_LAYOUT.x; this.m_UIBarProgress.y = BAR_PROGRESS_LAYOUT.y; addChild(this.m_UIBarProgress); this.m_UILabel = new TextField(); this.m_UILabel.autoSize = TextFieldAutoSize.CENTER; this.m_UILabel.defaultTextFormat = new TextFormat(LABEL_LAYOUT.fontFamily, LABEL_LAYOUT.fontSize, LABEL_LAYOUT.fontColour, LABEL_LAYOUT.fontBold, LABEL_LAYOUT.fontItalic); this.m_UILabel.selectable = false; this.m_UILabel.x = LABEL_LAYOUT.x; this.m_UILabel.y = LABEL_LAYOUT.y; addChild(this.m_UILabel); this.m_UILogo = Bitmap(new LOGO_CLASS()); this.m_UILogo.x = LOGO_LAYOUT.x; this.m_UILogo.y = LOGO_LAYOUT.y; addChild(this.m_UILogo); } private function onAddedToStage(_arg1:Event):void{ if (_arg1 != null){ removeEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage); removeEventListener(Event.ADDED_TO_STAGE, this.onLayoutChange); stage.addEventListener(Event.RESIZE, this.onLayoutChange); }; } private function onRemovedFromStage(_arg1:Event):void{ if (_arg1 != null){ removeEventListener(Event.REMOVED_FROM_STAGE, this.onRemovedFromStage); stage.removeEventListener(Event.RESIZE, this.onLayoutChange); }; } public function set maxValue(_arg1:Number):void{ _arg1 = Math.max(0, _arg1); if (this.m_MaxValue != _arg1){ this.m_MaxValue = _arg1; this.updateUI(); }; } private function updateUI():void{ var _local2:Number; var _local1:Graphics = this.m_UIBarProgress.graphics; _local1.clear(); if ((((((this.m_Value >= this.m_MinValue)) && ((this.m_Value <= this.m_MaxValue)))) && ((this.m_MinValue < this.m_MaxValue)))){ _local2 = ((this.m_Value * BAR_PROGRESS_LAYOUT.width) / (this.m_MaxValue - this.m_MinValue)); _local1.beginBitmapFill(BAR_PROGRESS_IMAGE, null, true, false); _local1.drawRect(0, 0, _local2, BAR_PROGRESS_LAYOUT.height); _local1.endFill(); }; this.m_UILabel.text = this.m_Label; } public function set label(_arg1:String):void{ if (_arg1 == null){ _arg1 = ""; }; if (this.m_Label != _arg1){ this.m_Label = _arg1; this.updateUI(); }; } public function set value(_arg1:Number):void{ _arg1 = Math.max(this.m_MinValue, Math.min(_arg1, this.m_MaxValue)); if (this.m_Value != _arg1){ this.m_Value = _arg1; this.updateUI(); }; } public function get maxValue():Number{ return (this.m_MaxValue); } public function get value():Number{ return (this.m_Value); } public function get label():String{ return (this.m_Label); } private function onLayoutChange(_arg1:Event):void{ if (_arg1 != null){ x = Math.round(((stage.stageWidth - width) / 2)); y = ((stage.stageHeight - height) - DIALOG_LAYOUT.marginVertical); }; } public function set minValue(_arg1:Number):void{ _arg1 = Math.max(0, _arg1); if (this.m_MinValue != _arg1){ this.m_MinValue = _arg1; this.updateUI(); }; } } }//package loader.popUp package loader.popUp { import flash.events.*; public class CloseEvent extends Event { public static const CLOSE:String = "close"; public var detail:int = 0; public function CloseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:int=0){ super(_arg1, _arg2, _arg3); this.detail = _arg4; } } }//package loader.popUp package loader.popUp { import flash.display.*; import flash.events.*; import flash.geom.*; import loader.popUp.dialogClasses.*; import flash.text.*; public class Alert extends DialogBase { private static const CONTENT_LAYOUT:Object = { x:NaN, y:NaN, width:NaN, height:NaN, minHeight:100, maxHeight:500, paddingHorizontal:2, paddingVertical:2, backgroundAlpha:0, backgroundColour:0, borderAlpha:0, borderColour:0, borderThickness:0 }; private static const TEXT_LAYOUT:Object = { x:NaN, y:NaN, width:NaN, height:NaN, fontFamily:"Verdana", fontSize:10, fontColour:13221291, fontBold:false, fontItalic:false }; private var m_UIScrollBar:ScrollBar = null; private var m_CachedContentWidth:Number = NaN; private var m_CachedContentHeight:Number = NaN; private var m_UIText:TextField = null; private var m_UIBackground:Shape = null; public function Alert(_arg1:String, _arg2:String, _arg3:uint=2){ super(_arg1, _arg3); this.initialiseUI(_arg2); } private function initialiseUI(_arg1:String):void{ this.m_UIBackground = new Shape(); addChild(this.m_UIBackground); this.m_UIText = new TextField(); this.m_UIText.autoSize = TextFieldAutoSize.LEFT; this.m_UIText.cacheAsBitmap = true; this.m_UIText.defaultTextFormat = new TextFormat(TEXT_LAYOUT.fontFamily, TEXT_LAYOUT.fontSize, TEXT_LAYOUT.fontColour, TEXT_LAYOUT.fontBold, TEXT_LAYOUT.fontItalic); this.m_UIText.multiline = true; this.m_UIText.selectable = true; this.m_UIText.wordWrap = true; if (_arg1 != null){ this.m_UIText.text = _arg1; }; addChild(this.m_UIText); this.m_UIScrollBar = new ScrollBar(); this.m_UIScrollBar.scrollDelta = TEXT_LAYOUT.fontSize; this.m_UIScrollBar.addEventListener(Event.CHANGE, this.onTextScroll); addChild(this.m_UIScrollBar); } public function get text():String{ return (this.m_UIText.text); } override protected function layoutContent(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:Graphics = this.m_UIBackground.graphics; _local5.clear(); _local5.beginFill(CONTENT_LAYOUT.backgroundColour, CONTENT_LAYOUT.backgroundAlpha); _local5.lineStyle(CONTENT_LAYOUT.borderThickness, CONTENT_LAYOUT.borderColour, CONTENT_LAYOUT.borderAlpha); _local5.drawRect(_arg1, _arg2, (_arg3 - CONTENT_LAYOUT.borderThickness), (_arg4 - CONTENT_LAYOUT.borderThickness)); _local5.lineStyle(NaN, 0, NaN); _local5.endFill(); this.m_UIScrollBar.scrollRange = this.m_CachedContentHeight; this.m_UIScrollBar.scrollVisible = ((_arg4 - (2 * CONTENT_LAYOUT.paddingVertical)) - (2 * CONTENT_LAYOUT.borderThickness)); this.m_UIScrollBar.x = (((_arg1 + _arg3) - CONTENT_LAYOUT.borderThickness) - this.m_UIScrollBar.width); this.m_UIScrollBar.y = (_arg2 + CONTENT_LAYOUT.borderThickness); this.m_UIScrollBar.layout(this.m_UIScrollBar.width, (_arg4 - (2 * CONTENT_LAYOUT.borderThickness))); this.m_UIText.x = ((_arg1 + CONTENT_LAYOUT.borderThickness) + CONTENT_LAYOUT.paddingVertical); this.m_UIText.y = ((_arg2 + CONTENT_LAYOUT.borderThickness) + CONTENT_LAYOUT.paddingHorizontal); this.m_UIText.scrollRect = new Rectangle(0, this.m_UIScrollBar.scrollPosition, this.m_CachedContentWidth, this.m_UIScrollBar.scrollVisible); } private function onTextScroll(_arg1:Event):void{ var _local2:Rectangle; if (_arg1 != null){ _local2 = this.m_UIText.scrollRect; if (_local2 != null){ _local2.y = this.m_UIScrollBar.scrollPosition; this.m_UIText.scrollRect = _local2; }; }; } override protected function calculateContentSize(_arg1:Number, _arg2:Number):Rectangle{ if (this.m_CachedContentWidth != _arg1){ this.m_UIText.scrollRect = null; this.m_UIText.width = (((_arg1 - (2 * CONTENT_LAYOUT.paddingHorizontal)) - (2 * CONTENT_LAYOUT.borderThickness)) - this.m_UIScrollBar.width); this.m_CachedContentHeight = this.m_UIText.height; this.m_CachedContentWidth = _arg1; }; var _local3:Number = Math.max(CONTENT_LAYOUT.minHeight, Math.min(((this.m_CachedContentHeight + (2 * CONTENT_LAYOUT.paddingVertical)) + (2 * CONTENT_LAYOUT.borderThickness)), CONTENT_LAYOUT.maxHeight, _arg2)); return (new Rectangle(0, 0, _arg1, _local3)); } } }//package loader.popUp package loader.popUp { import mx.core.*; public class LoaderProgress_BAR_PROGRESS_CLASS extends BitmapAsset { } }//package loader.popUp package loader.asset { import flash.events.*; import tibia.game.*; import __AS3__.vec.*; import tibia.options.*; import tibia.appearances.*; import tibia.sessiondump.*; public interface IAssetProvider extends IEventDispatcher { function get bytesTotalMandatory():uint; function getGameBinary():GameBinaryAsset; function getAppearances():AppearancesAsset; function get loadQueueDelay():uint; function getAssetsByClass(_arg1:Class):Vector.; function get bytesLoadedMandatory():uint; function removeAsset(_arg1:AssetBase):void; function getAssetByKey(_arg1:Object):AssetBase; function get bytesLoaded():uint; function getDefaultOptionsTutorial():OptionsAsset; function set concurrentLoaders(_arg1:uint):void; function getDefaultOptions():OptionsAsset; function get loadingFinished():Boolean; function set loadQueueDelay(_arg1:uint):void; function get concurrentLoaders():uint; function get bytesTotal():uint; function getCurrentOptions():OptionsAsset; function getSessiondumpAsset():SessiondumpAsset; function getSpriteAssets():Vector.; function pushAssetForwardInLoadingQueueByKey(_arg1:String):void; } }//package loader.asset package loader.asset { import flash.events.*; import tibia.game.*; import flash.net.*; public class Catalog extends EventDispatcher { private static const STATE_DONE:int = 2; private static const STATE_DEFAULT:int = 0; private static const STATE_ERROR:int = -1; private static const ERROR_INTERNAL:String = "Invalid catalog file."; private static const STATE_LOADING:int = 1; protected var m_Loader:URLLoader = null; protected var m_Cache:AssetCache = null; private var m_Optional:Boolean = false; protected var m_URL:String = null; protected var m_State:int = 0; public function Catalog(_arg1:String, _arg2:AssetCache, _arg3:Boolean=false){ this.m_Cache = _arg2; this.m_URL = _arg1; this.m_Optional = _arg3; } private function loadError(_arg1:ErrorEvent=null):void{ var _local2:ErrorEvent; this.unloadLoader(); this.m_State = STATE_ERROR; if (_arg1 != null){ dispatchEvent(_arg1.clone()); } else { _local2 = new ErrorEvent(ErrorEvent.ERROR); _local2.text = ERROR_INTERNAL; dispatchEvent(_local2); }; } public function load():void{ if (this.m_State == STATE_DEFAULT){ this.m_State = STATE_LOADING; this.unloadLoader(); this.m_Loader = new URLLoader(); this.m_Loader.addEventListener(Event.COMPLETE, this.onLoaderComplete); this.m_Loader.addEventListener(IOErrorEvent.IO_ERROR, this.onLoaderError); this.m_Loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoaderError); this.m_Loader.load(new URLRequest(this.m_URL)); }; } private function onLoaderComplete(_arg1:Event):void{ var _XML:* = null; var AssetXML:* = null; var _Asset:* = null; var _Event:* = null; var a_Event:* = _arg1; var IsValid:* = false; if (((((!((this.m_Loader == null))) && (!((this.m_Loader.data == null))))) && ((this.m_Loader.dataFormat == URLLoaderDataFormat.TEXT)))){ _XML = null; try { _XML = new XML((this.m_Loader.data as String)); IsValid = true; } catch(_Error) { }; if (((!((_XML == null))) && ((_XML.localName() == "catalog")))){ for each (AssetXML in _XML.children()) { _Asset = Asset.s_FromXML(AssetXML); if (_Asset == null){ IsValid = false; break; }; _Asset.optional = this.m_Optional; this.m_Cache.addAsset(_Asset); }; }; this.unloadLoader(); }; if (IsValid){ this.m_State = STATE_DONE; _Event = new Event(Event.COMPLETE); dispatchEvent(_Event); } else { this.loadError(); }; } public function unload():void{ this.unloadLoader(); this.m_State = STATE_ERROR; this.m_URL = null; this.m_Cache = null; } public function get URL():String{ return (this.m_URL); } private function onLoaderError(_arg1:ErrorEvent):void{ this.loadError(_arg1); } private function unloadLoader():void{ if (this.m_Loader != null){ if (this.m_State == STATE_LOADING){ try { this.m_Loader.close(); } catch(_Error) { }; }; this.m_Loader.removeEventListener(Event.COMPLETE, this.onLoaderComplete); this.m_Loader.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoaderError); this.m_Loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoaderError); this.m_Loader = null; }; } } }//package loader.asset package loader.asset { import flash.events.*; import tibia.game.*; import flash.utils.*; import shared.utility.*; import __AS3__.vec.*; import tibia.options.*; import tibia.appearances.*; import tibia.sessiondump.*; import tibia.sessiondump.hints.*; public class AssetCache extends EventDispatcher implements IAssetProvider { private static const STATE_MANDATORY_ASSETS_LOADING:int = 2; public static const PRIORITY_ASSET_BACKGROUND_HIGH_PRIO:int = 1; private static const STATE_CATALOGS_LOADING:int = 1; public static const PRIORITY_ASSET_MANDATORY:int = 0; private static const STATE_OPTIONAL_ASSETS_LOADING:int = 3; private static const STATE_DEFAULT:int = 0; private static const ERROR_INTERNAL:String = "Internal error while loading the assets."; public static const PRIORITY_ASSET_MANUAL:int = 2147483647; public static const PRIORITY_ASSET_BACKGROUND:int = 2; private static const STATE_ERROR:int = -1; private static const STATE_DONE:int = 4; private const CONCURRENT_LOADERS:uint = 3; private const NO_AREA_SET:int = -1; private const LOAD_QUEUE_DELAY_BACKGROUND:uint = 10; private const LOAD_QUEUE_DELAY:uint = 10; private const CONCURRENT_LOADERS_BACKGROUND:uint = 1; private var m_BytesLoadedMandatory:uint = 0; private var m_State:int = 0; private var m_AssetKeyOptionsDefault:Object = null; private var m_Catalogs:Vector.; private var m_BytesTotalMandatory:uint = 0; private var m_AssetKeyOptionsCurrent:Object = null; private var m_BytesLoaded:uint = 0; private var m_LoadConcurrent:int = 0; private var m_AssetKeyGameBinary:Object = null; private var m_AssetKeySessiondumpHints:Object = null; private var m_ConcurrentLoaders:uint = 3; private var m_AssetKeyOptionsDefaultTutorial:Object = null; private var m_LoadQueueDelay:uint = 20; private var m_LoadNext:int = 0; private var m_CurrentArea:int = -1; private var m_Assets:Dictionary; private var m_AssetKeySessiondump:Object = null; private var m_BytesTotal:uint = 0; private var m_AssetKeyAppearances:Object = null; private var m_Timer:Timer = null; private var m_AssetLoadQueue:HeapDictionaryWrapper; public function AssetCache():void{ this.m_Assets = new Dictionary(); this.m_AssetLoadQueue = new HeapDictionaryWrapper(); this.m_Catalogs = new Vector.(); super(); this.m_LoadQueueDelay = this.LOAD_QUEUE_DELAY; this.m_ConcurrentLoaders = this.CONCURRENT_LOADERS; } public function getSessiondumpAsset():SessiondumpAsset{ if (this.m_AssetKeySessiondump != null){ return ((this.getAssetByKey(this.m_AssetKeySessiondump) as SessiondumpAsset)); }; return (null); } public function get concurrentLoaders():uint{ return (this.m_ConcurrentLoaders); } public function set concurrentLoaders(_arg1:uint):void{ if (_arg1 == 0){ throw (new ArgumentError("AssetCache.concurrentLoaders: value must be more than zero")); }; this.m_ConcurrentLoaders = _arg1; } public function getDefaultOptions():OptionsAsset{ if (this.m_AssetKeyOptionsDefault != null){ return ((this.getAssetByKey(this.m_AssetKeyOptionsDefault) as OptionsAsset)); }; return (null); } public function getSpriteAssets():Vector.{ var _local2:Vector.; var _local3:AssetBase; var _local1:Vector. = new Vector.(); if (this.m_State >= STATE_CATALOGS_LOADING){ _local2 = this.getAssetsByClass(SpritesAsset); for each (_local3 in _local2) { if ((_local3 is SpritesAsset)){ _local1.push(_local3); }; }; }; return (_local1); } private function removeObsoleteAssets():void{ var Listing:* = null; var i:* = 0; var Name:* = null; var IsObsolete:* = false; var _Asset:* = null; var _SharedObjectManager:* = SharedObjectManager.s_GetInstance(); if (((SharedObjectManager.s_SharedObjectsAvailable()) && (!((_SharedObjectManager == null))))){ try { Listing = _SharedObjectManager.getListing(); i = 0; while (i < Listing.length) { Name = (Listing[i] as String); if (Name == null){ } else { IsObsolete = true; for each (_Asset in this.m_Assets) { if (((!((_Asset == null))) && ((_Asset.name == Name)))){ IsObsolete = false; break; }; }; if (IsObsolete){ _SharedObjectManager.clear(Name); }; }; i = (i + 1); }; _SharedObjectManager.syncListing(); } catch(_Error) { }; }; } protected function onAssetError(_arg1:ErrorEvent):void{ var _local2:AssetBase; if (((!((_arg1 == null))) && (!(((_local2 = (_arg1.target as AssetBase)) == null))))){ _local2.removeEventListener(ErrorEvent.ERROR, this.onAssetError); _local2.removeEventListener(Event.COMPLETE, this.onAssetComplete); _local2.removeEventListener(IOErrorEvent.IO_ERROR, this.onAssetError); _local2.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onAssetError); }; this.loadError(_arg1); } public function addCatalog(_arg1:Catalog):void{ if (this.m_State >= STATE_CATALOGS_LOADING){ throw (new Error("Cache.addCatalog: Cannot add catalog while download is in progress.")); }; if (_arg1 != null){ this.m_Catalogs.push(_arg1); }; } public function pushAssetForwardInLoadingQueueByKey(_arg1:String):void{ if ((((this.m_State == STATE_OPTIONAL_ASSETS_LOADING)) && (!((_arg1 == null))))){ if (this.m_AssetLoadQueue.contains(_arg1)){ this.m_AssetLoadQueue.updateHeapPriority(_arg1, int.MIN_VALUE); }; }; } public function get bytesTotalMandatory():uint{ return (this.m_BytesTotalMandatory); } public function set currentArea(_arg1:int):void{ this.m_CurrentArea = _arg1; } public function get bytesLoaded():uint{ return (this.m_BytesLoaded); } protected function loadCatalog():Boolean{ var _local1:Catalog; if (this.m_Catalogs.length > this.m_LoadNext){ while ((((this.m_Catalogs.length > this.m_LoadNext)) && ((this.m_LoadConcurrent < this.m_ConcurrentLoaders)))) { _local1 = this.m_Catalogs[this.m_LoadNext++]; _local1.addEventListener(ErrorEvent.ERROR, this.onCatalogError); _local1.addEventListener(Event.COMPLETE, this.onCatalogComplete); _local1.addEventListener(IOErrorEvent.IO_ERROR, this.onCatalogError); _local1.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onCatalogError); _local1.load(); this.m_LoadConcurrent++; }; return (true); }; return (false); } public function getAppearances():AppearancesAsset{ if (this.m_AssetKeyAppearances != null){ return ((this.getAssetByKey(this.m_AssetKeyAppearances) as AppearancesAsset)); }; return (null); } protected function unloadAssets():void{ var _local1:AssetBase; for each (_local1 in this.m_Assets) { _local1.removeEventListener(ErrorEvent.ERROR, this.onAssetError); _local1.removeEventListener(IOErrorEvent.IO_ERROR, this.onAssetError); _local1.removeEventListener(Event.COMPLETE, this.onAssetComplete); _local1.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onAssetError); _local1.unload(); }; this.m_Assets = new Dictionary(); this.m_BytesLoaded = 0; this.m_BytesLoadedMandatory = 0; this.m_BytesTotal = 0; this.m_BytesTotalMandatory = 0; this.m_LoadConcurrent = 0; this.m_LoadNext = 0; } public function get bytesLoadedMandatory():uint{ return (this.m_BytesLoadedMandatory); } public function getAssetByKey(_arg1:Object):AssetBase{ if (this.m_State >= STATE_CATALOGS_LOADING){ return ((this.m_Assets[_arg1] as AssetBase)); }; return (null); } public function get loadQueueDelay():uint{ return (this.m_LoadQueueDelay); } protected function unloadTimer():void{ if (this.m_Timer != null){ this.m_Timer.removeEventListener(TimerEvent.TIMER, this.onTimer); this.m_Timer.stop(); }; } public function getGameBinary():GameBinaryAsset{ if (this.m_AssetKeyGameBinary != null){ return ((this.getAssetByKey(this.m_AssetKeyGameBinary) as GameBinaryAsset)); }; return (null); } protected function onCatalogComplete(_arg1:Event):void{ var _local2:Catalog; if (((!((_arg1 == null))) && (!(((_local2 = (_arg1.target as Catalog)) == null))))){ _local2.removeEventListener(ErrorEvent.ERROR, this.onCatalogError); _local2.removeEventListener(Event.COMPLETE, this.onCatalogComplete); _local2.removeEventListener(IOErrorEvent.IO_ERROR, this.onCatalogError); _local2.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onCatalogError); this.m_LoadConcurrent--; }; } public function get bytesTotal():uint{ return (this.m_BytesTotal); } public function getAssetsByClass(_arg1:Class):Vector.{ var _local3:AssetBase; var _local2:Vector. = new Vector.(); for each (_local3 in this.m_Assets) { if (((((!((_local3 == null))) && ((_local3.optional == false)))) && ((_local3 is _arg1)))){ _local2.push(_local3); }; }; return (_local2); } public function getDefaultOptionsTutorial():OptionsAsset{ if (this.m_AssetKeyOptionsDefaultTutorial != null){ return ((this.getAssetByKey(this.m_AssetKeyOptionsDefaultTutorial) as OptionsAsset)); }; return (null); } public function get currentArea():int{ return (this.m_CurrentArea); } protected function loadAsset():Boolean{ var _local1:AssetInformationInternal; var _local2:AssetBase; if (this.m_AssetLoadQueue.length > 0){ while ((((this.m_AssetLoadQueue.length > 0)) && ((this.m_LoadConcurrent < this.m_ConcurrentLoaders)))) { _local1 = AssetInformationInternal(this.m_AssetLoadQueue.extractMinItem()); _local2 = _local1.m_Asset; _local2.addEventListener(ErrorEvent.ERROR, this.onAssetError); _local2.addEventListener(Event.COMPLETE, this.onAssetComplete); _local2.addEventListener(IOErrorEvent.IO_ERROR, this.onAssetError); _local2.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onAssetError); _local2.load(); this.m_LoadConcurrent++; }; return (true); }; return (false); } private function checkAssets():Boolean{ if (this.m_State >= STATE_MANDATORY_ASSETS_LOADING){ throw (new Error("Cache.checkAssets: Cannot check assets while a download is in progress.")); }; if ((((((((this.m_AssetLoadQueue.length > 0)) && (this.m_AssetLoadQueue.contains(this.m_AssetKeyGameBinary)))) && (((((this.m_AssetLoadQueue.contains(this.m_AssetKeyOptionsDefault)) || (this.m_AssetLoadQueue.contains(this.m_AssetKeyOptionsDefaultTutorial)))) || (this.m_AssetLoadQueue.contains(this.m_AssetKeyOptionsCurrent)))))) && (this.m_AssetLoadQueue.contains(this.m_AssetKeyAppearances)))){ return (true); }; return (false); } protected function onAssetComplete(_arg1:Event):void{ var _local3:Object; var _local4:ProgressEvent; var _local5:AssetProviderEvent; var _local2:AssetBase; if (((!((_arg1 == null))) && (!(((_local2 = (_arg1.target as AssetBase)) == null))))){ _local2.removeEventListener(ErrorEvent.ERROR, this.onAssetError); _local2.removeEventListener(Event.COMPLETE, this.onAssetComplete); _local2.removeEventListener(IOErrorEvent.IO_ERROR, this.onAssetError); _local2.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onAssetError); this.m_LoadConcurrent--; this.m_BytesLoaded = (this.m_BytesLoaded + _local2.size); _local3 = _local2.uniqueKey; _local4 = new ProgressEvent(ProgressEvent.PROGRESS); _local4.bytesLoaded = this.m_BytesLoaded; _local4.bytesTotal = (((this.m_State <= STATE_MANDATORY_ASSETS_LOADING)) ? this.m_BytesTotalMandatory : this.m_BytesTotal); dispatchEvent(_local4); _local5 = new AssetProviderEvent(AssetProviderEvent.ASSET_LOADED); _local5.asset = _local2; _local5.assetKey = _local3; dispatchEvent(_local5); }; } protected function unloadCatalogs():void{ var _local1:int = (this.m_Catalogs.length - 1); while (_local1 >= 0) { if (this.m_Catalogs[_local1] != null){ this.m_Catalogs[_local1].removeEventListener(ErrorEvent.ERROR, this.onCatalogError); this.m_Catalogs[_local1].removeEventListener(Event.COMPLETE, this.onCatalogComplete); this.m_Catalogs[_local1].removeEventListener(IOErrorEvent.IO_ERROR, this.onCatalogError); this.m_Catalogs[_local1].removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onCatalogError); this.m_Catalogs[_local1].unload(); this.m_Catalogs[_local1] = null; }; _local1--; }; this.m_Catalogs.length = 0; } private function loadError(_arg1:ErrorEvent=null):void{ var _local2:ErrorEvent; this.unloadTimer(); this.unloadCatalogs(); this.unloadAssets(); this.m_State = STATE_ERROR; if (_arg1 != null){ dispatchEvent(_arg1.clone()); } else { _local2 = new ErrorEvent(ErrorEvent.ERROR); _local2.text = ERROR_INTERNAL; dispatchEvent(_local2); }; } protected function onTimer(_arg1:TimerEvent):void{ var _local2:AssetInformationInternal = (this.m_AssetLoadQueue.peekMinItem() as AssetInformationInternal); var _local3:Event; switch (this.m_State){ case STATE_CATALOGS_LOADING: if (((!(this.loadCatalog())) && ((this.m_LoadConcurrent == 0)))){ if (this.checkAssets()){ this.removeObsoleteAssets(); this.m_State = STATE_MANDATORY_ASSETS_LOADING; } else { this.loadError(); }; }; break; case STATE_MANDATORY_ASSETS_LOADING: if (((!((_local2 == null))) && ((_local2.m_Mandatory == true)))){ this.loadAsset(); } else { if (this.m_LoadConcurrent == 0){ this.m_State = STATE_OPTIONAL_ASSETS_LOADING; _local3 = new AssetProviderEvent(AssetProviderEvent.MANDATORY_ASSETS_LOADED); dispatchEvent(_local3); }; }; break; case STATE_OPTIONAL_ASSETS_LOADING: if (_local2 != null){ this.loadAsset(); } else { if (this.m_LoadConcurrent == 0){ this.unloadCatalogs(); this.unloadTimer(); this.m_State = STATE_DONE; _local3 = new AssetProviderEvent(AssetProviderEvent.ALL_ASSETS_LOADED); dispatchEvent(_local3); }; }; break; default: this.loadError(); }; } public function removeAsset(_arg1:AssetBase):void{ var _local2:Object; if (_arg1 != null){ _local2 = _arg1.uniqueKey; if ((_local2 in this.m_Assets)){ delete this.m_Assets[_local2]; }; }; } public function addAsset(_arg1:AssetBase):void{ var _local2:AssetInformationInternal; var _local3:int; var _local4:Object; var _local5:SpritesAsset; var _local6:uint; var _local7:OptionsAsset; if (this.m_State >= STATE_MANDATORY_ASSETS_LOADING){ throw (new Error("Cache.addAsset: Cannot add asset while download is in progress.")); }; if (_arg1 != null){ _local2 = new AssetInformationInternal(); _local2.m_Asset = _arg1; _local3 = PRIORITY_ASSET_MANDATORY; if ((_arg1 is SpritesAsset)){ _local5 = (_arg1 as SpritesAsset); if (this.currentArea == this.NO_AREA_SET){ _local3 = ((_arg1.optional) ? PRIORITY_ASSET_BACKGROUND_HIGH_PRIO : PRIORITY_ASSET_MANDATORY); } else { _local6 = 0; while (_local6 < _local5.areas.length) { if (_local5.areas[_local6] <= this.currentArea){ _local3 = ((_arg1.optional) ? PRIORITY_ASSET_BACKGROUND_HIGH_PRIO : PRIORITY_ASSET_MANDATORY); break; }; _local3 = (PRIORITY_ASSET_BACKGROUND + Math.max(0, _local5.areas[_local6])); _local6++; }; }; } else { if (_arg1.optional){ _local3 = PRIORITY_ASSET_BACKGROUND_HIGH_PRIO; } else { _local3 = PRIORITY_ASSET_MANDATORY; if ((_arg1 is GameBinaryAsset)){ this.m_AssetKeyGameBinary = _arg1.uniqueKey; } else { if ((_arg1 is OptionsAsset)){ _local7 = (_arg1 as OptionsAsset); if (((_local7.isDefaultOptions) && (_local7.isTutorialOptions))){ this.m_AssetKeyOptionsDefaultTutorial = _arg1.uniqueKey; } else { if (((_local7.isDefaultOptions) && (!(_local7.isTutorialOptions)))){ this.m_AssetKeyOptionsDefault = _arg1.uniqueKey; } else { this.m_AssetKeyOptionsCurrent = _arg1.uniqueKey; }; }; } else { if ((_arg1 is AppearancesAsset)){ this.m_AssetKeyAppearances = _arg1.uniqueKey; } else { if ((_arg1 is SessiondumpAsset)){ _local3 = PRIORITY_ASSET_MANUAL; this.m_AssetKeySessiondump = _arg1.uniqueKey; } else { if ((_arg1 is SessiondumpHintsAsset)){ this.m_AssetKeySessiondumpHints = _arg1.uniqueKey; }; }; }; }; }; }; }; if (_local3 <= PRIORITY_ASSET_MANDATORY){ this.m_BytesTotalMandatory = (this.m_BytesTotalMandatory + _arg1.size); _local2.m_Mandatory = true; } else { _local2.m_Mandatory = false; }; this.m_BytesTotal = (this.m_BytesTotal + _arg1.size); _local4 = _arg1.uniqueKey; if (_local4 == null){ throw (new Error(("Cache.addAsset: Could not create key for asset: " + _arg1))); }; if (this.m_AssetLoadQueue.contains(_local4)){ throw (new Error(("Cache.addAsset: Duplicate asset: " + _local4))); }; this.m_Assets[_local4] = _local2.m_Asset; if (_local3 != PRIORITY_ASSET_MANUAL){ this.m_AssetLoadQueue.put(_local4, _local2, _local3); }; }; } public function get loadingFinished():Boolean{ return ((this.m_State == STATE_DONE)); } public function getCurrentOptions():OptionsAsset{ if (this.m_AssetKeyOptionsCurrent != null){ return ((this.getAssetByKey(this.m_AssetKeyOptionsCurrent) as OptionsAsset)); }; return (null); } public function load():void{ if (this.m_State == STATE_DEFAULT){ this.m_State = STATE_CATALOGS_LOADING; this.unloadTimer(); this.m_Timer = new Timer(this.m_LoadQueueDelay, 0); this.m_Timer.addEventListener(TimerEvent.TIMER, this.onTimer); this.m_Timer.start(); }; } protected function onCatalogError(_arg1:ErrorEvent):void{ var _local2:Catalog; if (((!((_arg1 == null))) && (!(((_local2 = (_arg1.target as Catalog)) == null))))){ _local2.removeEventListener(ErrorEvent.ERROR, this.onCatalogError); _local2.removeEventListener(Event.COMPLETE, this.onCatalogComplete); _local2.removeEventListener(IOErrorEvent.IO_ERROR, this.onCatalogError); _local2.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onCatalogError); }; this.loadError(_arg1); } public function set loadQueueDelay(_arg1:uint):void{ if (_arg1 == 0){ throw (new ArgumentError("AssetCache.loadQueueDelay: value must be more than zero")); }; if (this.m_Timer != null){ this.m_Timer.delay = _arg1; }; this.m_LoadQueueDelay = _arg1; } public function getSessiondumpHintsAsset():SessiondumpHintsAsset{ if (this.m_AssetKeySessiondumpHints != null){ return ((this.getAssetByKey(this.m_AssetKeySessiondumpHints) as SessiondumpHintsAsset)); }; return (null); } public function unload():void{ this.unloadAssets(); this.unloadCatalogs(); this.unloadTimer(); } } }//package loader.asset import tibia.game.*; class AssetInformationInternal { public var m_Mandatory:Boolean = true; public var m_Manual:Boolean = false; public var m_Asset:AssetBase = null; public function AssetInformationInternal(){ } } package loader.asset { import flash.events.*; import tibia.game.*; public class AssetProviderEvent extends Event { public static const ALL_ASSETS_LOADED:String = "allassetsloaded"; public static const ASSET_LOADED:String = "assetloaded"; public static const MANDATORY_ASSETS_LOADED:String = "mandatoryassetsloaded"; private var m_AssetKey:Object = null; private var m_Asset:AssetBase = null; public function AssetProviderEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } public function get asset():AssetBase{ return (this.m_Asset); } public function set assetKey(_arg1:Object):void{ this.m_AssetKey = _arg1; } public function set asset(_arg1:AssetBase):void{ this.m_Asset = _arg1; } public function get assetKey():Object{ return (this.m_AssetKey); } } }//package loader.asset package loader { import flash.events.*; import flash.net.*; import flash.utils.*; public class WebsiteSessionRefresher { protected var m_Loader:URLLoader = null; protected var m_RefreshRequest:URLRequest = null; protected var m_RefreshInterval:int = 0; protected var m_RefreshURL:String = null; protected var m_Timer:Timer = null; public function WebsiteSessionRefresher(_arg1:String, _arg2:int=900000){ this.m_Loader = new URLLoader(); this.m_RefreshInterval = _arg2; this.m_RefreshURL = _arg1; this.m_RefreshRequest = new URLRequest(this.m_RefreshURL); this.m_Timer = new Timer(this.m_RefreshInterval, 0); } public function start():void{ if (!this.m_Timer.running){ this.m_Loader.addEventListener(IOErrorEvent.IO_ERROR, this.onLoaderEvent); this.m_Loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoaderEvent); this.m_Timer.addEventListener(TimerEvent.TIMER, this.onTimer); this.m_Timer.start(); }; } protected function onLoaderEvent(_arg1:Event):void{ if (_arg1 != null){ _arg1.preventDefault(); _arg1.stopImmediatePropagation(); }; } public function stop():void{ if (this.m_Timer.running){ this.m_Loader.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoaderEvent); this.m_Loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoaderEvent); try { this.m_Loader.close(); } catch(_Error) { }; this.m_Timer.removeEventListener(TimerEvent.TIMER, this.onTimer); this.m_Timer.stop(); }; } protected function onTimer(_arg1:TimerEvent):void{ var a_Event:* = _arg1; try { this.m_Loader.close(); } catch(e:Error) { }; this.m_Loader.load(this.m_RefreshRequest); } } }//package loader package { import mx.resources.*; public class en_US$utils_properties extends ResourceBundle { public function en_US$utils_properties(){ super("en_US", "utils"); } override protected function getContent():Object{ var _local1:Object = {partialBlockDropped:"A partial block ({0} of 4 bytes) was dropped. Decoded data is probably truncated!"}; return (_local1); } } }//package package tibia.game { import flash.events.*; import flash.net.*; import shared.utility.*; public class AssetBase extends EventDispatcher { private var m_URL:String = null; private var m_Loader:URLLoader = null; private var m_Optional:Boolean = false; private var m_Priority:int = 0; private var m_ContentType:String = null; protected var m_NoCacheEnabled:Boolean = false; private var m_Size:int = 0; private var m_Name:String = null; public function AssetBase(_arg1:String, _arg2:int=0, _arg3:String="application/octet-stream"){ this.m_URL = _arg1; if ((((this.m_URL == null)) || ((this.m_URL.length < 1)))){ throw (new ArgumentError("AssetBase.AssetBase: Invalid URL.")); }; this.m_Size = _arg2; this.m_ContentType = _arg3; if ((((this.m_ContentType == null)) || ((this.m_ContentType.length < 1)))){ throw (new ArgumentError("AssetBase.AssetBase: Invalid content type.")); }; this.m_Name = URLHelper.s_GetBasename(this.m_URL); if ((((this.m_Name == null)) || ((this.m_Name.length < 1)))){ throw (new ArgumentError("AssetBase.AssetBase: Invalid name.")); }; } public function set optional(_arg1:Boolean):void{ this.m_Optional = _arg1; } public function get size():int{ return (this.m_Size); } protected function get dataFormatForContentType():String{ if (this.contentType.indexOf("text/") == 0){ return (URLLoaderDataFormat.TEXT); }; return (URLLoaderDataFormat.BINARY); } protected function processDownloadedData(_arg1:URLLoader):Boolean{ return (false); } public function set priority(_arg1:int):void{ this.m_Priority = _arg1; } public function get name():String{ return (this.m_Name); } public function get loaded():Boolean{ return (false); } private function onLoaderComplete(_arg1:Event):void{ if (this.processDownloadedData(this.m_Loader)){ this.unloadLoader(); dispatchEvent(_arg1); } else { this.unload(); this.unloadLoader(); dispatchEvent(new ErrorEvent(ErrorEvent.ERROR, false, false)); }; } public function get uniqueKey():Object{ return (this.url); } public function get contentType():String{ return (this.m_ContentType); } protected function makeDownloadRequest():URLRequest{ var _local1:URLRequest = new URLRequest(((this.m_NoCacheEnabled) ? URLHelper.s_NoCache(this.url) : this.url)); return (_local1); } private function onLoaderError(_arg1:ErrorEvent):void{ this.unload(); this.unloadLoader(); dispatchEvent(_arg1); } private function onLoaderProgress(_arg1:ProgressEvent):void{ dispatchEvent(_arg1); } public function get optional():Boolean{ return (this.m_Optional); } protected function resetDownloadedData():void{ } public function get priority():int{ return (this.m_Priority); } public function load():void{ this.resetDownloadedData(); this.unloadLoader(); var _local1:URLRequest = this.makeDownloadRequest(); this.m_Loader = new URLLoader(); this.m_Loader.dataFormat = this.dataFormatForContentType; this.m_Loader.addEventListener(Event.COMPLETE, this.onLoaderComplete); this.m_Loader.addEventListener(IOErrorEvent.IO_ERROR, this.onLoaderError); this.m_Loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoaderError); this.m_Loader.addEventListener(ProgressEvent.PROGRESS, this.onLoaderProgress); this.m_Loader.load(_local1); } public function get url():String{ return (this.m_URL); } private function unloadLoader():void{ if (this.m_Loader != null){ try { this.m_Loader.close(); } catch(e:Error) { }; this.m_Loader.removeEventListener(Event.COMPLETE, this.onLoaderComplete); this.m_Loader.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoaderError); this.m_Loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoaderError); this.m_Loader.removeEventListener(ProgressEvent.PROGRESS, this.onLoaderProgress); this.m_Loader = null; }; } public function unload():void{ this.resetDownloadedData(); this.unloadLoader(); } } }//package tibia.game package tibia.game { import __AS3__.vec.*; public class SpritesAsset extends Asset { private var m_LastSpriteID:uint = 0; private var m_SpriteType:uint = 0; private var m_Areas:Vector. = null; private var m_FirstSpriteID:uint = 0; public function SpritesAsset(_arg1:String, _arg2:int, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:Vector.){ super(_arg1, _arg2); this.m_FirstSpriteID = _arg3; this.m_LastSpriteID = _arg4; this.m_SpriteType = _arg5; this.m_Areas = _arg6; } public function get areas():Vector.{ return (this.m_Areas); } public function get lastSpriteID():uint{ return (this.m_LastSpriteID); } public function get firstSpriteID():uint{ return (this.m_FirstSpriteID); } public function get spriteType():uint{ return (this.m_SpriteType); } } }//package tibia.game package tibia.game { import flash.events.*; import __AS3__.vec.*; import tibia.network.*; import loader.asset.*; public interface IGameClient extends IEventDispatcher { function set isActive(_arg1:Boolean):void; function saveOptions():void; function unload():void; function setConnectionDataList(_arg1:Vector., _arg2:uint):void; function setSessionKey(_arg1:String):void; function initializeGameClient(_arg1:Boolean, _arg2:Object=null):void; function setClientSize(_arg1:uint, _arg2:uint):void; function get isActive():Boolean; function get isRunning():Boolean; function get currentConnection():Object; function saveLocalData():void; function setAssetProvider(_arg1:IAssetProvider):void; } }//package tibia.game package tibia.game { import flash.events.*; import flash.net.*; public class SecureWebsiteService extends EventDispatcher { private var m_Loader:URLLoader = null; private var m_UploadToken:String = null; private var m_ServiceData:Object = null; private var m_ServiceURL:String = null; public function SecureWebsiteService(_arg1:String){ if (_arg1 == null){ throw (new ArgumentError("SecureWebsiteService.SecureWebsiteService: service url can't be null")); }; this.m_ServiceURL = _arg1; } private function onUploadError(_arg1:ErrorEvent):void{ this.unloadLoader(); dispatchEvent(_arg1); } public function startServiceCall(_arg1:String):void{ this.unloadLoader(); this.m_UploadToken = null; this.m_Loader = new URLLoader(); this.m_Loader.addEventListener(Event.COMPLETE, this.onUploadComplete); this.m_Loader.addEventListener(IOErrorEvent.IO_ERROR, this.onUploadError); this.m_Loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onUploadError); var _local2:URLRequest = new URLRequest(this.m_ServiceURL); _local2.contentType = "application/json"; _local2.method = URLRequestMethod.POST; _local2.data = JSON.stringify({sid:_arg1}); this.m_Loader.load(_local2); } private function unloadLoader():void{ if (this.m_Loader != null){ try { this.m_Loader.close(); } catch(e:Error) { }; this.m_Loader.removeEventListener(Event.COMPLETE, this.onUploadComplete); this.m_Loader.removeEventListener(IOErrorEvent.IO_ERROR, this.onUploadError); this.m_Loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onUploadError); this.m_Loader = null; }; } private function onUploadComplete(_arg1:Event):void{ const ErrorCode:* = 0; const ServiceEvent:* = null; const _URLRequest:* = null; const _SecureWebsiteServiceEvent:* = null; var a_Event:* = _arg1; var Result:* = null; var _Event:* = null; try { Result = JSON.parse(this.m_Loader.data); } catch(e:TypeError) { }; if ((((Result == null)) || (((("errorcode" in Result)) && (!((Result["errorcode"] === 0))))))){ this.m_UploadToken = null; this.unloadLoader(); if (Result == null){ _Event = new ErrorEvent(ErrorEvent.ERROR, false, false, "Website service request failed: Result is empty"); } else { ErrorCode = Result["errorcode"]; _Event = new ErrorEvent(ErrorEvent.ERROR, false, false, ("Website service request failed: " + Result["errorcode"]), ErrorCode); }; dispatchEvent(_Event); return; }; if (this.m_UploadToken == null){ if (("token" in Result)){ this.m_UploadToken = Result["token"]; }; if (this.m_UploadToken != null){ this.m_ServiceData = new Object(); ServiceEvent = new SecureWebsiteServiceEvent(SecureWebsiteServiceEvent.REQUEST_DATA, false, true, this.m_ServiceData); dispatchEvent(ServiceEvent); if (ServiceEvent.isDefaultPrevented()){ this.unloadLoader(); this.m_UploadToken = null; } else { this.m_ServiceData["token"] = this.m_UploadToken; _URLRequest = new URLRequest(this.m_ServiceURL); _URLRequest.contentType = "application/json"; _URLRequest.method = URLRequestMethod.POST; _URLRequest.data = JSON.stringify(this.m_ServiceData); this.m_Loader.load(_URLRequest); }; } else { this.m_UploadToken = null; this.unloadLoader(); _Event = new ErrorEvent(ErrorEvent.ERROR, false, false, "Invalid token."); dispatchEvent(_Event); }; } else { _SecureWebsiteServiceEvent = new SecureWebsiteServiceEvent(SecureWebsiteServiceEvent.COMPLETE, false, true, Result); dispatchEvent(_SecureWebsiteServiceEvent); this.m_UploadToken = null; this.unloadLoader(); dispatchEvent(a_Event); }; } } }//package tibia.game package tibia.game { import flash.events.*; import flash.net.*; import flash.utils.*; import shared.utility.*; import __AS3__.vec.*; import tibia.options.*; import tibia.appearances.*; import tibia.sessiondump.*; import tibia.sessiondump.hints.*; import flash.system.*; import tibia.tutorial.*; public class Asset extends AssetBase { private var m_RawBytes:ByteArray = null; protected var m_SaveAsLSO:Boolean = true; public function Asset(_arg1:String, _arg2:int){ super(_arg1, _arg2); } public static function s_FromXML(_arg1:XML):AssetBase{ var _local4:String; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:Vector.; var _local11:uint; var _local12:int; var _local2:String = ((_arg1)!=null) ? _arg1.localName() : null; var _local3:XMLList; if ((((((((((((((((((((_local2 == "appearances")) || ((_local2 == "binary")))) || ((_local2 == "currentOptions")))) || ((_local2 == "defaultOptions")))) || ((_local2 == "defaultOptionsTutorial")))) || ((_local2 == "tutorialProgressService")))) || ((_local2 == "sprites")))) || ((_local2 == "tutorialSessiondump")))) || ((_local2 == "tutorialSessiondumpHints")))) || ((_local2 == "tutorialProgressService")))){ _local3 = _arg1.url; if ((((_local3 == null)) || (!((_local3.length() == 1))))){ return (null); }; _local4 = _local3[0].toString(); _local5 = 0; _local3 = _arg1.size; if (((((!((_local3 == null))) && ((_local3.length() == 1)))) && (!((_local3[0].toString().match(/^[1-9[0-9]*$/) == null))))){ _local5 = int(_local3[0].toString()); }; _local6 = 0; _local3 = _arg1.version; if (((((!((_local3 == null))) && ((_local3.length() == 1)))) && (!((_local3[0].toString().match(/^[1-9[0-9]*$/) == null))))){ _local6 = int(_local3[0].toString()); }; if (((((((((!((_local2 == "currentOptions"))) && (!((_local2 == "defaultOptions"))))) && (!((_local2 == "defaultOptionsTutorial"))))) && (!((_local2 == "tutorialProgressService"))))) && ((_local5 < 1)))){ return (null); }; if (_local2 == "appearances"){ return (new AppearancesAsset(_local4, _local5, _local6)); }; if (_local2 == "binary"){ return (new GameBinaryAsset(_local4, _local5)); }; if (_local2 == "currentOptions"){ return (new OptionsAsset(_local4, _local5, "application/json", false, false)); }; if (_local2 == "defaultOptions"){ return (new OptionsAsset(_local4, _local5, "text/xml", true, false)); }; if (_local2 == "defaultOptionsTutorial"){ return (new OptionsAsset(_local4, _local5, "text/xml", true, true)); }; if (_local2 == "sprites"){ _local7 = -1; _local3 = _arg1.firstSpriteID; if (((((!((_local3 == null))) && ((_local3.length() == 1)))) && (!((_local3[0].toString().match(/^[0-9]+$/) == null))))){ _local7 = int(_local3[0].toString()); }; _local8 = -1; _local3 = _arg1.lastSpriteID; if (((((!((_local3 == null))) && ((_local3.length() == 1)))) && (!((_local3[0].toString().match(/^[0-9]+$/) == null))))){ _local8 = int(_local3[0].toString()); }; _local9 = -1; _local3 = _arg1.spriteType; if (((((!((_local3 == null))) && ((_local3.length() == 1)))) && (!((_local3[0].toString().match(/^[0-9]+$/) == null))))){ _local9 = int(_local3[0].toString()); }; _local10 = new Vector.(); _local3 = _arg1.area; if (((!((_local3 == null))) && ((_local3.length() > 0)))){ _local11 = 0; while (_local11 < _local3.length()) { if (_local3[_local11].toString().match(/^[0-9]+$/) != null){ _local12 = int(_local3[_local11].toString()); _local10.push(_local12); }; _local11++; }; }; return (new SpritesAsset(_local4, _local5, _local7, _local8, _local9, _local10)); }; if (_local2 == "tutorialSessiondump"){ return (new SessiondumpAsset(_local4, _local5)); }; if (_local2 == "tutorialSessiondumpHints"){ return (new SessiondumpHintsAsset(_local4, _local5)); }; if (_local2 == "tutorialProgressService"){ return (new TutorialProgressServiceAsset(_local4, _local5, "application/json")); }; return (null); }; return (null); } override protected function resetDownloadedData():void{ this.m_RawBytes = null; System.pauseForGCIfCollectionImminent(0.95); } public function get rawBytes():ByteArray{ return (this.m_RawBytes); } override public function load():void{ const _SharedObjectManager:* = null; const _SharedObject:* = null; this.resetDownloadedData(); if (this.m_SaveAsLSO){ _SharedObjectManager = SharedObjectManager.s_GetInstance(); if (((SharedObjectManager.s_SharedObjectsAvailable()) && (!((_SharedObjectManager == null))))){ try { _SharedObject = _SharedObjectManager.getLocal(name); this.m_RawBytes = _SharedObject.data.RAW_BYTES; } catch(e) { }; }; if (((!((this.m_RawBytes == null))) && ((((size == 0)) || ((this.m_RawBytes.length == size)))))){ setTimeout(dispatchEvent, 0, new Event(Event.COMPLETE, false, false)); } else { super.load(); }; } else { super.load(); }; } override public function get loaded():Boolean{ return (((!((this.m_RawBytes == null))) || ((optional == true)))); } override protected function processDownloadedData(_arg1:URLLoader):Boolean{ const _SharedObject:* = null; var a_Loader:* = _arg1; this.m_RawBytes = a_Loader.data; const _SharedObjectManager:* = SharedObjectManager.s_GetInstance(); if (((((this.m_SaveAsLSO) && (SharedObjectManager.s_SharedObjectsAvailable()))) && (!((_SharedObjectManager == null))))){ try { _SharedObject = _SharedObjectManager.getLocal(name); _SharedObject.data.RAW_BYTES = this.m_RawBytes; _SharedObject.flush(); _SharedObjectManager.syncListing(); } catch(e) { }; }; return (true); } } }//package tibia.game package tibia.game { import tibia.network.*; public class AccountCharacter implements IConnectionData { public static const CLIENT_VERSION:uint = 2019; public static const CLIENT_PREVIEW_STATE:uint = 0; public static const PREVIEW_STATE_PREVIEW_NO_ACTIVE_CHANGE:uint = 1; public static const PREVIEW_STATE_PREVIEW_WITH_ACTIVE_CHANGE:uint = 2; public static const CLIENT_TYPE:uint = 3; public static const PREVIEW_STATE_REGULAR:uint = 0; private var m_World:String = null; private var m_Address:String = null; private var m_WorldPreviewState:uint = 0; private var m_Port:int = 0; private var m_SessionKey:String = null; private var m_Name:String = null; public function AccountCharacter(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:int, _arg6:uint){ this.m_SessionKey = _arg1; this.m_Name = _arg2; this.m_World = _arg3; this.m_Address = _arg4; this.m_Port = _arg5; this.m_WorldPreviewState = _arg6; } public function get port():int{ return (this.m_Port); } public function get name():String{ return (this.m_Name); } public function get worldPreviewState():uint{ return (this.m_WorldPreviewState); } public function get sessionKey():String{ return (this.m_SessionKey); } public function get address():String{ return (this.m_Address); } public function get world():String{ return (this.m_World); } } }//package tibia.game package tibia.game { import flash.events.*; public class GameEvent extends Event { public static const READY:String = "GAME_READY"; public static const CLOSE:String = "GAME_CLOSE"; public static const ERROR:String = "GAME_ERROR"; public var message:String = null; public function GameEvent(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false, _arg4:String=null){ super(_arg1, _arg2, _arg3); this.message = _arg4; } override public function clone():Event{ return (new GameEvent(type, bubbles, cancelable, this.message)); } } }//package tibia.game package tibia.game { import flash.events.*; public class SecureWebsiteServiceEvent extends Event { public static const COMPLETE:String = "secureWebsiteServiceComplete"; public static const REQUEST_DATA:String = "secureWebsiteServiceRequestData"; private var m_ServiceData:Object = null; public function SecureWebsiteServiceEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Object=null){ super(_arg1, _arg2, _arg3); this.m_ServiceData = _arg4; } public function get serviceData():Object{ return (this.m_ServiceData); } } }//package tibia.game package tibia.game { public class GameBinaryAsset extends Asset { public function GameBinaryAsset(_arg1:String, _arg2:int){ super(_arg1, _arg2); } } }//package tibia.game package tibia.options { import flash.events.*; import tibia.game.*; import flash.net.*; import flash.utils.*; import mx.utils.*; import flash.errors.*; public class OptionsAsset extends AssetBase { private var m_SecureWebsiteService:SecureWebsiteService = null; private var m_UploadXML:XML = null; private var m_XML:XML = null; private var m_IsTutorialOptions:Boolean = false; private var m_IsDefaultOptions:Boolean = false; public function OptionsAsset(_arg1:String, _arg2:int=0, _arg3:String="application/json", _arg4:Boolean=false, _arg5:Boolean=false){ super(_arg1, _arg2, _arg3); this.m_IsDefaultOptions = _arg4; this.m_IsTutorialOptions = _arg5; m_NoCacheEnabled = true; if (_arg4 == false){ this.m_SecureWebsiteService = new SecureWebsiteService(_arg1); this.m_SecureWebsiteService.addEventListener(SecureWebsiteServiceEvent.REQUEST_DATA, this.onWebsiteServiceRequestData); this.m_SecureWebsiteService.addEventListener(SecureWebsiteServiceEvent.COMPLETE, this.onWebsiteServiceComplete); this.m_SecureWebsiteService.addEventListener(ErrorEvent.ERROR, this.onWebsiteServiceError); this.m_SecureWebsiteService.addEventListener(IOErrorEvent.IO_ERROR, this.onWebsiteServiceError); }; } private function onWebsiteServiceRequestData(_arg1:SecureWebsiteServiceEvent):void{ const _ByteArray:* = null; const Encoder:* = null; var a_Event:* = _arg1; try { _ByteArray = new ByteArray(); _ByteArray.writeUTFBytes(this.m_UploadXML.toXMLString()); _ByteArray.compress(); Encoder = new Base64Encoder(); Encoder.encodeBytes(_ByteArray); a_Event.serviceData["options"] = Encoder.toString(); } catch(Error) { a_Event.preventDefault(); }; } public function upload(_arg1:XML, _arg2:String):void{ if (_arg1 == null){ throw (new Error("OptionsAsset.upload: Invalid data.")); }; this.m_UploadXML = _arg1; this.m_SecureWebsiteService.startServiceCall(_arg2); } override protected function processDownloadedData(_arg1:URLLoader):Boolean{ const Result:* = null; const Decoder:* = null; const _ByteArray:* = null; var a_Loader:* = _arg1; var XMLString:* = null; if (contentType == "application/json"){ try { Result = JSON.parse(String(a_Loader.data)); if (("options" in Result)){ Decoder = new Base64Decoder(); Decoder.decode(Result["options"]); _ByteArray = Decoder.toByteArray(); _ByteArray.uncompress(); XMLString = _ByteArray.readUTFBytes(_ByteArray.bytesAvailable); }; } catch(e:TypeError) { } catch(e:IOError) { }; } else { if (contentType == "text/xml"){ XMLString = String(a_Loader.data); } else { return (false); }; }; try { this.m_XML = new XML(XMLString); } catch(e) { }; //unresolved jump var _local4:* = #InvalidMultinameIndex#; var _local5:* = !((this.m_XML == null)); 1; return (_local5); /*not popped 0 */ /*not popped -1 */ } public function get isDefaultOptions():Boolean{ return (this.m_IsDefaultOptions); } override public function get loaded():Boolean{ return (!((this.m_XML == null))); } private function onWebsiteServiceComplete(_arg1:SecureWebsiteServiceEvent):void{ this.m_UploadXML = null; dispatchEvent(new Event(Event.COMPLETE)); } public function get isTutorialOptions():Boolean{ return (this.m_IsTutorialOptions); } public function get xml():XML{ return (this.m_XML); } override protected function resetDownloadedData():void{ this.m_XML = null; } private function onWebsiteServiceError(_arg1:ErrorEvent):void{ this.m_UploadXML = null; dispatchEvent(_arg1); } } }//package tibia.options package tibia.network { public interface IConnectionData { } }//package tibia.network package tibia.sessiondump.hints { import tibia.game.*; public class SessiondumpHintsAsset extends Asset { private var m_CachedSessiondumpHintsObject:Object = null; public function SessiondumpHintsAsset(_arg1:String, _arg2:int){ super(_arg1, _arg2); this.m_NoCacheEnabled = true; } public function get sessiondumpHintsObject():Object{ var _local1:String; if ((((this.m_CachedSessiondumpHintsObject == null)) && (this.loaded))){ _local1 = rawBytes.readUTFBytes(rawBytes.bytesAvailable); this.m_CachedSessiondumpHintsObject = JSON.parse(_local1); }; return (this.m_CachedSessiondumpHintsObject); } } }//package tibia.sessiondump.hints package tibia.sessiondump { import tibia.network.*; public class SessiondumpConnectionData implements IConnectionData { private var m_Id:uint = 0; private var m_DurationMilliseconds:uint = 0; private var m_Url:String = null; public function SessiondumpConnectionData(_arg1:uint, _arg2:String, _arg3:uint){ this.m_Id = _arg1; this.m_Url = _arg2; this.m_DurationMilliseconds = _arg3; } public function get durationMilliseconds():uint{ return (this.m_DurationMilliseconds); } public function get id():uint{ return (this.m_Id); } public function get url():String{ return (this.m_Url); } } }//package tibia.sessiondump package tibia.sessiondump { import tibia.game.*; public class SessiondumpAsset extends Asset { public function SessiondumpAsset(_arg1:String, _arg2:int){ super(_arg1, _arg2); } } }//package tibia.sessiondump package tibia.appearances { import tibia.game.*; public class AppearancesAsset extends Asset { private var m_AppearancesContentRevision:int; public function AppearancesAsset(_arg1:String, _arg2:int, _arg3:int){ super(_arg1, _arg2); this.m_AppearancesContentRevision = _arg3; } public function set contentRevision(_arg1:int):void{ this.m_AppearancesContentRevision = _arg1; } public function get contentRevision():int{ return (this.m_AppearancesContentRevision); } } }//package tibia.appearances package tibia.tutorial { import flash.events.*; import tibia.game.*; import flash.net.*; import mx.resources.*; public class TutorialProgressServiceAsset extends AssetBase { private static const BUNDLE:String = "Communication"; private var m_CharacterName:String = null; private var m_SecureWebsiteService:SecureWebsiteService = null; private var m_ProgressIdentifierToUpload:String = null; public function TutorialProgressServiceAsset(_arg1:String, _arg2:int=0, _arg3:String="application/json"){ super(_arg1, _arg2, _arg3); this.m_SecureWebsiteService = new SecureWebsiteService(_arg1); this.m_SecureWebsiteService.addEventListener(SecureWebsiteServiceEvent.REQUEST_DATA, this.onWebsiteServiceRequestData); this.m_SecureWebsiteService.addEventListener(SecureWebsiteServiceEvent.COMPLETE, this.onWebsiteServiceComplete); this.m_SecureWebsiteService.addEventListener(ErrorEvent.ERROR, this.onWebsiteServiceError); this.m_SecureWebsiteService.addEventListener(IOErrorEvent.IO_ERROR, this.onWebsiteServiceError); } override protected function processDownloadedData(_arg1:URLLoader):Boolean{ return (true); } override public function get loaded():Boolean{ return (true); } private function onWebsiteServiceRequestData(_arg1:SecureWebsiteServiceEvent):void{ var a_Event:* = _arg1; try { a_Event.serviceData["progress"] = this.m_ProgressIdentifierToUpload; a_Event.serviceData["charactername"] = this.m_CharacterName; } catch(Error) { a_Event.preventDefault(); }; } override public function load():void{ super.load(); } private function onWebsiteServiceError(_arg1:ErrorEvent):void{ this.m_ProgressIdentifierToUpload = null; var _local2:String; var _local3:ErrorEvent; if (_arg1.errorID == -4){ _local2 = ResourceManager.getInstance().getString(BUNDLE, "MSG_USER_HAS_LOGGED_OUT_WHILE_PLAYING"); _local3 = new ErrorEvent(ErrorEvent.ERROR, false, false, _local2); dispatchEvent(_local3); } else { if (_arg1.errorID == -5){ } else { _local2 = ResourceManager.getInstance().getString(BUNDLE, "MSG_LOST_CONNECTION"); _local3 = new ErrorEvent(ErrorEvent.ERROR, false, false, _local2, _arg1.errorID); dispatchEvent(_local3); _arg1.preventDefault(); }; }; } private function onWebsiteServiceComplete(_arg1:SecureWebsiteServiceEvent):void{ this.m_ProgressIdentifierToUpload = null; dispatchEvent(new Event(Event.COMPLETE)); } public function sendProgress(_arg1:String, _arg2:String, _arg3:String):void{ this.m_ProgressIdentifierToUpload = _arg1; this.m_CharacterName = _arg2; this.m_SecureWebsiteService.startServiceCall(_arg3); } } }//package tibia.tutorial package { import flash.display.*; import flash.events.*; import loader.popUp.*; import flash.net.*; import shared.utility.*; import flash.system.*; import loader.*; import loader.popUp.dialogClasses.*; import flash.external.*; public class TibiaApplicationBase extends Sprite { public static const TITLE_ERROR:String = "Error"; protected static const MSG_INTERNAL_ERROR:String = "An internal error occurred (Code: -2.0)."; public static const MSG_OUTDATED_VMVERSION:String = ((((((((("Your Adobe Flash Player is too old. " + "At least version ") + PLAYER_MAJOR) + ".") + PLAYER_MINOR) + ".") + PLAYER_BUILD) + ".") + PLAYER_INTERNALBUILD) + " is required."); public static const PLAYER_BUILD:int = 0; public static const MSG_INVALID_PARAMETERS:String = ("Failed to read connection parameters. " + "Please use the Tibia website to start the client."); public static const PLAYER_INTERNALBUILD:int = 0; public static const TITLE_WARNING:String = "Warning"; public static const PLAYER_MINOR:int = 0; public static const MSG_CLOSE_INFO:String = "You may now close the browser tab or window."; public static const PLAYER_MAJOR:int = 11; public static const TITLE_INFO:String = "Info"; protected var m_IsActive:Boolean = false; protected var m_SessionRefresher:WebsiteSessionRefresher = null; protected var m_UIPopUp:Sprite = null; protected var m_SessionKey:String = null; protected var m_SessionRefreshURL:String = null; protected var m_Background:DisplayObject = null; public function TibiaApplicationBase(){ loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, this.onUncaughtError); addEventListener(Event.ACTIVATE, this.onActivation); addEventListener(Event.DEACTIVATE, this.onActivation); stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; stage.showDefaultContextMenu = false; stage.color = loaderInfo.parameters["backgroundColor"]; stage.addEventListener(Event.RESIZE, this.onLayoutChange); if (!checkPlayerVersion(PLAYER_MAJOR, PLAYER_MINOR, PLAYER_BUILD, PLAYER_INTERNALBUILD)){ this.popUp = new Alert(TITLE_ERROR, MSG_OUTDATED_VMVERSION, (DialogBase.BUTTON_COPY | DialogBase.BUTTON_CLOSE)); this.popUp.addEventListener(CloseEvent.CLOSE, this.onErrorButton); return; }; this.parsePreloaderParameters(); if (!this.checkPreloaderParameters()){ this.popUp = new Alert(TITLE_ERROR, MSG_INVALID_PARAMETERS, (DialogBase.BUTTON_COPY | DialogBase.BUTTON_CLOSE)); this.popUp.addEventListener(CloseEvent.CLOSE, this.onErrorButton); return; }; if (((!((this.m_SessionRefreshURL == null))) && ((this.m_SessionRefreshURL.length > 0)))){ this.m_SessionRefresher = new WebsiteSessionRefresher(this.m_SessionRefreshURL); this.m_SessionRefresher.start(); }; this.loadBackground(loaderInfo.parameters["backgroundImage"]); } protected function parsePreloaderParameters():void{ var _local1:String = (loaderInfo.parameters["sessionKey"] as String); if (_local1 != null){ if (_local1.length != 30){ throw (new ArgumentError("TibiaApplicationBase.readParameters: Invalid session key.")); }; this.m_SessionKey = _local1; }; var _local2:String = (loaderInfo.parameters["sessionRefreshURL"] as String); if (((!((_local2 == null))) && ((_local2.length > 0)))){ this.m_SessionRefreshURL = _local2; }; } public function get isActive():Boolean{ return (this.m_IsActive); } protected function get popUp():Sprite{ return (this.m_UIPopUp); } protected function unloadBackground():void{ if (this.m_Background != null){ if (getChildIndex(this.m_Background) != -1){ removeChild(this.m_Background); }; this.m_Background = null; }; } protected function onLoadBackgroundError(_arg1:Event):void{ var _local2:LoaderInfo; if (_arg1 != null){ _local2 = (_arg1.currentTarget as LoaderInfo); if (_local2 != null){ _local2.removeEventListener(Event.COMPLETE, this.onLoadBackgroundComplete); _local2.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoadBackgroundError); _local2.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoadBackgroundError); }; }; } protected function uncaughtErrorHandler(_arg1:ErrorEvent):void{ var _Error:* = null; var _ErrorEvent:* = null; var a_Event:* = _arg1; var Message:* = MSG_INTERNAL_ERROR; if (a_Event != null){ a_Event.preventDefault(); a_Event.stopImmediatePropagation(); try { Message = (Message + "\n\nAdditional debug information:\n"); if (((a_Event.hasOwnProperty("error")) && ((((a_Event["error"] is Error)) || ((a_Event["error"] is ErrorEvent)))))){ if ((a_Event["error"] as Error) != null){ _Error = (a_Event["error"] as Error); Message = (Message + ((("Error: " + _Error.toString()) + "\nStacktrace: ") + _Error.getStackTrace())); } else { if ((a_Event["error"] as ErrorEvent) != null){ _ErrorEvent = (a_Event["error"] as ErrorEvent); Message = (Message + ("Error: " + _ErrorEvent.text)); }; }; } else { Message = (Message + ((((("Event: " + a_Event.type) + "\nMessage: ") + a_Event.text) + "\nTarget: ") + a_Event.target)); }; } catch(a_Error:Error) { }; }; this.popUp = new Alert(TITLE_ERROR, Message, (DialogBase.BUTTON_COPY | DialogBase.BUTTON_CLOSE)); this.popUp.addEventListener(CloseEvent.CLOSE, this.onErrorButton); } protected function checkPreloaderParameters():Boolean{ return (((!((this.m_SessionKey == null))) && (!((this.m_SessionRefreshURL == null))))); } protected function onActivation(_arg1:Event):void{ if (_arg1.type == Event.ACTIVATE){ this.m_IsActive = true; } else { this.m_IsActive = false; }; } private function onUncaughtError(_arg1:ErrorEvent):void{ this.uncaughtErrorHandler(_arg1); } protected function onLoadBackgroundComplete(_arg1:Event):void{ var _local2:LoaderInfo; if (_arg1 != null){ _local2 = (_arg1.currentTarget as LoaderInfo); if (_local2 != null){ _local2.removeEventListener(Event.COMPLETE, this.onLoadBackgroundComplete); _local2.removeEventListener(IOErrorEvent.IO_ERROR, this.onLoadBackgroundError); _local2.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoadBackgroundError); if (((!((_local2.contentType == null))) && ((_local2.contentType.indexOf("image/") == 0)))){ this.m_Background = addChildAt(_local2.loader, 0); this.onLayoutChange(_arg1); }; }; }; } protected function set popUp(_arg1:Sprite):void{ if (this.m_UIPopUp != _arg1){ if (this.m_UIPopUp != null){ removeChild(this.m_UIPopUp); this.m_UIPopUp = null; }; if (_arg1 != null){ this.m_UIPopUp = _arg1; addChild(this.m_UIPopUp); }; }; } protected function unloadSessionRefresher():void{ if (this.m_SessionRefresher != null){ this.m_SessionRefresher.stop(); this.m_SessionRefresher = null; }; } protected function loadBackground(_arg1:String):void{ var _local2:Loader; this.unloadBackground(); if (_arg1 != null){ _local2 = new Loader(); _local2.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onLoadBackgroundComplete); _local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onLoadBackgroundError); _local2.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoadBackgroundError); _local2.load(new URLRequest(_arg1)); }; } protected function close(_arg1:Boolean):void{ this.unloadSessionRefresher(); if (((_arg1) && (ExternalInterface.available))){ ExternalInterface.call("function () { window.close(); }"); }; this.popUp = new Alert(TITLE_INFO, MSG_CLOSE_INFO, DialogBase.BUTTON_NONE); } protected function onLayoutChange(_arg1:Event):void{ var _local2:uint; var _local3:uint; if (((!((stage == null))) && (!((this.m_Background == null))))){ _local2 = (this.m_Background.width / this.m_Background.scaleX); _local3 = (this.m_Background.height / this.m_Background.scaleY); if ((stage.stageWidth / _local2) < (stage.stageHeight / _local3)){ this.m_Background.scaleX = (stage.stageWidth / _local2); this.m_Background.scaleY = this.m_Background.scaleX; } else { this.m_Background.scaleY = (stage.stageHeight / _local3); this.m_Background.scaleX = this.m_Background.scaleY; }; this.m_Background.x = ((stage.stageWidth - this.m_Background.width) / 2); this.m_Background.y = ((stage.stageHeight - this.m_Background.height) / 2); }; } protected function onSharedObjectLoadSuccess():void{ } protected function onErrorButton(_arg1:CloseEvent):void{ if (_arg1.detail == DialogBase.BUTTON_COPY){ _arg1.preventDefault(); System.setClipboard(Alert(_arg1.currentTarget).text); } else { this.close(true); }; } } }//package package { import mx.resources.*; public class en_US$Communication_properties extends ResourceBundle { public function en_US$Communication_properties(){ super("en_US", "Communication"); } override protected function getContent():Object{ var _local1:Object = { MSG_INTERNAL_ERROR:"An internal error has occurred (Code: {0}.{1}).", MSG_USER_HAS_LOGGED_OUT_WHILE_PLAYING:"The Tibia Flash Client won't work correctly when you log out of the webpage while playing.", MSG_LOST_CONNECTION:"Lost connection to the web server." }; return (_local1); } } }//package